From 2905ee4c8de47cfdeea4787e465eb827f9b99e8b Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 5 Dec 2019 03:00:50 +0000 Subject: CTAN sync 201912050300 --- FILES.byname | 958 +++++++-------- FILES.byname.gz | Bin 2141393 -> 2142165 bytes FILES.last07days | 873 +++++++------- graphics/pgf/contrib/dynkin-diagrams/README | 6 +- .../contrib/dynkin-diagrams/dynkin-diagrams.pdf | Bin 735799 -> 751053 bytes .../contrib/dynkin-diagrams/dynkin-diagrams.sty | 475 +++++--- .../contrib/dynkin-diagrams/dynkin-diagrams.tex | 108 +- info/biblio/texbook3.bib | 58 +- info/biblio/texbook3.ltx | 12 +- .../latex/contrib/babel-contrib/italian/README.txt | 11 +- .../contrib/babel-contrib/italian/italian.dtx | 359 +++--- .../contrib/babel-contrib/italian/italian.pdf | Bin 443357 -> 446223 bytes macros/latex/contrib/grfext/README.md | 7 + macros/latex/contrib/grfext/grfext.dtx | 816 +++++++++++++ macros/latex/contrib/grfext/grfext.pdf | Bin 0 -> 309305 bytes macros/latex/contrib/infwarerr/README.md | 9 + macros/latex/contrib/infwarerr/infwarerr.dtx | 850 +++++++++++++ macros/latex/contrib/infwarerr/infwarerr.pdf | Bin 0 -> 285979 bytes macros/latex/contrib/letltxmacro/README.md | 12 + macros/latex/contrib/letltxmacro/letltxmacro.dtx | 825 +++++++++++++ macros/latex/contrib/letltxmacro/letltxmacro.pdf | Bin 0 -> 290791 bytes macros/latex/contrib/mleftright/README.md | 12 + macros/latex/contrib/mleftright/mleftright.dtx | 815 +++++++++++++ macros/latex/contrib/mleftright/mleftright.pdf | Bin 0 -> 309397 bytes macros/latex/contrib/oberdiek/README.txt | 2 +- macros/latex/contrib/oberdiek/accsupp.dtx | 80 +- macros/latex/contrib/oberdiek/accsupp.pdf | Bin 154245 -> 327297 bytes macros/latex/contrib/oberdiek/aliascnt.dtx | 19 - macros/latex/contrib/oberdiek/aliascnt.pdf | Bin 104685 -> 293168 bytes macros/latex/contrib/oberdiek/alphalph.dtx | 372 ------ macros/latex/contrib/oberdiek/alphalph.pdf | Bin 201033 -> 354229 bytes macros/latex/contrib/oberdiek/askinclude.dtx | 1061 ----------------- macros/latex/contrib/oberdiek/askinclude.pdf | Bin 269749 -> 593914 bytes macros/latex/contrib/oberdiek/atbegshi.dtx | 292 +---- macros/latex/contrib/oberdiek/atbegshi.pdf | Bin 236243 -> 406524 bytes macros/latex/contrib/oberdiek/atenddvi.dtx | 19 - macros/latex/contrib/oberdiek/atenddvi.pdf | Bin 97925 -> 272610 bytes macros/latex/contrib/oberdiek/atveryend.dtx | 138 +-- macros/latex/contrib/oberdiek/atveryend.pdf | Bin 189683 -> 380814 bytes macros/latex/contrib/oberdiek/auxhook.dtx | 23 +- macros/latex/contrib/oberdiek/auxhook.pdf | Bin 106790 -> 285266 bytes macros/latex/contrib/oberdiek/bigintcalc.dtx | 952 +-------------- macros/latex/contrib/oberdiek/bigintcalc.pdf | Bin 342809 -> 467906 bytes macros/latex/contrib/oberdiek/bitset.dtx | 1243 +------------------- macros/latex/contrib/oberdiek/bitset.pdf | Bin 343620 -> 626116 bytes macros/latex/contrib/oberdiek/bmpsize.dtx | 23 +- macros/latex/contrib/oberdiek/bmpsize.pdf | Bin 327623 -> 497867 bytes macros/latex/contrib/oberdiek/catchfile.dtx | 326 +---- macros/latex/contrib/oberdiek/catchfile.pdf | Bin 144364 -> 298873 bytes macros/latex/contrib/oberdiek/centernot.dtx | 19 - macros/latex/contrib/oberdiek/centernot.pdf | Bin 168028 -> 274864 bytes macros/latex/contrib/oberdiek/chemarr.dtx | 19 - macros/latex/contrib/oberdiek/chemarr.pdf | Bin 94401 -> 288654 bytes macros/latex/contrib/oberdiek/classlist.dtx | 19 - macros/latex/contrib/oberdiek/classlist.pdf | Bin 98835 -> 271621 bytes macros/latex/contrib/oberdiek/colonequals.dtx | 19 - macros/latex/contrib/oberdiek/colonequals.pdf | Bin 104527 -> 284627 bytes macros/latex/contrib/oberdiek/dvipscol.dtx | 19 - macros/latex/contrib/oberdiek/dvipscol.pdf | Bin 90419 -> 269326 bytes macros/latex/contrib/oberdiek/engord.dtx | 134 +-- macros/latex/contrib/oberdiek/engord.pdf | Bin 133974 -> 318562 bytes macros/latex/contrib/oberdiek/enparen.dtx | 15 - macros/latex/contrib/oberdiek/enparen.pdf | Bin 125671 -> 304863 bytes macros/latex/contrib/oberdiek/eolgrab.dtx | 170 +-- macros/latex/contrib/oberdiek/eolgrab.pdf | Bin 136258 -> 316822 bytes macros/latex/contrib/oberdiek/etexcmds.dtx | 202 +--- macros/latex/contrib/oberdiek/etexcmds.pdf | Bin 130187 -> 300241 bytes macros/latex/contrib/oberdiek/fibnum.dtx | 263 +---- macros/latex/contrib/oberdiek/fibnum.pdf | Bin 149649 -> 354313 bytes macros/latex/contrib/oberdiek/flags.dtx | 19 - macros/latex/contrib/oberdiek/flags.pdf | Bin 104022 -> 283637 bytes macros/latex/contrib/oberdiek/gettitlestring.dtx | 176 +-- macros/latex/contrib/oberdiek/gettitlestring.pdf | Bin 142781 -> 318743 bytes macros/latex/contrib/oberdiek/grfext.dtx | 1130 ------------------ macros/latex/contrib/oberdiek/grfext.pdf | Bin 148784 -> 0 bytes macros/latex/contrib/oberdiek/hologo.dtx | 270 +---- macros/latex/contrib/oberdiek/hologo.pdf | Bin 393599 -> 567831 bytes macros/latex/contrib/oberdiek/holtxdoc.dtx | 19 - macros/latex/contrib/oberdiek/holtxdoc.pdf | Bin 125784 -> 305359 bytes macros/latex/contrib/oberdiek/hopatch.dtx | 204 +--- macros/latex/contrib/oberdiek/hopatch.pdf | Bin 126495 -> 293225 bytes macros/latex/contrib/oberdiek/hycolor.dtx | 554 +-------- macros/latex/contrib/oberdiek/hycolor.pdf | Bin 225113 -> 364633 bytes macros/latex/contrib/oberdiek/hypbmsec.dtx | 19 - macros/latex/contrib/oberdiek/hypbmsec.pdf | Bin 113898 -> 289747 bytes macros/latex/contrib/oberdiek/hypcap.dtx | 19 - macros/latex/contrib/oberdiek/hypcap.pdf | Bin 111262 -> 284122 bytes macros/latex/contrib/oberdiek/hypdestopt.dtx | 21 +- macros/latex/contrib/oberdiek/hypdestopt.pdf | Bin 131422 -> 317677 bytes macros/latex/contrib/oberdiek/hypdoc.dtx | 19 - macros/latex/contrib/oberdiek/hypdoc.pdf | Bin 157513 -> 319844 bytes macros/latex/contrib/oberdiek/hypgotoe.dtx | 19 - macros/latex/contrib/oberdiek/hypgotoe.pdf | Bin 109141 -> 285090 bytes macros/latex/contrib/oberdiek/hyphsubst.dtx | 173 +-- macros/latex/contrib/oberdiek/hyphsubst.pdf | Bin 127615 -> 299858 bytes macros/latex/contrib/oberdiek/ifdraft.dtx | 19 - macros/latex/contrib/oberdiek/ifdraft.pdf | Bin 92764 -> 265294 bytes macros/latex/contrib/oberdiek/iflang.dtx | 343 +----- macros/latex/contrib/oberdiek/iflang.pdf | Bin 156604 -> 314990 bytes macros/latex/contrib/oberdiek/infwarerr.dtx | 1193 ------------------- macros/latex/contrib/oberdiek/infwarerr.pdf | Bin 148243 -> 0 bytes macros/latex/contrib/oberdiek/intcalc.dtx | 977 +-------------- macros/latex/contrib/oberdiek/intcalc.pdf | Bin 317446 -> 431640 bytes macros/latex/contrib/oberdiek/kvdefinekeys.dtx | 134 +-- macros/latex/contrib/oberdiek/kvdefinekeys.pdf | Bin 117343 -> 295786 bytes macros/latex/contrib/oberdiek/kvsetkeys.dtx | 462 +------- macros/latex/contrib/oberdiek/kvsetkeys.pdf | Bin 219165 -> 375389 bytes macros/latex/contrib/oberdiek/letltxmacro.dtx | 1153 ------------------ macros/latex/contrib/oberdiek/letltxmacro.pdf | Bin 153829 -> 0 bytes macros/latex/contrib/oberdiek/listingsutf8.dtx | 133 +-- macros/latex/contrib/oberdiek/listingsutf8.pdf | Bin 130350 -> 298597 bytes macros/latex/contrib/oberdiek/ltxcmds.dtx | 879 +------------- macros/latex/contrib/oberdiek/ltxcmds.pdf | Bin 294529 -> 394188 bytes macros/latex/contrib/oberdiek/mleftright.dtx | 943 --------------- macros/latex/contrib/oberdiek/mleftright.pdf | Bin 129609 -> 0 bytes macros/latex/contrib/oberdiek/oberdiek-bundle.bib | 497 ++++++++ macros/latex/contrib/oberdiek/oberdiek-source.bib | 27 + macros/latex/contrib/oberdiek/oberdiek.ins | 109 ++ macros/latex/contrib/oberdiek/oberdiek.pdf | Bin 354713 -> 401743 bytes macros/latex/contrib/oberdiek/oberdiek.tex | 243 ++-- macros/latex/contrib/oberdiek/pagegrid.dtx | 134 +-- macros/latex/contrib/oberdiek/pagegrid.pdf | Bin 143465 -> 311600 bytes macros/latex/contrib/oberdiek/pagesel.dtx | 19 - macros/latex/contrib/oberdiek/pagesel.pdf | Bin 125551 -> 312192 bytes macros/latex/contrib/oberdiek/pdfcol.dtx | 202 +--- macros/latex/contrib/oberdiek/pdfcol.pdf | Bin 145886 -> 302693 bytes macros/latex/contrib/oberdiek/pdfcolfoot.dtx | 53 +- macros/latex/contrib/oberdiek/pdfcolfoot.pdf | Bin 114122 -> 294403 bytes macros/latex/contrib/oberdiek/pdfcolparallel.dtx | 123 +- macros/latex/contrib/oberdiek/pdfcolparallel.pdf | Bin 150158 -> 319986 bytes macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx | 80 +- macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf | Bin 136669 -> 308006 bytes macros/latex/contrib/oberdiek/pdfcrypt.dtx | 19 - macros/latex/contrib/oberdiek/pdfcrypt.pdf | Bin 146914 -> 311564 bytes macros/latex/contrib/oberdiek/pdfescape.dtx | 761 +----------- macros/latex/contrib/oberdiek/pdfescape.pdf | Bin 239043 -> 346746 bytes macros/latex/contrib/oberdiek/pdflscape.dtx | 241 +--- macros/latex/contrib/oberdiek/pdflscape.pdf | Bin 134468 -> 299072 bytes macros/latex/contrib/oberdiek/pdfrender.dtx | 310 +---- macros/latex/contrib/oberdiek/pdfrender.pdf | Bin 202200 -> 382955 bytes macros/latex/contrib/oberdiek/picture.dtx | 19 - macros/latex/contrib/oberdiek/picture.pdf | Bin 116293 -> 295928 bytes macros/latex/contrib/oberdiek/pmboxdraw.dtx | 139 +-- macros/latex/contrib/oberdiek/pmboxdraw.pdf | Bin 494974 -> 638223 bytes macros/latex/contrib/oberdiek/protecteddef.dtx | 293 +---- macros/latex/contrib/oberdiek/protecteddef.pdf | Bin 138533 -> 307773 bytes macros/latex/contrib/oberdiek/refcount.dtx | 440 +------ macros/latex/contrib/oberdiek/refcount.pdf | Bin 177298 -> 326895 bytes macros/latex/contrib/oberdiek/rerunfilecheck.dtx | 135 +-- macros/latex/contrib/oberdiek/rerunfilecheck.pdf | Bin 142195 -> 314659 bytes macros/latex/contrib/oberdiek/resizegather.dtx | 134 +-- macros/latex/contrib/oberdiek/resizegather.pdf | Bin 135129 -> 517568 bytes macros/latex/contrib/oberdiek/rotchiffre.dtx | 430 +------ macros/latex/contrib/oberdiek/rotchiffre.pdf | Bin 161868 -> 317164 bytes macros/latex/contrib/oberdiek/scrindex.dtx | 19 - macros/latex/contrib/oberdiek/scrindex.pdf | Bin 112169 -> 283891 bytes macros/latex/contrib/oberdiek/selinput.dtx | 147 +-- macros/latex/contrib/oberdiek/selinput.pdf | Bin 144254 -> 537938 bytes macros/latex/contrib/oberdiek/setouterhbox.dtx | 172 +-- macros/latex/contrib/oberdiek/setouterhbox.pdf | Bin 152471 -> 330129 bytes macros/latex/contrib/oberdiek/settobox.dtx | 19 - macros/latex/contrib/oberdiek/settobox.pdf | Bin 121132 -> 293548 bytes macros/latex/contrib/oberdiek/soulutf8.dtx | 577 +-------- macros/latex/contrib/oberdiek/soulutf8.pdf | Bin 228320 -> 352081 bytes macros/latex/contrib/oberdiek/stackrel.dtx | 19 - macros/latex/contrib/oberdiek/stackrel.pdf | Bin 101395 -> 281746 bytes macros/latex/contrib/oberdiek/stampinclude.dtx | 23 +- macros/latex/contrib/oberdiek/stampinclude.pdf | Bin 104275 -> 277765 bytes macros/latex/contrib/oberdiek/tabularht.dtx | 19 - macros/latex/contrib/oberdiek/tabularht.pdf | Bin 148023 -> 331314 bytes macros/latex/contrib/oberdiek/tabularkv.dtx | 19 - macros/latex/contrib/oberdiek/tabularkv.pdf | Bin 89913 -> 254709 bytes macros/latex/contrib/oberdiek/telprint.dtx | 134 +-- macros/latex/contrib/oberdiek/telprint.pdf | Bin 132903 -> 303828 bytes macros/latex/contrib/oberdiek/thepdfnumber.dtx | 319 +---- macros/latex/contrib/oberdiek/thepdfnumber.pdf | Bin 169513 -> 347238 bytes macros/latex/contrib/oberdiek/twoopt.dtx | 19 - macros/latex/contrib/oberdiek/twoopt.pdf | Bin 100155 -> 274422 bytes macros/latex/contrib/oberdiek/uniquecounter.dtx | 311 +---- macros/latex/contrib/oberdiek/uniquecounter.pdf | Bin 133466 -> 289988 bytes macros/luatex/generic/barracuda/INSTALL.txt | 29 +- macros/luatex/generic/barracuda/README.md | 42 +- macros/luatex/generic/barracuda/TODO.txt | 92 ++ macros/luatex/generic/barracuda/barracuda.pdf | Bin 54826 -> 0 bytes .../generic/barracuda/doc/barracuda-ga-asm.pdf | Bin 0 -> 38718 bytes .../generic/barracuda/doc/barracuda-ga-asm.tex | 148 +++ .../barracuda/doc/barracuda-manual-tool.tex | 7 + macros/luatex/generic/barracuda/doc/barracuda.pdf | Bin 0 -> 57452 bytes macros/luatex/generic/barracuda/doc/barracuda.tex | 331 ++++++ .../generic/barracuda/doc/image/8006194056290.pdf | Bin 0 -> 5682 bytes .../generic/barracuda/example/001-13-ean-test.pdf | Bin 23619 -> 0 bytes .../generic/barracuda/example/001-13-ean-test.tex | 220 ---- .../generic/barracuda/example/001-code128-test.lua | 32 - .../generic/barracuda/example/001-i2of5-test.pdf | Bin 19127 -> 0 bytes .../generic/barracuda/example/001-i2of5-test.tex | 187 --- .../generic/barracuda/example/003-code39-test.pdf | Bin 19827 -> 0 bytes .../generic/barracuda/example/003-code39-test.tex | 53 - .../generic/barracuda/example/003-ean-test.pdf | Bin 3988 -> 0 bytes .../generic/barracuda/example/003-ean-test.tex | 16 - .../generic/barracuda/example/004-ean-test.lua | 9 - .../generic/barracuda/example/006-code39-test.lua | 45 - .../luatex/generic/barracuda/example/006-six.svg | 653 ---------- .../generic/barracuda/example/01-latex-code39.pdf | Bin 3621 -> 0 bytes .../generic/barracuda/example/01-latex-code39.tex | 14 - .../generic/barracuda/example/8006194056290.svg | 89 -- .../luatex/generic/barracuda/example/c128-123.svg | 42 - macros/luatex/generic/barracuda/lib/barracuda.lua | 116 -- .../generic/barracuda/lib/lib-barcode/barcode.lua | 544 --------- .../generic/barracuda/lib/lib-barcode/code128.lua | 341 ------ .../generic/barracuda/lib/lib-barcode/code39.lua | 381 ------ .../generic/barracuda/lib/lib-barcode/ean.lua | 790 ------------- .../generic/barracuda/lib/lib-barcode/i2of5.lua | 378 ------ .../generic/barracuda/lib/lib-driver/driver.lua | 400 ------- .../barracuda/lib/lib-driver/drv-pdfliteral.lua | 284 ----- .../generic/barracuda/lib/lib-driver/drv-svg.lua | 260 ---- .../generic/barracuda/lib/lib-geo/gacanvas.lua | 340 ------ .../generic/barracuda/lib/lib-geo/libgeo.lua | 289 ----- macros/luatex/generic/barracuda/src/barracuda.lua | 116 ++ .../barracuda/src/lib-barcode/brcd-barcode.lua | 544 +++++++++ .../barracuda/src/lib-barcode/brcd-code128.lua | 341 ++++++ .../barracuda/src/lib-barcode/brcd-code39.lua | 381 ++++++ .../generic/barracuda/src/lib-barcode/brcd-ean.lua | 790 +++++++++++++ .../barracuda/src/lib-barcode/brcd-i2of5.lua | 378 ++++++ .../barracuda/src/lib-driver/brcd-driver.lua | 399 +++++++ .../src/lib-driver/brcd-drv-pdfliteral.lua | 284 +++++ .../barracuda/src/lib-driver/brcd-drv-svg.lua | 260 ++++ .../barracuda/src/lib-geo/brcd-gacanvas.lua | 340 ++++++ .../generic/barracuda/src/lib-geo/brcd-libgeo.lua | 289 +++++ .../01-barracuda-latex-test.pdf | Bin 0 -> 3621 bytes .../01-barracuda-latex-test.tex | 13 + .../test/test-code128/001-code128-test.lua | 32 + .../test/test-code128/002-code128-test.pdf | Bin 0 -> 22044 bytes .../test/test-code128/002-code128-test.tex | 125 ++ .../test/test-code128/02-05-pdfliteral.txt | 43 + .../barracuda/test/test-code128/c128-123.svg | 42 + .../barracuda/test/test-code39/001-code39-test.lua | 41 + .../barracuda/test/test-code39/002-code39-test.pdf | Bin 0 -> 22618 bytes .../barracuda/test/test-code39/002-code39-test.tex | 120 ++ .../barracuda/test/test-code39/003-code39-test.pdf | Bin 0 -> 19827 bytes .../barracuda/test/test-code39/003-code39-test.tex | 53 + .../barracuda/test/test-code39/004-code39-test.pdf | Bin 0 -> 15243 bytes .../barracuda/test/test-code39/004-code39-test.tex | 46 + .../barracuda/test/test-code39/005-code39-test.lua | 8 + .../barracuda/test/test-code39/006-code39-test.lua | 45 + .../generic/barracuda/test/test-code39/006-six.svg | 653 ++++++++++ .../barracuda/test/test-code39/my_barcode.svg | 76 ++ .../barracuda/test/test-ean/001-13-ean-test.pdf | Bin 0 -> 23619 bytes .../barracuda/test/test-ean/001-13-ean-test.tex | 220 ++++ .../barracuda/test/test-ean/002-ean-test.pdf | Bin 0 -> 10601 bytes .../barracuda/test/test-ean/002-ean-test.tex | 12 + .../barracuda/test/test-ean/003-ean-test.pdf | Bin 0 -> 3901 bytes .../barracuda/test/test-ean/003-ean-test.tex | 16 + .../barracuda/test/test-ean/004-ean-test.lua | 9 + .../barracuda/test/test-ean/8006194056290.svg | 89 ++ .../test-ga-pdfliteral/001-ga-pdfliteral-test.pdf | Bin 0 -> 30290 bytes .../test-ga-pdfliteral/001-ga-pdfliteral-test.tex | 740 ++++++++++++ .../barracuda/test/test-ga-svg/001-ga-svg-test.lua | 28 + .../barracuda/test/test-ga-svg/002-ga-svg-test.lua | 18 + .../generic/barracuda/test/test-ga-svg/test-01.svg | 26 + .../generic/barracuda/test/test-ga-svg/test-02.svg | 17 + .../barracuda/test/test-ga-svg/test-code39.svg | 76 ++ .../barracuda/test/test-i2of5/001-i2of5-test.pdf | Bin 0 -> 19127 bytes .../barracuda/test/test-i2of5/001-i2of5-test.tex | 187 +++ .../texlive/tlnet/tlpkg/installer/ctan-mirrors.pl | 15 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb | 252 ++-- systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 | 2 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 | 2 +- .../texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc | 14 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz | Bin 2148016 -> 2147568 bytes systems/win32/miktex/tm/packages/files.csv.lzma | Bin 512001 -> 512112 bytes .../win32/miktex/tm/packages/next/files.csv.lzma | Bin 511550 -> 512489 bytes systems/win32/miktex/tm/packages/next/pr.ini | 8 +- systems/win32/miktex/tm/packages/pr.ini | 10 +- systems/win32/w32tex/ChangeLog | 8 + timestamp | 2 +- usergrps/dante/dtk/doc/beispiel.pdf | Bin 81366 -> 77326 bytes usergrps/dante/dtk/doc/beispiel.tex | 13 +- usergrps/dante/dtk/dtk-url.sty | 32 +- usergrps/dante/dtk/dtk.cls | 6 +- 279 files changed, 13337 insertions(+), 26734 deletions(-) create mode 100644 macros/latex/contrib/grfext/README.md create mode 100644 macros/latex/contrib/grfext/grfext.dtx create mode 100644 macros/latex/contrib/grfext/grfext.pdf create mode 100644 macros/latex/contrib/infwarerr/README.md create mode 100644 macros/latex/contrib/infwarerr/infwarerr.dtx create mode 100644 macros/latex/contrib/infwarerr/infwarerr.pdf create mode 100644 macros/latex/contrib/letltxmacro/README.md create mode 100644 macros/latex/contrib/letltxmacro/letltxmacro.dtx create mode 100644 macros/latex/contrib/letltxmacro/letltxmacro.pdf create mode 100644 macros/latex/contrib/mleftright/README.md create mode 100644 macros/latex/contrib/mleftright/mleftright.dtx create mode 100644 macros/latex/contrib/mleftright/mleftright.pdf delete mode 100644 macros/latex/contrib/oberdiek/grfext.dtx delete mode 100644 macros/latex/contrib/oberdiek/grfext.pdf delete mode 100644 macros/latex/contrib/oberdiek/infwarerr.dtx delete mode 100644 macros/latex/contrib/oberdiek/infwarerr.pdf delete mode 100644 macros/latex/contrib/oberdiek/letltxmacro.dtx delete mode 100644 macros/latex/contrib/oberdiek/letltxmacro.pdf delete mode 100644 macros/latex/contrib/oberdiek/mleftright.dtx delete mode 100644 macros/latex/contrib/oberdiek/mleftright.pdf create mode 100644 macros/latex/contrib/oberdiek/oberdiek-bundle.bib create mode 100644 macros/latex/contrib/oberdiek/oberdiek-source.bib create mode 100644 macros/latex/contrib/oberdiek/oberdiek.ins create mode 100644 macros/luatex/generic/barracuda/TODO.txt delete mode 100644 macros/luatex/generic/barracuda/barracuda.pdf create mode 100644 macros/luatex/generic/barracuda/doc/barracuda-ga-asm.pdf create mode 100644 macros/luatex/generic/barracuda/doc/barracuda-ga-asm.tex create mode 100644 macros/luatex/generic/barracuda/doc/barracuda-manual-tool.tex create mode 100644 macros/luatex/generic/barracuda/doc/barracuda.pdf create mode 100644 macros/luatex/generic/barracuda/doc/barracuda.tex create mode 100644 macros/luatex/generic/barracuda/doc/image/8006194056290.pdf delete mode 100644 macros/luatex/generic/barracuda/example/001-13-ean-test.pdf delete mode 100644 macros/luatex/generic/barracuda/example/001-13-ean-test.tex delete mode 100644 macros/luatex/generic/barracuda/example/001-code128-test.lua delete mode 100644 macros/luatex/generic/barracuda/example/001-i2of5-test.pdf delete mode 100644 macros/luatex/generic/barracuda/example/001-i2of5-test.tex delete mode 100644 macros/luatex/generic/barracuda/example/003-code39-test.pdf delete mode 100644 macros/luatex/generic/barracuda/example/003-code39-test.tex delete mode 100644 macros/luatex/generic/barracuda/example/003-ean-test.pdf delete mode 100644 macros/luatex/generic/barracuda/example/003-ean-test.tex delete mode 100644 macros/luatex/generic/barracuda/example/004-ean-test.lua delete mode 100644 macros/luatex/generic/barracuda/example/006-code39-test.lua delete mode 100644 macros/luatex/generic/barracuda/example/006-six.svg delete mode 100644 macros/luatex/generic/barracuda/example/01-latex-code39.pdf delete mode 100644 macros/luatex/generic/barracuda/example/01-latex-code39.tex delete mode 100644 macros/luatex/generic/barracuda/example/8006194056290.svg delete mode 100644 macros/luatex/generic/barracuda/example/c128-123.svg delete mode 100644 macros/luatex/generic/barracuda/lib/barracuda.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-barcode/barcode.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-barcode/code128.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-barcode/code39.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-barcode/ean.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-barcode/i2of5.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-driver/driver.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-driver/drv-pdfliteral.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-driver/drv-svg.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-geo/gacanvas.lua delete mode 100644 macros/luatex/generic/barracuda/lib/lib-geo/libgeo.lua create mode 100644 macros/luatex/generic/barracuda/src/barracuda.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-barcode/brcd-barcode.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-barcode/brcd-code128.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-barcode/brcd-code39.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-barcode/brcd-ean.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-barcode/brcd-i2of5.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-driver/brcd-driver.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-pdfliteral.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-svg.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-geo/brcd-gacanvas.lua create mode 100644 macros/luatex/generic/barracuda/src/lib-geo/brcd-libgeo.lua create mode 100644 macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-code128/001-code128-test.lua create mode 100644 macros/luatex/generic/barracuda/test/test-code128/002-code128-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-code128/002-code128-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-code128/02-05-pdfliteral.txt create mode 100644 macros/luatex/generic/barracuda/test/test-code128/c128-123.svg create mode 100644 macros/luatex/generic/barracuda/test/test-code39/001-code39-test.lua create mode 100644 macros/luatex/generic/barracuda/test/test-code39/002-code39-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-code39/002-code39-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-code39/003-code39-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-code39/003-code39-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-code39/004-code39-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-code39/004-code39-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-code39/005-code39-test.lua create mode 100644 macros/luatex/generic/barracuda/test/test-code39/006-code39-test.lua create mode 100644 macros/luatex/generic/barracuda/test/test-code39/006-six.svg create mode 100644 macros/luatex/generic/barracuda/test/test-code39/my_barcode.svg create mode 100644 macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-ean/002-ean-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-ean/002-ean-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-ean/003-ean-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-ean/003-ean-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-ean/004-ean-test.lua create mode 100644 macros/luatex/generic/barracuda/test/test-ean/8006194056290.svg create mode 100644 macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex create mode 100644 macros/luatex/generic/barracuda/test/test-ga-svg/001-ga-svg-test.lua create mode 100644 macros/luatex/generic/barracuda/test/test-ga-svg/002-ga-svg-test.lua create mode 100644 macros/luatex/generic/barracuda/test/test-ga-svg/test-01.svg create mode 100644 macros/luatex/generic/barracuda/test/test-ga-svg/test-02.svg create mode 100644 macros/luatex/generic/barracuda/test/test-ga-svg/test-code39.svg create mode 100644 macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.pdf create mode 100644 macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.tex diff --git a/FILES.byname b/FILES.byname index 393d1fd2a6..09d4118c02 100644 --- a/FILES.byname +++ b/FILES.byname @@ -4990,7 +4990,7 @@ 1990/10/02 | 812 | dviware/vutex/vaxvms.ins 1990/10/02 | 127576 | dviware/vutex/vutex.web 2014/04/13 | 4600576 | dviware/xdvi/22.87/xdvik-22.87.tar.gz -2019/12/03 | 137964 | FILES.last07days +2019/12/04 | 132787 | FILES.last07days 2018/06/27 | 99883 | fonts/academicons/academicons.pdf 2018/06/27 | 10779 | fonts/academicons/academicons.sty 2018/06/27 | 5774 | fonts/academicons/academicons.tex @@ -130447,14 +130447,14 @@ 2019/11/27 | 145 | graphics/pgf/contrib/dynkin-diagrams/DoneTwoElBendy.tex 2019/11/27 | 135 | graphics/pgf/contrib/dynkin-diagrams/DoneTwoElStraight.tex 2019/09/04 | 19329 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.bib -2019/11/27 | 735799 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf -2019/11/26 | 121870 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty -2019/11/27 | 55827 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex +2019/12/04 | 751053 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf +2019/12/04 | 124983 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty +2019/12/04 | 56796 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex 2019/11/27 | 1829 | graphics/pgf/contrib/dynkin-diagrams/EulerProducts.tex 2019/11/27 | 1032 | graphics/pgf/contrib/dynkin-diagrams/hermitian-symmetric-spaces.tex -2019/11/27 | 633 | graphics/pgf/contrib/dynkin-diagrams/README +2019/12/04 | 729 | graphics/pgf/contrib/dynkin-diagrams/README 2019/11/27 | 1854 | graphics/pgf/contrib/dynkin-diagrams/simple-lie-algebras.tex -2019/11/27 | 765270 | graphics/pgf/contrib/dynkin-diagrams.zip +2019/12/04 | 780941 | graphics/pgf/contrib/dynkin-diagrams.zip 2013/02/27 | 17141 | graphics/pgf/contrib/fast-diagram/fast-diagram.sty 2013/02/27 | 1050633 | graphics/pgf/contrib/fast-diagram/help.pdf 2013/02/27 | 1437 | graphics/pgf/contrib/fast-diagram/help.tex @@ -135131,8 +135131,8 @@ 1997/10/07 | 2953 | info/biblio/texbook1.ltx 2019/04/27 | 456277 | info/biblio/texbook2.bib 2019/03/04 | 2877 | info/biblio/texbook2.ltx -2019/10/01 | 958098 | info/biblio/texbook3.bib -2019/08/05 | 3912 | info/biblio/texbook3.ltx +2019/12/03 | 960510 | info/biblio/texbook3.bib +2019/12/03 | 3916 | info/biblio/texbook3.ltx 2019/03/04 | 179842 | info/biblio/texgraph.bib 2019/03/04 | 4179 | info/biblio/texgraph.ltx 2018/02/07 | 61457 | info/biblio/texjourn.bib @@ -158261,6 +158261,7 @@ 2011/10/14 | 1757581 | install/macros/latex/contrib/gmutils.tds.zip 2011/10/14 | 228094 | install/macros/latex/contrib/gmverb.tds.zip 2009/10/14 | 121304 | install/macros/latex/contrib/gmverse.tds.zip +2019/12/03 | 314941 | install/macros/latex/contrib/grfext.tds.zip 2008/12/01 | 122542 | install/macros/latex/contrib/gridset.tds.zip 2017/07/15 | 1236748 | install/macros/latex/contrib/gs1.tds.zip 2018/04/08 | 742899 | install/macros/latex/contrib/gzt.tds.zip @@ -158282,6 +158283,7 @@ 2019/03/04 | 176811 | install/macros/latex/contrib/impnattypo.tds.zip 2010/04/01 | 925674 | install/macros/latex/contrib/imtekda.tds.zip 2015/03/12 | 2057124 | install/macros/latex/contrib/incgraph.tds.zip +2019/12/03 | 291576 | install/macros/latex/contrib/infwarerr.tds.zip 2019/11/29 | 941845 | install/macros/latex/contrib/inputenx.tds.zip 2012/10/11 | 351218 | install/macros/latex/contrib/inputtrc.tds.zip 2008/07/31 | 81728 | install/macros/latex/contrib/inversepath.tds.zip @@ -158300,6 +158302,7 @@ 2008/07/25 | 125603 | install/macros/latex/contrib/lcyw.tds.zip 2008/12/15 | 90768 | install/macros/latex/contrib/leading.tds.zip 2013/06/21 | 449281 | install/macros/latex/contrib/lengthconvert.tds.zip +2019/12/03 | 297356 | install/macros/latex/contrib/letltxmacro.tds.zip 2017/08/04 | 1000339 | install/macros/latex/contrib/lettre.tds.zip 2011/02/16 | 814656 | install/macros/latex/contrib/lineno.tds.zip 2013/05/28 | 283699 | install/macros/latex/contrib/linguex.tds.zip @@ -158325,6 +158328,7 @@ 2016/07/03 | 499067 | install/macros/latex/contrib/milog.tds.zip 2013/06/21 | 285067 | install/macros/latex/contrib/minibox.tds.zip 2018/07/13 | 7002043 | install/macros/latex/contrib/minitoc.tds.zip +2019/12/03 | 315992 | install/macros/latex/contrib/mleftright.tds.zip 2009/07/04 | 209300 | install/macros/latex/contrib/mlist.tds.zip 2019/03/04 | 193467 | install/macros/latex/contrib/moderntimeline.tds.zip 2010/04/09 | 1603258 | install/macros/latex/contrib/modroman.tds.zip @@ -158345,7 +158349,7 @@ 2016/03/22 | 162114 | install/macros/latex/contrib/normalcolor.tds.zip 2011/09/20 | 179685 | install/macros/latex/contrib/nowidow.tds.zip 2019/03/18 | 7939966 | install/macros/latex/contrib/nwejm.tds.zip -2019/11/29 | 13214425 | install/macros/latex/contrib/oberdiek.tds.zip +2019/12/03 | 24960723 | install/macros/latex/contrib/oberdiek.tds.zip 2019/11/07 | 22789 | install/macros/latex/contrib/ocgx2.tds.zip 2012/12/08 | 1025300 | install/macros/latex/contrib/ocgx.tds.zip 2017/05/29 | 424133 | install/macros/latex/contrib/pagecolor.tds.zip @@ -175186,10 +175190,10 @@ 2013/05/20 | 4934 | macros/latex/contrib/babel-contrib/irish/irish.ins 2013/05/20 | 109823 | macros/latex/contrib/babel-contrib/irish/irish.pdf 2014/02/26 | 113763 | macros/latex/contrib/babel-contrib/irish.zip -2019/01/05 | 72515 | macros/latex/contrib/babel-contrib/italian/italian.dtx -2019/01/05 | 443357 | macros/latex/contrib/babel-contrib/italian/italian.pdf -2019/01/05 | 1367 | macros/latex/contrib/babel-contrib/italian/README.txt -2019/01/05 | 465197 | macros/latex/contrib/babel-contrib/italian.zip +2019/11/16 | 72773 | macros/latex/contrib/babel-contrib/italian/italian.dtx +2019/11/16 | 446223 | macros/latex/contrib/babel-contrib/italian/italian.pdf +2019/11/16 | 1729 | macros/latex/contrib/babel-contrib/italian/README.txt +2019/12/04 | 468294 | macros/latex/contrib/babel-contrib/italian.zip 2019/04/03 | 21457 | macros/latex/contrib/babel-contrib/japanese/japanese.dtx 2019/04/03 | 1297 | macros/latex/contrib/babel-contrib/japanese/japanese.ins 2019/04/03 | 139680 | macros/latex/contrib/babel-contrib/japanese/japanese.pdf @@ -185353,6 +185357,10 @@ 2008/07/30 | 114123 | macros/latex/contrib/greekdates/greekdates.pdf 2008/07/30 | 867 | macros/latex/contrib/greekdates/README 2008/07/30 | 107172 | macros/latex/contrib/greekdates.zip +2019/12/03 | 22481 | macros/latex/contrib/grfext/grfext.dtx +2019/12/03 | 309305 | macros/latex/contrib/grfext/grfext.pdf +2019/12/03 | 137 | macros/latex/contrib/grfext/README.md +2019/12/04 | 311978 | macros/latex/contrib/grfext.zip 2019/11/11 | 43329 | macros/latex/contrib/grffile/grffile.dtx 2019/11/11 | 353477 | macros/latex/contrib/grffile/grffile.pdf 2019/11/11 | 504 | macros/latex/contrib/grffile/README.md @@ -186609,6 +186617,10 @@ 1996/11/22 | 606 | macros/latex/contrib/indxcite/indxcite.ins 2008/10/11 | 67789 | macros/latex/contrib/indxcite/indxcite.pdf 2008/10/11 | 65469 | macros/latex/contrib/indxcite.zip +2019/12/03 | 23072 | macros/latex/contrib/infwarerr/infwarerr.dtx +2019/12/03 | 285979 | macros/latex/contrib/infwarerr/infwarerr.pdf +2019/12/03 | 166 | macros/latex/contrib/infwarerr/README.md +2019/12/04 | 288324 | macros/latex/contrib/infwarerr.zip 2019/06/24 | 5095 | macros/latex/contrib/inkpaper/inkpaper.cls 2019/06/23 | 203359 | macros/latex/contrib/inkpaper/inkpaper-cn.pdf 2019/06/24 | 786 | macros/latex/contrib/inkpaper/inkpaper-cn.tex @@ -188207,6 +188219,10 @@ 2013/06/21 | 1978 | macros/latex/contrib/lengthconvert/lengthconvert.ins 2013/06/21 | 444023 | macros/latex/contrib/lengthconvert/lengthconvert.pdf 2013/06/22 | 445978 | macros/latex/contrib/lengthconvert.zip +2019/12/03 | 22835 | macros/latex/contrib/letltxmacro/letltxmacro.dtx +2019/12/03 | 290791 | macros/latex/contrib/letltxmacro/letltxmacro.pdf +2019/12/03 | 288 | macros/latex/contrib/letltxmacro/README.md +2019/12/04 | 293506 | macros/latex/contrib/letltxmacro.zip 2019/11/22 | 15162 | macros/latex/contrib/letterswitharrows/letterswitharrows.dtx 2019/11/22 | 454076 | macros/latex/contrib/letterswitharrows/letterswitharrows.pdf 2019/11/22 | 436 | macros/latex/contrib/letterswitharrows/README @@ -189606,6 +189622,10 @@ 1996/10/30 | 14697 | macros/latex/contrib/mlbib/thesis.bib 1996/10/29 | 23005 | macros/latex/contrib/mlbib/thesis.bst 2008/08/22 | 130205 | macros/latex/contrib/mlbib.zip +2019/12/03 | 23458 | macros/latex/contrib/mleftright/mleftright.dtx +2019/12/03 | 309397 | macros/latex/contrib/mleftright/mleftright.pdf +2019/12/03 | 354 | macros/latex/contrib/mleftright/README.md +2019/12/04 | 312732 | macros/latex/contrib/mleftright.zip 2009/07/04 | 47942 | macros/latex/contrib/mlist/mlist.dtx 2009/07/04 | 1771 | macros/latex/contrib/mlist/mlist.ins 2009/07/04 | 209698 | macros/latex/contrib/mlist/mlist.pdf @@ -190893,160 +190913,155 @@ 2019/03/18 | 207999 | macros/latex/contrib/nwejm/source/nwejm.dtx 2019/03/18 | 24099 | macros/latex/contrib/nwejm/source/nwejm-examples-template.dtx 2019/03/18 | 1957953 | macros/latex/contrib/nwejm.zip -2019/11/29 | 32491 | macros/latex/contrib/oberdiek/accsupp.dtx -2019/11/29 | 154245 | macros/latex/contrib/oberdiek/accsupp.pdf -2019/11/29 | 17568 | macros/latex/contrib/oberdiek/aliascnt.dtx -2019/11/29 | 104685 | macros/latex/contrib/oberdiek/aliascnt.pdf -2019/11/29 | 53171 | macros/latex/contrib/oberdiek/alphalph.dtx -2019/11/29 | 201033 | macros/latex/contrib/oberdiek/alphalph.pdf -2019/11/29 | 83912 | macros/latex/contrib/oberdiek/askinclude.dtx -2019/11/29 | 269749 | macros/latex/contrib/oberdiek/askinclude.pdf -2019/11/29 | 68675 | macros/latex/contrib/oberdiek/atbegshi.dtx -2019/11/29 | 236243 | macros/latex/contrib/oberdiek/atbegshi.pdf -2019/11/29 | 17712 | macros/latex/contrib/oberdiek/atenddvi.dtx -2019/11/29 | 97925 | macros/latex/contrib/oberdiek/atenddvi.pdf -2019/11/29 | 43793 | macros/latex/contrib/oberdiek/atveryend.dtx -2019/11/29 | 189683 | macros/latex/contrib/oberdiek/atveryend.pdf -2019/11/29 | 18680 | macros/latex/contrib/oberdiek/auxhook.dtx -2019/11/29 | 106790 | macros/latex/contrib/oberdiek/auxhook.pdf -2019/11/29 | 108507 | macros/latex/contrib/oberdiek/bigintcalc.dtx -2019/11/29 | 342809 | macros/latex/contrib/oberdiek/bigintcalc.pdf -2019/11/29 | 106357 | macros/latex/contrib/oberdiek/bitset.dtx -2019/11/29 | 343620 | macros/latex/contrib/oberdiek/bitset.pdf -2019/11/29 | 107101 | macros/latex/contrib/oberdiek/bmpsize.dtx -2019/11/29 | 327623 | macros/latex/contrib/oberdiek/bmpsize.pdf -2019/11/29 | 29867 | macros/latex/contrib/oberdiek/catchfile.dtx -2019/11/29 | 144364 | macros/latex/contrib/oberdiek/catchfile.pdf -2019/11/29 | 16088 | macros/latex/contrib/oberdiek/centernot.dtx -2019/11/29 | 168028 | macros/latex/contrib/oberdiek/centernot.pdf -2019/11/29 | 14772 | macros/latex/contrib/oberdiek/chemarr.dtx -2019/11/29 | 94401 | macros/latex/contrib/oberdiek/chemarr.pdf -2019/11/29 | 17637 | macros/latex/contrib/oberdiek/classlist.dtx -2019/11/29 | 98835 | macros/latex/contrib/oberdiek/classlist.pdf -2019/11/29 | 17572 | macros/latex/contrib/oberdiek/colonequals.dtx -2019/11/29 | 104527 | macros/latex/contrib/oberdiek/colonequals.pdf -2019/11/29 | 15187 | macros/latex/contrib/oberdiek/dvipscol.dtx -2019/11/29 | 90419 | macros/latex/contrib/oberdiek/dvipscol.pdf -2019/11/29 | 27487 | macros/latex/contrib/oberdiek/engord.dtx -2019/11/29 | 133974 | macros/latex/contrib/oberdiek/engord.pdf -2019/11/29 | 26981 | macros/latex/contrib/oberdiek/enparen.dtx -2019/11/29 | 125671 | macros/latex/contrib/oberdiek/enparen.pdf -2019/11/29 | 29259 | macros/latex/contrib/oberdiek/eolgrab.dtx -2019/11/29 | 136258 | macros/latex/contrib/oberdiek/eolgrab.pdf -2019/11/29 | 25457 | macros/latex/contrib/oberdiek/etexcmds.dtx -2019/11/29 | 130187 | macros/latex/contrib/oberdiek/etexcmds.pdf -2019/11/29 | 31958 | macros/latex/contrib/oberdiek/fibnum.dtx -2019/11/29 | 149649 | macros/latex/contrib/oberdiek/fibnum.pdf -2019/11/29 | 17785 | macros/latex/contrib/oberdiek/flags.dtx -2019/11/29 | 104022 | macros/latex/contrib/oberdiek/flags.pdf -2019/11/29 | 27598 | macros/latex/contrib/oberdiek/gettitlestring.dtx -2019/11/29 | 142781 | macros/latex/contrib/oberdiek/gettitlestring.pdf -2019/11/29 | 31417 | macros/latex/contrib/oberdiek/grfext.dtx -2019/11/29 | 148784 | macros/latex/contrib/oberdiek/grfext.pdf -2019/11/29 | 121834 | macros/latex/contrib/oberdiek/hologo.dtx -2019/11/29 | 393599 | macros/latex/contrib/oberdiek/hologo.pdf -2019/11/29 | 22473 | macros/latex/contrib/oberdiek/holtxdoc.dtx -2019/11/29 | 125784 | macros/latex/contrib/oberdiek/holtxdoc.pdf -2019/11/29 | 25606 | macros/latex/contrib/oberdiek/hopatch.dtx -2019/11/29 | 126495 | macros/latex/contrib/oberdiek/hopatch.pdf -2019/11/29 | 62065 | macros/latex/contrib/oberdiek/hycolor.dtx -2019/11/29 | 225113 | macros/latex/contrib/oberdiek/hycolor.pdf -2019/11/29 | 26148 | macros/latex/contrib/oberdiek/hypbmsec.dtx -2019/11/29 | 113898 | macros/latex/contrib/oberdiek/hypbmsec.pdf -2019/11/29 | 22474 | macros/latex/contrib/oberdiek/hypcap.dtx -2019/11/29 | 111262 | macros/latex/contrib/oberdiek/hypcap.pdf -2019/11/29 | 29953 | macros/latex/contrib/oberdiek/hypdestopt.dtx -2019/11/29 | 131422 | macros/latex/contrib/oberdiek/hypdestopt.pdf -2019/11/29 | 36797 | macros/latex/contrib/oberdiek/hypdoc.dtx -2019/11/29 | 157513 | macros/latex/contrib/oberdiek/hypdoc.pdf -2019/11/29 | 18959 | macros/latex/contrib/oberdiek/hypgotoe.dtx -2019/11/29 | 109141 | macros/latex/contrib/oberdiek/hypgotoe.pdf -2019/11/29 | 25611 | macros/latex/contrib/oberdiek/hyphsubst.dtx -2019/11/29 | 127615 | macros/latex/contrib/oberdiek/hyphsubst.pdf -2019/11/29 | 16169 | macros/latex/contrib/oberdiek/ifdraft.dtx -2019/11/29 | 92764 | macros/latex/contrib/oberdiek/ifdraft.pdf -2019/11/29 | 33647 | macros/latex/contrib/oberdiek/iflang.dtx -2019/11/29 | 156604 | macros/latex/contrib/oberdiek/iflang.pdf -2019/11/29 | 31984 | macros/latex/contrib/oberdiek/infwarerr.dtx -2019/11/29 | 148243 | macros/latex/contrib/oberdiek/infwarerr.pdf -2019/11/29 | 94072 | macros/latex/contrib/oberdiek/intcalc.dtx -2019/11/29 | 317446 | macros/latex/contrib/oberdiek/intcalc.pdf -2019/11/29 | 20524 | macros/latex/contrib/oberdiek/kvdefinekeys.dtx -2019/11/29 | 117343 | macros/latex/contrib/oberdiek/kvdefinekeys.pdf -2019/11/29 | 58683 | macros/latex/contrib/oberdiek/kvsetkeys.dtx -2019/11/29 | 219165 | macros/latex/contrib/oberdiek/kvsetkeys.pdf -2019/11/29 | 31727 | macros/latex/contrib/oberdiek/letltxmacro.dtx -2019/11/29 | 153829 | macros/latex/contrib/oberdiek/letltxmacro.pdf -2019/11/29 | 22916 | macros/latex/contrib/oberdiek/listingsutf8.dtx -2019/11/29 | 130350 | macros/latex/contrib/oberdiek/listingsutf8.pdf -2019/11/29 | 89612 | macros/latex/contrib/oberdiek/ltxcmds.dtx -2019/11/29 | 294529 | macros/latex/contrib/oberdiek/ltxcmds.pdf -2019/11/29 | 26729 | macros/latex/contrib/oberdiek/mleftright.dtx -2019/11/29 | 129609 | macros/latex/contrib/oberdiek/mleftright.pdf -2019/11/29 | 354713 | macros/latex/contrib/oberdiek/oberdiek.pdf -2019/11/29 | 34007 | macros/latex/contrib/oberdiek/oberdiek.tex -2019/11/29 | 31529 | macros/latex/contrib/oberdiek/pagegrid.dtx -2019/11/29 | 143465 | macros/latex/contrib/oberdiek/pagegrid.pdf -2019/11/29 | 25209 | macros/latex/contrib/oberdiek/pagesel.dtx -2019/11/29 | 125551 | macros/latex/contrib/oberdiek/pagesel.pdf -2019/11/29 | 31597 | macros/latex/contrib/oberdiek/pdfcol.dtx -2019/11/29 | 21225 | macros/latex/contrib/oberdiek/pdfcolfoot.dtx -2019/11/29 | 114122 | macros/latex/contrib/oberdiek/pdfcolfoot.pdf -2019/11/29 | 31023 | macros/latex/contrib/oberdiek/pdfcolparallel.dtx -2019/11/29 | 150158 | macros/latex/contrib/oberdiek/pdfcolparallel.pdf -2019/11/29 | 23280 | macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx -2019/11/29 | 136669 | macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf -2019/11/29 | 145886 | macros/latex/contrib/oberdiek/pdfcol.pdf -2019/11/29 | 28849 | macros/latex/contrib/oberdiek/pdfcrypt.dtx -2019/11/29 | 146914 | macros/latex/contrib/oberdiek/pdfcrypt.pdf -2019/11/29 | 58761 | macros/latex/contrib/oberdiek/pdfescape.dtx -2019/11/29 | 239043 | macros/latex/contrib/oberdiek/pdfescape.pdf -2019/11/29 | 29028 | macros/latex/contrib/oberdiek/pdflscape.dtx -2019/11/29 | 134468 | macros/latex/contrib/oberdiek/pdflscape.pdf -2019/11/29 | 54297 | macros/latex/contrib/oberdiek/pdfrender.dtx -2019/11/29 | 202200 | macros/latex/contrib/oberdiek/pdfrender.pdf -2019/11/29 | 21736 | macros/latex/contrib/oberdiek/picture.dtx -2019/11/29 | 116293 | macros/latex/contrib/oberdiek/picture.pdf -2019/11/29 | 150750 | macros/latex/contrib/oberdiek/pmboxdraw.dtx -2019/11/29 | 494974 | macros/latex/contrib/oberdiek/pmboxdraw.pdf -2019/11/29 | 27638 | macros/latex/contrib/oberdiek/protecteddef.dtx -2019/11/29 | 138533 | macros/latex/contrib/oberdiek/protecteddef.pdf -2019/11/29 | 816 | macros/latex/contrib/oberdiek/README.txt -2019/11/29 | 41469 | macros/latex/contrib/oberdiek/refcount.dtx -2019/11/29 | 177298 | macros/latex/contrib/oberdiek/refcount.pdf -2019/11/29 | 30581 | macros/latex/contrib/oberdiek/rerunfilecheck.dtx -2019/11/29 | 142195 | macros/latex/contrib/oberdiek/rerunfilecheck.pdf -2019/11/29 | 28188 | macros/latex/contrib/oberdiek/resizegather.dtx -2019/11/29 | 135129 | macros/latex/contrib/oberdiek/resizegather.pdf -2019/11/29 | 34852 | macros/latex/contrib/oberdiek/rotchiffre.dtx -2019/11/29 | 161868 | macros/latex/contrib/oberdiek/rotchiffre.pdf -2019/11/29 | 20269 | macros/latex/contrib/oberdiek/scrindex.dtx -2019/11/29 | 112169 | macros/latex/contrib/oberdiek/scrindex.pdf -2019/11/29 | 28802 | macros/latex/contrib/oberdiek/selinput.dtx -2019/11/29 | 144254 | macros/latex/contrib/oberdiek/selinput.pdf -2019/11/29 | 33736 | macros/latex/contrib/oberdiek/setouterhbox.dtx -2019/11/29 | 152471 | macros/latex/contrib/oberdiek/setouterhbox.pdf -2019/11/29 | 21047 | macros/latex/contrib/oberdiek/settobox.dtx -2019/11/29 | 121132 | macros/latex/contrib/oberdiek/settobox.pdf -2019/11/29 | 49578 | macros/latex/contrib/oberdiek/soulutf8.dtx -2019/11/29 | 228320 | macros/latex/contrib/oberdiek/soulutf8.pdf -2019/11/29 | 14784 | macros/latex/contrib/oberdiek/stackrel.dtx -2019/11/29 | 101395 | macros/latex/contrib/oberdiek/stackrel.pdf -2019/11/29 | 19571 | macros/latex/contrib/oberdiek/stampinclude.dtx -2019/11/29 | 104275 | macros/latex/contrib/oberdiek/stampinclude.pdf -2019/11/29 | 32028 | macros/latex/contrib/oberdiek/tabularht.dtx -2019/11/29 | 148023 | macros/latex/contrib/oberdiek/tabularht.pdf -2019/11/29 | 14348 | macros/latex/contrib/oberdiek/tabularkv.dtx -2019/11/29 | 89913 | macros/latex/contrib/oberdiek/tabularkv.pdf -2019/11/29 | 28283 | macros/latex/contrib/oberdiek/telprint.dtx -2019/11/29 | 132903 | macros/latex/contrib/oberdiek/telprint.pdf -2019/11/29 | 40400 | macros/latex/contrib/oberdiek/thepdfnumber.dtx -2019/11/29 | 169513 | macros/latex/contrib/oberdiek/thepdfnumber.pdf -2019/11/29 | 17827 | macros/latex/contrib/oberdiek/twoopt.dtx -2019/11/29 | 100155 | macros/latex/contrib/oberdiek/twoopt.pdf -2019/11/29 | 27107 | macros/latex/contrib/oberdiek/uniquecounter.dtx -2019/11/29 | 133466 | macros/latex/contrib/oberdiek/uniquecounter.pdf -2019/11/29 | 12922160 | macros/latex/contrib/oberdiek.zip +2019/12/03 | 30321 | macros/latex/contrib/oberdiek/accsupp.dtx +2019/12/03 | 327297 | macros/latex/contrib/oberdiek/accsupp.pdf +2019/12/03 | 16566 | macros/latex/contrib/oberdiek/aliascnt.dtx +2019/12/03 | 293168 | macros/latex/contrib/oberdiek/aliascnt.pdf +2019/12/03 | 43831 | macros/latex/contrib/oberdiek/alphalph.dtx +2019/12/03 | 354229 | macros/latex/contrib/oberdiek/alphalph.pdf +2019/12/03 | 57997 | macros/latex/contrib/oberdiek/askinclude.dtx +2019/12/03 | 593914 | macros/latex/contrib/oberdiek/askinclude.pdf +2019/12/03 | 61940 | macros/latex/contrib/oberdiek/atbegshi.dtx +2019/12/03 | 406524 | macros/latex/contrib/oberdiek/atbegshi.pdf +2019/12/03 | 16710 | macros/latex/contrib/oberdiek/atenddvi.dtx +2019/12/03 | 272610 | macros/latex/contrib/oberdiek/atenddvi.pdf +2019/12/03 | 40332 | macros/latex/contrib/oberdiek/atveryend.dtx +2019/12/03 | 380814 | macros/latex/contrib/oberdiek/atveryend.pdf +2019/12/03 | 17618 | macros/latex/contrib/oberdiek/auxhook.dtx +2019/12/03 | 285266 | macros/latex/contrib/oberdiek/auxhook.pdf +2019/12/03 | 85469 | macros/latex/contrib/oberdiek/bigintcalc.dtx +2019/12/03 | 467906 | macros/latex/contrib/oberdiek/bigintcalc.pdf +2019/12/03 | 77827 | macros/latex/contrib/oberdiek/bitset.dtx +2019/12/03 | 626116 | macros/latex/contrib/oberdiek/bitset.pdf +2019/12/03 | 105963 | macros/latex/contrib/oberdiek/bmpsize.dtx +2019/12/03 | 497867 | macros/latex/contrib/oberdiek/bmpsize.pdf +2019/12/03 | 22212 | macros/latex/contrib/oberdiek/catchfile.dtx +2019/12/03 | 298873 | macros/latex/contrib/oberdiek/catchfile.pdf +2019/12/03 | 15084 | macros/latex/contrib/oberdiek/centernot.dtx +2019/12/03 | 274864 | macros/latex/contrib/oberdiek/centernot.pdf +2019/12/03 | 13772 | macros/latex/contrib/oberdiek/chemarr.dtx +2019/12/03 | 288654 | macros/latex/contrib/oberdiek/chemarr.pdf +2019/12/03 | 16633 | macros/latex/contrib/oberdiek/classlist.dtx +2019/12/03 | 271621 | macros/latex/contrib/oberdiek/classlist.pdf +2019/12/03 | 16564 | macros/latex/contrib/oberdiek/colonequals.dtx +2019/12/03 | 284627 | macros/latex/contrib/oberdiek/colonequals.pdf +2019/12/03 | 14185 | macros/latex/contrib/oberdiek/dvipscol.dtx +2019/12/03 | 269326 | macros/latex/contrib/oberdiek/dvipscol.pdf +2019/12/03 | 24106 | macros/latex/contrib/oberdiek/engord.dtx +2019/12/03 | 318562 | macros/latex/contrib/oberdiek/engord.pdf +2019/12/03 | 26109 | macros/latex/contrib/oberdiek/enparen.dtx +2019/12/03 | 304863 | macros/latex/contrib/oberdiek/enparen.pdf +2019/12/03 | 25097 | macros/latex/contrib/oberdiek/eolgrab.dtx +2019/12/03 | 316822 | macros/latex/contrib/oberdiek/eolgrab.pdf +2019/12/03 | 20366 | macros/latex/contrib/oberdiek/etexcmds.dtx +2019/12/03 | 300241 | macros/latex/contrib/oberdiek/etexcmds.pdf +2019/12/03 | 25810 | macros/latex/contrib/oberdiek/fibnum.dtx +2019/12/03 | 354313 | macros/latex/contrib/oberdiek/fibnum.pdf +2019/12/03 | 16789 | macros/latex/contrib/oberdiek/flags.dtx +2019/12/03 | 283637 | macros/latex/contrib/oberdiek/flags.pdf +2019/12/03 | 23136 | macros/latex/contrib/oberdiek/gettitlestring.dtx +2019/12/03 | 318743 | macros/latex/contrib/oberdiek/gettitlestring.pdf +2019/12/03 | 115113 | macros/latex/contrib/oberdiek/hologo.dtx +2019/12/03 | 567831 | macros/latex/contrib/oberdiek/hologo.pdf +2019/12/03 | 21471 | macros/latex/contrib/oberdiek/holtxdoc.dtx +2019/12/03 | 305359 | macros/latex/contrib/oberdiek/holtxdoc.pdf +2019/12/03 | 20806 | macros/latex/contrib/oberdiek/hopatch.dtx +2019/12/03 | 293225 | macros/latex/contrib/oberdiek/hopatch.pdf +2019/12/03 | 46055 | macros/latex/contrib/oberdiek/hycolor.dtx +2019/12/03 | 364633 | macros/latex/contrib/oberdiek/hycolor.pdf +2019/12/03 | 25146 | macros/latex/contrib/oberdiek/hypbmsec.dtx +2019/12/03 | 289747 | macros/latex/contrib/oberdiek/hypbmsec.pdf +2019/12/03 | 21476 | macros/latex/contrib/oberdiek/hypcap.dtx +2019/12/03 | 284122 | macros/latex/contrib/oberdiek/hypcap.pdf +2019/12/03 | 28916 | macros/latex/contrib/oberdiek/hypdestopt.dtx +2019/12/03 | 317677 | macros/latex/contrib/oberdiek/hypdestopt.pdf +2019/12/03 | 35799 | macros/latex/contrib/oberdiek/hypdoc.dtx +2019/12/03 | 319844 | macros/latex/contrib/oberdiek/hypdoc.pdf +2019/12/03 | 17957 | macros/latex/contrib/oberdiek/hypgotoe.dtx +2019/12/03 | 285090 | macros/latex/contrib/oberdiek/hypgotoe.pdf +2019/12/03 | 21343 | macros/latex/contrib/oberdiek/hyphsubst.dtx +2019/12/03 | 299858 | macros/latex/contrib/oberdiek/hyphsubst.pdf +2019/12/03 | 15169 | macros/latex/contrib/oberdiek/ifdraft.dtx +2019/12/03 | 265294 | macros/latex/contrib/oberdiek/ifdraft.pdf +2019/12/03 | 25308 | macros/latex/contrib/oberdiek/iflang.dtx +2019/12/03 | 314990 | macros/latex/contrib/oberdiek/iflang.pdf +2019/12/03 | 71514 | macros/latex/contrib/oberdiek/intcalc.dtx +2019/12/03 | 431640 | macros/latex/contrib/oberdiek/intcalc.pdf +2019/12/03 | 17107 | macros/latex/contrib/oberdiek/kvdefinekeys.dtx +2019/12/03 | 295786 | macros/latex/contrib/oberdiek/kvdefinekeys.pdf +2019/12/03 | 47687 | macros/latex/contrib/oberdiek/kvsetkeys.dtx +2019/12/03 | 375389 | macros/latex/contrib/oberdiek/kvsetkeys.pdf +2019/12/03 | 19139 | macros/latex/contrib/oberdiek/listingsutf8.dtx +2019/12/03 | 298597 | macros/latex/contrib/oberdiek/listingsutf8.pdf +2019/12/03 | 67789 | macros/latex/contrib/oberdiek/ltxcmds.dtx +2019/12/03 | 394188 | macros/latex/contrib/oberdiek/ltxcmds.pdf +2019/12/03 | 11895 | macros/latex/contrib/oberdiek/oberdiek-bundle.bib +2019/12/03 | 3080 | macros/latex/contrib/oberdiek/oberdiek.ins +2019/12/03 | 401743 | macros/latex/contrib/oberdiek/oberdiek.pdf +2019/12/03 | 959 | macros/latex/contrib/oberdiek/oberdiek-source.bib +2019/12/03 | 29868 | macros/latex/contrib/oberdiek/oberdiek.tex +2019/12/03 | 28136 | macros/latex/contrib/oberdiek/pagegrid.dtx +2019/12/03 | 311600 | macros/latex/contrib/oberdiek/pagegrid.pdf +2019/12/03 | 24209 | macros/latex/contrib/oberdiek/pagesel.dtx +2019/12/03 | 312192 | macros/latex/contrib/oberdiek/pagesel.pdf +2019/12/03 | 26388 | macros/latex/contrib/oberdiek/pdfcol.dtx +2019/12/03 | 19329 | macros/latex/contrib/oberdiek/pdfcolfoot.dtx +2019/12/03 | 294403 | macros/latex/contrib/oberdiek/pdfcolfoot.pdf +2019/12/03 | 26867 | macros/latex/contrib/oberdiek/pdfcolparallel.dtx +2019/12/03 | 319986 | macros/latex/contrib/oberdiek/pdfcolparallel.pdf +2019/12/03 | 20692 | macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx +2019/12/03 | 308006 | macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf +2019/12/03 | 302693 | macros/latex/contrib/oberdiek/pdfcol.pdf +2019/12/03 | 27847 | macros/latex/contrib/oberdiek/pdfcrypt.dtx +2019/12/03 | 311564 | macros/latex/contrib/oberdiek/pdfcrypt.pdf +2019/12/03 | 39389 | macros/latex/contrib/oberdiek/pdfescape.dtx +2019/12/03 | 346746 | macros/latex/contrib/oberdiek/pdfescape.pdf +2019/12/03 | 22787 | macros/latex/contrib/oberdiek/pdflscape.dtx +2019/12/03 | 299072 | macros/latex/contrib/oberdiek/pdflscape.pdf +2019/12/03 | 46837 | macros/latex/contrib/oberdiek/pdfrender.dtx +2019/12/03 | 382955 | macros/latex/contrib/oberdiek/pdfrender.pdf +2019/12/03 | 20736 | macros/latex/contrib/oberdiek/picture.dtx +2019/12/03 | 295928 | macros/latex/contrib/oberdiek/picture.pdf +2019/12/03 | 147230 | macros/latex/contrib/oberdiek/pmboxdraw.dtx +2019/12/03 | 638223 | macros/latex/contrib/oberdiek/pmboxdraw.pdf +2019/12/03 | 20812 | macros/latex/contrib/oberdiek/protecteddef.dtx +2019/12/03 | 307773 | macros/latex/contrib/oberdiek/protecteddef.pdf +2019/12/03 | 816 | macros/latex/contrib/oberdiek/README.txt +2019/12/03 | 29904 | macros/latex/contrib/oberdiek/refcount.dtx +2019/12/03 | 326895 | macros/latex/contrib/oberdiek/refcount.pdf +2019/12/03 | 27168 | macros/latex/contrib/oberdiek/rerunfilecheck.dtx +2019/12/03 | 314659 | macros/latex/contrib/oberdiek/rerunfilecheck.pdf +2019/12/03 | 24771 | macros/latex/contrib/oberdiek/resizegather.dtx +2019/12/03 | 517568 | macros/latex/contrib/oberdiek/resizegather.pdf +2019/12/03 | 25691 | macros/latex/contrib/oberdiek/rotchiffre.dtx +2019/12/03 | 317164 | macros/latex/contrib/oberdiek/rotchiffre.pdf +2019/12/03 | 19267 | macros/latex/contrib/oberdiek/scrindex.dtx +2019/12/03 | 283891 | macros/latex/contrib/oberdiek/scrindex.pdf +2019/12/03 | 24735 | macros/latex/contrib/oberdiek/selinput.dtx +2019/12/03 | 537938 | macros/latex/contrib/oberdiek/selinput.pdf +2019/12/03 | 29459 | macros/latex/contrib/oberdiek/setouterhbox.dtx +2019/12/03 | 330129 | macros/latex/contrib/oberdiek/setouterhbox.pdf +2019/12/03 | 20045 | macros/latex/contrib/oberdiek/settobox.dtx +2019/12/03 | 293548 | macros/latex/contrib/oberdiek/settobox.pdf +2019/12/03 | 35155 | macros/latex/contrib/oberdiek/soulutf8.dtx +2019/12/03 | 352081 | macros/latex/contrib/oberdiek/soulutf8.pdf +2019/12/03 | 13782 | macros/latex/contrib/oberdiek/stackrel.dtx +2019/12/03 | 281746 | macros/latex/contrib/oberdiek/stackrel.pdf +2019/12/03 | 18499 | macros/latex/contrib/oberdiek/stampinclude.dtx +2019/12/03 | 277765 | macros/latex/contrib/oberdiek/stampinclude.pdf +2019/12/03 | 31024 | macros/latex/contrib/oberdiek/tabularht.dtx +2019/12/03 | 331314 | macros/latex/contrib/oberdiek/tabularht.pdf +2019/12/03 | 13344 | macros/latex/contrib/oberdiek/tabularkv.dtx +2019/12/03 | 254709 | macros/latex/contrib/oberdiek/tabularkv.pdf +2019/12/03 | 24890 | macros/latex/contrib/oberdiek/telprint.dtx +2019/12/03 | 303828 | macros/latex/contrib/oberdiek/telprint.pdf +2019/12/03 | 32949 | macros/latex/contrib/oberdiek/thepdfnumber.dtx +2019/12/03 | 347238 | macros/latex/contrib/oberdiek/thepdfnumber.pdf +2019/12/03 | 16829 | macros/latex/contrib/oberdiek/twoopt.dtx +2019/12/03 | 274422 | macros/latex/contrib/oberdiek/twoopt.pdf +2019/12/03 | 20085 | macros/latex/contrib/oberdiek/uniquecounter.dtx +2019/12/03 | 289988 | macros/latex/contrib/oberdiek/uniquecounter.pdf +2019/12/04 | 24725254 | macros/latex/contrib/oberdiek.zip 1997/01/07 | 192 | macros/latex/contrib/objectz/catalog 1996/08/06 | 79 | macros/latex/contrib/objectz/makefile 1997/01/07 | 448 | macros/latex/contrib/objectz/manifest @@ -203544,39 +203559,64 @@ 2016/05/20 | 17788 | macros/lollipop/tex/lollipop-text.tex 2016/05/20 | 51327 | macros/lollipop/tex/lollipop-tools.tex 2016/05/21 | 429685 | macros/lollipop.zip -2019/11/30 | 54826 | macros/luatex/generic/barracuda/barracuda.pdf 2019/11/20 | 590 | macros/luatex/generic/barracuda/barracuda.sty -2019/11/20 | 23619 | macros/luatex/generic/barracuda/example/001-13-ean-test.pdf -2019/11/20 | 6086 | macros/luatex/generic/barracuda/example/001-13-ean-test.tex -2019/11/26 | 687 | macros/luatex/generic/barracuda/example/001-code128-test.lua -2019/11/20 | 19127 | macros/luatex/generic/barracuda/example/001-i2of5-test.pdf -2019/11/20 | 5123 | macros/luatex/generic/barracuda/example/001-i2of5-test.tex -2019/11/18 | 19827 | macros/luatex/generic/barracuda/example/003-code39-test.pdf -2019/11/18 | 1304 | macros/luatex/generic/barracuda/example/003-code39-test.tex -2019/11/23 | 3988 | macros/luatex/generic/barracuda/example/003-ean-test.pdf -2019/11/23 | 266 | macros/luatex/generic/barracuda/example/003-ean-test.tex -2019/11/26 | 104 | macros/luatex/generic/barracuda/example/004-ean-test.lua -2019/11/26 | 1088 | macros/luatex/generic/barracuda/example/006-code39-test.lua -2019/11/26 | 38347 | macros/luatex/generic/barracuda/example/006-six.svg -2019/11/29 | 3621 | macros/luatex/generic/barracuda/example/01-latex-code39.pdf -2019/11/18 | 181 | macros/luatex/generic/barracuda/example/01-latex-code39.tex -2019/11/25 | 3823 | macros/luatex/generic/barracuda/example/8006194056290.svg -2019/11/26 | 2012 | macros/luatex/generic/barracuda/example/c128-123.svg -2019/11/30 | 891 | macros/luatex/generic/barracuda/INSTALL.txt -2019/11/26 | 3835 | macros/luatex/generic/barracuda/lib/barracuda.lua -2019/11/23 | 16800 | macros/luatex/generic/barracuda/lib/lib-barcode/barcode.lua -2019/11/08 | 11864 | macros/luatex/generic/barracuda/lib/lib-barcode/code128.lua -2019/11/08 | 13155 | macros/luatex/generic/barracuda/lib/lib-barcode/code39.lua -2019/11/09 | 25753 | macros/luatex/generic/barracuda/lib/lib-barcode/ean.lua -2019/11/08 | 11834 | macros/luatex/generic/barracuda/lib/lib-barcode/i2of5.lua -2019/11/25 | 14561 | macros/luatex/generic/barracuda/lib/lib-driver/driver.lua -2019/11/25 | 8820 | macros/luatex/generic/barracuda/lib/lib-driver/drv-pdfliteral.lua -2019/11/26 | 8176 | macros/luatex/generic/barracuda/lib/lib-driver/drv-svg.lua -2019/11/09 | 11743 | macros/luatex/generic/barracuda/lib/lib-geo/gacanvas.lua -2019/11/04 | 9137 | macros/luatex/generic/barracuda/lib/lib-geo/libgeo.lua +2019/11/09 | 38718 | macros/luatex/generic/barracuda/doc/barracuda-ga-asm.pdf +2019/11/16 | 4560 | macros/luatex/generic/barracuda/doc/barracuda-ga-asm.tex +2019/12/04 | 7 | macros/luatex/generic/barracuda/doc/barracuda-manual-tool.tex +2019/12/04 | 57452 | macros/luatex/generic/barracuda/doc/barracuda.pdf +2019/12/04 | 10444 | macros/luatex/generic/barracuda/doc/barracuda.tex +2019/11/26 | 5682 | macros/luatex/generic/barracuda/doc/image/8006194056290.pdf +2019/12/04 | 1126 | macros/luatex/generic/barracuda/INSTALL.txt 2018/12/01 | 17976 | macros/luatex/generic/barracuda/LICENSE.txt -2019/11/30 | 2400 | macros/luatex/generic/barracuda/README.md -2019/12/01 | 176357 | macros/luatex/generic/barracuda.zip +2019/12/04 | 3329 | macros/luatex/generic/barracuda/README.md +2019/12/04 | 3857 | macros/luatex/generic/barracuda/src/barracuda.lua +2019/12/04 | 16881 | macros/luatex/generic/barracuda/src/lib-barcode/brcd-barcode.lua +2019/11/08 | 11864 | macros/luatex/generic/barracuda/src/lib-barcode/brcd-code128.lua +2019/11/08 | 13155 | macros/luatex/generic/barracuda/src/lib-barcode/brcd-code39.lua +2019/11/09 | 25753 | macros/luatex/generic/barracuda/src/lib-barcode/brcd-ean.lua +2019/11/08 | 11834 | macros/luatex/generic/barracuda/src/lib-barcode/brcd-i2of5.lua +2019/12/04 | 14534 | macros/luatex/generic/barracuda/src/lib-driver/brcd-driver.lua +2019/11/25 | 8820 | macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-pdfliteral.lua +2019/11/26 | 8176 | macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-svg.lua +2019/11/09 | 11743 | macros/luatex/generic/barracuda/src/lib-geo/brcd-gacanvas.lua +2019/11/04 | 9137 | macros/luatex/generic/barracuda/src/lib-geo/brcd-libgeo.lua +2019/12/04 | 3621 | macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.pdf +2019/12/04 | 235 | macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.tex +2019/11/26 | 687 | macros/luatex/generic/barracuda/test/test-code128/001-code128-test.lua +2019/12/04 | 22044 | macros/luatex/generic/barracuda/test/test-code128/002-code128-test.pdf +2019/12/04 | 3687 | macros/luatex/generic/barracuda/test/test-code128/002-code128-test.tex +2019/12/04 | 1130 | macros/luatex/generic/barracuda/test/test-code128/02-05-pdfliteral.txt +2019/11/26 | 2012 | macros/luatex/generic/barracuda/test/test-code128/c128-123.svg +2019/11/18 | 801 | macros/luatex/generic/barracuda/test/test-code39/001-code39-test.lua +2019/12/04 | 22618 | macros/luatex/generic/barracuda/test/test-code39/002-code39-test.pdf +2019/11/18 | 3094 | macros/luatex/generic/barracuda/test/test-code39/002-code39-test.tex +2019/12/04 | 19827 | macros/luatex/generic/barracuda/test/test-code39/003-code39-test.pdf +2019/11/18 | 1304 | macros/luatex/generic/barracuda/test/test-code39/003-code39-test.tex +2019/12/04 | 15243 | macros/luatex/generic/barracuda/test/test-code39/004-code39-test.pdf +2019/11/18 | 922 | macros/luatex/generic/barracuda/test/test-code39/004-code39-test.tex +2019/11/23 | 142 | macros/luatex/generic/barracuda/test/test-code39/005-code39-test.lua +2019/11/26 | 1088 | macros/luatex/generic/barracuda/test/test-code39/006-code39-test.lua +2019/11/26 | 38347 | macros/luatex/generic/barracuda/test/test-code39/006-six.svg +2019/11/25 | 4190 | macros/luatex/generic/barracuda/test/test-code39/my_barcode.svg +2019/12/04 | 23619 | macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.pdf +2019/11/20 | 6086 | macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.tex +2019/12/04 | 10601 | macros/luatex/generic/barracuda/test/test-ean/002-ean-test.pdf +2019/11/23 | 208 | macros/luatex/generic/barracuda/test/test-ean/002-ean-test.tex +2019/12/04 | 3901 | macros/luatex/generic/barracuda/test/test-ean/003-ean-test.pdf +2019/11/23 | 266 | macros/luatex/generic/barracuda/test/test-ean/003-ean-test.tex +2019/11/26 | 104 | macros/luatex/generic/barracuda/test/test-ean/004-ean-test.lua +2019/11/25 | 3823 | macros/luatex/generic/barracuda/test/test-ean/8006194056290.svg +2019/12/04 | 30290 | macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.pdf +2019/12/04 | 19639 | macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex +2019/11/20 | 503 | macros/luatex/generic/barracuda/test/test-ga-svg/001-ga-svg-test.lua +2019/12/04 | 470 | macros/luatex/generic/barracuda/test/test-ga-svg/002-ga-svg-test.lua +2019/11/20 | 893 | macros/luatex/generic/barracuda/test/test-ga-svg/test-01.svg +2019/11/20 | 590 | macros/luatex/generic/barracuda/test/test-ga-svg/test-02.svg +2019/11/26 | 4246 | macros/luatex/generic/barracuda/test/test-ga-svg/test-code39.svg +2019/12/04 | 19127 | macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.pdf +2019/11/20 | 5123 | macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.tex +2019/12/04 | 5325 | macros/luatex/generic/barracuda/TODO.txt +2019/12/04 | 344124 | macros/luatex/generic/barracuda.zip 2017/08/19 | 105673 | macros/luatex/generic/chickenize/chickenize.dtx 2017/08/19 | 31717 | macros/luatex/generic/chickenize/chickenize.lua 2017/08/19 | 195033 | macros/luatex/generic/chickenize/chickenize.pdf @@ -247644,9 +247684,9 @@ 2019/02/28 | 324 | systems/texlive/tlnet/archive/amstex.x86_64-solaris.tar.xz 2019/02/28 | 100012 | systems/texlive/tlnet/archive/amsthdoc-it.doc.tar.xz 2019/02/28 | 288 | systems/texlive/tlnet/archive/amsthdoc-it.tar.xz -2019/11/28 | 3146080 | systems/texlive/tlnet/archive/animate.doc.r52944.tar.xz -2019/11/28 | 24332 | systems/texlive/tlnet/archive/animate.r52944.tar.xz -2019/11/28 | 29900 | systems/texlive/tlnet/archive/animate.source.r52944.tar.xz +2019/12/04 | 3146412 | systems/texlive/tlnet/archive/animate.doc.r53010.tar.xz +2019/12/04 | 24320 | systems/texlive/tlnet/archive/animate.r53010.tar.xz +2019/12/04 | 29896 | systems/texlive/tlnet/archive/animate.source.r53010.tar.xz 2019/11/17 | 4644 | systems/texlive/tlnet/archive/annotate.tar.xz 2019/02/28 | 187292 | systems/texlive/tlnet/archive/anonchap.doc.tar.xz 2019/02/28 | 1464 | systems/texlive/tlnet/archive/anonchap.tar.xz @@ -247741,9 +247781,9 @@ 2019/02/28 | 344 | systems/texlive/tlnet/archive/arara.x86_64-linuxmusl.tar.xz 2019/02/28 | 336 | systems/texlive/tlnet/archive/arara.x86_64-linux.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/arara.x86_64-solaris.tar.xz -2019/05/01 | 950288 | systems/texlive/tlnet/archive/archaeologie.doc.tar.xz -2019/05/01 | 134136 | systems/texlive/tlnet/archive/archaeologie.source.tar.xz -2019/05/01 | 72716 | systems/texlive/tlnet/archive/archaeologie.tar.xz +2019/12/04 | 948944 | systems/texlive/tlnet/archive/archaeologie.doc.r53011.tar.xz +2019/12/04 | 72704 | systems/texlive/tlnet/archive/archaeologie.r53011.tar.xz +2019/12/04 | 134268 | systems/texlive/tlnet/archive/archaeologie.source.r53011.tar.xz 2019/02/28 | 2944788 | systems/texlive/tlnet/archive/archaic.doc.tar.xz 2019/02/28 | 134456 | systems/texlive/tlnet/archive/archaic.source.tar.xz 2019/02/28 | 372708 | systems/texlive/tlnet/archive/archaic.tar.xz @@ -248394,8 +248434,8 @@ 2019/11/16 | 4420 | systems/texlive/tlnet/archive/biblatex-caspervector.tar.xz 2019/02/28 | 322392 | systems/texlive/tlnet/archive/biblatex-cheatsheet.doc.tar.xz 2019/02/28 | 436 | systems/texlive/tlnet/archive/biblatex-cheatsheet.tar.xz -2019/08/26 | 923944 | systems/texlive/tlnet/archive/biblatex-chem.doc.tar.xz -2019/08/26 | 5616 | systems/texlive/tlnet/archive/biblatex-chem.tar.xz +2019/12/04 | 923856 | systems/texlive/tlnet/archive/biblatex-chem.doc.r53012.tar.xz +2019/12/04 | 5620 | systems/texlive/tlnet/archive/biblatex-chem.r53012.tar.xz 2019/02/28 | 5247144 | systems/texlive/tlnet/archive/biblatex-chicago.doc.tar.xz 2019/02/28 | 65676 | systems/texlive/tlnet/archive/biblatex-chicago.tar.xz 2019/02/28 | 90108 | systems/texlive/tlnet/archive/biblatex-claves.doc.tar.xz @@ -248452,8 +248492,8 @@ 2019/02/28 | 883940 | systems/texlive/tlnet/archive/biblatex-philosophy.doc.tar.xz 2019/02/28 | 39380 | systems/texlive/tlnet/archive/biblatex-philosophy.source.tar.xz 2019/02/28 | 12572 | systems/texlive/tlnet/archive/biblatex-philosophy.tar.xz -2019/09/23 | 455032 | systems/texlive/tlnet/archive/biblatex-phys.doc.tar.xz -2019/09/23 | 3420 | systems/texlive/tlnet/archive/biblatex-phys.tar.xz +2019/12/04 | 456532 | systems/texlive/tlnet/archive/biblatex-phys.doc.r53013.tar.xz +2019/12/04 | 3440 | systems/texlive/tlnet/archive/biblatex-phys.r53013.tar.xz 2019/05/05 | 327812 | systems/texlive/tlnet/archive/biblatex-publist.doc.tar.xz 2019/05/05 | 6932 | systems/texlive/tlnet/archive/biblatex-publist.tar.xz 2019/12/03 | 215468 | systems/texlive/tlnet/archive/biblatex.r53003.tar.xz @@ -249742,8 +249782,8 @@ 2019/03/24 | 372 | systems/texlive/tlnet/archive/csplain.x86_64-solaris.tar.xz 2019/02/28 | 321176 | systems/texlive/tlnet/archive/csquotes-de.doc.tar.xz 2019/02/28 | 400 | systems/texlive/tlnet/archive/csquotes-de.tar.xz -2019/11/16 | 314676 | systems/texlive/tlnet/archive/csquotes.doc.tar.xz -2019/11/16 | 17808 | systems/texlive/tlnet/archive/csquotes.tar.xz +2019/12/04 | 314828 | systems/texlive/tlnet/archive/csquotes.doc.r53014.tar.xz +2019/12/04 | 17844 | systems/texlive/tlnet/archive/csquotes.r53014.tar.xz 2019/02/28 | 2090184 | systems/texlive/tlnet/archive/css-colors.doc.tar.xz 2019/02/28 | 2296 | systems/texlive/tlnet/archive/css-colors.tar.xz 2019/02/28 | 1798840 | systems/texlive/tlnet/archive/cs.tar.xz @@ -252584,14 +252624,14 @@ 2019/02/28 | 340 | systems/texlive/tlnet/archive/jadetex.amd64-freebsd.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/jadetex.amd64-netbsd.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/jadetex.armhf-linux.tar.xz -2019/11/02 | 31792 | systems/texlive/tlnet/archive/jadetex.doc.tar.xz +2019/12/04 | 31788 | systems/texlive/tlnet/archive/jadetex.doc.r53009.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/jadetex.i386-cygwin.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/jadetex.i386-freebsd.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/jadetex.i386-linux.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/jadetex.i386-netbsd.tar.xz 2019/02/28 | 340 | systems/texlive/tlnet/archive/jadetex.i386-solaris.tar.xz -2019/11/02 | 19312 | systems/texlive/tlnet/archive/jadetex.source.tar.xz -2019/11/02 | 29688 | systems/texlive/tlnet/archive/jadetex.tar.xz +2019/12/04 | 29704 | systems/texlive/tlnet/archive/jadetex.r53009.tar.xz +2019/12/04 | 19312 | systems/texlive/tlnet/archive/jadetex.source.r53009.tar.xz 2019/02/28 | 884 | systems/texlive/tlnet/archive/jadetex.win32.tar.xz 2019/02/28 | 344 | systems/texlive/tlnet/archive/jadetex.x86_64-cygwin.tar.xz 2019/02/28 | 348 | systems/texlive/tlnet/archive/jadetex.x86_64-darwinlegacy.tar.xz @@ -252751,9 +252791,9 @@ 2019/02/28 | 136792 | systems/texlive/tlnet/archive/knittingpattern.doc.tar.xz 2019/02/28 | 1540 | systems/texlive/tlnet/archive/knittingpattern.tar.xz 2019/04/06 | 578004 | systems/texlive/tlnet/archive/knitting.tar.xz -2019/11/20 | 733396 | systems/texlive/tlnet/archive/knowledge.doc.tar.xz -2019/11/20 | 39204 | systems/texlive/tlnet/archive/knowledge.source.tar.xz -2019/11/20 | 20628 | systems/texlive/tlnet/archive/knowledge.tar.xz +2019/12/04 | 738344 | systems/texlive/tlnet/archive/knowledge.doc.r53015.tar.xz +2019/12/04 | 21308 | systems/texlive/tlnet/archive/knowledge.r53015.tar.xz +2019/12/04 | 40592 | systems/texlive/tlnet/archive/knowledge.source.r53015.tar.xz 2019/02/28 | 14024508 | systems/texlive/tlnet/archive/knuth.doc.tar.xz 2019/02/28 | 30424 | systems/texlive/tlnet/archive/knuth-lib.tar.xz 2019/02/28 | 23056 | systems/texlive/tlnet/archive/knuth-local.tar.xz @@ -252995,13 +253035,13 @@ 2019/11/17 | 392 | systems/texlive/tlnet/archive/latex-bin-dev.amd64-freebsd.tar.xz 2019/11/12 | 372 | systems/texlive/tlnet/archive/latex-bin-dev.amd64-netbsd.tar.xz 2019/11/12 | 368 | systems/texlive/tlnet/archive/latex-bin-dev.armhf-linux.tar.xz -2019/11/17 | 13960 | systems/texlive/tlnet/archive/latex-bin-dev.doc.tar.xz +2019/12/04 | 13960 | systems/texlive/tlnet/archive/latex-bin-dev.doc.r53009.tar.xz 2019/11/12 | 368 | systems/texlive/tlnet/archive/latex-bin-dev.i386-cygwin.tar.xz 2019/11/17 | 392 | systems/texlive/tlnet/archive/latex-bin-dev.i386-freebsd.tar.xz 2019/11/17 | 388 | systems/texlive/tlnet/archive/latex-bin-dev.i386-linux.tar.xz 2019/11/12 | 368 | systems/texlive/tlnet/archive/latex-bin-dev.i386-netbsd.tar.xz 2019/11/17 | 392 | systems/texlive/tlnet/archive/latex-bin-dev.i386-solaris.tar.xz -2019/11/17 | 580 | systems/texlive/tlnet/archive/latex-bin-dev.tar.xz +2019/12/04 | 592 | systems/texlive/tlnet/archive/latex-bin-dev.r53009.tar.xz 2019/11/17 | 968 | systems/texlive/tlnet/archive/latex-bin-dev.win32.tar.xz 2019/11/12 | 368 | systems/texlive/tlnet/archive/latex-bin-dev.x86_64-cygwin.tar.xz 2019/11/17 | 400 | systems/texlive/tlnet/archive/latex-bin-dev.x86_64-darwinlegacy.tar.xz @@ -253689,11 +253729,11 @@ 2019/12/01 | 9364 | systems/texlive/tlnet/archive/luacolor.source.r52984.tar.xz 2019/11/17 | 1952504 | systems/texlive/tlnet/archive/luahbtex.aarch64-linux.tar.xz 2019/11/17 | 2205804 | systems/texlive/tlnet/archive/luahbtex.amd64-freebsd.tar.xz -2019/11/17 | 30224 | systems/texlive/tlnet/archive/luahbtex.doc.tar.xz +2019/12/04 | 30224 | systems/texlive/tlnet/archive/luahbtex.doc.r53009.tar.xz 2019/11/17 | 1952784 | systems/texlive/tlnet/archive/luahbtex.i386-freebsd.tar.xz 2019/11/17 | 2268780 | systems/texlive/tlnet/archive/luahbtex.i386-linux.tar.xz 2019/11/17 | 2016188 | systems/texlive/tlnet/archive/luahbtex.i386-solaris.tar.xz -2019/11/17 | 404 | systems/texlive/tlnet/archive/luahbtex.tar.xz +2019/12/04 | 452 | systems/texlive/tlnet/archive/luahbtex.r53009.tar.xz 2019/11/17 | 1550616 | systems/texlive/tlnet/archive/luahbtex.win32.tar.xz 2019/11/17 | 1872244 | systems/texlive/tlnet/archive/luahbtex.x86_64-darwinlegacy.tar.xz 2019/11/17 | 1871588 | systems/texlive/tlnet/archive/luahbtex.x86_64-darwin.tar.xz @@ -253716,13 +253756,13 @@ 2019/11/17 | 1945372 | systems/texlive/tlnet/archive/luajittex.amd64-freebsd.tar.xz 2019/11/17 | 1684104 | systems/texlive/tlnet/archive/luajittex.amd64-netbsd.tar.xz 2019/11/17 | 1545096 | systems/texlive/tlnet/archive/luajittex.armhf-linux.tar.xz -2019/11/17 | 30220 | systems/texlive/tlnet/archive/luajittex.doc.tar.xz +2019/12/04 | 30220 | systems/texlive/tlnet/archive/luajittex.doc.r53009.tar.xz 2019/11/17 | 1808796 | systems/texlive/tlnet/archive/luajittex.i386-cygwin.tar.xz 2019/11/17 | 1739536 | systems/texlive/tlnet/archive/luajittex.i386-freebsd.tar.xz 2019/11/17 | 1927060 | systems/texlive/tlnet/archive/luajittex.i386-linux.tar.xz 2019/11/17 | 1549848 | systems/texlive/tlnet/archive/luajittex.i386-netbsd.tar.xz 2019/11/17 | 1693152 | systems/texlive/tlnet/archive/luajittex.i386-solaris.tar.xz -2019/11/17 | 404 | systems/texlive/tlnet/archive/luajittex.tar.xz +2019/12/04 | 444 | systems/texlive/tlnet/archive/luajittex.r53009.tar.xz 2019/11/17 | 1593324 | systems/texlive/tlnet/archive/luajittex.win32.tar.xz 2019/11/17 | 1757636 | systems/texlive/tlnet/archive/luajittex.x86_64-cygwin.tar.xz 2019/11/17 | 1678044 | systems/texlive/tlnet/archive/luajittex.x86_64-darwinlegacy.tar.xz @@ -255663,14 +255703,14 @@ 2019/11/16 | 344 | systems/texlive/tlnet/archive/platex.armhf-linux.tar.xz 2019/02/28 | 531356 | systems/texlive/tlnet/archive/platexcheat.doc.tar.xz 2019/02/28 | 568 | systems/texlive/tlnet/archive/platexcheat.tar.xz -2019/10/22 | 1586492 | systems/texlive/tlnet/archive/platex.doc.tar.xz +2019/12/04 | 1586492 | systems/texlive/tlnet/archive/platex.doc.r53009.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/platex.i386-cygwin.tar.xz 2019/11/16 | 340 | systems/texlive/tlnet/archive/platex.i386-freebsd.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/platex.i386-linux.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/platex.i386-netbsd.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/platex.i386-solaris.tar.xz -2019/10/22 | 120776 | systems/texlive/tlnet/archive/platex.source.tar.xz -2019/10/22 | 36096 | systems/texlive/tlnet/archive/platex.tar.xz +2019/12/04 | 36120 | systems/texlive/tlnet/archive/platex.r53009.tar.xz +2019/12/04 | 120776 | systems/texlive/tlnet/archive/platex.source.r53009.tar.xz 2019/09/08 | 542784 | systems/texlive/tlnet/archive/platex-tools.doc.tar.xz 2019/09/08 | 7268 | systems/texlive/tlnet/archive/platex-tools.tar.xz 2019/07/27 | 896 | systems/texlive/tlnet/archive/platex.win32.tar.xz @@ -256269,8 +256309,8 @@ 2019/05/31 | 1452460 | systems/texlive/tlnet/archive/ptex.i386-linux.tar.xz 2019/05/29 | 1085956 | systems/texlive/tlnet/archive/ptex.i386-netbsd.tar.xz 2019/04/06 | 1334120 | systems/texlive/tlnet/archive/ptex.i386-solaris.tar.xz -2019/10/20 | 2504136 | systems/texlive/tlnet/archive/ptex-manual.doc.tar.xz -2019/10/20 | 416 | systems/texlive/tlnet/archive/ptex-manual.tar.xz +2019/12/04 | 2540232 | systems/texlive/tlnet/archive/ptex-manual.doc.r53007.tar.xz +2019/12/04 | 416 | systems/texlive/tlnet/archive/ptex-manual.r53007.tar.xz 2019/11/19 | 820 | systems/texlive/tlnet/archive/ptex.tar.xz 2019/02/28 | 56200 | systems/texlive/tlnet/archive/ptext.doc.tar.xz 2019/02/28 | 21740 | systems/texlive/tlnet/archive/ptext.tar.xz @@ -257728,8 +257768,8 @@ 2019/04/06 | 280 | systems/texlive/tlnet/archive/texlive-cz.tar.xz 2019/03/28 | 1299960 | systems/texlive/tlnet/archive/texlive-de.doc.tar.xz 2019/03/28 | 272 | systems/texlive/tlnet/archive/texlive-de.tar.xz -2019/12/03 | 156072 | systems/texlive/tlnet/archive/texlive-docindex.doc.r52996.tar.xz -2019/12/03 | 109880 | systems/texlive/tlnet/archive/texlive-docindex.r52996.tar.xz +2019/12/04 | 156196 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53006.tar.xz +2019/12/04 | 109876 | systems/texlive/tlnet/archive/texlive-docindex.r53006.tar.xz 2019/08/15 | 1856616 | systems/texlive/tlnet/archive/texlive-en.doc.tar.xz 2019/08/15 | 276 | systems/texlive/tlnet/archive/texlive-en.tar.xz 2019/04/01 | 2279380 | systems/texlive/tlnet/archive/texlive-es.doc.tar.xz @@ -257785,13 +257825,13 @@ 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.tar.xz -2019/12/03 | 51204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r52996.tar.xz +2019/12/04 | 51204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r53006.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.i386-cygwin.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.i386-freebsd.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.tar.xz -2019/12/03 | 85432 | systems/texlive/tlnet/archive/texlive-scripts.r52996.tar.xz +2019/12/04 | 85436 | systems/texlive/tlnet/archive/texlive-scripts.r53006.tar.xz 2019/08/31 | 11636 | systems/texlive/tlnet/archive/texlive-scripts.win32.tar.xz 2019/02/28 | 372 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.tar.xz 2019/02/28 | 376 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-darwinlegacy.tar.xz @@ -258621,14 +258661,14 @@ 2019/11/16 | 344 | systems/texlive/tlnet/archive/uplatex.amd64-freebsd.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/uplatex.amd64-netbsd.tar.xz 2019/11/16 | 348 | systems/texlive/tlnet/archive/uplatex.armhf-linux.tar.xz -2019/10/22 | 880644 | systems/texlive/tlnet/archive/uplatex.doc.tar.xz +2019/12/04 | 880644 | systems/texlive/tlnet/archive/uplatex.doc.r53009.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/uplatex.i386-cygwin.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/uplatex.i386-freebsd.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/uplatex.i386-linux.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/uplatex.i386-netbsd.tar.xz 2019/11/16 | 344 | systems/texlive/tlnet/archive/uplatex.i386-solaris.tar.xz -2019/10/22 | 50568 | systems/texlive/tlnet/archive/uplatex.source.tar.xz -2019/10/22 | 14748 | systems/texlive/tlnet/archive/uplatex.tar.xz +2019/12/04 | 14768 | systems/texlive/tlnet/archive/uplatex.r53009.tar.xz +2019/12/04 | 50572 | systems/texlive/tlnet/archive/uplatex.source.r53009.tar.xz 2019/07/27 | 896 | systems/texlive/tlnet/archive/uplatex.win32.tar.xz 2019/11/16 | 348 | systems/texlive/tlnet/archive/uplatex.x86_64-cygwin.tar.xz 2019/11/16 | 352 | systems/texlive/tlnet/archive/uplatex.x86_64-darwinlegacy.tar.xz @@ -259047,7 +259087,7 @@ 2019/11/08 | 324 | systems/texlive/tlnet/archive/xelatex-dev.i386-linux.tar.xz 2019/11/08 | 324 | systems/texlive/tlnet/archive/xelatex-dev.i386-netbsd.tar.xz 2019/11/08 | 324 | systems/texlive/tlnet/archive/xelatex-dev.i386-solaris.tar.xz -2019/11/18 | 404 | systems/texlive/tlnet/archive/xelatex-dev.tar.xz +2019/12/04 | 412 | systems/texlive/tlnet/archive/xelatex-dev.r53009.tar.xz 2019/11/08 | 876 | systems/texlive/tlnet/archive/xelatex-dev.win32.tar.xz 2019/11/08 | 320 | systems/texlive/tlnet/archive/xelatex-dev.x86_64-cygwin.tar.xz 2019/11/08 | 332 | systems/texlive/tlnet/archive/xelatex-dev.x86_64-darwinlegacy.tar.xz @@ -259368,16 +259408,16 @@ 2019/02/28 | 136844 | systems/texlive/tlnet/archive/zxjatype.doc.tar.xz 2019/02/28 | 8412 | systems/texlive/tlnet/archive/zxjatype.tar.xz 2019/10/19 | 106951 | systems/texlive/tlnet/install-tl -2019/12/03 | 3947419 | systems/texlive/tlnet/install-tl-unx.tar.gz -2019/12/03 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2019/12/03 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2019/12/04 | 3947366 | systems/texlive/tlnet/install-tl-unx.tar.gz +2019/12/04 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2019/12/04 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2019/05/09 | 4543 | systems/texlive/tlnet/install-tl-windows.bat -2019/12/03 | 18700220 | systems/texlive/tlnet/install-tl-windows.exe -2019/12/03 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2019/12/03 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2019/12/03 | 22539406 | systems/texlive/tlnet/install-tl.zip -2019/12/03 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2019/12/03 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2019/12/04 | 18698797 | systems/texlive/tlnet/install-tl-windows.exe +2019/12/04 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2019/12/04 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2019/12/04 | 22539410 | systems/texlive/tlnet/install-tl.zip +2019/12/04 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2019/12/04 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc 2019/04/29 | 1221 | systems/texlive/tlnet/README.md 2019/03/13 | 5351 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg 2016/04/12 | 600 | systems/texlive/tlnet/tlpkg/gpg/random_seed @@ -259386,7 +259426,7 @@ 2019/03/13 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg 2019/09/14 | 48351 | systems/texlive/tlnet/tlpkg/installer/config.guess 2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt -2019/12/02 | 5651 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2019/12/03 | 5691 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2018/04/29 | 13647 | systems/texlive/tlnet/tlpkg/installer/DirSelect.pm 2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt 2019/06/25 | 5491 | systems/texlive/tlnet/tlpkg/installer/install-menu-extl.pl @@ -259432,12 +259472,12 @@ 2019/09/23 | 18176 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm 2016/10/11 | 4618 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm 2017/11/14 | 27560 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm -2019/12/03 | 15989166 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2019/12/03 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2019/12/04 | 15989735 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2019/12/04 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2019/11/09 | 87503 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2019/12/03 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2019/12/03 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2019/12/03 | 2148016 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2019/12/04 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2019/12/04 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2019/12/04 | 2147568 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2019/11/27 | 59008 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm 2018/12/17 | 36910 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm 2018/08/31 | 14972 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm @@ -261718,7 +261758,7 @@ 2013/03/11 | 2065077 | systems/win32/miktex/tm/packages/amsrefs.tar.lzma 2011/06/23 | 385532 | systems/win32/miktex/tm/packages/amstex.tar.lzma 2008/12/23 | 68780 | systems/win32/miktex/tm/packages/analogclock.tar.lzma -2019/11/10 | 3202063 | systems/win32/miktex/tm/packages/animate.tar.lzma +2019/12/04 | 3202635 | systems/win32/miktex/tm/packages/animate.tar.lzma 2018/08/27 | 1599994 | systems/win32/miktex/tm/packages/annot-pro.tar.lzma 2010/02/22 | 189080 | systems/win32/miktex/tm/packages/anonchap.tar.lzma 2019/07/13 | 793144 | systems/win32/miktex/tm/packages/anonymouspro.tar.lzma @@ -261750,7 +261790,7 @@ 2012/03/21 | 618786 | systems/win32/miktex/tm/packages/arabtex.tar.lzma 2015/09/08 | 525679 | systems/win32/miktex/tm/packages/arabxetex.tar.lzma 2019/09/17 | 6290987 | systems/win32/miktex/tm/packages/arara.tar.lzma -2019/05/01 | 1158790 | systems/win32/miktex/tm/packages/archaeologie.tar.lzma +2019/12/04 | 1157153 | systems/win32/miktex/tm/packages/archaeologie.tar.lzma 2015/06/03 | 2562730 | systems/win32/miktex/tm/packages/archaic.tar.lzma 2004/05/16 | 6164 | systems/win32/miktex/tm/packages/arcs.cab 2006/06/03 | 1519817 | systems/win32/miktex/tm/packages/arev.cab @@ -261963,7 +262003,7 @@ 2012/05/29 | 115804 | systems/win32/miktex/tm/packages/biblatex-bwl.tar.lzma 2019/11/16 | 617377 | systems/win32/miktex/tm/packages/biblatex-caspervector.tar.lzma 2017/06/26 | 325195 | systems/win32/miktex/tm/packages/biblatex-cheatsheet.tar.lzma -2019/08/25 | 929567 | systems/win32/miktex/tm/packages/biblatex-chem.tar.lzma +2019/12/04 | 929431 | systems/win32/miktex/tm/packages/biblatex-chem.tar.lzma 2018/01/18 | 5327271 | systems/win32/miktex/tm/packages/biblatex-chicago.tar.lzma 2017/04/11 | 92574 | systems/win32/miktex/tm/packages/biblatex-claves.tar.lzma 2016/12/09 | 1140816 | systems/win32/miktex/tm/packages/biblatex-dw.tar.lzma @@ -261991,7 +262031,7 @@ 2018/10/26 | 113014 | systems/win32/miktex/tm/packages/biblatex-opcit-booktitle.tar.lzma 2019/09/24 | 2028167 | systems/win32/miktex/tm/packages/biblatex-oxref.tar.lzma 2018/03/31 | 941513 | systems/win32/miktex/tm/packages/biblatex-philosophy.tar.lzma -2019/09/24 | 459541 | systems/win32/miktex/tm/packages/biblatex-phys.tar.lzma +2019/12/04 | 461163 | systems/win32/miktex/tm/packages/biblatex-phys.tar.lzma 2019/04/17 | 338250 | systems/win32/miktex/tm/packages/biblatex-publist.tar.lzma 2017/11/21 | 96599 | systems/win32/miktex/tm/packages/biblatex-realauthor.tar.lzma 2018/12/18 | 670534 | systems/win32/miktex/tm/packages/biblatex-sbl.tar.lzma @@ -262058,6 +262098,7 @@ 2008/03/21 | 213952 | systems/win32/miktex/tm/packages/bookest.tar.lzma 2009/09/11 | 233644 | systems/win32/miktex/tm/packages/booklet.tar.lzma 2006/09/28 | 329086 | systems/win32/miktex/tm/packages/bookman.cab +2019/12/04 | 491718 | systems/win32/miktex/tm/packages/bookmark.tar.lzma 2011/04/08 | 275838 | systems/win32/miktex/tm/packages/booktabs-de.tar.lzma 2019/10/11 | 314133 | systems/win32/miktex/tm/packages/booktabs.tar.lzma 2010/04/13 | 157277 | systems/win32/miktex/tm/packages/boolexpr.tar.lzma @@ -262645,6 +262686,7 @@ 2019/08/22 | 213081 | systems/win32/miktex/tm/packages/elzcards.tar.lzma 2011/11/02 | 1496129 | systems/win32/miktex/tm/packages/emarks.tar.lzma 2019/05/21 | 243368 | systems/win32/miktex/tm/packages/embedall.tar.lzma +2019/12/04 | 405495 | systems/win32/miktex/tm/packages/embedfile.tar.lzma 2019/10/04 | 470440 | systems/win32/miktex/tm/packages/embrac.tar.lzma 2006/09/05 | 2823383 | systems/win32/miktex/tm/packages/emerald.cab 2016/09/13 | 328589 | systems/win32/miktex/tm/packages/emf.tar.lzma @@ -262820,7 +262862,7 @@ 2019/10/04 | 281928 | systems/win32/miktex/tm/packages/filehook.tar.lzma 2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma 2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma -2019/12/03 | 512001 | systems/win32/miktex/tm/packages/files.csv.lzma +2019/12/04 | 512112 | systems/win32/miktex/tm/packages/files.csv.lzma 2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma 2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma 2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma @@ -263320,7 +263362,7 @@ 2010/03/08 | 138756 | systems/win32/miktex/tm/packages/knittingpattern.tar.lzma 2019/04/06 | 1396129 | systems/win32/miktex/tm/packages/knitting.tar.lzma 2007/10/15 | 6579 | systems/win32/miktex/tm/packages/knot.tar.lzma -2019/11/20 | 794637 | systems/win32/miktex/tm/packages/knowledge.tar.lzma +2019/12/04 | 801789 | systems/win32/miktex/tm/packages/knowledge.tar.lzma 2016/11/04 | 42608 | systems/win32/miktex/tm/packages/knuth-lib.tar.lzma 2016/11/04 | 29279 | systems/win32/miktex/tm/packages/knuth-local.tar.lzma 2018/11/05 | 875632 | systems/win32/miktex/tm/packages/komacv-rg.tar.lzma @@ -263932,9 +263974,9 @@ 2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma 2019/11/11 | 38784 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma 2019/11/11 | 42872 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma -2019/12/03 | 192916 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2019/12/03 | 1147394 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2019/12/03 | 1069506 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2019/12/04 | 193025 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2019/12/04 | 1148309 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2019/12/04 | 1070041 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma 2019/11/11 | 13040 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma 2019/11/11 | 14027 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma 2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma @@ -264082,181 +264124,181 @@ 2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma 2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma 2019/09/11 | 231430 | systems/win32/miktex/tm/packages/newverbs.tar.lzma -2019/12/03 | 511550 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2019/12/03 | 29239 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2019/12/03 | 33399 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2019/12/03 | 863198 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2019/12/03 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2019/12/03 | 24073 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2019/12/03 | 26177 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2019/12/03 | 29295 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2019/12/03 | 34845 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2019/12/03 | 49771 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2019/12/03 | 57219 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2019/12/03 | 84534 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma -2019/12/03 | 94239 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2019/12/03 | 60328 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2019/12/03 | 67257 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2019/12/03 | 26661 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2019/12/03 | 30238 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2019/12/03 | 328875 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma -2019/12/03 | 391460 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2019/12/03 | 32264 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2019/12/03 | 36378 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2019/12/03 | 49262 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2019/12/03 | 53995 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2019/12/03 | 198079 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma -2019/12/03 | 214150 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma -2019/12/03 | 169201 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma -2019/12/03 | 184159 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2019/12/03 | 51771 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma -2019/12/03 | 58793 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2019/12/03 | 20737 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2019/12/03 | 22960 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2019/12/03 | 449940 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma -2019/12/03 | 40989 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma -2019/12/03 | 45810 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2019/12/03 | 271812 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2019/12/03 | 308660 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2019/12/03 | 40736 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma -2019/12/03 | 44982 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2019/12/03 | 112994 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2019/12/03 | 127172 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2019/12/03 | 1203294 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2019/12/03 | 1329052 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2019/12/03 | 33548 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma -2019/12/03 | 38864 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2019/12/03 | 43438 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2019/12/03 | 47978 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2019/12/03 | 45464 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2019/12/03 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2019/12/03 | 56619 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2019/12/03 | 61657 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2019/12/03 | 133204 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2019/12/03 | 152163 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2019/12/03 | 69608 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2019/12/03 | 72599 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2019/12/03 | 68676 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma -2019/12/03 | 77318 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma -2019/12/03 | 246455 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2019/12/03 | 281675 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2019/12/03 | 25326 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma -2019/12/03 | 28711 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2019/12/03 | 100681 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma -2019/12/03 | 116802 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2019/12/03 | 63288 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2019/12/03 | 72571 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2019/12/03 | 94638 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2019/12/03 | 111236 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2019/12/03 | 35215 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2019/12/03 | 39846 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2019/12/03 | 457346 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2019/12/03 | 544015 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2019/12/03 | 137170 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma -2019/12/03 | 150090 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma -2019/12/03 | 92935 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2019/12/03 | 108760 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2019/12/03 | 15895 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma -2019/12/03 | 17699 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2019/12/03 | 27819 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2019/12/03 | 29689 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2019/12/03 | 498554 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma -2019/12/03 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2019/12/03 | 538878 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2019/12/03 | 575923 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2019/12/03 | 93474 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma -2019/12/03 | 102380 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2019/12/03 | 1679149 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2019/12/03 | 1945837 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2019/12/03 | 67250 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2019/12/03 | 73635 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2019/12/03 | 26977 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2019/12/03 | 31292 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2019/12/03 | 7504 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2019/12/03 | 8484 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2019/12/03 | 167844 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma -2019/12/03 | 182759 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2019/12/03 | 247498 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2019/12/03 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2019/12/03 | 87274 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2019/12/03 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2019/12/03 | 77959 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2019/12/03 | 86581 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2019/12/03 | 166013 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma -2019/12/03 | 185298 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2019/12/03 | 146762 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma -2019/12/03 | 165965 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2019/12/03 | 194996 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2019/12/03 | 177583 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2019/12/03 | 80505 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2019/12/03 | 91154 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2019/12/03 | 30989 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2019/12/03 | 34835 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2019/12/03 | 56421 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2019/12/03 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2019/12/03 | 41878 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2019/12/03 | 45740 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2019/12/03 | 45589 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2019/12/03 | 52141 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2019/12/03 | 354499 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma -2019/12/03 | 387514 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma -2019/12/03 | 321500 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma -2019/12/03 | 356321 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2019/12/03 | 187296 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2019/12/03 | 193314 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2019/12/03 | 202427 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2019/12/03 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2019/12/03 | 77934 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2019/12/03 | 87219 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2019/12/03 | 932887 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2019/12/03 | 1042663 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2019/12/03 | 19790 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2019/12/03 | 23343 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2019/12/03 | 31153 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2019/12/03 | 36634 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2019/12/03 | 63273 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma -2019/12/03 | 71697 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2019/12/03 | 42573 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2019/12/03 | 50790 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2019/12/03 | 1068590 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma -2019/12/03 | 1195624 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2019/12/03 | 41862 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma -2019/12/03 | 50827 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2019/12/03 | 53444 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma -2019/12/03 | 59458 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma -2019/12/03 | 26799 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2019/12/03 | 29145 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2019/12/03 | 16041 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2019/12/03 | 17763 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2019/12/03 | 63117 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2019/12/03 | 69210 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2019/12/03 | 147095 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2019/12/03 | 160558 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2019/12/03 | 70248 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2019/12/03 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2019/12/03 | 91336 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2019/12/03 | 96208 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2019/12/03 | 2459482 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma -2019/12/03 | 2579407 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2019/12/03 | 54739 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2019/12/03 | 61218 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2019/12/03 | 26509 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma -2019/12/03 | 32349 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2019/12/03 | 61567 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2019/12/03 | 65023 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2019/12/03 | 246890 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2019/12/03 | 276599 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2019/12/03 | 533455 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2019/12/03 | 563306 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2019/12/03 | 39220 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma -2019/12/03 | 42943 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2019/12/03 | 192916 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2019/12/03 | 1148234 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2019/12/03 | 1069220 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2019/12/03 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2019/12/03 | 14050 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2019/12/04 | 512489 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2019/12/04 | 29240 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2019/12/04 | 33400 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2019/12/04 | 863201 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2019/12/04 | 954074 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2019/12/04 | 24071 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2019/12/04 | 26178 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2019/12/04 | 29295 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2019/12/04 | 34845 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2019/12/04 | 49773 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2019/12/04 | 57218 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2019/12/04 | 84533 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2019/12/04 | 94237 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2019/12/04 | 60328 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2019/12/04 | 67257 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2019/12/04 | 26663 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2019/12/04 | 30240 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2019/12/04 | 328876 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2019/12/04 | 391460 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2019/12/04 | 32266 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2019/12/04 | 36381 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2019/12/04 | 49264 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2019/12/04 | 53996 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2019/12/04 | 198078 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2019/12/04 | 214153 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2019/12/04 | 169201 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2019/12/04 | 184160 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2019/12/04 | 51773 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2019/12/04 | 58792 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2019/12/04 | 20738 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2019/12/04 | 22960 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2019/12/04 | 449938 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma +2019/12/04 | 40990 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2019/12/04 | 45810 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2019/12/04 | 271814 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2019/12/04 | 308659 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2019/12/04 | 40739 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2019/12/04 | 44981 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2019/12/04 | 112995 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2019/12/04 | 127172 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2019/12/04 | 1203298 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2019/12/04 | 1329051 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2019/12/04 | 33549 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2019/12/04 | 38863 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2019/12/04 | 43439 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2019/12/04 | 47977 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2019/12/04 | 45466 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2019/12/04 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2019/12/04 | 56620 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2019/12/04 | 61656 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2019/12/04 | 133203 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2019/12/04 | 152164 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2019/12/04 | 69609 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2019/12/04 | 72599 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2019/12/04 | 68675 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2019/12/04 | 77320 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2019/12/04 | 246456 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2019/12/04 | 281674 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2019/12/04 | 25327 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2019/12/04 | 28710 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2019/12/04 | 100682 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2019/12/04 | 116802 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2019/12/04 | 63289 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2019/12/04 | 72573 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2019/12/04 | 94639 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2019/12/04 | 111236 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2019/12/04 | 35218 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2019/12/04 | 39845 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2019/12/04 | 457347 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2019/12/04 | 544014 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2019/12/04 | 137170 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2019/12/04 | 150090 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2019/12/04 | 92936 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2019/12/04 | 108760 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2019/12/04 | 15895 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2019/12/04 | 17697 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2019/12/04 | 27821 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2019/12/04 | 29690 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2019/12/04 | 498552 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2019/12/04 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2019/12/04 | 538882 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2019/12/04 | 575922 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2019/12/04 | 93475 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2019/12/04 | 102380 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2019/12/04 | 1679152 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2019/12/04 | 1945839 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2019/12/04 | 67252 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2019/12/04 | 73636 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2019/12/04 | 26978 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2019/12/04 | 31294 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2019/12/04 | 7507 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2019/12/04 | 8484 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2019/12/04 | 167846 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2019/12/04 | 182759 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2019/12/04 | 247500 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2019/12/04 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2019/12/04 | 87275 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2019/12/04 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2019/12/04 | 77960 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2019/12/04 | 86581 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2019/12/04 | 166014 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2019/12/04 | 185299 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2019/12/04 | 146765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2019/12/04 | 165964 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2019/12/04 | 194997 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2019/12/04 | 177583 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2019/12/04 | 80506 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2019/12/04 | 91156 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2019/12/04 | 30991 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2019/12/04 | 34834 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2019/12/04 | 56423 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2019/12/04 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2019/12/04 | 41879 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2019/12/04 | 45741 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2019/12/04 | 45591 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2019/12/04 | 52141 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2019/12/04 | 354502 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma +2019/12/04 | 387511 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma +2019/12/04 | 321500 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2019/12/04 | 356319 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2019/12/04 | 187298 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2019/12/04 | 193312 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2019/12/04 | 202428 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2019/12/04 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2019/12/04 | 77936 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2019/12/04 | 87218 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2019/12/04 | 932885 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2019/12/04 | 1042663 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2019/12/04 | 19792 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2019/12/04 | 23343 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2019/12/04 | 31153 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2019/12/04 | 36633 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2019/12/04 | 63273 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2019/12/04 | 71698 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2019/12/04 | 42573 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2019/12/04 | 50790 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2019/12/04 | 1068588 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2019/12/04 | 1195623 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2019/12/04 | 41862 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2019/12/04 | 50828 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2019/12/04 | 53446 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma +2019/12/04 | 59458 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma +2019/12/04 | 26800 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2019/12/04 | 29144 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2019/12/04 | 16042 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2019/12/04 | 17762 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2019/12/04 | 63117 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2019/12/04 | 69211 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2019/12/04 | 147095 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2019/12/04 | 160559 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2019/12/04 | 70250 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2019/12/04 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2019/12/04 | 91339 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2019/12/04 | 96207 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2019/12/04 | 2459484 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2019/12/04 | 2579406 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2019/12/04 | 54740 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2019/12/04 | 61214 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2019/12/04 | 26509 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2019/12/04 | 32348 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2019/12/04 | 61566 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2019/12/04 | 65022 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2019/12/04 | 246891 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2019/12/04 | 276599 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2019/12/04 | 533455 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2019/12/04 | 563305 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2019/12/04 | 39221 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2019/12/04 | 42944 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2019/12/04 | 193025 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2019/12/04 | 1147832 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2019/12/04 | 1069630 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2019/12/04 | 13061 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2019/12/04 | 14048 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma 2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma -2019/12/03 | 652 | systems/win32/miktex/tm/packages/next/pr.ini +2019/12/04 | 652 | systems/win32/miktex/tm/packages/next/pr.ini 2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma 2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma 2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma @@ -264558,7 +264600,7 @@ 2008/11/07 | 35981 | systems/win32/miktex/tm/packages/prettyref.tar.lzma 2017/07/26 | 201385 | systems/win32/miktex/tm/packages/preview.tar.lzma 2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma -2019/12/03 | 366 | systems/win32/miktex/tm/packages/pr.ini +2019/12/04 | 365 | systems/win32/miktex/tm/packages/pr.ini 2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma 2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma 2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma @@ -265665,9 +265707,9 @@ 2019/08/12 | 14654 | systems/win32/w32tex/00FILES.euc 2019/08/12 | 14654 | systems/win32/w32tex/00FILES.sjis 2019/11/15 | 4908836 | systems/win32/w32tex/aleph-w32.tar.xz -2019/12/01 | 63288264 | systems/win32/w32tex/biblatex-biber.tar.xz +2019/12/03 | 63287436 | systems/win32/w32tex/biblatex-biber.tar.xz 2016/12/13 | 65971452 | systems/win32/w32tex/cbfonts.tar.xz -2019/12/02 | 555313 | systems/win32/w32tex/ChangeLog +2019/12/03 | 555509 | systems/win32/w32tex/ChangeLog 2009/08/03 | 141221 | systems/win32/w32tex/ChangeLog.0 2009/08/03 | 221890 | systems/win32/w32tex/ChangeLog.1 2009/08/03 | 116462 | systems/win32/w32tex/ChangeLog.2 @@ -265675,7 +265717,7 @@ 2017/06/24 | 644754 | systems/win32/w32tex/ChangeLog.4 2019/11/28 | 22469724 | systems/win32/w32tex/cjkzr.tar.xz 2013/04/27 | 15858676 | systems/win32/w32tex/context-doc.tar.xz -2019/11/30 | 132040152 | systems/win32/w32tex/context.tar.xz +2019/12/03 | 132026440 | systems/win32/w32tex/context.tar.xz 2019/11/23 | 902480 | systems/win32/w32tex/cweb-w32.tar.xz 2019/11/22 | 6463436 | systems/win32/w32tex/datetime2.tar.xz 2019/08/14 | 838256 | systems/win32/w32tex/dvi2ps-w32.tar.xz @@ -265709,7 +265751,7 @@ 2019/11/07 | 1217272 | systems/win32/w32tex/omegaj-w32.tar.xz 2019/09/08 | 357888 | systems/win32/w32tex/otfbeta.tar.xz 2019/11/30 | 12851568 | systems/win32/w32tex/pdftex-w32.tar.xz -2019/12/01 | 81401856 | systems/win32/w32tex/pgfcontrib.tar.xz +2019/12/03 | 81401876 | systems/win32/w32tex/pgfcontrib.tar.xz 2015/01/26 | 189072 | systems/win32/w32tex/plain2-2.54-w32.tar.xz 2019/10/22 | 2933444 | systems/win32/w32tex/platex.tar.xz 2018/03/05 | 1467972 | systems/win32/w32tex/pmx.tar.xz @@ -265881,29 +265923,29 @@ 2004/06/04 | 404 | tds/tds.sed 2004/06/23 | 65418 | tds/tds.tex 2019/05/29 | 304264 | tds.zip -2019/12/04 | 186 | timestamp +2019/12/05 | 186 | timestamp 2002/08/26 | 61898 | usergrps/dante/antrag.pdf 2002/08/26 | 118217 | usergrps/dante/antrag.ps 2017/06/30 | 917 | usergrps/dante/dtk/doc/beispiel.bib -2019/11/10 | 81366 | usergrps/dante/dtk/doc/beispiel.pdf -2019/10/28 | 3523 | usergrps/dante/dtk/doc/beispiel.tex -2019/10/13 | 5434 | usergrps/dante/dtk/doc/dtk-extern-test.tex -2017/06/30 | 253 | usergrps/dante/dtk/dtk0.tex -2018/01/10 | 1039 | usergrps/dante/dtk/dtk-author.clo -2019/08/09 | 6338 | usergrps/dante/dtk/dtk.bbx -2017/06/30 | 633 | usergrps/dante/dtk/dtk.cbx -2019/11/10 | 16835 | usergrps/dante/dtk/dtk.cls -2019/10/26 | 9170 | usergrps/dante/dtk/dtk-extern.sty -2019/10/26 | 17180 | usergrps/dante/dtk/dtk-full.clo -2019/10/26 | 4471 | usergrps/dante/dtk/dtk-logos.sty -2019/10/26 | 2089 | usergrps/dante/dtk/dtk-new-engines.clo -2017/11/06 | 534 | usergrps/dante/dtk/dtk.nolig -2017/06/30 | 1344 | usergrps/dante/dtk/dtk-old-engines.clo -2019/10/26 | 394 | usergrps/dante/dtk/dtk-ruecken.tex -2019/10/28 | 5472 | usergrps/dante/dtk/dtk-url.sty -2017/06/30 | 1903 | usergrps/dante/dtk/dtk.xdy -2017/06/30 | 162 | usergrps/dante/dtk/README.md -2019/11/10 | 108702 | usergrps/dante/dtk.zip +2019/12/04 | 77326 | usergrps/dante/dtk/doc/beispiel.pdf +2018/06/18 | 3117 | usergrps/dante/dtk/doc/beispiel.tex +2019/12/04 | 5434 | usergrps/dante/dtk/doc/dtk-extern-test.tex +2019/12/04 | 253 | usergrps/dante/dtk/dtk0.tex +2019/12/04 | 1039 | usergrps/dante/dtk/dtk-author.clo +2019/12/04 | 6338 | usergrps/dante/dtk/dtk.bbx +2019/12/04 | 633 | usergrps/dante/dtk/dtk.cbx +2019/12/04 | 16839 | usergrps/dante/dtk/dtk.cls +2019/12/04 | 9170 | usergrps/dante/dtk/dtk-extern.sty +2019/12/04 | 17180 | usergrps/dante/dtk/dtk-full.clo +2019/12/04 | 4471 | usergrps/dante/dtk/dtk-logos.sty +2019/12/04 | 2089 | usergrps/dante/dtk/dtk-new-engines.clo +2019/12/04 | 534 | usergrps/dante/dtk/dtk.nolig +2019/12/04 | 1344 | usergrps/dante/dtk/dtk-old-engines.clo +2019/12/04 | 394 | usergrps/dante/dtk/dtk-ruecken.tex +2019/12/04 | 4579 | usergrps/dante/dtk/dtk-url.sty +2019/12/04 | 1903 | usergrps/dante/dtk/dtk.xdy +2019/12/04 | 162 | usergrps/dante/dtk/README.md +2019/12/04 | 104375 | usergrps/dante/dtk.zip 2000/10/23 | 348511 | usergrps/dante/flyer-dante-print.pdf 2000/10/23 | 945544 | usergrps/dante/flyer-dante-print.ps 2000/10/23 | 348042 | usergrps/dante/flyer-dante-single.pdf diff --git a/FILES.byname.gz b/FILES.byname.gz index 1742a8c9f0..25e119a6e8 100644 Binary files a/FILES.byname.gz and b/FILES.byname.gz differ diff --git a/FILES.last07days b/FILES.last07days index 824ee5b442..87efa274ba 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,288 +1,554 @@ +2019/12/04 | 96207 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2019/12/04 | 954074 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2019/12/04 | 948944 | systems/texlive/tlnet/archive/archaeologie.doc.r53011.tar.xz +2019/12/04 | 94639 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2019/12/04 | 94237 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2019/12/04 | 93475 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2019/12/04 | 932885 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2019/12/04 | 929431 | systems/win32/miktex/tm/packages/biblatex-chem.tar.lzma +2019/12/04 | 92936 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2019/12/04 | 923856 | systems/texlive/tlnet/archive/biblatex-chem.doc.r53012.tar.xz +2019/12/04 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2019/12/04 | 9170 | usergrps/dante/dtk/dtk-extern.sty +2019/12/04 | 91339 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2019/12/04 | 91156 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2019/12/04 | 880644 | systems/texlive/tlnet/archive/uplatex.doc.r53009.tar.xz +2019/12/04 | 87275 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2019/12/04 | 87218 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2019/12/04 | 86581 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2019/12/04 | 863201 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2019/12/04 | 85436 | systems/texlive/tlnet/archive/texlive-scripts.r53006.tar.xz +2019/12/04 | 8484 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2019/12/04 | 84533 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2019/12/04 | 80506 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2019/12/04 | 801789 | systems/win32/miktex/tm/packages/knowledge.tar.lzma +2019/12/04 | 7 | macros/luatex/generic/barracuda/doc/barracuda-manual-tool.tex +2019/12/04 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2019/12/04 | 780941 | graphics/pgf/contrib/dynkin-diagrams.zip +2019/12/04 | 77960 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2019/12/04 | 77936 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2019/12/04 | 77326 | usergrps/dante/dtk/doc/beispiel.pdf +2019/12/04 | 77320 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2019/12/04 | 751053 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf +2019/12/04 | 7507 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2019/12/04 | 738344 | systems/texlive/tlnet/archive/knowledge.doc.r53015.tar.xz +2019/12/04 | 73636 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2019/12/04 | 729 | graphics/pgf/contrib/dynkin-diagrams/README +2019/12/04 | 72704 | systems/texlive/tlnet/archive/archaeologie.r53011.tar.xz +2019/12/04 | 72599 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2019/12/04 | 72573 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2019/12/04 | 71698 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2019/12/04 | 70250 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2019/12/04 | 69609 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2019/12/04 | 69211 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2019/12/04 | 68675 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2019/12/04 | 67257 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2019/12/04 | 67252 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2019/12/04 | 652 | systems/win32/miktex/tm/packages/next/pr.ini +2019/12/04 | 65022 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2019/12/04 | 633 | usergrps/dante/dtk/dtk.cbx +2019/12/04 | 6338 | usergrps/dante/dtk/dtk.bbx +2019/12/04 | 63289 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2019/12/04 | 63273 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2019/12/04 | 63117 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2019/12/04 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2019/12/04 | 61656 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2019/12/04 | 61566 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2019/12/04 | 61214 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2019/12/04 | 60328 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2019/12/04 | 59458 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma +2019/12/04 | 592 | systems/texlive/tlnet/archive/latex-bin-dev.r53009.tar.xz +2019/12/04 | 58792 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2019/12/04 | 575922 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2019/12/04 | 57452 | macros/luatex/generic/barracuda/doc/barracuda.pdf +2019/12/04 | 57218 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2019/12/04 | 56796 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex +2019/12/04 | 56620 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2019/12/04 | 56423 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2019/12/04 | 563305 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2019/12/04 | 5620 | systems/texlive/tlnet/archive/biblatex-chem.r53012.tar.xz +2019/12/04 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2019/12/04 | 54740 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2019/12/04 | 544014 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2019/12/04 | 5434 | usergrps/dante/dtk/doc/dtk-extern-test.tex +2019/12/04 | 53996 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2019/12/04 | 538882 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2019/12/04 | 534 | usergrps/dante/dtk/dtk.nolig +2019/12/04 | 53446 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma +2019/12/04 | 533455 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2019/12/04 | 5325 | macros/luatex/generic/barracuda/TODO.txt +2019/12/04 | 52141 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2019/12/04 | 51773 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2019/12/04 | 512489 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2019/12/04 | 512112 | systems/win32/miktex/tm/packages/files.csv.lzma +2019/12/04 | 51204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r53006.tar.xz +2019/12/04 | 50828 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2019/12/04 | 50790 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2019/12/04 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2019/12/04 | 50572 | systems/texlive/tlnet/archive/uplatex.source.r53009.tar.xz +2019/12/04 | 498552 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2019/12/04 | 49773 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2019/12/04 | 49264 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2019/12/04 | 491718 | systems/win32/miktex/tm/packages/bookmark.tar.lzma +2019/12/04 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2019/12/04 | 47977 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2019/12/04 | 470 | macros/luatex/generic/barracuda/test/test-ga-svg/002-ga-svg-test.lua +2019/12/04 | 468294 | macros/latex/contrib/babel-contrib/italian.zip +2019/12/04 | 461163 | systems/win32/miktex/tm/packages/biblatex-phys.tar.lzma +2019/12/04 | 45810 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2019/12/04 | 4579 | usergrps/dante/dtk/dtk-url.sty +2019/12/04 | 45741 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2019/12/04 | 457347 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2019/12/04 | 456532 | systems/texlive/tlnet/archive/biblatex-phys.doc.r53013.tar.xz +2019/12/04 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2019/12/04 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2019/12/04 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2019/12/04 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2019/12/04 | 45591 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2019/12/04 | 45466 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2019/12/04 | 452 | systems/texlive/tlnet/archive/luahbtex.r53009.tar.xz +2019/12/04 | 449938 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma +2019/12/04 | 44981 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2019/12/04 | 4471 | usergrps/dante/dtk/dtk-logos.sty +2019/12/04 | 444 | systems/texlive/tlnet/archive/luajittex.r53009.tar.xz +2019/12/04 | 43439 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2019/12/04 | 42944 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2019/12/04 | 42573 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2019/12/04 | 41879 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2019/12/04 | 41862 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2019/12/04 | 416 | systems/texlive/tlnet/archive/ptex-manual.r53007.tar.xz +2019/12/04 | 412 | systems/texlive/tlnet/archive/xelatex-dev.r53009.tar.xz +2019/12/04 | 40990 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2019/12/04 | 40739 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2019/12/04 | 40592 | systems/texlive/tlnet/archive/knowledge.source.r53015.tar.xz +2019/12/04 | 405495 | systems/win32/miktex/tm/packages/embedfile.tar.lzma +2019/12/04 | 39845 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2019/12/04 | 394 | usergrps/dante/dtk/dtk-ruecken.tex +2019/12/04 | 3947366 | systems/texlive/tlnet/install-tl-unx.tar.gz +2019/12/04 | 39221 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2019/12/04 | 391460 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2019/12/04 | 3901 | macros/luatex/generic/barracuda/test/test-ean/003-ean-test.pdf +2019/12/04 | 38863 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2019/12/04 | 387511 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma +2019/12/04 | 3857 | macros/luatex/generic/barracuda/src/barracuda.lua +2019/12/04 | 3687 | macros/luatex/generic/barracuda/test/test-code128/002-code128-test.tex +2019/12/04 | 36633 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2019/12/04 | 365 | systems/win32/miktex/tm/packages/pr.ini +2019/12/04 | 36381 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2019/12/04 | 3621 | macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.pdf +2019/12/04 | 36120 | systems/texlive/tlnet/archive/platex.r53009.tar.xz +2019/12/04 | 356319 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2019/12/04 | 354502 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma +2019/12/04 | 35218 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2019/12/04 | 34845 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2019/12/04 | 34834 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2019/12/04 | 344124 | macros/luatex/generic/barracuda.zip +2019/12/04 | 3440 | systems/texlive/tlnet/archive/biblatex-phys.r53013.tar.xz +2019/12/04 | 33549 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2019/12/04 | 33400 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2019/12/04 | 3329 | macros/luatex/generic/barracuda/README.md +2019/12/04 | 328876 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2019/12/04 | 32348 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2019/12/04 | 32266 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2019/12/04 | 321500 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2019/12/04 | 3202635 | systems/win32/miktex/tm/packages/animate.tar.lzma +2019/12/04 | 31788 | systems/texlive/tlnet/archive/jadetex.doc.r53009.tar.xz +2019/12/04 | 314828 | systems/texlive/tlnet/archive/csquotes.doc.r53014.tar.xz +2019/12/04 | 3146412 | systems/texlive/tlnet/archive/animate.doc.r53010.tar.xz +2019/12/04 | 31294 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2019/12/04 | 312732 | macros/latex/contrib/mleftright.zip +2019/12/04 | 311978 | macros/latex/contrib/grfext.zip +2019/12/04 | 31153 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2019/12/04 | 30991 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2019/12/04 | 308659 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2019/12/04 | 30290 | macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.pdf +2019/12/04 | 30240 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2019/12/04 | 30224 | systems/texlive/tlnet/archive/luahbtex.doc.r53009.tar.xz +2019/12/04 | 30220 | systems/texlive/tlnet/archive/luajittex.doc.r53009.tar.xz +2019/12/04 | 29896 | systems/texlive/tlnet/archive/animate.source.r53010.tar.xz +2019/12/04 | 29704 | systems/texlive/tlnet/archive/jadetex.r53009.tar.xz +2019/12/04 | 29690 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2019/12/04 | 293506 | macros/latex/contrib/letltxmacro.zip +2019/12/04 | 29295 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2019/12/04 | 29240 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2019/12/04 | 29144 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2019/12/04 | 288324 | macros/latex/contrib/infwarerr.zip +2019/12/04 | 28710 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2019/12/04 | 281674 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2019/12/04 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2019/12/04 | 27821 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2019/12/04 | 276599 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2019/12/04 | 271814 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2019/12/04 | 26978 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2019/12/04 | 26800 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2019/12/04 | 26663 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2019/12/04 | 26509 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2019/12/04 | 26178 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2019/12/04 | 2579406 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2019/12/04 | 2540232 | systems/texlive/tlnet/archive/ptex-manual.doc.r53007.tar.xz +2019/12/04 | 253 | usergrps/dante/dtk/dtk0.tex +2019/12/04 | 25327 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2019/12/04 | 247500 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2019/12/04 | 24725254 | macros/latex/contrib/oberdiek.zip +2019/12/04 | 246891 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2019/12/04 | 246456 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2019/12/04 | 2459484 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2019/12/04 | 24320 | systems/texlive/tlnet/archive/animate.r53010.tar.xz +2019/12/04 | 24071 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2019/12/04 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2019/12/04 | 23619 | macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.pdf +2019/12/04 | 235 | macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.tex +2019/12/04 | 23343 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2019/12/04 | 22960 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2019/12/04 | 22618 | macros/luatex/generic/barracuda/test/test-code39/002-code39-test.pdf +2019/12/04 | 22539410 | systems/texlive/tlnet/install-tl.zip +2019/12/04 | 22044 | macros/luatex/generic/barracuda/test/test-code128/002-code128-test.pdf +2019/12/04 | 2147568 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2019/12/04 | 214153 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2019/12/04 | 21308 | systems/texlive/tlnet/archive/knowledge.r53015.tar.xz +2019/12/04 | 2089 | usergrps/dante/dtk/dtk-new-engines.clo +2019/12/04 | 20738 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2019/12/04 | 202428 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2019/12/04 | 19827 | macros/luatex/generic/barracuda/test/test-code39/003-code39-test.pdf +2019/12/04 | 198078 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2019/12/04 | 19792 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2019/12/04 | 19639 | macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex +2019/12/04 | 194997 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2019/12/04 | 1945839 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2019/12/04 | 193312 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2019/12/04 | 19312 | systems/texlive/tlnet/archive/jadetex.source.r53009.tar.xz +2019/12/04 | 193025 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2019/12/04 | 193025 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2019/12/04 | 19127 | macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.pdf +2019/12/04 | 1903 | usergrps/dante/dtk/dtk.xdy +2019/12/04 | 187298 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2019/12/04 | 18698797 | systems/texlive/tlnet/install-tl-windows.exe +2019/12/04 | 185299 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2019/12/04 | 184160 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2019/12/04 | 182759 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2019/12/04 | 17844 | systems/texlive/tlnet/archive/csquotes.r53014.tar.xz +2019/12/04 | 17762 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2019/12/04 | 177583 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2019/12/04 | 17697 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2019/12/04 | 17180 | usergrps/dante/dtk/dtk-full.clo +2019/12/04 | 169201 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2019/12/04 | 16881 | macros/luatex/generic/barracuda/src/lib-barcode/brcd-barcode.lua +2019/12/04 | 16839 | usergrps/dante/dtk/dtk.cls +2019/12/04 | 1679152 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2019/12/04 | 167846 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2019/12/04 | 166014 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2019/12/04 | 165964 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2019/12/04 | 162 | usergrps/dante/dtk/README.md +2019/12/04 | 160559 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2019/12/04 | 16042 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2019/12/04 | 15989735 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2019/12/04 | 15895 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2019/12/04 | 1586492 | systems/texlive/tlnet/archive/platex.doc.r53009.tar.xz +2019/12/04 | 156196 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53006.tar.xz +2019/12/04 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2019/12/04 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2019/12/04 | 15243 | macros/luatex/generic/barracuda/test/test-code39/004-code39-test.pdf +2019/12/04 | 152164 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2019/12/04 | 150090 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2019/12/04 | 14768 | systems/texlive/tlnet/archive/uplatex.r53009.tar.xz +2019/12/04 | 147095 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2019/12/04 | 146765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2019/12/04 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2019/12/04 | 14534 | macros/luatex/generic/barracuda/src/lib-driver/brcd-driver.lua +2019/12/04 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2019/12/04 | 14048 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2019/12/04 | 13960 | systems/texlive/tlnet/archive/latex-bin-dev.doc.r53009.tar.xz +2019/12/04 | 137170 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2019/12/04 | 1344 | usergrps/dante/dtk/dtk-old-engines.clo +2019/12/04 | 134268 | systems/texlive/tlnet/archive/archaeologie.source.r53011.tar.xz +2019/12/04 | 133203 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2019/12/04 | 1329051 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2019/12/04 | 13061 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2019/12/04 | 127172 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2019/12/04 | 124983 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty +2019/12/04 | 120776 | systems/texlive/tlnet/archive/platex.source.r53009.tar.xz +2019/12/04 | 1203298 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2019/12/04 | 1195623 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2019/12/04 | 116802 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2019/12/04 | 1157153 | systems/win32/miktex/tm/packages/archaeologie.tar.lzma +2019/12/04 | 1148309 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2019/12/04 | 1147832 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2019/12/04 | 1130 | macros/luatex/generic/barracuda/test/test-code128/02-05-pdfliteral.txt +2019/12/04 | 112995 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2019/12/04 | 1126 | macros/luatex/generic/barracuda/INSTALL.txt +2019/12/04 | 111236 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2019/12/04 | 109876 | systems/texlive/tlnet/archive/texlive-docindex.r53006.tar.xz +2019/12/04 | 108760 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2019/12/04 | 1070041 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2019/12/04 | 1069630 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2019/12/04 | 1068588 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2019/12/04 | 10601 | macros/luatex/generic/barracuda/test/test-ean/002-ean-test.pdf +2019/12/04 | 10444 | macros/luatex/generic/barracuda/doc/barracuda.tex +2019/12/04 | 104375 | usergrps/dante/dtk.zip +2019/12/04 | 1042663 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2019/12/04 | 1039 | usergrps/dante/dtk/dtk-author.clo +2019/12/04 | 102380 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2019/12/04 | 100682 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma 2019/12/03 | 9757 | macros/latex/contrib/biblatex-contrib/archaeologie/README.md -2019/12/03 | 96208 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2019/12/03 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2019/12/03 | 94638 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2019/12/03 | 94239 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2019/12/03 | 960510 | info/biblio/texbook3.bib +2019/12/03 | 959 | macros/latex/contrib/oberdiek/oberdiek-source.bib 2019/12/03 | 93584 | macros/latex/contrib/bookmark/bookmark.dtx -2019/12/03 | 93474 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma -2019/12/03 | 932887 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2019/12/03 | 92935 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2019/12/03 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma 2019/12/03 | 9188 | macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.tex -2019/12/03 | 91336 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2019/12/03 | 91154 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2019/12/03 | 87274 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2019/12/03 | 87219 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2019/12/03 | 86581 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2019/12/03 | 863198 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2019/12/03 | 85432 | systems/texlive/tlnet/archive/texlive-scripts.r52996.tar.xz -2019/12/03 | 8484 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2019/12/03 | 84534 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2019/12/03 | 85469 | macros/latex/contrib/oberdiek/bigintcalc.dtx 2019/12/03 | 839584 | systems/texlive/tlnet/archive/newtx.doc.r52998.tar.xz 2019/12/03 | 82709 | macros/latex/contrib/animate/animate.tex -2019/12/03 | 80505 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2019/12/03 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2019/12/03 | 816 | macros/latex/contrib/oberdiek/README.txt +2019/12/03 | 81401876 | systems/win32/w32tex/pgfcontrib.tar.xz 2019/12/03 | 7936 | macros/latex/contrib/knowledge/knowledge-configuration.dtx 2019/12/03 | 789186 | macros/latex/contrib/knowledge.zip -2019/12/03 | 77959 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2019/12/03 | 77934 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2019/12/03 | 77318 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2019/12/03 | 77827 | macros/latex/contrib/oberdiek/bitset.dtx 2019/12/03 | 765941 | systems/win32/miktex/tm/packages/graphicxsp.tar.lzma 2019/12/03 | 762366 | macros/latex/contrib/biblatex-contrib/archaeologie/archaeologie.dtx -2019/12/03 | 7504 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2019/12/03 | 73635 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma 2019/12/03 | 732 | systems/texlive/tlnet/archive/collection-latexrecommended.r53004.tar.xz -2019/12/03 | 72599 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2019/12/03 | 72571 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma 2019/12/03 | 72279 | systems/win32/miktex/tm/packages/pinoutikz.tar.lzma 2019/12/03 | 7172764 | systems/texlive/tlnet/archive/biblatex.doc.r53003.tar.xz -2019/12/03 | 71697 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2019/12/03 | 71514 | macros/latex/contrib/oberdiek/intcalc.dtx 2019/12/03 | 702619 | macros/latex/contrib/knowledge/knowledge.pdf -2019/12/03 | 70248 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2019/12/03 | 69608 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma 2019/12/03 | 69492 | systems/texlive/tlnet/archive/pinoutikz.doc.r52999.tar.xz -2019/12/03 | 69210 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2019/12/03 | 68676 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma -2019/12/03 | 67257 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2019/12/03 | 67250 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2019/12/03 | 67789 | macros/latex/contrib/oberdiek/ltxcmds.dtx 2019/12/03 | 6699 | macros/latex/contrib/knowledge/knowledge-example.tex 2019/12/03 | 655 | macros/latex/contrib/biblatex-contrib/biblatex-phys/README.md -2019/12/03 | 652 | systems/win32/miktex/tm/packages/next/pr.ini -2019/12/03 | 65023 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2019/12/03 | 63288 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2019/12/03 | 63273 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma -2019/12/03 | 63117 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2019/12/03 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2019/12/03 | 61657 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2019/12/03 | 61567 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2019/12/03 | 61218 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2019/12/03 | 60328 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2019/12/03 | 638223 | macros/latex/contrib/oberdiek/pmboxdraw.pdf +2019/12/03 | 63287436 | systems/win32/w32tex/biblatex-biber.tar.xz +2019/12/03 | 626116 | macros/latex/contrib/oberdiek/bitset.pdf +2019/12/03 | 61940 | macros/latex/contrib/oberdiek/atbegshi.dtx 2019/12/03 | 5976 | systems/texlive/tlnet/archive/collection-latexextra.r53003.tar.xz -2019/12/03 | 59458 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma -2019/12/03 | 58793 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2019/12/03 | 593914 | macros/latex/contrib/oberdiek/askinclude.pdf +2019/12/03 | 57997 | macros/latex/contrib/oberdiek/askinclude.dtx 2019/12/03 | 57640 | macros/latex/contrib/embedfile/embedfile.dtx -2019/12/03 | 575923 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma 2019/12/03 | 57320 | systems/texlive/tlnet/archive/xetexko.r53002.tar.xz -2019/12/03 | 57219 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2019/12/03 | 56619 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2019/12/03 | 56421 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2019/12/03 | 563306 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2019/12/03 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2019/12/03 | 54739 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2019/12/03 | 544015 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2019/12/03 | 5691 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2019/12/03 | 567831 | macros/latex/contrib/oberdiek/hologo.pdf +2019/12/03 | 555509 | systems/win32/w32tex/ChangeLog 2019/12/03 | 540 | systems/texlive/tlnet/archive/collection-latex.r53004.tar.xz -2019/12/03 | 53995 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2019/12/03 | 538878 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2019/12/03 | 53444 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma -2019/12/03 | 533455 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2019/12/03 | 52141 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2019/12/03 | 51771 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma -2019/12/03 | 51204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r52996.tar.xz -2019/12/03 | 512001 | systems/win32/miktex/tm/packages/files.csv.lzma -2019/12/03 | 511550 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2019/12/03 | 50827 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2019/12/03 | 50790 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2019/12/03 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2019/12/03 | 537938 | macros/latex/contrib/oberdiek/selinput.pdf +2019/12/03 | 517568 | macros/latex/contrib/oberdiek/resizegather.pdf 2019/12/03 | 503071 | install/macros/latex/contrib/bookmark.tds.zip -2019/12/03 | 498554 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma -2019/12/03 | 49771 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2019/12/03 | 49262 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2019/12/03 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2019/12/03 | 497867 | macros/latex/contrib/oberdiek/bmpsize.pdf 2019/12/03 | 481265 | macros/latex/contrib/bookmark.zip -2019/12/03 | 47978 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2019/12/03 | 47687 | macros/latex/contrib/oberdiek/kvsetkeys.dtx 2019/12/03 | 475757 | macros/latex/contrib/bookmark/bookmark.pdf +2019/12/03 | 46837 | macros/latex/contrib/oberdiek/pdfrender.dtx +2019/12/03 | 467906 | macros/latex/contrib/oberdiek/bigintcalc.pdf 2019/12/03 | 460970 | install/macros/latex/contrib/biblatex-contrib/biblatex-phys.tds.zip +2019/12/03 | 46055 | macros/latex/contrib/oberdiek/hycolor.dtx 2019/12/03 | 459931 | macros/latex/contrib/biblatex-contrib/biblatex-phys.zip -2019/12/03 | 45810 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2019/12/03 | 45740 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2019/12/03 | 457346 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2019/12/03 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2019/12/03 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2019/12/03 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2019/12/03 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc -2019/12/03 | 45589 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2019/12/03 | 45464 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma 2019/12/03 | 4533088 | systems/texlive/tlnet/archive/newtx.r52998.tar.xz -2019/12/03 | 449940 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma -2019/12/03 | 44982 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma 2019/12/03 | 448675 | macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.pdf 2019/12/03 | 448456 | systems/texlive/tlnet/archive/hyperref.source.r53004.tar.xz 2019/12/03 | 44697 | macros/latex/contrib/knowledge/knowledge-utils.dtx -2019/12/03 | 43438 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2019/12/03 | 42943 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2019/12/03 | 42573 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2019/12/03 | 41878 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2019/12/03 | 41862 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma -2019/12/03 | 40989 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma -2019/12/03 | 40736 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2019/12/03 | 43831 | macros/latex/contrib/oberdiek/alphalph.dtx +2019/12/03 | 431640 | macros/latex/contrib/oberdiek/intcalc.pdf 2019/12/03 | 406694 | install/macros/latex/contrib/embedfile.tds.zip -2019/12/03 | 39846 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2019/12/03 | 406524 | macros/latex/contrib/oberdiek/atbegshi.pdf +2019/12/03 | 40332 | macros/latex/contrib/oberdiek/atveryend.dtx +2019/12/03 | 401743 | macros/latex/contrib/oberdiek/oberdiek.pdf 2019/12/03 | 397370 | macros/latex/contrib/embedfile.zip -2019/12/03 | 3947419 | systems/texlive/tlnet/install-tl-unx.tar.gz +2019/12/03 | 394188 | macros/latex/contrib/oberdiek/ltxcmds.pdf +2019/12/03 | 39389 | macros/latex/contrib/oberdiek/pdfescape.dtx 2019/12/03 | 3925892 | macros/latex/contrib/animate/animate.pdf -2019/12/03 | 39220 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2019/12/03 | 3916 | info/biblio/texbook3.ltx 2019/12/03 | 391565 | macros/latex/contrib/embedfile/embedfile.pdf -2019/12/03 | 391460 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2019/12/03 | 38864 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2019/12/03 | 387514 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma +2019/12/03 | 382955 | macros/latex/contrib/oberdiek/pdfrender.pdf 2019/12/03 | 382257 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem.pdf +2019/12/03 | 380814 | macros/latex/contrib/oberdiek/atveryend.pdf 2019/12/03 | 3792 | systems/texlive/tlnet/archive/logreq.doc.r53003.tar.xz -2019/12/03 | 366 | systems/win32/miktex/tm/packages/pr.ini -2019/12/03 | 36634 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2019/12/03 | 36378 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2019/12/03 | 356321 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2019/12/03 | 354499 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma -2019/12/03 | 35215 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2019/12/03 | 34845 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2019/12/03 | 34835 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2019/12/03 | 33548 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma -2019/12/03 | 33399 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2019/12/03 | 375389 | macros/latex/contrib/oberdiek/kvsetkeys.pdf +2019/12/03 | 364633 | macros/latex/contrib/oberdiek/hycolor.pdf +2019/12/03 | 35799 | macros/latex/contrib/oberdiek/hypdoc.dtx +2019/12/03 | 354 | macros/latex/contrib/mleftright/README.md +2019/12/03 | 354313 | macros/latex/contrib/oberdiek/fibnum.pdf +2019/12/03 | 354229 | macros/latex/contrib/oberdiek/alphalph.pdf +2019/12/03 | 352081 | macros/latex/contrib/oberdiek/soulutf8.pdf +2019/12/03 | 35155 | macros/latex/contrib/oberdiek/soulutf8.dtx +2019/12/03 | 347238 | macros/latex/contrib/oberdiek/thepdfnumber.pdf +2019/12/03 | 346746 | macros/latex/contrib/oberdiek/pdfescape.pdf 2019/12/03 | 331355 | systems/win32/miktex/tm/packages/csquotes.tar.lzma +2019/12/03 | 331314 | macros/latex/contrib/oberdiek/tabularht.pdf +2019/12/03 | 330129 | macros/latex/contrib/oberdiek/setouterhbox.pdf +2019/12/03 | 32949 | macros/latex/contrib/oberdiek/thepdfnumber.dtx 2019/12/03 | 328 | macros/latex/contrib/bookmark/README.md -2019/12/03 | 328875 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2019/12/03 | 327297 | macros/latex/contrib/oberdiek/accsupp.pdf +2019/12/03 | 326895 | macros/latex/contrib/oberdiek/refcount.pdf 2019/12/03 | 325872 | systems/texlive/tlnet/archive/oberdiek.source.r53004.tar.xz 2019/12/03 | 3237505 | install/macros/latex/contrib/animate.tds.zip 2019/12/03 | 3235221 | macros/latex/contrib/animate.zip -2019/12/03 | 32349 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma 2019/12/03 | 323255 | systems/win32/miktex/tm/packages/luatexko.tar.lzma -2019/12/03 | 32264 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2019/12/03 | 321500 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma 2019/12/03 | 3213732 | systems/texlive/tlnet/archive/hyperref.doc.r53004.tar.xz 2019/12/03 | 3212 | systems/texlive/tlnet/archive/logreq.r53003.tar.xz -2019/12/03 | 31292 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2019/12/03 | 31153 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2019/12/03 | 30989 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2019/12/03 | 308660 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2019/12/03 | 30238 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2019/12/03 | 319986 | macros/latex/contrib/oberdiek/pdfcolparallel.pdf +2019/12/03 | 319844 | macros/latex/contrib/oberdiek/hypdoc.pdf +2019/12/03 | 318743 | macros/latex/contrib/oberdiek/gettitlestring.pdf +2019/12/03 | 318562 | macros/latex/contrib/oberdiek/engord.pdf +2019/12/03 | 317677 | macros/latex/contrib/oberdiek/hypdestopt.pdf +2019/12/03 | 317164 | macros/latex/contrib/oberdiek/rotchiffre.pdf +2019/12/03 | 316822 | macros/latex/contrib/oberdiek/eolgrab.pdf +2019/12/03 | 315992 | install/macros/latex/contrib/mleftright.tds.zip +2019/12/03 | 314990 | macros/latex/contrib/oberdiek/iflang.pdf +2019/12/03 | 314941 | install/macros/latex/contrib/grfext.tds.zip +2019/12/03 | 314659 | macros/latex/contrib/oberdiek/rerunfilecheck.pdf +2019/12/03 | 312192 | macros/latex/contrib/oberdiek/pagesel.pdf +2019/12/03 | 311600 | macros/latex/contrib/oberdiek/pagegrid.pdf +2019/12/03 | 311564 | macros/latex/contrib/oberdiek/pdfcrypt.pdf +2019/12/03 | 31024 | macros/latex/contrib/oberdiek/tabularht.dtx +2019/12/03 | 309397 | macros/latex/contrib/mleftright/mleftright.pdf +2019/12/03 | 309305 | macros/latex/contrib/grfext/grfext.pdf +2019/12/03 | 3080 | macros/latex/contrib/oberdiek/oberdiek.ins +2019/12/03 | 308006 | macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf +2019/12/03 | 307773 | macros/latex/contrib/oberdiek/protecteddef.pdf +2019/12/03 | 305359 | macros/latex/contrib/oberdiek/holtxdoc.pdf +2019/12/03 | 304863 | macros/latex/contrib/oberdiek/enparen.pdf +2019/12/03 | 303828 | macros/latex/contrib/oberdiek/telprint.pdf +2019/12/03 | 30321 | macros/latex/contrib/oberdiek/accsupp.dtx +2019/12/03 | 302693 | macros/latex/contrib/oberdiek/pdfcol.pdf 2019/12/03 | 300508 | systems/texlive/tlnet/archive/luatexko.doc.r53001.tar.xz -2019/12/03 | 29689 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2019/12/03 | 300241 | macros/latex/contrib/oberdiek/etexcmds.pdf +2019/12/03 | 299858 | macros/latex/contrib/oberdiek/hyphsubst.pdf +2019/12/03 | 299072 | macros/latex/contrib/oberdiek/pdflscape.pdf +2019/12/03 | 29904 | macros/latex/contrib/oberdiek/refcount.dtx +2019/12/03 | 298873 | macros/latex/contrib/oberdiek/catchfile.pdf +2019/12/03 | 29868 | macros/latex/contrib/oberdiek/oberdiek.tex +2019/12/03 | 298597 | macros/latex/contrib/oberdiek/listingsutf8.pdf +2019/12/03 | 297356 | install/macros/latex/contrib/letltxmacro.tds.zip +2019/12/03 | 295928 | macros/latex/contrib/oberdiek/picture.pdf +2019/12/03 | 295786 | macros/latex/contrib/oberdiek/kvdefinekeys.pdf +2019/12/03 | 29459 | macros/latex/contrib/oberdiek/setouterhbox.dtx +2019/12/03 | 294403 | macros/latex/contrib/oberdiek/pdfcolfoot.pdf 2019/12/03 | 293696 | systems/win32/miktex/tm/packages/xetexko.tar.lzma -2019/12/03 | 29295 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2019/12/03 | 29239 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2019/12/03 | 293548 | macros/latex/contrib/oberdiek/settobox.pdf +2019/12/03 | 293225 | macros/latex/contrib/oberdiek/hopatch.pdf +2019/12/03 | 293168 | macros/latex/contrib/oberdiek/aliascnt.pdf 2019/12/03 | 291825 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem-acs.pdf -2019/12/03 | 29145 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2019/12/03 | 28711 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2019/12/03 | 281675 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2019/12/03 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2019/12/03 | 27819 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2019/12/03 | 276599 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2019/12/03 | 291576 | install/macros/latex/contrib/infwarerr.tds.zip +2019/12/03 | 290791 | macros/latex/contrib/letltxmacro/letltxmacro.pdf +2019/12/03 | 289988 | macros/latex/contrib/oberdiek/uniquecounter.pdf +2019/12/03 | 289747 | macros/latex/contrib/oberdiek/hypbmsec.pdf +2019/12/03 | 28916 | macros/latex/contrib/oberdiek/hypdestopt.dtx +2019/12/03 | 288 | macros/latex/contrib/letltxmacro/README.md +2019/12/03 | 288654 | macros/latex/contrib/oberdiek/chemarr.pdf +2019/12/03 | 285979 | macros/latex/contrib/infwarerr/infwarerr.pdf +2019/12/03 | 285266 | macros/latex/contrib/oberdiek/auxhook.pdf +2019/12/03 | 285090 | macros/latex/contrib/oberdiek/hypgotoe.pdf +2019/12/03 | 284627 | macros/latex/contrib/oberdiek/colonequals.pdf +2019/12/03 | 284122 | macros/latex/contrib/oberdiek/hypcap.pdf +2019/12/03 | 283891 | macros/latex/contrib/oberdiek/scrindex.pdf +2019/12/03 | 283637 | macros/latex/contrib/oberdiek/flags.pdf +2019/12/03 | 281746 | macros/latex/contrib/oberdiek/stackrel.pdf +2019/12/03 | 28136 | macros/latex/contrib/oberdiek/pagegrid.dtx +2019/12/03 | 27847 | macros/latex/contrib/oberdiek/pdfcrypt.dtx +2019/12/03 | 277765 | macros/latex/contrib/oberdiek/stampinclude.pdf 2019/12/03 | 276273 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem-biochem.pdf 2019/12/03 | 275766 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem-angew.pdf +2019/12/03 | 274864 | macros/latex/contrib/oberdiek/centernot.pdf +2019/12/03 | 274422 | macros/latex/contrib/oberdiek/twoopt.pdf 2019/12/03 | 273290 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem-rsc.pdf -2019/12/03 | 271812 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2019/12/03 | 272610 | macros/latex/contrib/oberdiek/atenddvi.pdf +2019/12/03 | 27168 | macros/latex/contrib/oberdiek/rerunfilecheck.dtx +2019/12/03 | 271621 | macros/latex/contrib/oberdiek/classlist.pdf 2019/12/03 | 2700 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-angew.cbx -2019/12/03 | 26977 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2019/12/03 | 26799 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2019/12/03 | 26661 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2019/12/03 | 26509 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma -2019/12/03 | 26177 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2019/12/03 | 269326 | macros/latex/contrib/oberdiek/dvipscol.pdf +2019/12/03 | 26867 | macros/latex/contrib/oberdiek/pdfcolparallel.dtx +2019/12/03 | 265294 | macros/latex/contrib/oberdiek/ifdraft.pdf +2019/12/03 | 26388 | macros/latex/contrib/oberdiek/pdfcol.dtx 2019/12/03 | 2614 | macros/latex/contrib/knowledge/makefile -2019/12/03 | 2579407 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2019/12/03 | 25326 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2019/12/03 | 26109 | macros/latex/contrib/oberdiek/enparen.dtx +2019/12/03 | 25810 | macros/latex/contrib/oberdiek/fibnum.dtx +2019/12/03 | 25691 | macros/latex/contrib/oberdiek/rotchiffre.dtx +2019/12/03 | 254709 | macros/latex/contrib/oberdiek/tabularkv.pdf +2019/12/03 | 25308 | macros/latex/contrib/oberdiek/iflang.dtx +2019/12/03 | 25146 | macros/latex/contrib/oberdiek/hypbmsec.dtx +2019/12/03 | 25097 | macros/latex/contrib/oberdiek/eolgrab.dtx 2019/12/03 | 2500 | systems/texlive/tlnet/archive/pinoutikz.r52999.tar.xz +2019/12/03 | 24960723 | install/macros/latex/contrib/oberdiek.tds.zip +2019/12/03 | 24890 | macros/latex/contrib/oberdiek/telprint.dtx 2019/12/03 | 248023 | systems/win32/miktex/tm/packages/biblatex-apa6.tar.lzma -2019/12/03 | 247498 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2019/12/03 | 246890 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2019/12/03 | 246455 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2019/12/03 | 2459482 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma -2019/12/03 | 24073 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2019/12/03 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2019/12/03 | 24771 | macros/latex/contrib/oberdiek/resizegather.dtx +2019/12/03 | 24735 | macros/latex/contrib/oberdiek/selinput.dtx +2019/12/03 | 24209 | macros/latex/contrib/oberdiek/pagesel.dtx +2019/12/03 | 24106 | macros/latex/contrib/oberdiek/engord.dtx 2019/12/03 | 236080 | systems/texlive/tlnet/archive/xetexko.doc.r53002.tar.xz -2019/12/03 | 23343 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2019/12/03 | 22960 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2019/12/03 | 23458 | macros/latex/contrib/mleftright/mleftright.dtx +2019/12/03 | 23136 | macros/latex/contrib/oberdiek/gettitlestring.dtx +2019/12/03 | 23072 | macros/latex/contrib/infwarerr/infwarerr.dtx 2019/12/03 | 2289 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-biochem.cbx +2019/12/03 | 22835 | macros/latex/contrib/letltxmacro/letltxmacro.dtx +2019/12/03 | 22787 | macros/latex/contrib/oberdiek/pdflscape.dtx 2019/12/03 | 226776 | systems/texlive/tlnet/archive/biblatex-apa6.doc.r53000.tar.xz -2019/12/03 | 22539406 | systems/texlive/tlnet/install-tl.zip +2019/12/03 | 22481 | macros/latex/contrib/grfext/grfext.dtx 2019/12/03 | 2223 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-acs.cbx 2019/12/03 | 2221 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-rsc.cbx +2019/12/03 | 22212 | macros/latex/contrib/oberdiek/catchfile.dtx 2019/12/03 | 2204 | macros/latex/contrib/biblatex-contrib/archaeologie/Makefile 2019/12/03 | 21760 | systems/texlive/tlnet/archive/luatexko.r53001.tar.xz 2019/12/03 | 215468 | systems/texlive/tlnet/archive/biblatex.r53003.tar.xz -2019/12/03 | 2148016 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz -2019/12/03 | 214150 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2019/12/03 | 21476 | macros/latex/contrib/oberdiek/hypcap.dtx +2019/12/03 | 21471 | macros/latex/contrib/oberdiek/holtxdoc.dtx +2019/12/03 | 21343 | macros/latex/contrib/oberdiek/hyphsubst.dtx 2019/12/03 | 20988 | systems/texlive/tlnet/archive/biblatex-apa6.r53000.tar.xz -2019/12/03 | 20737 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2019/12/03 | 20812 | macros/latex/contrib/oberdiek/protecteddef.dtx +2019/12/03 | 20806 | macros/latex/contrib/oberdiek/hopatch.dtx +2019/12/03 | 20736 | macros/latex/contrib/oberdiek/picture.dtx +2019/12/03 | 20692 | macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx +2019/12/03 | 20366 | macros/latex/contrib/oberdiek/etexcmds.dtx 2019/12/03 | 2025 | macros/latex/contrib/knowledge/README.md -2019/12/03 | 202427 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2019/12/03 | 198079 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma -2019/12/03 | 19790 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2019/12/03 | 194996 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2019/12/03 | 20085 | macros/latex/contrib/oberdiek/uniquecounter.dtx +2019/12/03 | 20045 | macros/latex/contrib/oberdiek/settobox.dtx 2019/12/03 | 19463 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-acs.bbx -2019/12/03 | 1945837 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2019/12/03 | 193314 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2019/12/03 | 192916 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2019/12/03 | 192916 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2019/12/03 | 19329 | macros/latex/contrib/oberdiek/pdfcolfoot.dtx +2019/12/03 | 19267 | macros/latex/contrib/oberdiek/scrindex.dtx +2019/12/03 | 19139 | macros/latex/contrib/oberdiek/listingsutf8.dtx 2019/12/03 | 18753 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-biochem.bbx -2019/12/03 | 187296 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2019/12/03 | 18700220 | systems/texlive/tlnet/install-tl-windows.exe -2019/12/03 | 185298 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2019/12/03 | 184159 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2019/12/03 | 182759 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2019/12/03 | 18499 | macros/latex/contrib/oberdiek/stampinclude.dtx 2019/12/03 | 182368 | systems/texlive/tlnet/archive/erewhon-math.r52997.tar.xz +2019/12/03 | 17957 | macros/latex/contrib/oberdiek/hypgotoe.dtx 2019/12/03 | 17830 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-angew.bbx -2019/12/03 | 17763 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2019/12/03 | 177583 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2019/12/03 | 17699 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2019/12/03 | 17618 | macros/latex/contrib/oberdiek/auxhook.dtx 2019/12/03 | 1760 | systems/texlive/tlnet/archive/collection-fontsextra.r52997.tar.xz 2019/12/03 | 1759 | macros/latex/contrib/knowledge/knowledge.ins -2019/12/03 | 169201 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma -2019/12/03 | 1679149 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2019/12/03 | 167844 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2019/12/03 | 17107 | macros/latex/contrib/oberdiek/kvdefinekeys.dtx +2019/12/03 | 16829 | macros/latex/contrib/oberdiek/twoopt.dtx +2019/12/03 | 16789 | macros/latex/contrib/oberdiek/flags.dtx +2019/12/03 | 16710 | macros/latex/contrib/oberdiek/atenddvi.dtx +2019/12/03 | 166 | macros/latex/contrib/infwarerr/README.md 2019/12/03 | 16680 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-rsc.bbx -2019/12/03 | 166013 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma -2019/12/03 | 165965 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2019/12/03 | 160558 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2019/12/03 | 16041 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2019/12/03 | 15989166 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2019/12/03 | 15895 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2019/12/03 | 16633 | macros/latex/contrib/oberdiek/classlist.dtx +2019/12/03 | 16566 | macros/latex/contrib/oberdiek/aliascnt.dtx +2019/12/03 | 16564 | macros/latex/contrib/oberdiek/colonequals.dtx 2019/12/03 | 157894 | macros/latex/contrib/knowledge/knowledge-code.dtx -2019/12/03 | 156072 | systems/texlive/tlnet/archive/texlive-docindex.doc.r52996.tar.xz -2019/12/03 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2019/12/03 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 2019/12/03 | 152436 | macros/latex/contrib/knowledge/knowledge.tex 2019/12/03 | 1524215 | install/macros/latex/contrib/biblatex-contrib/biblatex-chem.tds.zip 2019/12/03 | 1522445 | macros/latex/contrib/biblatex-contrib/biblatex-chem.zip -2019/12/03 | 152163 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2019/12/03 | 150090 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2019/12/03 | 15169 | macros/latex/contrib/oberdiek/ifdraft.dtx +2019/12/03 | 15084 | macros/latex/contrib/oberdiek/centernot.dtx 2019/12/03 | 148 | macros/latex/contrib/embedfile/README.md -2019/12/03 | 147095 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2019/12/03 | 146762 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2019/12/03 | 147230 | macros/latex/contrib/oberdiek/pmboxdraw.dtx 2019/12/03 | 1464048 | systems/texlive/tlnet/archive/erewhon-math.doc.r52997.tar.xz 2019/12/03 | 1460 | macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.cbx -2019/12/03 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2019/12/03 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2019/12/03 | 14050 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2019/12/03 | 14185 | macros/latex/contrib/oberdiek/dvipscol.dtx 2019/12/03 | 139242 | macros/latex/contrib/animate/animate.sty 2019/12/03 | 1387 | macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx -2019/12/03 | 137170 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2019/12/03 | 137 | macros/latex/contrib/grfext/README.md +2019/12/03 | 13782 | macros/latex/contrib/oberdiek/stackrel.dtx +2019/12/03 | 13772 | macros/latex/contrib/oberdiek/chemarr.dtx 2019/12/03 | 13519 | macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.bib -2019/12/03 | 133204 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2019/12/03 | 1329052 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2019/12/03 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2019/12/03 | 127172 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2019/12/03 | 13344 | macros/latex/contrib/oberdiek/tabularkv.dtx +2019/12/03 | 132026440 | systems/win32/w32tex/context.tar.xz 2019/12/03 | 12670 | macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.bbx 2019/12/03 | 12421 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem.tex -2019/12/03 | 1203294 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2019/12/03 | 1195624 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2019/12/03 | 116802 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2019/12/03 | 11895 | macros/latex/contrib/oberdiek/oberdiek-bundle.bib 2019/12/03 | 115304 | systems/texlive/tlnet/archive/oberdiek.r53004.tar.xz 2019/12/03 | 1151924 | macros/latex/contrib/biblatex-contrib/archaeologie.zip -2019/12/03 | 1148234 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2019/12/03 | 1147394 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2019/12/03 | 112994 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2019/12/03 | 111236 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2019/12/03 | 115113 | macros/latex/contrib/oberdiek/hologo.dtx 2019/12/03 | 10993 | macros/latex/contrib/animate/ChangeLog -2019/12/03 | 109880 | systems/texlive/tlnet/archive/texlive-docindex.r52996.tar.xz 2019/12/03 | 108788 | systems/texlive/tlnet/archive/hyperref.r53004.tar.xz -2019/12/03 | 108760 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2019/12/03 | 1069506 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma -2019/12/03 | 1069220 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2019/12/03 | 1068590 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma 2019/12/03 | 1062129 | macros/latex/contrib/biblatex-contrib/archaeologie/archaeologie.pdf +2019/12/03 | 105963 | macros/latex/contrib/oberdiek/bmpsize.dtx 2019/12/03 | 10519844 | systems/texlive/tlnet/archive/oberdiek.doc.r53004.tar.xz -2019/12/03 | 1042663 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2019/12/03 | 102380 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2019/12/03 | 100681 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma 2019/12/02 | 98923 | macros/xetex/generic/xetexko/xetexko-space.sty 2019/12/02 | 98102 | systems/win32/miktex/tm/packages/hvqrurl.tar.lzma 2019/12/02 | 980052 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma @@ -313,9 +579,7 @@ 2019/12/02 | 5987 | macros/latex/contrib/biblatex-contrib/biblatex-apa6/galician-apa6.lbx 2019/12/02 | 57524 | systems/texlive/tlnet/archive/tracklang.source.r52991.tar.xz 2019/12/02 | 5737 | macros/latex/contrib/biblatex-contrib/biblatex-apa6/russian-apa6.lbx -2019/12/02 | 5651 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2019/12/02 | 5649 | macros/latex/contrib/biblatex-contrib/biblatex-apa6/slovene-apa6.lbx -2019/12/02 | 555313 | systems/win32/w32tex/ChangeLog 2019/12/02 | 5410 | macros/xetex/generic/xetexko/ChangeLog 2019/12/02 | 5395 | macros/latex/contrib/biblatex-contrib/biblatex-apa6/danish-apa6.lbx 2019/12/02 | 5378 | macros/latex/contrib/biblatex-contrib/biblatex-apa6/french-apa6.lbx @@ -411,7 +675,6 @@ 2019/12/01 | 827 | support/texlab/src/range.rs 2019/12/01 | 825 | support/texlab/tests/scenarios/folding/bar.bib 2019/12/01 | 815539 | graphics/pgf/contrib/circuitikz/doc/circuitikzmanual.pdf -2019/12/01 | 81401856 | systems/win32/w32tex/pgfcontrib.tar.xz 2019/12/01 | 808 | support/texlab/tests/scenarios/symbol/workspace/foo.aux 2019/12/01 | 8005 | support/texlab/src/symbol/mod.rs 2019/12/01 | 793 | support/texlab/src/action.rs @@ -472,7 +735,6 @@ 2019/12/01 | 63 | support/texlab/tests/scenarios/diagnostics/build/foo.tex 2019/12/01 | 637 | support/texlab/tests/test_hover_bibtex_field.rs 2019/12/01 | 6358326 | systems/texlive/tlnet/update-tlmgr-r52975.sh -2019/12/01 | 63288264 | systems/win32/w32tex/biblatex-biber.tar.xz 2019/12/01 | 6323 | fonts/erewhon-math/fourier-otf.sty 2019/12/01 | 630 | macros/generic/tracklang/samples/regions/sample-regions2-map.tex 2019/12/01 | 62 | support/texlab/tests/scenarios/symbol/hierarchical/theorem.aux @@ -882,7 +1144,6 @@ 2019/12/01 | 178 | macros/generic/tracklang/samples/animals/sample-animals2-de3.tex 2019/12/01 | 1776 | support/texlab/tests/test_folding.rs 2019/12/01 | 1766 | support/texlab/crates/futures_boxed/src/lib.rs -2019/12/01 | 176357 | macros/luatex/generic/barracuda.zip 2019/12/01 | 1762 | support/texlab/src/symbol/latex_section/float.rs 2019/12/01 | 173 | macros/generic/tracklang/samples/animals/sample-animals2-de.tex 2019/12/01 | 1737 | support/texlab/crates/bibutils_sys/src/intlist.h @@ -1001,7 +1262,6 @@ 2019/12/01 | 0 | support/texlab/tests/scenarios/completion/latex/include/bar.tex 2019/11/30 | 9516 | macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua 2019/11/30 | 9352 | macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md -2019/11/30 | 891 | macros/luatex/generic/barracuda/INSTALL.txt 2019/11/30 | 8804 | macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty 2019/11/30 | 8705 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx 2019/11/30 | 856328 | systems/win32/miktex/tm/packages/inputenx.tar.lzma @@ -1056,7 +1316,6 @@ 2019/11/30 | 5773 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx 2019/11/30 | 5587 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx 2019/11/30 | 5586 | macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty -2019/11/30 | 54826 | macros/luatex/generic/barracuda/barracuda.pdf 2019/11/30 | 5336 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx 2019/11/30 | 52936 | systems/texlive/tlnet/archive/reledmac.r52970.tar.xz 2019/11/30 | 528139 | macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf @@ -1097,7 +1356,6 @@ 2019/11/30 | 2686 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx 2019/11/30 | 2673 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx 2019/11/30 | 257936 | systems/texlive/tlnet/archive/ulthese.doc.r52972.tar.xz -2019/11/30 | 2400 | macros/luatex/generic/barracuda/README.md 2019/11/30 | 22392 | systems/win32/miktex/tm/packages/miktex-misc.tar.lzma 2019/11/30 | 218781 | macros/latex/contrib/curve2e/curve2e.dtx 2019/11/30 | 2086 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx @@ -1111,24 +1369,18 @@ 2019/11/30 | 1391 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx 2019/11/30 | 135817 | systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm 2019/11/30 | 132911 | macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex -2019/11/30 | 132040152 | systems/win32/w32tex/context.tar.xz 2019/11/30 | 1290 | macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-examples.bib 2019/11/30 | 12851568 | systems/win32/w32tex/pdftex-w32.tar.xz 2019/11/30 | 12128 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx 2019/11/30 | 11708 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def 2019/11/30 | 11663 | macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx 2019/11/30 | 10912021 | systems/win32/miktex/tm/packages/oberdiek.tar.lzma -2019/11/29 | 98835 | macros/latex/contrib/oberdiek/classlist.pdf -2019/11/29 | 97925 | macros/latex/contrib/oberdiek/atenddvi.pdf 2019/11/29 | 9776 | macros/latex/contrib/biblatex-contrib/biblatex-apa/russian-apa.lbx 2019/11/29 | 9768 | macros/latex/contrib/biblatex-contrib/biblatex-apa/slovene-apa.lbx 2019/11/29 | 9459 | macros/latex/contrib/biblatex-contrib/biblatex-apa/danish-apa.lbx -2019/11/29 | 94401 | macros/latex/contrib/oberdiek/chemarr.pdf 2019/11/29 | 941845 | install/macros/latex/contrib/inputenx.tds.zip 2019/11/29 | 9414 | macros/latex/contrib/biblatex-contrib/biblatex-apa/italian-apa.lbx -2019/11/29 | 94072 | macros/latex/contrib/oberdiek/intcalc.dtx 2019/11/29 | 9356 | macros/latex/contrib/biblatex-contrib/biblatex-apa/french-apa.lbx -2019/11/29 | 92764 | macros/latex/contrib/oberdiek/ifdraft.pdf 2019/11/29 | 9152 | macros/latex/contrib/biblatex-contrib/biblatex-apa/nynorsk-apa.lbx 2019/11/29 | 9142 | macros/latex/contrib/biblatex-contrib/biblatex-apa/brazilian-apa.lbx 2019/11/29 | 9136 | macros/latex/contrib/biblatex-contrib/biblatex-apa/norwegian-apa.lbx @@ -1137,27 +1389,21 @@ 2019/11/29 | 9114 | macros/latex/contrib/biblatex-contrib/biblatex-apa/english-apa.lbx 2019/11/29 | 9108 | macros/latex/contrib/biblatex-contrib/biblatex-apa/portuguese-apa.lbx 2019/11/29 | 9093 | macros/latex/contrib/biblatex-contrib/biblatex-apa/dutch-apa.lbx -2019/11/29 | 90419 | macros/latex/contrib/oberdiek/dvipscol.pdf 2019/11/29 | 8999 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty -2019/11/29 | 89913 | macros/latex/contrib/oberdiek/tabularkv.pdf 2019/11/29 | 8988 | macros/latex/contrib/biblatex-contrib/biblatex-apa/british-apa.lbx -2019/11/29 | 89612 | macros/latex/contrib/oberdiek/ltxcmds.dtx 2019/11/29 | 8956 | macros/latex/contrib/biblatex-contrib/biblatex-apa/swedish-apa.lbx 2019/11/29 | 8815120 | systems/win32/miktex/tm/packages/reledmac.tar.lzma 2019/11/29 | 875227 | macros/latex/contrib/inputenx/inputenx.pdf 2019/11/29 | 8558 | macros/latex/contrib/tuda-ci/README.md 2019/11/29 | 852539 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf 2019/11/29 | 845360 | macros/latex/contrib/inputenx.zip -2019/11/29 | 83912 | macros/latex/contrib/oberdiek/askinclude.dtx 2019/11/29 | 825794 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf 2019/11/29 | 819560 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf -2019/11/29 | 816 | macros/latex/contrib/oberdiek/README.txt 2019/11/29 | 7761428 | systems/win32/w32tex/ptex-w32.tar.xz 2019/11/29 | 7546 | macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty 2019/11/29 | 738022 | install/macros/latex/contrib/zref.tds.zip 2019/11/29 | 7187 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex 2019/11/29 | 701783 | macros/latex/contrib/zref.zip -2019/11/29 | 68675 | macros/latex/contrib/oberdiek/atbegshi.dtx 2019/11/29 | 686493 | macros/latex/contrib/zref/zref.pdf 2019/11/29 | 6641 | macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo 2019/11/29 | 6596 | macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo @@ -1165,12 +1411,9 @@ 2019/11/29 | 64265 | macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.pdf 2019/11/29 | 6368459 | macros/latex/contrib/tuda-ci.zip 2019/11/29 | 622092 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf -2019/11/29 | 62065 | macros/latex/contrib/oberdiek/hycolor.dtx 2019/11/29 | 590864 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf 2019/11/29 | 590728 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf 2019/11/29 | 58 | systems/mac/mactex/MacTeXtras-20191129.zip.md5 -2019/11/29 | 58761 | macros/latex/contrib/oberdiek/pdfescape.dtx -2019/11/29 | 58683 | macros/latex/contrib/oberdiek/kvsetkeys.dtx 2019/11/29 | 5821 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex 2019/11/29 | 5802 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls 2019/11/29 | 576177 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf @@ -1179,27 +1422,19 @@ 2019/11/29 | 5620 | macros/latex/contrib/tuda-ci/tex/tudarules.sty 2019/11/29 | 5607 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex 2019/11/29 | 551525 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf -2019/11/29 | 54297 | macros/latex/contrib/oberdiek/pdfrender.dtx -2019/11/29 | 53171 | macros/latex/contrib/oberdiek/alphalph.dtx 2019/11/29 | 509662 | install/macros/latex/contrib/kvoptions.tds.zip -2019/11/29 | 49578 | macros/latex/contrib/oberdiek/soulutf8.dtx -2019/11/29 | 494974 | macros/latex/contrib/oberdiek/pmboxdraw.pdf 2019/11/29 | 488653 | macros/latex/contrib/kvoptions/kvoptions.pdf 2019/11/29 | 4734 | macros/latex/contrib/tuda-ci/tex/tudacolors.sty 2019/11/29 | 4633 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex 2019/11/29 | 4443 | macros/latex/contrib/tuda-ci/tex/tudacolors.def -2019/11/29 | 43793 | macros/latex/contrib/oberdiek/atveryend.dtx 2019/11/29 | 4330 | macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty 2019/11/29 | 430208 | systems/texlive/tlnet/archive/pdftosrc.x86_64-solaris.r50150.tar.xz 2019/11/29 | 421896 | systems/texlive/tlnet/archive/pdftosrc.x86_64-linuxmusl.r50176.tar.xz 2019/11/29 | 417568 | systems/texlive/tlnet/archive/pdftosrc.i386-solaris.r50150.tar.xz -2019/11/29 | 41469 | macros/latex/contrib/oberdiek/refcount.dtx 2019/11/29 | 409433 | macros/latex/contrib/inputenx/inputenx.dtx -2019/11/29 | 40400 | macros/latex/contrib/oberdiek/thepdfnumber.dtx 2019/11/29 | 40169 | macros/latex/contrib/magicnum/magicnum.dtx 2019/11/29 | 39744 | systems/texlive/tlnet/archive/a2ping.doc.r52964.tar.xz 2019/11/29 | 393 | macros/latex/contrib/zref/README.md -2019/11/29 | 393599 | macros/latex/contrib/oberdiek/hologo.pdf 2019/11/29 | 392713 | macros/latex/contrib/biblatex-contrib/biblatex-apa.zip 2019/11/29 | 390184 | systems/texlive/tlnet/archive/pdftosrc.i386-linux.r50281.tar.xz 2019/11/29 | 3893 | macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty @@ -1209,126 +1444,55 @@ 2019/11/29 | 376192 | systems/texlive/tlnet/archive/pdftosrc.x86_64-darwin.r50150.tar.xz 2019/11/29 | 374884 | systems/texlive/tlnet/archive/pdftosrc.aarch64-linux.r50150.tar.xz 2019/11/29 | 3704 | systems/texlive/tlnet/archive/unicode-data.doc.r52961.tar.xz -2019/11/29 | 36797 | macros/latex/contrib/oberdiek/hypdoc.dtx 2019/11/29 | 36638 | macros/latex/contrib/tuda-ci/tex/tudapub.cls 2019/11/29 | 366260 | systems/texlive/tlnet/archive/pdftosrc.x86_64-cygwin.r50889.tar.xz 2019/11/29 | 3623 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco -2019/11/29 | 3621 | macros/luatex/generic/barracuda/example/01-latex-code39.pdf 2019/11/29 | 358588 | systems/texlive/tlnet/archive/pdftosrc.i386-cygwin.r50603.tar.xz 2019/11/29 | 358424 | systems/texlive/tlnet/archive/pdftosrc.amd64-freebsd.r50445.tar.xz -2019/11/29 | 354713 | macros/latex/contrib/oberdiek/oberdiek.pdf 2019/11/29 | 349524 | macros/latex/contrib/ulthese.zip -2019/11/29 | 34852 | macros/latex/contrib/oberdiek/rotchiffre.dtx 2019/11/29 | 345252 | systems/texlive/tlnet/archive/pdftosrc.x86_64-darwinlegacy.r50282.tar.xz -2019/11/29 | 343620 | macros/latex/contrib/oberdiek/bitset.pdf -2019/11/29 | 342809 | macros/latex/contrib/oberdiek/bigintcalc.pdf -2019/11/29 | 34007 | macros/latex/contrib/oberdiek/oberdiek.tex 2019/11/29 | 339844 | systems/texlive/tlnet/archive/pdftosrc.amd64-netbsd.r50171.tar.xz 2019/11/29 | 339392 | systems/texlive/tlnet/archive/pdftosrc.i386-freebsd.r50473.tar.xz -2019/11/29 | 33736 | macros/latex/contrib/oberdiek/setouterhbox.dtx -2019/11/29 | 33647 | macros/latex/contrib/oberdiek/iflang.dtx 2019/11/29 | 336437 | install/macros/latex/contrib/magicnum.tds.zip 2019/11/29 | 33424 | macros/latex/contrib/luacolor/luacolor.dtx 2019/11/29 | 332924 | install/macros/latex/contrib/luacolor.tds.zip 2019/11/29 | 329976 | macros/latex/contrib/magicnum.zip -2019/11/29 | 327623 | macros/latex/contrib/oberdiek/bmpsize.pdf 2019/11/29 | 327586 | macros/latex/contrib/luacolor.zip 2019/11/29 | 326524 | systems/texlive/tlnet/archive/pdftosrc.i386-netbsd.r50171.tar.xz 2019/11/29 | 32604 | systems/win32/miktex/tm/packages/a2ping.tar.lzma 2019/11/29 | 32559 | macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa-test.tex 2019/11/29 | 325183 | macros/latex/contrib/magicnum/magicnum.pdf -2019/11/29 | 32491 | macros/latex/contrib/oberdiek/accsupp.dtx 2019/11/29 | 322335 | macros/latex/contrib/luacolor/luacolor.pdf -2019/11/29 | 32028 | macros/latex/contrib/oberdiek/tabularht.dtx -2019/11/29 | 31984 | macros/latex/contrib/oberdiek/infwarerr.dtx -2019/11/29 | 31958 | macros/latex/contrib/oberdiek/fibnum.dtx 2019/11/29 | 318328 | systems/texlive/tlnet/archive/pdftosrc.win32.r50155.tar.xz -2019/11/29 | 317446 | macros/latex/contrib/oberdiek/intcalc.pdf -2019/11/29 | 31727 | macros/latex/contrib/oberdiek/letltxmacro.dtx -2019/11/29 | 31597 | macros/latex/contrib/oberdiek/pdfcol.dtx -2019/11/29 | 31529 | macros/latex/contrib/oberdiek/pagegrid.dtx -2019/11/29 | 31417 | macros/latex/contrib/oberdiek/grfext.dtx 2019/11/29 | 3103 | macros/latex/contrib/tuda-ci/tex/tudafonts.sty -2019/11/29 | 31023 | macros/latex/contrib/oberdiek/pdfcolparallel.dtx 2019/11/29 | 30652 | systems/texlive/tlnet/archive/a2ping.r52964.tar.xz 2019/11/29 | 306324 | systems/texlive/tlnet/archive/pdftosrc.armhf-linux.r50150.tar.xz -2019/11/29 | 30581 | macros/latex/contrib/oberdiek/rerunfilecheck.dtx -2019/11/29 | 29953 | macros/latex/contrib/oberdiek/hypdestopt.dtx -2019/11/29 | 29867 | macros/latex/contrib/oberdiek/catchfile.dtx -2019/11/29 | 294529 | macros/latex/contrib/oberdiek/ltxcmds.pdf 2019/11/29 | 2932 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex -2019/11/29 | 29259 | macros/latex/contrib/oberdiek/eolgrab.dtx -2019/11/29 | 29028 | macros/latex/contrib/oberdiek/pdflscape.dtx -2019/11/29 | 28849 | macros/latex/contrib/oberdiek/pdfcrypt.dtx -2019/11/29 | 28802 | macros/latex/contrib/oberdiek/selinput.dtx -2019/11/29 | 28283 | macros/latex/contrib/oberdiek/telprint.dtx -2019/11/29 | 28188 | macros/latex/contrib/oberdiek/resizegather.dtx -2019/11/29 | 27638 | macros/latex/contrib/oberdiek/protecteddef.dtx -2019/11/29 | 27598 | macros/latex/contrib/oberdiek/gettitlestring.dtx -2019/11/29 | 27487 | macros/latex/contrib/oberdiek/engord.dtx 2019/11/29 | 272758 | install/macros/latex/contrib/transparent.tds.zip 2019/11/29 | 271416 | systems/win32/miktex/tm/packages/unicode-data.tar.lzma -2019/11/29 | 27107 | macros/latex/contrib/oberdiek/uniquecounter.dtx -2019/11/29 | 26981 | macros/latex/contrib/oberdiek/enparen.dtx -2019/11/29 | 269749 | macros/latex/contrib/oberdiek/askinclude.pdf 2019/11/29 | 268932 | systems/texlive/tlnet/archive/unicode-data.r52961.tar.xz -2019/11/29 | 26729 | macros/latex/contrib/oberdiek/mleftright.dtx 2019/11/29 | 266358 | macros/latex/contrib/transparent/transparent.pdf -2019/11/29 | 26148 | macros/latex/contrib/oberdiek/hypbmsec.dtx -2019/11/29 | 25611 | macros/latex/contrib/oberdiek/hyphsubst.dtx -2019/11/29 | 25606 | macros/latex/contrib/oberdiek/hopatch.dtx 2019/11/29 | 255520 | macros/latex/contrib/ulthese/ulthese.pdf -2019/11/29 | 25457 | macros/latex/contrib/oberdiek/etexcmds.dtx -2019/11/29 | 25209 | macros/latex/contrib/oberdiek/pagesel.dtx -2019/11/29 | 239043 | macros/latex/contrib/oberdiek/pdfescape.pdf 2019/11/29 | 23884 | systems/texlive/tlnet/archive/pdftosrc.doc.r52960.tar.xz -2019/11/29 | 236243 | macros/latex/contrib/oberdiek/atbegshi.pdf 2019/11/29 | 23375 | macros/latex/contrib/tuda-ci/tex/tudathesis.cfg -2019/11/29 | 23280 | macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx -2019/11/29 | 22916 | macros/latex/contrib/oberdiek/listingsutf8.dtx -2019/11/29 | 228320 | macros/latex/contrib/oberdiek/soulutf8.pdf -2019/11/29 | 225113 | macros/latex/contrib/oberdiek/hycolor.pdf -2019/11/29 | 22474 | macros/latex/contrib/oberdiek/hypcap.dtx -2019/11/29 | 22473 | macros/latex/contrib/oberdiek/holtxdoc.dtx 2019/11/29 | 2229 | macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty 2019/11/29 | 22283 | macros/latex/contrib/tuda-ci/tex/tudaexercise.cls 2019/11/29 | 221815 | macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa-test.pdf -2019/11/29 | 219165 | macros/latex/contrib/oberdiek/kvsetkeys.pdf 2019/11/29 | 2177 | macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty -2019/11/29 | 21736 | macros/latex/contrib/oberdiek/picture.dtx -2019/11/29 | 21225 | macros/latex/contrib/oberdiek/pdfcolfoot.dtx -2019/11/29 | 21047 | macros/latex/contrib/oberdiek/settobox.dtx 2019/11/29 | 2098 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex 2019/11/29 | 207 | macros/latex/contrib/transparent/README.md -2019/11/29 | 20524 | macros/latex/contrib/oberdiek/kvdefinekeys.dtx 2019/11/29 | 2048 | macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.dbx -2019/11/29 | 20269 | macros/latex/contrib/oberdiek/scrindex.dtx -2019/11/29 | 202200 | macros/latex/contrib/oberdiek/pdfrender.pdf -2019/11/29 | 201033 | macros/latex/contrib/oberdiek/alphalph.pdf 2019/11/29 | 197 | macros/latex/contrib/inputenx/README.md 2019/11/29 | 197044 | macros/latex/contrib/zref/zref.dtx -2019/11/29 | 19571 | macros/latex/contrib/oberdiek/stampinclude.dtx 2019/11/29 | 19144 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex 2019/11/29 | 19124 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex -2019/11/29 | 189683 | macros/latex/contrib/oberdiek/atveryend.pdf -2019/11/29 | 18959 | macros/latex/contrib/oberdiek/hypgotoe.dtx 2019/11/29 | 18831 | macros/latex/contrib/biblatex-contrib/biblatex-apa/apa.cbx 2019/11/29 | 1870324 | systems/win32/w32tex/win64/ptex-w64.tar.xz -2019/11/29 | 18680 | macros/latex/contrib/oberdiek/auxhook.dtx 2019/11/29 | 18360 | macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa.tex 2019/11/29 | 17980 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex -2019/11/29 | 17827 | macros/latex/contrib/oberdiek/twoopt.dtx -2019/11/29 | 17785 | macros/latex/contrib/oberdiek/flags.dtx -2019/11/29 | 177298 | macros/latex/contrib/oberdiek/refcount.pdf -2019/11/29 | 17712 | macros/latex/contrib/oberdiek/atenddvi.dtx -2019/11/29 | 17637 | macros/latex/contrib/oberdiek/classlist.dtx -2019/11/29 | 17572 | macros/latex/contrib/oberdiek/colonequals.dtx -2019/11/29 | 17568 | macros/latex/contrib/oberdiek/aliascnt.dtx 2019/11/29 | 1744 | macros/latex/contrib/biblatex-contrib/biblatex-apa/README 2019/11/29 | 17449 | macros/latex/contrib/transparent/transparent.dtx -2019/11/29 | 169513 | macros/latex/contrib/oberdiek/thepdfnumber.pdf 2019/11/29 | 1680 | macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo -2019/11/29 | 168028 | macros/latex/contrib/oberdiek/centernot.pdf 2019/11/29 | 1678 | macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo 2019/11/29 | 16789 | macros/latex/contrib/tuda-ci/tex/tudasciposter.cls 2019/11/29 | 16784 | macros/latex/contrib/tuda-ci/tex/tudaposter.cls @@ -1337,86 +1501,23 @@ 2019/11/29 | 1674 | macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo 2019/11/29 | 1670 | macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo 2019/11/29 | 1622 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib -2019/11/29 | 161868 | macros/latex/contrib/oberdiek/rotchiffre.pdf -2019/11/29 | 16169 | macros/latex/contrib/oberdiek/ifdraft.dtx -2019/11/29 | 16088 | macros/latex/contrib/oberdiek/centernot.dtx 2019/11/29 | 159 | macros/latex/contrib/kvoptions/README.md -2019/11/29 | 157513 | macros/latex/contrib/oberdiek/hypdoc.pdf -2019/11/29 | 156604 | macros/latex/contrib/oberdiek/iflang.pdf -2019/11/29 | 154245 | macros/latex/contrib/oberdiek/accsupp.pdf -2019/11/29 | 153829 | macros/latex/contrib/oberdiek/letltxmacro.pdf -2019/11/29 | 152471 | macros/latex/contrib/oberdiek/setouterhbox.pdf -2019/11/29 | 15187 | macros/latex/contrib/oberdiek/dvipscol.dtx -2019/11/29 | 150750 | macros/latex/contrib/oberdiek/pmboxdraw.dtx -2019/11/29 | 150158 | macros/latex/contrib/oberdiek/pdfcolparallel.pdf -2019/11/29 | 149649 | macros/latex/contrib/oberdiek/fibnum.pdf -2019/11/29 | 148784 | macros/latex/contrib/oberdiek/grfext.pdf -2019/11/29 | 148243 | macros/latex/contrib/oberdiek/infwarerr.pdf -2019/11/29 | 148023 | macros/latex/contrib/oberdiek/tabularht.pdf -2019/11/29 | 14784 | macros/latex/contrib/oberdiek/stackrel.dtx -2019/11/29 | 14772 | macros/latex/contrib/oberdiek/chemarr.dtx -2019/11/29 | 146914 | macros/latex/contrib/oberdiek/pdfcrypt.pdf -2019/11/29 | 145886 | macros/latex/contrib/oberdiek/pdfcol.pdf 2019/11/29 | 14523 | macros/latex/contrib/biblatex-contrib/biblatex-apa/american-apa.lbx -2019/11/29 | 144364 | macros/latex/contrib/oberdiek/catchfile.pdf -2019/11/29 | 144254 | macros/latex/contrib/oberdiek/selinput.pdf -2019/11/29 | 14348 | macros/latex/contrib/oberdiek/tabularkv.dtx -2019/11/29 | 143465 | macros/latex/contrib/oberdiek/pagegrid.pdf -2019/11/29 | 142781 | macros/latex/contrib/oberdiek/gettitlestring.pdf -2019/11/29 | 142195 | macros/latex/contrib/oberdiek/rerunfilecheck.pdf 2019/11/29 | 14159 | macros/latex/contrib/tuda-ci/tex/tudaletter.cls -2019/11/29 | 138533 | macros/latex/contrib/oberdiek/protecteddef.pdf -2019/11/29 | 136669 | macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf -2019/11/29 | 136258 | macros/latex/contrib/oberdiek/eolgrab.pdf -2019/11/29 | 135129 | macros/latex/contrib/oberdiek/resizegather.pdf -2019/11/29 | 134468 | macros/latex/contrib/oberdiek/pdflscape.pdf -2019/11/29 | 133974 | macros/latex/contrib/oberdiek/engord.pdf -2019/11/29 | 133466 | macros/latex/contrib/oberdiek/uniquecounter.pdf -2019/11/29 | 132903 | macros/latex/contrib/oberdiek/telprint.pdf -2019/11/29 | 13214425 | install/macros/latex/contrib/oberdiek.tds.zip -2019/11/29 | 131422 | macros/latex/contrib/oberdiek/hypdestopt.pdf -2019/11/29 | 130350 | macros/latex/contrib/oberdiek/listingsutf8.pdf -2019/11/29 | 130187 | macros/latex/contrib/oberdiek/etexcmds.pdf -2019/11/29 | 129609 | macros/latex/contrib/oberdiek/mleftright.pdf -2019/11/29 | 12922160 | macros/latex/contrib/oberdiek.zip -2019/11/29 | 127615 | macros/latex/contrib/oberdiek/hyphsubst.pdf 2019/11/29 | 12759 | macros/latex/contrib/biblatex-contrib/biblatex-apa/biblatex-apa-test-citations.bib -2019/11/29 | 126495 | macros/latex/contrib/oberdiek/hopatch.pdf -2019/11/29 | 125784 | macros/latex/contrib/oberdiek/holtxdoc.pdf -2019/11/29 | 125671 | macros/latex/contrib/oberdiek/enparen.pdf -2019/11/29 | 125551 | macros/latex/contrib/oberdiek/pagesel.pdf 2019/11/29 | 12394 | macros/latex/contrib/biblatex-contrib/biblatex-apa/ngerman-apa.lbx 2019/11/29 | 12386 | macros/latex/contrib/biblatex-contrib/biblatex-apa/swissgerman-apa.lbx 2019/11/29 | 12304 | macros/latex/contrib/biblatex-contrib/biblatex-apa/nswissgerman-apa.lbx 2019/11/29 | 12296 | macros/latex/contrib/biblatex-contrib/biblatex-apa/naustrian-apa.lbx 2019/11/29 | 12280 | macros/latex/contrib/biblatex-contrib/biblatex-apa/austrian-apa.lbx 2019/11/29 | 12253 | macros/latex/contrib/biblatex-contrib/biblatex-apa/german-apa.lbx -2019/11/29 | 121834 | macros/latex/contrib/oberdiek/hologo.dtx -2019/11/29 | 121132 | macros/latex/contrib/oberdiek/settobox.pdf 2019/11/29 | 118 | macros/latex/contrib/luacolor/README.md -2019/11/29 | 117343 | macros/latex/contrib/oberdiek/kvdefinekeys.pdf 2019/11/29 | 116 | macros/latex/contrib/magicnum/README.md -2019/11/29 | 116293 | macros/latex/contrib/oberdiek/picture.pdf -2019/11/29 | 114122 | macros/latex/contrib/oberdiek/pdfcolfoot.pdf -2019/11/29 | 113898 | macros/latex/contrib/oberdiek/hypbmsec.pdf -2019/11/29 | 112169 | macros/latex/contrib/oberdiek/scrindex.pdf -2019/11/29 | 111262 | macros/latex/contrib/oberdiek/hypcap.pdf -2019/11/29 | 109141 | macros/latex/contrib/oberdiek/hypgotoe.pdf -2019/11/29 | 108507 | macros/latex/contrib/oberdiek/bigintcalc.dtx 2019/11/29 | 108016 | macros/latex/contrib/ulthese/ulthese.dtx -2019/11/29 | 107101 | macros/latex/contrib/oberdiek/bmpsize.dtx -2019/11/29 | 106790 | macros/latex/contrib/oberdiek/auxhook.pdf -2019/11/29 | 106357 | macros/latex/contrib/oberdiek/bitset.dtx 2019/11/29 | 10482 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex -2019/11/29 | 104685 | macros/latex/contrib/oberdiek/aliascnt.pdf 2019/11/29 | 10457 | macros/latex/contrib/biblatex-contrib/biblatex-apa/greek-apa.lbx -2019/11/29 | 104527 | macros/latex/contrib/oberdiek/colonequals.pdf -2019/11/29 | 104275 | macros/latex/contrib/oberdiek/stampinclude.pdf -2019/11/29 | 104022 | macros/latex/contrib/oberdiek/flags.pdf -2019/11/29 | 101395 | macros/latex/contrib/oberdiek/stackrel.pdf 2019/11/29 | 10017 | macros/latex/contrib/biblatex-contrib/biblatex-apa/galician-apa.lbx 2019/11/29 | 10015 | macros/latex/contrib/biblatex-contrib/biblatex-apa/spanish-apa.lbx -2019/11/29 | 100155 | macros/latex/contrib/oberdiek/twoopt.pdf 2019/11/29 | 100132 | macros/latex/contrib/kvoptions/kvoptions.dtx 2019/11/28 | 985304 | macros/latex/contrib/reledmac/reledpar.pdf 2019/11/28 | 98394532 | systems/win32/w32tex/web2c-lib.tar.xz @@ -1510,12 +1611,10 @@ 2019/11/28 | 31832 | systems/texlive/tlnet/archive/l3build.r52948.tar.xz 2019/11/28 | 31642 | macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf 2019/11/28 | 3161 | macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.tex -2019/11/28 | 3146080 | systems/texlive/tlnet/archive/animate.doc.r52944.tar.xz 2019/11/28 | 307588 | systems/win32/miktex/tm/packages/bxcalc.tar.lzma 2019/11/28 | 3042 | macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.tex 2019/11/28 | 304292 | systems/texlive/tlnet/archive/bxcalc.doc.r52947.tar.xz 2019/11/28 | 302160 | macros/latex/contrib/reledmac/reledpar.dtx -2019/11/28 | 29900 | systems/texlive/tlnet/archive/animate.source.r52944.tar.xz 2019/11/28 | 2984 | macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.tex 2019/11/28 | 28948 | systems/texlive/tlnet/archive/l3build.source.r52948.tar.xz 2019/11/28 | 2890 | macros/latex/contrib/reledmac/examples/3-reledpar_mwe.tex @@ -1529,7 +1628,6 @@ 2019/11/28 | 249260 | fonts/fourier-GUT/doc/fourier-doc-en.pdf 2019/11/28 | 2468868 | systems/win32/w32tex/tex4htk-w32.tar.xz 2019/11/28 | 243 | macros/latex/contrib/reledmac/doc-more/makefile -2019/11/28 | 24332 | systems/texlive/tlnet/archive/animate.r52944.tar.xz 2019/11/28 | 24281 | macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf 2019/11/28 | 24222 | macros/latex/contrib/reledmac/doc-include/migrate-mac.dtx 2019/11/28 | 239560 | macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf @@ -1619,48 +1717,3 @@ 2019/11/28 | 100947 | graphics/a2ping/a2ping.pl 2019/11/28 | 10008 | macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.tex 2019/11/28 | 10000 | systems/texlive/tlnet/archive/dviasm.r52941.tar.xz -2019/11/27 | 8915 | macros/latex/contrib/l3build/l3build-install.lua -2019/11/27 | 785828 | install/macros/latex/contrib/l3build.tds.zip -2019/11/27 | 781880 | macros/latex/contrib/l3build.zip -2019/11/27 | 767421 | systems/win32/miktex/tm/packages/l3backend.tar.lzma -2019/11/27 | 765270 | graphics/pgf/contrib/dynkin-diagrams.zip -2019/11/27 | 7438 | macros/latex/contrib/l3build/l3build-arguments.lua -2019/11/27 | 735799 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf -2019/11/27 | 7205 | macros/latex/contrib/l3build/l3build-manifest.lua -2019/11/27 | 704370 | macros/latex/contrib/l3build/l3build.pdf -2019/11/27 | 6790 | macros/latex/contrib/l3build/l3build-variables.lua -2019/11/27 | 6789 | macros/latex/contrib/l3build/l3build-typesetting.lua -2019/11/27 | 633 | graphics/pgf/contrib/dynkin-diagrams/README -2019/11/27 | 594 | graphics/pgf/contrib/dynkin-diagrams/d44.tex -2019/11/27 | 55827 | graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex -2019/11/27 | 543 | graphics/pgf/contrib/dynkin-diagrams/borovoi.tex -2019/11/27 | 5392 | macros/latex/contrib/l3build/l3build.lua -2019/11/27 | 467227 | systems/win32/miktex/tm/packages/attachfile2.tar.lzma -2019/11/27 | 4472 | macros/latex/contrib/l3build/l3build-ctan.lua -2019/11/27 | 43962412 | systems/win32/w32tex/web2c-w32.tar.xz -2019/11/27 | 4303 | macros/latex/contrib/l3build/l3build-stdmain.lua -2019/11/27 | 346455 | macros/latex/contrib/bxcalc.zip -2019/11/27 | 33539 | macros/latex/contrib/l3build/l3build-check.lua -2019/11/27 | 3239 | macros/latex/contrib/l3build/l3build-aux.lua -2019/11/27 | 3106 | macros/latex/contrib/l3build/l3build-unpack.lua -2019/11/27 | 26317 | macros/generic/unicode-data/BidiMirroring.txt -2019/11/27 | 24004 | macros/generic/unicode-data/BidiMirroring-5-1-0.txt -2019/11/27 | 2339 | macros/latex/contrib/l3build/CONTRIBUTING.md -2019/11/27 | 2305 | macros/latex/contrib/l3build/l3build-tagging.lua -2019/11/27 | 2191 | macros/latex/contrib/l3build/l3build-help.lua -2019/11/27 | 187846 | systems/win32/miktex/tm/packages/make4ht.tar.lzma -2019/11/27 | 1854 | graphics/pgf/contrib/dynkin-diagrams/simple-lie-algebras.tex -2019/11/27 | 1829 | graphics/pgf/contrib/dynkin-diagrams/EulerProducts.tex -2019/11/27 | 1817 | macros/latex/contrib/l3build/l3build.1 -2019/11/27 | 170264 | systems/win32/miktex/tm/packages/fontools.tar.lzma -2019/11/27 | 1537 | macros/latex/contrib/l3build/l3build.ins -2019/11/27 | 1495 | macros/latex/contrib/l3build/l3build-clean.lua -2019/11/27 | 145 | graphics/pgf/contrib/dynkin-diagrams/DoneTwoElBendy.tex -2019/11/27 | 135 | graphics/pgf/contrib/dynkin-diagrams/DoneTwoElStraight.tex -2019/11/27 | 11748 | macros/latex/contrib/l3build/l3build-file-functions.lua -2019/11/27 | 11575 | macros/latex/contrib/l3build/l3build-upload.lua -2019/11/27 | 11220 | macros/latex/contrib/l3build/CHANGELOG.md -2019/11/27 | 11024 | macros/latex/contrib/l3build/l3build-manifest-setup.lua -2019/11/27 | 104561 | macros/latex/contrib/l3build/l3build.dtx -2019/11/27 | 1032 | graphics/pgf/contrib/dynkin-diagrams/hermitian-symmetric-spaces.tex -2019/11/27 | 1024 | macros/latex/contrib/l3build/README.md diff --git a/graphics/pgf/contrib/dynkin-diagrams/README b/graphics/pgf/contrib/dynkin-diagrams/README index d5d25bbb48..63b623b955 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/README +++ b/graphics/pgf/contrib/dynkin-diagrams/README @@ -2,9 +2,9 @@ ___________________________________ Dynkin diagrams - v3.14159265 + v3.141592653 - 26 November 2019 + 4 December 2019 ___________________________________ Authors : Ben McKay @@ -16,7 +16,7 @@ Licence : Released under the LaTeX Project Public License v1.3c or ---------------------------------------------------------------------- Draws Dynkin Coxeter, and Satake diagrams in LaTeX doc­u­ments, us­ing the TikZ pack­age. -Version 3.14159265 fixes problems with text styles being ignored in Coxeter diagrams. +Version 3.141592653 fixes problems with Coxeter diagram edge labels being too far away, adds a macro to draw general edge labels, and a macro to typeset a name for a Dynkin diagram. diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf index f329e22aa5..29f6f28c86 100644 Binary files a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf and b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.pdf differ diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty index 805b825760..e7c4af6022 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.sty @@ -2,7 +2,7 @@ % % The Dynkin Diagrams package. % -% Version 3.14159265 +% Version 3.141592653 % % % This package draws Dynkin diagrams in LaTeX documents, using the TikZ package. @@ -18,7 +18,7 @@ % % \NeedsTeXFormat{LaTeX2e}[1994/06/01] -\ProvidesPackage{dynkin-diagrams}[2019/11/25 Dynkin diagrams] +\ProvidesPackage{dynkin-diagrams}[2019/12/04 Dynkin diagrams] \RequirePackage{tikz} \RequirePackage{xstring} \RequirePackage{xparse} @@ -44,24 +44,98 @@ %%% See dynkin-diagrams.tex file for examples of use. %%% -\NewDocumentCommand\dynkin{O{}mO{0}m}% +\newif\ifold@dynkin@is@backwards +\newif\ifold@dynkin@is@upsidedown +\newif\ifold@dynkin@is@extended +\newif\ifold@dynkin@label@the@roots + +\NewDocumentCommand\dynkin@save{}% {% - \ifdefined\filldraw% - \@dynkin[#1]{#2}[#3]{#4}% - \else% - \tikz[baseline=(origin.base)]{\@dynkin[#1]{#2}[#3]{#4}}% - \fi% +\xdef\dynkin@ply@value{1}% +\ifdynkin@is@backwards\global\old@dynkin@is@backwardstrue\else\global\old@dynkin@is@backwardsfalse\fi% +\ifdynkin@is@upsidedown\global\old@dynkin@is@upsidedowntrue\else\global\old@dynkin@is@upsidedownfalse\fi% +\ifdynkin@is@extended\global\old@dynkin@is@extendedtrue\else\global\old@dynkin@is@extendedfalse\fi% +{\global\dynkin@is@twistedfalse}% +\ifdynkin@label@the@roots\global\old@dynkin@label@the@rootstrue\else\global\old@dynkin@label@the@rootsfalse\fi% +}% + +\NewDocumentCommand\dynkin@restore{}% +{% +\ifold@dynkin@is@backwards\global\dynkin@is@backwardstrue\else\global\dynkin@is@backwardsfalse\fi% +\ifold@dynkin@is@upsidedown\global\dynkin@is@upsidedowntrue\else\global\dynkin@is@upsidedownfalse\fi% +\ifold@dynkin@is@extended\global\dynkin@is@extendedtrue\else\global\dynkin@is@extendedfalse\fi% +\ifold@dynkin@label@the@roots\global\dynkin@label@the@rootstrue\else\global\dynkin@label@the@rootsfalse\fi% }% \NewDocumentEnvironment{dynkinDiagram}{O{}mO{0}m}% {% -\begin{tikzpicture}[baseline=(origin.base)]% -\dynkin[#1]{#2}[#3]{#4}% +\dynkin@save{}% +\begin{tikzpicture}% +\@dynkin[#1]{#2}[#3]{#4}% }% {% \end{tikzpicture}% +\dynkin@restore{}% +}% + +\NewDocumentCommand\dynkin{O{}mO{0}m}% +{% +\dynkin@save{}% +\ifdefined\filldraw% +\@dynkin[#1]{#2}[#3]{#4}% +\else% +\tikz[baseline=(origin.base)]{\@dynkin[#1]{#2}[#3]{#4}}% +\fi% +\dynkin@restore{}% +}% + + +%% Names for Dynkin diagrams. +\xdef\dynkin@indefinite@number@symbol{n} +\NewDocumentCommand\dynkinIndefiniteSymbol{m}% +{% +\xdef\dynkin@indefinite@number@symbol{#1}% +}% +\NewDocumentCommand\dynkinName{O{}mO{0}m}% +{% +\dynkin@save{}% +\xdef\dynkin@ply@value{1}% +\xdef\dynkin@label@directions{}% +\xdef\dynkin@label@directions@star{}% + \setcounter{dynkinRootNo}{0}% + \dynkin@clear@indefinite@edge@list% + \xdef\dynkin@parabolic{0}% + \pgfkeys{/Dynkin diagram, #1}% + \xdef\dynkin@user@series{#2}% + \xdef\dynkin@twisted@series{#3}% + \xdef\dynkin@user@string{#4}% + \xdef\dynkin@series{#2}% + \dynkin@grok@series% + \IfSubStr{ABCDEFGHI}{\dynkin@series}{}{\dynkin@error@series}% + \ensuremath{% + \dynkin@series^{% + \ifdynkin@is@extended{1}% + \else{% + \IfStrEq{\dynkin@twisted@series}{0}% + {}% + {\dynkin@twisted@series}% + }% + \fi% + }% + _% + {% + \IfStrEq{\dynkin@user@string}{}% + {\dynkin@indefinite@number@symbol}% + {\dynkin@user@string}% + \IfStrEq{\dynkin@parabolic}{0}% + {}% + {,\dynkin@parabolic} + }% + }% +\dynkin@restore{}% }% + \NewDocumentCommand\dynkinRefreshRoots{}% {% \ifdefined\filldraw\else\dynkin@error@not@in@tikz\fi% @@ -116,6 +190,24 @@ \newcount\rpo% +\NewDocumentCommand\drlap{m}% +{% +\IfStrEq{\dynkin@label@direction}{left}% +{% + #1% +}% +{% + \IfStrEq{\dynkin@label@direction}{right}% + {% + #1% + }% + {% + \mathrlap{#1}% + }% +}% +}% + + %% \dynkinLabelRoot{}{} or \dynkinLabelRoot*{}{} %% Prints the label string on the Dynkin diagram at root number , in the current ordering convention. %% Starred form uses the alternate label location. @@ -275,6 +367,25 @@ decoration= }% }% +%% \dynkinEdgeLabel{}{}{} +%% Prints between root and on the current Dynkin diagram in the current root ordering. +\NewDocumentCommand\dynkinEdgeLabel{mmm}% +{% + \convertRootPair{#1}{#2}% + \node[inner sep=\dynkin@root@radius,% + label={% + [/Dynkin diagram/text style,/Dynkin diagram/edge label]% + above: + \(\pgfkeys{/Dynkin diagram/label macro*=#3}\)% + }% + ] + at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) + {}; +}% + + + + %% \dynkinCrossRootMark{} %% Prints a cross at root on the current Dynkin diagram. %% The starred form accepts in the Bourbaki ordering. @@ -1685,43 +1796,19 @@ decoration= \pgfkeys{ /Dynkin diagram/.is family, /Dynkin diagram, - name/.estore in = \dynkin@diagram@name, - name = anonymous, - mark/.estore in = \dynkin@root@mark, - mark = *, affine mark/.estore in = \dynkin@affine@root@mark, affine-mark/.forward to = /Dynkin diagram/affine mark, affine-mark = o, - edge length/.estore in = \dynkin@edge@length, - edge-length/.forward to=/Dynkin diagram/edge length, - edge length = .35cm, - edge/.style={solid,draw=black,fill=white,thin}, - make indefinite edge/.code={\dynkin@set@edge@indefinite@pair{#1}}, - make-indefinite-edge/.forward to=/Dynkin diagram/make indefinite edge, - indefinite edge ratio/.estore in = \dynkin@indefinite@edge@ratio, - indefinite-edge-ratio/.forward to = /Dynkin diagram/indefinite edge ratio, - indefinite edge ratio = 1.6, - indefinite edge/.style={solid,draw=black,fill=white,thin,densely dotted}, - indefinite-edge/.forward to=/Dynkin diagram/indefinite edge/.style, - backwards/.is if = dynkin@is@backwards, - backwards = false, - upside down/.is if = dynkin@is@upsidedown, - upside down = false, - upside-down/.forward to = /Dynkin diagram/upside down, - arrows/.is if = dynkin@arrows, - arrows = true, - reverse arrows/.is if = dynkin@reverse@arrows, - reverse arrows = false, - reverse-arrows/.forward to = /Dynkin diagram/reverse arrows, - fold style/.style = {solid,draw=black!40,fill=none,line width=\dynkin@root@radius,{Triangle Cap[]}-{Triangle Cap[]}}, - fold-style/.forward to=/Dynkin diagram/fold style/.style, - fold left style/.style = {}, - fold-left-style/.forward to=/Dynkin diagram/fold left style/.style, - fold right style/.style = {}, - fold-right-style/.forward to=/Dynkin diagram/fold right style/.style, arrow color/.estore in = \dynkin@arrow@color, - arrow color = black, arrow-color/.forward to=/Dynkin diagram/arrow color, + arrows/.is if = dynkin@arrows, + arrows = true, + at/.estore in = \dynkin@current@location, + backwards/.is if = dynkin@is@backwards, + backwards = false, + Coxeter/.is if = dynkin@Coxeter, + Coxeter=false, + edge label/.style={text height=0,text depth=0,label distance=-4pt}, double edges/.style = { fold style/.style = { draw=black, @@ -1730,7 +1817,7 @@ decoration= double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - double-edges/.forward to=/Dynkin diagram/double edges/.style, + double-edges/.forward to=/Dynkin diagram/double edges/.style, double fold/.style = { fold style/.style = { draw=black, @@ -1739,7 +1826,7 @@ decoration= double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - double-fold/.forward to=/Dynkin diagram/double fold/.style, + double-fold/.forward to=/Dynkin diagram/double fold/.style, double left/.style = { fold left style/.style = { draw=black, @@ -1748,7 +1835,7 @@ decoration= double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - double-left/.forward to=/Dynkin diagram/double left/.style, + double-left/.forward to=/Dynkin diagram/double left/.style, double fold left/.style = { fold left style/.style = { draw=black, @@ -1757,7 +1844,7 @@ decoration= double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - double-fold/.forward to=/Dynkin diagram/double fold/.style, + double-fold/.forward to=/Dynkin diagram/double fold/.style, double right/.style = { fold right style/.style = { draw=black, @@ -1766,7 +1853,7 @@ decoration= double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - double-right/.forward to=/Dynkin diagram/double right/.style, + double-right/.forward to=/Dynkin diagram/double right/.style, double fold right/.style = { fold right style/.style = { draw=black, @@ -1775,13 +1862,93 @@ decoration= double distance=\dynkin@root@radius, line width=\defaultpgflinewidth} }, - double-fold-right/.forward to=/Dynkin diagram/double fold right/.style, - root radius/.estore in = \dynkin@root@radius, - root-radius/.forward to=/Dynkin diagram/root radius, - root radius=.05cm, + double-fold-right/.forward to=/Dynkin diagram/double fold right/.style, + edge length/.estore in = \dynkin@edge@length, + edge-length/.forward to=/Dynkin diagram/edge length, + edge length = .35cm, + edge/.style={solid,draw=black,fill=white,thin}, + extended/.is if = dynkin@is@extended, + extended = false, + fold left/.is if = dynkin@left@fold, + ply/.estore in = \dynkin@ply@value, + ply/.default = 1, + fold/.style={/Dynkin diagram/ply=2,fold style}, + fold style/.style = {/Dynkin diagram/ply=2,solid,draw=black!40,fill=none,line width=\dynkin@root@radius,{Triangle Cap[]}-{Triangle Cap[]}}, + fold-style/.forward to=/Dynkin diagram/fold style/.style, + fold left style/.style = {}, + fold-left-style/.forward to=/Dynkin diagram/fold left style/.style, fold radius/.estore in = \dynkin@fold@radius, - fold-radius/.forward to=/Dynkin diagram/fold radius, + fold-radius/.forward to=/Dynkin diagram/fold radius, fold radius=.3cm, + fold right/.is if = dynkin@right@fold, + fold right style/.style = {}, + fold-right-style/.forward to=/Dynkin diagram/fold right style/.style, + gonality/.estore in = \dynkin@gonality, + indefinite edge ratio/.estore in = \dynkin@indefinite@edge@ratio, + indefinite-edge-ratio/.forward to = /Dynkin diagram/indefinite edge ratio, + indefinite edge ratio = 1.6, + indefinite edge/.style={solid,draw=black,fill=white,thin,densely dotted}, + indefinite-edge/.forward to=/Dynkin diagram/indefinite edge/.style, + Kac arrows/.is if = dynkin@Kac@arrows, + Kac-arrows/.forward to = /Dynkin diagram/Kac arrows, + Kac arrows=false, + Kac/.style={ + Kac arrows=true, + ordering=Kac, + root radius=.05cm, + edge length=.66cm, + indefinite edge ratio = 3, + edge/.style={solid,draw=black,fill=white,thin,shorten <=1mm,shorten >=1mm}, + fold style/.style = {solid,draw=black!40,fill=none,line width=\dynkin@root@radius,shorten <=1mm,shorten >=1mm}, + mark=o, + indefinite edge/.style={solid,draw=black,fill=none,thin,loosely dotted}, + }, + label/.is if = dynkin@label@the@roots, + label = false, + label depth/.style={/tikz/every label/.append style={text depth={depth("#1"}}}, + label depth/.default=g, + label depth, + label-depth/.forward to = /Dynkin diagram/label depth, + label height/.style={/tikz/every label/.append style={text height={height("#1"}}}, + label height/.default=b, + label height, + label-height/.forward to = /Dynkin diagram/label height, + labels/.default = {}, + labels*/.default = {}, + label macro/.code = {\regurgitate{#1}}, + label-macro/.forward to=/Dynkin diagram/label macro, + label macro*/.code = {\regurgitate{#1}}, + label-macro*/.forward to=/Dynkin diagram/label macro*, + labels/.store in = \dynkin@label@list, + labels*/.store in = \dynkin@label@list@star, + make indefinite edge/.code={\dynkin@set@edge@indefinite@pair{#1}}, + make-indefinite-edge/.forward to=/Dynkin diagram/make indefinite edge, + mark/.estore in = \dynkin@root@mark, + mark = *, + name/.estore in = \dynkin@diagram@name, + name = anonymous, + odd/.is if = dynkin@odd, + odd=false, + ordering/.store in = \dynkin@ordering, + ordering = Bourbaki, + parabolic/.estore in = \dynkin@parabolic, + reverse arrows/.is if = dynkin@reverse@arrows, + reverse arrows = false, + reverse-arrows/.forward to = /Dynkin diagram/reverse arrows, + upside down/.is if = dynkin@is@upsidedown, + upside down = false, + upside-down/.forward to = /Dynkin diagram/upside down, + root radius/.estore in = \dynkin@root@radius, + root-radius/.forward to=/Dynkin diagram/root radius, + root radius=.05cm, + text style/.style={#1}, + text style/.default={scale=.7}, + text-style/.forward to=/Dynkin diagram/text style/.style, + twisted/.is if = dynkin@is@twisted, + twisted/.default = false, + twisted series/.estore in = \dynkin@twisted@series, + twisted-series/.forward to = /Dynkin diagram/twisted series, + twisted series/.default = 0, */.style = { solid, draw=black, @@ -1814,33 +1981,6 @@ decoration= draw=black, line cap=round }, - Coxeter/.is if = dynkin@Coxeter, - Coxeter=false, - ordering/.store in = \dynkin@ordering, - ordering = Bourbaki, - text-style/.forward to=/Dynkin diagram/text style/.style, - label macro/.code = {\regurgitate{#1}}, - label-macro/.forward to=/Dynkin diagram/label macro, - label macro*/.code = {\regurgitate{#1}}, - label-macro*/.forward to=/Dynkin diagram/label macro*, - labels/.store in = \dynkin@label@list, - labels*/.store in = \dynkin@label@list@star, - odd/.is if = dynkin@odd, - odd=false, - Kac arrows/.is if = dynkin@Kac@arrows, - Kac-arrows/.forward to = /Dynkin diagram/Kac arrows, - Kac arrows=false, - Kac/.style={ - Kac arrows=true, - ordering=Kac, - root radius=.05cm, - edge length=.66cm, - indefinite edge ratio = 3, - edge/.style={solid,draw=black,fill=white,thin,shorten <=1mm,shorten >=1mm}, - fold style/.style = {solid,draw=black!40,fill=none,line width=\dynkin@root@radius,shorten <=1mm,shorten >=1mm}, - mark=o, - indefinite edge/.style={solid,draw=black,fill=none,thin,loosely dotted}, - }, ceref/.style={ edge length=.48cm, indefinite edge/.style={ @@ -1857,7 +1997,7 @@ decoration= draw=black, fill=white, thin, - double copy shadow={draw=black!90,fill=white,thin,shadow xshift=.1pt, shadow yshift=-.15pt}, + double copy shadow={draw=black!90,fill=none,thin,shadow xshift=.1pt, shadow yshift=-.15pt}, }, */.style={ yscale=1.2, @@ -1887,44 +2027,13 @@ decoration= fill=white, }, }, - label height/.style={/tikz/every label/.append style={text height={height("#1"}}}, - label depth/.style={/tikz/every label/.append style={text depth={depth("#1"}}}, - text style/.style={/tikz/every label/.append style={#1}}, - default/.style = { - text style={scale=.7}, - label/.is if = dynkin@label@the@roots, - label = false, - label height/.default=b, - label depth/.default=g, - label height, - label depth, - label-height/.forward to = /Dynkin diagram/label height, - label-depth/.forward to = /Dynkin diagram/label depth, - labels = {}, - labels* = {}, - at/.estore in = \dynkin@current@location, - at = {(0,0)}, - parabolic/.estore in = \dynkin@parabolic, - parabolic = 0, - gonality/.estore in = \dynkin@gonality, - gonality = 0, - extended/.is if = dynkin@is@extended, - extended = false, - twisted/.is if = dynkin@is@twisted, - twisted = false, - twisted series/.estore in = \dynkin@twisted@series, - twisted-series/.forward to = /Dynkin diagram/twisted series, - twisted series = 0, - ply/.estore in = \dynkin@ply@value, - ply = 1, - fold/.style = {ply=2}, - fold left/.is if = dynkin@left@fold, - fold-left/.forward to = /Dynkin diagram/fold left, - fold left = false, - fold right/.is if = dynkin@right@fold, - fold-right/.forward to = /Dynkin diagram/fold right, - fold right = false, - }, + at/.default = {(0,0)}, + parabolic/.default = 0, + gonality/.default = 0, + fold-left/.forward to = /Dynkin diagram/fold left, + fold left/.default = false, + fold-right/.forward to = /Dynkin diagram/fold right, + fold right/.default = false, .search also={/tikz}, } @@ -2198,7 +2307,7 @@ decoration= \global\defaultpgflinewidth=\defaultpgflinewidth\relax% \dynkin@clear@indefinite@edge@list% \xdef\dynkin@parabolic{0}% - \pgfkeys{/Dynkin diagram, default, #1}% + \pgfkeys{/Dynkin diagram, #1}% \ifdynkin@is@backwards% \tikzset{xscale=-1}% \fi% @@ -3220,6 +3329,7 @@ decoration= \fi% }% + %% \Bdynkin %% Draw a B series Dynkin diagram. \NewDocumentCommand\Bdynkin{}% @@ -3232,16 +3342,7 @@ decoration= \advance\drmo by -1 \ifdynkin@Coxeter \Adynkin - \convertRootPair{\the\drmo}{\the\dynkin@rank} - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram/text style]% - above: - \(\pgfkeys{/Dynkin diagram/label macro*=4}\)% - }% - ] - at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) - {}; + \dynkinEdgeLabel{\the\drmo}{\the\dynkin@rank}{4}% \else % Create the roots. \ifnum\dynkin@ply>1% @@ -3714,16 +3815,17 @@ decoration= \dynkinEdge*{SingleEdge}{1}{2} \dynkinEdge*{SingleEdge}{2}{3} \dynkinEdge*{SingleEdge}{3}{4} - \convertRootPair{2}{3} - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram/text style]% - above: - \(\pgfkeys{/Dynkin diagram/label macro*=4}\)% - }% - ] - at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) - {}; + \dynkinEdgeLabel{2}{3}{4}% +% \convertRootPair{2}{3} +% \node[inner sep=\dynkin@root@radius,% +% label={% +% [/Dynkin diagram/text style,/Dynkin diagram/edge label]% +% above: +% \(\pgfkeys{/Dynkin diagram/label macro*=4}\)% +% }% +% ] +% at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) +% {}; \else \dynkinEdge*{SingleEdge}{1}{2} \dynkinEdge*{SingleEdge}{3}{4} @@ -3759,16 +3861,17 @@ decoration= \newcommand*{\Hdynkin}% {% \Adynkin% - \convertRootPair{1}{2}% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram/text style]% - above: - \(\pgfkeys{/Dynkin diagram/label macro*=5}\)% - }% - ] - at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) - {}; + \dynkinEdgeLabel{1}{2}{5}% +% \convertRootPair{1}{2}% +% \node[inner sep=\dynkin@root@radius,% +% label={% +% [/Dynkin diagram/text style,/Dynkin diagram/edge label]% +% above: +% \(\pgfkeys{/Dynkin diagram/label macro*=5}\)% +% }% +% ] +% at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) +% {}; }% %% \Idynkin @@ -3779,16 +3882,17 @@ decoration= \In=\dynkin@rank% \dynkin@rank=2% \Adynkin% - \convertRootPair{1}{2}% - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram/text style]% - above: - \(\pgfkeys{/Dynkin diagram/label macro*=\dynkin@gonality}\)% - }% - ] - at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) - {}; + \dynkinEdgeLabel{1}{2}{\dynkin@gonality}% +% \convertRootPair{1}{2}% +% \node[inner sep=\dynkin@root@radius,% +% label={% +% [/Dynkin diagram/text style,/Dynkin diagram/edge label]% +% above: +% \(\pgfkeys{/Dynkin diagram/label macro*=\dynkin@gonality}\)% +% }% +% ] +% at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) +% {}; }% %% \extendedAdynkin @@ -3910,16 +4014,17 @@ decoration= \fi% \ifdynkin@Coxeter% \dynkinEdge*{SingleEdge}{\the\drmo}{\the\dynkin@rank}% - \convertRootPair{\the\drmo}{\the\dynkin@rank} - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram/text style]% - above: - \(\pgfkeys{/Dynkin diagram/label macro*=4}\)% - }% - ] - at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) - {}; + \dynkinEdgeLabel{\the\drmo}{\the\dynkin@rank}{4}% +% \convertRootPair{\the\drmo}{\the\dynkin@rank} +% \node[inner sep=\dynkin@root@radius,% +% label={% +% [/Dynkin diagram/text style,/Dynkin diagram/edge label]% +% above: +% \(\pgfkeys{/Dynkin diagram/label macro*=4}\)% +% }% +% ] +% at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) +% {}; \else% \ifnum\dynkin@ply<3% \dynkinEdge*{DoubleEdge}{\the\drmo}{\the\dynkin@rank}% @@ -3941,16 +4046,17 @@ decoration= \Cdynkin{}% \ifdynkin@Coxeter% \dynkinEdge*{SingleEdge}{0}{1}% - \convertRootPair{0}{1} - \node[inner sep=\dynkin@root@radius,% - label={% - [/Dynkin diagram/text style]% - above: - \(\pgfkeys{/Dynkin diagram/label macro*=4}\)% - }% - ] - at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) - {}; + \dynkinEdgeLabel{0}{1}{4}% +% \convertRootPair{0}{1} +% \node[inner sep=\dynkin@root@radius,% +% label={% +% [/Dynkin diagram/text style,/Dynkin diagram/edge label]% +% above: +% \(\pgfkeys{/Dynkin diagram/label macro*=4}\)% +% }% +% ] +% at ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) +% {}; \else% \dynkinEdge*{DoubleEdge}{0}{1}% \fi% @@ -4151,11 +4257,12 @@ decoration= \dynkin@rank=1% \Adynkin% \dynkinEdge*{SingleEdge}{0}{1}% - \convertRootPair{0}{1}% - \node[/Dynkin diagram/text style,above] - at - ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) - {\(\infty\)};% + \dynkinEdgeLabel{0}{1}{\infty}% +% \convertRootPair{0}{1}% +% \node[/Dynkin diagram/text style,/Dynkin diagram/edge label,above] +% at +% ($.5*(\dynkin@root@name \the\@fromRoot)+.5*(\dynkin@root@name \the\@toRoot)$) +% {\(\infty\)};% } diff --git a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex index 5685bbe4a5..4969361082 100644 --- a/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex +++ b/graphics/pgf/contrib/dynkin-diagrams/dynkin-diagrams.tex @@ -1,6 +1,6 @@ \documentclass{amsart} -\title{The Dynkin diagrams package \\ Version 3.14159265} +\title{The Dynkin diagrams package \\ Version 3.141592653} \makeatletter \DeclareRobustCommand{\scotsMc}{\scotsMcx{c}} @@ -20,7 +20,7 @@ \author{Ben \scotsMc{}Kay} \address{School of Mathematical Sciences, University College Cork, Cork, Ireland} \email{b.mckay@ucc.ie} -\date{26 November 2019} +\date{4 December 2019} \usepackage{etex} \usepackage[T1]{fontenc} @@ -261,8 +261,6 @@ You can also pass options to the package in \verb!\usepackage!. \dyn[Coxeter,gonality=n]{I}{} \end{dynkinTable} - -\newpage \section{Satake diagrams}\label{section:Satake} \begin{tcblisting}{title={Satake diagrams use the standard name instead of a rank}} @@ -310,9 +308,6 @@ We use a solid gray bar to denote the folding of a Dynkin diagram, rather than t \invol{1}{6}\invol{3}{5} \end{dynkinDiagram} \end{tcblisting} - -\newpage - \begin{tcblisting}{title={The double arrows for \(A_{IIIa}\) are big}} \newcommand{\invol}[2]{\draw[latex-latex] (root #1) to [out=-60,in=-120] node[midway,below]{$\sigma$} (root #2);} @@ -332,8 +327,6 @@ shorten <=1mm,shorten >=1mm,}} \end{dynkinDiagram} \end{tcblisting} -\newpage - \begin{tcblisting}{title={\dots but you could try springs pulling roots together}} \tikzset{/Dynkin diagram/fold style/.style= {decorate,decoration={name=coil,aspect=0.5, @@ -350,10 +343,10 @@ segment length=1mm,amplitude=.6mm}}} \section{Labels for the roots} \begin{tcblisting}{title={Make a macro to assign labels to roots}} -\dynkin[label,label macro/.code={\alpha_{\mathrlap{#1}}},edge length=.75cm]{D}{5} +\dynkin[label,label macro/.code={\alpha_{\drlap{#1}}},edge length=.75cm]{D}{5} \end{tcblisting} \begin{tcblisting}{title={Labelling several roots}} -\dynkin[labels={,2,...,5,,7},label macro/.code={\alpha_{\mathrlap#1}}]{A}{7} +\dynkin[labels={,2,...,5,,7},label macro/.code={\alpha_{\drlap#1}}]{A}{7} \end{tcblisting} \begin{tcblisting}{title={The \texttt{foreach} notation I}} \dynkin[labels={1,3,...,7},]{A}{9} @@ -362,22 +355,21 @@ segment length=1mm,amplitude=.6mm}}} \dynkin[labels={,\alpha_2,\alpha_...,\alpha_7},]{A}{7} \end{tcblisting} \begin{tcblisting}{title={The \texttt{foreach} notation III}} -\dynkin[label macro/.code={\beta_{\mathrlap{#1}}},labels={,2,...,7},]{A}{7} +\dynkin[label macro/.code={\beta_{\drlap{#1}}},labels={,2,...,7},]{A}{7} \end{tcblisting} \begin{tcblisting}{title={Label the roots individually by root number}} \dynkin[label]{B}{3} \end{tcblisting} \begin{tcblisting}{title={Label a single root}} \begin{dynkinDiagram}{B}{3} -\dynkinLabelRoot{2}{\alpha_2} +\dynkinLabelRoot{2}{\alpha_{\drlap{2}}} \end{dynkinDiagram} \end{tcblisting} \begin{tcblisting}{title={Access root labels via TikZ}} \begin{dynkinDiagram}{B}{3} -\node[below] at (root 2) {\(\alpha_{\mathrlap{2}}\)}; +\node[below] at (root 2) {\(\alpha_{\drlap{2}}\)}; \end{dynkinDiagram} \end{tcblisting} -\newpage \begin{tcblisting}{title={Commands to label several roots}} \begin{dynkinDiagram}{A}{7} \dynkinLabelRoots{,\alpha_2,\alpha_3,\alpha_4,\alpha_5,,\alpha_7} @@ -391,12 +383,11 @@ segment length=1mm,amplitude=.6mm}}} \end{tcblisting} \begin{tcblisting}{title={Labelling several roots and alternates}} \dynkin[% -label macro/.code={\alpha_{\mathrlap{#1}}}, -label macro*/.code={\gamma_{\mathrlap{#1}}}, +label macro/.code={\alpha_{\drlap{#1}}}, +label macro*/.code={\gamma_{\drlap{#1}}}, labels={,2,...,5,,7}, labels*={1,3,4,5,6}]{A}{7} \end{tcblisting} -\newpage \begin{tcblisting}{title={Commands to label several roots}} \begin{dynkinDiagram}{A}{7} \dynkinLabelRoots{,\alpha_2,\alpha_3,\alpha_4,\alpha_5,,\alpha_7} @@ -405,11 +396,29 @@ labels*={1,3,4,5,6}]{A}{7} \end{tcblisting} \section{Label subscripts} -Note the slight improvement that \verb!\mathrlap! makes: the labels are centered on the middle of the letter \(\alpha\), ignoring the space taken up by the subscripts. -\begin{tcblisting}{title={Label spacing improvement}} -\dynkin[label,label macro/.code={\alpha_{#1}},edge length=.75cm]{D}{15} +Note the slight improvement that \verb!\drlap! makes: the labels are centered on the middle of the letter \(\alpha\), ignoring the space taken up by the subscripts, using the \verb!mathtools! command \verb!\mathrlap!, but only for labels which are \emph{not} placed to the left or right of a root. +\begin{tcblisting}{title={Label subscript spacing}} +\dynkin[label,label macro/.code={\alpha_{#1}}, + edge length=.75cm]{D}{15} +\par\noindent{}% +\dynkin[label,label macro/.code={\alpha_{\drlap{#1}}}, + edge length=.75cm]{D}{15} +\end{tcblisting} +\begin{tcblisting}{title={Label subscript spacing}} +\dynkin[label,label macro/.code={\alpha_{#1}}, + edge length=.75cm]{E}{8} +\dynkin[label,label macro/.code={\alpha_{#1}},backwards, + edge length=.75cm]{E}{8} \par\noindent{}% -\dynkin[label,label macro/.code={\alpha_{\mathrlap{#1}}},edge length=.75cm]{D}{15} +\dynkin[label,label macro/.code={\alpha_{\mathrlap{#1}}}, + edge length=.75cm]{E}{8} +\dynkin[label,label macro/.code={\alpha_{\mathrlap{#1}}},backwards, + edge length=.75cm]{E}{8} +\par\noindent{}% +\dynkin[label,label macro/.code={\alpha_{\drlap{#1}}}, + edge length=.75cm]{E}{8} +\dynkin[label,label macro/.code={\alpha_{\drlap{#1}}},backwards, + edge length=.75cm]{E}{8} \end{tcblisting} \newpage @@ -420,8 +429,8 @@ To change these, set \verb!label height! and \verb!label depth!: \dynkin[labels={a,b,c,d}]{F}{4} \dynkin[labels*={a,b,c,d}]{F}{4} \dynkin[% -label macro/.code={\alpha_{\mathrlap{#1}}}, -label macro*/.code={\gamma_{\mathrlap{#1}}}, +label macro/.code={\alpha_{\drlap{#1}}}, +label macro*/.code={\gamma_{\drlap{#1}}}, label height=$\alpha_1$, label depth=$\alpha_1$, labels={,2,...,5,,7}, @@ -435,7 +444,7 @@ labels*={1,3,4,5,6}]{A}{7} \begin{dynkinDiagram}[text style={scale=1.2,blue}, edge length=.75cm, labels={1,2,n-1,n}, -label macro/.code={\alpha_{\mathrlap{#1}}} +label macro/.code={\alpha_{\drlap{#1}}} ]{A}{} \end{dynkinDiagram} \end{tcblisting} @@ -443,7 +452,7 @@ label macro/.code={\alpha_{\mathrlap{#1}}} \begin{dynkinDiagram}[text style={scale=1.2,blue}, edge length=.75cm, labels={1,2,n-1,n}, -label macro/.code={\mathbb{A}_{\mathrlap{#1}}}]{A}{} +label macro/.code={\mathbb{A}_{\drlap{#1}}}]{A}{} \end{dynkinDiagram} \end{tcblisting} @@ -474,7 +483,7 @@ label macro/.code={\mathbb{A}_{\mathrlap{#1}}}]{A}{} \end{tcblisting} \begin{filecontents*}{EulerProducts.tex} -\tikzset{/Dynkin diagram,ordering=Dynkin,label macro/.code={\alpha_{#1}}} +\tikzset{/Dynkin diagram,ordering=Dynkin,label macro/.code={\alpha_{\drlap{#1}}}} \newcounter{EPNo} \setcounter{EPNo}{0} \NewDocumentCommand\EP{smmmm}% @@ -820,11 +829,7 @@ D_4 & \end{longtable} \endgroup - - -\newpage \section{Parabolic subgroups} - Each set of roots is assigned a number, with each binary digit zero or one to say whether the corresponding root is crossed or not: \begin{tcblisting}{} The flag variety of pointed lines in @@ -858,29 +863,15 @@ the Dynkin diagram \dynkin[parabolic=3]{A}{3}. \endgroup \VerbatimInput{hermitian-symmetric-spaces.tex} -\begin{tcblisting}{title={Folded parabolics look bad (zoom in on a root)}} -\dynkin[fold,parabolic=3]{C}{2} -\dynkin[fold,parabolic=3]{G}{2} -\end{tcblisting} -\begin{tcblisting}{title={Folded parabolics: you can try using thicker crosses}} -\dynkin[fold,x/.style={very thick,line cap=round},parabolic=3]{C}{2} -\dynkin[fold,x/.style={ultra thick,line cap=round},parabolic=3]{G}{2} -\end{tcblisting} - \section{Extended Dynkin diagrams} - \begin{tcblisting}{title={Extended Dynkin diagrams}} \dynkin[extended]{A}{7} \end{tcblisting} - - The extended Dynkin diagrams are also described in the notation of Kac \cite{Kac:1990} p. 55 as affine untwisted Dynkin diagrams: we extend \verb!\dynkin{A}{7}! to become \verb!\dynkin{A}[1]{7}!: \begin{tcblisting}{title={Extended Dynkin diagrams}} \dynkin{A}[1]{7} \end{tcblisting} - - \renewcommand*{\arraystretch}{1.5} \begin{dynkinTable}{The Dynkin diagrams of the extended simple root systems}{3cm}{5cm} \dyn[extended]{A}{1} @@ -895,21 +886,15 @@ The extended Dynkin diagrams are also described in the notation of Kac \cite{Kac \dyn[extended]{G}{2} \end{dynkinTable} - - - +\newpage \section{Affine twisted and untwisted Dynkin diagrams} - The affine Dynkin diagrams are described in the notation of Kac \cite{Kac:1990} p. 55: \begin{tcblisting}{title={Affine Dynkin diagrams}} \(A^{(1)}_7=\dynkin{A}[1]{7}, \ E^{(2)}_6=\dynkin{E}[2]{6}, \ D^{(3)}_4=\dynkin{D}[3]{4}\) \end{tcblisting} - - - \begin{dynkinTable}{The affine Dynkin diagrams}{3cm}{3.75cm} \dyn{A}[1]{1} \dyn{A}[1]{} @@ -988,6 +973,7 @@ We include a style called \verb!Kac! which tries to imitate the style of \cite{K \dyn{F}{4} \dyn{G}{2} \end{dynkinTable} +\newpage \begin{dynkinTable}{The Dynkin diagrams of the extended simple root systems in Kac style}{5cm}{4.5cm} \dyn[extended]{A}{1} \dyn[extended]{A}{} @@ -1000,7 +986,6 @@ We include a style called \verb!Kac! which tries to imitate the style of \cite{K \dyn[extended]{F}{4} \dyn[extended]{G}{2} \end{dynkinTable} -\newpage \begin{dynkinTable}{The Dynkin diagrams of the twisted simple root systems in Kac style}{6cm}{4.5cm} \dyn{A}[2]{2} \dyn{A}[2]{even} @@ -1010,7 +995,7 @@ We include a style called \verb!Kac! which tries to imitate the style of \cite{K \dyn{D}[3]{4} \end{dynkinTable} \endgroup - +\newpage \section{Ceref style} We include a style called \verb!ceref! which paints oblong root markers with shadows. The word ``ceref'' is an old form of the word ``serif''. @@ -1267,6 +1252,17 @@ The marks are set down in order according to the current root ordering: \dynkin[label,ordering=Kac]{E}{*otxXOt*} \end{tcblisting} +\section{Typesetting mathematical names of Dynkin diagrams} +The \verb!\dynkinName! command, with the same syntax as \verb!\dynkin!, typesets a default name of your diagram in \LaTeX. +It is perhaps only useful when automatically generating a large collection of Dynkin diagrams in a computer program. +\begin{tcblisting}{title={Name of a diagram}} +\dynkinName[label,extended]{B}{7} +\dynkinName{A}[2]{even} +\dynkinName[Coxeter]{B}{7} +\dynkinName[label,extended]{B}{*} +\dynkinName{D}[3]{4} +\end{tcblisting} + \section{Connecting Dynkin diagrams}\label{section:name} We can make some sophisticated folded diagrams by drawing multiple diagrams, each with a name: \begin{tcblisting}{title={Name a diagram}} @@ -1669,8 +1665,6 @@ labels*={0,1,2,3,\ell-3,\ell-2,\ell-1,\ell}]{D}[1]{} \end{center} \endgroup \VerbatimInput{borovoi.tex} -\newpage - \section{Syntax} The syntax is \verb!\dynkin[]{}[]{}! where \verb!! is \verb!A!, \verb!B!, \verb!C!, \verb!D!, \verb!E!, \verb!F! or \verb!G!, the family of root system for the Dynkin diagram, \verb!! is \verb!0!, \verb!1!, \verb!2!, \verb!3! (default is \verb!0!) representing: @@ -1715,6 +1709,8 @@ The environment syntax is \verb!\begin{dynkinDiagram}! followed by the same para & distance between nodes in the Dynkin diagram \\ \optionLabel{edge/.style}{TikZ style data}{solid,draw=black,fill=white,thin} & style of edges in the Dynkin diagram \\ +\optionLabel{edge label/.style}{TikZ style data}{text height=0,text depth=0,label distance=-2pt} +& style of edge labels in the Dynkin diagram, as found, for example, on some Coxeter diagrams \\ \optionLabel{Kac}{\typ{true or false}}{false} & whether to draw in the style of \cite{Kac:1990} \\ \optionLabel{name}{\typ{string}}{anonymous} diff --git a/info/biblio/texbook3.bib b/info/biblio/texbook3.bib index bc3891832f..bafd1ea59e 100644 --- a/info/biblio/texbook3.bib +++ b/info/biblio/texbook3.bib @@ -5,9 +5,9 @@ %%% ==================================================================== %%% BibTeX-file{ %%% author = "Nelson H. F. Beebe", -%%% version = "3.77", -%%% date = "05 August 2019", -%%% time = "14:59:54 MDT", +%%% version = "3.78", +%%% date = "03 December 2019", +%%% time = "08:41:48 MDT", %%% filename = "texbook3.bib", %%% address = "University of Utah %%% Department of Mathematics, 110 LCB @@ -17,7 +17,7 @@ %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% URL = "http://www.math.utah.edu/~beebe", -%%% checksum = "35775 22434 101018 958098", +%%% checksum = "11221 22476 101283 960510", %%% email = "beebe at math.utah.edu, beebe at acm.org, %%% beebe at computer.org (Internet)", %%% codetable = "ISO/ASCII", @@ -37,7 +37,7 @@ %%% covered in separate bibliographies %%% (ep.bib, epodd.bib, and sgml.bib). %%% -%%% At version 3.77, the year coverage looks +%%% At version 3.78, the year coverage looks %%% like this: %%% %%% 1928 ( 1) 1959 ( 0) 1990 ( 54) @@ -49,7 +49,7 @@ %%% 1934 ( 0) 1965 ( 0) 1996 ( 15) %%% 1935 ( 0) 1966 ( 0) 1997 ( 24) %%% 1936 ( 0) 1967 ( 1) 1998 ( 7) -%%% 1937 ( 0) 1968 ( 1) 1999 ( 10) +%%% 1937 ( 0) 1968 ( 1) 1999 ( 11) %%% 1938 ( 0) 1969 ( 1) 2000 ( 6) %%% 1939 ( 0) 1970 ( 2) 2001 ( 11) %%% 1940 ( 0) 1971 ( 1) 2002 ( 5) @@ -79,7 +79,7 @@ %%% InCollection: 13 %%% InProceedings: 125 %%% Manual: 16 -%%% MastersThesis: 3 +%%% MastersThesis: 4 %%% Misc: 16 %%% Periodical: 1 %%% PhdThesis: 12 @@ -87,7 +87,7 @@ %%% TechReport: 60 %%% Unpublished: 2 %%% -%%% Total entries: 839 +%%% Total entries: 840 %%% %%% The ISBN and ISSN fields will be printed if %%% the is-alpha.bst or is-plain.bst style @@ -15136,6 +15136,48 @@ keywords = "Constraint Scalable Vector Graphics (CSVG)", } +@MastersThesis{Matsakis:1999:RHM, + author = "Nicholas E. (Nicholas Elias) Matsakis", + title = "Recognition of handwritten mathematical expressions", + school = "Department of Electrical Engineering and Computer + Science, Massachusetts Institute of Technology", + address = "Cambridge, MA, USA", + pages = "59", + year = "1999", + LCCN = "????", + bibdate = "Tue Dec 3 08:34:30 MST 2019", + bibsource = "fsz3950.oclc.org:210/WorldCat; + http://www.math.utah.edu/pub/tex/bib/texbook3.bib", + URL = "http://hdl.handle.net/1721.1/16727", + abstract = "In recent years, the recognition of handwritten + mathematical expressions has received an increasing + amount of attention in pattern recognition research. + The diversity of approaches to the problem and the lack + of a commercially viable system, however, indicate that + there is still much research to be done in this area. + In this thesis, I will describe an on-line approach for + converting a handwritten mathematical expression into + an equivalent expression in a typesetting command + language such as \TeX{} or MathML, as well as a + feedback-oriented user interface which can make errors + more tolerable to the end user since they can be + quickly corrected. The three primary components of this + system are a method for classifying isolated + handwritten symbols, an algorithm for partitioning an + expression into symbols, and an algorithm for + converting a two-dimensional arrangements of symbols + into a typeset expression. For symbol classification, a + Gaussian classifier is used to rank order the + interpretations of a set of strokes as a single symbol. + To partition an expression, the values generated by the + symbol classifier are used to perform a constrained + search of possible partitions for the one with the + minimum summed cost. Finally, the expression is parsed + using a simple geometric grammar.", + acknowledgement = ack-nhfb, + author-dates = "1976--", +} + @Article{Matthews:2019:CBE, author = "David Matthews", title = "Craft beautiful equations in {Word} with {\LaTeX}", diff --git a/info/biblio/texbook3.ltx b/info/biblio/texbook3.ltx index 39ac12546f..891d318669 100644 --- a/info/biblio/texbook3.ltx +++ b/info/biblio/texbook3.ltx @@ -6,9 +6,9 @@ %%% ==================================================================== %%% @LaTeX-file{ %%% author = "Nelson H. F. Beebe", -%%% version = "3.77", -%%% date = "05 August 2019", -%%% time = "14:59:57 MDT", +%%% version = "3.78", +%%% date = "03 December 2019", +%%% time = "08:41:52 MDT", %%% filename = "texbook3.ltx", %%% address = "University of Utah %%% Department of Mathematics, 110 LCB @@ -18,7 +18,7 @@ %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% URL = "http://www.math.utah.edu/~beebe", -%%% checksum = "24483 107 404 3912", +%%% checksum = "18894 107 404 3916", %%% email = "beebe@math.utah.edu, beebe@acm.org, %%% beebe@computer.org (Internet)", %%% codetable = "ISO/ASCII", @@ -79,8 +79,8 @@ WWW URL: \protect\path=http://www.math.utah.edu/~beebe/= } -\date{05 August 2019 \\ -Version 3.77} +\date{03 December 2019 \\ +Version 3.78} \begin{document} \nocite{*} diff --git a/macros/latex/contrib/babel-contrib/italian/README.txt b/macros/latex/contrib/babel-contrib/italian/README.txt index 11598a8e32..cc96d0bdf0 100644 --- a/macros/latex/contrib/babel-contrib/italian/README.txt +++ b/macros/latex/contrib/babel-contrib/italian/README.txt @@ -1,13 +1,18 @@ -The italian.dtx file has version number 1.4.01 dated 2019-01-05. +The italian.dtx file has version number 1.4.03 dated 2019-11-16. It is and update of a series fo files stating with the first one in 1990 Copyright (C) 1990-2019 Claudio Beccari Maintainer Claudio Beccari Contact: claudio dot beccari at gmail dot com +This bundle containes the source file italian.dtx and this README.txt file. By running pdfLaTeX on thei italian.dtx file you obtain bith the documentation italian.pdf and the language description file italian.ldf. + Description -This file contain the necessary and supplementary data for typesetting documents in Italiana with babel as the manager of the language management. -It defines the infix words, the date in various formats. Optionally lets the user activate a number of shorthands to performe routine frequent tasks by means of the active character " that can be freely activated and deactivated. It defines an intelligent mathematical comma that recognises if it has to perform as a punctuation mark or as a decimal separator. Another user command activates or deactivates some commands to supply a minimum of performance that is fully provided by the siunitx package. The file allows using babel also when a document is typeset with XeLaTeX or LuaLaTeX, even if, according to the author, polyglossia is preferred when typesetting documents in Italian, even if the gloss-italian.ldf for polyglossia provides less facilities than the ones available with babel. +This file contain the necessary and supplementary data for typesetting documents in Italian with babel as the manager of the language management. +It defines the infix words, the date in various formats. Optionally lets the user activate a number of shorthands to performe routine frequent tasks by means of the active character " that can be freely activated and deactivated. +It defines an intelligent mathematical comma that recognises if it has to perform as a punctuation mark or as a decimal separator. Another user command activates or deactivates some commands to supply a minimum of the performance that is fully provided by the siunitx package. The file allows using babel also when a document is typeset with XeLaTeX or LuaLaTeX, even if, according to the author, polyglossia is preferred when typesetting documents in Italian, in spite of the fact that gloss-italian.ldf for polyglossia provides less facilities than the ones available with babel. +Supposedly since version 1.4.03 this file should be usable also with babel+uplatex The documentation that is provided by running LaTeX on the italian.dtx file provides full documentation of every facility provided by the italian.ldf file. +The documentation contains the licence clauses. diff --git a/macros/latex/contrib/babel-contrib/italian/italian.dtx b/macros/latex/contrib/babel-contrib/italian/italian.dtx index a7a234fea1..6d5a088d6b 100644 --- a/macros/latex/contrib/babel-contrib/italian/italian.dtx +++ b/macros/latex/contrib/babel-contrib/italian/italian.dtx @@ -60,7 +60,7 @@ This file is a self unpacking one. % %\ProvidesLanguage{italian} %<*code> - [2019/01/05 v.1.4.01 Italian support for the babel system] + [2019/11/16 v.1.4.03 Italian support for the babel system] % %% %% Please report errors to: claudio dot beccari at gmail dot com @@ -99,7 +99,7 @@ mail: \texttt{claudio dot beccari at gmail dot com}}} % %\fi % -% \CheckSum{755} +% \CheckSum{753} % % \changes{italian-0.99}{1990/07/11}{First version, from english.doc} % \changes{italian-1.0}{1991/04/23}{Modified for babel 3.0} @@ -217,127 +217,130 @@ mail: \texttt{claudio dot beccari at gmail dot com}}} % \end{table} % % The features of this language definition file are the following: -% \begin{enumerate} -% \item The Italian hyphenation is invoked, provided that the Italian -% hyphenation pattern files were loaded when the specific format file -% was built. -% \item The language dependent infix words to be inserted by such -% commands as |\chapter|, |\caption|, |\tableofcontents|, -% etc. are redefined in accordance with the Italian -% typographical practice. -% \item Since Italian can be easily hyphenated and Italian practice -% allows to break a word before the last two letters, hyphenation -% parameters have been set accordingly, but a very high demerit -% value has been set in order to avoid word breaks in the -% penultimate line of a paragraph. Specifically the |\clubpenalty|, -% and the |\widowpenalty| are set to rather high values and -% |\finalhyphendemerits| is set to such a high value that -% hyphenation is strongly discouraged between the last two lines -% of a paragraph. +% \begin{enumerate} +% \item The Italian hyphenation is invoked, provided that the Italian +% hyphenation pattern files were loaded when the specific format file +% was built. +% \item The language dependent infix words to be inserted by such +% commands as |\chapter|, |\caption|, |\tableofcontents|, +% etc. are redefined in accordance with the Italian +% typographical practice. +% \item Since Italian can be easily hyphenated and Italian practice +% allows to break a word before the last two letters, hyphenation +% parameters have been set accordingly, but a very high demerit +% value has been set in order to avoid word breaks in the +% penultimate line of a paragraph. Specifically the |\clubpenalty|, +% and the |\widowpenalty| are set to rather high values and +% |\finalhyphendemerits| is set to such a high value that +% hyphenation is strongly discouraged between the last two lines +% of a paragraph. %^^A %^^A Qui ci si potrebbero mettere le indicazioni per gli attributi e modificatori %^^A -% \item Some language specific shorthands have been defined so as to -% allow etymological hyphenation, specifically |"| inserts a -% break point at any word boundary that the typesetter chooses, -% provided it is not followed by an accented letter (very unlikely -% in Italian, where compulsory accents fall only on the last and -% ending vowel of a word, but it may take place with compound words -% that include foreign roots), and \verb="|= when the desired break -% point falls before an accented letter. As you can read in -% table~\ref{t:itshrtct}, these shorthands are available only if -% they get activated with |\setactivedoublequote| after -% loading \babel\ but before the |\begin{docuemnt}| statement. This -% is done in order to preserve the user from package conflicts: -% if s/he wants to use these facilities s/he must remember that -% conflicts may arise unless active characters are deactivated; -% this can be done with the \babel\ command |\shorthadsoff{"}| -% (and reactivated with |\shorthandson{"}|) when its wise to do -% so; conflicts have been reported with package \file{xypic} and -% with \texttt{TikZ}, but the latter has its own library to -% deactivate all active characters, not just the double quotes, -% the only Italian language possibly activated character. -% \item Some Italian compound words have a connecting short dash (a -% hyphen sign) between them without any space between the component -% words and the short dash; in this situation standard \LaTeX\ allows -% a line break only just after the short dash; this may lead to -% paragraphs with protruding lines or with ugly looking wide inter -% word spaces. If a break point is desired in the second word, one -% may use a |"| sign just after the short dash; but if a line break -% is required in the first word, them the |"-| shorthand comes in handy; -% pay attention though, that if you use an en-dash or an em-dash (both -% should not be used in Italian as compound words connectors, but\dots) -% then the |"-| shorthand might impeach the |--| or |---| ligatures, thus -% producing an unacceptable appearance. -% \item The shorthand |""| introduces the raised (English) opening -% double quotes; this shorthand proves its usefulness when one -% reminds that the Italian keyboard misses the backtick key, and -% the backtick on a Windows based platform may be obtained only by -% pressing the \texttt{Alt} key while keying the numerical code -% 0096 in the numeric keypad; very, very annoying! -% \item The shorthands |"<| and |">| insert the guillemets sometimes -% used also in Italian typography; with the T1 font encoding -% the ligatures |<<| and |>>| should insert such signs directly, -% but not all the virtual fonts that claim to follow the T1 font -% encoding actually contain the guillemets; with the OT1 encoding -% the guillemets are not available and must be faked in some -% way. By using the |"<| and |">| shorthands (even with the T1 -% encoding) the necessary tests are performed and in case the -% guillemets are faked by means of the special LaTeX math symbols. -% At the same time if OpenType fonts are being used with XeLaTeX -% or LuaLaTeX, there are no problems with guillemets. -% \item Three new specific commands |\unit|, |\ped|, and |\ap| are -% introduced so as to enable the correct composition of technical -% mathematics according to the ISO~31/XI recommendations. -% The definition of |\unit| takes place only at ``begin document'' -% so that it is possible to verify if some other similar functionalities -% have already been defined by other packages, such as |units.sty| -% or |siunitx.sty|. In particular command |\unit| is deactivated by -% default; the user can activate it by entering the command -% |\setISOcompliance| after loading the \babel\ package and before the -% |\begin{document}| statement. The above checks will enter into -% action even if this ISO compliance is set, in order to avoid conflicts -% with the above named packages. The |\ap| and |\ped| commands remain -% available because up to now no specific conflicts have been reported. -% \item Since in all languages different from English the decimal separator -% according to the ISO regulations \emph{must} be a comma\footnote{Actually -% the Bureau International des Pois et M\'esures allows also the point -% as a decimal separator without mentioning any language, but recommends -% to follow the national typographical traditions}; since -% no language description file nor the \babel\ package itself provides -% for this functionality, a not so simple intelligent comma definition is -% provided such that at least in mathematics it behaves correctly. -% There are other packages that provide a similar functionality, for -% example |icomma| and |ncccomma|; |icomma|, apparently is not in conflict -% with |dcolomn|, but requires a space after the comma all the times it -% plays the r\^ole of a punctuation mark; |ncccomma|, checks if the next -% token is a digit, but it repeated ten tests every time it meets a comma, -% irrespective from what it is followed by. I believe that my solution -% is better than that provided by both those packages; but I assume that -% if the user loads on of those packages, it prefers to use that -% functionality; In case one of those pachages is loaded, this module -% excludes its intelligent comma functionality. -% By default this functionality is turned \emph{off}, therefore the user -% should turn it on by means of the |\IntelligentComma| command; it can -% turn it off by means of |\NoIntelligentComma|. Please, read -% subsection~\ref{ssec:comma} to see the various situations where a -% mathematical comma may be used and how to overcome the few cases when -% the macros of this file don't behave as expected. The section describes -% also some limitations when some cong=flicting packages are being loaded. -% \item In Italian legal documents it is common to tag list-items -% with the old fashioned 21-letter Italian alphabet, that differs from -% the Latin one by the omission of the letters `j', `k', `w',`x', and -% `y'. This applies for both upper and lower case tags. -% This feature is obtained by using the commands |\XXIletters| and -% |\XXVIletters| that allow to switch back and forth -% between 21- and 26-letter tagging. -% \end{enumerate} -% -% For this language a few shorthands have been defined, -% table~\ref{t:itshrtct}, some of which are introduced to overcome -% certain limitations of the Italian keyboard; in -% section~\ref{s:itkbd} there are other comments and hints in order -% to overcome some other keyboard limitations. +% \item Some language specific shorthands have been defined so as to +% allow etymological hyphenation, specifically |"| inserts a +% break point at any word boundary that the typesetter chooses, +% provided it is not followed by an accented letter (very unlikely +% in Italian, where compulsory accents fall only on the last and +% ending vowel of a word, but it may take place with compound words +% that include foreign roots), and \verb="|= when the desired break +% point falls before an accented letter. As you can read in +% table~\ref{t:itshrtct}, these shorthands are available only if +% they get activated with |\setactivedoublequote| after +% loading \babel\ but before the |\begin{docuemnt}| statement. This +% is done in order to preserve the user from package conflicts: +% if s/he wants to use these facilities s/he must remember that +% conflicts may arise unless active characters are deactivated; +% this can be done with the \babel\ command |\shorthadsoff{"}| +% (and reactivated with |\shorthandson{"}|) when its wise to do +% so; conflicts have been reported with package \file{xypic} and +% with \texttt{TikZ}, but the latter has its own library to +% deactivate all active characters, not just the double quotes, +% the only Italian language possibly activated character. +% \item Some Italian compound words have a connecting short dash (a +% hyphen sign) between them without any space between the component +% words and the short dash; in this situation standard \LaTeX\ allows +% a line break only just after the short dash; this may lead to +% paragraphs with protruding lines or with ugly looking wide inter +% word spaces. If a break point is desired in the second word, one +% may use a |"| sign just after the short dash; but if a line break +% is required in the first word, them the |"-| shorthand comes in +% handy; pay attention though, that if you use an en-dash or an +% em-dash (both should not be used in Italian as compound words +% connectors, but\dots) then the |"-| shorthand might impeach the |--| +% or |---| ligatures, thus producing an unacceptable appearance. +% \item The shorthand |""| introduces the raised (English) opening +% double quotes; this shorthand proves its usefulness when one +% reminds that the Italian keyboard misses the back tick key, and +% the back tick on a Windows based platform may be obtained only by +% pressing the \texttt{Alt} key while keying the numerical code +% 0096 in the numeric keypad; very, very annoying! +% \item The shorthands |"<| and |">| insert the guillemets sometimes +% used also in Italian typography; with the T1 font encoding +% the ligatures |<<| and |>>| should insert such signs directly, +% but not all the virtual fonts that claim to follow the T1 font +% encoding actually contain the guillemets; with the OT1 encoding +% the guillemets are not available and must be faked in some +% way. By using the |"<| and |">| shorthands (even with the T1 +% encoding) the necessary tests are performed and in case the +% guillemets are faked by means of the special LaTeX math symbols. +% At the same time if OpenType fonts are being used with XeLaTeX +% or LuaLaTeX, there are no problems with guillemets. +% \item Three new specific commands |\unit|, |\ped|, and |\ap| are +% introduced so as to enable the correct composition of technical +% mathematics according to the ISO~31/XI recommendations. +% The definition of |\unit| takes place only at ``begin document'' +% so that it is possible to verify if some other similar +% functionalities have already been defined by other packages, such +% as |units.sty| or |siunitx.sty|. In particular command |\unit| is +% deactivated by default; the user can activate it by entering the +% command |\setISOcompliance| after loading the \babel\ package and +% before the |\begin{document}| statement. The above checks will enter +% into action even if this ISO compliance is set, in order to avoid +% conflicts with the above named packages. The |\ap| and |\ped| +% commands remain available because up to now no specific conflicts +% have been reported. +% \item Since in all languages different from English the decimal +% separator according to the ISO regulations \emph{must} be a +% comma\footnote{Actually the Bureau International des Pois et +% M\'esures allows also the point as a decimal separator without +% mentioning any language, but recommends to follow the national +% typographical traditions.}; since no language description file nor +% the \babel\ package itself provides for this functionality, a not so +% simple intelligent comma definition is provided such that at least +% in mathematics it behaves correctly. +% There are other packages that provide a similar functionality, for +% example |icomma| and |ncccomma|; |icomma|, apparently is not in +% conflict with |dcolomn|, but requires a space after the comma all +% the times it plays the r\^ole of a punctuation mark; |ncccomma|, +% checks if the next token is a digit, but it repeats ten tests every +% time it meets a comma, irrespective from what it is followed by. +% I believe that my solution is better than that provided by both +% those packages; but I assume that if the user loads one of those +% packages, it prefers to use their functionality; in case one of those +% packages is loaded, this module excludes its intelligent comma +% functionality. By default this functionality is turned \emph{off}, +% therefore the user should turn it on by means of the +% |\IntelligentComma| command; it can turn it off by means of +% |\NoIntelligentComma|. Please, read subsection~\ref{ssec:comma} to +% see the various situations where a mathematical comma may be used +% and how to overcome the few cases when the macros of this file don't +% behave as expected. The section describes also some limitations when +% some conflicting packages are being loaded. +% \item In Italian legal documents it is common to tag list-items +% with the old fashioned 21-letter Italian alphabet, that differs from +% the Latin one by the omission of the letters `j', `k', `w',`x', and +% `y'. This applies for both upper and lower case tags. +% This feature is obtained by using the commands |\XXIletters| and +% |\XXVIletters| that allow to switch back and forth +% between 21- and 26-letter tagging. +% \end{enumerate} +% +% For this language a few shorthands have been defined, +% table~\ref{t:itshrtct}, some of which are introduced to overcome +% certain limitations of the Italian keyboard; in +% section~\ref{s:itkbd} there are other comments and hints in order +% to overcome some other keyboard limitations. % % \subsection*{Acknowlegements} % It is my pleasure to acknowledge the contributions of Giovanni Dore, @@ -359,7 +362,7 @@ mail: \texttt{claudio dot beccari at gmail dot com}}} % % \StopEventually{}% % -%\subsection{The commented code} +%\section{The commented code} % The macro |\LdfInit| takes care of preventing that this file is % loaded more than once, checking the category code of the % \texttt{@} sign, etc. @@ -494,47 +497,64 @@ mail: \texttt{claudio dot beccari at gmail dot com}}} % \changes{italian-1.2l}{1999/04/5}{Changed example ``begl'italiani'' % (obsolete spelling) with another, ``nell'altezza'', that behaves % the same way} +% \changes{italian 1.4.01}{2019-01-05}{Set the lccode of the apostrophe +% that should be valid for both the pdflatex and the OpentType aware +% typesetting engines xelatelx and lualatex.} +% \changes{italian 1.4.03}{2019-11-16}{Adjust the lccode for the +% apostrophe so as to work also with platex and uplatex. Thanks to +% Hironobu Yamashita who spottes the +% error and suggested the correction.} +% % In order to enable the hyphenation of words such as % ``nell'altezza'' we give the \texttt{'} a non-zero lower case -% code. When we do that \TeX\ finds the following hyphenation +% code. When we do that, \TeX\ finds the following hyphenation % points |nel-l'al-tez-za| instead of none. If this |italian.ldf| is -% (improperly) used with |babel| when typesetting with |xelatex| or +% used with |babel| when typesetting with |xelatex| or % |lualatex| the apostrophe must receive a unicode code point. -% Therefore we use the same test that is being used by the |iftex| -% package in order to check if this option to |babel| is used while -% typesetting with |pdflatex| or another typesetting engine. +% Therefore we use a special test that was suggested by Hironobu +% Yamashita\footnote{Thanks to Hironobu Yamashita +% } if this |babel| language option +% is used while using either |pdflatex| or a Unicode aware +% typesetting engine. % \begin{macrocode} \addto\extrasitalian{% -\lccode\string`'=`' \unless\ifcsname pdfmatch\endcsname +\lccode\string`'=`' \ifcsname Umathcode\endcsname \lccode\string"2019=\string"2019\fi} \addto\noextrasitalian{% -\lccode\string`'=0 \unless\ifcsname pdfmatch\endcsname +\lccode\string`'=0 \ifcsname Umathcode\endcsname \lccode\string"2019=0\fi} % \end{macrocode} -% Notice, though, that if you use |babel| when typesetting with |lualatex| or |xelatex| using the |fontspec| usual commands and options may not lead to their proper font alternative variants being used. Apparently the |\balefont| command is more performant in transmitting the proper information to |fontspec|. Of course |\babelfont| must be used after the |babel| package has been invoked; while there appears to be any loading precedence requirements when |fontspec| and |polyglossa| are used +% Notice, though, that if you use |babel| when typesetting with |lualatex| +% or |xelatex| using the |fontspec| usual commands and options may not +% lead to their proper font alternative variants being used. Apparently +% the |\babelfont| command is more performant in transmitting the proper +% information to |fontspec|. Of course |\babelfont| must be used after the +% |babel| package has been invoked; while there appears to be any loading +% precedence requirements when |fontspec| and |polyglossia| are used % \end{macro} % \end{macro} % % \subsection{Traditionally labelled enumerate environment} % \changes{italian-1.2v}{2010/01/02}{Support for traditional Italian} -% In some traditional texts, especially of legal nature, enumerations labelled -% with lower or upper case letters use the reduced Latin alphabet that omits -% the so called ``non Italian letters'': j, k, w, x, and y. -% -% \changes{italian-1.2w}{2011/01/03}{Added switching mechanism between normal -% and traditional enumeration labelling} -% \changes{italian-1.3}{2013/09/27}{The |traditional| language attribute has -% been dropped while the commands to switch back and forth from 21- to -% 26-letter alphabet are retained} +% In some traditional texts, especially of legal nature, enumerations +% labelled with lower or upper case letters use the reduced Latin +% alphabet that omits the so called ``non Italian letters'': j, k, w, +% x, and y. +% +% \changes{italian-1.2w}{2011/01/03}{Added switching mechanism between +% normal and traditional enumeration labelling} +% \changes{italian-1.3}{2013/09/27}{The |traditional| language attribute +% has been dropped while the commands to switch back and forth from +% 21- to 26-letter alphabet are retained} % \begin{macro}{\XXIletters} % \begin{macro}{\XXVIletters} % At the same time it is considered useful to have the possibility of -% switching back and forth from the 21-letter tagging and the 26-letter one. -% This requires a counter that keeps the switching status (0 for 21 letters -% and 1 for 26 letters) and commands |\XXIletters| and |\XXVIletters| -% to set the switch. Default is 26 letter tagging. +% switching back and forth from the 21-letter tagging and the 26-letter +% one. This requires a counter that keeps the switching status (0 for 21 +% letters and 1 for 26 letters) and commands |\XXIletters| and +% |\XXVIletters| to set the switch. Default is 26 letter tagging. % \begin{macrocode} \newcount\it@lettering \it@lettering=\@ne \newcommand*\XXIletters{\it@lettering=\z@} @@ -546,8 +566,8 @@ mail: \texttt{claudio dot beccari at gmail dot com}}} % \end{macrocode} % \end{macro} % \end{macro} -% To make this feasible it's necessary to redefine the way the \LaTeX\ |\@alph| -% and |\@Alph| work. Let's make the alternate definitions: +% To make this feasible it's necessary to redefine the way the \LaTeX\ +% |\@alph| and |\@Alph| work. Let's make the alternate definitions: % \begin{macrocode} \def\it@alph#1{% \ifcase\it@lettering @@ -572,31 +592,32 @@ mail: \texttt{claudio dot beccari at gmail dot com}}} % \end{macrocode} % % In order to have a complete description, the situation is as such: -% \begin{enumerate} -% \item If you want to always use the 21-letter item tagging, simply -% use the |\XXIletters| declaration just after |\begin{document}| -% and this setting remains global (provided, of course, that the -% declaration is defined, i.e. that the Italian language is the -% default one); in this way the setting is global while you use -% the Italian language. -% \item The |XXVIletter| command, issued outside any environment sets -% the 26-letter item tagging in a global way; this setting is the default one. -% \item If you specify |\XXIletters| just before entering an -% environment that uses alphabetic tagging, this environment will -% be tagged with the 21-letter alphabet, but this is a local setting, -% because the letter tagging takes place only from the second level -% of enumeration. -% \item The declarations |\XXIletters| and |\XXVIletters| let you -% switch back and forth between the two kinds of tagging, But this -% kind of tagging, the 21-letter one, is meaningful only in Italian -% and when you change language, letter tagging reverts to the 26-letter -% one. -% \end{enumerate} +% \begin{enumerate} +% \item If you want to always use the 21-letter item tagging, simply +% use the |\XXIletters| declaration just after |\begin{document}| +% and this setting remains global (provided, of course, that the +% declaration is defined, i.e. that the Italian language is the +% default one); in this way the setting is global while you use +% the Italian language. +% \item The |XXVIletter| command, issued outside any environment sets +% the 26-letter item tagging in a global way; this setting is the +% default one. +% \item If you specify |\XXIletters| just before entering an +% environment that uses alphabetic tagging, this environment will +% be tagged with the 21-letter alphabet, but this is a local setting, +% because the letter tagging takes place only from the second level +% of enumeration. +% \item The declarations |\XXIletters| and |\XXVIletters| let you +% switch back and forth between the two kinds of tagging, But this +% kind of tagging, the 21-letter one, is meaningful only in Italian +% and when you change language, letter tagging reverts to the +% 26-letter one. +% \end{enumerate} % % \changes{italian-1.2m}{2000/01/05}{Support for etymological % hyphenation} % -% \subsection{Support for etymological hyphenation} +% \subsection{Support for etymological hyphenation} % In Italian etymological hyphenation is desirable with % technical terms, chemical names, and the like. @@ -663,10 +684,10 @@ mail: \texttt{claudio dot beccari at gmail dot com}}} % \changes{italian-1.3g}{2014/01/22}{The active double straight % quote conflicts with other packages; set as an optional facility.} % Instead of a boolean switch we use a private counter so as to check -% at |\begin{document}| if this facility has to be activated. The default -% value is zero; anything different from zero means that the facility -% has to be activated; this is done with command |\setactivedoublequote| -% to be issued before |\begin{document}| +% at |\begin{document}| if this facility has to be activated. The +% default value is zero; anything different from zero means that the +% facility has to be activated; this is done with command +% |\setactivedoublequote| to be issued before |\begin{document}| % % \begin{macrocode} \newcount\it@doublequoteactive \it@doublequoteactive=\z@ diff --git a/macros/latex/contrib/babel-contrib/italian/italian.pdf b/macros/latex/contrib/babel-contrib/italian/italian.pdf index ecb435c1f3..7f0838f365 100644 Binary files a/macros/latex/contrib/babel-contrib/italian/italian.pdf and b/macros/latex/contrib/babel-contrib/italian/italian.pdf differ diff --git a/macros/latex/contrib/grfext/README.md b/macros/latex/contrib/grfext/README.md new file mode 100644 index 0000000000..647f723b09 --- /dev/null +++ b/macros/latex/contrib/grfext/README.md @@ -0,0 +1,7 @@ +# grfext + +grfext package for LaTeX + + +This package provides macros for adding and reordering +graphics extensions of the graphics package. diff --git a/macros/latex/contrib/grfext/grfext.dtx b/macros/latex/contrib/grfext/grfext.dtx new file mode 100644 index 0000000000..3dcab07ef6 --- /dev/null +++ b/macros/latex/contrib/grfext/grfext.dtx @@ -0,0 +1,816 @@ +% \iffalse meta-comment +% +% File: grfext.dtx +% Version: 2019/12/03 v1.3 +% Info: Manage graphics extensions +% +% Copyright (C) +% 2007, 2010 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/grfext/issues +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any later +% version. This version of this license is in +% https://www.latex-project.org/lppl/lppl-1-3c.txt +% and the latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainers of this work are +% Heiko Oberdiek and the Oberdiek Package Support Group +% https://github.com/ho-tex/grfext/issues +% +% This work consists of the main source file grfext.dtx +% and the derived files +% grfext.sty, grfext.pdf, grfext.ins, grfext.drv, +% +% Distribution: +% CTAN:macros/latex/contrib/grfext/grfext.dtx +% CTAN:macros/latex/contrib/grfext/grfext.pdf +% +% Unpacking: +% (a) If grfext.ins is present: +% tex grfext.ins +% (b) Without grfext.ins: +% tex grfext.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{grfext.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If grfext.drv is present: +% latex grfext.drv +% (b) Without grfext.drv: +% latex grfext.dtx; ... +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Programm calls to get the documentation (example): +% pdflatex grfext.dtx +% makeindex -s gind.ist grfext.idx +% pdflatex grfext.dtx +% makeindex -s gind.ist grfext.idx +% pdflatex grfext.dtx +% +% Installation: +% TDS:tex/latex/grfext/grfext.sty +% TDS:doc/latex/grfext/grfext.pdf +% TDS:source/latex/grfext/grfext.dtx +% +%<*ignore> +\begingroup + \catcode123=1 % + \catcode125=2 % + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +% +%<*install> +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package: grfext 2019/12/03 v1.3 Manage graphics extensions (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: grfext +Version: 2019/12/03 v1.3 + +Copyright (C) + 2007, 2010 Heiko Oberdiek + 2016-2019 Oberdiek Package Support Group + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3c of this license or (at your option) any later +version. This version of this license is in + https://www.latex-project.org/lppl/lppl-1-3c.txt +and the latest version of this license is in + https://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainers of this work are +Heiko Oberdiek and the Oberdiek Package Support Group +https://github.com/ho-tex/grfext/issues + + +This work consists of the main source file grfext.dtx +and the derived files + grfext.sty, grfext.pdf, grfext.ins, grfext.drv. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{grfext.ins}{\from{grfext.dtx}{install}}% + \file{grfext.drv}{\from{grfext.dtx}{driver}}% + \usedir{tex/latex/grfext}% + \file{grfext.sty}{\from{grfext.dtx}{package}}% +% \usedir{doc/latex/grfext/test}% +% \file{grfext-test1.tex}{\from{grfext.dtx}{test1}}% +% \file{grfext-test2.tex}{\from{grfext.dtx}{test2}}% +} + +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* grfext.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `grfext.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{grfext.drv}% + [2019/12/03 v1.3 Manage graphics extensions (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{grfext.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{grfext.drv} +% +% \title{The \xpackage{grfext} package} +% \date{2019/12/03 v1.3} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/grfext/issues}}} +% +% \maketitle +% +% \begin{abstract} +% This package provides macros for adding and reordering +% graphics extensions of package \xpackage{graphics}. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% If you are not familiar with \LaTeX's graphics bundle, please +% read its documentation \xfile{grffile} \cite{graphics}. +% The bundle contains two packages for graphics inclusion: +% \xpackage{graphics} and \xpackage{graphicx}. The first one +% is loaded by the second one that adds a key value interface. +% +% Graphics files are included in both cases by macro +% \cs{includegraphics}. The file name extension can be omitted. +% Then the graphics package goes through a list of known +% extensions until it finds the graphics file. This extension list +% is set by \cs{DeclareGraphicsExtensions}. The previous contents +% of the list is overwritten. +% +% \subsection{User interface} +% +% This package \xpackage{grfext} provides macros that adds entries +% to the list or remove them. The list may be empty or even +% undefined before. It is always defined afterwards, but can +% be empty (especially after removing entries). +% +% \begin{declcs}{AppendGraphicsExtensions} * \M{ext-list}\\ +% \cs{PrependGraphicsExtensions} * \M{ext-list} +% \end{declcs} +% The argument \meta{ext-list} is a comma separated list whose +% entries are file name extensions including the dot. +% But first the entries are removed from +% \xpackage{graphics}' extension list to avoid multiple +% occurences of the same extension. +% +% Then macro \cs{AppendGraphicsExtensions} adds the entries +% after the end of \xpackage{graphics}' list, whereas +% macro \cs{PrependGraphicsExtensions} puts them in front +% of the list. +% The order matters if a graphics file is available in +% different acceptable formats. Then the first extension +% wins. +% +% The star version of these commands only adds an extensions, +% if a specific graphics rule exists for that extension. +% +% \begin{declcs}{RemoveGraphicsExtensions} \M{ext-list} +% \end{declcs} +% All occurences of file extensions in \meta{ext-list} are +% removed from \xpackage{graphics}' extension list. +% +% \subsection{Package loading} +% +% The package does not define any options. It is loaded +% as usual in \LaTeX, e.g.: +% \begin{quote} +% |\usepackage{grfext}| +% \end{quote} +% +% \begin{declcs}{PrintGraphicsExtensions} +% \end{declcs} +% Macro \cs{PrintGraphicsExtensions} writes the current +% graphics extensions list in the \xfile{.log} file. +% The macros described before do this automatically +% after their operation. +% +% \subsection{Option support for package \xpackage{graphicx}} +% +% Package \xpackage{graphicx} uses the interface of package +% \xpackage{keyval} in order to specify options for +% \cs{includegraphics}. The options can also be set using +% \begin{quote} +% |\setkeys{Gin}{|\meta{options}|}| +% \end{quote} +% The four user macros with the two star forms are available +% as options in family |Gin| as well: +% \begin{quote} +% |AppendGraphicsExtensions={|\meta{ext-list}|}|\\ +% |AppendGraphicsExtensions*={|\meta{ext-list}|}|\\ +% |PrependGraphicsExtensions={|\meta{ext-list}|}|\\ +% |PrependGraphicsExtensions*{|\meta{ext-list}|}|\\ +% |RemoveGraphicsExtensions={|\meta{ext-list}|}|\\ +% |PrintGraphicsExtensions| +% \end{quote} +% This makes it easier to locally change the extension list +% for an included graphics, e.g.: +% \begin{quote} +% |\includegraphics[RemoveGraphicsExtensions={.pdf,PDF}]{image}| +% \end{quote} +% +% \subsection{\plainTeX} +% +% \LaTeX's graphics packages can also be used with \plainTeX. +% The necessary basic \LaTeX\ macros are defined in +% \xfile{miniltx.tex}. This package \xpackage{grfext} also +% relies on it. Example: +%\begin{quote} +%\begin{verbatim} +%\input miniltx.tex\relax +%\def\Gin@driver{pdftex.def} +%\input graphicx.sty\relax +%\input grfext.sty\relax +%\resetatcatcode +%\end{verbatim} +%\end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{Relead check and identification} +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode35=6 % # + \catcode39=12 % ' + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \catcode64=11 % @ + \catcode123=1 % { + \catcode125=2 % } + \expandafter\let\expandafter\x\csname ver@grfext.sty\endcsname + \ifx\x\relax % plain-TeX, first loading + \else + \def\empty{}% + \ifx\x\empty % LaTeX, first loading, + % variable is initialized, but \ProvidesPackage not yet seen + \else + \expandafter\ifx\csname PackageInfo\endcsname\relax + \def\x#1#2{% + \immediate\write-1{Package #1 Info: #2.}% + }% + \else + \def\x#1#2{\PackageInfo{#1}{#2, stopped}}% + \fi + \x{grfext}{The package is already loaded}% + \aftergroup\endinput + \fi + \fi +\endgroup% +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode35=6 % # + \catcode39=12 % ' + \catcode40=12 % ( + \catcode41=12 % ) + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode47=12 % / + \catcode58=12 % : + \catcode64=11 % @ + \catcode91=12 % [ + \catcode93=12 % ] + \catcode123=1 % { + \catcode125=2 % } + \expandafter\ifx\csname ProvidesPackage\endcsname\relax + \def\x#1#2#3[#4]{\endgroup + \immediate\write-1{Package: #3 #4}% + \xdef#1{#4}% + }% + \else + \def\x#1#2[#3]{\endgroup + #2[{#3}]% + \ifx#1\@undefined + \xdef#1{#3}% + \fi + \ifx#1\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@grfext.sty\endcsname +\ProvidesPackage{grfext}% + [2019/12/03 v1.3 Manage graphics extensions (HO)]% +% \end{macrocode} +% +% \subsection{Catcodes} +% +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x{\endgroup + \expandafter\edef\csname grfext@AtEnd\endcsname{% + \endlinechar=\the\endlinechar\relax + \catcode13=\the\catcode13\relax + \catcode32=\the\catcode32\relax + \catcode35=\the\catcode35\relax + \catcode61=\the\catcode61\relax + \catcode64=\the\catcode64\relax + \catcode123=\the\catcode123\relax + \catcode125=\the\catcode125\relax + }% + }% +\x\catcode61\catcode48\catcode32=10\relax% +\catcode13=5 % ^^M +\endlinechar=13 % +\catcode35=6 % # +\catcode64=11 % @ +\catcode123=1 % { +\catcode125=2 % } +\def\TMP@EnsureCode#1#2{% + \edef\grfext@AtEnd{% + \grfext@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{58}{12}% : +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\edef\grfext@AtEnd{\grfext@AtEnd\noexpand\endinput} +% \end{macrocode} +% +% \subsection{\plainTeX} +% +% \begin{macro}{\@expandtwoargs} +% Requirement is \xfile{miniltx.tex}, but we need also +% \LaTeX's \cs{@expandtwoargs}. +% \begin{macrocode} +\@ifundefined{@expandtwoargs}{% + \def\@expandtwoargs#1#2#3{% + \edef\reserved@a{\noexpand#1{#2}{#3}}% + \reserved@a + }% +}{} +% \end{macrocode} +% \end{macro} +% +% \subsection{Add} +% +% \begin{macro}{\AppendGraphicsExtensions} +% \begin{macrocode} +\newcommand*{\AppendGraphicsExtensions}{% + \@ifundefined{Gin@extensions}{% + \let\Gin@extensions\@empty + }{}% + \@ifstar{\grfext@Append\grfext@Check}{\grfext@Append\grfext@@Add}% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\grfext@Append} +% \begin{macrocode} +\def\grfext@Append#1#2{% + \let\grfext@Print\@gobble + \edef\grfext@next{% + \noexpand\grfext@Add\noexpand#1{% + \zap@space#2 \@empty + }{\noexpand\Gin@extensions,}{}% + }% + \grfext@next + \let\grfext@Print\grfext@@Print + \grfext@Print\AppendGraphicsExtensions +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PrependGraphicsExtensions} +% \begin{macrocode} +\newcommand*{\PrependGraphicsExtensions}{% + \@ifundefined{Gin@extensions}{% + \let\Gin@extensions\@empty + }{}% + \@ifstar{\grfext@Prepend\grfext@Check}{\grfext@Prepend\grfext@@Add}% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\grfext@Prepend} +% \begin{macrocode} +\def\grfext@Prepend#1#2{% + \let\grfext@Print\@gobble + \edef\grfext@next{% + \noexpand\grfext@Add\noexpand#1{% + \zap@space#2 \@empty + }{}{,\noexpand\Gin@extensions}% + }% + \grfext@next + \let\grfext@Print\grfext@@Print + \grfext@Print\PrependGraphicsExtensions +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\grfext@Add} +% \begin{macrocode} +\def\grfext@Add#1#2{% + #1{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\grfext@@Add} +% \begin{macrocode} +\def\grfext@@Add#1#2#3{% + \RemoveGraphicsExtensions{#1}% + \ifx\Gin@extensions\@empty + \def\Gin@extensions{#1}% + \else + \edef\Gin@extensions{#2#1#3}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Check} +% +% \begin{macro}{\grfext@Check} +% \begin{macrocode} +\def\grfext@Check#1{% + \let\grfext@tmp\@empty + \@for\grfext@ext:=#1\do{% + \@ifundefined{Gin@rule@\grfext@ext}{% + }{% + \ifx\grfext@tmp\@empty + \let\grfext@tmp\grfext@ext + \else + \edef\grfext@tmp{\grfext@tmp,\grfext@ext}% + \fi + }% + }% + \ifx\grfext@tmp\@empty + \def\grfext@next##1##2{}% + \else + \edef\grfext@next{% + \noexpand\grfext@@Add{\grfext@tmp}% + }% + \fi + \grfext@next +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Remove} +% +% \begin{macro}{\RemoveGraphicsExtensions} +% \begin{macrocode} +\newcommand*{\RemoveGraphicsExtensions}[1]{% + \@ifundefined{Gin@extensions}{% + \def\Gin@extensions{}% + }{% + \edef\grfext@tmp{\zap@space#1 \@empty}% + \@for\grfext@ext:=\grfext@tmp\do{% + \def\grfext@next{% + \let\grfext@tmp\Gin@extensions + \@expandtwoargs + \@removeelement\grfext@ext\Gin@extensions\Gin@extensions + \ifx\grfext@tmp\Gin@extensions + \let\grfext@next\relax + \fi + \grfext@next + }% + \grfext@next + }% + }% + \grfext@Print\RemoveGraphicsExtensions +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Print} +% +% \begin{macrocode} +\RequirePackage{infwarerr}[2007/09/09] +% \end{macrocode} +% +% \begin{macro}{\PrintGraphicsExtensions} +% \begin{macrocode} +\def\PrintGraphicsExtensions{% + \grfext@Print\PrintGraphicsExtensions +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\grfext@Print} +% \begin{macrocode} +\def\grfext@Print#1{% + \@PackageInfo{grfext}{% + Graphics extension search list:\MessageBreak + \@ifundefined{Gin@extensions}{% + % + }{% + [\Gin@extensions]% + }\MessageBreak + \string#1% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\grfext@@Print} +% \begin{macrocode} +\let\grfext@@Print\grfext@Print +% \end{macrocode} +% \end{macro} +% +% \subsection{Defining options for package \xpackage{graphicx}} +% +% \begin{macrocode} +\RequirePackage{kvdefinekeys}[2010/03/01] +\kv@define@key{Gin}{AppendGraphicsExtensions}{% + \AppendGraphicsExtensions{#1}% +} +\kv@define@key{Gin}{AppendGraphicsExtensions*}{% + \AppendGraphicsExtensions*{#1}% +} +\kv@define@key{Gin}{PrependGraphicsExtensions}{% + \PrependGraphicsExtensions{#1}% +} +\kv@define@key{Gin}{PrependGraphicsExtensions*}{% + \PrependGraphicsExtensions*{#1}% +} +\kv@define@key{Gin}{RemoveGraphicsExtensions}{% + \RemoveGraphicsExtensions{#1}% +} +\kv@define@key{Gin}{PrintGraphicsExtensions}[]{% + \PrintGraphicsExtensions +} +% \end{macrocode} +% +% \begin{macrocode} +\grfext@AtEnd% +% +% \end{macrocode} +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{grfext}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/grfext/grfext.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/grfext/grfext.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `grfext' +% are also available in a TDS compliant ZIP archive. There +% the packages are already unpacked and the documentation files +% are generated. The files and directories obey the TDS standard. +% \begin{description} +% \item[\CTANinstall{install/macros/latex/contrib/grfext.tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTANpkg{tds}). Directories +% with \xfile{texmf} in their name are usually organized this way. +% +% \subsection{Bundle installation} +% +% \paragraph{Unpacking.} Unpack the \xfile{grfext.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip grfext.tds.zip -d ~/texmf| +% \end{quote} +% +% \subsection{Package installation} +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex grfext.dtx| +% \end{quote} +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% grfext.sty & tex/latex/grfext/grfext.sty\\ +% grfext.pdf & doc/latex/grfext/grfext.pdf\\ +% grfext.dtx & source/latex/grfext/grfext.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution +% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \TeX\,Live\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{grfext.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by the +% configuration file \xfile{ltxdoc.cfg}. For instance, put this +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% An example follows how to generate the +% documentation with pdf\LaTeX: +% \begin{quote} +%\begin{verbatim} +%pdflatex grfext.dtx +%makeindex -s gind.ist grfext.idx +%pdflatex grfext.dtx +%makeindex -s gind.ist grfext.idx +%pdflatex grfext.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{graphics} +% David Carlisle, Sebastian Rahtz: \textit{The \xpackage{graphics} package}; +% 2006/02/20 v1.0o; +% \CTAN{macros/latex/required/graphics/graphics.dtx}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2007/09/30 v1.0} +% \item +% First public version. +% \end{Version} +% \begin{Version}{2010/08/19 v1.1} +% \item +% User macros are also made available as keyval options for +% package \xpackage{graphicx}. +% \end{Version} +% \begin{Version}{2016/05/16 v1.2} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/03 v1.3} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/grfext/grfext.pdf b/macros/latex/contrib/grfext/grfext.pdf new file mode 100644 index 0000000000..7199ac71ce Binary files /dev/null and b/macros/latex/contrib/grfext/grfext.pdf differ diff --git a/macros/latex/contrib/infwarerr/README.md b/macros/latex/contrib/infwarerr/README.md new file mode 100644 index 0000000000..4d4d3c7628 --- /dev/null +++ b/macros/latex/contrib/infwarerr/README.md @@ -0,0 +1,9 @@ +# infwarerr + +infwarerr package for LaTeX + + +This package provides a complete set of macros for informations, +warnings and error messages with support for plain TeX. + + diff --git a/macros/latex/contrib/infwarerr/infwarerr.dtx b/macros/latex/contrib/infwarerr/infwarerr.dtx new file mode 100644 index 0000000000..e93fc77df3 --- /dev/null +++ b/macros/latex/contrib/infwarerr/infwarerr.dtx @@ -0,0 +1,850 @@ +% \iffalse meta-comment +% +% File: infwarerr.dtx +% Version: 2019/12/03 v1.5 +% Info: Providing info/warning/error messages +% +% Copyright (C) +% 2007, 2010 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/infwarerr/issues +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any later +% version. This version of this license is in +% https://www.latex-project.org/lppl/lppl-1-3c.txt +% and the latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainers of this work are +% Heiko Oberdiek and the Oberdiek Package Support Group +% https://github.com/ho-tex/infwarerr/issues +% +% The Base Interpreter refers to any `TeX-Format', +% because some files are installed in TDS:tex/generic//. +% +% This work consists of the main source file infwarerr.dtx +% and the derived files +% infwarerr.sty, infwarerr.pdf, infwarerr.ins, infwarerr.drv, +% infwarerr-test1.tex, infwarerr-test2.tex, +% infwarerr-test3.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/infwarerr/infwarerr.dtx +% CTAN:macros/latex/contrib/infwarerr/infwarerr.pdf +% +% Unpacking: +% (a) If infwarerr.ins is present: +% tex infwarerr.ins +% (b) Without infwarerr.ins: +% tex infwarerr.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{infwarerr.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If infwarerr.drv is present: +% latex infwarerr.drv +% (b) Without infwarerr.drv: +% latex infwarerr.dtx; ... +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Programm calls to get the documentation (example): +% pdflatex infwarerr.dtx +% makeindex -s gind.ist infwarerr.idx +% pdflatex infwarerr.dtx +% makeindex -s gind.ist infwarerr.idx +% pdflatex infwarerr.dtx +% +% Installation: +% TDS:tex/generic/infwarerr/infwarerr.sty +% TDS:doc/latex/infwarerr/infwarerr.pdf +% TDS:source/latex/infwarerr/infwarerr.dtx +% +%<*ignore> +\begingroup + \catcode123=1 % + \catcode125=2 % + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +% +%<*install> +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: infwarerr +Version: 2019/12/03 v1.5 + +Copyright (C) + 2007, 2010 Heiko Oberdiek + 2016-2019 Oberdiek Package Support Group + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3c of this license or (at your option) any later +version. This version of this license is in + https://www.latex-project.org/lppl/lppl-1-3c.txt +and the latest version of this license is in + https://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainers of this work are +Heiko Oberdiek and the Oberdiek Package Support Group +https://github.com/ho-tex/infwarerr/issues + + +The Base Interpreter refers to any `TeX-Format', +because some files are installed in TDS:tex/generic//. + +This work consists of the main source file infwarerr.dtx +and the derived files + infwarerr.sty, infwarerr.pdf, infwarerr.ins, infwarerr.drv, + infwarerr-test1.tex, infwarerr-test2.tex, + infwarerr-test3.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{infwarerr.ins}{\from{infwarerr.dtx}{install}}% + \file{infwarerr.drv}{\from{infwarerr.dtx}{driver}}% + \usedir{tex/generic/infwarerr}% + \file{infwarerr.sty}{\from{infwarerr.dtx}{package}}% +% \usedir{doc/latex/infwarerr/test}% +% \file{infwarerr-test1.tex}{\from{infwarerr.dtx}{test1}}% +% \file{infwarerr-test2.tex}{\from{infwarerr.dtx}{test2}}% +% \file{infwarerr-test3.tex}{\from{infwarerr.dtx}{test3}}% +} + +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* infwarerr.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `infwarerr.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{infwarerr.drv}% + [2019/12/03 v1.5 Providing info/warning/error messages (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{infwarerr.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{infwarerr.drv} +% +% \title{The \xpackage{infwarerr} package} +% \date{2019/12/03 v1.5} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/infwarerr/issues}}} +% +% \maketitle +% +% \begin{abstract} +% This package provides a complete set of macros for informations, +% warnings and error messages with support for \plainTeX. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% Package \xpackage{infwarerr} defines the following set of commands, +% given as pseudo regular expression: +% \begin{quote} +% \verb+\@(Package|Class)(Info|InfoNoLine|Warning|WarningNoLine|Error)+^^A +% \kern-\rightmargin +% \end{quote} +% The first argument is the package or class in question. The second +% argument contains the message text. \cs{MessageBreak} is supported. +% In case of error messages, the third argument contains the help +% text. Supported are \LaTeX's message texts \cs{@ehc}: +% \begin{quote} +% |Try typing to proceed|\\ +% |If that doesn't work, type X to quit.| +% \end{quote} +% and \cs{@ehd}: +% \begin{quote} +% |You're in trouble here. Try typing to proceed|\\ +% |If that doesn't work, type X to quit.| +% \end{quote} +% +% The package is intended for macro writers that want to write +% code that works for both \LaTeX\ and \plainTeX. If \LaTeX\ is +% detected, then the macros of this package will only be wrappers +% for \LaTeX's macros. Otherwise \LaTeX's macros will be mimicked +% for use with \plainTeX. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{Reload check and package identification} +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode35=6 % # + \catcode39=12 % ' + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \catcode64=11 % @ + \catcode123=1 % { + \catcode125=2 % } + \expandafter\let\expandafter\x\csname ver@infwarerr.sty\endcsname + \ifx\x\relax % plain-TeX, first loading + \else + \def\empty{}% + \ifx\x\empty % LaTeX, first loading, + % variable is initialized, but \ProvidesPackage not yet seen + \else + \expandafter\ifx\csname PackageInfo\endcsname\relax + \def\x#1#2{% + \immediate\write-1{Package #1 Info: #2.}% + }% + \else + \def\x#1#2{\PackageInfo{#1}{#2, stopped}}% + \fi + \x{infwarerr}{The package is already loaded}% + \aftergroup\endinput + \fi + \fi +\endgroup% +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode35=6 % # + \catcode39=12 % ' + \catcode40=12 % ( + \catcode41=12 % ) + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode47=12 % / + \catcode58=12 % : + \catcode64=11 % @ + \catcode91=12 % [ + \catcode93=12 % ] + \catcode123=1 % { + \catcode125=2 % } + \expandafter\ifx\csname ProvidesPackage\endcsname\relax + \def\x#1#2#3[#4]{\endgroup + \immediate\write-1{Package: #3 #4}% + \xdef#1{#4}% + }% + \else + \def\x#1#2[#3]{\endgroup + #2[{#3}]% + \ifx#1\@undefined + \xdef#1{#3}% + \fi + \ifx#1\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@infwarerr.sty\endcsname +\ProvidesPackage{infwarerr}% + [2019/12/03 v1.5 Providing info/warning/error messages (HO)]% +% \end{macrocode} +% +% \subsection{Catcodes} +% +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x{\endgroup + \expandafter\edef\csname InfWarErr@AtEnd\endcsname{% + \endlinechar=\the\endlinechar\relax + \catcode13=\the\catcode13\relax + \catcode32=\the\catcode32\relax + \catcode35=\the\catcode35\relax + \catcode61=\the\catcode61\relax + \catcode64=\the\catcode64\relax + \catcode123=\the\catcode123\relax + \catcode125=\the\catcode125\relax + }% + }% +\x\catcode61\catcode48\catcode32=10\relax% +\catcode13=5 % ^^M +\endlinechar=13 % +\catcode35=6 % # +\catcode64=11 % @ +\catcode123=1 % { +\catcode125=2 % } +\def\TMP@EnsureCode#1#2{% + \edef\InfWarErr@AtEnd{% + \InfWarErr@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{10}{12}% ^^J +\TMP@EnsureCode{39}{12}% ' +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{58}{12}% : +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{94}{7}% ^ +\edef\InfWarErr@AtEnd{\InfWarErr@AtEnd\noexpand\endinput} +% \end{macrocode} +% +% \subsection{\LaTeX\ detection} +% +% \begin{macrocode} +\begingroup + \let\x=Y% + \def\check#1{% + \@check{Generic}{#1}% + \@check{Package}{#1}% + \@check{Class}{#1}% + }% + \def\@check#1#2{% + \expandafter\ifx\csname #1#2\endcsname\relax + \let\x=N% + \fi + }% + \check{Info}% + \check{Warning}% + \check{Error}% + \@check{Package}{WarningNoLine}% + \@check{Class}{WarningNoLine}% + \@check{}{@ehc}% + \@check{}{@ehd}% +\expandafter\endgroup +\ifx\x Y% +% \end{macrocode} +% +% \subsection{Version for \LaTeX} +% +% \begin{macro}{\@PackageInfo} +% \begin{macrocode} + \let\@PackageInfo\PackageInfo +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageInfoNoLine} +% \begin{macrocode} + \def\@PackageInfoNoLine#1#2{% + \PackageInfo{#1}{#2\@gobble}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassInfo} +% \begin{macrocode} + \let\@ClassInfo\ClassInfo +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassInfoNoLine} +% \begin{macrocode} + \def\@ClassInfoNoLine#1#2{% + \ClassInfo{#1}{#2\@gobble}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageWarning} +% \begin{macrocode} + \let\@PackageWarning\PackageWarning +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageWarningNoLine} +% \begin{macrocode} + \let\@PackageWarningNoLine\PackageWarningNoLine +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassWarning} +% \begin{macrocode} + \let\@ClassWarning\ClassWarning +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassWarningNoLine} +% \begin{macrocode} + \let\@ClassWarningNoLine\ClassWarningNoLine +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageError} +% \begin{macrocode} + \let\@PackageError\PackageError +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassError} +% \begin{macrocode} + \let\@ClassError\ClassError +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + \expandafter\InfWarErr@AtEnd +\fi% +% \end{macrocode} +% +% \subsection{Version for \plainTeX} +% +% \begin{macro}{\InfWarErr@online} +% \begin{macrocode} +\begingroup\expandafter\endgroup +\ifcase\expandafter\ifx\csname inputlineno\endcsname\relax + 0 % + \else + \ifnum\inputlineno<0 % + 0 % + \else + 1 % + \fi + \fi + \def\InfWarErr@online{}% +\else + \def\InfWarErr@online{ on input line \the\inputlineno}% +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\InfWarErr@protected} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname protected\endcsname\relax + \def\InfWarErr@protected{}% +\else + \let\InfWarErr@protected\protected +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\InfWarErr@unused} +% \begin{macrocode} +\chardef\InfWarErr@unused=16 % +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\InfWarErr@ehc} +% \begin{macrocode} +\def\InfWarErr@ehc{% + Try typing \space \space to proceed.\MessageBreak + If that doesn't work, type \space X \space to quit.% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\InfWarErr@ehd} +% \begin{macrocode} +\def\InfWarErr@ehd{% + You're in trouble here. \space\@ehc +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\InfWarErr@GenericInfo} +% \begin{macrocode} +\InfWarErr@protected\def\InfWarErr@GenericInfo#1#2{% + \begingroup + \let\on@line\InfWarErr@online + \long\def\@gobble##1{}% + \def\space{ }% + \def\@spaces{\space\space\space\space}% + \def\MessageBreak{^^J#1}% + \newlinechar=10 % + \escapechar=92 % + \immediate\write-1{#2\on@line.}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\InfWarErr@GenericWarning} +% \begin{macrocode} +\InfWarErr@protected\def\InfWarErr@GenericWarning#1#2{% + \begingroup + \let\on@line\InfWarErr@online + \long\def\@gobble##1{}% + \def\space{ }% + \def\@spaces{\space\space\space\space}% + \def\MessageBreak{^^J#1}% + \newlinechar=10 % + \escapechar=92 % + \immediate\write\InfWarErr@unused{^^J#2\on@line.^^J}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\InfWarErr@GenericError} +% Old \TeX\ versions below 3.141 where |^^J| is not working +% as newline in error message and help texts are not supported. +% \begin{macrocode} +\InfWarErr@protected\def\InfWarErr@GenericError#1#2#3#4{% + \begingroup + \immediate\write\InfWarErr@unused{}% + \def\space{ }% + \def\@spaces{\space\space\space\space}% + \let\@ehc\InfWarErr@ehc + \let\@ehd\InfWarErr@ehd + \let\on@line\InfWarErr@online + \def\MessageBreak{^^J}% + \newlinechar=10 % + \escapechar=92 % + \edef\InfWarErr@help{\noexpand\errhelp{#4}}% + \InfWarErr@help + \def\MessageBreak{^^J#1}% + \errmessage{% + #2.^^J^^J% + #3^^J% + Type \space H \space for immediate help.^^J ...^^J% + }% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@PackageInfo} +% \begin{macrocode} +\def\@PackageInfo#1#2{% + \InfWarErr@GenericInfo{% + (#1) \@spaces\@spaces\@spaces + }{% + Package #1 Info: #2% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageInfoNoLine} +% \begin{macrocode} +\def\@PackageInfoNoLine#1#2{% + \@PackageInfo{#1}{#2\@gobble}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassInfo} +% \begin{macrocode} +\def\@ClassInfo#1#2{% + \InfWarErr@GenericInfo{% + (#1) \space\space\@spaces\@spaces + }{% + Class #1 Info: #2% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassInfoNoLine} +% \begin{macrocode} +\def\@ClassInfoNoLine#1#2{% + \@ClassInfo{#1}{#2\@gobble}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageWarning} +% \begin{macrocode} +\def\@PackageWarning#1#2{% + \InfWarErr@GenericWarning{% + (#1)\@spaces\@spaces\@spaces\@spaces + }{% + Package #1 Warning: #2% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageWarningNoLine} +% \begin{macrocode} +\def\@PackageWarningNoLine#1#2{% + \@PackageWarning{#1}{#2\@gobble}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassWarning} +% \begin{macrocode} +\def\@ClassWarning#1#2{% + \InfWarErr@GenericWarning{% + (#1) \space\@spaces\@spaces\@spaces + }{% + Class #1 Warning: #2% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassWarningNoLine} +% \begin{macrocode} +\def\@ClassWarningNoLine#1#2{% + \@ClassWarning{#1}{#2\@gobble}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@PackageError} +% \begin{macrocode} +\def\@PackageError#1#2#3{% + \InfWarErr@GenericError{% + (#1)\@spaces\@spaces\@spaces\@spaces + }{% + Package #1 Error: #2% + }{% + See the #1 package documentation for explanation.% + }{#3}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ClassError} +% \begin{macrocode} +\def\@ClassError#1#2#3{% + \InfWarErr@GenericError{% + (#1) \space\@spaces\@spaces\@spaces + }{% + Class #1 Error: #2% + }{% + See the #1 class documentation for explanation.% + }{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\InfWarErr@AtEnd% +% +% \end{macrocode} +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{infwarerr}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/infwarerr/infwarerr.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/infwarerr/infwarerr.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `infwarerr' +% are also available in a TDS compliant ZIP archive. There +% the packages are already unpacked and the documentation files +% are generated. The files and directories obey the TDS standard. +% \begin{description} +% \item[\CTANinstall{install/macros/latex/contrib/infwarerr.tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTANpkg{tds}). Directories +% with \xfile{texmf} in their name are usually organized this way. +% +% \subsection{Bundle installation} +% +% \paragraph{Unpacking.} Unpack the \xfile{infwarerr.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip infwarerr.tds.zip -d ~/texmf| +% \end{quote} +% +% \subsection{Package installation} +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex infwarerr.dtx| +% \end{quote} +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% infwarerr.sty & tex/generic/infwarerr/infwarerr.sty\\ +% infwarerr.pdf & doc/latex/infwarerr/infwarerr.pdf\\ +% infwarerr.dtx & source/latex/infwarerr/infwarerr.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution +% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \TeX\,Live\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{infwarerr.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by the +% configuration file \xfile{ltxdoc.cfg}. For instance, put this +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% An example follows how to generate the +% documentation with pdf\LaTeX: +% \begin{quote} +%\begin{verbatim} +%pdflatex infwarerr.dtx +%makeindex -s gind.ist infwarerr.idx +%pdflatex infwarerr.dtx +%makeindex -s gind.ist infwarerr.idx +%pdflatex infwarerr.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/04/26 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2007/06/14 v1.1} +% \item +% Small fixes. +% \end{Version} +% \begin{Version}{2007/09/09 v1.2} +% \item +% Catcode section extended. +% \end{Version} +% \begin{Version}{2010/04/08 v1.3} +% \item +% Ensure \cs{escapechar}=92 (backslash) for infos/warnings/errors. +% \end{Version} +% \begin{Version}{2016/05/16 v1.4} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/03 v1.5} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/infwarerr/infwarerr.pdf b/macros/latex/contrib/infwarerr/infwarerr.pdf new file mode 100644 index 0000000000..6224227347 Binary files /dev/null and b/macros/latex/contrib/infwarerr/infwarerr.pdf differ diff --git a/macros/latex/contrib/letltxmacro/README.md b/macros/latex/contrib/letltxmacro/README.md new file mode 100644 index 0000000000..424339a06e --- /dev/null +++ b/macros/latex/contrib/letltxmacro/README.md @@ -0,0 +1,12 @@ +# letltxmacro + +letltxmacro package for LaTeX + + +TeX's \let assignment does not work for LaTeX macros +with optional arguments or for macros that are defined +as robust macros by \DeclareRobustCommand. This package +defines \LetLtxMacro that also takes care of the involved +internal macros. + + diff --git a/macros/latex/contrib/letltxmacro/letltxmacro.dtx b/macros/latex/contrib/letltxmacro/letltxmacro.dtx new file mode 100644 index 0000000000..76cb23cd9f --- /dev/null +++ b/macros/latex/contrib/letltxmacro/letltxmacro.dtx @@ -0,0 +1,825 @@ +% \iffalse meta-comment +% +% File: letltxmacro.dtx +% Version: 2019/12/03 v1.6 +% Info: Let assignment for LaTeX macros +% +% Copyright (C) +% 2008, 2010 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/letltxmacro/issues +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any later +% version. This version of this license is in +% https://www.latex-project.org/lppl/lppl-1-3c.txt +% and the latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainers of this work are +% Heiko Oberdiek and the Oberdiek Package Support Group +% https://github.com/ho-tex/letltxmacro/issues +% +% This work consists of the main source file letltxmacro.dtx +% and the derived files +% letltxmacro.sty, letltxmacro.pdf, letltxmacro.ins, letltxmacro.drv, +% letltxmacro-showcases.tex, letltxmacro-test1.tex, +% letltxmacro-test2.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/letltxmacro/letltxmacro.dtx +% CTAN:macros/latex/contrib/letltxmacro/letltxmacro.pdf +% +% Unpacking: +% (a) If letltxmacro.ins is present: +% tex letltxmacro.ins +% (b) Without letltxmacro.ins: +% tex letltxmacro.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{letltxmacro.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If letltxmacro.drv is present: +% latex letltxmacro.drv +% (b) Without letltxmacro.drv: +% latex letltxmacro.dtx; ... +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Programm calls to get the documentation (example): +% pdflatex letltxmacro.dtx +% makeindex -s gind.ist letltxmacro.idx +% pdflatex letltxmacro.dtx +% makeindex -s gind.ist letltxmacro.idx +% pdflatex letltxmacro.dtx +% +% Installation: +% TDS:tex/latex/letltxmacro/letltxmacro.sty +% TDS:doc/latex/letltxmacro/letltxmacro.pdf +% TDS:doc/latex/letltxmacro/letltxmacro-showcases.tex +% TDS:source/latex/letltxmacro/letltxmacro.dtx +% +%<*ignore> +\begingroup + \catcode123=1 % + \catcode125=2 % + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +% +%<*install> +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: letltxmacro +Version: 2019/12/03 v1.6 + +Copyright (C) + 2008, 2010 Heiko Oberdiek + 2016-2019 Oberdiek Package Support Group + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3c of this license or (at your option) any later +version. This version of this license is in + https://www.latex-project.org/lppl/lppl-1-3c.txt +and the latest version of this license is in + https://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainers of this work are +Heiko Oberdiek and the Oberdiek Package Support Group +https://github.com/ho-tex/letltxmacro/issues + + +This work consists of the main source file letltxmacro.dtx +and the derived files + letltxmacro.sty, letltxmacro.pdf, letltxmacro.ins, letltxmacro.drv, + letltxmacro-showcases.tex, letltxmacro-test1.tex, + letltxmacro-test2.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{letltxmacro.ins}{\from{letltxmacro.dtx}{install}}% + \file{letltxmacro.drv}{\from{letltxmacro.dtx}{driver}}% + \usedir{tex/latex/letltxmacro}% + \file{letltxmacro.sty}{\from{letltxmacro.dtx}{package}}% + \usedir{doc/latex/letltxmacro}% + \file{letltxmacro-showcases.tex}{\from{letltxmacro.dtx}{showcases}}% +% \usedir{doc/latex/letltxmacro/test}% +% \file{letltxmacro-test1.tex}{\from{letltxmacro.dtx}{test1}}% +% \file{letltxmacro-test2.tex}{\from{letltxmacro.dtx}{test2}}% +} + +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* letltxmacro.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `letltxmacro.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{letltxmacro.drv}% + [2019/12/03 v1.6 Let assignment for LaTeX macros (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{letltxmacro.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{letltxmacro.drv} +% +% \title{The \xpackage{letltxmacro} package} +% \date{2019/12/03 v1.6} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/letltxmacro/issues}}} +% +% \maketitle +% +% \begin{abstract} +% \TeX's \cs{let} assignment does not work for \LaTeX\ macros +% with optional arguments or for macros that are defined +% as robust macros by \cs{DeclareRobustCommand}. This package +% defines \cs{LetLtxMacro} that also takes care of the involved +% internal macros. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% If someone wants to redefine a macro with using the old +% meaning, then one method is \TeX's command \cs{let}: +%\begin{quote} +%\begin{verbatim} +%\newcommand{\Macro}{\typeout{Test Macro}} +%\let\SavedMacro=\Macro +%\renewcommand{\Macro}{% +% \typeout{Begin}% +% \SavedMacro +% \typeout{End}% +%} +%\end{verbatim} +%\end{quote} +% However, this method fails, if \cs{Macro} is defined +% by \cs{DeclareRobustCommand} and/or has an optional argument. +% In both cases \LaTeX\ defines an additional internal macro +% that is forgotten in the simple \cs{let} assignment of +% the example above. +% +% \begin{declcs}{LetLtxMacro} \M{new macro} \M{old macro} +% \end{declcs} +% Macro \cs{LetLtxMacro} behaves similar to \TeX's \cs{let} +% assignment, but it takes care of macros that are +% defined by \cs{DeclareRobustCommand} and/or have optional +% arguments. Example: +%\begin{quote} +%\begin{verbatim} +%\DeclareRobustCommand{\Macro}[1][default]{...} +%\LetLtxMacro{\SavedMacro}{\Macro} +%\end{verbatim} +%\end{quote} +% Then macro \cs{SavedMacro} only uses internal macro names +% that are derived from \cs{SavedMacro}'s macro name. Macro \cs{Macro} +% can now be redefined without affecting \cs{SavedMacro}. +% +% \begin{declcs}{GlobalLetLtxMacro} \M{new macro} \M{old macro} +% \end{declcs} +% Like \cs{LetLtxMacro}, but the \meta{new macro} is defined globally. +% Since version 2019/12/03~v1.4. +% +% \subsection{Supported macro definition commands} +% +% \begin{quote} +% \begin{tabular}{@{}ll@{}} +% \cs{newcommand}, \cs{renewcommand} & latex/base\\ +% \cs{newenvironment}, \cs{renewenvironment} & latex/base\\ +% \cs{DeclareRobustCommand}& latex/base\\ +% \cs{newrobustcmd}, \cs{renewrobustcmd} & etoolbox\\ +% \cs{robustify} & etoolbox 2008/06/22 v1.6\\ +% \end{tabular} +% \end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Show cases} +% +% \subsubsection{\xfile{letltxmacro-showcases.tex}} +% +% \begin{macrocode} +%<*showcases> +\NeedsTeXFormat{LaTeX2e} +\makeatletter +% \end{macrocode} +% \begin{macro}{\Line} +% The result is displayed by macro \cs{Line}. The percent symbol +% at line start allows easy grepping and inserting into the DTX +% file. +% \begin{macrocode} +\newcommand*{\Line}[1]{% + \typeout{\@percentchar#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\newcommand*{\ShowCmdName}[1]{% + \@ifundefined{#1}{}{% + \Line{% + \space\space(\expandafter\string\csname#1\endcsname) = % + (\expandafter\meaning\csname#1\endcsname)% + }% + }% +} +\newcommand*{\ShowCmds}[1]{% + \ShowCmdName{#1}% + \ShowCmdName{#1 }% + \ShowCmdName{\\#1}% + \ShowCmdName{\\#1 }% +} +\let\\\@backslashchar +% \end{macrocode} +% \begin{macro}{\ShowDef} +% \begin{macrocode} +\newcommand*{\ShowDef}[2]{% + \begingroup + \Line{}% + \newcommand*{\DefString}{#2}% + \@onelevel@sanitize\DefString + \Line{\DefString}% + #2% + \ShowCmds{#1}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\typeout{} +\Line{* LaTeX definitions:} +\ShowDef{cmd}{% + \newcommand{\cmd}[2][default]{}% +} +\ShowDef{cmd}{% + \DeclareRobustCommand{\cmd}{}% +} +\ShowDef{cmd}{% + \DeclareRobustCommand{\cmd}[2][default]{}% +} +\typeout{} +% \end{macrocode} +% The minimal version of package \xpackage{etoolbox} is 2008/06/12 v1.6a +% because it fixes \cs{robustify}. +% \begin{macrocode} +\RequirePackage{etoolbox}[2008/06/12]% +\Line{} +\Line{* etoolbox's robust definitions:} +\ShowDef{cmd}{% + \newrobustcmd{\cmd}{}% +} +\ShowDef{cmd}{% + \newrobustcmd{\cmd}[2][default]{}% +} +\Line{} +\Line{* etoolbox's \string\robustify:} +\ShowDef{cmd}{% + \newcommand{\cmd}[2][default]{} % + \robustify{\cmd}% +} +\ShowDef{cmd}{% + \DeclareRobustCommand{\cmd}{} % + \robustify{\cmd}% +} +\ShowDef{cmd}{% + \DeclareRobustCommand{\cmd}[2][default]{} % + \robustify{\cmd}% +} +\typeout{} +\@@end +% +% \end{macrocode} +% +% \subsubsection{Result} +% +% \begingroup +% \makeatletter +% \let\org@verbatim\@verbatim +% \def\@verbatim{^^A +% \org@verbatim +% \catcode`\~=\active +% }^^A +% \let~\textvisiblespace +%\begin{verbatim} +%* LaTeX definitions: +% +%\newcommand {\cmd }[2][default]{} +% (\cmd) = (macro:->\@protected@testopt \cmd \\cmd {default}) +% (\\cmd) = (\long macro:[#1]#2->) +% +%\DeclareRobustCommand {\cmd }{} +% (\cmd) = (macro:->\protect \cmd~ ) +% (\cmd~) = (\long macro:->) +% +%\DeclareRobustCommand {\cmd }[2][default]{} +% (\cmd) = (macro:->\protect \cmd~ ) +% (\cmd~) = (macro:->\@protected@testopt \cmd~ \\cmd~ {default}) +% (\\cmd~) = (\long macro:[#1]#2->) +% +%* etoolbox's robust definitions: +% +%\newrobustcmd {\cmd }{} +% (\cmd) = (\protected\long macro:->) +% +%\newrobustcmd {\cmd }[2][default]{} +% (\cmd) = (\protected macro:->\@testopt \\cmd {default}) +% (\\cmd) = (\long macro:[#1]#2->) +% +%* etoolbox's \robustify: +% +%\newcommand {\cmd }[2][default]{} \robustify {\cmd } +% (\cmd) = (\protected macro:->\@protected@testopt \cmd \\cmd {default}) +% (\\cmd) = (\long macro:[#1]#2->) +% +%\DeclareRobustCommand {\cmd }{} \robustify {\cmd } +% (\cmd) = (\protected macro:->) +% +%\DeclareRobustCommand {\cmd }[2][default]{} \robustify {\cmd } +% (\cmd) = (\protected macro:->\@protected@testopt \cmd~ \\cmd~ {default}) +% (\cmd~) = (macro:->\@protected@testopt \cmd~ \\cmd~ {default}) +% (\\cmd~) = (\long macro:[#1]#2->) +%\end{verbatim} +% \endgroup +% +% \subsection{Package} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsubsection{Catcodes and identification} +% +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x{\endgroup + \expandafter\edef\csname llm@AtEnd\endcsname{% + \endlinechar=\the\endlinechar\relax + \catcode13=\the\catcode13\relax + \catcode32=\the\catcode32\relax + \catcode35=\the\catcode35\relax + \catcode61=\the\catcode61\relax + \catcode64=\the\catcode64\relax + \catcode123=\the\catcode123\relax + \catcode125=\the\catcode125\relax + }% + }% +\x\catcode61\catcode48\catcode32=10\relax% +\catcode13=5 % ^^M +\endlinechar=13 % +\catcode35=6 % # +\catcode64=11 % @ +\catcode123=1 % { +\catcode125=2 % } +\def\TMP@EnsureCode#1#2{% + \edef\llm@AtEnd{% + \llm@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{58}{12}% : +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\edef\llm@AtEnd{% + \llm@AtEnd + \escapechar\the\escapechar\relax + \noexpand\endinput +} +\escapechar=92 % `\\ +% \end{macrocode} +% +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{letltxmacro}% + [2019/12/03 v1.6 Let assignment for LaTeX macros (HO)] +% \end{macrocode} +% +% \subsubsection{Main macros} +% +% \begin{macro}{\LetLtxMacro} +% \begin{macrocode} +\newcommand*{\LetLtxMacro}{% + \llm@ModeLetLtxMacro{}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\GlobalLetLtxMacro} +% \begin{macrocode} +\newcommand*{\GlobalLetLtxMacro}{% + \llm@ModeLetLtxMacro\global +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\llm@ModeLetLtxMacro} +% \begin{macrocode} +\newcommand*{\llm@ModeLetLtxMacro}[3]{% + \edef\llm@escapechar{\the\escapechar}% + \escapechar=-1 % + \edef\reserved@a{% + \noexpand\protect + \expandafter\noexpand + \csname\string#3 \endcsname + }% + \ifx\reserved@a#3\relax + #1\edef#2{% + \noexpand\protect + \expandafter\noexpand + \csname\string#2 \endcsname + }% + #1\expandafter\let + \csname\string#2 \expandafter\endcsname + \csname\string#3 \endcsname + \expandafter\llm@LetLtxMacro + \csname\string#2 \expandafter\endcsname + \csname\string#3 \endcsname{#1}% + \else + \llm@LetLtxMacro{#2}{#3}{#1}% + \fi + \escapechar=\llm@escapechar\relax +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@LetLtxMacro} +% \begin{macrocode} +\def\llm@LetLtxMacro#1#2#3{% + \escapechar=92 % + \expandafter\llm@CheckParams\meaning#2:->\@nil{% + \begingroup + \def\@protected@testopt{% + \expandafter\@testopt\@gobble + }% + \def\@testopt##1##2{% + \toks@={##2}% + }% + \let\llm@testopt\@empty + \edef\x{% + \noexpand\@protected@testopt + \noexpand#2% + \expandafter\noexpand\csname\string#2\endcsname + }% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\y + \expandafter\expandafter\expandafter{% + \expandafter\llm@CarThree#2{}{}{}\llm@nil + }% + \ifx\x\y + #2% + \def\llm@testopt{% + \noexpand\@protected@testopt + \noexpand#1% + }% + \else + \edef\x{% + \noexpand\@testopt + \expandafter\noexpand + \csname\string#2\endcsname + }% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\y + \expandafter\expandafter\expandafter{% + \expandafter\llm@CarTwo#2{}{}\llm@nil + }% + \ifx\x\y + #2% + \def\llm@testopt{% + \noexpand\@testopt + }% + \fi + \fi + \ifx\llm@testopt\@empty + \else + \llm@protected\xdef\llm@GlobalTemp{% + \llm@testopt + \expandafter\noexpand + \csname\string#1\endcsname + {\the\toks@}% + }% + \fi + \expandafter\endgroup\ifx\llm@testopt\@empty + #3\let#1=#2\relax + \else + #3\let#1=\llm@GlobalTemp + #3\expandafter\let + \csname\string#1\expandafter\endcsname + \csname\string#2\endcsname + \fi + }{% + #3\let#1=#2\relax + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@CheckParams} +% \begin{macrocode} +\def\llm@CheckParams#1:->#2\@nil{% + \begingroup + \def\x{#1}% + \ifx\x\llm@macro + \endgroup + \def\llm@protected{}% + \expandafter\@firstoftwo + \else + \ifx\x\llm@protectedmacro + \endgroup + \def\llm@protected{\protected}% + \expandafter\expandafter\expandafter\@firstoftwo + \else + \endgroup + \expandafter\expandafter\expandafter\@secondoftwo + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@macro} +% \begin{macrocode} +\def\llm@macro{macro} +\@onelevel@sanitize\llm@macro +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@protectedmacro} +% \begin{macrocode} +\def\llm@protectedmacro{\protected macro} +\@onelevel@sanitize\llm@protectedmacro +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@CarThree} +% \begin{macrocode} +\def\llm@CarThree#1#2#3#4\llm@nil{#1#2#3}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\llm@CarTwo} +% \begin{macrocode} +\def\llm@CarTwo#1#2#3\llm@nil{#1#2}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\llm@AtEnd% +% +% \end{macrocode} +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{letltxmacro}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/letltxmacro/letltxmacro.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/letltxmacro/letltxmacro.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `letltxmacro' +% are also available in a TDS compliant ZIP archive. There +% the packages are already unpacked and the documentation files +% are generated. The files and directories obey the TDS standard. +% \begin{description} +% \item[\CTANinstall{install/macros/latex/contrib/letltxmacro.tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTANpkg{tds}). Directories +% with \xfile{texmf} in their name are usually organized this way. +% +% \subsection{Bundle installation} +% +% \paragraph{Unpacking.} Unpack the \xfile{letltxmacro.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip letltxmacro.tds.zip -d ~/texmf| +% \end{quote} +% +% \subsection{Package installation} +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex letltxmacro.dtx| +% \end{quote} +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% letltxmacro.sty & tex/latex/letltxmacro/letltxmacro.sty\\ +% letltxmacro.pdf & doc/latex/letltxmacro/letltxmacro.pdf\\ +% letltxmacro-showcases.tex & doc/latex/letltxmacro/letltxmacro-showcases.tex\\ +% letltxmacro.dtx & source/latex/letltxmacro/letltxmacro.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution +% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \TeX\,Live\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{letltxmacro.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by the +% configuration file \xfile{ltxdoc.cfg}. For instance, put this +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% An example follows how to generate the +% documentation with pdf\LaTeX: +% \begin{quote} +%\begin{verbatim} +%pdflatex letltxmacro.dtx +%makeindex -s gind.ist letltxmacro.idx +%pdflatex letltxmacro.dtx +%makeindex -s gind.ist letltxmacro.idx +%pdflatex letltxmacro.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2008/06/09 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2008/06/12 v1.1} +% \item +% Support for \xpackage{etoolbox}'s \cs{newrobustcmd} added. +% \end{Version} +% \begin{Version}{2008/06/13 v1.2} +% \item +% Support for \xpackage{etoolbox}'s \cs{robustify} added. +% \end{Version} +% \begin{Version}{2008/06/24 v1.3} +% \item +% Test file adapted for etoolbox 2008/06/22 v1.6. +% \end{Version} +% \begin{Version}{2010/09/02 v1.4} +% \item +% \cs{GlobalLetLtxMacro} added. +% \end{Version} +% \begin{Version}{2016/05/16 v1.5} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/03 v1.6} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/letltxmacro/letltxmacro.pdf b/macros/latex/contrib/letltxmacro/letltxmacro.pdf new file mode 100644 index 0000000000..758a8360dc Binary files /dev/null and b/macros/latex/contrib/letltxmacro/letltxmacro.pdf differ diff --git a/macros/latex/contrib/mleftright/README.md b/macros/latex/contrib/mleftright/README.md new file mode 100644 index 0000000000..d4b097b0ea --- /dev/null +++ b/macros/latex/contrib/mleftright/README.md @@ -0,0 +1,12 @@ +# mleftright + +mleftright package for LaTeX + + +TeX sets subformulas by \left and \right as inner formulas +with additional surrounding spaces in some situations. This package +provides \mleft and \mright that call \left and \right, +but the delimiters will act as normal \mathopen and \mathclose +delimiters without the additional space of an inner formula. + + diff --git a/macros/latex/contrib/mleftright/mleftright.dtx b/macros/latex/contrib/mleftright/mleftright.dtx new file mode 100644 index 0000000000..ec52c6c3b5 --- /dev/null +++ b/macros/latex/contrib/mleftright/mleftright.dtx @@ -0,0 +1,815 @@ +% \iffalse meta-comment +% +% File: mleftright.dtx +% Version: 2019/12/03 v1.2 +% Info: Math left/right delim. as open/close +% +% Copyright (C) +% 2010 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/mleftright/issues +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any later +% version. This version of this license is in +% https://www.latex-project.org/lppl/lppl-1-3c.txt +% and the latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainers of this work are +% Heiko Oberdiek and the Oberdiek Package Support Group +% https://github.com/ho-tex/mleftright/issues +% +% The Base Interpreter refers to any `TeX-Format', +% because some files are installed in TDS:tex/generic//. +% +% This work consists of the main source file mleftright.dtx +% and the derived files +% mleftright.sty, mleftright.pdf, mleftright.ins, mleftright.drv, +% mleftright-test1.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/mleftright/mleftright.dtx +% CTAN:macros/latex/contrib/mleftright/mleftright.pdf +% +% Unpacking: +% (a) If mleftright.ins is present: +% tex mleftright.ins +% (b) Without mleftright.ins: +% tex mleftright.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{mleftright.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If mleftright.drv is present: +% latex mleftright.drv +% (b) Without mleftright.drv: +% latex mleftright.dtx; ... +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Programm calls to get the documentation (example): +% pdflatex mleftright.dtx +% makeindex -s gind.ist mleftright.idx +% pdflatex mleftright.dtx +% makeindex -s gind.ist mleftright.idx +% pdflatex mleftright.dtx +% +% Installation: +% TDS:tex/generic/mleftright/mleftright.sty +% TDS:doc/latex/mleftright/mleftright.pdf +% TDS:source/latex/mleftright/mleftright.dtx +% +%<*ignore> +\begingroup + \catcode123=1 % + \catcode125=2 % + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +% +%<*install> +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package: mleftright 2019/12/03 v1.2 Math left/right delim. as open/close (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: mleftright +Version: 2019/12/03 v1.2 + +Copyright (C) + 2010 Heiko Oberdiek + 2016-2019 Oberdiek Package Support Group + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3c of this license or (at your option) any later +version. This version of this license is in + https://www.latex-project.org/lppl/lppl-1-3c.txt +and the latest version of this license is in + https://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainers of this work are +Heiko Oberdiek and the Oberdiek Package Support Group +https://github.com/ho-tex/mleftright/issues + + +The Base Interpreter refers to any `TeX-Format', +because some files are installed in TDS:tex/generic//. + +This work consists of the main source file mleftright.dtx +and the derived files + mleftright.sty, mleftright.pdf, mleftright.ins, mleftright.drv, + mleftright-test1.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{mleftright.ins}{\from{mleftright.dtx}{install}}% + \file{mleftright.drv}{\from{mleftright.dtx}{driver}}% + \usedir{tex/generic/mleftright}% + \file{mleftright.sty}{\from{mleftright.dtx}{package}}% +% \usedir{doc/latex/mleftright/test}% +% \file{mleftright-test1.tex}{\from{mleftright.dtx}{test1}}% +} + +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* mleftright.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `mleftright.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{mleftright.drv}% + [2019/12/03 v1.2 Math left/right delim. as open/close (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\usepackage{mleftright}[2019/12/03] +\begin{document} + \DocInput{mleftright.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{mleftright.drv} +% +% \title{The \xpackage{mleftright} package} +% \date{2019/12/03 v1.2} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/mleftright/issues}}} +% +% \maketitle +% +% \begin{abstract} +% \TeX\ sets subformulas by \cs{left} and \cs{right} as inner formulas +% with additional surrounding spaces in some situations. This package +% provides \cs{mleft} and \cs{mright} that call \cs{left} and \cs{right}, +% but the delimiters will act as normal \cs{mathopen} and \cs{mathclose} +% delimiters without the additional space of an inner formula. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% The package is a result of a thread in the newsgroup \textsf{comp.text.tex} +% with the subject \textit{spacing after \cs{right}\texttt{)} +% and before \cs{left}\texttt{)}} \cite{dave}. +% The problem: \cs{left} and \cs{right} adjust the size of the +% delimiters automatically. However, \TeX\ treats the whole expression +% as inner formula. In some circumstances \TeX\ adds extra space +% before or after an inner formula. +% Example: +% \begin{quote} +% \thinmuskip=1.5\thinmuskip +% \begin{tabular}{@{}l@{\quad$\Rightarrow$\quad}l@{}} +% |$\sin(x^2), x$| +% & $\sin(x^2), x$\\ +% |$\sin\left(x^2\right), x$| +% & $\sin\left(x^2\right), x$\\ +% ^^A \multicolumn{1}{@{}r@{\quad$\Rightarrow$\quad}}{^^A +% ^^A \itshape with exaggerated spacing^^A +% ^^A } +% ^^A & $\thinmuskip=4\thinmuskip +% ^^A \sin\left(x^2\right){,}\mskip.25\thinmuskip x$\\ +% |$\sin\mleft(x^2\mright), x$| +% & $\sin\mleft(x^2\mright), x$\\ +% \end{tabular}\\*[.5ex] +% (\cs{mleft} and \cs{mright} are provided by this package.) +% \end{quote} +% +% In the newsgroup Donald Arseneau answered with clever macros \cite{arseneau}: +% \begin{quote} +%\begin{verbatim} +%\newcommand\lft{\mathopen{}\left} +%\newcommand\rgt{\aftergroup\mathclose\aftergroup{\aftergroup}\right} +%\end{verbatim} +% \end{quote} +% However one problem remains, a following subscript or superscript +% is not applied to the right delimiter but the empty +% \cs{mathclose}. +% Thus Philipp Stephani provided an improvement \cite{stephani}: +%\begin{quote} +%\begin{verbatim} +%\mathopen{} \mathclose{\left\| A^2 \right\|}_2 +%\end{verbatim} +%\end{quote} +% Heiko Oberdiek converted this into macro form \cite{oberdiek}: +%\begin{quote} +%\begin{verbatim} +%\newcommand\lft{\mathopen{}\mathclose\bgroup\left} +%\newcommand\rgt{\aftergroup\egroup\right} +%\end{verbatim} +%\end{quote} +% +% The package uses longer macro names \cs{mleft} and \cs{mright} +% to avoid name clashes. Also it adds some checks for error conditions. +% +% \subsection{Use} +% +% \begin{declcs}{mleft}\meta{delimL} \dots\unkern\ \cs{mright}\meta{delimR} +% \end{declcs} +% Macros \cs{mleft} and \cs{mright} are used in the same way as +% \cs{left} and \cs{right}. Also \cs{middle} can be used inbetween if +% \eTeX\ is present. +% +% \begin{declcs}{mleftright} +% \end{declcs} +% Macro \cs{mleftright} redefines \cs{left} as \cs{mleft} and +% \cs{right} as \cs{mright}. The redefinition is local to the group. +% +% \begin{declcs}{mleftrightrestore} +% \end{declcs} +% Macro \cs{mleftright} restores \cs{left} and \cs{right} with +% the original meaning if they were previously redefined by +% \cs{mleftright} (also locally). +% +% +% \StopEventually{ +% } +% +% \section{Implementation} +% \begin{macrocode} +%<*package> +% \end{macrocode} +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode35=6 % # + \catcode39=12 % ' + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode58=12 % : + \catcode64=11 % @ + \catcode123=1 % { + \catcode125=2 % } + \expandafter\let\expandafter\x\csname ver@mleftright.sty\endcsname + \ifx\x\relax % plain-TeX, first loading + \else + \def\empty{}% + \ifx\x\empty % LaTeX, first loading, + % variable is initialized, but \ProvidesPackage not yet seen + \else + \expandafter\ifx\csname PackageInfo\endcsname\relax + \def\x#1#2{% + \immediate\write-1{Package #1 Info: #2.}% + }% + \else + \def\x#1#2{\PackageInfo{#1}{#2, stopped}}% + \fi + \x{mleftright}{The package is already loaded}% + \aftergroup\endinput + \fi + \fi +\endgroup% +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode35=6 % # + \catcode39=12 % ' + \catcode40=12 % ( + \catcode41=12 % ) + \catcode44=12 % , + \catcode45=12 % - + \catcode46=12 % . + \catcode47=12 % / + \catcode58=12 % : + \catcode64=11 % @ + \catcode91=12 % [ + \catcode93=12 % ] + \catcode123=1 % { + \catcode125=2 % } + \expandafter\ifx\csname ProvidesPackage\endcsname\relax + \def\x#1#2#3[#4]{\endgroup + \immediate\write-1{Package: #3 #4}% + \xdef#1{#4}% + }% + \else + \def\x#1#2[#3]{\endgroup + #2[{#3}]% + \ifx#1\@undefined + \xdef#1{#3}% + \fi + \ifx#1\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@mleftright.sty\endcsname +\ProvidesPackage{mleftright}% + [2019/12/03 v1.2 Math left/right delim. as open/close (HO)]% +% \end{macrocode} +% +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x{\endgroup + \expandafter\edef\csname mleftright@AtEnd\endcsname{% + \endlinechar=\the\endlinechar\relax + \catcode13=\the\catcode13\relax + \catcode32=\the\catcode32\relax + \catcode35=\the\catcode35\relax + \catcode61=\the\catcode61\relax + \catcode64=\the\catcode64\relax + \catcode123=\the\catcode123\relax + \catcode125=\the\catcode125\relax + }% + }% +\x\catcode61\catcode48\catcode32=10\relax% +\catcode13=5 % ^^M +\endlinechar=13 % +\catcode35=6 % # +\catcode64=11 % @ +\catcode123=1 % { +\catcode125=2 % } +\def\TMP@EnsureCode#1#2{% + \edef\mleftright@AtEnd{% + \mleftright@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{38}{4}% & +\TMP@EnsureCode{39}{12}% ' +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{43}{12}% + +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\edef\mleftright@AtEnd{% + \mleftright@AtEnd + \escapechar\the\escapechar\relax + \noexpand\endinput +} +\escapechar=92 % +% \end{macrocode} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax + \input ltxcmds.sty\relax +\else + \RequirePackage{infwarerr}[2010/04/08]% + \RequirePackage{ltxcmds}[2010/04/26]% +\fi +% \end{macrocode} +% +% The original commands \cs{left} and \cs{right} +% are saved and later used in \cs{mleft} and +% \cs{mright} in order to deal with: +% \begin{quote} +%\begin{verbatim} +%\let\left\mleft +%\let\right\mright +%\end{verbatim} +% \end{quote} +% \begin{macro}{\mleftright@OrgLeft} +% \begin{macrocode} +\let\mleftright@OrgLeft\left +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mleftright@OrgRight} +% \begin{macrocode} +\let\mleftright@OrgRight\right +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mleftright@Def} +% Macro \cs{mleftright@Def} defines a macro as robust macro +% if \eTeX\ or \LaTeX\ is available. +% \begin{macrocode} +\ltx@IfUndefined{protected}{% + \ltx@IfUndefined{DeclareRobustCommand}{% + \def\mleftright@Def{\def}% + }{% + \def\mleftright@Def{\DeclareRobustCommand*}% + }% +}{% + \def\mleftright@Def{\protected\def}% +} +\edef\mleftright@Def#1{% + \noexpand\ltx@IfUndefined{% + \noexpand\expandafter\noexpand\ltx@gobble\noexpand\string#1% + }{% + \expandafter\noexpand\mleftright@Def#1% + }{% + \noexpand\@PackageError{mleftright}{% + Command \noexpand\string#1 already defined% + }\noexpand\@ehd + \noexpand\ltx@gobble + }% +} +% \end{macrocode} +% \end{macro} +% +% In case of \eTeX\ the group status after the left symbol +% is saved and later checked at the beginning of \cs{mright}. +% \begin{macrocode} +\ltx@IfUndefined{currentgrouplevel}{% + \catcode38=14 % & = comment +}{% + \catcode38=9 % & = ignore +} +% \end{macrocode} +% +% \begin{macro}{\mleftright@GroupLevel} +% \begin{macrocode} +& \def\mleftright@GroupLevel{-1}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mleftright@WrongGroup} +% \begin{macrocode} +& \def\mleftright@WrongGroup#1(#2){% +& \ifnum\mleftright@GroupLevel<\ltx@zero +& \@PackageError{mleftright}{% +& Missing previous \string\mleft +& }\@ehc +& \else +& \@PackageError{mleftright}{% +& Unexpected group status for \string\mright% +& \ifnum\mleftright@GroupLevel=#1 % +& \else +& .\MessageBreak +& Group level is #1, % +& expected is \mleftright@GroupLevel +& \fi +& \ifnum16=#2 % +& \else +& .\MessageBreak +& Group type is #2 (% +& \ifcase#2 % +& bottom level% +& \expandafter\expandafter\expandafter\ltx@gobblefour +& \expandafter\ltx@gobbletwo +& \or simple% +& \or hbox% +& \or adjusted hbox% +& \or vbox% +& \or vtop% +& \or align% +& \or no align% +& \or output% +& \or math% +& \or disc% +& \or insert% +& \or vcenter% +& \or math choice% +& \or semi simple% +& \or math shift% +& \or math left% +& \else +& unknown% +& \fi +& \space group),\MessageBreak +& expected is 16 (math left group)% +& \fi +& }\@ehd +& \fi +& }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mleft} +% \begin{macrocode} +\mleftright@Def\mleft{% + \mathopen{}\mathclose\bgroup +& \edef\mleftright@GroupLevel{\the\numexpr\the\currentgrouplevel+1}% + \mleftright@OrgLeft +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mright} +% \begin{macrocode} +\mleftright@Def\mright{% +& \ifnum\mleftright@GroupLevel=\currentgrouplevel +& \ifnum16=\currentgrouptype + \aftergroup\egroup +& \else +& \expandafter\mleftright@WrongGroup +& \the\expandafter\currentgrouplevel +& \expandafter(\the\currentgrouptype)% +& \fi +& \else +& \expandafter\mleftright@WrongGroup +& \the\expandafter\currentgrouplevel +& \expandafter(\the\currentgrouptype)% +& \fi + \mleftright@OrgRight +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mleftright} +% \begin{macrocode} +\mleftright@Def\mleftright{% + \let\left\mleft + \let\right\mright +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mleftrightrestore} +% \begin{macrocode} +\mleftright@Def\mleftrightrestore{% + \ifx\left\mleft + \let\left\mleftright@OrgLeft + \fi + \ifx\right\mright + \let\right\mleftright@OrgRight + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\mleftright@AtEnd% +% +% \end{macrocode} +%% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{mleftright}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/mleftright/mleftright.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/mleftright/mleftright.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `mleftright' +% are also available in a TDS compliant ZIP archive. There +% the packages are already unpacked and the documentation files +% are generated. The files and directories obey the TDS standard. +% \begin{description} +% \item[\CTANinstall{install/macros/latex/contrib/mleftright.tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTANpkg{tds}). Directories +% with \xfile{texmf} in their name are usually organized this way. +% +% \subsection{Bundle installation} +% +% \paragraph{Unpacking.} Unpack the \xfile{mleftright.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip mleftright.tds.zip -d ~/texmf| +% \end{quote} +% +% \subsection{Package installation} +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex mleftright.dtx| +% \end{quote} +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% mleftright.sty & tex/generic/mleftright/mleftright.sty\\ +% mleftright.pdf & doc/latex/mleftright/mleftright.pdf\\ +% mleftright.dtx & source/latex/mleftright/mleftright.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution +% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \TeX\,Live\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{mleftright.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by the +% configuration file \xfile{ltxdoc.cfg}. For instance, put this +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% An example follows how to generate the +% documentation with pdf\LaTeX: +% \begin{quote} +%\begin{verbatim} +%pdflatex mleftright.dtx +%makeindex -s gind.ist mleftright.idx +%pdflatex mleftright.dtx +%makeindex -s gind.ist mleftright.idx +%pdflatex mleftright.dtx +%\end{verbatim} +% \end{quote} +% +% \section{Acknowledgement} +% +% \begin{description} +% \item[Donald Arsenau:] +% He provided the main trick and the first macros. +% \item[Philipp Stephani:] +% He solved the subscript problem. +% \end{description} +% +% \begin{thebibliography}{9} +% \raggedright +% \bibitem{dave} +% Dave94705, +% \textit{spacing after \cs{right}\texttt{)} and before \cs{left}\texttt{)}}, +% newsgroup comp.text.tex, +% Message-ID: \texttt{\small 5d264909-7c3d-4c9d-9b22-434178b2bf90@g21g2000prn.googlegroups.com}, +% 2010-08-12. +% \newblock +% {\small\url{https://groups.google.com/group/comp.text.tex/msg/e5b6833da7dc29bf}} +% +% \bibitem{arseneau} +% Donald Arseneau, +% \textit{Re: spacing after \cs{right}\texttt) and before \cs{left}\texttt)}, +% newsgroup comp.text.tex, +% Message-ID: \texttt{\small yfivd6svl8y.fsf@mutant.triumf.ca}, +% 2010-08-30. +% \newblock +% {\small\url{https://groups.google.com/group/comp.text.tex/msg/e0b2e4386e5d04e4}} +% +% \bibitem{stephani} +% Philipp Stephani, +% \textit{Re: spacing after \cs{right}\texttt) and before \cs{left}\texttt)}, +% newsgroup comp.text.tex, +% Message-ID: \texttt{\small 4c8c8c1e\$0\$6981\$9b4e6d93@newsspool4.arcor-online.net}, +% 2010-09-12. +% \newblock +% {\small\url{https://groups.google.com/group/comp.text.tex/msg/87ac1f61321de3ef}} +% +% \bibitem{oberdiek} +% Heiko Oberdiek, +% \textit{Re: spacing after \cs{right}\texttt) and before \cs{left}\texttt)}, +% newsgroup comp.text.tex, +% Message-ID: \texttt{\small i6jcc2\$8of\$1@news.eternal-september.org}, +% 2010-09-12. +% \newblock +% {\small\url{https://groups.google.com/group/comp.text.tex/msg/257aa6119bef878b}} +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2010/09/25 v1.0} +% \item +% The first version. +% \end{Version} +% \begin{Version}{2016/05/16 v1.1} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/03 v1.2} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/mleftright/mleftright.pdf b/macros/latex/contrib/mleftright/mleftright.pdf new file mode 100644 index 0000000000..1f44fb88d2 Binary files /dev/null and b/macros/latex/contrib/mleftright/mleftright.pdf differ diff --git a/macros/latex/contrib/oberdiek/README.txt b/macros/latex/contrib/oberdiek/README.txt index 2b0a822793..238e572c18 100644 --- a/macros/latex/contrib/oberdiek/README.txt +++ b/macros/latex/contrib/oberdiek/README.txt @@ -1,4 +1,4 @@ -README 2019/11/29 +README 2019/12/03 This file describes the directory CTAN:macros/latex/contrib/oberdiek/ diff --git a/macros/latex/contrib/oberdiek/accsupp.dtx b/macros/latex/contrib/oberdiek/accsupp.dtx index 722b314284..5264aed3e2 100644 --- a/macros/latex/contrib/oberdiek/accsupp.dtx +++ b/macros/latex/contrib/oberdiek/accsupp.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % % File: accsupp.dtx -% Version: 2018/01/30 v0.5 +% Version: 2018/03/28 v0.5 % Info: Accessibility support by marked content % % Copyright (C) @@ -72,7 +72,6 @@ % TDS:doc/latex/oberdiek/accsupp.pdf % TDS:doc/latex/oberdiek/accsupp-example1.tex % TDS:doc/latex/oberdiek/accsupp-example2.tex -% TDS:doc/latex/oberdiek/test/accsupp-test1.tex % TDS:source/latex/oberdiek/accsupp.dtx % %<*ignore> @@ -150,10 +149,6 @@ and the derived files \file{accsupp-example2.tex}{\from{accsupp.dtx}{example2}}% % \usedir{doc/latex/oberdiek/test}% % \file{accsupp-test1.tex}{\from{accsupp.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{accsupp.xml}{\from{accsupp.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -191,21 +186,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{accsupp.drv} % @@ -900,63 +880,6 @@ ed as % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\documentclass{minimal} -\makeatletter -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@\@ne -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@\@ne - \repeat -} -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{127}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\{=1 % - \catcode`\}=2 % - \catcode`\#=6 % - \catcode`\[=12 % - \catcode`\]=12 % - \catcode`\%=14 % - \catcode`\ =10 % - \catcode13=5 % - \RequirePackage{accsupp}[2018/03/28]\relax - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% % \section{Installation} % % \subsection{Download} @@ -1012,7 +935,6 @@ ed as % accsupp.pdf & doc/latex/oberdiek/accsupp.pdf\\ % accsupp-example1.tex & doc/latex/oberdiek/accsupp-example1.tex\\ % accsupp-example2.tex & doc/latex/oberdiek/accsupp-example2.tex\\ -% test/accsupp-test1.tex & doc/latex/oberdiek/test/accsupp-test1.tex\\ % accsupp.dtx & source/latex/oberdiek/accsupp.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/accsupp.pdf b/macros/latex/contrib/oberdiek/accsupp.pdf index dfa902291b..6f35b10ffd 100644 Binary files a/macros/latex/contrib/oberdiek/accsupp.pdf and b/macros/latex/contrib/oberdiek/accsupp.pdf differ diff --git a/macros/latex/contrib/oberdiek/aliascnt.dtx b/macros/latex/contrib/oberdiek/aliascnt.dtx index e3db954c80..60289eaeaf 100644 --- a/macros/latex/contrib/oberdiek/aliascnt.dtx +++ b/macros/latex/contrib/oberdiek/aliascnt.dtx @@ -126,10 +126,6 @@ and the derived files \file{aliascnt.drv}{\from{aliascnt.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{aliascnt.sty}{\from{aliascnt.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{aliascnt.xml}{\from{aliascnt.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{aliascnt.drv} % diff --git a/macros/latex/contrib/oberdiek/aliascnt.pdf b/macros/latex/contrib/oberdiek/aliascnt.pdf index f9d784af69..5fc66906c5 100644 Binary files a/macros/latex/contrib/oberdiek/aliascnt.pdf and b/macros/latex/contrib/oberdiek/aliascnt.pdf differ diff --git a/macros/latex/contrib/oberdiek/alphalph.dtx b/macros/latex/contrib/oberdiek/alphalph.dtx index 2f22685dec..7c70cd4825 100644 --- a/macros/latex/contrib/oberdiek/alphalph.dtx +++ b/macros/latex/contrib/oberdiek/alphalph.dtx @@ -66,9 +66,6 @@ % Installation: % TDS:tex/generic/oberdiek/alphalph.sty % TDS:doc/latex/oberdiek/alphalph.pdf -% TDS:doc/latex/oberdiek/test/alphalph-test1.tex -% TDS:doc/latex/oberdiek/test/alphalph-test2.tex -% TDS:doc/latex/oberdiek/test/alphalph-test3.tex % TDS:source/latex/oberdiek/alphalph.dtx % %<*ignore> @@ -141,10 +138,6 @@ and the derived files % \file{alphalph-test1.tex}{\from{alphalph.dtx}{test1}}% % \file{alphalph-test2.tex}{\from{alphalph.dtx}{test2,etex}}% % \file{alphalph-test3.tex}{\from{alphalph.dtx}{test2,noetex}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{alphalph.xml}{\from{alphalph.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -207,21 +200,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{alphalph.drv} % @@ -1303,353 +1281,6 @@ and the derived files % % \end{macrocode} % -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input alphalph.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Macro tests} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{article} -%<*noetex> -\makeatletter -\let\saved@numexpr\numexpr -\newcommand*{\DisableNumexpr}{% - \let\numexpr\@undefined -} -\newcommand*{\RestoreNumexpr}{% - \let\numexpr\saved@numexpr -} -\DisableNumexpr -% -\usepackage{alphalph}[2016/05/16] -%\RestoreNumexpr -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} - -\newcommand*{\TestCmd}[3]{% - \setbox0=\hbox{% -% \DisableNumexpr - \edef\TestString{#1{#2}}% - \expandafter\Expect\expandafter{\TestString}{#3}% - \edef\TestString{#1{#2} }% - \expandafter\Expect\expandafter{\TestString}{#3 }% - }% - \Expect*{\the\wd0}{0.0pt}% -} - -\makeatletter -\newalphalph\LaTeXAlphAlph\@Alph{26} -\newalphalph\LaTeXalphalph\@alph{26} -\newalphalph\AlphWrap[wrap]\alphalph@Alph{26} -\newalphalph\alphwrap[wrap]\alphalph@alph{26} -\newalphalph\LaTeXAlphWrap[wrap]\@Alph{26} -\newalphalph\LaTeXalphwrap[wrap]\@alph{26} -\def\LastSymbol#1{% - \ifx\\#1\\% - \else - \@LastSymbol#1\@nil - \fi -} -\def\@LastSymbol#1#2\@nil{% - \ifx\\#2\\% - #1% - \else - \@LastSymbol#2\@nil - \fi -} -\makeatother -\newcommand*{\TestAlph}[2]{% - \uppercase{\TestCallCmd\AlphAlph{#2}}{#1}% - \lowercase{\TestCallCmd\alphalph{#2}}{#1}% - \uppercase{\TestCallCmd\LaTeXAlphAlph{#2}}{#1}% - \lowercase{\TestCallCmd\LaTeXalphalph{#2}}{#1}% - \edef\WrapString{\LastSymbol{#2}}% - \expandafter\TestAlphWrap\expandafter{\WrapString}{#1}% -} -\newcommand*{\TestAlphWrap}[2]{% - \uppercase{\TestCallCmd\AlphWrap{#1}}{#2}% - \lowercase{\TestCallCmd\alphwrap{#1}}{#2}% - \uppercase{\TestCallCmd\LaTeXAlphWrap{#1}}{#2}% - \lowercase{\TestCallCmd\LaTeXalphwrap{#1}}{#2}% -} -\newcommand*{\TestCallCmd}[3]{% - \TestCmd#1{#3}{#2}% -} -\begin{qstest}{AlphSymbols}{alphalph, AlphAlph, symbols} - \TestAlph{1}{a}% - \TestAlph{2}{b}% - \TestAlph{3}{c}% - \TestAlph{4}{d}% - \TestAlph{5}{e}% - \TestAlph{6}{f}% - \TestAlph{7}{g}% - \TestAlph{8}{h}% - \TestAlph{9}{i}% - \TestAlph{10}{j}% - \TestAlph{11}{k}% - \TestAlph{12}{l}% - \TestAlph{13}{m}% - \TestAlph{14}{n}% - \TestAlph{15}{o}% - \TestAlph{16}{p}% - \TestAlph{17}{q}% - \TestAlph{18}{r}% - \TestAlph{19}{s}% - \TestAlph{20}{t}% - \TestAlph{21}{u}% - \TestAlph{22}{v}% - \TestAlph{23}{w}% - \TestAlph{24}{x}% - \TestAlph{25}{y}% - \TestAlph{26}{z}% -\end{qstest} -\begin{qstest}{AlphRange}{alphalph, range} - \TestAlph{0}{}% - \TestAlph{-1}{}% - \TestAlph{-2147483647}{}% - \TestAlph{27}{aa}% - \TestAlph{28}{ab}% - \TestAlph{52}{az}% - \TestAlph{53}{ba}% - \TestAlph{78}{bz}% - \TestAlph{79}{ca}% - \TestAlph{702}{zz}% - \TestAlph{703}{aaa}% - \TestAlph{2147483647}{fxshrxw}% -\end{qstest} - -\makeatletter -\newcommand*{\myvocals}[1]{% - \ifcase#1X\or A\or E\or I\or O\or U\else Y\fi -} -\makeatother -\newalphalph\vocalsvocals\myvocals{5} -\newcommand*{\TestVocals}{% - \TestCmd\vocalsvocals -} -\begin{qstest}{vocals}{vocals} - \TestVocals{0}{}% - \TestVocals{1}{A}% - \TestVocals{2}{E}% - \TestVocals{3}{I}% - \TestVocals{4}{O}% - \TestVocals{5}{U}% - \TestVocals{6}{AA}% - \TestVocals{7}{AE}% - \TestVocals{8}{AI}% - \TestVocals{9}{AO}% - \TestVocals{10}{AU}% - \TestVocals{11}{EA}% - \TestVocals{24}{OO}% - \TestVocals{25}{OU}% - \TestVocals{26}{UA}% - \TestVocals{29}{UO}% - \TestVocals{30}{UU}% - \TestVocals{31}{AAA}% - \TestVocals{155}{UUU}% - \TestVocals{156}{AAAA}% - \TestVocals{2147483647}{AIIOOEEIOIIUOE}% -\end{qstest} - -\makeatletter -\newalphalph\AlphMult[mult]{\alphalph@Alph}{26} -\newalphalph\alphmult[mult]{\alphalph@alph}{26} -\newalphalph\LaTeXAlphMult[mult]{\@Alph}{26} -\newalphalph\LaTeXalphmult[mult]{\@alph}{26} -\makeatother -\newcommand*{\TestMult}[2]{% - \uppercase{\TestCallCmd\AlphMult{#2}}{#1}% - \lowercase{\TestCallCmd\alphmult{#2}}{#1}% - \uppercase{\TestCallCmd\LaTeXAlphMult{#2}}{#1}% - \lowercase{\TestCallCmd\LaTeXalphmult{#2}}{#1}% -} -\begin{qstest}{mult}{mult} - \TestMult{0}{}% - \TestMult{-1}{}% - \TestMult{-2147483647}{}% - \TestMult{1}{a}% - \TestMult{2}{b}% - \TestMult{26}{z}% - \TestMult{27}{aa}% - \TestMult{28}{bb}% - \TestMult{52}{zz}% - \TestMult{53}{aaa}% - \TestMult{54}{bbb}% - \TestMult{259}{yyyyyyyyyy}% - \TestMult{260}{zzzzzzzzzz}% - \TestMult{261}{aaaaaaaaaaa}% - \TestMult{262}{bbbbbbbbbbb}% -\end{qstest} - -\def\myvocalsB#1{% - \ifcase#1\or A\or E\or I\or O\or U\fi -} -\begin{qstest}{symbolnum}{symbolnum} - \makeatletter - \def\Test#1#2{% - \let\TestCmd\relax - \newalphalph\TestCmd{#1}{}% - \Expect*{\AlPh@Number}{#2}% - }% - \Test\@alph{26}% - \Test\@Alph{26}% - \Test\@fnsymbol{9}% - \Test\myvocalsB{5}% - \Test\alphalph@alph{26}% - \Test\alphalph@Alph{26}% -\end{qstest} - -\begin{qstest}{list}{list} - \makeatletter - \def\catch#1\relax{% - \def\FoundList{\catch#1}% - }% - \def\Test[#1]#2#3#4{% - \let\testcmd\relax - \newalphalph\testcmd[{#1}]{\catch}{#2}% - \testcmd{#3}|\relax - \expandafter\Expect\expandafter{\FoundList}{#4|}% - % - \let\SavedCatch\catch - \def\catch{\noexpand\catch\noexpand\foo}% - \edef\Result{#4|}% - \@onelevel@sanitize\Result - \let\catch\SavedCatch - \let\testcmd\relax - \newalphalph\testcmd[{#1}]{\catch\foo}{#2}% - \testcmd{#3}|\relax - \@onelevel@sanitize\FoundList - \Expect*{\FoundList}*{\Result}% - }% - \Test[alph]{26}{3}{\catch{3}}% - \Test[alph]{26}{12}{\catch{12}}% - \Test[alph]{26}{27}{\catch{1}\catch{1}}% - \Test[alph]{26}{78}{\catch{2}\catch{26}}% - \Test[wrap]{26}{7}{\catch{7}}% - \Test[wrap]{26}{14}{\catch{14}}% - \Test[wrap]{26}{80}{\catch{2}}% - \Test[wrap]{26}{700}{\catch{24}}% - \Test[mult]{26}{4}{\catch{4}}% - \Test[mult]{26}{17}{\catch{17}}% - \Test[mult]{26}{54}{\catch{2}\catch{2}\catch{2}}% -\end{qstest} - -\begin{document} -\end{document} -% -% \end{macrocode} -% % \section{Installation} % % \subsection{Download} @@ -1699,9 +1330,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % alphalph.sty & tex/generic/oberdiek/alphalph.sty\\ % alphalph.pdf & doc/latex/oberdiek/alphalph.pdf\\ -% test/alphalph-test1.tex & doc/latex/oberdiek/test/alphalph-test1.tex\\ -% test/alphalph-test2.tex & doc/latex/oberdiek/test/alphalph-test2.tex\\ -% test/alphalph-test3.tex & doc/latex/oberdiek/test/alphalph-test3.tex\\ % alphalph.dtx & source/latex/oberdiek/alphalph.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/alphalph.pdf b/macros/latex/contrib/oberdiek/alphalph.pdf index 4ad8540c81..5f7559119b 100644 Binary files a/macros/latex/contrib/oberdiek/alphalph.pdf and b/macros/latex/contrib/oberdiek/alphalph.pdf differ diff --git a/macros/latex/contrib/oberdiek/askinclude.dtx b/macros/latex/contrib/oberdiek/askinclude.dtx index 4e109fbd5d..aa249c79fd 100644 --- a/macros/latex/contrib/oberdiek/askinclude.dtx +++ b/macros/latex/contrib/oberdiek/askinclude.dtx @@ -78,33 +78,6 @@ % Installation: % TDS:tex/latex/oberdiek/askinclude.sty % TDS:doc/latex/oberdiek/askinclude.pdf -% TDS:doc/latex/oberdiek/test/askinclude-a.tex -% TDS:doc/latex/oberdiek/test/askinclude-b.tex -% TDS:doc/latex/oberdiek/test/askinclude-c.tex -% TDS:doc/latex/oberdiek/test/askinclude-test1.tex -% TDS:doc/latex/oberdiek/test/askinclude-test2.tex -% TDS:doc/latex/oberdiek/test/askinclude-test3.tex -% TDS:doc/latex/oberdiek/test/askinclude-test4.tex -% TDS:doc/latex/oberdiek/test/askinclude-test5.tex -% TDS:doc/latex/oberdiek/test/askinclude-test6.tex -% TDS:doc/latex/oberdiek/test/askinclude-test7.tex -% TDS:doc/latex/oberdiek/test/askinclude-test8.tex -% TDS:doc/latex/oberdiek/test/askinclude-test9.tex -% TDS:doc/latex/oberdiek/test/askinclude-test10.tex -% TDS:doc/latex/oberdiek/test/askinclude-test11.tex -% TDS:doc/latex/oberdiek/test/askinclude-test12.tex -% TDS:doc/latex/oberdiek/test/askinclude-test13.tex -% TDS:doc/latex/oberdiek/test/askinclude-test14.tex -% TDS:doc/latex/oberdiek/test/askinclude-test15.tex -% TDS:doc/latex/oberdiek/test/askinclude-test16.tex -% TDS:doc/latex/oberdiek/test/askinclude-test17.tex -% TDS:doc/latex/oberdiek/test/askinclude-test18.tex -% TDS:doc/latex/oberdiek/test/askinclude-test19.tex -% TDS:doc/latex/oberdiek/test/askinclude-test20.tex -% TDS:doc/latex/oberdiek/test/askinclude-test21.tex -% TDS:doc/latex/oberdiek/test/askinclude-test22.tex -% TDS:doc/latex/oberdiek/test/askinclude-test23.tex -% TDS:doc/latex/oberdiek/test/askinclude-test24.tex % TDS:source/latex/oberdiek/askinclude.dtx % %<*ignore> @@ -217,10 +190,6 @@ and the derived files % \file{askinclude-test22.tex}{\from{askinclude.dtx}{test0,test22}}% % \file{askinclude-test23.tex}{\from{askinclude.dtx}{test0,test23}}% % \file{askinclude-test24.tex}{\from{askinclude.dtx}{test0,test24}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{askinclude.xml}{\from{askinclude.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -304,21 +273,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{askinclude.drv} % @@ -1672,994 +1626,6 @@ and the derived files \AskInc@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Included files} -% -% \begin{macrocode} -%<*a> -\chapter{Chapter A} -\let\filea=Y -% -% \end{macrocode} -% \begin{macrocode} -%<*b> -\chapter{Chapter B} -\let\fileb=Y -% -% \end{macrocode} -% \begin{macrocode} -%<*c> -\chapter{Chapter C} -\let\filec=Y -% -% \end{macrocode} -% -% \subsection{Special test setup} -% -% \begin{macrocode} -%<*test18> -\includeonly{askinclude-b} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test20|test21|test22> -\let\AtBeginDocumentMode=N% -% -% \end{macrocode} -% -% \subsection{Common start} -% -% \begin{macrocode} -%<*test0> -\ifx\CompatibilityMode Y% - \documentstyle[filecontents,qstest,askinclude,pdftexcmds]{book}% -\else - \documentclass{book}% - \usepackage{filecontents}% - \usepackage{qstest}% - \usepackage{pdftexcmds}% -%<*test1> - \makeatletter - \def\RestoreCatcodes{}% - \count@=0 % - \loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% - \ifnum\count@<255 % - \advance\count@\@ne - \repeat - \def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@\@ne - \repeat - }% - \def\Test#1\EndTest{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\{=1 % - \catcode`\}=2 % - \catcode`\#=6 % - \catcode`\[=12 % - \catcode`\]=12 % - \catcode`\%=14 % - \catcode`\ =10 % - \catcode13=5 % - #1\relax - \RestoreCatcodes - \makeatother - }% - \Test -% -%<*!test1> - \ifx\AtBeginDocumentMode Y% - \AtBeginDocument{% - \usepackage{askinclude}[2018/11/01]% - }% - \else -% - \usepackage{askinclude}[2018/11/01]% -%<*!test1> - \fi -% -%<*test1> - \EndTest -% -\fi -\IncludeTests{*} -\LogTests{log}{*}{*} -\makeatletter -\let\org@typein\typein -\def\typein[#1]#2{% - \ifx\@Stack\@StackEmpty - \begin{qstest}{StackNonEmpty}{StackNonEmpty}% - \Expect{Error: empty stack}{}% - \end{qstest}% - \org@typein[{#1}]{#2}% - \else - \edef#1{% - \unexpanded\expandafter\expandafter\expandafter{% - \expandafter\@car\@Stack\@nil - }% - }% - \xdef\@Stack{% - \unexpanded\expandafter\expandafter\expandafter{% - \expandafter\@cdr\@Stack\@nil - }% - }% - \typeout{}% - \typeout{\string#1=#1}% - \fi -} -\def\@StackEmpty{\BOTTOM} -\let\@Stack\@StackEmpty -\newcommand*{\Stack}[1]{% - \def\@Stack{#1\BOTTOM}% -} -\AtEndDocument{% - \begin{qstest}{StackUsed}{StackUsed}% - \Expect*{% - \ifx\@Stack\@StackEmpty - \else - Error: Unused stack entries% - \fi - }{}% - \end{qstest}% -} -\newcommand*{\CheckInclude}[2]{% - \include{askinclude-#1}% - \begin{qstest}{CheckInclude-#1}{CheckInclude-#1}% - \Expect*{% - \expandafter\ifx\csname file#1\endcsname Ytrue\else false\fi - }{#2}% - \end{qstest}% -} -\def\@EndChecks{} -\AtBeginDocument{% - \AtEndDocument{% - \if@filesw - \immediate\write\@mainaux{\string\@EndChecks}% - \fi - }% -} -\newcommand*{\CheckAnswer}[1]{% - \gdef\AnswerText{#1}% - \g@addto@macro\@EndChecks{\@CheckAnswer}% -} -\def\@CheckAnswer{% - \begin{qstest}{CheckAnswer}{CheckAnswer}% - \Expect*{\unexpanded\expandafter{\AskInc@Answer}}% - *{\unexpanded\expandafter{\AnswerText}}% - \end{qstest}% -} -\newcommand*{\CheckMatchMethod}[1]{% - \gdef\MatchMethodText{#1}% - \g@addto@macro\@EndChecks{\@CheckMatchMethod}% -} -\def\@CheckMatchMethod{% - \begin{qstest}{CheckMatchMethod}{CheckMatchMethod}% - \Expect*{\unexpanded\expandafter{\AskInc@MatchMethod}}% - *{\unexpanded\expandafter{\MatchMethodText}}% - \end{qstest}% -} -\def\@CheckAux{% - \begin{qstest}{CheckAux}{CheckAux}% - \def\GetFileContents##1{% - \pdf@unescapehex{% - \pdf@filedump{0}{\pdf@filesize{##1}}{##1}% - }% - }% - \Expect*{\GetFileContents{\jobname.aux}}% - *{\GetFileContents{\jobname-aux.aux}}% - \end{qstest}% -} -\g@addto@macro\@EndChecks{\@CheckAux} -\let\org@filec@ntents\filec@ntents -\def\filec@ntents{% - \catcode`\|=0 % - \org@filec@ntents -} -\begingroup - \endlinechar=-1 % - \catcode`\|=0 % - \@makeother\#% - \@makeother\\% - |gdef|AddList{% - \providecommand*\AskInc@AddList[2]{% - \ifcase\ifx#1\@undefined - \else\ifx#1\relax - \else\ifx#1\@empty - \else1\fi\fi\fi0 % - \gdef#1{#2}% - \else - \g@addto@macro#1{,#2}% - \fi - }% - }% - |gdef|AddFile{% - \providecommand\AskInc@AddFile{% - \AskInc@AddList\AskInc@Files - }% - }% - |gdef|AddMatch{% - \providecommand\AskInc@AddMatch{% - \AskInc@AddList\AskInc@MatchFiles - }% - }% -|endgroup -% -% \end{macrocode} -% -% \subsection{First run tests} -% -% \begin{macrocode} -%<*test1> -\Stack{{}} -\CheckAnswer{*} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{*} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{true} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test2> -\Stack{*} -\CheckAnswer{*} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{*} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{true} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test3> -\Stack{-}% -\CheckAnswer{-} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{-} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{false} -\CheckInclude{b}{false} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test4> -\Stack{{askinclude-b}} -\CheckAnswer{askinclude-b} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{askinclude-b} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{false} -\CheckInclude{b}{true} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test5> -\Stack{{askinclude-a,askinclude-c}} -\CheckAnswer{askinclude-a,askinclude-c} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{askinclude-a,askinclude-c} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test6> -\Stack{?yny} -\CheckAnswer{askinclude-a,askinclude-c} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\gdef\AskInc@Answer{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\gdef\AskInc@Answer{askinclude-a,askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test7> -\Stack{?yA} -\CheckAnswer{askinclude-a,askinclude-b,askinclude-c} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\gdef\AskInc@Answer{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\gdef\AskInc@Answer{askinclude-a,askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\gdef\AskInc@Answer{askinclude-a,askinclude-b,askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{true} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test8> -\Stack{?yD} -\CheckAnswer{askinclude-a,askinclude-b,askinclude-c} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\gdef\AskInc@Answer{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\gdef\AskInc@Answer{askinclude-a,askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\gdef\AskInc@Answer{askinclude-a,askinclude-b,askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{true} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test9> -\Stack{?yN} -\CheckAnswer{askinclude-a} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\gdef\AskInc@Answer{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test10> -\Stack{?{}N} -\CheckAnswer{askinclude-a} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\gdef\AskInc@Answer{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test11> -\Stack{?xxyxxN} -\CheckAnswer{askinclude-a} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\gdef\AskInc@Answer{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \subsection{Second run tests} -% -% \begin{macrocode} -%<*test12> -\Stack{{}} -\CheckAnswer{askinclude-b} -\begin{filecontents*}{\jobname.aux} -\gdef\AskInc@Answer{askinclude-b} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\AskInc@AddFile{askinclude-b} -\AskInc@AddFile{askinclude-c} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{askinclude-b} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{false} -\CheckInclude{b}{true} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test13> -\Stack{{}} -\CheckAnswer{askinclude-b} -\begin{filecontents*}{\jobname.aux} -\gdef\AskInc@Answer{askinclude-b} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\AskInc@AddFile{askinclude-b} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{askinclude-b} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{false} -\CheckInclude{b}{true} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test14> -\Stack{{}} -\CheckAnswer{*} -\begin{filecontents*}{\jobname.aux} -\gdef\AskInc@Answer{*} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\AskInc@AddFile{askinclude-b} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{*} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{true} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test15> -\Stack{?D} -\CheckAnswer{askinclude-a,askinclude-c} -\begin{filecontents*}{\jobname.aux} -\gdef\AskInc@Answer{askinclude-a} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\AskInc@AddFile{askinclude-b} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\gdef\AskInc@Answer{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\gdef\AskInc@Answer{askinclude-a,askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test16> -\Stack{?A} -\CheckAnswer{askinclude-a,askinclude-b,askinclude-c} -\begin{filecontents*}{\jobname.aux} -\gdef\AskInc@Answer{askinclude-a} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\AskInc@AddFile{askinclude-b} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\gdef\AskInc@Answer{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\gdef\AskInc@Answer{askinclude-a,askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\gdef\AskInc@Answer{askinclude-a,askinclude-b,askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{true} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test17> -\Stack{?N} -\CheckAnswer{} -\begin{filecontents*}{\jobname.aux} -\gdef\AskInc@Answer{askinclude-a} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\AskInc@AddFile{askinclude-b} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{false} -\CheckInclude{b}{false} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test18> -\Stack{} -\CheckAnswer{askinclude-a} -\begin{filecontents*}{\jobname.aux} -\gdef\AskInc@Answer{askinclude-a} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\AskInc@AddFile{askinclude-b} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{askinclude-a} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{false} -\CheckInclude{b}{true} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test19> -\Stack{?N} -\CheckAnswer{} -\begin{filecontents*}{\jobname.aux} -\gdef\AskInc@Answer{askinclude-a} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\AskInc@AddFile{askinclude-b} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\ifx\AtBeginDocumentMode Y% - \AtBeginDocument{\includeonly{askinclude-b}}% -\else - \includeonly{askinclude-b}% -\fi -\begin{document} -\CheckInclude{a}{false} -\CheckInclude{b}{false} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \subsection{Compatibility for changing from old to new} -% -% \begin{macrocode} -%<*test20> -\Stack{{}} -\CheckAnswer{*} -\begin{filecontents*}{\jobname.aux} -\@includeonly{*} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{*} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{true} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test21> -\Stack{{}} -\CheckAnswer{-} -\begin{filecontents*}{\jobname.aux} -\@includeonly{} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{-} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{false} -\CheckInclude{b}{false} -\CheckInclude{c}{false} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test22> -\Stack{{}} -\CheckAnswer{askinclude-a,askinclude-c} -\begin{filecontents*}{\jobname.aux} -\@includeonly{askinclude-a,askinclude-c} -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{askinclude-a,askinclude-c} -\gdef\AskInc@MatchMethod{} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \subsection{Regular expressions} -% -% \begin{macrocode} -%<*test23> -\Stack{{makematch}{*,!askinclude-b}} -\CheckAnswer{*,!askinclude-b} -\CheckMatchMethod{makematch} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{*,!askinclude-b} -\gdef\AskInc@MatchMethod{makematch} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -|AddMatch -\AskInc@AddMatch{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\AskInc@AddMatch{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test24> -\Stack{{pdfmatch}{.,!askinclude-b}} -\CheckAnswer{.,!askinclude-b} -\CheckMatchMethod{pdfmatch} -\begin{filecontents*}{\jobname.aux} -\relax -\end{filecontents*} -\begin{filecontents*}{\jobname-aux.aux} -\relax|space -\gdef\AskInc@Answer{.,!askinclude-b} -\gdef\AskInc@MatchMethod{pdfmatch} -|AddList -|AddFile -\AskInc@AddFile{askinclude-a} -|AddMatch -\AskInc@AddMatch{askinclude-a} -\@input{askinclude-a.aux} -\AskInc@AddFile{askinclude-b} -\@input{askinclude-b.aux} -\AskInc@AddFile{askinclude-c} -\AskInc@AddMatch{askinclude-c} -\@input{askinclude-c.aux} -\@EndChecks -\end{filecontents*} -\begin{document} -\CheckInclude{a}{true} -\CheckInclude{b}{false} -\CheckInclude{c}{true} -% -% \end{macrocode} -% -% -% \subsection{Common end} -% -% \begin{macrocode} -%<*test0> -\end{document} -% -% \end{macrocode} -% % \section{Installation} % % \subsection{Download} @@ -2709,33 +1675,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % askinclude.sty & tex/latex/oberdiek/askinclude.sty\\ % askinclude.pdf & doc/latex/oberdiek/askinclude.pdf\\ -% test/askinclude-a.tex & doc/latex/oberdiek/test/askinclude-a.tex\\ -% test/askinclude-b.tex & doc/latex/oberdiek/test/askinclude-b.tex\\ -% test/askinclude-c.tex & doc/latex/oberdiek/test/askinclude-c.tex\\ -% test/askinclude-test1.tex & doc/latex/oberdiek/test/askinclude-test1.tex\\ -% test/askinclude-test2.tex & doc/latex/oberdiek/test/askinclude-test2.tex\\ -% test/askinclude-test3.tex & doc/latex/oberdiek/test/askinclude-test3.tex\\ -% test/askinclude-test4.tex & doc/latex/oberdiek/test/askinclude-test4.tex\\ -% test/askinclude-test5.tex & doc/latex/oberdiek/test/askinclude-test5.tex\\ -% test/askinclude-test6.tex & doc/latex/oberdiek/test/askinclude-test6.tex\\ -% test/askinclude-test7.tex & doc/latex/oberdiek/test/askinclude-test7.tex\\ -% test/askinclude-test8.tex & doc/latex/oberdiek/test/askinclude-test8.tex\\ -% test/askinclude-test9.tex & doc/latex/oberdiek/test/askinclude-test9.tex\\ -% test/askinclude-test10.tex & doc/latex/oberdiek/test/askinclude-test10.tex\\ -% test/askinclude-test11.tex & doc/latex/oberdiek/test/askinclude-test11.tex\\ -% test/askinclude-test12.tex & doc/latex/oberdiek/test/askinclude-test12.tex\\ -% test/askinclude-test13.tex & doc/latex/oberdiek/test/askinclude-test13.tex\\ -% test/askinclude-test14.tex & doc/latex/oberdiek/test/askinclude-test14.tex\\ -% test/askinclude-test15.tex & doc/latex/oberdiek/test/askinclude-test15.tex\\ -% test/askinclude-test16.tex & doc/latex/oberdiek/test/askinclude-test16.tex\\ -% test/askinclude-test17.tex & doc/latex/oberdiek/test/askinclude-test17.tex\\ -% test/askinclude-test18.tex & doc/latex/oberdiek/test/askinclude-test18.tex\\ -% test/askinclude-test19.tex & doc/latex/oberdiek/test/askinclude-test19.tex\\ -% test/askinclude-test20.tex & doc/latex/oberdiek/test/askinclude-test20.tex\\ -% test/askinclude-test21.tex & doc/latex/oberdiek/test/askinclude-test21.tex\\ -% test/askinclude-test22.tex & doc/latex/oberdiek/test/askinclude-test22.tex\\ -% test/askinclude-test23.tex & doc/latex/oberdiek/test/askinclude-test23.tex\\ -% test/askinclude-test24.tex & doc/latex/oberdiek/test/askinclude-test24.tex\\ % askinclude.dtx & source/latex/oberdiek/askinclude.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/askinclude.pdf b/macros/latex/contrib/oberdiek/askinclude.pdf index 12975d6a9a..fac4008a47 100644 Binary files a/macros/latex/contrib/oberdiek/askinclude.pdf and b/macros/latex/contrib/oberdiek/askinclude.pdf differ diff --git a/macros/latex/contrib/oberdiek/atbegshi.dtx b/macros/latex/contrib/oberdiek/atbegshi.dtx index 3c8c5aa20a..7827606797 100644 --- a/macros/latex/contrib/oberdiek/atbegshi.dtx +++ b/macros/latex/contrib/oberdiek/atbegshi.dtx @@ -69,9 +69,6 @@ % TDS:doc/latex/oberdiek/atbegshi.pdf % TDS:doc/latex/oberdiek/atbegshi-example1.tex % TDS:doc/latex/oberdiek/atbegshi-example2.tex -% TDS:doc/latex/oberdiek/test/atbegshi-test1.tex -% TDS:doc/latex/oberdiek/test/atbegshi-test2.tex -% TDS:doc/latex/oberdiek/test/atbegshi-test3.tex % TDS:source/latex/oberdiek/atbegshi.dtx % %<*ignore> @@ -148,10 +145,6 @@ and the derived files % \file{atbegshi-test1.tex}{\from{atbegshi.dtx}{test1}}% % \file{atbegshi-test2.tex}{\from{atbegshi.dtx}{test2}}% % \file{atbegshi-test3.tex}{\from{atbegshi.dtx}{test3}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{atbegshi.xml}{\from{atbegshi.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -188,21 +181,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{atbegshi.drv} % @@ -1866,272 +1844,7 @@ X \endgroup \AtBegShi@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input atbegshi.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test2> -\input atbegshi.sty\relax -\def\msg#{\immediate\write16} -\msg{File: atbegshi-test2.tex 2016/06/09 v1.18 Test file for plain-TeX} -\def\testmsg#1#2{% - \msg{}% - \msg{*** Test with box (#1), expected page output [#2]}% hash-ok -} - -\newbox\voidbox -\def\void{\box\voidbox} -\begingroup - \setbox\voidbox=\void -\endgroup - -\count0=0\relax -\AtBeginShipout{% - \global\advance\count0 by 1\relax - \msg{* Inside \string\AtBeginShipout: [\the\count0]}% -} - -\AtBeginShipoutFirst{% - \msg{* Inside \string\AtBeginShipoutFirst}% - Hello World% -} - -\testmsg{\string\null}{1} -\shipout\null - -\AtBeginShipoutFirst{% - This is too late% -} - -\testmsg{void}{} -\shipout\void - -\testmsg{\string\copy255 (not void)}{2} -\setbox255\hbox{\vrule height 10bp width 10bp} -\shipout\copy255 % - -\testmsg{\string\copy255 (again)}{3} -\shipout\copy255 % - -\testmsg{\string\box255}{4} -\shipout\box255 % - -\testmsg{\string\box255 (again)}{} -\shipout\box255 % - -\testmsg{\string\hbox}{5} -\shipout\hbox{\vrule height 5bp width 20bp} - -\testmsg{\string\vbox}{6} -\shipout\vbox{\hrule height 20bp width 5bp} - -\testmsg{\string\null, voided by hook}{} -\def\VoidBox{% - \begingroup - \setbox\AtBeginShipoutBox=\box\AtBeginShipoutBox - \endgroup -} -\AtBeginShipout{\VoidBox} -\shipout\null -\def\VoidBox{} - -\msg{*** \string\begingroup} -\begingroup - \testmsg{void}{}% - \shipout\void -\msg{*** \string\endgroup} -\endgroup - -\msg{*** \string\begingroup} -\begingroup - \testmsg{void}{}% - \shipout\void - \testmsg{\string\null}{8}% - \shipout\null -\msg{*** \string\endgroup} -\endgroup - -\testmsg{output routine}{9} -Hello World -\vfill -\eject - -\testmsg{\string\null\space(discarded)}{} -\AtBeginShipout{% - \msg{* Inside \string\AtBeginShipout: DISCARD}% - \AtBeginShipoutDiscard -} -\shipout\null - -\end -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test3> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{atbegshi-test3.tex}[2016/06/09 v1.18 Test file for LaTeX] -\RequirePackage{color} -\pagecolor{yellow} -\documentclass[a5paper,showtrims]{memoir} -\usepackage{atbegshi} -\AtBeginShipout{% - \setbox\AtBeginShipoutBox=\vbox{% - \vbox to 0pt{% - \kern-1.5in % - \hbox to 0pt{% - \kern-1.5in % - \color{blue}% - \rule{1in}{1in}% - \hss - }% - \vss - }% - \hrule - \hbox{\vrule\box\AtBeginShipoutBox\vrule}% - \hrule - }% -} -\usepackage{eso-pic} -\makeatletter -\@ifundefined{@EveryShipout@Init}{% - \typeout{Test skipped}% - \@@end -}{} -\@EveryShipout@Init -\let\@EveryShipout@Init\relax -\makeatother -\AddToShipoutPicture{% - \hspace{.52\paperwidth}% - \colorbox{cyan}{% - \rule{0mm}{\paperheight}% - \hspace{.48\paperwidth}% - }% -} -% \end{macrocode} -% Newer versions of class \xclass{memoir} emulate package -% \xpackage{crop} and prevents its loading. This is undone -% in next line for this test file. -% \begin{macrocode} -\expandafter\let\csname ver@crop.sty\endcsname\relax -\usepackage[color=red,cross,a4,center]{crop} -\begin{document} -\shipout\null -\shipout\box\csname voidb@x\endcsname -\section{Hello World} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -2182,9 +1895,6 @@ Hello World % atbegshi.pdf & doc/latex/oberdiek/atbegshi.pdf\\ % atbegshi-example1.tex & doc/latex/oberdiek/atbegshi-example1.tex\\ % atbegshi-example2.tex & doc/latex/oberdiek/atbegshi-example2.tex\\ -% test/atbegshi-test1.tex & doc/latex/oberdiek/test/atbegshi-test1.tex\\ -% test/atbegshi-test2.tex & doc/latex/oberdiek/test/atbegshi-test2.tex\\ -% test/atbegshi-test3.tex & doc/latex/oberdiek/test/atbegshi-test3.tex\\ % atbegshi.dtx & source/latex/oberdiek/atbegshi.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/atbegshi.pdf b/macros/latex/contrib/oberdiek/atbegshi.pdf index 669658c566..3423553408 100644 Binary files a/macros/latex/contrib/oberdiek/atbegshi.pdf and b/macros/latex/contrib/oberdiek/atbegshi.pdf differ diff --git a/macros/latex/contrib/oberdiek/atenddvi.dtx b/macros/latex/contrib/oberdiek/atenddvi.dtx index 5ea70c80e5..b1b15af7ab 100644 --- a/macros/latex/contrib/oberdiek/atenddvi.dtx +++ b/macros/latex/contrib/oberdiek/atenddvi.dtx @@ -126,10 +126,6 @@ and the derived files \file{atenddvi.drv}{\from{atenddvi.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{atenddvi.sty}{\from{atenddvi.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{atenddvi.xml}{\from{atenddvi.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{atenddvi.drv} % diff --git a/macros/latex/contrib/oberdiek/atenddvi.pdf b/macros/latex/contrib/oberdiek/atenddvi.pdf index 9d93a21ab7..24fbfaed17 100644 Binary files a/macros/latex/contrib/oberdiek/atenddvi.pdf and b/macros/latex/contrib/oberdiek/atenddvi.pdf differ diff --git a/macros/latex/contrib/oberdiek/atveryend.dtx b/macros/latex/contrib/oberdiek/atveryend.dtx index 7801120e07..a6e2ef52fa 100644 --- a/macros/latex/contrib/oberdiek/atveryend.dtx +++ b/macros/latex/contrib/oberdiek/atveryend.dtx @@ -63,7 +63,6 @@ % Installation: % TDS:tex/latex/oberdiek/atveryend.sty % TDS:doc/latex/oberdiek/atveryend.pdf -% TDS:doc/latex/oberdiek/test/atveryend-test1.tex % TDS:source/latex/oberdiek/atveryend.dtx % %<*ignore> @@ -131,10 +130,6 @@ and the derived files \file{atveryend.sty}{\from{atveryend.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{atveryend-test1.tex}{\from{atveryend.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{atveryend.xml}{\from{atveryend.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -171,21 +166,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{atveryend.drv} % @@ -1187,118 +1167,7 @@ and the derived files \AtVeryEnd@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input atveryend.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1347,7 +1216,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % atveryend.sty & tex/latex/oberdiek/atveryend.sty\\ % atveryend.pdf & doc/latex/oberdiek/atveryend.pdf\\ -% test/atveryend-test1.tex & doc/latex/oberdiek/test/atveryend-test1.tex\\ % atveryend.dtx & source/latex/oberdiek/atveryend.dtx\\ % \end{tabular}^^A % }^^A @@ -1478,13 +1346,13 @@ and the derived files % James Darrell McCauley, Jeff Goldberg: % \textit{The \xpackage{endfloat} package}; % 1995/10/11 v2.4i; -% \CTAN{macros/latex/contrib/endfloat/endfloat.pdf}. +% \CTANpkg{endfloat}. % % \bibitem{etoolbox} % Philipp Lehmann: % \textit{The \xpackage{etoolbox} package}; % 2009/08/06 v1.8; -% \CTAN{macros/latex/contrib/etoolbox/etoolbox.pdf}. +% \CTANpkg{etoolbox}. % % \bibitem{hyperref} % Sebastian Rahtz, Heiko Oberdiek: diff --git a/macros/latex/contrib/oberdiek/atveryend.pdf b/macros/latex/contrib/oberdiek/atveryend.pdf index e99485f48a..8a25fcdc9a 100644 Binary files a/macros/latex/contrib/oberdiek/atveryend.pdf and b/macros/latex/contrib/oberdiek/atveryend.pdf differ diff --git a/macros/latex/contrib/oberdiek/auxhook.dtx b/macros/latex/contrib/oberdiek/auxhook.dtx index ac5711ed25..6a9674bcca 100644 --- a/macros/latex/contrib/oberdiek/auxhook.dtx +++ b/macros/latex/contrib/oberdiek/auxhook.dtx @@ -126,10 +126,6 @@ and the derived files \file{auxhook.drv}{\from{auxhook.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{auxhook.sty}{\from{auxhook.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{auxhook.xml}{\from{auxhook.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{auxhook.drv} % @@ -581,7 +562,7 @@ and the derived files % \bibitem{hypdestopt} % Heiko Oberdiek: \textit{The \xpackage{hypdestopt} package}; % 2006/05/30 v1.0; -% \CTAN{macros/latex/contrib/oberdiek/hypdestopt.pdf}. +% \CTANpkg{hypdestopt}. % % \bibitem{hyperref} % Sebastian Rahtz, Heiko Oberdiek: @@ -592,7 +573,7 @@ and the derived files % \bibitem{zref} % Heiko Oberdiek: \textit{The \xpackage{zref} package}; % 2006/05/25 v1.2; -% \CTAN{macros/latex/contrib/oberdiek/zref.pdf}. +% \CTANpkg{zref}. % % \end{thebibliography} % diff --git a/macros/latex/contrib/oberdiek/auxhook.pdf b/macros/latex/contrib/oberdiek/auxhook.pdf index b49a8bb86b..03097c28c7 100644 Binary files a/macros/latex/contrib/oberdiek/auxhook.pdf and b/macros/latex/contrib/oberdiek/auxhook.pdf differ diff --git a/macros/latex/contrib/oberdiek/bigintcalc.dtx b/macros/latex/contrib/oberdiek/bigintcalc.dtx index 004fd97c14..40fa56ed1d 100644 --- a/macros/latex/contrib/oberdiek/bigintcalc.dtx +++ b/macros/latex/contrib/oberdiek/bigintcalc.dtx @@ -67,9 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/bigintcalc.sty % TDS:doc/latex/oberdiek/bigintcalc.pdf -% TDS:doc/latex/oberdiek/test/bigintcalc-test1.tex -% TDS:doc/latex/oberdiek/test/bigintcalc-test2.tex -% TDS:doc/latex/oberdiek/test/bigintcalc-test3.tex % TDS:source/latex/oberdiek/bigintcalc.dtx % %<*ignore> @@ -143,10 +140,6 @@ and the derived files % \file{bigintcalc-test1.tex}{\from{bigintcalc.dtx}{test1}}% % \file{bigintcalc-test2.tex}{\from{bigintcalc.dtx}{test2,etex}}% % \file{bigintcalc-test3.tex}{\from{bigintcalc.dtx}{test2,noetex}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{bigintcalc.xml}{\from{bigintcalc.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -218,21 +211,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{bigintcalc.drv} % @@ -3395,932 +3373,7 @@ $ \BIC@Temp 9{18\or27\or36\or45\or54\or63\or72\or81}% % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input bigintcalc.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \subsubsection{Preamble with test macro definitions} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{article} -%\let\SavedNumexpr\numexpr -%\let\numexpr\UNDEFINED -\makeatletter -\chardef\BIC@TestMode=1 % -\makeatother -\usepackage{bigintcalc}[2016/05/16] -%\let\numexpr\SavedNumexpr -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\newcommand*{\TestSpaceAtEnd}[1]{% -% \let\SavedNumexpr\numexpr -% \let\numexpr\UNDEFINED - \edef\resultA{#1}% - \edef\resultB{#1 }% -% \let\numexpr\SavedNumexpr - \Expect*{\resultA\space}*{\resultB}% -} -\newcommand*{\TestResult}[2]{% -% \let\SavedNumexpr\numexpr -% \let\numexpr\UNDEFINED - \edef\result{#1}% -% \let\numexpr\SavedNumexpr - \Expect*{\result}{#2}% -} -\newcommand*{\TestResultTwoExpansions}[2]{% -%<*noetex> - \begingroup - \let\numexpr\UNDEFINED - \expandafter\expandafter\expandafter - \endgroup -% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{#1}{#2}% -} -\newcount\TestCount -%\newcommand*{\TestArg}[1]{\numexpr#1\relax} -%\newcommand*{\TestArg}[1]{#1} -\newcommand*{\TestTeXDivide}[2]{% - \TestCount=\TestArg{#1}\relax - \divide\TestCount by \TestArg{#2}\relax - \Expect*{\bigintcalcDiv{#1}{#2}}*{\the\TestCount}% -} -\newcommand*{\Test}[2]{% - \TestResult{#1}{#2}% - \TestResultTwoExpansions{#1}{#2}% - \TestSpaceAtEnd{#1}% -} -\newcommand*{\TestExch}[2]{\Test{#2}{#1}} -\newcommand*{\TestInv}[2]{% - \Test{\bigintcalcInv{#1}}{#2}% -} -\newcommand*{\TestAbs}[2]{% - \Test{\bigintcalcAbs{#1}}{#2}% -} -\newcommand*{\TestSgn}[2]{% - \Test{\bigintcalcSgn{#1}}{#2}% -} -\newcommand*{\TestMin}[3]{% - \Test{\bigintcalcMin{#1}{#2}}{#3}% -} -\newcommand*{\TestMax}[3]{% - \Test{\bigintcalcMax{#1}{#2}}{#3}% -} -\newcommand*{\TestCmp}[3]{% - \Test{\bigintcalcCmp{#1}{#2}}{#3}% -} -\newcommand*{\TestOdd}[2]{% - \Test{\bigintcalcOdd{#1}}{#2}% - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcOdd - \bigintcalcAbs{#1}!% - }{#2}% - }% - \x -} -\newcommand*{\TestInc}[2]{% - \Test{\bigintcalcInc{#1}}{#2}% - \ifnum\bigintcalcSgn{#1}>-1 % - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcInc\bigintcalcNum{#1}!% - }{#2}% - }% - \x - \fi -} -\newcommand*{\TestDec}[2]{% - \Test{\bigintcalcDec{#1}}{#2}% - \ifnum\bigintcalcSgn{#1}>0 % - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcDec\bigintcalcNum{#1}!% - }{#2}% - }% - \x - \fi -} -\newcommand*{\TestAdd}[3]{% - \Test{\bigintcalcAdd{#1}{#2}}{#3}% - \ifnum\bigintcalcSgn{#1}>0 % - \ifnum\bigintcalcSgn{#2}> 0 % - \ifnum\bigintcalcCmp{#1}{#2}>0 % - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcAdd - \bigintcalcNum{#1}!\bigintcalcNum{#2}!% - }{#3}% - }% - \x - \else - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcAdd - \bigintcalcNum{#2}!\bigintcalcNum{#1}!% - }{#3}% - }% - \x - \fi - \fi - \fi -} -\newcommand*{\TestSub}[3]{% - \Test{\bigintcalcSub{#1}{#2}}{#3}% - \ifnum\bigintcalcSgn{#1}>0 % - \ifnum\bigintcalcSgn{#2}> 0 % - \ifnum\bigintcalcCmp{#1}{#2}>0 % - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcSub - \bigintcalcNum{#1}!\bigintcalcNum{#2}!% - }{#3}% - }% - \x - \fi - \fi - \fi -} -\newcommand*{\TestShl}[2]{% - \Test{\bigintcalcShl{#1}}{#2}% - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcShl\bigintcalcAbs{#1}!% - }{\bigintcalcAbs{#2}}% - }% - \x -} -\newcommand*{\TestShr}[2]{% - \Test{\bigintcalcShr{#1}}{#2}% - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcShr\bigintcalcAbs{#1}!% - }{\bigintcalcAbs{#2}}% - }% - \x -} -\newcommand*{\TestMul}[3]{% - \Test{\bigintcalcMul{#1}{#2}}{#3}% - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcMul - \bigintcalcAbs{#1}!\bigintcalcAbs{#2}!% - }{\bigintcalcAbs{#3}}% - }% - \x -} -\newcommand*{\TestSqr}[2]{% - \Test{\bigintcalcSqr{#1}}{#2}% -} -\newcommand*{\TestFac}[2]{% - \expandafter\TestExch\expandafter{% - \the\numexpr#2% - }{\bigintcalcFac{#1}}% -} -\newcommand*{\TestFacBig}[2]{% - \Test{\bigintcalcFac{#1}}{#2}% -} -\newcommand*{\TestPow}[3]{% - \Test{\bigintcalcPow{#1}{#2}}{#3}% -} -\newcommand*{\TestDiv}[3]{% - \Test{\bigintcalcDiv{#1}{#2}}{#3}% - \TestTeXDivide{#1}{#2}% -} -\newcommand*{\TestDivBig}[3]{% - \Test{\bigintcalcDiv{#1}{#2}}{#3}% - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcDiv\bigintcalcAbs{#1}!\bigintcalcAbs{#2}!% - }{\bigintcalcAbs{#3}}% - }% -} -\newcommand*{\TestMod}[3]{% - \Test{\bigintcalcMod{#1}{#2}}{#3}% - \ifcase\ifcase\bigintcalcSgn{#1} 0% - \or - \ifcase\bigintcalcSgn{#2} 1% - \or 0% - \else 1% - \fi - \else - \ifcase\bigintcalcSgn{#2} 1% - \or 1% - \else 0% - \fi - \fi\relax - \edef\x{% - \noexpand\Test{% - \noexpand\BigIntCalcMod - \bigintcalcAbs{#1}!\bigintcalcAbs{#2}!% - }{\bigintcalcAbs{#3}}% - }% - \x - \fi -} -% \end{macrocode} -% -% \subsubsection{Time} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdfresettimer\endcsname\relax -\else - \makeatletter - \newcount\SummaryTime - \newcount\TestTime - \SummaryTime=\z@ - \newcommand*{\PrintTime}[2]{% - \typeout{% - [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]% - }% - }% - \newcommand*{\StartTime}[1]{% - \renewcommand*{\TimeDescription}{#1}% - \pdfresettimer - }% - \newcommand*{\TimeDescription}{}% - \newcommand*{\StopTime}{% - \TestTime=\pdfelapsedtime - \global\advance\SummaryTime\TestTime - \PrintTime\TimeDescription\TestTime - }% - \let\saved@qstest\qstest - \let\saved@endqstest\endqstest - \def\qstest#1#2{% - \saved@qstest{#1}{#2}% - \StartTime{#1}% - }% - \def\endqstest{% - \StopTime - \saved@endqstest - }% - \AtEndDocument{% - \PrintTime{summary}\SummaryTime - }% - \makeatother -\fi -% \end{macrocode} -% -% \subsubsection{Test sets} -% -% \begin{macrocode} -\makeatletter - -\begin{qstest}{inv}{inv}% - \TestInv{0}{0}% - \TestInv{1}{-1}% - \TestInv{-1}{1}% - \TestInv{10}{-10}% - \TestInv{-10}{10}% - \TestInv{2147483647}{-2147483647}% - \TestInv{-2147483647}{2147483647}% - \TestInv{12345678901234567890}{-12345678901234567890}% - \TestInv{-12345678901234567890}{12345678901234567890}% - \TestInv{ 0 }{0}% - \TestInv{ 1 }{-1}% - \TestInv{--1}{-1}% - \TestInv{\number\z@}{0}% - \TestInv{\ifx\relax\relax1\fi}{-1}% - \TestInv{\ifx\relax\relax-\fi\ifx234\else1\fi}{1}% -\end{qstest} - -\begin{qstest}{abs}{abs}% - \TestAbs{0}{0}% - \TestAbs{1}{1}% - \TestAbs{-1}{1}% - \TestAbs{10}{10}% - \TestAbs{-10}{10}% - \TestAbs{2147483647}{2147483647}% - \TestAbs{-2147483647}{2147483647}% - \TestAbs{12345678901234567890}{12345678901234567890}% - \TestAbs{-12345678901234567890}{12345678901234567890}% - \TestAbs{ 0 }{0}% - \TestAbs{ 1 }{1}% - \TestAbs{--1}{1}% - \TestAbs{-+-+1}{1}% - \TestAbs{00000000000}{0}% - \TestAbs{00000001000}{1000}% - \TestAbs{\ifx\relax\relax 0\else 1\fi}{0}% -\end{qstest} - -\begin{qstest}{sign}{sign}% - \TestSgn{0}{0}% - \TestSgn{1}{1}% - \TestSgn{-1}{-1}% - \TestSgn{10}{1}% - \TestSgn{-10}{-1}% - \TestSgn{2147483647}{1}% - \TestSgn{-2147483647}{-1}% - \TestSgn{12345678901234567890}{1}% - \TestSgn{-12345678901234567890}{-1}% - \TestSgn{ 0 }{0}% - \TestSgn{ 2 }{1}% - \TestSgn{ -2 }{-1}% - \TestSgn{--2}{1}% - \TestSgn{\number\z@}{0}% - \TestSgn{\number\@ne}{1}% - \TestSgn{\number\m@ne}{-1}% - \TestSgn{% - -+-+\number\z@\number\z@ - \iftrue1\fi\iftrue2\fi\iftrue3\fi - }{1}% -\end{qstest} - -\begin{qstest}{min}{min}% - \TestMin{0}{1}{0}% - \TestMin{1}{0}{0}% - \TestMin{-10}{-20}{-20}% - \TestMin{ 1 }{ 2 }{1}% - \TestMin{ 2 }{ 1 }{1}% - \TestMin{1}{1}{1}% - \TestMin{\number\z@}{\number\@ne}{0}% - \TestMin{\number\@ne}{\number\m@ne}{-1}% -\end{qstest} - -\begin{qstest}{max}{max}% - \TestMax{0}{1}{1}% - \TestMax{1}{0}{1}% - \TestMax{-10}{-20}{-10}% - \TestMax{ 1 }{ 2 }{2}% - \TestMax{ 2 }{ 1 }{2}% - \TestMax{1}{1}{1}% - \TestMax{\number\z@}{\number\@ne}{1}% - \TestMax{\number\@ne}{\number\m@ne}{1}% -\end{qstest} - -\begin{qstest}{cmp}{cmp}% - \TestCmp{0}{0}{0}% - \TestCmp{-21}{17}{-1}% - \TestCmp{3}{4}{-1}% - \TestCmp{-10}{-10}{0}% - \TestCmp{-10}{-11}{1}% - \TestCmp{100}{5}{1}% - \TestCmp{9}{10}{-1}% - \TestCmp{10}{9}{1}% - \TestCmp{ 3 }{ 3 }{0}% - \TestCmp{-9}{-10}{1}% - \TestCmp{-10}{-9}{-1}% - \TestCmp{-3}{-3}{0}% - \TestCmp{0}{-2}{1}% - \TestCmp{0}{2}{-1}% - \TestCmp{2}{0}{1}% - \TestCmp{-2}{0}{-1}% - \TestCmp{12}{11}{1}% - \TestCmp{11}{12}{-1}% - \TestCmp{2147483647}{-2147483647}{1}% - \TestCmp{-2147483647}{2147483647}{-1}% - \TestCmp{2147483647}{2147483647}{0}% - \TestCmp{\number\z@}{\number\@ne}{-1}% - \TestCmp{\number\@ne}{\number\m@ne}{1}% - \TestCmp{ 4 }{ 5 }{-1}% - \TestCmp{ -3 }{ -7 }{1}% -\end{qstest} - -\begin{qstest}{odd}{odd} -\tracingmacros=1 - \TestOdd{0}{0}% - \TestOdd{1}{1}% - \TestOdd{2}{0}% - \TestOdd{3}{1}% - \TestOdd{14}{0}% - \TestOdd{15}{1}% - \TestOdd{12345678901234567896}{0}% - \TestOdd{12345678901234567897}{1}% -\end{qstest} - -\begin{qstest}{inc}{inc}% - \TestInc{0}{1}% - \TestInc{1}{2}% - \TestInc{-1}{0}% - \TestInc{10}{11}% - \TestInc{-10}{-9}% - \TestInc{ 3 }{4}% - \TestInc{999}{1000}% - \TestInc{-1000}{-999}% - \TestInc{129}{130}% - \TestInc{2147483646}{2147483647}% - \TestInc{-2147483647}{-2147483646}% - \TestInc{12345678901234567890}{12345678901234567891}% - \TestInc{99999999999999999999}{100000000000000000000}% - \TestInc{-12345678901234567891}{-12345678901234567890}% - \TestInc{-100000000000000000000}{-99999999999999999999}% -\end{qstest} - -\begin{qstest}{dec}{dec}% - \TestDec{0}{-1}% - \TestDec{1}{0}% - \TestDec{-1}{-2}% - \TestDec{10}{9}% - \TestDec{-10}{-11}% - \TestDec{1000}{999}% - \TestDec{-999}{-1000}% - \TestDec{130}{129}% - \TestDec{2147483647}{2147483646}% - \TestDec{-2147483646}{-2147483647}% - \TestDec{12345678901234567891}{12345678901234567890}% - \TestDec{100000000000000000000}{99999999999999999999}% - \TestDec{-12345678901234567890}{-12345678901234567891}% - \TestDec{-99999999999999999999}{-100000000000000000000}% -\end{qstest} - -\begin{qstest}{add}{add}% - \TestAdd{0}{0}{0}% - \TestAdd{1}{0}{1}% - \TestAdd{0}{1}{1}% - \TestAdd{1}{2}{3}% - \TestAdd{-1}{-1}{-2}% - \TestAdd{2147483646}{1}{2147483647}% - \TestAdd{-2147483647}{2147483647}{0}% - \TestAdd{20}{-5}{15}% - \TestAdd{-4}{-1}{-5}% - \TestAdd{-1}{-4}{-5}% - \TestAdd{-4}{1}{-3}% - \TestAdd{-1}{4}{3}% - \TestAdd{4}{-1}{3}% - \TestAdd{1}{-4}{-3}% - \TestAdd{-4}{-1}{-5}% - \TestAdd{-1}{-4}{-5}% - \TestAdd{ -4 }{ -1 }{-5}% - \TestAdd{ -1 }{ -4 }{-5}% - \TestAdd{ -4 }{ 1 }{-3}% - \TestAdd{ -1 }{ 4 }{3}% - \TestAdd{ 4 }{ -1 }{3}% - \TestAdd{ 1 }{ -4 }{-3}% - \TestAdd{ -4 }{ -1 }{-5}% - \TestAdd{ -1 }{ -4 }{-5}% - \TestAdd{876543210}{111111111}{987654321}% - \TestAdd{999999999}{2}{1000000001}% -\end{qstest} - -\begin{qstest}{sub}{sub} - \TestSub{0}{0}{0}% - \TestSub{1}{0}{1}% - \TestSub{1}{2}{-1}% - \TestSub{-1}{-1}{0}% - \TestSub{2147483646}{-1}{2147483647}% - \TestSub{-2147483647}{-2147483647}{0}% - \TestSub{-4}{-1}{-3}% - \TestSub{-1}{-4}{3}% - \TestSub{-4}{1}{-5}% - \TestSub{-1}{4}{-5}% - \TestSub{4}{-1}{5}% - \TestSub{1}{-4}{5}% - \TestSub{-4}{-1}{-3}% - \TestSub{-1}{-4}{3}% - \TestSub{ -4 }{ -1 }{-3}% - \TestSub{ -1 }{ -4 }{3}% - \TestSub{ -4 }{ 1 }{-5}% - \TestSub{ -1 }{ 4 }{-5}% - \TestSub{ 4 }{ -1 }{5}% - \TestSub{ 1 }{ -4 }{5}% - \TestSub{ -4 }{ -1 }{-3}% - \TestSub{ -1 }{ -4 }{3}% - \TestSub{1000000000}{2}{999999998}% - \TestSub{987654321}{111111111}{876543210}% -\end{qstest} - -\begin{qstest}{shl}{shl} - \TestShl{0}{0}% - \TestShl{1}{2}% - \TestShl{2}{4}% - \TestShl{5621}{11242}% - \TestShl{1073741823}{2147483646}% -\end{qstest} - -\begin{qstest}{shr}{shr} - \TestShr{0}{0}% - \TestShr{1}{0}% - \TestShr{2}{1}% - \TestShr{3}{1}% - \TestShr{4}{2}% - \TestShr{5}{2}% - \TestShr{6}{3}% - \TestShr{7}{3}% - \TestShr{8}{4}% - \TestShr{9}{4}% - \TestShr{10}{5}% - \TestShr{11}{5}% - \TestShr{12}{6}% - \TestShr{13}{6}% - \TestShr{14}{7}% - \TestShr{15}{7}% - \TestShr{16}{8}% - \TestShr{17}{8}% - \TestShr{18}{9}% - \TestShr{19}{9}% - \TestShr{20}{10}% - \TestShr{21}{10}% - \TestShr{22}{11}% - \TestShr{11241}{5620}% - \TestShr{73054202}{36527101}% - \TestShr{2147483646}{1073741823}% -\end{qstest} - -\begin{qstest}{mul}{mul} - \TestMul{0}{0}{0}% - \TestMul{1}{0}{0}% - \TestMul{0}{1}{0}% - \TestMul{1}{1}{1}% - \TestMul{3}{1}{3}% - \TestMul{1}{-3}{-3}% - \TestMul{-4}{-5}{20}% - \TestMul{3}{7}{21}% - \TestMul{7}{3}{21}% - \TestMul{3}{-7}{-21}% - \TestMul{7}{-3}{-21}% - \TestMul{-3}{7}{-21}% - \TestMul{-7}{3}{-21}% - \TestMul{-3}{-7}{21}% - \TestMul{-7}{-3}{21}% - \TestMul{12}{11}{132}% - \TestMul{999}{333}{332667}% - \TestMul{1000}{4321}{4321000}% - \TestMul{12345}{173955}{2147474475}% - \TestMul{1073741823}{2}{2147483646}% - \TestMul{2}{1073741823}{2147483646}% - \TestMul{-1073741823}{2}{-2147483646}% - \TestMul{2}{-1073741823}{-2147483646}% - \TestMul{6706022400}{13}{87178291200}% -\end{qstest} - -\begin{qstest}{sqr}{sqr} - \TestSqr{0}{0}% - \TestSqr{1}{1}% - \TestSqr{2}{4}% - \TestSqr{3}{9}% - \TestSqr{4}{16}% - \TestSqr{9}{81}% - \TestSqr{10}{100}% - \TestSqr{46340}{2147395600}% - \TestSqr{-1}{1}% - \TestSqr{-2}{4}% - \TestSqr{-46340}{2147395600}% -\end{qstest} - -\begin{qstest}{fac}{fac} - \TestFac{0}{1}% - \TestFac{1}{1}% - \TestFac{2}{2}% - \TestFac{3}{2*3}% - \TestFac{4}{2*3*4}% - \TestFac{5}{2*3*4*5}% - \TestFac{6}{2*3*4*5*6}% - \TestFac{7}{2*3*4*5*6*7}% - \TestFac{8}{2*3*4*5*6*7*8}% - \TestFac{9}{2*3*4*5*6*7*8*9}% - \TestFac{10}{2*3*4*5*6*7*8*9*10}% - \TestFac{11}{2*3*4*5*6*7*8*9*10*11}% - \TestFac{12}{2*3*4*5*6*7*8*9*10*11*12}% - \TestFacBig{13}{6227020800}% - \TestFacBig{14}{87178291200}% - \TestFacBig{15}{1307674368000}% - \TestFacBig{16}{20922789888000}% - \TestFacBig{17}{355687428096000}% - \TestFacBig{18}{6402373705728000}% - \TestFacBig{19}{121645100408832000}% - \TestFacBig{20}{2432902008176640000}% - \TestFacBig{21}{51090942171709440000}% - \TestFacBig{22}{1124000727777607680000}% -\end{qstest} - -\begin{qstest}{pow}{pow} - \TestPow{-2}{0}{1}% - \TestPow{-1}{0}{1}% - \TestPow{0}{0}{1}% - \TestPow{1}{0}{1}% - \TestPow{2}{0}{1}% - \TestPow{3}{0}{1}% - \TestPow{-2}{1}{-2}% - \TestPow{-1}{1}{-1}% - \TestPow{1}{1}{1}% - \TestPow{2}{1}{2}% - \TestPow{3}{1}{3}% - \TestPow{-2}{2}{4}% - \TestPow{-1}{2}{1}% - \TestPow{0}{2}{0}% - \TestPow{1}{2}{1}% - \TestPow{2}{2}{4}% - \TestPow{3}{2}{9}% - \TestPow{0}{1}{0}% - \TestPow{1}{-2}{1}% - \TestPow{1}{-1}{1}% - \TestPow{-1}{-2}{1}% - \TestPow{-1}{-1}{-1}% - \TestPow{-1}{3}{-1}% - \TestPow{-1}{4}{1}% - \TestPow{-2}{-1}{0}% - \TestPow{-2}{-2}{0}% - \TestPow{2}{3}{8}% - \TestPow{2}{4}{16}% - \TestPow{2}{5}{32}% - \TestPow{2}{6}{64}% - \TestPow{2}{7}{128}% - \TestPow{2}{8}{256}% - \TestPow{2}{9}{512}% - \TestPow{2}{10}{1024}% - \TestPow{-2}{3}{-8}% - \TestPow{-2}{4}{16}% - \TestPow{-2}{5}{-32}% - \TestPow{-2}{6}{64}% - \TestPow{-2}{7}{-128}% - \TestPow{-2}{8}{256}% - \TestPow{-2}{9}{-512}% - \TestPow{-2}{10}{1024}% - \TestPow{3}{3}{27}% - \TestPow{3}{4}{81}% - \TestPow{3}{5}{243}% - \TestPow{-3}{3}{-27}% - \TestPow{-3}{4}{81}% - \TestPow{-3}{5}{-243}% - \TestPow{2}{30}{1073741824}% - \TestPow{-3}{19}{-1162261467}% - \TestPow{5}{13}{1220703125}% - \TestPow{-7}{11}{-1977326743}% -\end{qstest} - -\begin{qstest}{div}{div} - \TestDiv{1}{1}{1}% - \TestDiv{2}{1}{2}% - \TestDiv{-2}{1}{-2}% - \TestDiv{2}{-1}{-2}% - \TestDiv{-2}{-1}{2}% - \TestDiv{15}{2}{7}% - \TestDiv{-16}{2}{-8}% - \TestDiv{1}{2}{0}% - \TestDiv{1}{3}{0}% - \TestDiv{2}{3}{0}% - \TestDiv{-2}{3}{0}% - \TestDiv{2}{-3}{0}% - \TestDiv{-2}{-3}{0}% - \TestDiv{13}{3}{4}% - \TestDiv{-13}{-3}{4}% - \TestDiv{-13}{3}{-4}% - \TestDiv{-6}{5}{-1}% - \TestDiv{-5}{5}{-1}% - \TestDiv{-4}{5}{0}% - \TestDiv{-3}{5}{0}% - \TestDiv{-2}{5}{0}% - \TestDiv{-1}{5}{0}% - \TestDiv{0}{5}{0}% - \TestDiv{1}{5}{0}% - \TestDiv{2}{5}{0}% - \TestDiv{3}{5}{0}% - \TestDiv{4}{5}{0}% - \TestDiv{5}{5}{1}% - \TestDiv{6}{5}{1}% - \TestDiv{-5}{4}{-1}% - \TestDiv{-4}{4}{-1}% - \TestDiv{-3}{4}{0}% - \TestDiv{-2}{4}{0}% - \TestDiv{-1}{4}{0}% - \TestDiv{0}{4}{0}% - \TestDiv{1}{4}{0}% - \TestDiv{2}{4}{0}% - \TestDiv{3}{4}{0}% - \TestDiv{4}{4}{1}% - \TestDiv{5}{4}{1}% - \TestDiv{12345}{678}{18}% - \TestDiv{32372}{5952}{5}% - \TestDiv{284271294}{18162}{15651}% - \TestDiv{217652429}{12561}{17327}% - \TestDiv{462028434}{5439}{84947}% - \TestDiv{2147483647}{1000}{2147483}% - \TestDiv{2147483647}{-1000}{-2147483}% - \TestDiv{-2147483647}{1000}{-2147483}% - \TestDiv{-2147483647}{-1000}{2147483}% - \TestDiv{0}{3}{0}% - \TestDiv{1}{3}{0}% - \TestDiv{2}{3}{0}% - \TestDiv{3}{3}{1}% - \TestDiv{4}{3}{1}% - \TestDiv{5}{3}{1}% - \TestDiv{6}{3}{2}% - \TestDiv{7}{3}{2}% - \TestDiv{8}{3}{2}% - \TestDiv{9}{3}{3}% - \TestDiv{10}{3}{3}% - \TestDiv{11}{3}{3}% - \TestDiv{12}{3}{4}% - \TestDiv{13}{3}{4}% - \TestDiv{14}{3}{4}% - \TestDiv{15}{3}{5}% - \TestDiv{16}{3}{5}% - \TestDiv{17}{3}{5}% - \TestDiv{18}{3}{6}% - \TestDiv{19}{3}{6}% - \TestDiv{20}{3}{6}% - \TestDiv{21}{3}{7}% - \TestDiv{22}{3}{7}% - \TestDiv{23}{3}{7}% - \TestDiv{24}{3}{8}% - \TestDiv{25}{3}{8}% - \TestDiv{26}{3}{8}% - \TestDiv{27}{3}{9}% - \TestDiv{28}{3}{9}% - \TestDiv{29}{3}{9}% - \TestDiv{30}{3}{10}% - \TestDiv{31}{3}{10}% - \TestDivBig{17363436332507}{24702}{702916214}% -\end{qstest} - -\begin{qstest}{mod}{mod} - \TestMod{-6}{5}{4}% - \TestMod{-5}{5}{0}% - \TestMod{-4}{5}{1}% - \TestMod{-3}{5}{2}% - \TestMod{-2}{5}{3}% - \TestMod{-1}{5}{4}% - \TestMod{0}{5}{0}% - \TestMod{1}{5}{1}% - \TestMod{2}{5}{2}% - \TestMod{3}{5}{3}% - \TestMod{4}{5}{4}% - \TestMod{5}{5}{0}% - \TestMod{6}{5}{1}% - \TestMod{-5}{4}{3}% - \TestMod{-4}{4}{0}% - \TestMod{-3}{4}{1}% - \TestMod{-2}{4}{2}% - \TestMod{-1}{4}{3}% - \TestMod{0}{4}{0}% - \TestMod{1}{4}{1}% - \TestMod{2}{4}{2}% - \TestMod{3}{4}{3}% - \TestMod{4}{4}{0}% - \TestMod{5}{4}{1}% - \TestMod{-6}{-5}{-1}% - \TestMod{-5}{-5}{0}% - \TestMod{-4}{-5}{-4}% - \TestMod{-3}{-5}{-3}% - \TestMod{-2}{-5}{-2}% - \TestMod{-1}{-5}{-1}% - \TestMod{0}{-5}{0}% - \TestMod{1}{-5}{-4}% - \TestMod{2}{-5}{-3}% - \TestMod{3}{-5}{-2}% - \TestMod{4}{-5}{-1}% - \TestMod{5}{-5}{0}% - \TestMod{6}{-5}{-4}% - \TestMod{-5}{-4}{-1}% - \TestMod{-4}{-4}{0}% - \TestMod{-3}{-4}{-3}% - \TestMod{-2}{-4}{-2}% - \TestMod{-1}{-4}{-1}% - \TestMod{0}{-4}{0}% - \TestMod{1}{-4}{-3}% - \TestMod{2}{-4}{-2}% - \TestMod{3}{-4}{-1}% - \TestMod{4}{-4}{0}% - \TestMod{5}{-4}{-3}% - \TestMod{2147483647}{1000}{647}% - \TestMod{2147483647}{-1000}{-353}% - \TestMod{-2147483647}{1000}{353}% - \TestMod{-2147483647}{-1000}{-647}% - \TestMod{ 0 }{ 4 }{0}% - \TestMod{ 1 }{ 4 }{1}% - \TestMod{ -1 }{ 4 }{3}% - \TestMod{ 0 }{ -4 }{0}% - \TestMod{ 1 }{ -4 }{-3}% - \TestMod{ -1 }{ -4 }{-1}% - \TestMod{18362}{25}{12}% -\end{qstest} - -\newcommand*{\TestError}[2]{% - \begingroup - \expandafter\def\csname BigIntCalcError:#1\endcsname{}% - \Expect*{#2}{0}% - \expandafter\def\csname BigIntCalcError:#1\endcsname{ERROR}% - \Expect*{#2}{0ERROR}% - \endgroup -} -\begin{qstest}{error}{error} - \TestError{FacNegative}{\bigintcalcFac{-1}}% - \TestError{FacNegative}{\bigintcalcFac{-2147483647}}% - \TestError{DivisionByZero}{\bigintcalcPow{0}{-1}}% - \TestError{DivisionByZero}{\bigintcalcDiv{1}{0}}% - \TestError{DivisionByZero}{\bigintcalcMod{1}{0}}% -\end{qstest} - -\begin{document} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -4369,9 +3422,6 @@ $ \BIC@Temp 9{18\or27\or36\or45\or54\or63\or72\or81}% % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % bigintcalc.sty & tex/generic/oberdiek/bigintcalc.sty\\ % bigintcalc.pdf & doc/latex/oberdiek/bigintcalc.pdf\\ -% test/bigintcalc-test1.tex & doc/latex/oberdiek/test/bigintcalc-test1.tex\\ -% test/bigintcalc-test2.tex & doc/latex/oberdiek/test/bigintcalc-test2.tex\\ -% test/bigintcalc-test3.tex & doc/latex/oberdiek/test/bigintcalc-test3.tex\\ % bigintcalc.dtx & source/latex/oberdiek/bigintcalc.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/bigintcalc.pdf b/macros/latex/contrib/oberdiek/bigintcalc.pdf index 2b05dfda17..35efdbd674 100644 Binary files a/macros/latex/contrib/oberdiek/bigintcalc.pdf and b/macros/latex/contrib/oberdiek/bigintcalc.pdf differ diff --git a/macros/latex/contrib/oberdiek/bitset.dtx b/macros/latex/contrib/oberdiek/bitset.dtx index d5808e0a27..dbb7c1ba2a 100644 --- a/macros/latex/contrib/oberdiek/bitset.dtx +++ b/macros/latex/contrib/oberdiek/bitset.dtx @@ -66,9 +66,6 @@ % Installation: % TDS:tex/generic/oberdiek/bitset.sty % TDS:doc/latex/oberdiek/bitset.pdf -% TDS:doc/latex/oberdiek/test/bitset-test1.tex -% TDS:doc/latex/oberdiek/test/bitset-test2.tex -% TDS:doc/latex/oberdiek/test/bitset-test3.tex % TDS:source/latex/oberdiek/bitset.dtx % %<*ignore> @@ -141,10 +138,6 @@ and the derived files % \file{bitset-test1.tex}{\from{bitset.dtx}{test1}}% % \file{bitset-test2.tex}{\from{bitset.dtx}{test2,etex}}% % \file{bitset-test3.tex}{\from{bitset.dtx}{test2,noetex}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{bitset.xml}{\from{bitset.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -188,21 +181,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{bitset.drv} % @@ -2799,1223 +2777,7 @@ and the derived files \BitSet@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input bitset.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \subsubsection{Preamble} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{article} -\makeatletter -%<*noetex> -\let\SavedNumexpr\numexpr -\let\SavedIfcsname\ifcsname -\let\SavedCurrentgrouplevel\currentgrouplevel -\def\ETeXDisable{% - \let\ifcsname\@undefined - \let\numexpr\@undefined - \let\currentgrouplevel\@undefined -} -\ETeXDisable -% -\makeatletter -\chardef\BitSet@TestMode=1 % -\makeatother -\usepackage{bitset}[2016/05/16] -%<*noetex> -\def\ETeXEnable{% - \let\numexpr\SavedNumexpr - \let\ifcsname\SavedIfcsname - \let\currentgrouplevel\SavedCurrentgrouplevel -} -\ETeXEnable -% -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\makeatletter -% \end{macrocode} -% -% \subsubsection{Time} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdfresettimer\endcsname\relax -\else - \newcount\SummaryTime - \newcount\TestTime - \SummaryTime=\z@ - \newcommand*{\PrintTime}[2]{% - \typeout{% - [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]% - }% - }% - \newcommand*{\StartTime}[1]{% - \renewcommand*{\TimeDescription}{#1}% - \pdfresettimer - }% - \newcommand*{\TimeDescription}{}% - \newcommand*{\StopTime}{% - \TestTime=\pdfelapsedtime - \global\advance\SummaryTime\TestTime - \PrintTime\TimeDescription\TestTime - }% - \let\saved@qstest\qstest - \let\saved@endqstest\endqstest - \def\qstest#1#2{% - \saved@qstest{#1}{#2}% - \StartTime{#1}% - }% - \def\endqstest{% - \StopTime - \saved@endqstest - }% - \AtEndDocument{% - \PrintTime{summary}\SummaryTime - }% -\fi -% \end{macrocode} -% -% \subsubsection{Detection of unwanted space} -% -% \begin{macrocode} -\let\orig@qstest\qstest -\let\orig@endqstest\endqstest -\def\qstest#1#2{% - \orig@qstest{#1}{#2}% - \setbox0\hbox\bgroup\begingroup\ignorespaces -} -\def\endqstest{% - \endgroup\egroup - \Expect*{\the\wd0}{0.0pt}% - \orig@endqstest -} -% \end{macrocode} -% -% \subsubsection{Test macros} -% -% \begin{macrocode} -\newcounter{Test} - -\def\TestError#1#2{% - \begingroup - \setcounter{Test}{0}% - \sbox0{% - \def\@PackageError##1##2##3{% - \stepcounter{Test}% - \begingroup - \let\MessageBreak\relax -%<*noetex> - \ETeXEnable -% - \Expect{##1}{bitset}% - \Expect*{##2}*{#1}% - \endgroup - }% -%<*noetex> - \ETeXDisable -% - #2% - }% - \Expect*{\theTest}{1}% - \Expect*{\the\wd0}{0.0pt}% - \endgroup -} - -\def\TestErrorNegativeIndex#1#2{% - \TestError{Invalid negative index (#1)}{#2}% -} - -\def\TestGetterUndefined#1{% - \CheckUndef{dummy}% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{#1{dummy}}{0}% -} - -\def\ExpectBitSet#1#2{% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter - {\csname BS@#1\endcsname}*{#2}% -} -\def\Check#1#2{% - \ExpectBitSet{#1}{#2}% -} -\def\CheckUndef#1{% - \begingroup - \Expect*{% - \expandafter - \ifx\csname BS@#1\endcsname\relax true\else false\fi - }{true}% - \endgroup -} -\def\RevCheck#1#2{% - \ExpectBitSet{#1}{\Reverse#2!!}% -} -\def\Set#1#2{% - \expandafter\def\csname BS@#1\endcsname{#2}% -} -\def\RevSet#1#2{% - \expandafter\edef\csname BS@#1\endcsname{% - \Reverse#2!!% - }% -} -\def\Reverse#1#2!#3!{% - \ifx\\#2\\% - #1#3% - \expandafter\@gobble - \else - \expandafter\@firstofone - \fi - {\Reverse#2!#1#3!}% -} -% \end{macrocode} -% -% \subsubsection{Test sets} -% -% \begin{macrocode} -\begin{qstest}{Let}{Let} - \CheckUndef{abc}% - \CheckUndef{xyz}% - \bitsetLet{xyz}{abc}% - \CheckUndef{abc}% - \Check{xyz}{0}% - \Set{abc}{1}% - \Check{abc}{1}% - \Check{xyz}{0}% - \bitsetLet{xyz}{abc}% - \Check{abc}{1}% - \Check{xyz}{1}% - \Set{xyz}{11}% - \Check{abc}{1}% - \Check{xyz}{11}% -\end{qstest} - -\begin{qstest}{Reset}{Reset} - \bitsetReset{xyz}% - \Check{xyz}{0}% - \bitsetReset{abc}% - \Check{abc}{0}% - \Set{abc}{10101}% - \bitsetReset{abc}% - \Check{abc}{0}% -\end{qstest} - -\begin{qstest}{Get/Query}{Get/Query} - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetGet{dummy}{0}% - }{0}% - \begingroup - \expandafter\def\csname BitSetError:NegativeIndex\endcsname{}% - \Set{abc}{1}% - \Expect*{\bitsetQuery{abc}{-1}{true}{false}}{false}% - \endgroup - \def\Test#1#2#3{% - \Set{abc}{#1}% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{\bitsetGet{abc}{#2}}{#3}% - \Expect*{\bitsetQuery{abc}{#2}{true}{false}}% - *{\ifcase#3 false\or true\else error\fi}% - }% - \Test{1}{100}{0}% - \Test{0}{0}{0}% - \Test{1}{0}{1}% - \Test{11}{1}{1}% - \Test{111}{1}{1}% - \Test{101}{1}{0}% - \Test{101}{2}{1}% - \Test{10100110011}{10}{1}% -\end{qstest} - -\begin{qstest}{Size}{Size} - \TestGetterUndefined\bitsetSize - \def\Test#1#2{% - \Set{abc}{#1}% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{\bitsetSize{abc}}{#2}% - }% - \Test{0}{0}% - \Test{1}{1}% - \Test{00}{0}% - \Test{0000000}{0}% - \Test{10}{1}% - \Test{01}{2}% - \Test{11}{2}% - \Test{010}{2}% - \Test{011}{3}% - \Test{100110011}{9}% - \Test{0000011111000001111100000}{20}% - \Test{000000000000000000000000011111111111111111111}{45}% -\end{qstest} - -\begin{qstest}{Cardinality}{Cardinality} - \TestGetterUndefined\bitsetCardinality - \def\Test#1#2{% - \Set{abc}{#1}% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetCardinality{abc}% - }{#2}% - }% - \Test{0}{0}% - \Test{1}{1}% - \Test{00}{0}% - \Test{0000000}{0}% - \Test{10}{1}% - \Test{01}{1}% - \Test{11}{2}% - \Test{010}{1}% - \Test{011}{2}% - \Test{100110011}{5}% - \Test{0000011111000001111100000}{10}% - \Test{000000000000000000000000011111111111111111111}{20}% -\end{qstest} - -\begin{qstest}{NextClearBit/NextSetBit}{NextClearBit/NextSetBit} - \def\Test#1#2{% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \TestOp{abc}{#1}% - }{#2}% - }% - \def\Clear{\let\TestOp\bitsetNextClearBit}% - \def\Set{\let\TestOp\bitsetNextSetBit}% - \begingroup - \catcode`\:=11 % - \bitsetSetBin{abc}{1}% - \Clear - \Test{-1}{1\BitSetError:NegativeIndex}% - \Set - \Test{-1}{0\BitSetError:NegativeIndex}% - \endgroup - \let\BS@abc\@undefined - \Clear - \Test{0}{0}% - \Test{1}{1}% - \Test{2}{2}% - \Test{100}{100}% - \Set - \Test{0}{-1}% - \Test{1}{-1}% - \Test{100}{-1}% - \bitsetReset{abc}% - \Clear - \Test{0}{0}% - \Test{1}{1}% - \Test{2}{2}% - \Test{100}{100}% - \Set - \Test{0}{-1}% - \Test{1}{-1}% - \Test{100}{-1}% - \bitsetSetBin{abc}{1}% - \Clear - \Test{0}{1}% - \Test{1}{1}% - \Test{2}{2}% - \Test{100}{100}% - \Set - \Test{0}{0}% - \Test{1}{-1}% - \Test{100}{-1}% - \bitsetSetBin{abc}{111000111000111000111}% - \Clear - \Test{0}{3}% - \Test{1}{3}% - \Test{2}{3}% - \Test{3}{3}% - \Test{4}{4}% - \Test{5}{5}% - \Test{6}{9}% - \Test{7}{9}% - \Test{8}{9}% - \Test{9}{9}% - \Test{10}{10}% - \Test{11}{11}% - \Test{12}{15}% - \Test{13}{15}% - \Test{14}{15}% - \Test{15}{15}% - \Test{16}{16}% - \Test{17}{17}% - \Test{18}{21}% - \Test{19}{21}% - \Test{20}{21}% - \Test{21}{21}% - \Test{22}{22}% - \Test{100}{100}% - \Set - \Test{0}{0}% - \Test{1}{1}% - \Test{2}{2}% - \Test{3}{6}% - \Test{4}{6}% - \Test{5}{6}% - \Test{6}{6}% - \Test{7}{7}% - \Test{8}{8}% - \Test{9}{12}% - \Test{10}{12}% - \Test{11}{12}% - \Test{12}{12}% - \Test{13}{13}% - \Test{14}{14}% - \Test{15}{18}% - \Test{16}{18}% - \Test{17}{18}% - \Test{18}{18}% - \Test{19}{19}% - \Test{20}{20}% - \Test{21}{-1}% - \Test{22}{-1}% - \Test{100}{-1}% - \bitsetSetBin{abc}{1111111}% - \Clear - \Test{6}{7}% - \Test{7}{7}% - \Test{8}{8}% - \Test{100}{100}% - \Set - \Test{6}{6}% - \Test{7}{-1}% - \Test{8}{-1}% - \Test{100}{-1}% - \bitsetSetBin{abc}{11111111}% - \Clear - \Test{7}{8}% - \Test{8}{8}% - \Test{9}{9}% - \Test{100}{100}% - \Set - \Test{7}{7}% - \Test{8}{-1}% - \Test{9}{-1}% - \Test{100}{-1}% - \bitsetSetBin{abc}{111111111}% - \Clear - \Test{8}{9}% - \Test{9}{9}% - \Test{10}{10}% - \Test{100}{100}% - \Set - \Test{8}{8}% - \Test{9}{-1}% - \Test{10}{-1}% - \Test{100}{-1}% - \bitsetSetBin{abc}{1111111111}% - \Clear - \Test{9}{10}% - \Test{10}{10}% - \Test{11}{11}% - \Test{100}{100}% - \Set - \Test{9}{9}% - \Test{10}{-1}% - \Test{11}{-1}% - \Test{100}{-1}% -\end{qstest} - -\begin{qstest}{GetSetBitList}{GetSetBitList} - \let\BS@abc\@undefined - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetGetSetBitList{abc}% - }{}% - \def\Test#1#2{% - \bitsetSetBin{abc}{#1}% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetGetSetBitList{abc}% - }{#2}% - }% - \Test{0}{}% - \Test{1}{0}% - \Test{10}{1}% - \Test{11}{0,1}% - \Test{10110100}{2,4,5,7}% - \Test{101101001010011}{0,1,4,6,9,11,12,14}% -\end{qstest} - -\begin{qstest}{GetDec}{GetDec} - \TestGetterUndefined\bitsetGetDec - \def\Test#1#2{% - \RevSet{abc}{#1}% -%<*noetex> - \begingroup\expandafter\expandafter\expandafter\endgroup -% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetGetDec{abc}% - }{#2}% - }% - \Test{0}{0}% - \Test{1}{1}% - \Test{10}{2}% - \Test{11}{3}% - \Test{100}{4}% - \Test{101}{5}% - \Test{110}{6}% - \Test{111}{7}% - \Test{1000}{8}% - \Test{000111}{7}% - \Test{1111111111111111% - 111111111111111}{2147483647}% - \Test{0001111111111111111% - 111111111111111}{2147483647}% - \Test{1000000000000000% - 0000000000000000}{2147483648}% - \Test{1000000000000000% - 00000000000000000}{4294967296}% - \Test{0001000000000000000% - 00000000000000000}{4294967296}% - \Test{1100000000000000% - 00000000000000011}{6442450947}% -\end{qstest} - -\begin{qstest}{Clear}{Clear} - \def\Test#1#2#3{% - \RevSet{abc}{#1}% - \bitsetClear{abc}{#2}% - \Expect*{\BS@abc}*{\Reverse#3!!}% - }% - \bitsetClear{abc}{2}% - \RevCheck{abc}{0}% - \TestErrorNegativeIndex{-1}{\bitsetClear{abc}{-1}}% - \RevCheck{abc}{0}% - \Test{0}{0}{0}% - \Test{1}{0}{0}% - \Test{111}{1}{101}% - \Test{111}{30}{111}% - \Test{0000111}{5}{0000111}% 111 would also be ok - \Test{10000111}{5}{10000111}% - \Test{1001001}{3}{1000001}% -\end{qstest} - -\begin{qstest}{Set}{Set} - \def\Test#1#2#3{% - \RevSet{abc}{#1}% - \bitsetSet{abc}{#2}% - \Expect*{\BS@abc}*{\Reverse#3!!}% - }% - \bitsetSet{abc}{2}% - \RevCheck{abc}{100}% - \TestErrorNegativeIndex{-1}{\bitsetSet{abc}{-1}}% - \RevCheck{abc}{100}% - \Test{0}{0}{1}% - \Test{1}{0}{1}% - \Test{100}{1}{110}% - \Test{111}{1}{111}% - \Test{11}{1}{11}% - \Test{11}{2}{111}% - \Test{11}{3}{1011}% - \Test{111}{10}{10000000111}% - \Test{0000111}{5}{0100111}% 100111 would also be ok - \Test{10000111}{5}{10100111}% - \Test{1000001}{3}{1001001}% - \Test{1001001}{3}{1001001}% -\end{qstest} - -\begin{qstest}{Flip}{Flip} - \def\Test#1#2#3{% - \RevSet{abc}{#1}% - \bitsetFlip{abc}{#2}% - \Expect*{\BS@abc}*{\Reverse#3!!}% - }% - \bitsetFlip{abc}{2}% - \RevCheck{abc}{100}% - \TestErrorNegativeIndex{-1}{\bitsetFlip{abc}{-1}}% - \RevCheck{abc}{100}% - \Test{0}{0}{1}% - \Test{1}{0}{0}% - \Test{0}{2}{100}% - \Test{100}{1}{110}% - \Test{111}{1}{101}% - \Test{11}{1}{1}% - \Test{11}{2}{111}% - \Test{11}{3}{1011}% - \Test{111}{10}{10000000111}% - \Test{0000111}{5}{0100111}% 100111 would also be ok - \Test{10000111}{5}{10100111}% - \Test{1000001}{3}{1001001}% - \Test{1001001}{3}{1000001}% - \Test{11111}{2}{11011}% -\end{qstest} - -\begin{qstest}{SetValue}{SetValue} - \def\Test#1#2{% - \TestError{Invalid bit value (#2) not in range 0..1}{% - \bitsetSetValue{abc}{#1}{#2}% - }% - }% - \Test{0}{-1}% - \Test{0}{2}% - \Test{0}{10}% - \def\Test#1#2#3{% - \let\BS@abc\@undefined - \bitsetSetValue{abc}{#1}{#2}% - \bitsetSetBin{result}{#3}% - \Expect*{\BS@abc}*{\BS@result}% - }% - \Test{0}{0}{0}% - \Test{0}{1}{1}% - \Test{1}{0}{0}% - \Test{1}{1}{10}% - \def\Test#1#2#3#4{% - \bitsetSetBin{abc}{#1}% - \bitsetSetBin{result}{#4}% - \bitsetSetValue{abc}{#2}{#3}% - \Expect*{\BS@abc}*{\BS@result}% - }% - \Test{0}{0}{0}{0}% - \Test{0}{0}{0}{0}% - \Test{0}{0}{1}{1}% - \Test{0}{1}{0}{0}% - \Test{0}{1}{1}{10}% - \Test{1010}{2}{1}{1110}% - \Test{1010}{4}{1}{11010}% - \Test{1010}{6}{1}{1001010}% - \Test{1010}{1}{0}{1000}% - \Test{1010}{2}{0}{1010}% - \Test{1010}{3}{0}{10}% - \Test{1010}{4}{0}{1010}% - \Test{1010}{6}{0}{1010}% - \Test{1010}{2}{\csname iffalse\endcsname 0\else 1\fi}{1110}% - \Test{1010}{1}{\csname iffalse\endcsname 1\else 0\fi}{1000}% -\end{qstest} - -\begin{qstest}{IsDefined}{IsDefined} - \let\BS@abc\@undefined - \Expect*{\bitsetIsDefined{abc}{true}{false}}{false}% - \bitsetReset{abc}% - \Expect*{\bitsetIsDefined{abc}{true}{false}}{true}% -\end{qstest} - -\begin{qstest}{IsEmpty}{IsEmpty} - \let\BS@abc\@undefined - \Expect*{\bitsetIsEmpty{abc}{true}{false}}{true}% - \bitsetReset{abc}% - \Expect*{\bitsetIsEmpty{abc}{true}{false}}{true}% - \bitsetSet{abc}{1}% - \Expect*{\bitsetIsEmpty{abc}{true}{false}}{false}% -\end{qstest} - -\begin{qstest}{Equals}{Equals} - \def\Test#1#2#3{% - \Expect*{\bitsetEquals{#1}{#2}{true}{false}}{#3}% - }% - \let\BS@abc\@undefined - \Test{abc}{abc}{true}% - \Test{abc}{foo}{true}% - \Test{foo}{abc}{true}% - \bitsetReset{abc}% - \Test{abc}{abc}{true}% - \Test{abc}{foo}{false}% - \Test{foo}{abc}{false}% - \bitsetReset{foo}% - \Test{abc}{foo}{true}% - \Test{foo}{abc}{true}% - \bitsetSet{abc}{4}% - \Test{abc}{foo}{false}% - \Test{foo}{abc}{false}% - \bitsetFlip{foo}{4}% - \Test{abc}{foo}{true}% - \Test{foo}{abc}{true}% -\end{qstest} - -\begin{qstest}{Intersects}{Intersects} - \def\Test#1{% - \Expect*{\bitsetIntersects{abc}{foo}{true}{false}}{#1}% - }% - \let\BS@abc\@undefined - \let\BS@foo\@undefined - \Test{false}% - \Set{abc}{0}% - \Test{false}% - \Set{foo}{0}% - \Test{false}% - \let\BS@abc\@undefined - \Test{false}% - \Set{foo}{1}% - \Test{false}% - \Set{abc}{0}% - \Test{false}% - \Set{abc}{1}% - \Test{true}% - \let\BS@foo\@undefined - \Test{false}% - \Set{foo}{0}% - \Test{false}% - \def\Test#1#2#3{% - \bitsetSetBin{abc}{#1}% - \bitsetSetBin{foo}{#2}% - \Expect*{\bitsetIntersects{abc}{foo}{true}{false}}{#3}% - }% - \Test{1010}{0101}{false}% - \Test{0}{10}{false}% - \Test{1}{11}{true}% - \Test{11}{1}{true}% - \Test{10}{1}{false}% -\end{qstest} - -\begin{qstest}{And/AndNot/Or/Xor}{And/AndNot/Or/Xor} - \def\@Test#1#2#3#4#5{% - \begingroup - #5% - \begingroup - \let\BS@foo\@undefined - \csname bitset#1\endcsname{abc}{foo}% - \CheckUndef{foo}% - \Check{abc}{#2}% - \endgroup - \begingroup - \bitsetReset{foo}% - \csname bitset#1\endcsname{abc}{foo}% - \Check{foo}{0}% - \Check{abc}{#3}% - \endgroup - \begingroup - \def\BS@foo{0101}% - \csname bitset#1\endcsname{abc}{foo}% - \Check{foo}{0101}% - \Check{abc}{#4}% - \endgroup - \endgroup - }% - \def\Test#1{% - \def\Op{#1}% - \Test@ - }% - \def\Test@#1#2#3#4#5#6#7#8#9{% - \@Test\Op{#1}{#2}{#3}{% - \let\BS@abc\@undefined - }% - \@Test\Op{#4}{#5}{#6}{% - \bitsetReset{abc}% - }% - \@Test\Op{#7}{#8}{#9}{% - \def\BS@abc{1001}% - }% - }% - \Test{And}% - {0}{0}{0}% - {0}{0}{0}% - {0}{0}{0001}% - \Test{AndNot}% - {0}{0}{0}% - {0}{0}{0}% - {1001}{1001}{1}% - \Test{Or}% - {0}{0}{0101}% - {0}{0}{0101}% - {1001}{1001}{1101}% - \Test{Xor}% - {0}{0}{0101}% - {0}{0}{0101}% - {1001}{1001}{11}% - \def\Test#1#2#3{% - \bitsetSetBin{abc}{#1}% - \bitsetSetBin{foo}{#2}% - \csname bitset\Op\endcsname{abc}{foo}% - \RevCheck{foo}{#2}% - \RevCheck{abc}{#3}% - }% - \def\Op{And}% - \Test{1}{111}{1}% - \Test{111}{1}{1}% - \Test{10}{111}{10}% - \Test{111}{10}{10}% - \Test{111}{1000}{0}% - \Test{1000}{111}{0}% - \def\Op{AndNot}% - \Test{1010}{11}{1000}% - \Test{100}{100}{0}% - \Test{111}{1111}{0}% - \Test{100}{111}{0}% - \def\Op{Or}% - \Test{0}{0}{0}% - \Test{1}{0}{1}% - \Test{0}{1}{1}% - \Test{1}{1}{1}% - \Test{1000}{10}{1010}% - \Test{10}{1000}{1010}% - \def\Op{Xor}% - \Test{0}{0}{0}% - \Test{1}{0}{1}% - \Test{0}{1}{1}% - \Test{1}{1}{0}% - \Test{1000}{10}{1010}% - \Test{10}{1000}{1010}% - \Test {110011001100}% - {111000111000111}% - {111110100001011}% - \Test{111000111000111}% - {110011001100}% - {111110100001011}% -\end{qstest} - -\begin{qstest}{GetUndef}{GetUndef, GetBin, GetOct, GetHex} - \def\TestUndef#1#2{% - \let\BS@abc\@undefined - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \x{abc}{#1}% - }{#2}% - }% - \let\x\bitsetGetBin - \TestUndef{-1}{0}% - \TestUndef{0}{0}% - \TestUndef{1}{0}% - \TestUndef{2}{00}% - \TestUndef{8}{00000000}% - \let\x\bitsetGetOct - \TestUndef{-1}{0}% - \TestUndef{0}{0}% - \TestUndef{1}{0}% - \TestUndef{2}{0}% - \TestUndef{3}{0}% - \TestUndef{4}{00}% - \TestUndef{5}{00}% - \TestUndef{6}{00}% - \TestUndef{7}{000}% - \TestUndef{8}{000}% - \TestUndef{9}{000}% - \TestUndef{10}{0000}% - \let\x\bitsetGetHex - \TestUndef{-1}{0}% - \TestUndef{0}{0}% - \TestUndef{1}{0}% - \TestUndef{2}{0}% - \TestUndef{3}{0}% - \TestUndef{4}{0}% - \TestUndef{5}{00}% - \TestUndef{6}{00}% - \TestUndef{7}{00}% - \TestUndef{8}{00}% - \TestUndef{9}{000}% - \TestUndef{10}{000}% - \TestUndef{12}{000}% - \TestUndef{13}{0000}% - \TestUndef{16}{0000}% - \TestUndef{17}{00000}% -\end{qstest} - -\begin{qstest}{SetBin}{SetBin} - \def\Test#1#2{% - \let\BS@abc\@undefined - \bitsetSetBin{abc}{#1}% - \expandafter\Expect\expandafter{\BS@abc}{#2}% - }% - \Test{}{0}% - \Test{0}{0}% - \Test{1}{1}% - \Test{10}{01}% - \Test{11}{11}% - \Test{010}{01}% - \Test{011}{11}% - \Test{0010}{01}% - \Test{1010}{0101}% -\end{qstest} - -\begin{qstest}{SetOct}{SetOct} - \def\Test#1#2{% - \bitsetSetOct{abc}{#1}% - \expandafter\Expect\expandafter{\BS@abc}{#2}% - }% - \Test{}{0}% - \Test{0}{0}% - \Test{000}{0}% - \Test{1}{1}% - \Test{001}{1}% - \Test{010}{0001}% - \Test{020}{00001}% - \Test{42}{010001}% - \Test{377}{11111111}% - \Test{0377}{11111111}% - \Test{76543210}{000100010110001101011111}% - \Test{ 0 7 0 7 1 }{100111000111}% -\end{qstest} - -\begin{qstest}{SetHex}{SetHex} - \def\Test#1#2{% - \bitsetSetHex{abc}{#1}% - \expandafter\Expect\expandafter{\BS@abc}{#2}% - }% - \Test{}{0}% - \Test{0}{0}% - \Test{000}{0}% - \Test{1}{1}% - \Test{001}{1}% - \Test{010}{00001}% - \Test{020}{000001}% - \Test{42}{0100001}% - \Test{3F}{111111}% - \Test{03F}{111111}% - \Test{43210}{0000100001001100001}% - \Test{98765}{10100110111000011001}% - \Test{FEDCBA}{010111010011101101111111}% - \Test{ 0 F 0 F 1 }{1000111100001111}% -\end{qstest} - -\begin{qstest}{SetDec}{SetDec} - \def\Test#1#2{% - \bitsetSetDec{abc}{#1}% - \expandafter\Expect\expandafter{\BS@abc}{#2}% - }% - \Test{}{0}% - \Test{0}{0}% - \Test{000}{0}% - \Test{1}{1}% - \Test{7}{111}% - \Test{8}{0001}% - \Test{001}{1}% - \Test{010}{0101}% - \Test{020}{00101}% - \Test{53}{101011}% - \Test{255}{11111111}% - \Test{256}{000000001}% - \Test{999999999}{111111111001001101011001110111}% - \Test{1000000000}{000000000101001101011001110111}% - \Test{4210987654}{01100001010010010111111101011111}% - \Test{2147483647}{1111111111111111111111111111111}% - \Test{2147483648}{00000000000000000000000000000001}% -\end{qstest} - -\begin{qstest}{GetBin}{GetBin} - \def\TestUndef#1#2{% - \let\BS@abc\@undefined - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetGetBin{abc}{#1}% - }{#2}% - }% - \TestUndef{-1}{0}% - \TestUndef{0}{0}% - \TestUndef{1}{0}% - \TestUndef{2}{00}% - \TestUndef{8}{00000000}% - \def\Test#1#2{% - \bitsetSetBin{abc}{#2}% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetGetBin{abc}{#1}% - }{#2}% - }% - \Test{-1}{0}% - \Test{0}{0}% - \Test{1}{0}% - \Test{1}{1}% - \Test{2}{01}% - \Test{2}{10}% - \Test{3}{010}% - \Test{2}{00}% - \Test{2}{01}% - \Test{8}{00101100}% - \Test{2}{10101}% - \Test{-100}{11011}% -\end{qstest} - -\begin{qstest}{GetOct}{GetOct} - \def\Test#1#2#3{% - \edef\x{\zap@space#1 \@empty}% - \edef\x{\noexpand\bitsetSetBin{abc}{\x}}% - \x - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetGetOct{abc}{#2}% - }{#3}% - }% - \Test{111 110 101 100 011 010 001 000}{0}{76543210}% - \Test{000 111}{0}{7}% - \Test{101 000}{-1}{50}% - \Test{111}{-1}{7}% - \Test{111}{0}{7}% - \Test{111}{1}{7}% - \Test{111}{3}{7}% - \Test{111}{4}{07}% - \Test{111}{6}{07}% - \Test{111}{7}{007}% - \Test{111 010}{6}{72}% - \Test{111 010}{7}{072}% - \Test{011 111}{0}{37}% - \Test{011 111}{6}{37}% - \Test{011 111}{7}{037}% - \Test{001 111}{0}{17}% - \Test{001 111}{6}{17}% - \Test{001 111}{7}{017}% -\end{qstest} - -\begin{qstest}{GetHex}{GetHex} - \def\Test#1#2#3{% - \bitsetSetBin{abc}{#1}% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{% - \bitsetGetHex{abc}{#2}% - }{#3}% - }% - \Test{1111 1110 1101 1100 1011 1010 1001 1000}{0}{FEDCBA98}% - \Test{0111 0110 0101 0100 0011 0010 0001 0000}{0}{76543210}% - \Test{0000 1111}{0}{F}% - \Test{0101 0000}{-1}{50}% - \Test{1111}{-1}{F}% - \Test{1111}{0}{F}% - \Test{1111}{1}{F}% - \Test{1111}{4}{F}% - \Test{1111}{5}{0F}% - \Test{1111}{8}{0F}% - \Test{1111}{9}{00F}% - \Test{1111 0010}{8}{F2}% - \Test{1111 0010}{9}{0F2}% - \Test{0111 1111}{0}{7F}% - \Test{0111 1111}{8}{7F}% - \Test{0111 1111}{9}{07F}% - \Test{0011 1111}{0}{3F}% - \Test{0011 1111}{8}{3F}% - \Test{0011 1111}{9}{03F}% - \Test{0001 1111}{0}{1F}% - \Test{0001 1111}{8}{1F}% - \Test{0001 1111}{9}{01F}% -\end{qstest} - -\begin{qstest}{Range}{Range} - \TestError{% - Wrong index numbers in range [9..8]\MessageBreak% hash-ok - for clear/set/flip on bit set `abc'.\MessageBreak - The lower index exceeds the upper index.\MessageBreak - Canceling the operation as error recovery% - }{% - \bitsetSetRange{abc}{9}{8}% - }% - \def\TestErrorNegInd#1#2#3#4#5#6{% - \TestError{% - Negative index in range [#2..#3]\MessageBreak % hash-ok - for \string\bitset #1Range on bit set `abc'.\MessageBreak - Using [#4..#5] as error recovery% hash-ok - }{% - \csname bitset#1Range\endcsname{abc}{#2}{#3}% - \global\let\BS@global\BS@abc - }% - \Check{global}{#6}% - }% - \Set{abc}{111}% - \TestErrorNegInd{Clear}{-1}{0}{0}{0}{111}% - \TestErrorNegInd{Clear}{0}{-1}{0}{0}{111}% - \TestErrorNegInd{Clear}{-2}{2}{0}{2}{001}% - \bitsetReset{abc}% - \TestErrorNegInd{Set}{-1}{0}{0}{0}{0}% - \TestErrorNegInd{Set}{0}{-1}{0}{0}{0}% - \TestErrorNegInd{Set}{-2}{2}{0}{2}{11}% - \Set{abc}{101}% - \TestErrorNegInd{Flip}{-1}{0}{0}{0}{101}% - \TestErrorNegInd{Flip}{0}{-1}{0}{0}{101}% - \TestErrorNegInd{Flip}{-2}{2}{0}{2}{011}% - \def\Test#1#2#3#4{% - \bitsetSetBin{abc}{#1}% - \csname bitset\TestOp Range\endcsname{abc}{#2}{#3}% - \Expect*{\bitsetGetBin{abc}{0}}{#4}% - }% - \def\TestOp{Clear}% - \Test{0}{0}{1}{0}% - \Test{1111}{1}{2}{1101}% - \Test{1111}{1}{3}{1001}% - \Test{1111111100000000}{12}{14}{1100111100000000}% - \def\TestOp{Set}% - \Test{0}{0}{1}{1}% - \Test{1000}{1}{2}{1010}% - \Test{0}{1}{2}{10}% - \Test{1}{12}{15}{111000000000001}% - \Test{1111}{1}{3}{1111}% - \Test{1000000000000000}{12}{14}{1011000000000000}% - \def\TestOp{Flip}% - \Test{0}{0}{1}{1}% - \Test{1}{0}{1}{0}% - \Test{10101010}{1}{5}{10110100}% - \def\Test#1#2#3#4#5{% - \bitsetSetBin{abc}{#1}% - \bitsetSetValueRange{abc}{#2}{#3}{#4}% - \Expect*{\bitsetGetBin{abc}{0}}{#5}% - }% - \Test{0}{0}{1}{0}{0}% - \Test{0}{0}{1}{1}{1}% - \Test{1010}{1}{3}{0}{1000}% - \Test{1010}{1}{3}{1}{1110}% -\end{qstest} - -\begin{qstest}{ShiftLeft/ShiftRight}{ShiftLeft/ShiftRight} - \def\@Test#1#2{% - \let\BS@abc\@undefined - \csname bitsetShift#1\endcsname{abc}{#2}% - \Expect*{\BS@abc}{0}% - }% - \def\Test#1{% - \@Test{Left}{#1}% - \@Test{Right}{#1}% - }% - \Test{-16}% - \Test{-1}% - \Test{0}% - \Test{1}% - \Test{16}% - \def\Test#1#2#3{% - \bitsetSetBin{abc}{#1}% - \bitsetSetBin{result}{#3}% - \csname bitsetShift\Op\endcsname{abc}{#2}% - \Expect*{\bitsetGetBin{abc}{0}}*{\bitsetGetBin{result}{0}}% - }% - \def\Op{Left}% - \Test{0}{0}{0}% - \Test{0}{1}{0}% - \Test{0}{-1}{0}% - \Test{1}{0}{1}% - \Test{1}{1}{10}% - \Test{1}{-1}{0}% - \Test{10}{1}{100}% - \Test{10}{-1}{1}% - \Test{1}{32}{100000000000000000000000000000000}% - \Test{1}{-100}{0}% - \def\Op{Right}% - \Test{0}{0}{0}% - \Test{0}{1}{0}% - \Test{0}{-1}{0}% - \Test{1}{0}{1}% - \Test{1}{1}{0}% - \Test{1}{-1}{10}% - \Test{10}{1}{1}% - \Test{10}{-1}{100}% - \Test{1}{-32}{100000000000000000000000000000000}% - \Test{1}{100}{0}% - \Test{110110110110110}{10}{11011}% - \Test{110110110110110}{100}{0}% - \Test{1}{100000}{0}% -\end{qstest} - -\begin{qstest}{Profile: Set}{Profile: Set} - \bitsetSet{abc}{4095}% - \global\let\BS@global\BS@abc -\end{qstest} - -\begin{qstest}{Profile: Get}{Profile: Get} - \edef\x{\bitsetGet{global}{4095}}% -\end{qstest} - -\begin{document} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -4064,9 +2826,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % bitset.sty & tex/generic/oberdiek/bitset.sty\\ % bitset.pdf & doc/latex/oberdiek/bitset.pdf\\ -% test/bitset-test1.tex & doc/latex/oberdiek/test/bitset-test1.tex\\ -% test/bitset-test2.tex & doc/latex/oberdiek/test/bitset-test2.tex\\ -% test/bitset-test3.tex & doc/latex/oberdiek/test/bitset-test3.tex\\ % bitset.dtx & source/latex/oberdiek/bitset.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/bitset.pdf b/macros/latex/contrib/oberdiek/bitset.pdf index 27ccddf492..63ca003658 100644 Binary files a/macros/latex/contrib/oberdiek/bitset.pdf and b/macros/latex/contrib/oberdiek/bitset.pdf differ diff --git a/macros/latex/contrib/oberdiek/bmpsize.dtx b/macros/latex/contrib/oberdiek/bmpsize.dtx index a0d76210c2..a6c815e430 100644 --- a/macros/latex/contrib/oberdiek/bmpsize.dtx +++ b/macros/latex/contrib/oberdiek/bmpsize.dtx @@ -64,7 +64,6 @@ % Installation: % TDS:tex/latex/oberdiek/bmpsize.sty % TDS:tex/latex/oberdiek/bmpsize-base.sty -% TDS:tex/latex/oberdiek/bmpsize-test.tex % TDS:tex/latex/oberdiek/bmpsize-dvips.def % TDS:tex/latex/oberdiek/bmpsize-dvipdfm.def % TDS:tex/latex/oberdiek/bmpsize-dvipdfmx.def @@ -140,10 +139,6 @@ and the derived files \file{bmpsize-dvips.def}{\from{bmpsize.dtx}{dvips}}% \file{bmpsize-dvipdfm.def}{\from{bmpsize.dtx}{dvipdfm}}% \file{bmpsize-dvipdfmx.def}{\from{bmpsize.dtx}{dvipdfmx}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{bmpsize.xml}{\from{bmpsize.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -182,21 +177,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{bmpsize.drv} % @@ -3791,7 +3771,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % bmpsize.sty & tex/latex/oberdiek/bmpsize.sty\\ % bmpsize-base.sty & tex/latex/oberdiek/bmpsize-base.sty\\ -% bmpsize-test.tex & tex/latex/oberdiek/bmpsize-test.tex\\ % bmpsize-dvips.def & tex/latex/oberdiek/bmpsize-dvips.def\\ % bmpsize-dvipdfm.def & tex/latex/oberdiek/bmpsize-dvipdfm.def\\ % bmpsize-dvipdfmx.def & tex/latex/oberdiek/bmpsize-dvipdfmx.def\\ @@ -3911,7 +3890,7 @@ and the derived files % D.\,P.\,Carlisle, The \LaTeX\ Project: % \textit{Packages in the `graphics' bundle}, % 2005/11/14; -% \CTAN{macros/latex/required/graphics/grfguide.pdf}. +% \CTANpkg{grfguide}. % % \subsection{URLs for bitmap format descriptions} % diff --git a/macros/latex/contrib/oberdiek/bmpsize.pdf b/macros/latex/contrib/oberdiek/bmpsize.pdf index 7361945b91..bd0bbf6032 100644 Binary files a/macros/latex/contrib/oberdiek/bmpsize.pdf and b/macros/latex/contrib/oberdiek/bmpsize.pdf differ diff --git a/macros/latex/contrib/oberdiek/catchfile.dtx b/macros/latex/contrib/oberdiek/catchfile.dtx index 2f40cdd388..439a7871e7 100644 --- a/macros/latex/contrib/oberdiek/catchfile.dtx +++ b/macros/latex/contrib/oberdiek/catchfile.dtx @@ -67,9 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/catchfile.sty % TDS:doc/latex/oberdiek/catchfile.pdf -% TDS:doc/latex/oberdiek/test/catchfile-test1.tex -% TDS:doc/latex/oberdiek/test/catchfile-test2.tex -% TDS:doc/latex/oberdiek/test/catchfile-test3.tex % TDS:source/latex/oberdiek/catchfile.dtx % %<*ignore> @@ -143,10 +140,6 @@ and the derived files % \file{catchfile-test1.tex}{\from{catchfile.dtx}{test1}}% % \file{catchfile-test2.tex}{\from{catchfile.dtx}{test2}}% % \file{catchfile-test3.tex}{\from{catchfile.dtx}{test3}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{catchfile.xml}{\from{catchfile.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -183,21 +176,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{catchfile.drv} % @@ -591,306 +569,7 @@ and the derived files \CatchFile@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input catchfile.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{\LaTeX} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\listfiles -\tracingnesting=2 % -\documentclass{minimal} -\usepackage{catchfile}[2016/05/16] -\makeatletter -\def\mysetup{% - \let\do\@makeother - \dospecials -} -\def\CheckContents{% - \begingroup - \expandafter\ifx\csname contents\endcsname\relax - \PackageError{TEST}{\string\contents\space is not defined}\@ehc - \fi - \endgroup -} -\def\StartDisableUnexpanded{% - \begingroup - \let\etex@unexpanded\@undefined -} -\def\StopDisableUnexpanded{% - \endgroup -} -\def\CheckCleanup{% - \begingroup - \edef\x{\the\toks0}% - \def\y{ABC}% - \ifx\x\y - \else - \PackageError{TEST}{\string\toks0 has changed}\@ehc - \fi - \ifx\CatchFile@gtemp\@undefined - \else - \PackageError{TEST}{Left over \string\CatchFile@gtemp}\@ehc - \fi - \endgroup -} -\def\Check{% - \CheckContents - \CheckCleanup -} -\makeatother -\begin{document} -\toks0{ABC} - -\CatchFileDef\contents{catchfile.sty}\mysetup -\typeout{\meaning\contents} -\Check -\typeout{***********************************************************}% -\CatchFileDef\contents{catchfile.sty}{} -\typeout{\meaning\contents} -\Check -\typeout{***********************************************************}% - -\StartDisableUnexpanded -\CatchFileDef\contents{catchfile.sty}\mysetup -\typeout{\meaning\contents} -\Check -\typeout{***********************************************************}% -\CatchFileDef\contents{catchfile.sty}{} -\typeout{\meaning\contents} -\Check -\typeout{***********************************************************}% -\StopDisableUnexpanded - -\CatchFileEdef\contents{catchfile.sty}{% - \mysetup - \def\par{^^J}% - \obeylines -} -\typeout{\contents} -\Check -\typeout{***********************************************************}% -\CatchFileEdef\contents{catchfile.sty}{% - \catcode`\\=12 % - \catcode`\#=12 % - \def\par{^^J}% - \obeylines -} -\typeout{\contents} -\Check -\typeout{***********************************************************}% -\end{document} -% -% \end{macrocode} -% -% \subsection{\plainTeX} -% -% \begin{macrocode} -%<*test3> -\def\msg#{\immediate\write16} -\newlinechar=10 % -\tracingnesting=2 % -\input catchfile.sty\relax - -\def\mysetup{% - \def\do##1{% - \catcode`##1=12\relax - }% - \dospecials -} -\def\CheckContents{% - \begingroup - \expandafter\ifx\csname contents\endcsname\relax - \def\space{ }% - \errmessage{\string\contents\space is not defined.}% - \fi - \endgroup -} -\catcode`\@=11 % -\def\CheckCleanup{% - \begingroup - \edef\x{\the\toks0}% - \def\y{ABC}% - \ifx\x\y - \else - \errmessage{\string\toks0 has changed}% - \fi - \ifx\CatchFile@gtemp\@undefined - \else - \errmessage{Left over \string\CatchFile@gtemp}% - \fi - \endgroup -} -\def\Check{% - \CheckContents - \CheckCleanup -} -\def\StartDisableUnexpanded{% - \begingroup - \let\etex@unexpanded\@undefined -} -\def\StopDisableUnexpanded{% - \endgroup -} -\catcode`\@=12 % - -\toks0{ABC} - -\CatchFileDef\contents{catchfile.sty}\mysetup -\msg{\meaning\contents} -\Check -\msg{***********************************************************}% -\CatchFileDef\contents{catchfile.sty}{} -\msg{\meaning\contents} -\Check -\msg{***********************************************************}% - -\StartDisableUnexpanded -\CatchFileDef\contents{catchfile.sty}\mysetup -\msg{\meaning\contents} -\Check -\msg{***********************************************************}% -\CatchFileDef\contents{catchfile.sty}{} -\msg{\meaning\contents} -\Check -\msg{***********************************************************}% -\StopDisableUnexpanded - -\CatchFileEdef\contents{catchfile.sty}{% - \mysetup - \def\par{^^J}% - \obeylines -} -\msg{\contents} -\Check -\msg{***********************************************************}% -\CatchFileEdef\contents{catchfile.sty}{% - \catcode`\\=12 % - \catcode`\#=12 % - \def\par{^^J}% - \obeylines -} -\msg{\contents} -\Check -\msg{***********************************************************}% - -\csname @@end\endcsname -\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -939,9 +618,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % catchfile.sty & tex/generic/oberdiek/catchfile.sty\\ % catchfile.pdf & doc/latex/oberdiek/catchfile.pdf\\ -% test/catchfile-test1.tex & doc/latex/oberdiek/test/catchfile-test1.tex\\ -% test/catchfile-test2.tex & doc/latex/oberdiek/test/catchfile-test2.tex\\ -% test/catchfile-test3.tex & doc/latex/oberdiek/test/catchfile-test3.tex\\ % catchfile.dtx & source/latex/oberdiek/catchfile.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/catchfile.pdf b/macros/latex/contrib/oberdiek/catchfile.pdf index e80f9d2f22..79c8e5ec02 100644 Binary files a/macros/latex/contrib/oberdiek/catchfile.pdf and b/macros/latex/contrib/oberdiek/catchfile.pdf differ diff --git a/macros/latex/contrib/oberdiek/centernot.dtx b/macros/latex/contrib/oberdiek/centernot.dtx index 44be798cbd..dd990a3319 100644 --- a/macros/latex/contrib/oberdiek/centernot.dtx +++ b/macros/latex/contrib/oberdiek/centernot.dtx @@ -126,10 +126,6 @@ and the derived files \file{centernot.drv}{\from{centernot.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{centernot.sty}{\from{centernot.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{centernot.xml}{\from{centernot.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -181,21 +177,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{centernot.drv} % diff --git a/macros/latex/contrib/oberdiek/centernot.pdf b/macros/latex/contrib/oberdiek/centernot.pdf index 312a833231..c2bf34846a 100644 Binary files a/macros/latex/contrib/oberdiek/centernot.pdf and b/macros/latex/contrib/oberdiek/centernot.pdf differ diff --git a/macros/latex/contrib/oberdiek/chemarr.dtx b/macros/latex/contrib/oberdiek/chemarr.dtx index 528eef4571..78e1a3cbeb 100644 --- a/macros/latex/contrib/oberdiek/chemarr.dtx +++ b/macros/latex/contrib/oberdiek/chemarr.dtx @@ -131,10 +131,6 @@ and the derived files \file{chemarr.sty}{\from{chemarr.dtx}{package}}% \usedir{doc/latex/oberdiek}% \file{chemarr-example.tex}{\from{chemarr.dtx}{example}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{chemarr.xml}{\from{chemarr.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -172,21 +168,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{chemarr.drv} % diff --git a/macros/latex/contrib/oberdiek/chemarr.pdf b/macros/latex/contrib/oberdiek/chemarr.pdf index 9455775c80..a6494f979f 100644 Binary files a/macros/latex/contrib/oberdiek/chemarr.pdf and b/macros/latex/contrib/oberdiek/chemarr.pdf differ diff --git a/macros/latex/contrib/oberdiek/classlist.dtx b/macros/latex/contrib/oberdiek/classlist.dtx index 978798a9d1..8b45464521 100644 --- a/macros/latex/contrib/oberdiek/classlist.dtx +++ b/macros/latex/contrib/oberdiek/classlist.dtx @@ -126,10 +126,6 @@ and the derived files \file{classlist.drv}{\from{classlist.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{classlist.sty}{\from{classlist.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{classlist.xml}{\from{classlist.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{classlist.drv} % diff --git a/macros/latex/contrib/oberdiek/classlist.pdf b/macros/latex/contrib/oberdiek/classlist.pdf index f85b447aee..7aeefafc1f 100644 Binary files a/macros/latex/contrib/oberdiek/classlist.pdf and b/macros/latex/contrib/oberdiek/classlist.pdf differ diff --git a/macros/latex/contrib/oberdiek/colonequals.dtx b/macros/latex/contrib/oberdiek/colonequals.dtx index c3f78e4c60..aeae542c39 100644 --- a/macros/latex/contrib/oberdiek/colonequals.dtx +++ b/macros/latex/contrib/oberdiek/colonequals.dtx @@ -126,10 +126,6 @@ and the derived files \file{colonequals.drv}{\from{colonequals.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{colonequals.sty}{\from{colonequals.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{colonequals.xml}{\from{colonequals.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -170,21 +166,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{colonequals.drv} % diff --git a/macros/latex/contrib/oberdiek/colonequals.pdf b/macros/latex/contrib/oberdiek/colonequals.pdf index 563da3658a..827f29fa40 100644 Binary files a/macros/latex/contrib/oberdiek/colonequals.pdf and b/macros/latex/contrib/oberdiek/colonequals.pdf differ diff --git a/macros/latex/contrib/oberdiek/dvipscol.dtx b/macros/latex/contrib/oberdiek/dvipscol.dtx index 00840f825c..0141ae2a94 100644 --- a/macros/latex/contrib/oberdiek/dvipscol.dtx +++ b/macros/latex/contrib/oberdiek/dvipscol.dtx @@ -126,10 +126,6 @@ and the derived files \file{dvipscol.drv}{\from{dvipscol.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{dvipscol.sty}{\from{dvipscol.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{dvipscol.xml}{\from{dvipscol.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{dvipscol.drv} % diff --git a/macros/latex/contrib/oberdiek/dvipscol.pdf b/macros/latex/contrib/oberdiek/dvipscol.pdf index cc6cd3dd0b..9b9773d2d4 100644 Binary files a/macros/latex/contrib/oberdiek/dvipscol.pdf and b/macros/latex/contrib/oberdiek/dvipscol.pdf differ diff --git a/macros/latex/contrib/oberdiek/engord.dtx b/macros/latex/contrib/oberdiek/engord.dtx index e083c48ed1..6c75953200 100644 --- a/macros/latex/contrib/oberdiek/engord.dtx +++ b/macros/latex/contrib/oberdiek/engord.dtx @@ -65,7 +65,6 @@ % Installation: % TDS:tex/generic/oberdiek/engord.sty % TDS:doc/latex/oberdiek/engord.pdf -% TDS:doc/latex/oberdiek/test/engord-test1.tex % TDS:source/latex/oberdiek/engord.dtx % %<*ignore> @@ -135,10 +134,6 @@ and the derived files \file{engord.sty}{\from{engord.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{engord-test1.tex}{\from{engord.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{engord.xml}{\from{engord.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -175,21 +170,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{engord.drv} % @@ -655,118 +635,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input engord.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -815,7 +684,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % engord.sty & tex/generic/oberdiek/engord.sty\\ % engord.pdf & doc/latex/oberdiek/engord.pdf\\ -% test/engord-test1.tex & doc/latex/oberdiek/test/engord-test1.tex\\ % engord.dtx & source/latex/oberdiek/engord.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/engord.pdf b/macros/latex/contrib/oberdiek/engord.pdf index 204f7c9be8..212962f233 100644 Binary files a/macros/latex/contrib/oberdiek/engord.pdf and b/macros/latex/contrib/oberdiek/engord.pdf differ diff --git a/macros/latex/contrib/oberdiek/enparen.dtx b/macros/latex/contrib/oberdiek/enparen.dtx index be11acbd10..773ebc861c 100644 --- a/macros/latex/contrib/oberdiek/enparen.dtx +++ b/macros/latex/contrib/oberdiek/enparen.dtx @@ -163,21 +163,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{enparen.drv} % diff --git a/macros/latex/contrib/oberdiek/enparen.pdf b/macros/latex/contrib/oberdiek/enparen.pdf index 8d539601a7..dfd4019199 100644 Binary files a/macros/latex/contrib/oberdiek/enparen.pdf and b/macros/latex/contrib/oberdiek/enparen.pdf differ diff --git a/macros/latex/contrib/oberdiek/eolgrab.dtx b/macros/latex/contrib/oberdiek/eolgrab.dtx index 20d16b380e..d27e99d34e 100644 --- a/macros/latex/contrib/oberdiek/eolgrab.dtx +++ b/macros/latex/contrib/oberdiek/eolgrab.dtx @@ -71,8 +71,6 @@ % TDS:doc/latex/oberdiek/example/eolgrab-example-ltx.tex % TDS:doc/latex/oberdiek/example/eolgrab-example-env.tex % TDS:doc/latex/oberdiek/example/eolgrab-example-sec.tex -% TDS:doc/latex/oberdiek/test/eolgrab-test1.tex -% TDS:doc/latex/oberdiek/test/eolgrab-test2.tex % TDS:source/latex/oberdiek/eolgrab.dtx % %<*ignore> @@ -150,10 +148,6 @@ and the derived files % \usedir{doc/latex/oberdiek/test}% % \file{eolgrab-test1.tex}{\from{eolgrab.dtx}{test1}}% % \file{eolgrab-test2.tex}{\from{eolgrab.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{eolgrab.xml}{\from{eolgrab.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -190,21 +184,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{eolgrab.drv} % @@ -688,152 +667,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input eolgrab.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Tests for \hologo{plainTeX}} -% -% \begin{macrocode} -%<*test2> -\input eolgrab.sty\relax -\catcode`\{=1 % -\catcode`\}=2 % -\eolgrab{\immediate\write16}Hello World -\def\TestExpected{foo bar} -\eolgrab{\def\TestResult}foo bar - -\ifx\TestExpected\TestResult - \immediate\write16{* Ok (foo bar)}% -\else - \errmessage{Test failed (foo bar)}% -\fi - -\begingroup - \def\TestExpected{foobar}% - \endlinechar=-1 % - \eolgrab{\def\TestResult}foo - bar - ^^M - \ifx\TestExpected\TestResult - \immediate\write16{* Ok (foobar)}% - \else - \errmessage{Test failed (foobar)}% - \fi -\endgroup - -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -885,8 +719,6 @@ and the derived files % example/eolgrab-example-ltx.tex & doc/latex/oberdiek/example/eolgrab-example-ltx.tex\\ % example/eolgrab-example-env.tex & doc/latex/oberdiek/example/eolgrab-example-env.tex\\ % example/eolgrab-example-sec.tex & doc/latex/oberdiek/example/eolgrab-example-sec.tex\\ -% test/eolgrab-test1.tex & doc/latex/oberdiek/test/eolgrab-test1.tex\\ -% test/eolgrab-test2.tex & doc/latex/oberdiek/test/eolgrab-test2.tex\\ % eolgrab.dtx & source/latex/oberdiek/eolgrab.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/eolgrab.pdf b/macros/latex/contrib/oberdiek/eolgrab.pdf index 109807d706..9040b72738 100644 Binary files a/macros/latex/contrib/oberdiek/eolgrab.pdf and b/macros/latex/contrib/oberdiek/eolgrab.pdf differ diff --git a/macros/latex/contrib/oberdiek/etexcmds.dtx b/macros/latex/contrib/oberdiek/etexcmds.dtx index 6d8e95cbe5..236169a3af 100644 --- a/macros/latex/contrib/oberdiek/etexcmds.dtx +++ b/macros/latex/contrib/oberdiek/etexcmds.dtx @@ -67,10 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/etexcmds.sty % TDS:doc/latex/oberdiek/etexcmds.pdf -% TDS:doc/latex/oberdiek/test/etexcmds-test1.tex -% TDS:doc/latex/oberdiek/test/etexcmds-test2.tex -% TDS:doc/latex/oberdiek/test/etexcmds-test3.tex -% TDS:doc/latex/oberdiek/test/etexcmds-test4.tex % TDS:source/latex/oberdiek/etexcmds.dtx % %<*ignore> @@ -145,10 +141,6 @@ and the derived files % \file{etexcmds-test2.tex}{\from{etexcmds.dtx}{test2}}% % \file{etexcmds-test3.tex}{\from{etexcmds.dtx}{test3}}% % \file{etexcmds-test4.tex}{\from{etexcmds.dtx}{test4}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{etexcmds.xml}{\from{etexcmds.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -185,21 +177,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{etexcmds.drv} % @@ -555,180 +532,7 @@ and the derived files \etexcmds@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input etexcmds.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \begin{macrocode} -%<*test2> -\immediate\write16{etexcmds-test2.tex: test file for plainTeX} -\input etexcmds.sty\relax -\catcode`\@=11 % -\edef\x{\string\unexpanded} -\edef\y{\meaning\etex@unexpanded} -\ifx\x\y -\else - \@PackageError{etexcmds-test2}{Test failed}\@ehc -\fi -\end -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test3> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{etexcmds-test3.tex}[2016/05/16 v1.6 Test file for LaTeX] -\RequirePackage{etexcmds} -\makeatletter -\edef\x{\string\unexpanded} -\edef\y{\meaning\etex@unexpanded} -\ifx\x\y -\else - \@PackageError{etexcmds-test3}{Test failed}\@ehc -\fi -\stop -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test4> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{etexcmds-test4.tex}[2016/05/16 v1.6 Test file for LaTeX] -\documentclass{article} -\usepackage{m-pictex} -\def\normalwritestatus#1#2{% - \typeout{EMERGENCY HACK \string\normalwritestatus}% - \typeout{#1: #2}% -} -\usepackage{m-ch-de} -\usepackage{etexcmds} -\makeatletter -\ifetex@unexpanded - \edef\x{\string\unexpanded}% - \edef\y{\meaning\etex@unexpanded}% - \ifx\x\y - \else - \@PackageWarningNoLine{etexcmds-test4}{Test failed}% - \fi -\else - \@PackageWarningNoLine{etexcmds-test4}{% - Test failed because of ConTeXt% - }% -\fi -\stop -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -777,10 +581,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % etexcmds.sty & tex/generic/oberdiek/etexcmds.sty\\ % etexcmds.pdf & doc/latex/oberdiek/etexcmds.pdf\\ -% test/etexcmds-test1.tex & doc/latex/oberdiek/test/etexcmds-test1.tex\\ -% test/etexcmds-test2.tex & doc/latex/oberdiek/test/etexcmds-test2.tex\\ -% test/etexcmds-test3.tex & doc/latex/oberdiek/test/etexcmds-test3.tex\\ -% test/etexcmds-test4.tex & doc/latex/oberdiek/test/etexcmds-test4.tex\\ % etexcmds.dtx & source/latex/oberdiek/etexcmds.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/etexcmds.pdf b/macros/latex/contrib/oberdiek/etexcmds.pdf index a8cd82cfd9..4015fb4ca4 100644 Binary files a/macros/latex/contrib/oberdiek/etexcmds.pdf and b/macros/latex/contrib/oberdiek/etexcmds.pdf differ diff --git a/macros/latex/contrib/oberdiek/fibnum.dtx b/macros/latex/contrib/oberdiek/fibnum.dtx index 97c5591106..9c3f8f7986 100644 --- a/macros/latex/contrib/oberdiek/fibnum.dtx +++ b/macros/latex/contrib/oberdiek/fibnum.dtx @@ -67,8 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/fibnum.sty % TDS:doc/latex/oberdiek/fibnum.pdf -% TDS:doc/latex/oberdiek/test/fibnum-test1.tex -% TDS:doc/latex/oberdiek/test/fibnum-test-calc.tex % TDS:source/latex/oberdiek/fibnum.dtx % %<*ignore> @@ -219,21 +217,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{fibnum.drv} % @@ -738,249 +721,7 @@ and the derived files \FibNum@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input fibnum.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test calculations} -% -% \begin{macrocode} -%<*test-calc> -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input fibnum.sty\relax -\else - \RequirePackage{fibnum}[2016/05/16]% -\fi -\def\TestSet{% - \test{0}{0}% - \test{1}{1}% - \test{2}{1}% - \test{3}{2}% - \test{4}{3}% - \test{5}{5}% - \test{6}{8}% - \test{7}{13}% - \test{8}{21}% - \test{9}{34}% - \test{10}{55}% - \test{11}{89}% - \test{12}{144}% - \test{13}{233}% - \test{14}{377}% - \test{15}{610}% - \test{16}{987}% - \test{17}{1597}% - \test{18}{2584}% - \test{19}{4181}% - \test{20}{6765}% - \test{21}{10946}% - \test{22}{17711}% - \test{23}{28657}% - \test{24}{46368}% - \test{25}{75025}% - \test{26}{121393}% - \test{27}{196418}% - \test{28}{317811}% - \test{29}{514229}% - \test{30}{832040}% - \test{31}{1346269}% - \test{32}{2178309}% - \test{33}{3524578}% - \test{34}{5702887}% - \test{35}{9227465}% - \test{36}{14930352}% - \test{37}{24157817}% - \test{38}{39088169}% - \test{39}{63245986}% - \test{40}{102334155}% - \test{41}{165580141}% - \test{42}{267914296}% - \test{43}{433494437}% - \test{44}{701408733}% - \test{45}{1134903170}% - \test{46}{1836311903}% - \test{47}{2971215073}% - \test{48}{4807526976}% - \test{49}{7778742049}% - \test{50}{12586269025}% - \test{51}{20365011074}% - \test{52}{32951280099}% - \test{53}{53316291173}% - \test{54}{86267571272}% - \test{55}{139583862445}% - \test{56}{225851433717}% - \test{57}{365435296162}% - \test{58}{591286729879}% - \test{59}{956722026041}% - \test{60}{1548008755920}% - \test{61}{2504730781961}% - \test{62}{4052739537881}% - \test{63}{6557470319842}% - \test{64}{10610209857723}% - \test{65}{17167680177565}% - \test{66}{27777890035288}% - \test{67}{44945570212853}% - \test{68}{72723460248141}% - \test{69}{117669030460994}% - \test{70}{190392490709135}% - \test{71}{308061521170129}% - \test{72}{498454011879264}% - \test{73}{806515533049393}% -} -\def\msg#{\immediate\write16} -\def\test#1#2{% - \TestAux{#1}{#2}% - \ifnum#1=0 % - \else - \ifodd#1 % - \TestAux{-#1}{#2}% - \else - \TestAux{-#1}{-#2}% - \fi - \fi -} -\def\TestAux#1#2{% - \def\Expected{#2}% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\Result - \expandafter\expandafter\expandafter{% - \fibnum{#1}% - }% - \ltx@onelevel@sanitize\Result - \ifx\Result\Expected - \msg{* #1: ok.}% - \else - \msg{! fib(#1) = #2}% - \errmessage{fib(#1) <> \Result}% - \fi -} -\TestSet -\setbox0=\hbox{% - \msg{* PreCalc{73}}% - \fibnumPreCalc{73}% -} -\ifdim\wd0=0pt -\else - \errmessage{Unwanted stuff in PreCalc}% -\fi -\TestSet -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1029,8 +770,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % fibnum.sty & tex/generic/oberdiek/fibnum.sty\\ % fibnum.pdf & doc/latex/oberdiek/fibnum.pdf\\ -% test/fibnum-test1.tex & doc/latex/oberdiek/test/fibnum-test1.tex\\ -% test/fibnum-test-calc.tex & doc/latex/oberdiek/test/fibnum-test-calc.tex\\ % fibnum.dtx & source/latex/oberdiek/fibnum.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/fibnum.pdf b/macros/latex/contrib/oberdiek/fibnum.pdf index 8787bf4d5a..a4c0823fe5 100644 Binary files a/macros/latex/contrib/oberdiek/fibnum.pdf and b/macros/latex/contrib/oberdiek/fibnum.pdf differ diff --git a/macros/latex/contrib/oberdiek/flags.dtx b/macros/latex/contrib/oberdiek/flags.dtx index eccf6d3c9a..6a2d05c7b4 100644 --- a/macros/latex/contrib/oberdiek/flags.dtx +++ b/macros/latex/contrib/oberdiek/flags.dtx @@ -126,10 +126,6 @@ and the derived files \file{flags.drv}{\from{flags.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{flags.sty}{\from{flags.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{flags.xml}{\from{flags.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{flags.drv} % diff --git a/macros/latex/contrib/oberdiek/flags.pdf b/macros/latex/contrib/oberdiek/flags.pdf index 36418b15f3..86af3a2b8a 100644 Binary files a/macros/latex/contrib/oberdiek/flags.pdf and b/macros/latex/contrib/oberdiek/flags.pdf differ diff --git a/macros/latex/contrib/oberdiek/gettitlestring.dtx b/macros/latex/contrib/oberdiek/gettitlestring.dtx index 6d9dfad7c5..724ed7fecc 100644 --- a/macros/latex/contrib/oberdiek/gettitlestring.dtx +++ b/macros/latex/contrib/oberdiek/gettitlestring.dtx @@ -67,8 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/gettitlestring.sty % TDS:doc/latex/oberdiek/gettitlestring.pdf -% TDS:doc/latex/oberdiek/test/gettitlestring-test1.tex -% TDS:doc/latex/oberdiek/test/gettitlestring-test2.tex % TDS:source/latex/oberdiek/gettitlestring.dtx % %<*ignore> @@ -141,10 +139,6 @@ and the derived files % \usedir{doc/latex/oberdiek/test}% % \file{gettitlestring-test1.tex}{\from{gettitlestring.dtx}{test1}}% % \file{gettitlestring-test2.tex}{\from{gettitlestring.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{gettitlestring.xml}{\from{gettitlestring.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -181,21 +175,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{gettitlestring.drv} % @@ -616,158 +595,7 @@ and the derived files \GTS@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input gettitlestring.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test of non-expand method} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\documentclass{minimal} -\usepackage{gettitlestring}[2016/05/16] -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\begin{document} -\begin{qstest}{non-expand}{non-expand} - \def\test#1#2{% - \sbox0{% - \GetTitleString{#1}% - \Expect{#2}*{\GetTitleStringResult}% - }% - \Expect{0.0pt}*{\the\wd0}% - }% - \test{}{}% - \test{ }{}% - \test{ x }{x}% - \test{ x y }{x y}% - \test{ \relax}{\relax}% - \test{\label{f}a}{a}% - \test{ \label{f}a}{a}% - \test{\label{f} a}{a}% - \test{ \label{f} a}{a}% - \test{a\label{f}}{a}% - \test{a\label{f} }{a}% - \test{a \label{f}}{a}% - \test{a \label{f} }{a}% - \test{a\label{f}b\label{g}}{ab}% - \test{a \label{f}b \label{g} }{a b}% - \test{a\label{f} b \label{g} }{a b}% -\end{qstest} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -816,8 +644,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % gettitlestring.sty & tex/generic/oberdiek/gettitlestring.sty\\ % gettitlestring.pdf & doc/latex/oberdiek/gettitlestring.pdf\\ -% test/gettitlestring-test1.tex & doc/latex/oberdiek/test/gettitlestring-test1.tex\\ -% test/gettitlestring-test2.tex & doc/latex/oberdiek/test/gettitlestring-test2.tex\\ % gettitlestring.dtx & source/latex/oberdiek/gettitlestring.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/gettitlestring.pdf b/macros/latex/contrib/oberdiek/gettitlestring.pdf index eb62b74593..96c4bc13ae 100644 Binary files a/macros/latex/contrib/oberdiek/gettitlestring.pdf and b/macros/latex/contrib/oberdiek/gettitlestring.pdf differ diff --git a/macros/latex/contrib/oberdiek/grfext.dtx b/macros/latex/contrib/oberdiek/grfext.dtx deleted file mode 100644 index b52dee6151..0000000000 --- a/macros/latex/contrib/oberdiek/grfext.dtx +++ /dev/null @@ -1,1130 +0,0 @@ -% \iffalse meta-comment -% -% File: grfext.dtx -% Version: 2016/05/16 v1.2 -% Info: Manage graphics extensions -% -% Copyright (C) -% 2007, 2010 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of -% LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work consists of the main source file grfext.dtx -% and the derived files -% grfext.sty, grfext.pdf, grfext.ins, grfext.drv, grfext-test1.tex, -% grfext-test2.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/grfext.dtx -% CTAN:macros/latex/contrib/oberdiek/grfext.pdf -% -% Unpacking: -% (a) If grfext.ins is present: -% tex grfext.ins -% (b) Without grfext.ins: -% tex grfext.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{grfext.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If grfext.drv is present: -% latex grfext.drv -% (b) Without grfext.drv: -% latex grfext.dtx; ... -% The class ltxdoc loads the configuration file ltxdoc.cfg -% if available. Here you can specify further options, e.g. -% use A4 as paper format: -% \PassOptionsToClass{a4paper}{article} -% -% Programm calls to get the documentation (example): -% pdflatex grfext.dtx -% makeindex -s gind.ist grfext.idx -% pdflatex grfext.dtx -% makeindex -s gind.ist grfext.idx -% pdflatex grfext.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/grfext.sty -% TDS:doc/latex/oberdiek/grfext.pdf -% TDS:doc/latex/oberdiek/test/grfext-test1.tex -% TDS:doc/latex/oberdiek/test/grfext-test2.tex -% TDS:source/latex/oberdiek/grfext.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \def\x{LaTeX2e}% -\expandafter\endgroup -\ifcase 0\ifx\install y1\fi\expandafter - \ifx\csname processbatchFile\endcsname\relax\else1\fi - \ifx\fmtname\x\else 1\fi\relax -\else\csname fi\endcsname -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: grfext -Version: 2016/05/16 v1.2 - -Copyright (C) - 2007, 2010 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://www.latex-project.org/lppl.txt -and version 1.3 or later is part of all distributions of -LaTeX version 2005/12/01 or later. - -This work has the LPPL maintenance status "maintained". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -This work consists of the main source file grfext.dtx -and the derived files - grfext.sty, grfext.pdf, grfext.ins, grfext.drv, grfext-test1.tex, - grfext-test2.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{grfext.ins}{\from{grfext.dtx}{install}}% - \file{grfext.drv}{\from{grfext.dtx}{driver}}% - \usedir{tex/latex/oberdiek}% - \file{grfext.sty}{\from{grfext.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{grfext-test1.tex}{\from{grfext.dtx}{test1}}% -% \file{grfext-test2.tex}{\from{grfext.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{grfext.xml}{\from{grfext.dtx}{catalogue}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* grfext.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `grfext.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{grfext.drv}% - [2016/05/16 v1.2 Manage graphics extensions (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{grfext.dtx}% -\end{document} -% -% \fi -% -% -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% \GetFileInfo{grfext.drv} -% -% \title{The \xpackage{grfext} package} -% \date{2016/05/16 v1.2} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package provides macros for adding and reordering -% graphics extensions of package \xpackage{graphics}. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \subsection{Introduction} -% -% If you are not familiar with \LaTeX's graphics bundle, please -% read its documentation \xfile{grffile} \cite{graphics}. -% The bundle contains two packages for graphics inclusion: -% \xpackage{graphics} and \xpackage{graphicx}. The first one -% is loaded by the second one that adds a key value interface. -% -% Graphics files are included in both cases by macro -% \cs{includegraphics}. The file name extension can be omitted. -% Then the graphics package goes through a list of known -% extensions until it finds the graphics file. This extension list -% is set by \cs{DeclareGraphicsExtensions}. The previous contents -% of the list is overwritten. -% -% \subsection{User interface} -% -% This package \xpackage{grfext} provides macros that adds entries -% to the list or remove them. The list may be empty or even -% undefined before. It is always defined afterwards, but can -% be empty (especially after removing entries). -% -% \begin{declcs}{AppendGraphicsExtensions} * \M{ext-list}\\ -% \cs{PrependGraphicsExtensions} * \M{ext-list} -% \end{declcs} -% The argument \meta{ext-list} is a comma separated list whose -% entries are file name extensions including the dot. -% But first the entries are removed from -% \xpackage{graphics}' extension list to avoid multiple -% occurences of the same extension. -% -% Then macro \cs{AppendGraphicsExtensions} adds the entries -% after the end of \xpackage{graphics}' list, whereas -% macro \cs{PrependGraphicsExtensions} puts them in front -% of the list. -% The order matters if a graphics file is available in -% different acceptable formats. Then the first extension -% wins. -% -% The star version of these commands only adds an extensions, -% if a specific graphics rule exists for that extension. -% -% \begin{declcs}{RemoveGraphicsExtensions} \M{ext-list} -% \end{declcs} -% All occurences of file extensions in \meta{ext-list} are -% removed from \xpackage{graphics}' extension list. -% -% \subsection{Package loading} -% -% The package does not define any options. It is loaded -% as usual in \LaTeX, e.g.: -% \begin{quote} -% |\usepackage{grfext}| -% \end{quote} -% -% \begin{declcs}{PrintGraphicsExtensions} -% \end{declcs} -% Macro \cs{PrintGraphicsExtensions} writes the current -% graphics extensions list in the \xfile{.log} file. -% The macros described before do this automatically -% after their operation. -% -% \subsection{Option support for package \xpackage{graphicx}} -% -% Package \xpackage{graphicx} uses the interface of package -% \xpackage{keyval} in order to specify options for -% \cs{includegraphics}. The options can also be set using -% \begin{quote} -% |\setkeys{Gin}{|\meta{options}|}| -% \end{quote} -% The four user macros with the two star forms are available -% as options in family |Gin| as well: -% \begin{quote} -% |AppendGraphicsExtensions={|\meta{ext-list}|}|\\ -% |AppendGraphicsExtensions*={|\meta{ext-list}|}|\\ -% |PrependGraphicsExtensions={|\meta{ext-list}|}|\\ -% |PrependGraphicsExtensions*{|\meta{ext-list}|}|\\ -% |RemoveGraphicsExtensions={|\meta{ext-list}|}|\\ -% |PrintGraphicsExtensions| -% \end{quote} -% This makes it easier to locally change the extension list -% for an included graphics, e.g.: -% \begin{quote} -% |\includegraphics[RemoveGraphicsExtensions={.pdf,PDF}]{image}| -% \end{quote} -% -% \subsection{\plainTeX} -% -% \LaTeX's graphics packages can also be used with \plainTeX. -% The necessary basic \LaTeX\ macros are defined in -% \xfile{miniltx.tex}. This package \xpackage{grfext} also -% relies on it. Example: -%\begin{quote} -%\begin{verbatim} -%\input miniltx.tex\relax -%\def\Gin@driver{pdftex.def} -%\input graphicx.sty\relax -%\input grfext.sty\relax -%\resetatcatcode -%\end{verbatim} -%\end{quote} -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \begin{macrocode} -%<*package> -% \end{macrocode} -% -% \subsection{Relead check and identification} -% Reload check, especially if the package is not used with \LaTeX. -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode58=12 % : - \catcode64=11 % @ - \catcode123=1 % { - \catcode125=2 % } - \expandafter\let\expandafter\x\csname ver@grfext.sty\endcsname - \ifx\x\relax % plain-TeX, first loading - \else - \def\empty{}% - \ifx\x\empty % LaTeX, first loading, - % variable is initialized, but \ProvidesPackage not yet seen - \else - \expandafter\ifx\csname PackageInfo\endcsname\relax - \def\x#1#2{% - \immediate\write-1{Package #1 Info: #2.}% - }% - \else - \def\x#1#2{\PackageInfo{#1}{#2, stopped}}% - \fi - \x{grfext}{The package is already loaded}% - \aftergroup\endinput - \fi - \fi -\endgroup% -% \end{macrocode} -% Package identification: -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode40=12 % ( - \catcode41=12 % ) - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode47=12 % / - \catcode58=12 % : - \catcode64=11 % @ - \catcode91=12 % [ - \catcode93=12 % ] - \catcode123=1 % { - \catcode125=2 % } - \expandafter\ifx\csname ProvidesPackage\endcsname\relax - \def\x#1#2#3[#4]{\endgroup - \immediate\write-1{Package: #3 #4}% - \xdef#1{#4}% - }% - \else - \def\x#1#2[#3]{\endgroup - #2[{#3}]% - \ifx#1\@undefined - \xdef#1{#3}% - \fi - \ifx#1\relax - \xdef#1{#3}% - \fi - }% - \fi -\expandafter\x\csname ver@grfext.sty\endcsname -\ProvidesPackage{grfext}% - [2016/05/16 v1.2 Manage graphics extensions (HO)]% -% \end{macrocode} -% -% \subsection{Catcodes} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname grfext@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\grfext@AtEnd{% - \grfext@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{42}{12}% * -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{58}{12}% : -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\edef\grfext@AtEnd{\grfext@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% \subsection{\plainTeX} -% -% \begin{macro}{\@expandtwoargs} -% Requirement is \xfile{miniltx.tex}, but we need also -% \LaTeX's \cs{@expandtwoargs}. -% \begin{macrocode} -\@ifundefined{@expandtwoargs}{% - \def\@expandtwoargs#1#2#3{% - \edef\reserved@a{\noexpand#1{#2}{#3}}% - \reserved@a - }% -}{} -% \end{macrocode} -% \end{macro} -% -% \subsection{Add} -% -% \begin{macro}{\AppendGraphicsExtensions} -% \begin{macrocode} -\newcommand*{\AppendGraphicsExtensions}{% - \@ifundefined{Gin@extensions}{% - \let\Gin@extensions\@empty - }{}% - \@ifstar{\grfext@Append\grfext@Check}{\grfext@Append\grfext@@Add}% -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\grfext@Append} -% \begin{macrocode} -\def\grfext@Append#1#2{% - \let\grfext@Print\@gobble - \edef\grfext@next{% - \noexpand\grfext@Add\noexpand#1{% - \zap@space#2 \@empty - }{\noexpand\Gin@extensions,}{}% - }% - \grfext@next - \let\grfext@Print\grfext@@Print - \grfext@Print\AppendGraphicsExtensions -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PrependGraphicsExtensions} -% \begin{macrocode} -\newcommand*{\PrependGraphicsExtensions}{% - \@ifundefined{Gin@extensions}{% - \let\Gin@extensions\@empty - }{}% - \@ifstar{\grfext@Prepend\grfext@Check}{\grfext@Prepend\grfext@@Add}% -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\grfext@Prepend} -% \begin{macrocode} -\def\grfext@Prepend#1#2{% - \let\grfext@Print\@gobble - \edef\grfext@next{% - \noexpand\grfext@Add\noexpand#1{% - \zap@space#2 \@empty - }{}{,\noexpand\Gin@extensions}% - }% - \grfext@next - \let\grfext@Print\grfext@@Print - \grfext@Print\PrependGraphicsExtensions -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\grfext@Add} -% \begin{macrocode} -\def\grfext@Add#1#2{% - #1{#2}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\grfext@@Add} -% \begin{macrocode} -\def\grfext@@Add#1#2#3{% - \RemoveGraphicsExtensions{#1}% - \ifx\Gin@extensions\@empty - \def\Gin@extensions{#1}% - \else - \edef\Gin@extensions{#2#1#3}% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Check} -% -% \begin{macro}{\grfext@Check} -% \begin{macrocode} -\def\grfext@Check#1{% - \let\grfext@tmp\@empty - \@for\grfext@ext:=#1\do{% - \@ifundefined{Gin@rule@\grfext@ext}{% - }{% - \ifx\grfext@tmp\@empty - \let\grfext@tmp\grfext@ext - \else - \edef\grfext@tmp{\grfext@tmp,\grfext@ext}% - \fi - }% - }% - \ifx\grfext@tmp\@empty - \def\grfext@next##1##2{}% - \else - \edef\grfext@next{% - \noexpand\grfext@@Add{\grfext@tmp}% - }% - \fi - \grfext@next -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Remove} -% -% \begin{macro}{\RemoveGraphicsExtensions} -% \begin{macrocode} -\newcommand*{\RemoveGraphicsExtensions}[1]{% - \@ifundefined{Gin@extensions}{% - \def\Gin@extensions{}% - }{% - \edef\grfext@tmp{\zap@space#1 \@empty}% - \@for\grfext@ext:=\grfext@tmp\do{% - \def\grfext@next{% - \let\grfext@tmp\Gin@extensions - \@expandtwoargs - \@removeelement\grfext@ext\Gin@extensions\Gin@extensions - \ifx\grfext@tmp\Gin@extensions - \let\grfext@next\relax - \fi - \grfext@next - }% - \grfext@next - }% - }% - \grfext@Print\RemoveGraphicsExtensions -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Print} -% -% \begin{macrocode} -\RequirePackage{infwarerr}[2007/09/09] -% \end{macrocode} -% -% \begin{macro}{\PrintGraphicsExtensions} -% \begin{macrocode} -\def\PrintGraphicsExtensions{% - \grfext@Print\PrintGraphicsExtensions -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\grfext@Print} -% \begin{macrocode} -\def\grfext@Print#1{% - \@PackageInfo{grfext}{% - Graphics extension search list:\MessageBreak - \@ifundefined{Gin@extensions}{% - % - }{% - [\Gin@extensions]% - }\MessageBreak - \string#1% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\grfext@@Print} -% \begin{macrocode} -\let\grfext@@Print\grfext@Print -% \end{macrocode} -% \end{macro} -% -% \subsection{Defining options for package \xpackage{graphicx}} -% -% \begin{macrocode} -\RequirePackage{kvdefinekeys}[2010/03/01] -\kv@define@key{Gin}{AppendGraphicsExtensions}{% - \AppendGraphicsExtensions{#1}% -} -\kv@define@key{Gin}{AppendGraphicsExtensions*}{% - \AppendGraphicsExtensions*{#1}% -} -\kv@define@key{Gin}{PrependGraphicsExtensions}{% - \PrependGraphicsExtensions{#1}% -} -\kv@define@key{Gin}{PrependGraphicsExtensions*}{% - \PrependGraphicsExtensions*{#1}% -} -\kv@define@key{Gin}{RemoveGraphicsExtensions}{% - \RemoveGraphicsExtensions{#1}% -} -\kv@define@key{Gin}{PrintGraphicsExtensions}[]{% - \PrintGraphicsExtensions -} -% \end{macrocode} -% -% \begin{macrocode} -\grfext@AtEnd% -% -% \end{macrocode} -% -% \section{Test} -% -% Load \xfile{miniltx} for standard catcode test. -% \begin{macrocode} -%<*test1> -\input miniltx.tex\relax -\resetatcatcode -% -% \end{macrocode} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input grfext.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \subsubsection{Preamble} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{article} -\usepackage[pdftex]{graphics} -\usepackage{grfext}[2016/05/16] -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\makeatletter -% \end{macrocode} -% -% \subsubsection{Detection of unwanted space} -% -% \begin{macrocode} -\let\orig@qstest\qstest -\let\orig@endqstest\endqstest -\def\qstest#1#2{% - \orig@qstest{#1}{#2}% - \setbox0\hbox\bgroup\begingroup\ignorespaces -} -\def\endqstest{% - \endgroup\egroup - \Expect*{\the\wd0}{0.0pt}% - \orig@endqstest -} -% \end{macrocode} -% -% \subsubsection{Generic test macros} -% -% \begin{macrocode} -\def\Test{\@ifnextchar\bgroup\TestInitList\TestInitCmd}% -\def\TestInitList#1{% - \def\Gin@extensions{#1}% - \@Test -} -\def\TestInitCmd#1{% - \let\Gin@extensions#1\relax - \@Test -} -\def\@Test#1#2{% - \TestCmd{#1}% - \expandafter\Expect\expandafter*{\Gin@extensions}{#2}% -} -% \end{macrocode} -% -% \subsubsection{Test for \cs{AppendGraphicsExtensions}} -% -% \begin{macrocode} -\begin{qstest}{AppendGraphicsExtensions}{AppendGraphicsExtensions} - \let\TestCmd\AppendGraphicsExtensions - \Test\@undefined{.test}{.test}% - \Test\relax{.test}{.test}% - \Test{}{.test}{.test}% - \Test{.foo}{.test}{.foo,.test}% - \Test{.foo,.bar}{.test}{.foo,.bar,.test}% - \Test{.test}{.test}{.test}% - \Test{.foo,.test}{.test}{.foo,.test}% - \Test{.test,.foo}{.test}{.foo,.test}% - \Test{.foo,.test,.bar}{.test}{.foo,.bar,.test}% - \Test{.foo}{.test,.bar}{.foo,.test,.bar}% - \Test{.foo}{.test,.foo}{.test,.foo}% - \Test{.foo}{ .test ,.bar , .x, .y }{.foo,.test,.bar,.x,.y}% - \def\TestCmd{\AppendGraphicsExtensions*}% - \Test\@undefined{.test}{}% - \Test\relax{.test}{}% - \Test{}{.test}{}% - \Test{.test}{.test}{.test}% - \Test{.foo}{.test}{.foo}% - \Test{.foo,.bar}{.test}{.foo,.bar}% - \Test{.test}{.test}{.test}% - \Test{.foo,.test}{.test}{.foo,.test}% - \Test{.test,.foo}{.test}{.test,.foo}% - \Test{.foo,.test,.bar}{.test}{.foo,.test,.bar}% - \Test{.foo}{.test,.bar}{.foo}% - \Test{.foo}{.test,.foo}{.foo}% - \DeclareGraphicsRule{.test}{test}{.test}{}% - \Test\@undefined{.test}{.test}% - \Test\relax{.test}{.test}% - \Test{}{.test}{.test}% - \Test{.foo}{.test}{.foo,.test}% - \Test{.foo,.bar}{.test}{.foo,.bar,.test}% - \Test{.test}{.test}{.test}% - \Test{.foo,.test}{.test}{.foo,.test}% - \Test{.test,.foo}{.test}{.foo,.test}% - \Test{.foo,.test,.bar}{.test}{.foo,.bar,.test}% - \Test{.foo}{.test,.bar}{.foo,.test}% - \Test{.foo}{.test,.foo}{.foo,.test}% - \DeclareGraphicsRule{.bar}{bar}{.bar}{}% - \Test{.foo}{.test,.bar}{.foo,.test,.bar}% - \Test{.bar}{.test,.bar}{.test,.bar}% - \Test{.bar}{.bar,.test}{.bar,.test}% -\end{qstest} -% \end{macrocode} -% -% \subsubsection{Test for \cs{PrependGraphicsExtensions}} -% -% \begin{macrocode} -\begin{qstest}{PrependGraphicsExtensions}{PrependGraphicsExtensions} - \let\TestCmd\PrependGraphicsExtensions - \Test\@undefined{.test}{.test}% - \Test\relax{.test}{.test}% - \Test{}{.test}{.test}% - \Test{.foo}{.test}{.test,.foo}% - \Test{.foo,.bar}{.test}{.test,.foo,.bar}% - \Test{.test}{.test}{.test}% - \Test{.foo,.test}{.test}{.test,.foo}% - \Test{.test,.foo}{.test}{.test,.foo}% - \Test{.foo,.test,.bar}{.test}{.test,.foo,.bar}% - \Test{.foo}{.test,.bar}{.test,.bar,.foo}% - \Test{.foo}{.test,.foo}{.test,.foo}% - \Test{.foo}{ .test ,.bar , .x, .y }{.test,.bar,.x,.y,.foo}% - \def\TestCmd{\PrependGraphicsExtensions*}% - \Test\@undefined{.test}{}% - \Test\relax{.test}{}% - \Test{}{.test}{}% - \Test{.test}{.test}{.test}% - \Test{.foo}{.test}{.foo}% - \Test{.foo,.bar}{.test}{.foo,.bar}% - \Test{.test}{.test}{.test}% - \Test{.foo,.test}{.test}{.foo,.test}% - \Test{.test,.foo}{.test}{.test,.foo}% - \Test{.foo,.test,.bar}{.test}{.foo,.test,.bar}% - \DeclareGraphicsRule{.test}{test}{.test}{}% - \Test\@undefined{.test}{.test}% - \Test\relax{.test}{.test}% - \Test{}{.test}{.test}% - \Test{.foo}{.test}{.test,.foo}% - \Test{.foo,.bar}{.test}{.test,.foo,.bar}% - \Test{.test}{.test}{.test}% - \Test{.foo,.test}{.test}{.test,.foo}% - \Test{.test,.foo}{.test}{.test,.foo}% - \Test{.foo,.test,.bar}{.test}{.test,.foo,.bar}% - \Test{.foo}{.test,.bar}{.test,.foo}% - \Test{.foo}{.test,.foo}{.test,.foo}% - \DeclareGraphicsRule{.bar}{bar}{.bar}{}% - \Test{.foo}{.test,.bar}{.test,.bar,.foo}% - \Test{.bar}{.test,.bar}{.test,.bar}% - \Test{.bar}{.bar,.test}{.bar,.test}% -\end{qstest} -% \end{macrocode} -% -% \subsubsection{Test for \cs{RemoveGraphicsExtensions}} -% -% \begin{macrocode} -\begin{qstest}{RemoveGraphicsExtensions}{RemoveGraphicsExtensions} - \let\TestCmd\RemoveGraphicsExtensions - \Test\@undefined{.test}{}% - \Test\relax{.test}{}% - \Test{}{.test}{}% - \Test{.foo}{.test}{.foo}% - \Test{.foo,.bar}{.test}{.foo,.bar}% - \Test{.test}{.test}{}% - \Test{.foo,.test}{.test}{.foo}% - \Test{.test,.foo}{.test}{.foo}% - \Test{.foo,.test,.bar}{.test}{.foo,.bar}% - \Test{.test,.test}{.test}{}% - \Test{.foo,.test,.bar,.test,.test,.bar}{.test}{.foo,.bar,.bar}% - \Test{.foo,.test,.bar,.foo,.test,.bar}{.test,.bar}{.foo,.foo}% - \Test{.foo,.test,.bar,.foo,.test,.bar}{ .test , .bar }{.foo,.foo}% -\end{qstest} -% \end{macrocode} -% -% \begin{macrocode} -\begin{document} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{grfext}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/grfext.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/grfext.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex grfext.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% grfext.sty & tex/latex/oberdiek/grfext.sty\\ -% grfext.pdf & doc/latex/oberdiek/grfext.pdf\\ -% test/grfext-test1.tex & doc/latex/oberdiek/test/grfext-test1.tex\\ -% test/grfext-test2.tex & doc/latex/oberdiek/test/grfext-test2.tex\\ -% grfext.dtx & source/latex/oberdiek/grfext.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{grfext.dtx}| -% \end{quote} -% Do not forget to quote the argument according to the demands -% of your shell. -% -% \paragraph{Generating the documentation.} -% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate -% the documentation. The process can be configured by the -% configuration file \xfile{ltxdoc.cfg}. For instance, put this -% line into this file, if you want to have A4 as paper format: -% \begin{quote} -% \verb|\PassOptionsToClass{a4paper}{article}| -% \end{quote} -% An example follows how to generate the -% documentation with pdf\LaTeX: -% \begin{quote} -%\begin{verbatim} -%pdflatex grfext.dtx -%makeindex -s gind.ist grfext.idx -%pdflatex grfext.dtx -%makeindex -s gind.ist grfext.idx -%pdflatex grfext.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{thebibliography}{9} -% -% \bibitem{graphics} -% David Carlisle, Sebastian Rahtz: \textit{The \xpackage{graphics} package}; -% 2006/02/20 v1.0o; -% \CTAN{macros/latex/required/graphics/graphics.dtx}. -% -% \end{thebibliography} -% -% \begin{History} -% \begin{Version}{2007/09/30 v1.0} -% \item -% First public version. -% \end{Version} -% \begin{Version}{2010/08/19 v1.1} -% \item -% User macros are also made available as keyval options for -% package \xpackage{graphicx}. -% \end{Version} -% \begin{Version}{2016/05/16 v1.2} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/grfext.pdf b/macros/latex/contrib/oberdiek/grfext.pdf deleted file mode 100644 index 267c75785f..0000000000 Binary files a/macros/latex/contrib/oberdiek/grfext.pdf and /dev/null differ diff --git a/macros/latex/contrib/oberdiek/hologo.dtx b/macros/latex/contrib/oberdiek/hologo.dtx index a94dd32e6d..0985ff21d9 100644 --- a/macros/latex/contrib/oberdiek/hologo.dtx +++ b/macros/latex/contrib/oberdiek/hologo.dtx @@ -68,9 +68,6 @@ % TDS:tex/generic/oberdiek/hologo.sty % TDS:doc/latex/oberdiek/hologo.pdf % TDS:doc/latex/oberdiek/example/hologo-example.tex -% TDS:doc/latex/oberdiek/test/hologo-test1.tex -% TDS:doc/latex/oberdiek/test/hologo-test-spacefactor.tex -% TDS:doc/latex/oberdiek/test/hologo-test-list.tex % TDS:source/latex/oberdiek/hologo.dtx % %<*ignore> @@ -146,10 +143,6 @@ and the derived files % \file{hologo-test1.tex}{\from{hologo.dtx}{test1}}% % \file{hologo-test-spacefactor.tex}{\from{hologo.dtx}{test-spacefactor}}% % \file{hologo-test-list.tex}{\from{hologo.dtx}{test-list}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hologo.xml}{\from{hologo.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -192,21 +185,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hologo.drv} % @@ -4455,250 +4433,7 @@ $ #1{\string ^^^^0395}{\string ^^^^03b5}% \HOLOGO@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input hologo.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Spacefactor} -% -% The space factor must be 1000 after a logo. If it is greater 1000 -% then the following space is a space after a sentence closing point. -% If the space factor is smaller 1000 then an immediate following -% dot is interpreted as abbreviation, not sentence closing point. -% -% \begin{macrocode} -%<*test-spacefactor> -\NeedsTeXFormat{LaTeX2e} -\documentclass{article} -\usepackage{hologo}[2017/05/01] -\usepackage{kvsetkeys} -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\begin{document} -\begin{qstest}{spacefactor}{spacefactor} -\newcommand*{\Test}[1]{% - \sbox0{% - \hologo{#1}% - \Expect*{1000 (#1)}*{\the\spacefactor\space(#1)}% - }% -}% -\makeatletter -\def\TestList{} -\def\hologoEntry#1#2#3{% - \edef\TestList{% - \ifx\TestList\@empty - \else - \TestList,% - \fi - #1% - \ifx\\#2\\% - \else - ={variant=#2}% - \fi - }% -} -\hologoList -\expandafter\kv@parse@normalized\expandafter{% - \TestList -}{% - \begingroup - \let\@logo=\kv@key - \ifx\kv@value\relax - \else - \expandafter\hologoLogoSetup\expandafter\@logo\expandafter{% - \kv@value - }% - \fi - \Test\@logo - \endgroup - \@gobbletwo -} -\end{qstest} -\end{document} -% -% \end{macrocode} -% -% \subsection{Complete list} -% -% \begin{macrocode} -%<*test-list> -\NeedsTeXFormat{LaTeX2e} -\documentclass[12pt,a4paper]{article} -\usepackage{hologo}[2017/05/01] -\usepackage[T1]{fontenc} -\usepackage{lmodern} -\usepackage{parskip} -\usepackage[unicode]{hyperref}[2011/09/28] -\usepackage{bookmark}[2011/09/19] -\bookmarksetup{% - numbered,% - open,% - openlevel=2,% -} -\renewcommand*{\contentsname}{List of logos} -\begin{document} -\tableofcontents -\def\TestFont#1#2#3#4#5#6{% - \begingroup - \usefont{#3}{#4}{#5}{#6}% - \HologoVariant{#1}{#2}/\hologoVariant{#1}{#2}% - \quad - \begingroup\scriptsize\hologoVariant{#1}{#2}\endgroup - \quad - \endgroup - (#3/#4/#5/#6)% - \par -} -\makeatletter -\def\hologoEntry#1#2#3{% - \section{% - \HologoVariant{#1}{#2}/\hologoVariant{#1}{#2} % - {[#1\ifx\\#2\\\else\space(#2)\fi]}% hash-ok - }% braces around [] because of bug in tex4ht - \begingroup - \hypersetup{unicode=false}% - \bookmark[% - dest=\@currentHref,% - rellevel=1,% - keeplevel,% - ]{% - \HologoVariant{#1}{#2}/\hologoVariant{#1}{#2} % - (PDFDocEncoding)% - }% - \endgroup - \TestFont{#1}{#2}{OT1}{cmr}{m}{n}% - \TestFont{#1}{#2}{OT1}{cmss}{m}{n}% - \TestFont{#1}{#2}{OT1}{cmr}{b}{n}% - \TestFont{#1}{#2}{OT1}{cmr}{m}{it}% - \TestFont{#1}{#2}{OT1}{cmtt}{m}{n}% - \TestFont{#1}{#2}{T1}{lmr}{m}{n}% - \TestFont{#1}{#2}{T1}{lmss}{m}{n}% - \TestFont{#1}{#2}{T1}{lmr}{b}{n}% - \TestFont{#1}{#2}{T1}{lmr}{m}{it}% - \TestFont{#1}{#2}{T1}{lmtt}{m}{n}% - \TestFont{#1}{#2}{T1}{lmvtt}{m}{n}% - \TestFont{#1}{#2}{T1}{qtm}{m}{n}% - \TestFont{#1}{#2}{T1}{qhv}{m}{n}% - \TestFont{#1}{#2}{T1}{qtm}{b}{n}% - \TestFont{#1}{#2}{T1}{qtm}{m}{it}% - \TestFont{#1}{#2}{T1}{qcr}{m}{n}% - \newpage -} -\makeatother -\hologoList -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -4748,9 +4483,6 @@ $ #1{\string ^^^^0395}{\string ^^^^03b5}% % hologo.sty & tex/generic/oberdiek/hologo.sty\\ % hologo.pdf & doc/latex/oberdiek/hologo.pdf\\ % example/hologo-example.tex & doc/latex/oberdiek/example/hologo-example.tex\\ -% test/hologo-test1.tex & doc/latex/oberdiek/test/hologo-test1.tex\\ -% test/hologo-test-spacefactor.tex & doc/latex/oberdiek/test/hologo-test-spacefactor.tex\\ -% test/hologo-test-list.tex & doc/latex/oberdiek/test/hologo-test-list.tex\\ % hologo.dtx & source/latex/oberdiek/hologo.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/hologo.pdf b/macros/latex/contrib/oberdiek/hologo.pdf index bed7b7c96a..2a5dbfc9b7 100644 Binary files a/macros/latex/contrib/oberdiek/hologo.pdf and b/macros/latex/contrib/oberdiek/hologo.pdf differ diff --git a/macros/latex/contrib/oberdiek/holtxdoc.dtx b/macros/latex/contrib/oberdiek/holtxdoc.dtx index 61057855b3..6c31061ccf 100644 --- a/macros/latex/contrib/oberdiek/holtxdoc.dtx +++ b/macros/latex/contrib/oberdiek/holtxdoc.dtx @@ -126,10 +126,6 @@ and the derived files \file{holtxdoc.drv}{\from{holtxdoc.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{holtxdoc.sty}{\from{holtxdoc.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{holtxdoc.xml}{\from{holtxdoc.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{holtxdoc.drv} % diff --git a/macros/latex/contrib/oberdiek/holtxdoc.pdf b/macros/latex/contrib/oberdiek/holtxdoc.pdf index 804f85a5c8..f59f98fc88 100644 Binary files a/macros/latex/contrib/oberdiek/holtxdoc.pdf and b/macros/latex/contrib/oberdiek/holtxdoc.pdf differ diff --git a/macros/latex/contrib/oberdiek/hopatch.dtx b/macros/latex/contrib/oberdiek/hopatch.dtx index 4957ec3e83..17712fc2cc 100644 --- a/macros/latex/contrib/oberdiek/hopatch.dtx +++ b/macros/latex/contrib/oberdiek/hopatch.dtx @@ -63,8 +63,6 @@ % Installation: % TDS:tex/latex/oberdiek/hopatch.sty % TDS:doc/latex/oberdiek/hopatch.pdf -% TDS:doc/latex/oberdiek/test/hopatch-test1.tex -% TDS:doc/latex/oberdiek/test/hopatch-test2.tex % TDS:source/latex/oberdiek/hopatch.dtx % %<*ignore> @@ -133,10 +131,6 @@ and the derived files % \usedir{doc/latex/oberdiek/test}% % \file{hopatch-test1.tex}{\from{hopatch.dtx}{test1}}% % \file{hopatch-test2.tex}{\from{hopatch.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hopatch.xml}{\from{hopatch.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -177,21 +171,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hopatch.drv} % @@ -517,176 +496,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \begin{macrocode} -%<*test1> -\def\LoadCommand{\RequirePackage{hopatch}[2016/05/16]} -% -% \end{macrocode} -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input hopatch.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\providecommand\variant{0} -\RequirePackage{filecontents} -\begin{filecontents}{foo.sty} -\ProvidesPackage{foo} -\def\msg#{\immediate\write16} -\def\foo#1{% - \msg{\fooformat{#1}}% -} -\def\fooformat#1{[#1]}% hash-ok -\foo{* Executing foo at package loading} -\end{filecontents} - -\ifnum\variant=1 % - \documentclass{memoir}% -\else - \documentclass{article}% -\fi - -\ifcase\variant\relax -\or % 1 -\or % 2 - \usepackage{etoolbox}% -\or % 3 - \usepackage{scrlfile}% -\or % 4 - \usepackage{filehook}% -\fi - -\AtBeginDocument{\foo{* AtBeginDocument before hopatch}} -\usepackage{hopatch} -\AtBeginDocument{\foo{* AtBeginDocument after hopatch}} - -\makeatletter -\hopatch@AfterPackage{foo}{% - \def\fooformat#1{<<#1>>}% -} -\makeatother - -\AtBeginDocument{\foo{* AtBeginDocument before foo}} -\usepackage{foo} -\AtBeginDocument{\foo{* AtBeginDocument after foo}} - -\foo{* Executing in preamble} - -\begin{document} -\foo{* Executing in document} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -735,8 +545,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % hopatch.sty & tex/latex/oberdiek/hopatch.sty\\ % hopatch.pdf & doc/latex/oberdiek/hopatch.pdf\\ -% test/hopatch-test1.tex & doc/latex/oberdiek/test/hopatch-test1.tex\\ -% test/hopatch-test2.tex & doc/latex/oberdiek/test/hopatch-test2.tex\\ % hopatch.dtx & source/latex/oberdiek/hopatch.dtx\\ % \end{tabular}^^A % }^^A @@ -854,31 +662,31 @@ and the derived files % Philipp Lehman: % \textit{The etoolbox Package} % 2011-01-03. -% \CTAN{macros/latex/contrib/etoolbox/etoolbox.pdf} +% \CTANpkg{etoolbox} % % \bibitem{filehook} % Martin Scharrer: % \textit{The filehook Package}; % 2011-01-09. -% \CTAN{macros/latex/contrib/filehook/filehook.pdf} +% \CTANpkg{filehook} % % \bibitem{ltxcmds} % Heiko Oberdiek: % \textit{The ltxcmds Package}; % 2010-12-12. -% \CTAN{macros/latex/contrib/oberdiek/ltxcmds.pdf} +% \CTANpkg{ltxcmds} % % \bibitem{memoir} % Peter Wilson, Lars Madsen: % \textit{The Memoir Class for Configurable Typesetting, User Guide}; % 2010. -% \CTAN{macros/latex/contrib/memoir/memman.pdf} +% \CTANpkg{memoir} % % \bibitem{scrlfile} % Markus Kohm, Jens-Uwe Morawski: % \textit{The Guide KOMA-Script}; % 2011-01-20. -% \CTAN{macros/latex/contrib/koma-script/scrguien.pdf} +% \CTANpkg{koma-script} % % \end{thebibliography} % diff --git a/macros/latex/contrib/oberdiek/hopatch.pdf b/macros/latex/contrib/oberdiek/hopatch.pdf index 3a445a5650..73d35e1b27 100644 Binary files a/macros/latex/contrib/oberdiek/hopatch.pdf and b/macros/latex/contrib/oberdiek/hopatch.pdf differ diff --git a/macros/latex/contrib/oberdiek/hycolor.dtx b/macros/latex/contrib/oberdiek/hycolor.dtx index 1a72eae9ce..d55a709153 100644 --- a/macros/latex/contrib/oberdiek/hycolor.dtx +++ b/macros/latex/contrib/oberdiek/hycolor.dtx @@ -67,13 +67,6 @@ % TDS:tex/latex/oberdiek/hycolor.sty % TDS:tex/latex/oberdiek/xcolor-patch.sty % TDS:doc/latex/oberdiek/hycolor.pdf -% TDS:doc/latex/oberdiek/test/hycolor-test1.tex -% TDS:doc/latex/oberdiek/test/hycolor-test2.tex -% TDS:doc/latex/oberdiek/test/hycolor-test3.tex -% TDS:doc/latex/oberdiek/test/hycolor-test-xcol1.tex -% TDS:doc/latex/oberdiek/test/hycolor-test-xcol2.tex -% TDS:doc/latex/oberdiek/test/hycolor-test-xcol3.tex -% TDS:doc/latex/oberdiek/test/hycolor-test-xcol4.tex % TDS:source/latex/oberdiek/hycolor.dtx % %<*ignore> @@ -151,10 +144,6 @@ and the derived files % \file{hycolor-test-xcol2.tex}{\from{hycolor.dtx}{test-xcolor,xcol2}}% % \file{hycolor-test-xcol3.tex}{\from{hycolor.dtx}{test-xcolor,xcol3}}% % \file{hycolor-test-xcol4.tex}{\from{hycolor.dtx}{test-xcolor-fbox}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hycolor.xml}{\from{hycolor.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -226,21 +215,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hycolor.drv} % @@ -1443,526 +1417,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \begin{macrocode} -%<*test1> -\ProvidesFile{hycolor-test1.tex}[2016/05/16 test file 1] -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test2> -\ProvidesFile{hycolor-test2.tex}[2016/05/16 test file 2] -\let\pdfmatch\relax -% -% \end{macrocode} -% -% \begin{macrocode} -%\ProvidesFile{hycolor-test3.tex}[2016/05/16 test file 3] -% \end{macrocode} -% -% \begin{macrocode} -%<*test> -% \end{macrocode} -% \begin{macrocode} -\documentclass{article} - -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} - -\makeatletter - -\newcommand*{\TestPackageName}{test-package} -\newcommand*{\TestOptionName}{test-option} - -\newcommand\Message{} -\def\Message#1#{\immediate\write16} - -\newcommand*{\ExpectError}[2]{% - \begingroup - \global\let\saved@errhelp\errhelp - \global\let\saved@errmessage\errmessage - \let\errhelp\@gobble - \def\errmessage##1{% - \xdef\@ExpectErrorMessage{##1}% - }% - \PackageError\TestPackageName{#1}\@ehc - \def\errhelp##1{% - \global\let\errhelp\saved@errhelp - }% - \global\let\@ResultErrorMessage\@empty - \def\errmessage##1{% - \xdef\@ResultErrorMessage{##1}% - \global\let\errmessage\saved@errmessage - % \Message{[ ##1}% - % \Message{] (ignored error)}% - % \Message{}% - }% - #2% - \endgroup - \Expect*{\@ResultErrorMessage}*{\@ExpectErrorMessage}% -} -\usepackage{scrlfile} -\usepackage{hycolor}[2016/05/16] -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test1> -\begin{qstest}{NumNormalize}{num, normalize} - \def\test#1#2{% - \HyColor@NormalizeNum{#1}\cmd - \Expect*{\cmd}{#2}% - }% - \test{0}{0}% - \test{000}{0}% - \test{-1}{0}% - \test{ 0 }{0}% - \test{1.1}{1}% - \test{100}{1}% - \test{00100}{1}% - \test{99.99}{1}% - \test{0.0}{0}% - \test{00.00}{0}% - \test{0.}{0}% - \test{.0}{0}% - \test{0.1}{.1}% - \test{0.10}{.1}% - \test{0.1000}{.1}% - \test{.1000}{.1}% - \test{0.01}{.01}% - \test{0.01010}{.0101}% - \test{.0000000001}{.0000000001}% - \test{.9999999999}{.9999999999}% -\end{qstest} - -\begin{qstest}{BookmarkColor without xcolor}{bookmark, noxcolor} - \def\test#1#2{% - \HyColor@BookmarkColor{#1}\cmd\TestPackageName\TestOptionName - \Expect*{\cmd}{#2}% - }% - \test{[rgb]{1,0,0}}{1 0 0}% - \test{[gray]{0.10}}{.1 .1 .1}% - \test{}{}% - \test{[rgb]{ 1 , 1 , 0 }}{1 1 0}% - \def\errortest[#1]#2{% - \ExpectError{% - Color model `#1' is not supported\MessageBreak - without package `xcolor' in\MessageBreak - `\TestOptionName=[#1]{#2}'% hash-ok - }{% - \test{[#1]{#2}}{}% hash-ok - }% - }% - \errortest[cmyk]{1,0,0,0}% - \errortest[empty]{}% - \def\errortest#1{% - \ExpectError{% - This color specification is not supported\MessageBreak - without package `xcolor' in\MessageBreak - `\TestOptionName=#1'% - }{% - \test{#1}{}% - }% - }% -\end{qstest} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test1|test2> -\begin{qstest}{X0134 without xcolor}{X0134, noxcolor} - \def\test#1#2{% - \HyColor@XZeroOneThreeFour{#1}\cmd\TestPackageName\TestOptionName - \Expect*{\cmd}{#2}% - }% - \test{[empty]{}}{}% - \test{[rgb]{1,0,0}}{1 0 0}% - \test{[gray]{0.10}}{.1}% - \test{[cmyk]{0,1,0,0}}{0 1 0 0}% - \test{[rgb]{ 1 , 1 , 0 }}{1 1 0}% - \def\errortest[#1]#2{% - \ExpectError{% - Color model `#1' is not supported\MessageBreak - without package `xcolor' in\MessageBreak - `test-option=[#1]{#2}'% hash-ok - }{% - \HyColor@XZeroOneThreeFour{[{#1}]{#2}}\cmd - \TestPackageName\TestOptionName - \Expect{true}*{\ifx\cmd\relax true\else false\fi}% - }% - }% - \errortest[Gray]{10}% - \errortest[cmy]{1,0,0}% - \def\errortest#1{% - \ExpectError{% - This color specification is not supported\MessageBreak - without package `xcolor' in\MessageBreak - `test-option=#1'% - }{% - \HyColor@XZeroOneThreeFour{#1}\cmd\TestPackageName\TestOptionName - \Expect{true}*{\ifx\cmd\relax true\else false\fi}% - }% - }% - \errortest{yellow}% -\end{qstest} - -\begin{qstest}{HyperrefBorderColor without xcolor}% - {hyperef bordercolor, noxcolor}% - \def\test#1#2{% - \HyColor@HyperrefBorderColor{#1}\cmd\TestPackageName\TestOptionName - \Expect*{\cmd}{#2}% - }% - \test{[rgb]{1,0,0}}{1 0 0}% - \test{[gray]{0.10}}{.1 .1 .1}% - \test{[rgb]{ 1 , 1 , 0 }}{1 1 0}% - \def\errortest[#1]#2{% - \ExpectError{% - Color model `#1' is not supported\MessageBreak - without package `xcolor' in\MessageBreak - `test-option=[#1]{#2}'% hash-ok - }{% - \HyColor@HyperrefBorderColor{[{#1}]{#2}}\cmd - \TestPackageName\TestOptionName - \Expect{true}*{\ifx\cmd\relax true\else false\fi}% - }% - }% - \errortest[Gray]{10}% - \errortest[cmy]{1,0,0}% - \errortest[cmyk]{0,1,0,0}% - \def\errortest#1{% - \ExpectError{% - This color specification is not supported\MessageBreak - without package `xcolor' in\MessageBreak - `test-option=#1'% - }{% - \HyColor@HyperrefBorderColor{#1}\cmd - \TestPackageName\TestOptionName - \Expect{true}*{\ifx\cmd\relax true\else false\fi}% - }% - }% - \errortest{yellow}% -\end{qstest} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test1|test2> -\usepackage{xcolor} -\definecolor[named]{MyGreen}{rgb}{0,0.7,0} -\definecolor{mygreen}{named}{MyGreen} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test1> -\begin{qstest}{BookmarkColor with xcolor}{bookmark, xcolor} - \def\test#1#2{% - \HyColor@BookmarkColor{#1}\cmd\PackageName\OptionName - \Expect*{\cmd}{#2}% - }% - \test{[rgb]{1,0,0}}{1 0 0}% - \test{[gray]{0.10}}{.1 .1 .1}% - \test{}{}% - \test{[rgb]{ 1 , 1 , 0 }}{1 1 0}% - \test{[cmyk]{1,0,0,0}}{0 1 1}% - \test{red}{1 0 0}% - \test{cyan}{0 1 1}% - \test{red!40!blue}{.4 0 .6}% - \test{[Gray]{10}}{.66667 .66667 .66667}% - \test{[RGB]{100,200,50}}{.39217 .78432 .19609}% - \test{[wave]{363}}{.00316 0 .00316}% - \test{[wave]814}{.00797 0 0}% - \test{[HSB]{100,200,50}}{.03473 .20833 .12152}% - \test{[HTML]{A800FF}}{.65881 0 1}% - \test{[cmy]{.3,.5,.2}}{.7 .5 .8}% - \test{[cmyk]{.3,.5,.2,.1}}{.6 .4 .7}% - \test{[hsb]{.3,.5,.2}}{.12 .2 .1}% - \test{[Hsb]{120,.5,.2}}{.1 .2 .1}% - \test{[tHsb]{120,.5,.2}}{.2 .2 .1}% - \test{[named]{MyGreen}}{0 .7 0}% - \test{mygreen}{0 .7 0}% -\end{qstest} - -\begin{qstest}{HyperrefColor}{hyperref, color} - \def\test#1#2{% - \HyColor@HyperrefColor{#1}\cmd - \Expect*{\cmd}{#2}% - }% - \test{red}{red}% - \test{[rgb]{1,0,0}}{[{rgb}]{1,0,0}}% - \HyColor@HyperrefColor{}\cmd - \Expect{true}*{\ifx\cmd\relax true\else false\fi}% -\end{qstest} -% -% \end{macrocode} -% \begin{macrocode} -%<*test1|test2> -\begin{qstest}{X0134 with xcolor}{hyperref, X0134, xcolor} - \def\test#1#2{% - \HyColor@XZeroOneThreeFour{#1}\cmd\PackageName\OptionName - \Expect*{\cmd}{#2}% - }% - \test{[empty]{}}{}% - \test{[gray]{0.1}}{.1}% - \test{[rgb]{1,0.5,0.0}}{1 .5 0}% - \test{[cmyk]{0,1,0,0.5}}{0 1 0 .5}% - \test{[Gray]{10}}{.66667}% - \test{red}{1 0 0}% - \test{1 0 0}{1 0 0}% - \test{001.0 .23 0}{1 .23 0}% - \test{[named]{MyGreen}}{0 .7 0}% - \test{mygreen}{0 .7 0}% - \HyColor@XZeroOneThreeFour{}\cmd\PackageName\OptionName - \Expect{true}*{\ifx\cmd\relax true\else false\fi}% -\end{qstest} - -\begin{qstest}{FieldColor}{hyperref, field, FieldColor} - \def\test#1#2{% - \HyColor@FieldColor{#1}\cmd\PackageName\OptionName - \Expect*{\cmd}{#2}% - }% - \test{}{}% - \test{[gray]{0.7}}{.7 g}% - \test{[rgb]{1,0,0}}{1 0 0 rg}% - \test{[cmyk]{0,1,0,0}}{0 1 0 0 k}% - \test{[cmy]{.5,.4,.3}}{.5 .6 .7 rg}% -\end{qstest} -% -% \end{macrocode} -% -% \subsection{Test for package \xpackage{attachfile2}} -% -% \begin{macrocode} -%<*test3> -\def\atfi@SETRGBCOLORtest{set-rgb} -\def\atfi@SETGRAYCOLORtest{set-gray} -\def\atfi@SETCMYKCOLORtest{set-cmyk} -\def\Test#1#2#3#4#5{% - \begingroup - \setbox0=\hbox{% - \begingroup - \chardef\HyColor@PdfVersion=6 % - \HyColor@AttachfileColor{#1}\spec\inlinemacro\annot - \TestPackageName\TestOptionName - \edef\inline{\inlinemacro{test}}% - \expandafter\Expect\expandafter{\spec}{#2}% - \expandafter\Expect\expandafter{\inline}{#3}% - \expandafter\Expect\expandafter{\annot}{#4}% - \endgroup - \begingroup - \chardef\HyColor@PdfVersion=7 % - \HyColor@AttachfileColor{#1}\spec\inlinemacro\annot - \TestPackageName\TestOptionName - \edef\inline{\inlinemacro{test}}% - \expandafter\Expect\expandafter{\spec}{#2}% - \expandafter\Expect\expandafter{\inline}{#3}% - \expandafter\Expect\expandafter{\annot}{#5}% - \endgroup - }% - \Expect*{\the\wd0}{0.0pt}% - \endgroup -} -\newif\ifError -\def\TestError[#1]#2#3#4#5#6{% - \begingroup - \global\Errorfalse - \let\OrgPackageError\PackageError - \def\PackageError##1##2##3{% - \edef\TestTemp{##1}% - \ifx\TestTemp\TestPackageName - \Expect*{\ifError too many errors\else ok\fi}{ok}% - \Expect*{#6}*{##2}% - \global\Errortrue - \else - \OrgPackageError{##1}{##2}{##3}% - \fi - }% - \setbox0=\hbox{% - \begingroup - \chardef\HyColor@PdfVersion=#1 % - \HyColor@AttachfileColor{#2}\spec\inlinemacro\annot - \TestPackageName\TestOptionName - \edef\inline{\inlinemacro{test}}% - \expandafter\Expect\expandafter{\spec}{#3}% - \expandafter\Expect\expandafter{\inline}{#4}% - \expandafter\Expect\expandafter{\annot}{#5}% - \endgroup - \ifx\\#6\\% - \else - \Expect*{\ifError ok\else missing error\fi}{ok}% - \fi - }% - \Expect*{\the\wd0}{0.0pt}% - \endgroup -} -\def\NoEmptyModel{% - Color model `empty' is not permitted for option `\TestOptionName'% -} -\def\ModelNoXcolor#1#2{% - Color model `#1' is not supported\MessageBreak - without package `xcolor' in\MessageBreak - `\TestOptionName=[#1]{#2}'% hash-ok -} -\def\SpecNoXColor#1{% - This color specification is not supported\MessageBreak - without package `xcolor' in\MessageBreak - `test-option=#1'% -} -% \end{macrocode} -% -% \begin{macrocode} -\begin{qstest}{AttachfileColor}{AttachfileColor} - \Test{}{}{}{}{}% - \Test{0.1 0.2 0.3}{[rgb]{.1,.2,.3}}{.1 .2 .3 set-rgb}% - {/C[.1 .2 .3]}{/C[.1 .2 .3]}% - \Test{[gray]{0.4}}{[gray]{0.4}}{.4 set-gray}% - {/C[.4 .4 .4]}{/C[.4]}% - \Test{[rgb]{0.3,.2,.1}}{[rgb]{0.3,.2,.1}}{.3 .2 .1 set-rgb}% - {/C[.3 .2 .1]}{/C[.3 .2 .1]}% - \Test{0.0 1.0 1}{[rgb]{0,1,1}}{0 1 1 set-rgb}% - {/C[0 1 1]}{/C[0 1 1]}% - \Test{[gray]1}{[gray]1}{1 set-gray}{/C[1 1 1]}{/C[1]}% - \TestError[6]{[empty]{}}{}{}{}\NoEmptyModel - \TestError[7]{[empty]{}}{}{}{}\NoEmptyModel - \TestError[6]{[cmyk]{.1,.2,.3,.4}}{[cmyk]{.1,.2,.3,.4}}% - {.1 .2 .3 .4 set-cmyk}{}% - {\ModelNoXcolor{cmyk}{.1,.2,.3,.4}}% - \TestError[7]{[cmyk]{.1,.2,.3,.4}}{[cmyk]{.1,.2,.3,.4}}% - {.1 .2 .3 .4 set-cmyk}{/C[.1 .2 .3 .4]}{}% - \TestError[6]{red}{red}{}{}{\SpecNoXColor{red}}% - \TestError[7]{red}{red}{}{}{\SpecNoXColor{red}}% -\end{qstest} -% \end{macrocode} -% -% \begin{macrocode} -\usepackage{xcolor} -\definecolor[named]{MyGreen}{rgb}{0,0.7,0} -\definecolor{mygreen}{named}{MyGreen} -\definecolor{graynine}{gray}{0.9} -\definecolor{GraySix}{Gray}{9} -% \end{macrocode} -% -% \begin{macrocode} -\begin{qstest}{AttachfileColorX}{AttachfileColorX} - \Test{}{}{}{}{}% - \Test{0.1 0.2 0.3}{[rgb]{.1,.2,.3}}{.1 .2 .3 set-rgb}% - {/C[.1 .2 .3]}{/C[.1 .2 .3]}% - \Test{[gray]{0.4}}{[gray]{0.4}}{.4 set-gray}% - {/C[.4 .4 .4]}{/C[.4]}% - \Test{[rgb]{0.3,.2,.1}}{[rgb]{0.3,.2,.1}}{.3 .2 .1 set-rgb}% - {/C[.3 .2 .1]}{/C[.3 .2 .1]}% - \Test{0.0 1.0 1}{[rgb]{0,1,1}}{0 1 1 set-rgb}% - {/C[0 1 1]}{/C[0 1 1]}% - \Test{[gray]1}{[gray]1}{1 set-gray}{/C[1 1 1]}{/C[1]}% - \Test{red}{red}{1 0 0 set-rgb}{/C[1 0 0]}{/C[1 0 0]}% - \Test{black}{black}{0 set-gray}{/C[0 0 0]}{/C[0]}% - \Test{cyan}{cyan}{1 0 0 0 set-cmyk}{/C[0 1 1]}{/C[1 0 0 0]}% - \Test{[named]{black}}{[named]{black}}{0 0 0 set-rgb}% - {/C[0 0 0]}{/C[0 0 0]}% - \Test{[Gray]{9}}{[Gray]{9}}{.6 set-gray}{/C[.6 .6 .6]}{/C[.6]}% - \Test{[HTML]{0080FF}}{[HTML]{0080FF}}{0 .50195 1 set-rgb}% - {/C[0 .50195 1]}{/C[0 .50195 1]}% - \Test{graynine}{graynine}{.9 set-gray}{/C[.9 .9 .9]}{/C[.9]}% - \Test{GraySix}{GraySix}{.6 set-gray}{/C[.6 .6 .6]}{/C[.6]}% - \Test{[wave]{500}}{[wave]{500}}{0 1 .49846 set-rgb}% - {/C[0 1 .49846]}{/C[0 1 .49846]}% - \TestError[6]{[empty]{}}{}{}{}\NoEmptyModel - \TestError[7]{[empty]{}}{}{}{}\NoEmptyModel -\end{qstest} -% \end{macrocode} -% -% \begin{macrocode} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test> -\begin{document} -\end{document} -% -% \end{macrocode} -% -% \subsection{Test for package \xpackage{xcolor}} -% -% \begin{macrocode} -%<*test-xcolor> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{minimal} -%<*xcol1> -\usepackage{xcolor} -\usepackage{xcolor-patch}[2016/05/16] -% -%<*xcol2> -\usepackage{scrlfile} -\usepackage{xcolor-patch}[2016/05/16] -\usepackage{xcolor} -% -%<*xcol3> -\usepackage{xcolor-patch}[2016/05/16] -\usepackage{xcolor} -\begin{document} -% -\makeatletter -\newcommand*{\ColModList}{% - rgb,% - cmy,% - cmyk,% - hsb,% - Hsb,% - tHsb,% - gray,% - RGB,% - HTML,% - HSB,% - Gray,% - % wave, -} -\newcommand*{\StartModel}{rgb} -\newcommand*{\StartValues}{.1,.2,.3} -\@for\x:=\ColModList\do{% - \ifx\x\@empty - \else - \convertcolorspec\StartModel\StartValues\x\y - \typeout{* [\StartModel]{\StartValues} ==> [\x]{\y}}% - \@for\xx:=\ColModList\do{% - \ifx\xx\@empty - \else - \convertcolorspec\x\y\xx\yy - \typeout{* [\x]{\y} ==> [\xx]{\yy}}% - \fi - }% - \fi -} -%\end{document} -%\@@end -% -% \end{macrocode} -% -% \subsubsection{Test for \cs{@frameb@x}/\cs{fbox}} -% -% \begin{macrocode} -%<*test-xcolor-fbox> -\NeedsTeXFormat{LaTeX2e} -\documentclass{article} -\usepackage{xcolor} -\usepackage{xcolor-patch}[2016/05/16] -\makeatletter -\protected@edef\x{\fbox{abc}} -\let\@tempa\@undefined -\protected@edef\x{\fbox{abc}} -\makeatother -\begin{document} -\MakeUppercase{\fbox{abc}} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -2012,13 +1467,6 @@ and the derived files % hycolor.sty & tex/latex/oberdiek/hycolor.sty\\ % xcolor-patch.sty & tex/latex/oberdiek/xcolor-patch.sty\\ % hycolor.pdf & doc/latex/oberdiek/hycolor.pdf\\ -% test/hycolor-test1.tex & doc/latex/oberdiek/test/hycolor-test1.tex\\ -% test/hycolor-test2.tex & doc/latex/oberdiek/test/hycolor-test2.tex\\ -% test/hycolor-test3.tex & doc/latex/oberdiek/test/hycolor-test3.tex\\ -% test/hycolor-test-xcol1.tex & doc/latex/oberdiek/test/hycolor-test-xcol1.tex\\ -% test/hycolor-test-xcol2.tex & doc/latex/oberdiek/test/hycolor-test-xcol2.tex\\ -% test/hycolor-test-xcol3.tex & doc/latex/oberdiek/test/hycolor-test-xcol3.tex\\ -% test/hycolor-test-xcol4.tex & doc/latex/oberdiek/test/hycolor-test-xcol4.tex\\ % hycolor.dtx & source/latex/oberdiek/hycolor.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/hycolor.pdf b/macros/latex/contrib/oberdiek/hycolor.pdf index 956dad2886..4dd03d9857 100644 Binary files a/macros/latex/contrib/oberdiek/hycolor.pdf and b/macros/latex/contrib/oberdiek/hycolor.pdf differ diff --git a/macros/latex/contrib/oberdiek/hypbmsec.dtx b/macros/latex/contrib/oberdiek/hypbmsec.dtx index 8862e924bc..dd26b08d2b 100644 --- a/macros/latex/contrib/oberdiek/hypbmsec.dtx +++ b/macros/latex/contrib/oberdiek/hypbmsec.dtx @@ -126,10 +126,6 @@ and the derived files \file{hypbmsec.drv}{\from{hypbmsec.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{hypbmsec.sty}{\from{hypbmsec.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hypbmsec.xml}{\from{hypbmsec.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hypbmsec.drv} % diff --git a/macros/latex/contrib/oberdiek/hypbmsec.pdf b/macros/latex/contrib/oberdiek/hypbmsec.pdf index a70e3dc559..fa74435f4d 100644 Binary files a/macros/latex/contrib/oberdiek/hypbmsec.pdf and b/macros/latex/contrib/oberdiek/hypbmsec.pdf differ diff --git a/macros/latex/contrib/oberdiek/hypcap.dtx b/macros/latex/contrib/oberdiek/hypcap.dtx index 60d40a0678..a9bb106fe3 100644 --- a/macros/latex/contrib/oberdiek/hypcap.dtx +++ b/macros/latex/contrib/oberdiek/hypcap.dtx @@ -126,10 +126,6 @@ and the derived files \file{hypcap.drv}{\from{hypcap.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{hypcap.sty}{\from{hypcap.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hypcap.xml}{\from{hypcap.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hypcap.drv} % diff --git a/macros/latex/contrib/oberdiek/hypcap.pdf b/macros/latex/contrib/oberdiek/hypcap.pdf index 70ffeebf81..66f5284fa7 100644 Binary files a/macros/latex/contrib/oberdiek/hypcap.pdf and b/macros/latex/contrib/oberdiek/hypcap.pdf differ diff --git a/macros/latex/contrib/oberdiek/hypdestopt.dtx b/macros/latex/contrib/oberdiek/hypdestopt.dtx index fd2a76a482..254b3af7ea 100644 --- a/macros/latex/contrib/oberdiek/hypdestopt.dtx +++ b/macros/latex/contrib/oberdiek/hypdestopt.dtx @@ -126,10 +126,6 @@ and the derived files \file{hypdestopt.drv}{\from{hypdestopt.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{hypdestopt.sty}{\from{hypdestopt.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hypdestopt.xml}{\from{hypdestopt.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hypdestopt.drv} % @@ -928,7 +909,7 @@ and the derived files % \bibitem{alphalph} % Heiko Oberdiek: \textit{The \xpackage{alphalph} package}; % 2006/05/30 v1.4; -% \CTAN{macros/latex/contrib/oberdiek/alphalph.pdf}. +% \CTANpkg{alphalph}. % % \bibitem{hyperref} % Sebastian Rahtz, Heiko Oberdiek: diff --git a/macros/latex/contrib/oberdiek/hypdestopt.pdf b/macros/latex/contrib/oberdiek/hypdestopt.pdf index e8c707ff19..7d23392768 100644 Binary files a/macros/latex/contrib/oberdiek/hypdestopt.pdf and b/macros/latex/contrib/oberdiek/hypdestopt.pdf differ diff --git a/macros/latex/contrib/oberdiek/hypdoc.dtx b/macros/latex/contrib/oberdiek/hypdoc.dtx index 65771a31aa..481a53d852 100644 --- a/macros/latex/contrib/oberdiek/hypdoc.dtx +++ b/macros/latex/contrib/oberdiek/hypdoc.dtx @@ -126,10 +126,6 @@ and the derived files \file{hypdoc.drv}{\from{hypdoc.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{hypdoc.sty}{\from{hypdoc.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hypdoc.xml}{\from{hypdoc.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hypdoc.drv} % diff --git a/macros/latex/contrib/oberdiek/hypdoc.pdf b/macros/latex/contrib/oberdiek/hypdoc.pdf index 6307212169..27d22afb5e 100644 Binary files a/macros/latex/contrib/oberdiek/hypdoc.pdf and b/macros/latex/contrib/oberdiek/hypdoc.pdf differ diff --git a/macros/latex/contrib/oberdiek/hypgotoe.dtx b/macros/latex/contrib/oberdiek/hypgotoe.dtx index 412c26f15a..e568ff4d91 100644 --- a/macros/latex/contrib/oberdiek/hypgotoe.dtx +++ b/macros/latex/contrib/oberdiek/hypgotoe.dtx @@ -131,10 +131,6 @@ and the derived files \file{hypgotoe.sty}{\from{hypgotoe.dtx}{package}}% \usedir{doc/latex/oberdiek}% \file{hypgotoe-example.tex}{\from{hypgotoe.dtx}{example}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hypgotoe.xml}{\from{hypgotoe.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -171,21 +167,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hypgotoe.drv} % diff --git a/macros/latex/contrib/oberdiek/hypgotoe.pdf b/macros/latex/contrib/oberdiek/hypgotoe.pdf index a08bf8fe80..a6f500ff66 100644 Binary files a/macros/latex/contrib/oberdiek/hypgotoe.pdf and b/macros/latex/contrib/oberdiek/hypgotoe.pdf differ diff --git a/macros/latex/contrib/oberdiek/hyphsubst.dtx b/macros/latex/contrib/oberdiek/hyphsubst.dtx index 0bf2c7821a..e0fd44bf12 100644 --- a/macros/latex/contrib/oberdiek/hyphsubst.dtx +++ b/macros/latex/contrib/oberdiek/hyphsubst.dtx @@ -66,8 +66,6 @@ % Installation: % TDS:tex/generic/oberdiek/hyphsubst.sty % TDS:doc/latex/oberdiek/hyphsubst.pdf -% TDS:doc/latex/oberdiek/test/hyphsubst-test1.tex -% TDS:doc/latex/oberdiek/test/hyphsubst-test2.tex % TDS:source/latex/oberdiek/hyphsubst.dtx % %<*ignore> @@ -139,10 +137,6 @@ and the derived files % \usedir{doc/latex/oberdiek/test}% % \file{hyphsubst-test1.tex}{\from{hyphsubst.dtx}{test1}}% % \file{hyphsubst-test2.tex}{\from{hyphsubst.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{hyphsubst.xml}{\from{hyphsubst.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -179,21 +173,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{hyphsubst.drv} % @@ -581,155 +560,7 @@ and the derived files \HyphSubst@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input hyphsubst.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% -% \subsection{Main tests} -% -% \begin{macrocode} -%<*test2> -\input hyphsubst.sty\relax - -\catcode`\@=11\relax -\ifx\et@xlang\@undefined - \def\l#1{\csname l@#1\endcsname}% -\else - \def\l#1{\csname lang@#1\endcsname}% -\fi -\def\Check#1#2{% - \ifnum#1=#2\relax - \else - \@PackageError{test}{Wrong number: #1 <> #2}\@ehc - \fi -} - -\language=0\relax -\HyphSubstLet{ZeroSaved}{ngerman} -\Check{\l{USenglish}}{0}% -\HyphSubstLet{USenglish}{ngerman} -\Check{\l{USenglish}}{\l{ngerman}} -\ifnum\l{USenglish}>0 % -\else - \@PackageError{test}{\string\language\space is not updated}\@ehc -\fi -\HyphSubstLet{german}{ngerman} -\Check{\l{german}}{\l{ngerman}} -\Check{\l{USenglish}}{\l{ngerman}} -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -778,8 +609,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % hyphsubst.sty & tex/generic/oberdiek/hyphsubst.sty\\ % hyphsubst.pdf & doc/latex/oberdiek/hyphsubst.pdf\\ -% test/hyphsubst-test1.tex & doc/latex/oberdiek/test/hyphsubst-test1.tex\\ -% test/hyphsubst-test2.tex & doc/latex/oberdiek/test/hyphsubst-test2.tex\\ % hyphsubst.dtx & source/latex/oberdiek/hyphsubst.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/hyphsubst.pdf b/macros/latex/contrib/oberdiek/hyphsubst.pdf index a5ed2c4237..b050f45e1f 100644 Binary files a/macros/latex/contrib/oberdiek/hyphsubst.pdf and b/macros/latex/contrib/oberdiek/hyphsubst.pdf differ diff --git a/macros/latex/contrib/oberdiek/ifdraft.dtx b/macros/latex/contrib/oberdiek/ifdraft.dtx index e1f516cdc6..0b4918a6d0 100644 --- a/macros/latex/contrib/oberdiek/ifdraft.dtx +++ b/macros/latex/contrib/oberdiek/ifdraft.dtx @@ -126,10 +126,6 @@ and the derived files \file{ifdraft.drv}{\from{ifdraft.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{ifdraft.sty}{\from{ifdraft.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{ifdraft.xml}{\from{ifdraft.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{ifdraft.drv} % diff --git a/macros/latex/contrib/oberdiek/ifdraft.pdf b/macros/latex/contrib/oberdiek/ifdraft.pdf index 0f091de22e..9d71e862eb 100644 Binary files a/macros/latex/contrib/oberdiek/ifdraft.pdf and b/macros/latex/contrib/oberdiek/ifdraft.pdf differ diff --git a/macros/latex/contrib/oberdiek/iflang.dtx b/macros/latex/contrib/oberdiek/iflang.dtx index c5f2b85ae9..fa784b7d45 100644 --- a/macros/latex/contrib/oberdiek/iflang.dtx +++ b/macros/latex/contrib/oberdiek/iflang.dtx @@ -67,11 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/iflang.sty % TDS:doc/latex/oberdiek/iflang.pdf -% TDS:doc/latex/oberdiek/test/iflang-test1.tex -% TDS:doc/latex/oberdiek/test/iflang-test2.tex -% TDS:doc/latex/oberdiek/test/iflang-test3.tex -% TDS:doc/latex/oberdiek/test/iflang-test4.tex -% TDS:doc/latex/oberdiek/test/iflang-test5.tex % TDS:source/latex/oberdiek/iflang.dtx % %<*ignore> @@ -147,10 +142,6 @@ and the derived files % \file{iflang-test3.tex}{\from{iflang.dtx}{test3}}% % \file{iflang-test4.tex}{\from{iflang.dtx}{test4}}% % \file{iflang-test5.tex}{\from{iflang.dtx}{test5}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{iflang.xml}{\from{iflang.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -187,21 +178,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{iflang.drv} % @@ -677,319 +653,7 @@ and the derived files \IfLang@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input iflang.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test with \LaTeX} -% -% \begin{macrocode} -%<*test2|test3> -% \end{macrocode} -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -%\let\pdfstrcmp\relax -\nofiles -\documentclass{minimal} -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\usepackage[english,naustrian,ngerman]{babel} -\usepackage{iflang} -\begin{document} -\begin{qstest}{IfLanguagePatterns}{language, pattern} - \def\test#1#2{% - \Expect*{\IfLanguagePatterns{#1}{true}{false}}{#2}% - }% - \test{ngerman}{true}% - \test{naustrian}{true}% - \test{english}{false}% - \test{foobar}{false}% -\end{qstest} -\begin{qstest}{IfLanguageName}{language, name} - \def\test#1#2{% - \Expect*{\IfLanguageName{#1}{true}{false}}{#2}% - }% - \test{ngerman}{true}% - \test{naustrian}{false}% - \selectlanguage{naustrian}% - \test{ngerman}{false}% - \test{naustrian}{true}% - \test{foobar}{false}% - % - \def\languagename{naustrian}% - \test{naustrian}{true}% - \test{ngerman}{false}% - % - \edef\languagename{\string naustrian}% - \test{naustrian}{true}% - \test{ngerman}{false}% - % - \def\languagename{naustrian}% - \makeatletter - \@onelevel@sanitize\languagename - \test{naustrian}{true}% - \test{ngerman}{false}% - % - \def\languagename{naustrian}% - \def\xaustrian{naustrian}% - \def\xgerman{ngerman}% - \test{\xaustrian}{true}% - \test{\xgerman}{false}% - % - \def\languagename{\xaustrian}% - \test{naustrian}{true}% - \test{ngerman}{false}% - \test{\xaustrian}{true}% - \test{\xgerman}{false}% - \test{\languagename}{true}% - \test{\languagename\space}{false}% - % - \def\languagename{\empty\xaustrian\empty}% - \test{naustrian}{true}% - \test{ngerman}{false}% - \test{\empty\xaustrian\empty}{true}% - \test{\empty\xgerman\empty}{false}% -\end{qstest} -\begin{qstest}{IfDefined}{defined} - \makeatletter - \let\foobar\relax - \Expect*{\IfLang@IfDefined{foobar}{true}{false}}{false}% - \Expect*{\ifx\foobar\relax true\else false\fi}{true}% - \let\foobar\UNDEFINED - \Expect*{\IfLang@IfDefined{foobar}{true}{false}}{false}% - \Expect*{\ifx\foobar\relax true\else false\fi}{false}% - \Expect*{\ifx\foobar\UNDEFINED true\else false\fi}{true}% -\end{qstest} -\end{document} -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test with \plainTeX\ and \eTeX} -% -% \begin{macrocode} -%<*test4> -% \end{macrocode} -% \begin{macrocode} -%% Format `etex' based on `language.def' -\input iflang.sty -\catcode64=12 - -\def\TestGeneric#1#2#3{% - \begingroup - \edef\x{#1{#2}{true}{false}}% - \edef\y{#3}% - \ifx\x\y - \else - \errmessage{Failed test: \string#1{#2} <> #3}% - \fi - \endgroup -} -\def\TestPatterns{\TestGeneric\IfLanguagePatterns} -\def\TestName{\TestGeneric\IfLanguageName} - -\TestPatterns{USenglish}{true} -\TestPatterns{ngerman}{false} - -\TestName{USenglish}{true} -\TestName{ngerman}{false} - -\uselanguage{ngerman} - -\TestPatterns{USenglish}{false} -\TestPatterns{ngerman}{true} - -\TestName{USenglish}{false} -\TestName{ngerman}{true} - -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test with \plainTeX\ and without \eTeX/\pdfTeX} -% -% \begin{macrocode} -%<*test5> -% \end{macrocode} -% \begin{macrocode} -%% Format `tex' (vanilla plain-TeX) -\let\ifcsname\UNDEFINED -\let\pdfstrcmp\UNDEFINED -\input iflang.sty -\catcode64=11 - -\def\TestDefined#1{% - \IfLang@IfDefined{foobar}{}{}% - \ifx\foobar#1% - \else - \errmessage{Failed test: \string\foobar <> \string#1}% - \fi -} -\let\foobar\relax -\TestDefined\relax -\let\foobar\UNDEFINED -\TestDefined\relax - -\def\strip@prefix#1>{} -\def\@onelevel@sanitize#1{% - \edef#1{\expandafter\strip@prefix\meaning#1}% -} -\def\TestCompare#1#2#3{% - \begingroup - \edef\x{% - \if\IfLang@StrEqual{#1}{#2}% - true% - \else - false% - \fi - }% - \def\expect{#3}% - \ifx\x\expect - \else - \def\a{#1}% - \@onelevel@sanitize\a - \def\b{#2}% - \@onelevel@sanitize\b - \errmessage{Failed test: `\a'='\b' <> \expect}% - \fi - \endgroup -} -\TestCompare{junk}{junk}{true} -\TestCompare{}{}{true} -\TestCompare{a}{b}{false} -\TestCompare{aa}{bb}{false} -\def\a{ax} -\def\b{bx} -\def\c{\a\b} -\def\d{\c\b} -\def\exch#1#2{#2#1} -\def\gobble#1{} -\TestCompare{\gobble a}{}{true} -\TestCompare{}{\gobble a}{true} -\TestCompare{a\exch xyb}{ayxb}{true} -\TestCompare{\c}{\c}{true} -\TestCompare{\d}{\c\b}{true} - -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1038,11 +702,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % iflang.sty & tex/generic/oberdiek/iflang.sty\\ % iflang.pdf & doc/latex/oberdiek/iflang.pdf\\ -% test/iflang-test1.tex & doc/latex/oberdiek/test/iflang-test1.tex\\ -% test/iflang-test2.tex & doc/latex/oberdiek/test/iflang-test2.tex\\ -% test/iflang-test3.tex & doc/latex/oberdiek/test/iflang-test3.tex\\ -% test/iflang-test4.tex & doc/latex/oberdiek/test/iflang-test4.tex\\ -% test/iflang-test5.tex & doc/latex/oberdiek/test/iflang-test5.tex\\ % iflang.dtx & source/latex/oberdiek/iflang.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/iflang.pdf b/macros/latex/contrib/oberdiek/iflang.pdf index 27047b8df3..e755675d02 100644 Binary files a/macros/latex/contrib/oberdiek/iflang.pdf and b/macros/latex/contrib/oberdiek/iflang.pdf differ diff --git a/macros/latex/contrib/oberdiek/infwarerr.dtx b/macros/latex/contrib/oberdiek/infwarerr.dtx deleted file mode 100644 index 89198d838a..0000000000 --- a/macros/latex/contrib/oberdiek/infwarerr.dtx +++ /dev/null @@ -1,1193 +0,0 @@ -% \iffalse meta-comment -% -% File: infwarerr.dtx -% Version: 2016/05/16 v1.4 -% Info: Providing info/warning/error messages -% -% Copyright (C) -% 2007, 2010 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of -% LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% The Base Interpreter refers to any `TeX-Format', -% because some files are installed in TDS:tex/generic//. -% -% This work consists of the main source file infwarerr.dtx -% and the derived files -% infwarerr.sty, infwarerr.pdf, infwarerr.ins, infwarerr.drv, -% infwarerr-test1.tex, infwarerr-test2.tex, -% infwarerr-test3.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/infwarerr.dtx -% CTAN:macros/latex/contrib/oberdiek/infwarerr.pdf -% -% Unpacking: -% (a) If infwarerr.ins is present: -% tex infwarerr.ins -% (b) Without infwarerr.ins: -% tex infwarerr.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{infwarerr.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If infwarerr.drv is present: -% latex infwarerr.drv -% (b) Without infwarerr.drv: -% latex infwarerr.dtx; ... -% The class ltxdoc loads the configuration file ltxdoc.cfg -% if available. Here you can specify further options, e.g. -% use A4 as paper format: -% \PassOptionsToClass{a4paper}{article} -% -% Programm calls to get the documentation (example): -% pdflatex infwarerr.dtx -% makeindex -s gind.ist infwarerr.idx -% pdflatex infwarerr.dtx -% makeindex -s gind.ist infwarerr.idx -% pdflatex infwarerr.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/infwarerr.sty -% TDS:doc/latex/oberdiek/infwarerr.pdf -% TDS:doc/latex/oberdiek/test/infwarerr-test1.tex -% TDS:doc/latex/oberdiek/test/infwarerr-test2.tex -% TDS:doc/latex/oberdiek/test/infwarerr-test3.tex -% TDS:source/latex/oberdiek/infwarerr.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \def\x{LaTeX2e}% -\expandafter\endgroup -\ifcase 0\ifx\install y1\fi\expandafter - \ifx\csname processbatchFile\endcsname\relax\else1\fi - \ifx\fmtname\x\else 1\fi\relax -\else\csname fi\endcsname -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: infwarerr -Version: 2016/05/16 v1.4 - -Copyright (C) - 2007, 2010 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://www.latex-project.org/lppl.txt -and version 1.3 or later is part of all distributions of -LaTeX version 2005/12/01 or later. - -This work has the LPPL maintenance status "maintained". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -The Base Interpreter refers to any `TeX-Format', -because some files are installed in TDS:tex/generic//. - -This work consists of the main source file infwarerr.dtx -and the derived files - infwarerr.sty, infwarerr.pdf, infwarerr.ins, infwarerr.drv, - infwarerr-test1.tex, infwarerr-test2.tex, - infwarerr-test3.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{infwarerr.ins}{\from{infwarerr.dtx}{install}}% - \file{infwarerr.drv}{\from{infwarerr.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{infwarerr.sty}{\from{infwarerr.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{infwarerr-test1.tex}{\from{infwarerr.dtx}{test1}}% -% \file{infwarerr-test2.tex}{\from{infwarerr.dtx}{test2}}% -% \file{infwarerr-test3.tex}{\from{infwarerr.dtx}{test3}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{infwarerr.xml}{\from{infwarerr.dtx}{catalogue}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* infwarerr.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `infwarerr.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{infwarerr.drv}% - [2016/05/16 v1.4 Providing info/warning/error messages (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{infwarerr.dtx}% -\end{document} -% -% \fi -% -% -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% \GetFileInfo{infwarerr.drv} -% -% \title{The \xpackage{infwarerr} package} -% \date{2016/05/16 v1.4} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package provides a complete set of macros for informations, -% warnings and error messages with support for \plainTeX. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% Package \xpackage{infwarerr} defines the following set of commands, -% given as pseudo regular expression: -% \begin{quote} -% \verb+\@(Package|Class)(Info|InfoNoLine|Warning|WarningNoLine|Error)+^^A -% \kern-\rightmargin -% \end{quote} -% The first argument is the package or class in question. The second -% argument contains the message text. \cs{MessageBreak} is supported. -% In case of error messages, the third argument contains the help -% text. Supported are \LaTeX's message texts \cs{@ehc}: -% \begin{quote} -% |Try typing to proceed|\\ -% |If that doesn't work, type X to quit.| -% \end{quote} -% and \cs{@ehd}: -% \begin{quote} -% |You're in trouble here. Try typing to proceed|\\ -% |If that doesn't work, type X to quit.| -% \end{quote} -% -% The package is intended for macro writers that want to write -% code that works for both \LaTeX\ and \plainTeX. If \LaTeX\ is -% detected, then the macros of this package will only be wrappers -% for \LaTeX's macros. Otherwise \LaTeX's macros will be mimicked -% for use with \plainTeX. -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \begin{macrocode} -%<*package> -% \end{macrocode} -% -% \subsection{Reload check and package identification} -% Reload check, especially if the package is not used with \LaTeX. -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode58=12 % : - \catcode64=11 % @ - \catcode123=1 % { - \catcode125=2 % } - \expandafter\let\expandafter\x\csname ver@infwarerr.sty\endcsname - \ifx\x\relax % plain-TeX, first loading - \else - \def\empty{}% - \ifx\x\empty % LaTeX, first loading, - % variable is initialized, but \ProvidesPackage not yet seen - \else - \expandafter\ifx\csname PackageInfo\endcsname\relax - \def\x#1#2{% - \immediate\write-1{Package #1 Info: #2.}% - }% - \else - \def\x#1#2{\PackageInfo{#1}{#2, stopped}}% - \fi - \x{infwarerr}{The package is already loaded}% - \aftergroup\endinput - \fi - \fi -\endgroup% -% \end{macrocode} -% Package identification: -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode40=12 % ( - \catcode41=12 % ) - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode47=12 % / - \catcode58=12 % : - \catcode64=11 % @ - \catcode91=12 % [ - \catcode93=12 % ] - \catcode123=1 % { - \catcode125=2 % } - \expandafter\ifx\csname ProvidesPackage\endcsname\relax - \def\x#1#2#3[#4]{\endgroup - \immediate\write-1{Package: #3 #4}% - \xdef#1{#4}% - }% - \else - \def\x#1#2[#3]{\endgroup - #2[{#3}]% - \ifx#1\@undefined - \xdef#1{#3}% - \fi - \ifx#1\relax - \xdef#1{#3}% - \fi - }% - \fi -\expandafter\x\csname ver@infwarerr.sty\endcsname -\ProvidesPackage{infwarerr}% - [2016/05/16 v1.4 Providing info/warning/error messages (HO)]% -% \end{macrocode} -% -% \subsection{Catcodes} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname InfWarErr@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\InfWarErr@AtEnd{% - \InfWarErr@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{10}{12}% ^^J -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{40}{12}% ( -\TMP@EnsureCode{41}{12}% ) -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{58}{12}% : -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{94}{7}% ^ -\edef\InfWarErr@AtEnd{\InfWarErr@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% \subsection{\LaTeX\ detection} -% -% \begin{macrocode} -\begingroup - \let\x=Y% - \def\check#1{% - \@check{Generic}{#1}% - \@check{Package}{#1}% - \@check{Class}{#1}% - }% - \def\@check#1#2{% - \expandafter\ifx\csname #1#2\endcsname\relax - \let\x=N% - \fi - }% - \check{Info}% - \check{Warning}% - \check{Error}% - \@check{Package}{WarningNoLine}% - \@check{Class}{WarningNoLine}% - \@check{}{@ehc}% - \@check{}{@ehd}% -\expandafter\endgroup -\ifx\x Y% -% \end{macrocode} -% -% \subsection{Version for \LaTeX} -% -% \begin{macro}{\@PackageInfo} -% \begin{macrocode} - \let\@PackageInfo\PackageInfo -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@PackageInfoNoLine} -% \begin{macrocode} - \def\@PackageInfoNoLine#1#2{% - \PackageInfo{#1}{#2\@gobble}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassInfo} -% \begin{macrocode} - \let\@ClassInfo\ClassInfo -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassInfoNoLine} -% \begin{macrocode} - \def\@ClassInfoNoLine#1#2{% - \ClassInfo{#1}{#2\@gobble}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@PackageWarning} -% \begin{macrocode} - \let\@PackageWarning\PackageWarning -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@PackageWarningNoLine} -% \begin{macrocode} - \let\@PackageWarningNoLine\PackageWarningNoLine -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassWarning} -% \begin{macrocode} - \let\@ClassWarning\ClassWarning -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassWarningNoLine} -% \begin{macrocode} - \let\@ClassWarningNoLine\ClassWarningNoLine -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@PackageError} -% \begin{macrocode} - \let\@PackageError\PackageError -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassError} -% \begin{macrocode} - \let\@ClassError\ClassError -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - \expandafter\InfWarErr@AtEnd -\fi% -% \end{macrocode} -% -% \subsection{Version for \plainTeX} -% -% \begin{macro}{\InfWarErr@online} -% \begin{macrocode} -\begingroup\expandafter\endgroup -\ifcase\expandafter\ifx\csname inputlineno\endcsname\relax - 0 % - \else - \ifnum\inputlineno<0 % - 0 % - \else - 1 % - \fi - \fi - \def\InfWarErr@online{}% -\else - \def\InfWarErr@online{ on input line \the\inputlineno}% -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\InfWarErr@protected} -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname protected\endcsname\relax - \def\InfWarErr@protected{}% -\else - \let\InfWarErr@protected\protected -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\InfWarErr@unused} -% \begin{macrocode} -\chardef\InfWarErr@unused=16 % -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\InfWarErr@ehc} -% \begin{macrocode} -\def\InfWarErr@ehc{% - Try typing \space \space to proceed.\MessageBreak - If that doesn't work, type \space X \space to quit.% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\InfWarErr@ehd} -% \begin{macrocode} -\def\InfWarErr@ehd{% - You're in trouble here. \space\@ehc -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\InfWarErr@GenericInfo} -% \begin{macrocode} -\InfWarErr@protected\def\InfWarErr@GenericInfo#1#2{% - \begingroup - \let\on@line\InfWarErr@online - \long\def\@gobble##1{}% - \def\space{ }% - \def\@spaces{\space\space\space\space}% - \def\MessageBreak{^^J#1}% - \newlinechar=10 % - \escapechar=92 % - \immediate\write-1{#2\on@line.}% - \endgroup -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\InfWarErr@GenericWarning} -% \begin{macrocode} -\InfWarErr@protected\def\InfWarErr@GenericWarning#1#2{% - \begingroup - \let\on@line\InfWarErr@online - \long\def\@gobble##1{}% - \def\space{ }% - \def\@spaces{\space\space\space\space}% - \def\MessageBreak{^^J#1}% - \newlinechar=10 % - \escapechar=92 % - \immediate\write\InfWarErr@unused{^^J#2\on@line.^^J}% - \endgroup -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\InfWarErr@GenericError} -% Old \TeX\ versions below 3.141 where |^^J| is not working -% as newline in error message and help texts are not supported. -% \begin{macrocode} -\InfWarErr@protected\def\InfWarErr@GenericError#1#2#3#4{% - \begingroup - \immediate\write\InfWarErr@unused{}% - \def\space{ }% - \def\@spaces{\space\space\space\space}% - \let\@ehc\InfWarErr@ehc - \let\@ehd\InfWarErr@ehd - \let\on@line\InfWarErr@online - \def\MessageBreak{^^J}% - \newlinechar=10 % - \escapechar=92 % - \edef\InfWarErr@help{\noexpand\errhelp{#4}}% - \InfWarErr@help - \def\MessageBreak{^^J#1}% - \errmessage{% - #2.^^J^^J% - #3^^J% - Type \space H \space for immediate help.^^J ...^^J% - }% - \endgroup -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@PackageInfo} -% \begin{macrocode} -\def\@PackageInfo#1#2{% - \InfWarErr@GenericInfo{% - (#1) \@spaces\@spaces\@spaces - }{% - Package #1 Info: #2% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@PackageInfoNoLine} -% \begin{macrocode} -\def\@PackageInfoNoLine#1#2{% - \@PackageInfo{#1}{#2\@gobble}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassInfo} -% \begin{macrocode} -\def\@ClassInfo#1#2{% - \InfWarErr@GenericInfo{% - (#1) \space\space\@spaces\@spaces - }{% - Class #1 Info: #2% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassInfoNoLine} -% \begin{macrocode} -\def\@ClassInfoNoLine#1#2{% - \@ClassInfo{#1}{#2\@gobble}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@PackageWarning} -% \begin{macrocode} -\def\@PackageWarning#1#2{% - \InfWarErr@GenericWarning{% - (#1)\@spaces\@spaces\@spaces\@spaces - }{% - Package #1 Warning: #2% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@PackageWarningNoLine} -% \begin{macrocode} -\def\@PackageWarningNoLine#1#2{% - \@PackageWarning{#1}{#2\@gobble}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassWarning} -% \begin{macrocode} -\def\@ClassWarning#1#2{% - \InfWarErr@GenericWarning{% - (#1) \space\@spaces\@spaces\@spaces - }{% - Class #1 Warning: #2% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassWarningNoLine} -% \begin{macrocode} -\def\@ClassWarningNoLine#1#2{% - \@ClassWarning{#1}{#2\@gobble}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@PackageError} -% \begin{macrocode} -\def\@PackageError#1#2#3{% - \InfWarErr@GenericError{% - (#1)\@spaces\@spaces\@spaces\@spaces - }{% - Package #1 Error: #2% - }{% - See the #1 package documentation for explanation.% - }{#3}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ClassError} -% \begin{macrocode} -\def\@ClassError#1#2#3{% - \InfWarErr@GenericError{% - (#1) \space\@spaces\@spaces\@spaces - }{% - Class #1 Error: #2% - }{% - See the #1 class documentation for explanation.% - }{#3}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\InfWarErr@AtEnd% -% -% \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input infwarerr.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \begin{macrocode} -%<*test2> -\let\PackageInfo\relax -\input infwarerr.sty\relax -\let\OrgWrite\write -\chardef\WriteUnused=16 % -\def\msg#{\immediate\OrgWrite\WriteUnused} -\msg{File: infwarerr-test2.tex 2016/05/16 v1.4 Test file for plain-TeX} -\catcode64=11 % -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test3> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{infwarerr-test3.tex}[2016/05/16 v1.4 Test file for LaTeX] -\RequirePackage{infwarerr}[2016/05/16] -\makeatletter -\let\OrgWrite\write -\chardef\WriteUnused=\@unused -\def\msg#{\immediate\OrgWrite\WriteUnused} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test2|test3> -\def\pkgname{PACKAGE} -\def\clsname{CLASS} -\def\msgtext{MESSAGE\MessageBreak SECOND LINE} -\def\hlptext{HELP\MessageBreak SECOND LINE} - -\let\OrgWrite\write -\let\OrgErrMessage\errmessage - -\def\write#1#{% - \@write{#1}% -} -\def\@write#1#2{% - \OrgWrite#1{#2}% - \xdef\WriteNum{\number#1}% - \xdef\WriteText{#2}% -} -\def\TestFailed#1#2{% - \OrgErrMessage{Test (\string#1) failed: #2}% -} -\def\TestWrite#1#2#3{% - \ifnum\WriteNum=#2\relax - \else - \TestFailed#1{write stream number: \WriteNum <> #2}% - \fi - \begingroup - \let~\space - \edef\TestString{#3}% - \ifx\WriteText\TestString - \else - \msg{}% - \msg{[\WriteText]}% - \msg{<>}% - \msg{[#3]}% hash-ok - \TestFailed#1{write text}% - \fi - \endgroup -} -\newtoks\ErrHelpToks -\def\errmessage#1{% - \global\ErrHelpToks=\expandafter{\the\errhelp}% - \msg{**************** error message ****************}% - \msg{! #1}% - \msg{**************** help message *****************}% - \msg{\the\errhelp}% - \msg{***********************************************}% - \xdef\ErrMessage{! #1}% -} -\def\TestInfo{% - \@PackageInfo\pkgname\msgtext - \TestWrite\@PackageInfo{-1}{% - Package PACKAGE Info: MESSAGE^^J% - (PACKAGE)~~~~~~~~~~~~~SECOND LINE on input line \the\inputlineno.% - }% - \@PackageInfoNoLine\pkgname\msgtext - \TestWrite\@PackageInfoNoLine{-1}{% - Package PACKAGE Info: MESSAGE^^J% - (PACKAGE)~~~~~~~~~~~~~SECOND LINE.% - }% - \@ClassInfo\clsname\msgtext - \TestWrite\@ClassInfo{-1}{% - Class CLASS Info: MESSAGE^^J% - (CLASS)~~~~~~~~~~~SECOND LINE on input line \the\inputlineno.% - }% - \@ClassInfoNoLine\clsname\msgtext - \TestWrite\@ClassInfoNoLine{-1}{% - Class CLASS Info: MESSAGE^^J% - (CLASS)~~~~~~~~~~~SECOND LINE.% - }% -} -\def\TestWarning{% - \@PackageWarning\pkgname\msgtext - \TestWrite\@PackageWarning\WriteUnused{% - ^^J% - Package PACKAGE Warning: MESSAGE^^J% - (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE on input line \the\inputlineno.% - ^^J% - }% - \@PackageWarningNoLine\pkgname\msgtext - \TestWrite\@PackageWarningNoLine\WriteUnused{% - ^^J% - Package PACKAGE Warning: MESSAGE^^J% - (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE.% - ^^J% - }% - \@ClassWarning\clsname\msgtext - \TestWrite\@ClassWarning\WriteUnused{% - ^^J% - Class CLASS Warning: MESSAGE^^J% - (CLASS)~~~~~~~~~~~~~~SECOND LINE on input line \the\inputlineno.% - ^^J% - }% - \@ClassWarningNoLine\clsname\msgtext - \TestWrite\@ClassWarningNoLine\WriteUnused{% - ^^J% - Class CLASS Warning: MESSAGE^^J% - (CLASS)~~~~~~~~~~~~~~SECOND LINE.% - ^^J% - }% -} -\def\TestError{% -% \let\write\OrgWrite -% \def\plaindots{} -% \def\plaindots{.^^J ...^^J} - \@PackageError\pkgname\msgtext\hlptext - \@TestError\@PackageError{% - ! Package PACKAGE Error: MESSAGE^^J% - (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE.^^J% - ^^J% - See the PACKAGE package documentation for explanation.^^J% - Type~~H ~~for immediate help\plaindots - }{% - HELP^^J% - SECOND LINE% - }% - \@ClassError\clsname\msgtext\hlptext - \@TestError\@ClassError{% - ! Class CLASS Error: MESSAGE^^J% - (CLASS)~~~~~~~~~~~~~~SECOND LINE.^^J% - ^^J% - See the CLASS class documentation for explanation.^^J% - Type~~H ~~for immediate help\plaindots - }{% - HELP^^J% - SECOND LINE% - }% - \@PackageError\pkgname\msgtext\@ehc - \@TestError\@PackageError{% - ! Package PACKAGE Error: MESSAGE^^J% - (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE.^^J% - ^^J% - See the PACKAGE package documentation for explanation.^^J% - Type~~H ~~for immediate help\plaindots - }{% - Try typing~~~~to proceed.^^J% - If that doesn't work, type~~X ~~to quit.% - }% - \@PackageError\pkgname\msgtext\@ehd - \@TestError\@PackageError{% - ! Package PACKAGE Error: MESSAGE^^J% - (PACKAGE)~~~~~~~~~~~~~~~~SECOND LINE.^^J% - ^^J% - See the PACKAGE package documentation for explanation.^^J% - Type~~H ~~for immediate help\plaindots - }{% - You're in trouble here.~~Try typing~~~~to proceed.^^J% - If that doesn't work, type~~X ~~to quit.% - }% -} -\def\@TestError#1#2#3{% - \begingroup - \let~\space - \edef\x{#2}% -% \@onelevel@sanitize\x -% \@onelevel@sanitize\ErrMessage - \ifx\x\ErrMessage - \else - \msg{}% - \msg{[\ErrMessage]}% - \msg{<>}% - \msg{[\x]}% - \TestFailed#1{errmessage text}% - \fi - \edef\x{\the\ErrHelpToks}% - \edef\y{#3}% - \ifx\x\y - \else - \msg{}% - \msg{[\the\ErrHelpToks]}% - \msg{<>}% - \msg{[\y]}% - \TestFailed#1{errhelp text}% - \fi - \endgroup -} -\TestInfo -\TestWarning -\TestError -% -%\end -%\@@end -% \end{macrocode} -% -% -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{infwarerr}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/infwarerr.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/infwarerr.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex infwarerr.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% infwarerr.sty & tex/generic/oberdiek/infwarerr.sty\\ -% infwarerr.pdf & doc/latex/oberdiek/infwarerr.pdf\\ -% test/infwarerr-test1.tex & doc/latex/oberdiek/test/infwarerr-test1.tex\\ -% test/infwarerr-test2.tex & doc/latex/oberdiek/test/infwarerr-test2.tex\\ -% test/infwarerr-test3.tex & doc/latex/oberdiek/test/infwarerr-test3.tex\\ -% infwarerr.dtx & source/latex/oberdiek/infwarerr.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{infwarerr.dtx}| -% \end{quote} -% Do not forget to quote the argument according to the demands -% of your shell. -% -% \paragraph{Generating the documentation.} -% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate -% the documentation. The process can be configured by the -% configuration file \xfile{ltxdoc.cfg}. For instance, put this -% line into this file, if you want to have A4 as paper format: -% \begin{quote} -% \verb|\PassOptionsToClass{a4paper}{article}| -% \end{quote} -% An example follows how to generate the -% documentation with pdf\LaTeX: -% \begin{quote} -%\begin{verbatim} -%pdflatex infwarerr.dtx -%makeindex -s gind.ist infwarerr.idx -%pdflatex infwarerr.dtx -%makeindex -s gind.ist infwarerr.idx -%pdflatex infwarerr.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2007/04/26 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/06/14 v1.1} -% \item -% Small fixes. -% \end{Version} -% \begin{Version}{2007/09/09 v1.2} -% \item -% Catcode section extended. -% \end{Version} -% \begin{Version}{2010/04/08 v1.3} -% \item -% Ensure \cs{escapechar}=92 (backslash) for infos/warnings/errors. -% \end{Version} -% \begin{Version}{2016/05/16 v1.4} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/infwarerr.pdf b/macros/latex/contrib/oberdiek/infwarerr.pdf deleted file mode 100644 index 7cbaae40f8..0000000000 Binary files a/macros/latex/contrib/oberdiek/infwarerr.pdf and /dev/null differ diff --git a/macros/latex/contrib/oberdiek/intcalc.dtx b/macros/latex/contrib/oberdiek/intcalc.dtx index 586ae3959e..245cc21812 100644 --- a/macros/latex/contrib/oberdiek/intcalc.dtx +++ b/macros/latex/contrib/oberdiek/intcalc.dtx @@ -67,10 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/intcalc.sty % TDS:doc/latex/oberdiek/intcalc.pdf -% TDS:doc/latex/oberdiek/test/intcalc-test1.tex -% TDS:doc/latex/oberdiek/test/intcalc-test2.tex -% TDS:doc/latex/oberdiek/test/intcalc-test3.tex -% TDS:doc/latex/oberdiek/test/intcalc-test4.tex % TDS:source/latex/oberdiek/intcalc.dtx % %<*ignore> @@ -145,10 +141,6 @@ and the derived files % \file{intcalc-test2.tex}{\from{intcalc.dtx}{test2,etex}}% % \file{intcalc-test3.tex}{\from{intcalc.dtx}{test2,noetex}}% % \file{intcalc-test4.tex}{\from{intcalc.dtx}{test4,etex}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{intcalc.xml}{\from{intcalc.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -219,21 +211,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{intcalc.drv} % @@ -3119,955 +3096,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input intcalc.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \subsubsection{Preamble with test macro definitions} -% -% \begin{macrocode} -%<*test2|test4> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{article} -%\let\SavedNumexpr\numexpr -%\let\numexpr\UNDEFINED -\makeatletter -\chardef\InCa@TestMode=1 % -\makeatother -\usepackage{intcalc}[2016/05/16] -%\let\numexpr\SavedNumexpr -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -% -%<*test2> -\newcommand*{\TestSpaceAtEnd}[1]{% -% \let\SavedNumexpr\numexpr -% \let\numexpr\UNDEFINED - \edef\resultA{#1}% - \edef\resultB{#1 }% -% \let\numexpr\SavedNumexpr - \Expect*{\resultA\space}*{\resultB}% -} -\newcommand*{\TestResult}[2]{% -% \let\SavedNumexpr\numexpr -% \let\numexpr\UNDEFINED - \edef\result{#1}% -% \let\numexpr\SavedNumexpr - \Expect*{\result}{#2}% -} -\newcommand*{\TestResultTwoExpansions}[2]{% -%<*noetex> - \begingroup - \let\numexpr\UNDEFINED - \expandafter\expandafter\expandafter - \endgroup -% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter{#1}{#2}% -} -\newcount\TestCount -%\newcommand*{\TestArg}[1]{\numexpr#1\relax} -%\newcommand*{\TestArg}[1]{#1} -\newcommand*{\TestTeXDivide}[2]{% - \TestCount=\TestArg{#1}\relax - \divide\TestCount by \TestArg{#2}\relax - \Expect*{\intcalcDiv{#1}{#2}}*{\the\TestCount}% -} -\newcommand*{\Test}[2]{% - \TestResult{#1}{#2}% - \TestResultTwoExpansions{#1}{#2}% - \TestSpaceAtEnd{#1}% -} -\newcommand*{\TestExch}[2]{\Test{#2}{#1}} -\newcommand*{\TestInv}[2]{% - \Test{\intcalcInv{#1}}{#2}% -} -\newcommand*{\TestNum}[2]{% - \Test{\intcalcNum{#1}}{#2}% -} -\newcommand*{\TestAbs}[2]{% - \Test{\intcalcAbs{#1}}{#2}% -} -\newcommand*{\TestSgn}[2]{% - \Test{\intcalcSgn{#1}}{#2}% -} -\newcommand*{\TestMin}[3]{% - \Test{\intcalcMin{#1}{#2}}{#3}% -} -\newcommand*{\TestMax}[3]{% - \Test{\intcalcMax{#1}{#2}}{#3}% -} -\newcommand*{\TestCmp}[3]{% - \Test{\intcalcCmp{#1}{#2}}{#3}% -} -\newcommand*{\TestInc}[2]{% - \Test{\intcalcInc{#1}}{#2}% - \ifnum\intcalcNum{#1}>-1 % - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcInc\intcalcNum{#1}!% - }{#2}% - }% - \x - \fi -} -\newcommand*{\TestDec}[2]{% - \Test{\intcalcDec{#1}}{#2}% - \ifnum\intcalcNum{#1}>0 % - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcDec\intcalcNum{#1}!% - }{#2}% - }% - \x - \fi -} -\newcommand*{\TestAdd}[3]{% - \Test{\intcalcAdd{#1}{#2}}{#3}% - \ifnum\intcalcNum{#1}>0 % - \ifnum\intcalcNum{#2}> 0 % - \ifnum\intcalcCmp{#1}{#2}>0 % - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcAdd - \intcalcNum{#1}!\intcalcNum{#2}!% - }{#3}% - }% - \x - \else - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcAdd - \intcalcNum{#2}!\intcalcNum{#1}!% - }{#3}% - }% - \x - \fi - \fi - \fi -} -\newcommand*{\TestSub}[3]{% - \Test{\intcalcSub{#1}{#2}}{#3}% - \ifnum\intcalcNum{#1}>0 % - \ifnum\intcalcNum{#2}> 0 % - \ifnum\intcalcCmp{#1}{#2}>0 % - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcSub - \intcalcNum{#1}!\intcalcNum{#2}!% - }{#3}% - }% - \x - \fi - \fi - \fi -} -\newcommand*{\TestShl}[2]{% - \Test{\intcalcShl{#1}}{#2}% - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcShl\intcalcAbs{#1}!% - }{\intcalcAbs{#2}}% - }% - \x -} -\newcommand*{\TestShr}[2]{% - \Test{\intcalcShr{#1}}{#2}% - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcShr\intcalcAbs{#1}!% - }{\intcalcAbs{#2}}% - }% - \x -} -\newcommand*{\TestMul}[3]{% - \Test{\intcalcMul{#1}{#2}}{#3}% - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcMul\intcalcAbs{#1}!\intcalcAbs{#2}!% - }{\intcalcAbs{#3}}% - }% - \x -} -\newcommand*{\TestSqr}[2]{% - \Test{\intcalcSqr{#1}}{#2}% -} -\newcommand*{\TestFac}[2]{% - \expandafter\TestExch\expandafter{\the\numexpr#2}{\intcalcFac{#1}}% -} -\newcommand*{\TestPow}[3]{% - \Test{\intcalcPow{#1}{#2}}{#3}% -} -\newcommand*{\TestDiv}[3]{% - \Test{\intcalcDiv{#1}{#2}}{#3}% - \TestTeXDivide{#1}{#2}% - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcDiv\intcalcAbs{#1}!\intcalcAbs{#2}!% - }{\intcalcAbs{#3}}% - }% -} -\newcommand*{\TestMod}[3]{% - \Test{\intcalcMod{#1}{#2}}{#3}% - \ifcase\ifcase\intcalcSgn{#1} 0% - \or - \ifcase\intcalcSgn{#2} 1% - \or 0% - \else 1% - \fi - \else - \ifcase\intcalcSgn{#2} 1% - \or 1% - \else 0% - \fi - \fi\relax - \edef\x{% - \noexpand\Test{% - \noexpand\IntCalcMod - \intcalcAbs{#1}!\intcalcAbs{#2}!% - }{\intcalcAbs{#3}}% - }% - \x - \fi -} -% -% \end{macrocode} -% -% \subsubsection{Time} -% -% \begin{macrocode} -%<*test2> -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdfresettimer\endcsname\relax -\else - \makeatletter - \newcount\SummaryTime - \newcount\TestTime - \SummaryTime=\z@ - \newcommand*{\PrintTime}[2]{% - \typeout{% - [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]% - }% - }% - \newcommand*{\StartTime}[1]{% - \renewcommand*{\TimeDescription}{#1}% - \pdfresettimer - }% - \newcommand*{\TimeDescription}{}% - \newcommand*{\StopTime}{% - \TestTime=\pdfelapsedtime - \global\advance\SummaryTime\TestTime - \PrintTime\TimeDescription\TestTime - }% - \let\saved@qstest\qstest - \let\saved@endqstest\endqstest - \def\qstest#1#2{% - \saved@qstest{#1}{#2}% - \StartTime{#1}% - }% - \def\endqstest{% - \StopTime - \saved@endqstest - }% - \AtEndDocument{% - \PrintTime{summary}\SummaryTime - }% - \makeatother -\fi -% -% \end{macrocode} -% -% \subsubsection{Test 4: additional mod/div operations} -% -% \begin{macrocode} -%<*test4> -\newcommand*{\TestDo}[2]{% - \ifcase\numexpr#2\relax - \else - \edef\temp{\intcalcMod{#1}{#2}}% - \Expect*{% - \the\numexpr - \intcalcMul{% - \intcalcDiv{\intcalcAbs{#1}}{\intcalcAbs{#2}}% - }{\intcalcAbs{#2}}% - +\intcalcMod{\intcalcAbs{#1}}{\intcalcAbs{#2}}\relax - }*{\the\numexpr\intcalcAbs{#1}\relax}% - \fi -} -\newcommand*{\TestOne}[2]{% - \TestDo{#1}{#1}% -} -\newcommand*{\TestTwo}[3]{% - \TestDo{#1}{#2}% - \TestDo{#2}{#1}% -} -\let\TestNum\TestOne -\let\TestInv\TestOne -\let\TestAbs\TestOne -\let\TestSgn\TestOne -\let\TestMin\TestTwo -\let\TestMax\TestTwo -\let\TestCmp\TestTwo -\let\TestInc\TestOne -\let\TestDec\TestOne -\let\TestAdd\TestTwo -\let\TestSub\TestTwo -\let\TestShl\TestOne -\let\TestShr\TestOne -\let\TestMul\TestTwo -\let\TestSqr\TestOne -\def\TestFac#1#2{} -\let\TestPow\TestTwo -\let\TestDiv\TestTwo -\let\TestMod\TestTwo -% -% \end{macrocode} -% -% \subsubsection{Test sets} -% -% \begin{macrocode} -%<*test2|test4> -\makeatletter - -\begin{qstest}{num}{num}% - \TestNum{0}{0}% - \TestNum{1}{1}% - \TestNum{-1}{-1}% - \TestNum{10}{10}% - \TestNum{-10}{-10}% - \TestNum{2147483647}{2147483647}% - \TestNum{-2147483647}{-2147483647}% - \TestNum{ 0 }{0}% - \TestNum{ 1 }{1}% - \TestNum{--1}{1}% - \TestNum{ - + - + 4 }{4}% - \TestNum{\z@}{0}% - \TestNum{\@ne}{1}% - \TestNum{\m@ne}{-1}% -%<*etex> - \TestNum{-10+30}{20}% - \TestNum{10-30}{-20}% -% -\end{qstest} - -\begin{qstest}{inv}{inv}% - \TestInv{0}{0}% - \TestInv{1}{-1}% - \TestInv{-1}{1}% - \TestInv{10}{-10}% - \TestInv{-10}{10}% - \TestInv{2147483647}{-2147483647}% - \TestInv{-2147483647}{2147483647}% - \TestInv{ 0 }{0}% - \TestInv{ 1 }{-1}% - \TestInv{--1}{-1}% - \TestInv{\z@}{0}% - \TestInv{\@ne}{-1}% - \TestInv{\m@ne}{1}% -%<*etex> - \TestInv{-10+30}{-20}% - \TestInv{10-30}{20}% -% -\end{qstest} - -\begin{qstest}{abs}{abs}% - \TestAbs{0}{0}% - \TestAbs{1}{1}% - \TestAbs{-1}{1}% - \TestAbs{10}{10}% - \TestAbs{-10}{10}% - \TestAbs{2147483647}{2147483647}% - \TestAbs{-2147483647}{2147483647}% - \TestAbs{ 0 }{0}% - \TestAbs{ 1 }{1}% - \TestAbs{--1}{1}% - \TestAbs{\z@}{0}% - \TestAbs{\@ne}{1}% - \TestAbs{\m@ne}{1}% -%<*etex> - \TestAbs{-10+30}{20}% - \TestAbs{10-30}{20}% -% -\end{qstest} - -\begin{qstest}{sign}{sign}% - \TestSgn{0}{0}% - \TestSgn{1}{1}% - \TestSgn{-1}{-1}% - \TestSgn{10}{1}% - \TestSgn{-10}{-1}% - \TestSgn{2147483647}{1}% - \TestSgn{-2147483647}{-1}% - \TestSgn{ 0 }{0}% - \TestSgn{ 2 }{1}% - \TestSgn{ -2 }{-1}% - \TestSgn{--2}{1}% - \TestSgn{\z@}{0}% - \TestSgn{\@ne}{1}% - \TestSgn{\m@ne}{-1}% -%<*etex> - \TestSgn{-10+30}{1}% - \TestSgn{10-30}{-1}% -% -\end{qstest} - -\begin{qstest}{min}{min}% - \TestMin{0}{1}{0}% - \TestMin{1}{0}{0}% - \TestMin{-10}{-20}{-20}% - \TestMin{ 1 }{ 2 }{1}% - \TestMin{ 2 }{ 1 }{1}% - \TestMin{1}{1}{1}% - \TestMin{\z@}{\@ne}{0}% - \TestMin{\@ne}{\m@ne}{-1}% -%<*etex> - \TestMin{1+2}{3+4}{3}% -% -\end{qstest} - -\begin{qstest}{max}{max}% - \TestMax{0}{1}{1}% - \TestMax{1}{0}{1}% - \TestMax{-10}{-20}{-10}% - \TestMax{ 1 }{ 2 }{2}% - \TestMax{ 2 }{ 1 }{2}% - \TestMax{1}{1}{1}% - \TestMax{\z@}{\@ne}{1}% - \TestMax{\@ne}{\m@ne}{1}% -%<*etex> - \TestMax{1+2}{3+4}{7}% -% -\end{qstest} - -\begin{qstest}{cmp}{cmp}% - \TestCmp{0}{0}{0}% - \TestCmp{-21}{17}{-1}% - \TestCmp{3}{4}{-1}% - \TestCmp{-10}{-10}{0}% - \TestCmp{-10}{-11}{1}% - \TestCmp{100}{5}{1}% - \TestCmp{2147483647}{-2147483647}{1}% - \TestCmp{-2147483647}{2147483647}{-1}% - \TestCmp{2147483647}{2147483647}{0}% - \TestCmp{\z@}{\@ne}{-1}% - \TestCmp{\@ne}{\m@ne}{1}% - \TestCmp{ 4 }{ 5 }{-1}% - \TestCmp{ -3 }{ -7 }{1}% -%<*etex> - \TestCmp{1+2}{3+4}{-1}% -% -\end{qstest} - -\begin{qstest}{fac}{fac} - \TestFac{0}{1}% - \TestFac{1}{1}% - \TestFac{2}{2}% - \TestFac{3}{2*3}% - \TestFac{4}{2*3*4}% - \TestFac{5}{2*3*4*5}% - \TestFac{6}{2*3*4*5*6}% - \TestFac{7}{2*3*4*5*6*7}% - \TestFac{8}{2*3*4*5*6*7*8}% - \TestFac{9}{2*3*4*5*6*7*8*9}% - \TestFac{10}{2*3*4*5*6*7*8*9*10}% - \TestFac{11}{2*3*4*5*6*7*8*9*10*11}% - \TestFac{12}{2*3*4*5*6*7*8*9*10*11*12}% -\end{qstest} - -\begin{qstest}{inc}{inc}% - \TestInc{0}{1}% - \TestInc{1}{2}% - \TestInc{-1}{0}% - \TestInc{10}{11}% - \TestInc{-10}{-9}% - \TestInc{999}{1000}% - \TestInc{-1000}{-999}% - \TestInc{129}{130}% - \TestInc{2147483646}{2147483647}% - \TestInc{-2147483647}{-2147483646}% -\end{qstest} - -\begin{qstest}{dec}{dec}% - \TestDec{0}{-1}% - \TestDec{1}{0}% - \TestDec{-1}{-2}% - \TestDec{10}{9}% - \TestDec{-10}{-11}% - \TestDec{1000}{999}% - \TestDec{-999}{-1000}% - \TestDec{130}{129}% - \TestDec{2147483647}{2147483646}% - \TestDec{-2147483646}{-2147483647}% -\end{qstest} - -\begin{qstest}{add}{add}% - \TestAdd{0}{0}{0}% - \TestAdd{1}{0}{1}% - \TestAdd{0}{1}{1}% - \TestAdd{1}{2}{3}% - \TestAdd{-1}{-1}{-2}% - \TestAdd{2147483646}{1}{2147483647}% - \TestAdd{-2147483647}{2147483647}{0}% - \TestAdd{20}{-5}{15}% - \TestAdd{-4}{-1}{-5}% - \TestAdd{-1}{-4}{-5}% - \TestAdd{-4}{1}{-3}% - \TestAdd{-1}{4}{3}% - \TestAdd{4}{-1}{3}% - \TestAdd{1}{-4}{-3}% - \TestAdd{-4}{-1}{-5}% - \TestAdd{-1}{-4}{-5}% - \TestAdd{ -4 }{ -1 }{-5}% - \TestAdd{ -1 }{ -4 }{-5}% - \TestAdd{ -4 }{ 1 }{-3}% - \TestAdd{ -1 }{ 4 }{3}% - \TestAdd{ 4 }{ -1 }{3}% - \TestAdd{ 1 }{ -4 }{-3}% - \TestAdd{ -4 }{ -1 }{-5}% - \TestAdd{ -1 }{ -4 }{-5}% - \TestAdd{876543210}{111111111}{987654321}% - \TestAdd{999999999}{2}{1000000001}% -%<*etex> - \TestAdd{100}{50+150}{300}% - \TestAdd{2147483647}{10-2147483647}{10}% -% -\end{qstest} - -\begin{qstest}{sub}{sub} - \TestSub{0}{0}{0}% - \TestSub{1}{0}{1}% - \TestSub{1}{2}{-1}% - \TestSub{-1}{-1}{0}% - \TestSub{2147483646}{-1}{2147483647}% - \TestSub{-2147483647}{-2147483647}{0}% - \TestSub{-4}{-1}{-3}% - \TestSub{-1}{-4}{3}% - \TestSub{-4}{1}{-5}% - \TestSub{-1}{4}{-5}% - \TestSub{4}{-1}{5}% - \TestSub{1}{-4}{5}% - \TestSub{-4}{-1}{-3}% - \TestSub{-1}{-4}{3}% - \TestSub{ -4 }{ -1 }{-3}% - \TestSub{ -1 }{ -4 }{3}% - \TestSub{ -4 }{ 1 }{-5}% - \TestSub{ -1 }{ 4 }{-5}% - \TestSub{ 4 }{ -1 }{5}% - \TestSub{ 1 }{ -4 }{5}% - \TestSub{ -4 }{ -1 }{-3}% - \TestSub{ -1 }{ -4 }{3}% - \TestSub{1000000000}{2}{999999998}% - \TestSub{987654321}{111111111}{876543210}% -%<*etex> - \TestSub{100}{50+150}{-100}% - \TestSub{2147483647}{-10+2147483647}{10}% -% -\end{qstest} - -\begin{qstest}{shl}{shl} - \TestShl{0}{0}% - \TestShl{1}{2}% - \TestShl{5621}{11242}% - \TestShl{1073741823}{2147483646}% - \TestShl{-1}{-2}% - \TestShl{-5621}{-11242}% -\end{qstest} - -\begin{qstest}{shr}{shr} - \TestShr{0}{0}% - \TestShr{1}{0}% - \TestShr{2}{1}% - \TestShr{3}{1}% - \TestShr{4}{2}% - \TestShr{5}{2}% - \TestShr{6}{3}% - \TestShr{7}{3}% - \TestShr{8}{4}% - \TestShr{9}{4}% - \TestShr{10}{5}% - \TestShr{11}{5}% - \TestShr{12}{6}% - \TestShr{13}{6}% - \TestShr{14}{7}% - \TestShr{15}{7}% - \TestShr{16}{8}% - \TestShr{17}{8}% - \TestShr{18}{9}% - \TestShr{19}{9}% - \TestShr{20}{10}% - \TestShr{21}{10}% - \TestShr{22}{11}% - \TestShr{11241}{5620}% - \TestShr{73054202}{36527101}% - \TestShr{2147483646}{1073741823}% - \TestShr{-1}{0}% - \TestShr{-2}{-1}% - \TestShr{-3}{-1}% - \TestShr{-11241}{-5620}% -\end{qstest} - -\begin{qstest}{mul}{mul} - \TestMul{0}{0}{0}% - \TestMul{1}{0}{0}% - \TestMul{0}{1}{0}% - \TestMul{1}{1}{1}% - \TestMul{3}{1}{3}% - \TestMul{1}{-3}{-3}% - \TestMul{-4}{-5}{20}% - \TestMul{3}{7}{21}% - \TestMul{7}{3}{21}% - \TestMul{3}{-7}{-21}% - \TestMul{7}{-3}{-21}% - \TestMul{-3}{7}{-21}% - \TestMul{-7}{3}{-21}% - \TestMul{-3}{-7}{21}% - \TestMul{-7}{-3}{21}% - \TestMul{12}{11}{132}% - \TestMul{999}{333}{332667}% - \TestMul{1000}{4321}{4321000}% - \TestMul{12345}{173955}{2147474475}% - \TestMul{1073741823}{2}{2147483646}% - \TestMul{2}{1073741823}{2147483646}% - \TestMul{-1073741823}{2}{-2147483646}% - \TestMul{2}{-1073741823}{-2147483646}% -%<*etex> - \TestMul{2+3}{5+7}{60}% - \TestMul{2147483647}{2147483647/2147483647}{2147483647}% -% -\end{qstest} - -\begin{qstest}{sqr}{sqr} - \TestSqr{0}{0}% - \TestSqr{1}{1}% - \TestSqr{2}{4}% - \TestSqr{3}{9}% - \TestSqr{4}{16}% - \TestSqr{9}{81}% - \TestSqr{10}{100}% - \TestSqr{46340}{2147395600}% - \TestSqr{-1}{1}% - \TestSqr{-2}{4}% - \TestSqr{-46340}{2147395600}% -\end{qstest} - -\begin{qstest}{pow}{pow} - \TestPow{-2}{0}{1}% - \TestPow{-1}{0}{1}% - \TestPow{0}{0}{1}% - \TestPow{1}{0}{1}% - \TestPow{2}{0}{1}% - \TestPow{3}{0}{1}% - \TestPow{-2}{1}{-2}% - \TestPow{-1}{1}{-1}% - \TestPow{1}{1}{1}% - \TestPow{2}{1}{2}% - \TestPow{3}{1}{3}% - \TestPow{-2}{2}{4}% - \TestPow{-1}{2}{1}% - \TestPow{0}{2}{0}% - \TestPow{1}{2}{1}% - \TestPow{2}{2}{4}% - \TestPow{3}{2}{9}% - \TestPow{0}{1}{0}% - \TestPow{1}{-2}{1}% - \TestPow{1}{-1}{1}% - \TestPow{-1}{-2}{1}% - \TestPow{-1}{-1}{-1}% - \TestPow{-1}{3}{-1}% - \TestPow{-1}{4}{1}% - \TestPow{-2}{-1}{0}% - \TestPow{-2}{-2}{0}% - \TestPow{2}{3}{8}% - \TestPow{2}{4}{16}% - \TestPow{2}{5}{32}% - \TestPow{2}{6}{64}% - \TestPow{2}{7}{128}% - \TestPow{2}{8}{256}% - \TestPow{2}{9}{512}% - \TestPow{2}{10}{1024}% - \TestPow{-2}{3}{-8}% - \TestPow{-2}{4}{16}% - \TestPow{-2}{5}{-32}% - \TestPow{-2}{6}{64}% - \TestPow{-2}{7}{-128}% - \TestPow{-2}{8}{256}% - \TestPow{-2}{9}{-512}% - \TestPow{-2}{10}{1024}% - \TestPow{3}{3}{27}% - \TestPow{3}{4}{81}% - \TestPow{3}{5}{243}% - \TestPow{-3}{3}{-27}% - \TestPow{-3}{4}{81}% - \TestPow{-3}{5}{-243}% - \TestPow{2}{30}{1073741824}% - \TestPow{-3}{19}{-1162261467}% - \TestPow{5}{13}{1220703125}% - \TestPow{-7}{11}{-1977326743}% -\end{qstest} - -\begin{qstest}{div}{div} - \TestDiv{1}{1}{1}% - \TestDiv{2}{1}{2}% - \TestDiv{-2}{1}{-2}% - \TestDiv{2}{-1}{-2}% - \TestDiv{-2}{-1}{2}% - \TestDiv{15}{2}{7}% - \TestDiv{-16}{2}{-8}% - \TestDiv{1}{2}{0}% - \TestDiv{1}{3}{0}% - \TestDiv{2}{3}{0}% - \TestDiv{-2}{3}{0}% - \TestDiv{2}{-3}{0}% - \TestDiv{-2}{-3}{0}% - \TestDiv{13}{3}{4}% - \TestDiv{-13}{-3}{4}% - \TestDiv{-13}{3}{-4}% - \TestDiv{-6}{5}{-1}% - \TestDiv{-5}{5}{-1}% - \TestDiv{-4}{5}{0}% - \TestDiv{-3}{5}{0}% - \TestDiv{-2}{5}{0}% - \TestDiv{-1}{5}{0}% - \TestDiv{0}{5}{0}% - \TestDiv{1}{5}{0}% - \TestDiv{2}{5}{0}% - \TestDiv{3}{5}{0}% - \TestDiv{4}{5}{0}% - \TestDiv{5}{5}{1}% - \TestDiv{6}{5}{1}% - \TestDiv{-5}{4}{-1}% - \TestDiv{-4}{4}{-1}% - \TestDiv{-3}{4}{0}% - \TestDiv{-2}{4}{0}% - \TestDiv{-1}{4}{0}% - \TestDiv{0}{4}{0}% - \TestDiv{1}{4}{0}% - \TestDiv{2}{4}{0}% - \TestDiv{3}{4}{0}% - \TestDiv{4}{4}{1}% - \TestDiv{5}{4}{1}% - \TestDiv{12345}{678}{18}% - \TestDiv{32372}{5952}{5}% - \TestDiv{284271294}{18162}{15651}% - \TestDiv{217652429}{12561}{17327}% - \TestDiv{462028434}{5439}{84947}% - \TestDiv{2147483647}{1000}{2147483}% - \TestDiv{2147483647}{-1000}{-2147483}% - \TestDiv{-2147483647}{1000}{-2147483}% - \TestDiv{-2147483647}{-1000}{2147483}% -\end{qstest} - -\begin{qstest}{mod}{mod} - \TestMod{-6}{5}{4}% - \TestMod{-5}{5}{0}% - \TestMod{-4}{5}{1}% - \TestMod{-3}{5}{2}% - \TestMod{-2}{5}{3}% - \TestMod{-1}{5}{4}% - \TestMod{0}{5}{0}% - \TestMod{1}{5}{1}% - \TestMod{2}{5}{2}% - \TestMod{3}{5}{3}% - \TestMod{4}{5}{4}% - \TestMod{5}{5}{0}% - \TestMod{6}{5}{1}% - \TestMod{-5}{4}{3}% - \TestMod{-4}{4}{0}% - \TestMod{-3}{4}{1}% - \TestMod{-2}{4}{2}% - \TestMod{-1}{4}{3}% - \TestMod{0}{4}{0}% - \TestMod{1}{4}{1}% - \TestMod{2}{4}{2}% - \TestMod{3}{4}{3}% - \TestMod{4}{4}{0}% - \TestMod{5}{4}{1}% - \TestMod{-6}{-5}{-1}% - \TestMod{-5}{-5}{0}% - \TestMod{-4}{-5}{-4}% - \TestMod{-3}{-5}{-3}% - \TestMod{-2}{-5}{-2}% - \TestMod{-1}{-5}{-1}% - \TestMod{0}{-5}{0}% - \TestMod{1}{-5}{-4}% - \TestMod{2}{-5}{-3}% - \TestMod{3}{-5}{-2}% - \TestMod{4}{-5}{-1}% - \TestMod{5}{-5}{0}% - \TestMod{6}{-5}{-4}% - \TestMod{-5}{-4}{-1}% - \TestMod{-4}{-4}{0}% - \TestMod{-3}{-4}{-3}% - \TestMod{-2}{-4}{-2}% - \TestMod{-1}{-4}{-1}% - \TestMod{0}{-4}{0}% - \TestMod{1}{-4}{-3}% - \TestMod{2}{-4}{-2}% - \TestMod{3}{-4}{-1}% - \TestMod{4}{-4}{0}% - \TestMod{5}{-4}{-3}% - \TestMod{2147483647}{1000}{647}% - \TestMod{2147483647}{-1000}{-353}% - \TestMod{-2147483647}{1000}{353}% - \TestMod{-2147483647}{-1000}{-647}% - \TestMod{ 0 }{ 4 }{0}% - \TestMod{ 1 }{ 4 }{1}% - \TestMod{ -1 }{ 4 }{3}% - \TestMod{ 0 }{ -4 }{0}% - \TestMod{ 1 }{ -4 }{-3}% - \TestMod{ -1 }{ -4 }{-1}% -%<*etex> - \TestMod{1+2}{1+3}{3}% - \TestMod{1-2}{1+3}{3}% - \TestMod{1-2}{1-4}{-1}% - \TestMod{1+2}{1-4}{0}% - \TestMod{1+2}{1-5}{-1}% -% -\end{qstest} -% -% \end{macrocode} -% \begin{macrocode} -%<*test2> -\newcommand*{\TestError}[2]{% - \begingroup - \expandafter\def\csname IntCalcError:#1\endcsname{}% - \Expect*{#2}{0}% - \expandafter\def\csname IntCalcError:#1\endcsname{ERROR}% - \Expect*{#2}{0ERROR }% - \endgroup -} -\begin{qstest}{error}{error} - \TestError{FacNegative}{\intcalcFac{-1}}% - \TestError{FacNegative}{\intcalcFac{-2147483647}}% - \TestError{FacOverflow}{\intcalcFac{13}}% - \TestError{FacOverflow}{\intcalcFac{2147483647}}% - \TestError{DivisionByZero}{\intcalcPow{0}{-1}}% - \TestError{DivisionByZero}{\intcalcDiv{1}{0}}% - \TestError{DivisionByZero}{\intcalcMod{1}{0}}% - \TestError{DivisionByZero}{\IntCalcDiv1!0!}% - \TestError{DivisionByZero}{\IntCalcMod1!0!}% -\end{qstest} -% -% \end{macrocode} -% \begin{macrocode} -%<*test2|test4> -\begin{document} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -4116,10 +3145,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % intcalc.sty & tex/generic/oberdiek/intcalc.sty\\ % intcalc.pdf & doc/latex/oberdiek/intcalc.pdf\\ -% test/intcalc-test1.tex & doc/latex/oberdiek/test/intcalc-test1.tex\\ -% test/intcalc-test2.tex & doc/latex/oberdiek/test/intcalc-test2.tex\\ -% test/intcalc-test3.tex & doc/latex/oberdiek/test/intcalc-test3.tex\\ -% test/intcalc-test4.tex & doc/latex/oberdiek/test/intcalc-test4.tex\\ % intcalc.dtx & source/latex/oberdiek/intcalc.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/intcalc.pdf b/macros/latex/contrib/oberdiek/intcalc.pdf index fc12045817..be33245d32 100644 Binary files a/macros/latex/contrib/oberdiek/intcalc.pdf and b/macros/latex/contrib/oberdiek/intcalc.pdf differ diff --git a/macros/latex/contrib/oberdiek/kvdefinekeys.dtx b/macros/latex/contrib/oberdiek/kvdefinekeys.dtx index f0fcac8889..3b864fc73b 100644 --- a/macros/latex/contrib/oberdiek/kvdefinekeys.dtx +++ b/macros/latex/contrib/oberdiek/kvdefinekeys.dtx @@ -66,7 +66,6 @@ % Installation: % TDS:tex/generic/oberdiek/kvdefinekeys.sty % TDS:doc/latex/oberdiek/kvdefinekeys.pdf -% TDS:doc/latex/oberdiek/test/kvdefinekeys-test1.tex % TDS:source/latex/oberdiek/kvdefinekeys.dtx % %<*ignore> @@ -137,10 +136,6 @@ and the derived files \file{kvdefinekeys.sty}{\from{kvdefinekeys.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{kvdefinekeys-test1.tex}{\from{kvdefinekeys.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{kvdefinekeys.xml}{\from{kvdefinekeys.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -177,21 +172,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{kvdefinekeys.drv} % @@ -428,118 +408,7 @@ and the derived files \KVD@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input kvdefinekeys.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -588,7 +457,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % kvdefinekeys.sty & tex/generic/oberdiek/kvdefinekeys.sty\\ % kvdefinekeys.pdf & doc/latex/oberdiek/kvdefinekeys.pdf\\ -% test/kvdefinekeys-test1.tex & doc/latex/oberdiek/test/kvdefinekeys-test1.tex\\ % kvdefinekeys.dtx & source/latex/oberdiek/kvdefinekeys.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/kvdefinekeys.pdf b/macros/latex/contrib/oberdiek/kvdefinekeys.pdf index 3d11f7fbaa..04e7111c2d 100644 Binary files a/macros/latex/contrib/oberdiek/kvdefinekeys.pdf and b/macros/latex/contrib/oberdiek/kvdefinekeys.pdf differ diff --git a/macros/latex/contrib/oberdiek/kvsetkeys.dtx b/macros/latex/contrib/oberdiek/kvsetkeys.dtx index b7377aaaa6..7bbd4fe568 100644 --- a/macros/latex/contrib/oberdiek/kvsetkeys.dtx +++ b/macros/latex/contrib/oberdiek/kvsetkeys.dtx @@ -69,10 +69,6 @@ % TDS:tex/generic/oberdiek/kvsetkeys.sty % TDS:doc/latex/oberdiek/kvsetkeys.pdf % TDS:doc/latex/oberdiek/kvsetkeys-example.tex -% TDS:doc/latex/oberdiek/test/kvsetkeys-test1.tex -% TDS:doc/latex/oberdiek/test/kvsetkeys-test2.tex -% TDS:doc/latex/oberdiek/test/kvsetkeys-test3.tex -% TDS:doc/latex/oberdiek/test/kvsetkeys-test4.tex % TDS:source/latex/oberdiek/kvsetkeys.dtx % %<*ignore> @@ -150,10 +146,6 @@ and the derived files % \file{kvsetkeys-test2.tex}{\from{kvsetkeys.dtx}{test2}}% % \file{kvsetkeys-test3.tex}{\from{kvsetkeys.dtx}{test2,noetex}}% % \file{kvsetkeys-test4.tex}{\from{kvsetkeys.dtx}{test4}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{kvsetkeys.xml}{\from{kvsetkeys.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -190,21 +182,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{kvsetkeys.drv} % @@ -1426,440 +1403,7 @@ $ \x \KVS@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input kvsetkeys.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \subsubsection{Preamble} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{article} -%\let\SavedUnexpanded\unexpanded -%\let\unexpanded\UNDEFINED -\makeatletter -\chardef\KVS@TestMode=1 % -\makeatother -\usepackage{kvsetkeys}[2016/05/16] -%\let\unexpanded\SavedUnexpanded -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -% \end{macrocode} -% -% \subsubsection{Time} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdfresettimer\endcsname\relax -\else - \makeatletter - \newcount\SummaryTime - \newcount\TestTime - \SummaryTime=\z@ - \newcommand*{\PrintTime}[2]{% - \typeout{% - [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]% - }% - }% - \newcommand*{\StartTime}[1]{% - \renewcommand*{\TimeDescription}{#1}% - \pdfresettimer - }% - \newcommand*{\TimeDescription}{}% - \newcommand*{\StopTime}{% - \TestTime=\pdfelapsedtime - \global\advance\SummaryTime\TestTime - \PrintTime\TimeDescription\TestTime - }% - \let\saved@qstest\qstest - \let\saved@endqstest\endqstest - \def\qstest#1#2{% - \saved@qstest{#1}{#2}% - \StartTime{#1}% - }% - \def\endqstest{% - \StopTime - \saved@endqstest - }% - \AtEndDocument{% - \PrintTime{summary}\SummaryTime - }% - \makeatother -\fi -% \end{macrocode} -% -% \subsubsection{Test sets} -% -% \begin{macrocode} -\makeatletter -\def\@makeactive#1{% - \catcode`#1=13\relax -} -\@makeactive\, -\def,{\errmessage{COMMA}} -\@makeother\, -\@makeactive\= -\def={\errmessage{EQUALS}} -\@makeother\= - -\begin{qstest}{normalize}{normalize,active-chars,space-removal}% - \long\def\Test#1#2{% - \@makeother\,% - \@makeother\=% - \scantokens{\toks@={#2}}% - \edef\Result{\the\toks@}% - \@makeother\,% - \@makeother\=% - \@Test{#1}% - \@makeactive\,% - \@Test{#1}% - \@makeactive\=% - \@Test{#1}% - \@makeother\,% - \@Test{#1}% - \@makeother\=% - }% - \long\def\@Test#1{% - \scantokens{\kv@normalize{#1}}% - \expandafter\expandafter\expandafter\Expect - \expandafter\expandafter\expandafter - {\expandafter\kv@list\expandafter}\expandafter{\Result}% - \Expect*{\ifx\kv@list\Result true\else false\fi}{true}% - }% - \Test{}{,}% - \Test{,}{,}% - \Test{,,}{,}% - \Test{,,,}{,}% - \Test{ , }{,}% - \Test{{a}}{,{a},}% - \Test{,{a}}{,{a},}% - \Test{{a},}{,{a},}% - \Test{{a},{b}}{,{a},{b},}% - \Test{{b}={c},{}=,{}={},{d}=}{,{b}={c},{}=,{}={},{d}=,}% - \Test{{}}{,{},}% - \Test{{},{},{}}{,{},{},{},}% - \Test{=}{,=,}% - \Test{=,=,=}{,=,=,=,}% - \Test{a=\par}{,a=\par,}% - \Test{\par}{,\par,}% - \def\TestSet#1{% - \Test{#1#1}{,}% - \Test{#1#1,#1#1}{,}% - \Test{#1#1,#1#1,#1#1}{,}% - \Test{#1#1#1#1#1}{,}% - \Test{{a}#1#1=#1#1{b}}{,{a}={b},}% - }% - \TestSet{ }% - \begingroup - \let\saved@normalize\kv@normalize - \def\kv@normalize#1{% - \saved@normalize{#1}% - \@onelevel@sanitize\kv@list - \@onelevel@sanitize\Result - }% - \Test{#,#=#,{#}={#},{#}=,{#}}{,#,#=#,{#}={#},{#}=,{#},}% - \endgroup - \begingroup - \def\Test#1#2{% - \edef\Result{#2}% - \@Test{#1}% - }% - \Test{{ a = b }}{,{ a = b },}% - \@makeactive\,% - \Test{{,}}{\string,{\noexpand,}\string,}% - \@makeother\,% - \@makeactive\=% - \Test{a={=}}{,a\string={\noexpand=},}% - \endgroup - \Test{a=b}{,a=b,}% - \Test{a={b}}{,a={b},}% - \Test{a ={b}}{,a={b},}% - \Test{a= {b}}{,a={b},}% - \Test{a = {b}}{,a={b},}% - \Test{a = {b} ,}{,a={b},}% - \Test{a}{,a,}% - \Test{ a}{,a,}% - \Test{a }{,a,}% - \Test{ a }{,a,}% - \Test{, a ,}{,a,}% - \Test{, a b ,}{,a b,}% - \Test{,a ,}{,a,}% - \Test{ a =}{,a=,}% - \Test{ a = }{,a=,}% - \Test{a =}{,a=,}% - \Test{{a} =}{,{a}=,}% - \Test{{a}= {}}{,{a}={},}% - \Test{, a = {}}{,a={},}% - \Test{a,,b}{,a,b,}% - \Test{a=\fi}{,a=\fi,}% - \Test{a=\iffalse}{,a=\iffalse,}% - \Test{a=\iffalse,b=\fi}{,a=\iffalse,b=\fi,}% -\end{qstest} - -\begin{qstest}{parse}{parse,brace-removal} - \def\Processor#1#2{% - \expandafter\Expect\expandafter{\kv@key}{#1}% - \toks@{#2}% - \edef\x{\the\toks@}% - \ifx\kv@value\relax - \Expect*{\the\toks@}{}% - \def\Value{<>}% - \else - \edef\Value{[\the\toks@]}% - \@onelevel@sanitize\Value - \fi - \toks@{#1}% - \ifx\Result\@empty - \edef\Result{[\the\toks@]=\Value}% - \else - \edef\Result{\Result,[\the\toks@]=\Value}% - \fi - \@onelevel@sanitize\Result - }% - \def\Test#1#2{% - \sbox0{% - \let\Result\@empty - \kv@parse{#1}\Processor - \Expect*{\Result}{#2}% - }% - \Expect*{\the\wd0}{0.0pt}% - }% - \Test{}{}% - \Test{{}}{}% - \Test{{{}}}{[]=<>}% - \Test{{{{}}}}{[{}]=<>}% - \Test{a}{[a]=<>}% - \Test{{a}}{[a]=<>}% - \Test{{a}}{[a]=<>}% - \Test{{{a}}}{[a]=<>}% - \Test{{{{a}}}}{[{a}]=<>}% - \Test{a=}{[a]=[]}% - \Test{{a}=}{[a]=[]}% - \Test{{{a}}=}{[{a}]=[]}% - \Test{a={}}{[a]=[]}% - \Test{{a}={{}}}{[a]=[{}]}% - \Test{a=b}{[a]=[b]}% - \Test{a=\fi}{[a]=[\fi]}% - \Test{a=\iffalse}{[a]=[\iffalse]}% - \Test{a=\iffalse,b=\fi}{[a]=[\iffalse],[b]=[\fi]}% - \Test{{ a = b }}{[ a ]=[ b ]}% - \Test{{{ a = b }}}{[ a = b ]=<>}% -\end{qstest} - -\begin{qstest}{comma}{comma,parse} - \def\Processor#1{% - \expandafter\Expect\expandafter{\comma@entry}{#1}% - \toks@{#1}% - \ifx\Result\@empty - \edef\Result{[\the\toks@]}% - \else - \edef\Result{\Result,[\the\toks@]}% - \fi - \@onelevel@sanitize\Result - }% - \def\Test#1#2{% - \sbox0{% - \let\Result\@empty - \comma@parse{#1}\Processor - \Expect*{\Result}{#2}% - }% - \Expect*{\the\wd0}{0.0pt}% - }% - \Test{}{}% - \Test{{}}{}% - \Test{{{}}}{[{}]}% - \Test{a}{[a]}% - \Test{{a}}{[a]}% - \Test{{{a}}}{[{a}]}% - \Test{a=}{[a=]}% - \Test{a\fi}{[a\fi]}% - \Test{a\iffalse}{[a\iffalse]}% - \Test{\iffalse,\fi}{[\iffalse],[\fi]}% - \Test{ a , b , c }{[a],[b],[c]}% - \Test{ { } ,{ }, { }, { } , { } }{[ ],[ ],[ ],[ ],[ ]}% - \Test{ {{}} ,{{}}, {{}}, {{}} , {{}} }{[{}],[{}],[{}],[{}],[{}]}% -\end{qstest} - -\begin{document} -\end{document} -% -% \end{macrocode} -% -% \subsection{Tests for key value processing handler} -% -% \begin{macrocode} -%<*test4> -\catcode`\{=1 -\catcode`\}=2 -\catcode`\#=6 -\catcode`\@=11 -\input kvdefinekeys.sty\relax -\input kvsetkeys.sty\relax -\input infwarerr.sty\relax -\def\Error#1{% - \@PackageError{test}{#1}\@ehc -} -% \end{macrocode} -% \begin{macrocode} -\def\temp#1#2{% - \kv@define@key{#1}{#2}{% - \edef\result{% - \result - [#1:#2=##1]% hash-ok - }% - }% -} -\temp{FA}{key1} -\temp{FA}{key2} -\temp{FB}{key3} -\temp{FB}{key3} -% \end{macrocode} -% \begin{macrocode} -\setbox0=\hbox{% - \def\result{}% - \kvsetknownkeys{FA}\cmd{key1=234,key3=456}% - \def\expected{[FA:key1=234]}% - \ifx\expected\result - \else - \Error{% - \string\kvsetknownkeys/\string\result\MessageBreak - Expected: \expected\MessageBreak - Result: \space\result - }% - \fi - \def\expected{{key3}={456}}% - \ifx\cmd\expected - \else - \Error{% - \string\kvsetknownkeys/\string\cmd\MessageBreak - Expected: \expected\MessageBreak - Result: \space\cmd - }% - \fi -} -\ifdim\wd0=0pt % -\else - \Error{Spurious spaces?}% -\fi -% \end{macrocode} -% \begin{macrocode} -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1909,10 +1453,6 @@ $ \x % kvsetkeys.sty & tex/generic/oberdiek/kvsetkeys.sty\\ % kvsetkeys.pdf & doc/latex/oberdiek/kvsetkeys.pdf\\ % kvsetkeys-example.tex & doc/latex/oberdiek/kvsetkeys-example.tex\\ -% test/kvsetkeys-test1.tex & doc/latex/oberdiek/test/kvsetkeys-test1.tex\\ -% test/kvsetkeys-test2.tex & doc/latex/oberdiek/test/kvsetkeys-test2.tex\\ -% test/kvsetkeys-test3.tex & doc/latex/oberdiek/test/kvsetkeys-test3.tex\\ -% test/kvsetkeys-test4.tex & doc/latex/oberdiek/test/kvsetkeys-test4.tex\\ % kvsetkeys.dtx & source/latex/oberdiek/kvsetkeys.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/kvsetkeys.pdf b/macros/latex/contrib/oberdiek/kvsetkeys.pdf index 421d79a864..c5afe2fbb5 100644 Binary files a/macros/latex/contrib/oberdiek/kvsetkeys.pdf and b/macros/latex/contrib/oberdiek/kvsetkeys.pdf differ diff --git a/macros/latex/contrib/oberdiek/letltxmacro.dtx b/macros/latex/contrib/oberdiek/letltxmacro.dtx deleted file mode 100644 index 86199e1063..0000000000 --- a/macros/latex/contrib/oberdiek/letltxmacro.dtx +++ /dev/null @@ -1,1153 +0,0 @@ -% \iffalse meta-comment -% -% File: letltxmacro.dtx -% Version: 2016/05/16 v1.5 -% Info: Let assignment for LaTeX macros -% -% Copyright (C) -% 2008, 2010 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of -% LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work consists of the main source file letltxmacro.dtx -% and the derived files -% letltxmacro.sty, letltxmacro.pdf, letltxmacro.ins, letltxmacro.drv, -% letltxmacro-showcases.tex, letltxmacro-test1.tex, -% letltxmacro-test2.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/letltxmacro.dtx -% CTAN:macros/latex/contrib/oberdiek/letltxmacro.pdf -% -% Unpacking: -% (a) If letltxmacro.ins is present: -% tex letltxmacro.ins -% (b) Without letltxmacro.ins: -% tex letltxmacro.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{letltxmacro.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If letltxmacro.drv is present: -% latex letltxmacro.drv -% (b) Without letltxmacro.drv: -% latex letltxmacro.dtx; ... -% The class ltxdoc loads the configuration file ltxdoc.cfg -% if available. Here you can specify further options, e.g. -% use A4 as paper format: -% \PassOptionsToClass{a4paper}{article} -% -% Programm calls to get the documentation (example): -% pdflatex letltxmacro.dtx -% makeindex -s gind.ist letltxmacro.idx -% pdflatex letltxmacro.dtx -% makeindex -s gind.ist letltxmacro.idx -% pdflatex letltxmacro.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/letltxmacro.sty -% TDS:doc/latex/oberdiek/letltxmacro.pdf -% TDS:doc/latex/oberdiek/letltxmacro-showcases.tex -% TDS:doc/latex/oberdiek/test/letltxmacro-test1.tex -% TDS:doc/latex/oberdiek/test/letltxmacro-test2.tex -% TDS:source/latex/oberdiek/letltxmacro.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \def\x{LaTeX2e}% -\expandafter\endgroup -\ifcase 0\ifx\install y1\fi\expandafter - \ifx\csname processbatchFile\endcsname\relax\else1\fi - \ifx\fmtname\x\else 1\fi\relax -\else\csname fi\endcsname -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: letltxmacro -Version: 2016/05/16 v1.5 - -Copyright (C) - 2008, 2010 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://www.latex-project.org/lppl.txt -and version 1.3 or later is part of all distributions of -LaTeX version 2005/12/01 or later. - -This work has the LPPL maintenance status "maintained". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -This work consists of the main source file letltxmacro.dtx -and the derived files - letltxmacro.sty, letltxmacro.pdf, letltxmacro.ins, letltxmacro.drv, - letltxmacro-showcases.tex, letltxmacro-test1.tex, - letltxmacro-test2.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{letltxmacro.ins}{\from{letltxmacro.dtx}{install}}% - \file{letltxmacro.drv}{\from{letltxmacro.dtx}{driver}}% - \usedir{tex/latex/oberdiek}% - \file{letltxmacro.sty}{\from{letltxmacro.dtx}{package}}% - \usedir{doc/latex/oberdiek}% - \file{letltxmacro-showcases.tex}{\from{letltxmacro.dtx}{showcases}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{letltxmacro-test1.tex}{\from{letltxmacro.dtx}{test1}}% -% \file{letltxmacro-test2.tex}{\from{letltxmacro.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{letltxmacro.xml}{\from{letltxmacro.dtx}{catalogue}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* letltxmacro.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `letltxmacro.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{letltxmacro.drv}% - [2016/05/16 v1.5 Let assignment for LaTeX macros (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{letltxmacro.dtx}% -\end{document} -% -% \fi -% -% -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% \GetFileInfo{letltxmacro.drv} -% -% \title{The \xpackage{letltxmacro} package} -% \date{2016/05/16 v1.5} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% \TeX's \cs{let} assignment does not work for \LaTeX\ macros -% with optional arguments or for macros that are defined -% as robust macros by \cs{DeclareRobustCommand}. This package -% defines \cs{LetLtxMacro} that also takes care of the involved -% internal macros. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% If someone wants to redefine a macro with using the old -% meaning, then one method is \TeX's command \cs{let}: -%\begin{quote} -%\begin{verbatim} -%\newcommand{\Macro}{\typeout{Test Macro}} -%\let\SavedMacro=\Macro -%\renewcommand{\Macro}{% -% \typeout{Begin}% -% \SavedMacro -% \typeout{End}% -%} -%\end{verbatim} -%\end{quote} -% However, this method fails, if \cs{Macro} is defined -% by \cs{DeclareRobustCommand} and/or has an optional argument. -% In both cases \LaTeX\ defines an additional internal macro -% that is forgotten in the simple \cs{let} assignment of -% the example above. -% -% \begin{declcs}{LetLtxMacro} \M{new macro} \M{old macro} -% \end{declcs} -% Macro \cs{LetLtxMacro} behaves similar to \TeX's \cs{let} -% assignment, but it takes care of macros that are -% defined by \cs{DeclareRobustCommand} and/or have optional -% arguments. Example: -%\begin{quote} -%\begin{verbatim} -%\DeclareRobustCommand{\Macro}[1][default]{...} -%\LetLtxMacro{\SavedMacro}{\Macro} -%\end{verbatim} -%\end{quote} -% Then macro \cs{SavedMacro} only uses internal macro names -% that are derived from \cs{SavedMacro}'s macro name. Macro \cs{Macro} -% can now be redefined without affecting \cs{SavedMacro}. -% -% \begin{declcs}{GlobalLetLtxMacro} \M{new macro} \M{old macro} -% \end{declcs} -% Like \cs{LetLtxMacro}, but the \meta{new macro} is defined globally. -% Since version 2016/05/16~v1.4. -% -% \subsection{Supported macro definition commands} -% -% \begin{quote} -% \begin{tabular}{@{}ll@{}} -% \cs{newcommand}, \cs{renewcommand} & latex/base\\ -% \cs{newenvironment}, \cs{renewenvironment} & latex/base\\ -% \cs{DeclareRobustCommand}& latex/base\\ -% \cs{newrobustcmd}, \cs{renewrobustcmd} & etoolbox\\ -% \cs{robustify} & etoolbox 2008/06/22 v1.6\\ -% \end{tabular} -% \end{quote} -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \subsection{Show cases} -% -% \subsubsection{\xfile{letltxmacro-showcases.tex}} -% -% \begin{macrocode} -%<*showcases> -\NeedsTeXFormat{LaTeX2e} -\makeatletter -% \end{macrocode} -% \begin{macro}{\Line} -% The result is displayed by macro \cs{Line}. The percent symbol -% at line start allows easy grepping and inserting into the DTX -% file. -% \begin{macrocode} -\newcommand*{\Line}[1]{% - \typeout{\@percentchar#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\newcommand*{\ShowCmdName}[1]{% - \@ifundefined{#1}{}{% - \Line{% - \space\space(\expandafter\string\csname#1\endcsname) = % - (\expandafter\meaning\csname#1\endcsname)% - }% - }% -} -\newcommand*{\ShowCmds}[1]{% - \ShowCmdName{#1}% - \ShowCmdName{#1 }% - \ShowCmdName{\\#1}% - \ShowCmdName{\\#1 }% -} -\let\\\@backslashchar -% \end{macrocode} -% \begin{macro}{\ShowDef} -% \begin{macrocode} -\newcommand*{\ShowDef}[2]{% - \begingroup - \Line{}% - \newcommand*{\DefString}{#2}% - \@onelevel@sanitize\DefString - \Line{\DefString}% - #2% - \ShowCmds{#1}% - \endgroup -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\typeout{} -\Line{* LaTeX definitions:} -\ShowDef{cmd}{% - \newcommand{\cmd}[2][default]{}% -} -\ShowDef{cmd}{% - \DeclareRobustCommand{\cmd}{}% -} -\ShowDef{cmd}{% - \DeclareRobustCommand{\cmd}[2][default]{}% -} -\typeout{} -% \end{macrocode} -% The minimal version of package \xpackage{etoolbox} is 2008/06/12 v1.6a -% because it fixes \cs{robustify}. -% \begin{macrocode} -\RequirePackage{etoolbox}[2008/06/12]% -\Line{} -\Line{* etoolbox's robust definitions:} -\ShowDef{cmd}{% - \newrobustcmd{\cmd}{}% -} -\ShowDef{cmd}{% - \newrobustcmd{\cmd}[2][default]{}% -} -\Line{} -\Line{* etoolbox's \string\robustify:} -\ShowDef{cmd}{% - \newcommand{\cmd}[2][default]{} % - \robustify{\cmd}% -} -\ShowDef{cmd}{% - \DeclareRobustCommand{\cmd}{} % - \robustify{\cmd}% -} -\ShowDef{cmd}{% - \DeclareRobustCommand{\cmd}[2][default]{} % - \robustify{\cmd}% -} -\typeout{} -\@@end -% -% \end{macrocode} -% -% \subsubsection{Result} -% -% \begingroup -% \makeatletter -% \let\org@verbatim\@verbatim -% \def\@verbatim{^^A -% \org@verbatim -% \catcode`\~=\active -% }^^A -% \let~\textvisiblespace -%\begin{verbatim} -%* LaTeX definitions: -% -%\newcommand {\cmd }[2][default]{} -% (\cmd) = (macro:->\@protected@testopt \cmd \\cmd {default}) -% (\\cmd) = (\long macro:[#1]#2->) -% -%\DeclareRobustCommand {\cmd }{} -% (\cmd) = (macro:->\protect \cmd~ ) -% (\cmd~) = (\long macro:->) -% -%\DeclareRobustCommand {\cmd }[2][default]{} -% (\cmd) = (macro:->\protect \cmd~ ) -% (\cmd~) = (macro:->\@protected@testopt \cmd~ \\cmd~ {default}) -% (\\cmd~) = (\long macro:[#1]#2->) -% -%* etoolbox's robust definitions: -% -%\newrobustcmd {\cmd }{} -% (\cmd) = (\protected\long macro:->) -% -%\newrobustcmd {\cmd }[2][default]{} -% (\cmd) = (\protected macro:->\@testopt \\cmd {default}) -% (\\cmd) = (\long macro:[#1]#2->) -% -%* etoolbox's \robustify: -% -%\newcommand {\cmd }[2][default]{} \robustify {\cmd } -% (\cmd) = (\protected macro:->\@protected@testopt \cmd \\cmd {default}) -% (\\cmd) = (\long macro:[#1]#2->) -% -%\DeclareRobustCommand {\cmd }{} \robustify {\cmd } -% (\cmd) = (\protected macro:->) -% -%\DeclareRobustCommand {\cmd }[2][default]{} \robustify {\cmd } -% (\cmd) = (\protected macro:->\@protected@testopt \cmd~ \\cmd~ {default}) -% (\cmd~) = (macro:->\@protected@testopt \cmd~ \\cmd~ {default}) -% (\\cmd~) = (\long macro:[#1]#2->) -%\end{verbatim} -% \endgroup -% -% \subsection{Package} -% -% \begin{macrocode} -%<*package> -% \end{macrocode} -% -% \subsubsection{Catcodes and identification} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname llm@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\llm@AtEnd{% - \llm@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{40}{12}% ( -\TMP@EnsureCode{41}{12}% ) -\TMP@EnsureCode{42}{12}% * -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{58}{12}% : -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\edef\llm@AtEnd{% - \llm@AtEnd - \escapechar\the\escapechar\relax - \noexpand\endinput -} -\escapechar=92 % `\\ -% \end{macrocode} -% -% Package identification. -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{letltxmacro}% - [2016/05/16 v1.5 Let assignment for LaTeX macros (HO)] -% \end{macrocode} -% -% \subsubsection{Main macros} -% -% \begin{macro}{\LetLtxMacro} -% \begin{macrocode} -\newcommand*{\LetLtxMacro}{% - \llm@ModeLetLtxMacro{}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\GlobalLetLtxMacro} -% \begin{macrocode} -\newcommand*{\GlobalLetLtxMacro}{% - \llm@ModeLetLtxMacro\global -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\llm@ModeLetLtxMacro} -% \begin{macrocode} -\newcommand*{\llm@ModeLetLtxMacro}[3]{% - \edef\llm@escapechar{\the\escapechar}% - \escapechar=-1 % - \edef\reserved@a{% - \noexpand\protect - \expandafter\noexpand - \csname\string#3 \endcsname - }% - \ifx\reserved@a#3\relax - #1\edef#2{% - \noexpand\protect - \expandafter\noexpand - \csname\string#2 \endcsname - }% - #1\expandafter\let - \csname\string#2 \expandafter\endcsname - \csname\string#3 \endcsname - \expandafter\llm@LetLtxMacro - \csname\string#2 \expandafter\endcsname - \csname\string#3 \endcsname{#1}% - \else - \llm@LetLtxMacro{#2}{#3}{#1}% - \fi - \escapechar=\llm@escapechar\relax -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\llm@LetLtxMacro} -% \begin{macrocode} -\def\llm@LetLtxMacro#1#2#3{% - \escapechar=92 % - \expandafter\llm@CheckParams\meaning#2:->\@nil{% - \begingroup - \def\@protected@testopt{% - \expandafter\@testopt\@gobble - }% - \def\@testopt##1##2{% - \toks@={##2}% - }% - \let\llm@testopt\@empty - \edef\x{% - \noexpand\@protected@testopt - \noexpand#2% - \expandafter\noexpand\csname\string#2\endcsname - }% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\y - \expandafter\expandafter\expandafter{% - \expandafter\llm@CarThree#2{}{}{}\llm@nil - }% - \ifx\x\y - #2% - \def\llm@testopt{% - \noexpand\@protected@testopt - \noexpand#1% - }% - \else - \edef\x{% - \noexpand\@testopt - \expandafter\noexpand - \csname\string#2\endcsname - }% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\y - \expandafter\expandafter\expandafter{% - \expandafter\llm@CarTwo#2{}{}\llm@nil - }% - \ifx\x\y - #2% - \def\llm@testopt{% - \noexpand\@testopt - }% - \fi - \fi - \ifx\llm@testopt\@empty - \else - \llm@protected\xdef\llm@GlobalTemp{% - \llm@testopt - \expandafter\noexpand - \csname\string#1\endcsname - {\the\toks@}% - }% - \fi - \expandafter\endgroup\ifx\llm@testopt\@empty - #3\let#1=#2\relax - \else - #3\let#1=\llm@GlobalTemp - #3\expandafter\let - \csname\string#1\expandafter\endcsname - \csname\string#2\endcsname - \fi - }{% - #3\let#1=#2\relax - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\llm@CheckParams} -% \begin{macrocode} -\def\llm@CheckParams#1:->#2\@nil{% - \begingroup - \def\x{#1}% - \ifx\x\llm@macro - \endgroup - \def\llm@protected{}% - \expandafter\@firstoftwo - \else - \ifx\x\llm@protectedmacro - \endgroup - \def\llm@protected{\protected}% - \expandafter\expandafter\expandafter\@firstoftwo - \else - \endgroup - \expandafter\expandafter\expandafter\@secondoftwo - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\llm@macro} -% \begin{macrocode} -\def\llm@macro{macro} -\@onelevel@sanitize\llm@macro -% \end{macrocode} -% \end{macro} -% \begin{macro}{\llm@protectedmacro} -% \begin{macrocode} -\def\llm@protectedmacro{\protected macro} -\@onelevel@sanitize\llm@protectedmacro -% \end{macrocode} -% \end{macro} -% \begin{macro}{\llm@CarThree} -% \begin{macrocode} -\def\llm@CarThree#1#2#3#4\llm@nil{#1#2#3}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\llm@CarTwo} -% \begin{macrocode} -\def\llm@CarTwo#1#2#3\llm@nil{#1#2}% -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\llm@AtEnd% -% -% \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\documentclass{minimal} -\makeatletter -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@\@ne -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@\@ne - \repeat -} -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{127}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\{=1 % - \catcode`\}=2 % - \catcode`\#=6 % - \catcode`\[=12 % - \catcode`\]=12 % - \catcode`\%=14 % - \catcode`\ =10 % - \catcode13=5 % - \RequirePackage{letltxmacro}[2016/05/16]\relax - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Package tests} -% -% \begin{macrocode} -%<*test2> -% \end{macrocode} -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{minimal} - -\usepackage{letltxmacro}[2016/05/16] - -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} - -\makeatletter - -\def\TestDef#1{% - \begingroup - \@makeother\\% - \@makeother\ % - \expandafter\@TestDef\csname #1\endcsname -} -\def\@TestDef#1#2{% - \edef\a{\expandafter\strip@prefix\meaning#1}% - \edef\b{\detokenize{#2}}% - \ifx\a\b - \else - \typeout{1 [\a]}% - \typeout{2 [\b]}% - \fi - \endgroup - \Expect*{\expandafter\strip@prefix\meaning#1}*{\detokenize{#2}}% -} -\def\TestEquals#1#2{% - \Expect*{% - \expandafter\ifx\csname#1\expandafter\endcsname - \csname#2\endcsname - equals% - \else - wrong% - \fi - }{equals}% -} -\def\SaveA{% - \let\SavedA\TestA - \expandafter\let\csname\string\SavedA\expandafter\endcsname - \csname\string\TestA\endcsname - \expandafter\let\csname SavedA \expandafter\endcsname - \csname TestA \endcsname -} -\def\CheckA{% - \TestEquals{SavedA}{TestA}% - \TestEquals{\string\SavedA}{\string\TestA}% - \TestEquals{SavedA }{TestA }% -} - -\begin{qstest}{robust}{robust} - \begingroup - \DeclareRobustCommand*{\TestA}{Test}% - \SaveA - \TestDef{TestA}{\protect \TestA }% - \CheckA - \DeclareRobustCommand{\TestA}{Test}% - \SaveA - \TestDef{TestA}{\protect \TestA }% - \LetLtxMacro\TestB\TestA - \TestDef{TestB}{\protect \TestB }% - \TestEquals{TestB }{TestA }% - \CheckA - \GlobalLetLtxMacro\TestC\TestA - \CheckA - \endgroup - \TestDef{TestC}{\protect \TestC }% - \DeclareRobustCommand{\TestA}{Test}% - \TestEquals{TestC }{TestA }% -\end{qstest} - -\begin{qstest}{default}{default} - \begingroup - \newcommand{\TestA}[1][\relax default \empty]{TestA #1}% - \SaveA - \TestDef - {TestA}{\@protected@testopt \TestA \\TestA {\relax default \empty }}% - \LetLtxMacro\TestB\TestA - \TestDef - {TestB}{\@protected@testopt \TestB \\TestB {\relax default \empty }}% - \CheckA - \TestEquals{\string\TestB}{\string\TestA}% - \GlobalLetLtxMacro\TestC\TestA - \CheckA - \endgroup - \TestDef - {TestC}{\@protected@testopt \TestC \\TestC {\relax default \empty }}% - \newcommand{\TestA}[1][\relax default \empty]{TestA #1}% - \TestEquals{\string\TestC}{\string\TestA}% -\end{qstest} - -\begin{qstest}{robustdefault}{robustdefault} - \begingroup - \DeclareRobustCommand{\TestA}[1][\default]{TestA}% - \SaveA - \LetLtxMacro\TestB\TestA - \TestDef{TestB}{\protect \TestB }% - \TestDef{TestB }{\@protected@testopt \TestB \\TestB {\default }}% - \CheckA - \GlobalLetLtxMacro\TestC\TestA - \CheckA - \endgroup - \TestDef{TestC}{\protect \TestC }% - \TestDef{TestC }{\@protected@testopt \TestC \\TestC {\default }}% -\end{qstest} - -\begin{qstest}{plain}{plain} - \LetLtxMacro\NewRelax\relax - \Expect*{\meaning\relax}*{\string\relax}% - \Expect*{\meaning\NewRelax}*{\string\relax}% - \LetLtxMacro\NewHbox\hbox - \Expect*{\meaning\hbox}*{\string\hbox}% - \Expect*{\meaning\NewHbox}*{\string\hbox}% - \LetLtxMacro\NewEmpty\empty - \Expect*{\meaning\empty}{macro:->}% - \Expect*{\meaning\NewEmpty}{macro:->}% - \def\TestA{\iffalse}% - \LetLtxMacro\TestB\TestA - \TestDef{TestB}{\iffalse }% - \TestEquals{TestA}{TestB}% -\end{qstest} -% \end{macrocode} -% -% \begin{macrocode} -\usepackage{etoolbox}[2008/06/22] - -\begin{qstest}{oldnewrobustcmd}{oldnewrobustcmd} - \begingroup - \protected\edef\TestA{% - \noexpand\@protected@testopt - \noexpand\TestA - \expandafter\noexpand\csname\string\TestA\endcsname - {\noexpand\default}% - }% - \expandafter\protected\expandafter - \def\csname\string\TestA\endcsname{TestA}% - \SaveA - \LetLtxMacro\TestB\TestA - \TestDef{TestB}{\@protected@testopt \TestB \\TestB {\default }}% - \protected\edef\TestC{% - \noexpand\@protected@testopt - \noexpand\TestB - \expandafter\noexpand\csname\string\TestB\endcsname - {\noexpand\default}% - }% - \TestEquals{TestB}{TestC}% - \CheckA - \GlobalLetLtxMacro\TestD\TestA - \CheckA - \endgroup - \TestDef{TestD}{\@protected@testopt \TestD \\TestD {\default }}% - \protected\edef\TestC{% - \noexpand\@protected@testopt - \noexpand\TestD - \expandafter\noexpand\csname\string\TestD\endcsname - {\noexpand\default}% - }% - \TestEquals{TestD}{TestC}% -\end{qstest} - -\begin{qstest}{newrobustcmd}{newrobustcmd} - \begingroup - \newrobustcmd{\TestA}[1][\default]{TestA}% - \SaveA - \LetLtxMacro\TestB\TestA - \TestDef{TestB}{\@testopt \\TestB {\default }}% - \protected\edef\TestC{% - \noexpand\@testopt - \expandafter\noexpand\csname\string\TestB\endcsname - {\noexpand\default}% - }% - \TestEquals{TestB}{TestC}% - \CheckA - \GlobalLetLtxMacro\TestD\TestA - \CheckA - \endgroup - \TestDef{TestD}{\@testopt \\TestD {\default }}% - \protected\edef\TestC{% - \noexpand\@testopt - \expandafter\noexpand\csname\string\TestD\endcsname - {\noexpand\default}% - }% - \TestEquals{TestD}{TestC}% -\end{qstest} - -\begin{qstest}{robustifyopt}{robustifyopt} - \newcommand{\TestA}[2][\default]{}% - \TestDef{TestA}{\@protected@testopt \TestA \\TestA {\default }}% - \robustify\TestA - \TestDef{TestA}{\@protected@testopt \TestA \\TestA {\default }}% - \protected\edef\TestC{% - \noexpand\@protected@testopt - \noexpand\TestA - \expandafter\noexpand\csname\string\TestA\endcsname - {\noexpand\default}% - }% - \TestEquals{TestA}{TestC}% - \SaveA - \LetLtxMacro\TestB\TestA - \TestDef{TestB}{\@protected@testopt \TestB \\TestB {\default }}% - \protected\edef\TestC{% - \noexpand\@protected@testopt - \noexpand\TestB - \expandafter\noexpand\csname\string\TestB\endcsname - {\noexpand\default}% - }% - \TestEquals{TestB}{TestC}% - \CheckA -\end{qstest} - -\begin{qstest}{robustifydeclare}{robustifydeclare} - \DeclareRobustCommand\TestA{\iffalse}% - \robustify\TestA - \SaveA - \LetLtxMacro\TestB\TestA - \TestDef{TestB}{\iffalse }% - % before etoolbox 2008/06/22: \protected\long\def - % since etoolbox 2008/06/22: \protected\def - \protected\def\TestC{\iffalse}% - \TestEquals{TestB}{TestC}% - \CheckA -\end{qstest} - -\begin{qstest}{robustifydeclarelong}{robustifydeclarelong} - \DeclareRobustCommand\TestA[1]{\iffalse}% - \robustify\TestA - \SaveA - \LetLtxMacro\TestB\TestA - \TestDef{TestB}{\iffalse }% - % before etoolbox 2008/06/22: \protected\long\def - % since etoolbox 2008/06/22: \protected\def - \protected\long\def\TestC#1{\iffalse}% - \TestEquals{TestB}{TestC}% - \CheckA -\end{qstest} -% \end{macrocode} -% -% \begin{macrocode} -\csname @@end\endcsname -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{letltxmacro}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/letltxmacro.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/letltxmacro.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex letltxmacro.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% letltxmacro.sty & tex/latex/oberdiek/letltxmacro.sty\\ -% letltxmacro.pdf & doc/latex/oberdiek/letltxmacro.pdf\\ -% letltxmacro-showcases.tex & doc/latex/oberdiek/letltxmacro-showcases.tex\\ -% test/letltxmacro-test1.tex & doc/latex/oberdiek/test/letltxmacro-test1.tex\\ -% test/letltxmacro-test2.tex & doc/latex/oberdiek/test/letltxmacro-test2.tex\\ -% letltxmacro.dtx & source/latex/oberdiek/letltxmacro.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{letltxmacro.dtx}| -% \end{quote} -% Do not forget to quote the argument according to the demands -% of your shell. -% -% \paragraph{Generating the documentation.} -% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate -% the documentation. The process can be configured by the -% configuration file \xfile{ltxdoc.cfg}. For instance, put this -% line into this file, if you want to have A4 as paper format: -% \begin{quote} -% \verb|\PassOptionsToClass{a4paper}{article}| -% \end{quote} -% An example follows how to generate the -% documentation with pdf\LaTeX: -% \begin{quote} -%\begin{verbatim} -%pdflatex letltxmacro.dtx -%makeindex -s gind.ist letltxmacro.idx -%pdflatex letltxmacro.dtx -%makeindex -s gind.ist letltxmacro.idx -%pdflatex letltxmacro.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2008/06/09 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2008/06/12 v1.1} -% \item -% Support for \xpackage{etoolbox}'s \cs{newrobustcmd} added. -% \end{Version} -% \begin{Version}{2008/06/13 v1.2} -% \item -% Support for \xpackage{etoolbox}'s \cs{robustify} added. -% \end{Version} -% \begin{Version}{2008/06/24 v1.3} -% \item -% Test file adapted for etoolbox 2008/06/22 v1.6. -% \end{Version} -% \begin{Version}{2010/09/02 v1.4} -% \item -% \cs{GlobalLetLtxMacro} added. -% \end{Version} -% \begin{Version}{2016/05/16 v1.5} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/letltxmacro.pdf b/macros/latex/contrib/oberdiek/letltxmacro.pdf deleted file mode 100644 index bfdb7d1dce..0000000000 Binary files a/macros/latex/contrib/oberdiek/letltxmacro.pdf and /dev/null differ diff --git a/macros/latex/contrib/oberdiek/listingsutf8.dtx b/macros/latex/contrib/oberdiek/listingsutf8.dtx index 7a6ed74f37..1cf8b78795 100644 --- a/macros/latex/contrib/oberdiek/listingsutf8.dtx +++ b/macros/latex/contrib/oberdiek/listingsutf8.dtx @@ -65,11 +65,6 @@ % Installation: % TDS:tex/latex/oberdiek/listingsutf8.sty % TDS:doc/latex/oberdiek/listingsutf8.pdf -% TDS:doc/latex/oberdiek/test/listingsutf8-test1.tex -% TDS:doc/latex/oberdiek/test/listingsutf8-test2.tex -% TDS:doc/latex/oberdiek/test/listingsutf8-test3.tex -% TDS:doc/latex/oberdiek/test/listingsutf8-test4.tex -% TDS:doc/latex/oberdiek/test/listingsutf8-test5.tex % TDS:source/latex/oberdiek/listingsutf8.dtx % %<*ignore> @@ -143,10 +138,6 @@ and the derived files % \file{listingsutf8-test3.tex}{\from{listingsutf8.dtx}{test3,utf8x}}% % \file{listingsutf8-test4.tex}{\from{listingsutf8.dtx}{test4,utf8,noetex}}% % \file{listingsutf8-test5.tex}{\from{listingsutf8.dtx}{test5,utf8x,noetex}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{listingsutf8.xml}{\from{listingsutf8.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -183,21 +174,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{listingsutf8.drv} % @@ -493,105 +469,7 @@ and the derived files \lstU@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\documentclass{minimal} -\makeatletter -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@\@ne -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@\@ne - \repeat -} -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{127}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\{=1 % - \catcode`\}=2 % - \catcode`\#=6 % - \catcode`\[=12 % - \catcode`\]=12 % - \catcode`\%=14 % - \catcode`\ =10 % - \catcode13=5 % - \RequirePackage{listingsutf8}[2016/05/16]\relax - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test example for latin1} -% -% \begin{macrocode} -%<*test2> -% \end{macrocode} -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\documentclass{minimal} -\usepackage{filecontents} -\def\do#1{% - \ifx#1\^% - \else - \noexpand\do\noexpand#1% - \fi -} -\expandafter\let\expandafter\dospecials\expandafter\empty -\expandafter\edef\expandafter\dospecials\expandafter{\dospecials} -\begin{filecontents*}{ExampleUTF8.java} -public class ExampleUTF8 { - public static String testString = - "Umlauts: " + - "^^c3^^84^^c3^^96^^c3^^9c^^c3^^a4^^c3^^b6^^c3^^bc^^c3^^9f"; - public static void main(String[] args) { - System.out.println(testString); - } -} -\end{filecontents*} -\usepackage{listingsutf8}[2016/05/16] -\def\Text{% - Umlauts: % - ^^c3^^84^^c3^^96^^c3^^9c^^c3^^a4^^c3^^b6^^c3^^bc^^c3^^9f% -} -\begin{document} -\lstinputlisting[% - language=Java,% - inputencoding=utf8/latin1,% -]{ExampleUTF8.java} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -640,11 +518,6 @@ public class ExampleUTF8 { % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % listingsutf8.sty & tex/latex/oberdiek/listingsutf8.sty\\ % listingsutf8.pdf & doc/latex/oberdiek/listingsutf8.pdf\\ -% test/listingsutf8-test1.tex & doc/latex/oberdiek/test/listingsutf8-test1.tex\\ -% test/listingsutf8-test2.tex & doc/latex/oberdiek/test/listingsutf8-test2.tex\\ -% test/listingsutf8-test3.tex & doc/latex/oberdiek/test/listingsutf8-test3.tex\\ -% test/listingsutf8-test4.tex & doc/latex/oberdiek/test/listingsutf8-test4.tex\\ -% test/listingsutf8-test5.tex & doc/latex/oberdiek/test/listingsutf8-test5.tex\\ % listingsutf8.dtx & source/latex/oberdiek/listingsutf8.dtx\\ % \end{tabular}^^A % }^^A @@ -760,7 +633,7 @@ public class ExampleUTF8 { % \bibitem{inputenc} % Alan Jeffrey, Frank Mittelbach, % \textit{inputenc.sty}, 2006/05/05 v1.1b. -% \CTAN{macros/latex/base/inputenc.dtx} +% \CTANpkg{iputenc} % % \bibitem{listings} % Carsten Heinz, Brooks Moses: @@ -772,7 +645,7 @@ public class ExampleUTF8 { % Heiko Oberdiek: % \textit{The \xpackage{stringenc} package}; % 2007/10/22;\\ -% \CTAN{macros/latex/contrib/oberdiek/stringenc.pdf}. +% \CTANpkg{stringenc}. % % \end{thebibliography} % diff --git a/macros/latex/contrib/oberdiek/listingsutf8.pdf b/macros/latex/contrib/oberdiek/listingsutf8.pdf index ff64d3ce1e..3644e9b320 100644 Binary files a/macros/latex/contrib/oberdiek/listingsutf8.pdf and b/macros/latex/contrib/oberdiek/listingsutf8.pdf differ diff --git a/macros/latex/contrib/oberdiek/ltxcmds.dtx b/macros/latex/contrib/oberdiek/ltxcmds.dtx index 974a994380..7de6b53dfe 100644 --- a/macros/latex/contrib/oberdiek/ltxcmds.dtx +++ b/macros/latex/contrib/oberdiek/ltxcmds.dtx @@ -69,13 +69,6 @@ % Installation: % TDS:tex/generic/oberdiek/ltxcmds.sty % TDS:doc/latex/oberdiek/ltxcmds.pdf -% TDS:doc/latex/oberdiek/test/ltxcmds-test1.tex -% TDS:doc/latex/oberdiek/test/ltxcmds-test-gobble.tex -% TDS:doc/latex/oberdiek/test/ltxcmds-test-ifempty.tex -% TDS:doc/latex/oberdiek/test/ltxcmds-test-zapspace.tex -% TDS:doc/latex/oberdiek/test/ltxcmds-test-ifboxempty.tex -% TDS:doc/latex/oberdiek/test/ltxcmds-test-nextchar.tex -% TDS:doc/latex/oberdiek/test/ltxcmds-test-carcdr.tex % TDS:source/latex/oberdiek/ltxcmds.dtx % %<*ignore> @@ -155,10 +148,6 @@ and the derived files % \file{ltxcmds-test-ifboxempty.tex}{\from{ltxcmds.dtx}{test-ifboxempty}}% % \file{ltxcmds-test-nextchar.tex}{\from{ltxcmds.dtx}{test-nextchar}}% % \file{ltxcmds-test-carcdr.tex}{\from{ltxcmds.dtx}{test-carcdr}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{ltxcmds.xml}{\from{ltxcmds.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -198,21 +187,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{ltxcmds.drv} % @@ -2062,851 +2036,7 @@ $ \next \LTXcmds@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input ltxcmds.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test \cs{ltx@GobbleNum}} -% -% \begin{macrocode} -%<*test-gobble> -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input ltxcmds.sty\relax -\else - \RequirePackage{ltxcmds}[2016/05/16]% -\fi -\catcode`\@=11 % -\def\msg#{\immediate\write16}% -\msg{[Test \string\ltx@GobbleNum]}% -\long\def\Test#1=#2\\{% - \edef\StrA{\ltx@GobbleNum#1}% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\StrAA - \expandafter\expandafter\expandafter{\ltx@GobbleNum#1}% - \edef\StrB{#2}% - \ifx\StrA\StrB - \ifx\StrAA\StrB - \msg{* ok.}% - \else - \msg{StrAA: \StrAA}% - \msg{StrB: \StrB}% - \errhelp{Test: #1=#2}% - \errmessage{Test (two expansions) failed}% - \fi - \else - \msg{StrA: \StrA}% - \msg{StrB: \StrB}% - \errhelp{Test: #1=#2}% - \errmessage{Test (edef) failed!}% - \fi -} -\Test0abc=abc\\ -\Test1abc=bc\\ -\Test2abc=c\\ -\Test3abcd=d\\ -\Test4abcde=e\\ -\Test5abcdef=f\\ -\Test6abcdefg=g\\ -\Test7abcdefgh=h\\ -\Test8abcdefghi=i\\ -\Test9abcdefghij=j\\ -\Test{10}0123456789X=X\\ -\Test{12}abcdefghijklm=m\\ -\Test{700}% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -X=X\\ -\Test{-1}abc=abc\\ -\Test2\par\par\relax=\relax\\ - -\begingroup - \count1=2 % - \Test{\count1}abc=c\\% -\endgroup - -\ltx@IfUndefined{numexpr}{% -}{% - \Test{1+1}abc=c\\% -} - -\msg{[Test \string\ltx@CdrNum]}% -\long\def\Test#1=#2\\{% - \edef\StrA{\ltx@CdrNum#1\@nil}% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\StrAA - \expandafter\expandafter\expandafter{\ltx@CdrNum#1\@nil}% - \edef\StrB{#2}% - \ifx\StrA\StrB - \ifx\StrAA\StrB - \msg{* ok.}% - \else - \msg{StrAA: \meaning\StrAA}% - \msg{StrB: \meaning\StrB}% - \errhelp{Test: #1=#2}% - \errmessage{Test (two expansions) failed}% - \fi - \else - \msg{StrA: \StrA}% - \msg{StrB: \StrB}% - \errhelp{Test: #1=#2}% - \errmessage{Test (edef) failed!}% - \fi -} -\Test0abc=abc\\ -\Test1abc=bc\\ -\Test2abc=c\\ -\Test3abcd=d\\ -\Test4abcde=e\\ -\Test5abcdef=f\\ -\Test6abcdefg=g\\ -\Test7abcdefgh=h\\ -\Test8abcdefghi=i\\ -\Test9abcdefghij=j\\ -\Test{10}0123456789X=X\\ -\Test{12}abcdefghijklm=m\\ -\Test{700}% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -X=X\\ -\Test{-1}abc=abc\\ -\Test2\par\par\relax=\relax\\ - -\msg{[Test \string\ltx@CarNum]}% -\long\def\Test#1=#2\\{% - \edef\StrA{\ltx@CarNum#1\@nil}% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\StrAA - \expandafter\expandafter\expandafter{\ltx@CarNum#1\@nil}% - \edef\StrB{#2}% - \ifx\StrA\StrB - \ifx\StrAA\StrB - \msg{* ok.}% - \else - \msg{StrAA: \meaning\StrAA}% - \msg{StrB: \meaning\StrB}% - \errhelp{Test: #1=#2}% - \errmessage{Test (two expansions) failed}% - \fi - \else - \msg{StrA: \StrA}% - \msg{StrB: \StrB}% - \errhelp{Test: #1=#2}% - \errmessage{Test (edef) failed!}% - \fi -} -\Test0abc=\\ -\Test1abc=a\\ -\Test2abc=ab\\ -\Test3abc=abc\\ -\Test3abcd=abc\\ -\Test4abcde=abcd\\ -\Test{10}0123456789X=0123456789\\ -\Test{12}abcdefghijklm=abcdefghijkl\\ -\Test{700}% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -X=% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -0123456789012345678901234567890123456789012345678901234567890123456789% -\\ -\Test{-1}abc=\\ -\Test2\par\par\relax=\par\par\\ -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \subsection{Test \cs{ltx@ifempty}} -% -% \begin{macrocode} -%<*test-ifempty> -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\errorcontextlines=1000 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input ltxcmds.sty\relax -\else - \RequirePackage{ltxcmds}[2016/05/16]% -\fi -\def\msg#{\immediate\write16} -\def\TestY{\Y} -\def\TestN{\N} -\msg{* \string\ltx@ifempty} -\long\def\test#1{% - \begingroup - % Calculate expected test result via macro definition - \def\Stuff{#1}% - \ifx\Stuff\ltx@empty - \def\StuffEmpty{\Y}% - \else - \def\StuffEmpty{\N}% - \fi - % Test \ltx@ifempty - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\TestEmpty - \expandafter\expandafter\expandafter{% - \ltx@ifempty{#1}{\Y}{\N}% - }% - \ifx\StuffEmpty\TestEmpty - \msg{* Test OK}% - \else - \ltx@IfUndefined{detokenize}{}{% - \msg{Stuff: [\detokenize{\Stuff}]}% - }% - \errmessage{Test failed!}% - \fi - \endgroup -} -\test{} -\test{a} -\test{abc} -\test{\par} -\test{ } -\test{\if} -\test{{\if}} -\test{\else} -\test{{\else}} -\test{\fi} -\test{{}\fi} -\test{\or\ifcase} -\test{{}} -\test{{a}} -\test{{}abc} -\test{{\par}} -\test{{}\par} -% \end{macrocode} -% \begin{macrocode} -\def\SpaceTwo#1{% - \def\SpaceTwo{#1#1}% -}\SpaceTwo{ } -\msg{* \string\ltx@ifblank} -\long\def\test#1{% - \begingroup - % Calculate expected test result via macro definition - \def\Stuff{#1}% - \ifx\Stuff\ltx@empty - \def\StuffEmpty{\Y}% - \else - \ifx\Stuff\ltx@space - \def\StuffEmpty{\Y}% - \else - \ifx\Stuff\SpaceTwo - \def\StuffEmpty{\Y}% - \else - \def\StuffEmpty{\N}% - \fi - \fi - \fi - % Test \ltx@ifblank - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\TestEmpty - \expandafter\expandafter\expandafter{% - \ltx@ifblank{#1}{\Y}{\N}% - }% - \ifx\StuffEmpty\TestEmpty - \msg{* Test OK}% - \else - \ltx@IfUndefined{detokenize}{}{% - \msg{Stuff: [\detokenize{\Stuff}]}% - }% - \errmessage{Test failed!}% - \fi - \endgroup -} -\test{} -\test{a} -\test{\if} -\test{\else} -\test{\fi} -\test{ \fi} -\test{\par} -\test{ \par} -\test{{}} -\test{ {}} -\def\x#1{% - \test{#1#1}% - \test{#1#1{}}% - \test{#1#1\par}% - \test{#1#1\else}% -}\x{ } -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \subsection{Test \cs{ltx@zap@space}} -% -% \begin{macrocode} -%<*test-zapspace> -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\errorcontextlines=1000 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input ltxcmds.sty\relax -\else - \RequirePackage{ltxcmds}[2016/05/16]% -\fi -\def\msg#{\immediate\write16} -\def\space{ } -\def\empty{} -\msg{* \string\ltx@zapspace} -\long\def\test#1#2{% - \begingroup - \def\TestInput{#1}% - \def\TestExpected{#2}% - % Test \ltx@zapspace - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\TestResult - \expandafter\expandafter\expandafter{% - \ltx@zapspace{#1}% - }% - \ifx\TestResult\TestExpected - \msg{* Test OK}% - \else - \ltx@onelevel@sanitize\TestInput - \ltx@onelevel@sanitize\TestExpected - \ltx@onelevel@sanitize\TestResult - \msg{* Input: \space\space\space[\TestInput]}% - \msg{ \space Result: \space\space[\TestResult]}% - \msg{ \space Expected: [\TestExpected]}% - \errmessage{Test failed!}% - \fi - \endgroup -} -\long\def\etest#1#2{% - \begingroup - \edef\x{\endgroup - \noexpand\test{#1}{#2}% - }% - \x -} -\catcode`\~=13 % -\let~\noexpand -% \end{macrocode} -% \begin{macrocode} -\test{}{} -\test{{}}{{}} -\test{ {}}{{}} -\test{{ }}{{ }} -\test{{} }{{}} -\test{ {} }{{}} -\test{ { } }{{ }} -\test{a {b} c}{a{b}c} -\test{a bb ccc}{abbccc} -\test{{a} {bb} {ccc}}{{a}{bb}{ccc}} -\test{\par}{\par} -\test{\if}{\if} -\test{\space}{\space} -\etest{\par\space\par}{\par\par} -\etest{~\empty\space~\empty}{~\empty~\empty} -\etest{~\fi\space~\else\space}{~\fi~\else} -% \end{macrocode} -% \begin{macrocode} -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \subsection{Test \cs{ltx@IfBoxEmpty}} -% -% \begin{macrocode} -%<*test-ifboxempty> -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input ltxcmds.sty\relax -\else - \RequirePackage{ltxcmds}[2016/05/16]% -\fi -\def\msg#{\immediate\write16} - % make box 0 void -\begingroup - \setbox0=\box0 % -\endgroup -\ifvoid0 % -\else - \errmessage{Voiding box 0 failed}% -\fi -\setbox2=\box0 % -\def\test#1#2{% - \@test{#1}{#2}% - \@@test{#1}{#2}% - \chardef\x=#1% - \@test\x{#2}% - \@@test\x{#2}% -} -\def\@test#1#2{% - \begingroup - \setbox9=\hbox{% - \def\TestExpected{#2}% - \ltx@IfBoxEmpty{#1}{% - \def\TestResult{Y}% - }{% - \def\TestResult{N}% - }% - \ifx\TestExpected\TestResult - \msg{* Test passed.}% - \else - \errmessage{Test failed!}% - \fi - }% - \ifdim\wd9=0pt % - \else - \errmessage{Unwanted space?}% - \fi - \endgroup -} -\def\@@test#1#2{% - \begingroup - \setbox9=\hbox{% - \def\TestExpected{#2}% - \ifvoid#1\def\TestExpected{Y}\fi - \ltx@IfBoxVoidOrEmpty{#1}{% - \def\TestResult{Y}% - }{% - \def\TestResult{N}% - }% - \ifx\TestExpected\TestResult - \msg{* Test passed.}% - \else - \errmessage{Test failed!}% - \fi - }% - \ifdim\wd9=0pt % - \else - \errmessage{Unwanted space?}% - \fi - \endgroup -} -\test0N -\test2N -\setbox0=\hbox{} -\test0Y -\setbox2=\hbox{} -\test2Y -\setbox0=\vbox{} -\test0Y -\setbox2=\vbox{} -\test0Y -\setbox0=\hbox{ }% -\test0N -\setbox2=\hbox{ }% -\test2N -\setbox0=\hbox{\penalty1}% -\test0N -\setbox2=\hbox{\penalty1}% -\test2N -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \subsection{Test for next character detection} -% -% \begin{macrocode} -%<*test-nextchar> -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input ltxcmds.sty\relax - \input eolgrab.sty\relax -\else - \RequirePackage{ltxcmds}[2016/05/16]% - \RequirePackage{eolgrab}[2011/01/12]% -\fi -\def\msg#{\immediate\write16} -\begingroup - \def\x#1{% - \endgroup - \let\TestSpaceToken= #1\relax - }% -\x{ } -\def\TestSpace{ } -\begingroup - \lccode32=65 % space -> A -\lowercase{% - \endgroup - \def\TestSpaceA{ }% -} -\def\TestCatch{% - \eolgrab\@TestCatch -} -\def\@TestCatch#1{% - \begingroup - \def\x{#1}% - \ifx\x\ltx@empty - \else - \ltx@onelevel@sanitize\x - \errmessage{Unparsed stuff on line [\x]}% - \fi - \endgroup -} -\def\TestCmdM#1{% - \TestCheckType{M}% - \TestCatch -} -\def\TestCmdOM[#1]#2{% - \TestCheckType{O}% - \TestCatch -} -\def\TestCheckType#1{% - \if\TestCmdType#1\relax - \else - \errmessage{Wrong type #1, expected: \TestCmdType}% - \fi -} -\def\TestCmd#1{% - \def\TestCmdType{#1}% - \ltx@ifnextchar[\TestCmdOM\TestCmdM -} -\def\TestCmdExp#1{% - \expandafter\TestCmd\expandafter#1% -} -\outer\def\TestOuter{} -\TestCmd O[o]{m} -\TestCmd M{m} -\TestCmd O [o]{m} -\TestCmd M {m} -\def\x#1{\def\x{#1#1}}\x{ } -\TestCmdExp O\x[o]{m} -\TestCmdExp M\x{m} -\def\x#1{\def\x{#1#1#1#1}}\x{ } -\TestCmdExp O\x[o]{m} -\TestCmdExp M\x{m} -\def\x{\TestSpaceToken} -\TestCmdExp O\x[o]{m} -\TestCmdExp M\x{m} -\def\x{\TestSpaceToken\TestSpaceToken\TestSpaceToken} -\TestCmdExp O\x[o]{m} -\TestCmdExp M\x{m} -\TestCmd M\TestSpace -\TestOuter -\TestCmd M \TestSpace -\TestOuter -\TestCmd M\iftrue -\TestOuter -\TestCmd M\iffalse -\TestOuter -\TestCmd M\else -\TestOuter -\TestCmd M\fi -\TestOuter -\TestCmd M \iftrue -\TestOuter -\TestCmd M \iffalse -\TestOuter -\TestCmd M \else -\TestOuter -% -\def\TestCmd#1{% - \def\TestCmdType{#1}% - \ltx@ifnextchar@nospace[\TestCmdOM\TestCmdM -} -\TestCmd O[o]{m} -\TestCmd M{m} -\TestCmd M [ -\TestOuter -\TestCmd M {m} -\TestCmd M\iftrue -\TestOuter -\TestCmd M\iffalse -\TestOuter -\TestCmd M\else -\TestCmd M\fi -\TestOuter -\TestOuter -% -\def\TestCmd#1{% - \def\TestCmdType{#1}% - \ltx@ifnextchar(\TestCmdPM\TestCmdM -} -\def\TestCmdPM(#1)#2{% - \TestCheckType{P}% - \TestCatch -} -\TestCmd P(p){m} -\TestCmd M{m} -\TestCmd P (p){m} -\TestCmd M {m} -% -\def\TestCmd#1{% - \def\TestCmdType{#1}% - \ltx@ifnextchar{ }\TestCmdSM\TestCmdM -} -\def\TestCmdSM#1#{% - \TestCheckType{S}% - \begingroup - \let\x= #1\relax - \ifx\x\TestSpaceToken - \else - \errmessage{unexpected space token: \meaning#1}% - \fi - \endgroup - \def\TestCmdType{M}% - \TestCmdM -} -\TestCmd S {m} -\TestCmd M{m} -\def\x#1{\def\x{#1#1}}\x{ } -\TestCmdExp S\x{m} -% -\def\TestCmd#1{% - \def\TestCmdType{#1}% - \ltx@ifnextchar\iffalse\TestCmdIM\TestCmdM -} -\def\TestCmdIM\iffalse#1{% - \TestCheckType{I}% - \TestCatch -} -\TestCmd M\iftrue -\TestOuter -\TestCmd M \iftrue -\TestCmd I\iffalse\iffalse -\TestCmd I \iffalse\iffalse -\TestOuter -% -\def\TestCmd#1{% - \def\TestCmdType{#1}% - \ltx@ifnextchar@nospace\iffalse\TestCmdIM\TestCmdM -} -\TestCmd M\iftrue -\TestOuter -\TestCmd I\iffalse\iffalse -\TestOuter -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \subsection{Test for list helpers} -% -% \begin{macrocode} -%<*test-carcdr> -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input ltxcmds.sty\relax - \input eolgrab.sty\relax -\else - \RequirePackage{ltxcmds}[2016/05/16]% - \RequirePackage{eolgrab}[2011/01/12]% -\fi -\def\msg#{\immediate\write16} -\def\space{ } -\long\def\Test#1#2#3{% - \begingroup - \def\TestExpected{#3}% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\TestResult - \expandafter\expandafter\expandafter{% - #1#2\@nil - }% - \ifx\TestResult\TestExpected - \else - \msg{\string\TestExpected: [\meaning\TestExpected]}% - \msg{\string\TestResult: \space\space[\meaning\TestResult]}% - \errmessage{Test failed!}% - \fi - \endgroup -} -\Test\ltx@carzero{abc}{} -\Test\ltx@carzero{}{} -\Test\ltx@carzero{\par\par}{} -\Test\ltx@cdrzero{}{} -\Test\ltx@cdrzero{abc}{abc} -\Test\ltx@cdrzero{ \par}{ \par} -\Test\ltx@cdrzero{\@empty}{\@empty} -\Test\ltx@cdrzero{{}}{{}} -\Test\ltx@car{abc}{a} -\Test\ltx@car{\par}{\par} -\Test\ltx@cdr{abc}{bc} -\Test\ltx@cdr{a \par}{ \par} -\Test\ltx@cdr{a\@empty}{\@empty} -\Test\ltx@cartwo{abc}{ab} -\Test\ltx@cartwo{\par\@empty}{\par\@empty} -\Test\ltx@carsecond{abc}{b} -\Test\ltx@carsecond{\@empty b\@empty}{b} -\Test\ltx@carsecond{\par\par\par}{\par} -\Test\ltx@cdrtwo{abc}{c} -\Test\ltx@cdrtwo{ab \par}{ \par} -\Test\ltx@cdrtwo{ab\@empty}{\@empty} -\Test\ltx@cdrtwo{ab{}}{{}} -\Test\ltx@cdrthree{abcdefg}{defg} -\Test\ltx@cdrfour{abcdefg}{efg} -\Test{\ltx@CdrNum{5}}{abcdefg}{fg} -\Test{\ltx@CdrNum{0}}{\par}{\par} -\Test{\ltx@CdrNum{0}}{\@empty}{\@empty} -\Test{\ltx@CdrNum{0}}{{}}{{}} -\Test{\ltx@CdrNum{0}}{ }{ } -\Test{\ltx@CdrNum{2}}{abcd}{cd} -\Test{\ltx@CdrNum{2}}{\vbox\par\hbox\par}{\hbox\par} -\Test{\ltx@carthree}{abcdefg}{abc} -\Test{\ltx@carfour}{abcdefg}{abcd} -\Test{\ltx@CarNum{5}}{abcdefg}{abcde} -\Test{\ltx@CarNum{2}}{\@empty\par}{\@empty\par} -\Test\ltx@carthird{abcdefg}{c} -\Test\ltx@carfourth{abcdefg}{d} -\Test{\ltx@CarNumth{5}}{abcdefg}{e} -\Test{\ltx@CarNumth{2}}{\@empty\@empty\@empty}{\@empty} -\Test{\ltx@CarNumth{2}}{\par\par\par}{\par} -\Test{\ltx@CarNumth{2}}{ab}{b} -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -2955,13 +2085,6 @@ X=% % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % ltxcmds.sty & tex/generic/oberdiek/ltxcmds.sty\\ % ltxcmds.pdf & doc/latex/oberdiek/ltxcmds.pdf\\ -% test/ltxcmds-test1.tex & doc/latex/oberdiek/test/ltxcmds-test1.tex\\ -% test/ltxcmds-test-gobble.tex & doc/latex/oberdiek/test/ltxcmds-test-gobble.tex\\ -% test/ltxcmds-test-ifempty.tex & doc/latex/oberdiek/test/ltxcmds-test-ifempty.tex\\ -% test/ltxcmds-test-zapspace.tex & doc/latex/oberdiek/test/ltxcmds-test-zapspace.tex\\ -% test/ltxcmds-test-ifboxempty.tex & doc/latex/oberdiek/test/ltxcmds-test-ifboxempty.tex\\ -% test/ltxcmds-test-nextchar.tex & doc/latex/oberdiek/test/ltxcmds-test-nextchar.tex\\ -% test/ltxcmds-test-carcdr.tex & doc/latex/oberdiek/test/ltxcmds-test-carcdr.tex\\ % ltxcmds.dtx & source/latex/oberdiek/ltxcmds.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/ltxcmds.pdf b/macros/latex/contrib/oberdiek/ltxcmds.pdf index 56d0939d06..5ad2de5379 100644 Binary files a/macros/latex/contrib/oberdiek/ltxcmds.pdf and b/macros/latex/contrib/oberdiek/ltxcmds.pdf differ diff --git a/macros/latex/contrib/oberdiek/mleftright.dtx b/macros/latex/contrib/oberdiek/mleftright.dtx deleted file mode 100644 index 5d7f837cae..0000000000 --- a/macros/latex/contrib/oberdiek/mleftright.dtx +++ /dev/null @@ -1,943 +0,0 @@ -% \iffalse meta-comment -% -% File: mleftright.dtx -% Version: 2016/05/16 v1.1 -% Info: Math left/right delim. as open/close -% -% Copyright (C) -% 2010 Heiko Oberdiek -% 2016-2019 Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either -% version 1.3c of this license or (at your option) any later -% version. This version of this license is in -% https://www.latex-project.org/lppl/lppl-1-3c.txt -% and the latest version of this license is in -% https://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of -% LaTeX version 2005/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% The Current Maintainers of this work are -% Heiko Oberdiek and the Oberdiek Package Support Group -% https://github.com/ho-tex/oberdiek/issues -% -% The Base Interpreter refers to any `TeX-Format', -% because some files are installed in TDS:tex/generic//. -% -% This work consists of the main source file mleftright.dtx -% and the derived files -% mleftright.sty, mleftright.pdf, mleftright.ins, mleftright.drv, -% mleftright-test1.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/mleftright.dtx -% CTAN:macros/latex/contrib/oberdiek/mleftright.pdf -% -% Unpacking: -% (a) If mleftright.ins is present: -% tex mleftright.ins -% (b) Without mleftright.ins: -% tex mleftright.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{mleftright.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If mleftright.drv is present: -% latex mleftright.drv -% (b) Without mleftright.drv: -% latex mleftright.dtx; ... -% The class ltxdoc loads the configuration file ltxdoc.cfg -% if available. Here you can specify further options, e.g. -% use A4 as paper format: -% \PassOptionsToClass{a4paper}{article} -% -% Programm calls to get the documentation (example): -% pdflatex mleftright.dtx -% makeindex -s gind.ist mleftright.idx -% pdflatex mleftright.dtx -% makeindex -s gind.ist mleftright.idx -% pdflatex mleftright.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/mleftright.sty -% TDS:doc/latex/oberdiek/mleftright.pdf -% TDS:doc/latex/oberdiek/test/mleftright-test1.tex -% TDS:source/latex/oberdiek/mleftright.dtx -% -%<*ignore> -\begingroup - \catcode123=1 % - \catcode125=2 % - \def\x{LaTeX2e}% -\expandafter\endgroup -\ifcase 0\ifx\install y1\fi\expandafter - \ifx\csname processbatchFile\endcsname\relax\else1\fi - \ifx\fmtname\x\else 1\fi\relax -\else\csname fi\endcsname -% -%<*install> -\input docstrip.tex -\Msg{************************************************************************} -\Msg{* Installation} -\Msg{* Package: mleftright 2016/05/16 v1.1 Math left/right delim. as open/close (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: mleftright -Version: 2016/05/16 v1.1 - -Copyright (C) - 2010 Heiko Oberdiek - 2016-2019 Oberdiek Package Support Group - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either -version 1.3c of this license or (at your option) any later -version. This version of this license is in - https://www.latex-project.org/lppl/lppl-1-3c.txt -and the latest version of this license is in - https://www.latex-project.org/lppl.txt -and version 1.3 or later is part of all distributions of -LaTeX version 2005/12/01 or later. - -This work has the LPPL maintenance status "maintained". - -The Current Maintainers of this work are -Heiko Oberdiek and the Oberdiek Package Support Group -https://github.com/ho-tex/oberdiek/issues - - -The Base Interpreter refers to any `TeX-Format', -because some files are installed in TDS:tex/generic//. - -This work consists of the main source file mleftright.dtx -and the derived files - mleftright.sty, mleftright.pdf, mleftright.ins, mleftright.drv, - mleftright-test1.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{mleftright.ins}{\from{mleftright.dtx}{install}}% - \file{mleftright.drv}{\from{mleftright.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{mleftright.sty}{\from{mleftright.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{mleftright-test1.tex}{\from{mleftright.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{mleftright.xml}{\from{mleftright.dtx}{catalogue}}% -} - -\catcode32=13\relax% active space -\let =\space% -\Msg{************************************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* file into a directory searched by TeX:} -\Msg{*} -\Msg{* mleftright.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `mleftright.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{mleftright.drv}% - [2016/05/16 v1.1 Math left/right delim. as open/close (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\usepackage{mleftright}[2016/05/16] -\begin{document} - \DocInput{mleftright.dtx}% -\end{document} -% -% \fi -% -% -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% -% \GetFileInfo{mleftright.drv} -% -% \title{The \xpackage{mleftright} package} -% \date{2016/05/16 v1.1} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% \TeX\ sets subformulas by \cs{left} and \cs{right} as inner formulas -% with additional surrounding spaces in some situations. This package -% provides \cs{mleft} and \cs{mright} that call \cs{left} and \cs{right}, -% but the delimiters will act as normal \cs{mathopen} and \cs{mathclose} -% delimiters without the additional space of an inner formula. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% The package is a result of a thread in the newsgroup \textsf{comp.text.tex} -% with the subject \textit{spacing after \cs{right}\texttt{)} -% and before \cs{left}\texttt{)}} \cite{dave}. -% The problem: \cs{left} and \cs{right} adjust the size of the -% delimiters automatically. However, \TeX\ treats the whole expression -% as inner formula. In some circumstances \TeX\ adds extra space -% before or after an inner formula. -% Example: -% \begin{quote} -% \thinmuskip=1.5\thinmuskip -% \begin{tabular}{@{}l@{\quad$\Rightarrow$\quad}l@{}} -% |$\sin(x^2), x$| -% & $\sin(x^2), x$\\ -% |$\sin\left(x^2\right), x$| -% & $\sin\left(x^2\right), x$\\ -% ^^A \multicolumn{1}{@{}r@{\quad$\Rightarrow$\quad}}{^^A -% ^^A \itshape with exaggerated spacing^^A -% ^^A } -% ^^A & $\thinmuskip=4\thinmuskip -% ^^A \sin\left(x^2\right){,}\mskip.25\thinmuskip x$\\ -% |$\sin\mleft(x^2\mright), x$| -% & $\sin\mleft(x^2\mright), x$\\ -% \end{tabular}\\*[.5ex] -% (\cs{mleft} and \cs{mright} are provided by this package.) -% \end{quote} -% -% In the newsgroup Donald Arseneau answered with clever macros \cite{arseneau}: -% \begin{quote} -%\begin{verbatim} -%\newcommand\lft{\mathopen{}\left} -%\newcommand\rgt{\aftergroup\mathclose\aftergroup{\aftergroup}\right} -%\end{verbatim} -% \end{quote} -% However one problem remains, a following subscript or superscript -% is not applied to the right delimiter but the empty -% \cs{mathclose}. -% Thus Philipp Stephani provided an improvement \cite{stephani}: -%\begin{quote} -%\begin{verbatim} -%\mathopen{} \mathclose{\left\| A^2 \right\|}_2 -%\end{verbatim} -%\end{quote} -% Heiko Oberdiek converted this into macro form \cite{oberdiek}: -%\begin{quote} -%\begin{verbatim} -%\newcommand\lft{\mathopen{}\mathclose\bgroup\left} -%\newcommand\rgt{\aftergroup\egroup\right} -%\end{verbatim} -%\end{quote} -% -% The package uses longer macro names \cs{mleft} and \cs{mright} -% to avoid name clashes. Also it adds some checks for error conditions. -% -% \subsection{Use} -% -% \begin{declcs}{mleft}\meta{delimL} \dots\unkern\ \cs{mright}\meta{delimR} -% \end{declcs} -% Macros \cs{mleft} and \cs{mright} are used in the same way as -% \cs{left} and \cs{right}. Also \cs{middle} can be used inbetween if -% \eTeX\ is present. -% -% \begin{declcs}{mleftright} -% \end{declcs} -% Macro \cs{mleftright} redefines \cs{left} as \cs{mleft} and -% \cs{right} as \cs{mright}. The redefinition is local to the group. -% -% \begin{declcs}{mleftrightrestore} -% \end{declcs} -% Macro \cs{mleftright} restores \cs{left} and \cs{right} with -% the original meaning if they were previously redefined by -% \cs{mleftright} (also locally). -% -% -% \StopEventually{ -% } -% -% \section{Implementation} -% \begin{macrocode} -%<*package> -% \end{macrocode} -% Reload check, especially if the package is not used with \LaTeX. -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode58=12 % : - \catcode64=11 % @ - \catcode123=1 % { - \catcode125=2 % } - \expandafter\let\expandafter\x\csname ver@mleftright.sty\endcsname - \ifx\x\relax % plain-TeX, first loading - \else - \def\empty{}% - \ifx\x\empty % LaTeX, first loading, - % variable is initialized, but \ProvidesPackage not yet seen - \else - \expandafter\ifx\csname PackageInfo\endcsname\relax - \def\x#1#2{% - \immediate\write-1{Package #1 Info: #2.}% - }% - \else - \def\x#1#2{\PackageInfo{#1}{#2, stopped}}% - \fi - \x{mleftright}{The package is already loaded}% - \aftergroup\endinput - \fi - \fi -\endgroup% -% \end{macrocode} -% Package identification: -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode35=6 % # - \catcode39=12 % ' - \catcode40=12 % ( - \catcode41=12 % ) - \catcode44=12 % , - \catcode45=12 % - - \catcode46=12 % . - \catcode47=12 % / - \catcode58=12 % : - \catcode64=11 % @ - \catcode91=12 % [ - \catcode93=12 % ] - \catcode123=1 % { - \catcode125=2 % } - \expandafter\ifx\csname ProvidesPackage\endcsname\relax - \def\x#1#2#3[#4]{\endgroup - \immediate\write-1{Package: #3 #4}% - \xdef#1{#4}% - }% - \else - \def\x#1#2[#3]{\endgroup - #2[{#3}]% - \ifx#1\@undefined - \xdef#1{#3}% - \fi - \ifx#1\relax - \xdef#1{#3}% - \fi - }% - \fi -\expandafter\x\csname ver@mleftright.sty\endcsname -\ProvidesPackage{mleftright}% - [2016/05/16 v1.1 Math left/right delim. as open/close (HO)]% -% \end{macrocode} -% -% \begin{macrocode} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname mleftright@AtEnd\endcsname{% - \endlinechar=\the\endlinechar\relax - \catcode13=\the\catcode13\relax - \catcode32=\the\catcode32\relax - \catcode35=\the\catcode35\relax - \catcode61=\the\catcode61\relax - \catcode64=\the\catcode64\relax - \catcode123=\the\catcode123\relax - \catcode125=\the\catcode125\relax - }% - }% -\x\catcode61\catcode48\catcode32=10\relax% -\catcode13=5 % ^^M -\endlinechar=13 % -\catcode35=6 % # -\catcode64=11 % @ -\catcode123=1 % { -\catcode125=2 % } -\def\TMP@EnsureCode#1#2{% - \edef\mleftright@AtEnd{% - \mleftright@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{38}{4}% & -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{40}{12}% ( -\TMP@EnsureCode{41}{12}% ) -\TMP@EnsureCode{42}{12}% * -\TMP@EnsureCode{43}{12}% + -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\edef\mleftright@AtEnd{% - \mleftright@AtEnd - \escapechar\the\escapechar\relax - \noexpand\endinput -} -\escapechar=92 % -% \end{macrocode} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input infwarerr.sty\relax - \input ltxcmds.sty\relax -\else - \RequirePackage{infwarerr}[2010/04/08]% - \RequirePackage{ltxcmds}[2010/04/26]% -\fi -% \end{macrocode} -% -% The original commands \cs{left} and \cs{right} -% are saved and later used in \cs{mleft} and -% \cs{mright} in order to deal with: -% \begin{quote} -%\begin{verbatim} -%\let\left\mleft -%\let\right\mright -%\end{verbatim} -% \end{quote} -% \begin{macro}{\mleftright@OrgLeft} -% \begin{macrocode} -\let\mleftright@OrgLeft\left -% \end{macrocode} -% \end{macro} -% \begin{macro}{\mleftright@OrgRight} -% \begin{macrocode} -\let\mleftright@OrgRight\right -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\mleftright@Def} -% Macro \cs{mleftright@Def} defines a macro as robust macro -% if \eTeX\ or \LaTeX\ is available. -% \begin{macrocode} -\ltx@IfUndefined{protected}{% - \ltx@IfUndefined{DeclareRobustCommand}{% - \def\mleftright@Def{\def}% - }{% - \def\mleftright@Def{\DeclareRobustCommand*}% - }% -}{% - \def\mleftright@Def{\protected\def}% -} -\edef\mleftright@Def#1{% - \noexpand\ltx@IfUndefined{% - \noexpand\expandafter\noexpand\ltx@gobble\noexpand\string#1% - }{% - \expandafter\noexpand\mleftright@Def#1% - }{% - \noexpand\@PackageError{mleftright}{% - Command \noexpand\string#1 already defined% - }\noexpand\@ehd - \noexpand\ltx@gobble - }% -} -% \end{macrocode} -% \end{macro} -% -% In case of \eTeX\ the group status after the left symbol -% is saved and later checked at the beginning of \cs{mright}. -% \begin{macrocode} -\ltx@IfUndefined{currentgrouplevel}{% - \catcode38=14 % & = comment -}{% - \catcode38=9 % & = ignore -} -% \end{macrocode} -% -% \begin{macro}{\mleftright@GroupLevel} -% \begin{macrocode} -& \def\mleftright@GroupLevel{-1}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\mleftright@WrongGroup} -% \begin{macrocode} -& \def\mleftright@WrongGroup#1(#2){% -& \ifnum\mleftright@GroupLevel<\ltx@zero -& \@PackageError{mleftright}{% -& Missing previous \string\mleft -& }\@ehc -& \else -& \@PackageError{mleftright}{% -& Unexpected group status for \string\mright% -& \ifnum\mleftright@GroupLevel=#1 % -& \else -& .\MessageBreak -& Group level is #1, % -& expected is \mleftright@GroupLevel -& \fi -& \ifnum16=#2 % -& \else -& .\MessageBreak -& Group type is #2 (% -& \ifcase#2 % -& bottom level% -& \expandafter\expandafter\expandafter\ltx@gobblefour -& \expandafter\ltx@gobbletwo -& \or simple% -& \or hbox% -& \or adjusted hbox% -& \or vbox% -& \or vtop% -& \or align% -& \or no align% -& \or output% -& \or math% -& \or disc% -& \or insert% -& \or vcenter% -& \or math choice% -& \or semi simple% -& \or math shift% -& \or math left% -& \else -& unknown% -& \fi -& \space group),\MessageBreak -& expected is 16 (math left group)% -& \fi -& }\@ehd -& \fi -& }% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\mleft} -% \begin{macrocode} -\mleftright@Def\mleft{% - \mathopen{}\mathclose\bgroup -& \edef\mleftright@GroupLevel{\the\numexpr\the\currentgrouplevel+1}% - \mleftright@OrgLeft -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\mright} -% \begin{macrocode} -\mleftright@Def\mright{% -& \ifnum\mleftright@GroupLevel=\currentgrouplevel -& \ifnum16=\currentgrouptype - \aftergroup\egroup -& \else -& \expandafter\mleftright@WrongGroup -& \the\expandafter\currentgrouplevel -& \expandafter(\the\currentgrouptype)% -& \fi -& \else -& \expandafter\mleftright@WrongGroup -& \the\expandafter\currentgrouplevel -& \expandafter(\the\currentgrouptype)% -& \fi - \mleftright@OrgRight -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\mleftright} -% \begin{macrocode} -\mleftright@Def\mleftright{% - \let\left\mleft - \let\right\mright -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\mleftrightrestore} -% \begin{macrocode} -\mleftright@Def\mleftrightrestore{% - \ifx\left\mleft - \let\left\mleftright@OrgLeft - \fi - \ifx\right\mright - \let\right\mleftright@OrgRight - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\mleftright@AtEnd% -% -% \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input mleftright.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{mleftright}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/mleftright.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/mleftright.pdf}] Documentation. -% \end{description} -% -% -% \paragraph{Bundle.} All the packages of the bundle `oberdiek' -% are also available in a TDS compliant ZIP archive. There -% the packages are already unpacked and the documentation files -% are generated. The files and directories obey the TDS standard. -% \begin{description} -% \item[\CTANinstall{install/macros/latex/contrib/oberdiek.tds.zip}] -% \end{description} -% \emph{TDS} refers to the standard ``A Directory Structure -% for \TeX\ Files'' (\CTANpkg{tds}). Directories -% with \xfile{texmf} in their name are usually organized this way. -% -% \subsection{Bundle installation} -% -% \paragraph{Unpacking.} Unpack the \xfile{oberdiek.tds.zip} in the -% TDS tree (also known as \xfile{texmf} tree) of your choice. -% Example (linux): -% \begin{quote} -% |unzip oberdiek.tds.zip -d ~/texmf| -% \end{quote} -% -% \subsection{Package installation} -% -% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting -% \docstrip\ archive. The files are extracted by running the -% \xfile{.dtx} through \plainTeX: -% \begin{quote} -% \verb|tex mleftright.dtx| -% \end{quote} -% -% \paragraph{TDS.} Now the different files must be moved into -% the different directories in your installation TDS tree -% (also known as \xfile{texmf} tree): -% \begin{quote} -% \def\t{^^A -% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} -% mleftright.sty & tex/generic/oberdiek/mleftright.sty\\ -% mleftright.pdf & doc/latex/oberdiek/mleftright.pdf\\ -% test/mleftright-test1.tex & doc/latex/oberdiek/test/mleftright-test1.tex\\ -% mleftright.dtx & source/latex/oberdiek/mleftright.dtx\\ -% \end{tabular}^^A -% }^^A -% \sbox0{\t}^^A -% \ifdim\wd0>\linewidth -% \begingroup -% \advance\linewidth by\leftmargin -% \advance\linewidth by\rightmargin -% \edef\x{\endgroup -% \def\noexpand\lw{\the\linewidth}^^A -% }\x -% \def\lwbox{^^A -% \leavevmode -% \hbox to \linewidth{^^A -% \kern-\leftmargin\relax -% \hss -% \usebox0 -% \hss -% \kern-\rightmargin\relax -% }^^A -% }^^A -% \ifdim\wd0>\lw -% \sbox0{\small\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\footnotesize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\scriptsize\t}^^A -% \ifdim\wd0>\linewidth -% \ifdim\wd0>\lw -% \sbox0{\tiny\t}^^A -% \ifdim\wd0>\linewidth -% \lwbox -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \else -% \lwbox -% \fi -% \else -% \usebox0 -% \fi -% \end{quote} -% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's -% TDS installing feature, then some files can already be in the right -% place, see the documentation of \docstrip. -% -% \subsection{Refresh file name databases} -% -% If your \TeX~distribution -% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh -% these. For example, \TeX\,Live\ users run \verb|texhash| or -% \verb|mktexlsr|. -% -% \subsection{Some details for the interested} -% -% \paragraph{Unpacking with \LaTeX.} -% The \xfile{.dtx} chooses its action depending on the format: -% \begin{description} -% \item[\plainTeX:] Run \docstrip\ and extract the files. -% \item[\LaTeX:] Generate the documentation. -% \end{description} -% If you insist on using \LaTeX\ for \docstrip\ (really, -% \docstrip\ does not need \LaTeX), then inform the autodetect routine -% about your intention: -% \begin{quote} -% \verb|latex \let\install=y\input{mleftright.dtx}| -% \end{quote} -% Do not forget to quote the argument according to the demands -% of your shell. -% -% \paragraph{Generating the documentation.} -% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate -% the documentation. The process can be configured by the -% configuration file \xfile{ltxdoc.cfg}. For instance, put this -% line into this file, if you want to have A4 as paper format: -% \begin{quote} -% \verb|\PassOptionsToClass{a4paper}{article}| -% \end{quote} -% An example follows how to generate the -% documentation with pdf\LaTeX: -% \begin{quote} -%\begin{verbatim} -%pdflatex mleftright.dtx -%makeindex -s gind.ist mleftright.idx -%pdflatex mleftright.dtx -%makeindex -s gind.ist mleftright.idx -%pdflatex mleftright.dtx -%\end{verbatim} -% \end{quote} -% -% \section{Acknowledgement} -% -% \begin{description} -% \item[Donald Arsenau:] -% He provided the main trick and the first macros. -% \item[Philipp Stephani:] -% He solved the subscript problem. -% \end{description} -% -% \begin{thebibliography}{9} -% \raggedright -% \bibitem{dave} -% Dave94705, -% \textit{spacing after \cs{right}\texttt{)} and before \cs{left}\texttt{)}}, -% newsgroup comp.text.tex, -% Message-ID: \texttt{\small 5d264909-7c3d-4c9d-9b22-434178b2bf90@g21g2000prn.googlegroups.com}, -% 2010-08-12. -% \newblock -% {\small\url{https://groups.google.com/group/comp.text.tex/msg/e5b6833da7dc29bf}} -% -% \bibitem{arseneau} -% Donald Arseneau, -% \textit{Re: spacing after \cs{right}\texttt) and before \cs{left}\texttt)}, -% newsgroup comp.text.tex, -% Message-ID: \texttt{\small yfivd6svl8y.fsf@mutant.triumf.ca}, -% 2010-08-30. -% \newblock -% {\small\url{https://groups.google.com/group/comp.text.tex/msg/e0b2e4386e5d04e4}} -% -% \bibitem{stephani} -% Philipp Stephani, -% \textit{Re: spacing after \cs{right}\texttt) and before \cs{left}\texttt)}, -% newsgroup comp.text.tex, -% Message-ID: \texttt{\small 4c8c8c1e\$0\$6981\$9b4e6d93@newsspool4.arcor-online.net}, -% 2010-09-12. -% \newblock -% {\small\url{https://groups.google.com/group/comp.text.tex/msg/87ac1f61321de3ef}} -% -% \bibitem{oberdiek} -% Heiko Oberdiek, -% \textit{Re: spacing after \cs{right}\texttt) and before \cs{left}\texttt)}, -% newsgroup comp.text.tex, -% Message-ID: \texttt{\small i6jcc2\$8of\$1@news.eternal-september.org}, -% 2010-09-12. -% \newblock -% {\small\url{https://groups.google.com/group/comp.text.tex/msg/257aa6119bef878b}} -% -% \end{thebibliography} -% -% \begin{History} -% \begin{Version}{2010/09/25 v1.0} -% \item -% The first version. -% \end{Version} -% \begin{Version}{2016/05/16 v1.1} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/mleftright.pdf b/macros/latex/contrib/oberdiek/mleftright.pdf deleted file mode 100644 index 342e977b20..0000000000 Binary files a/macros/latex/contrib/oberdiek/mleftright.pdf and /dev/null differ diff --git a/macros/latex/contrib/oberdiek/oberdiek-bundle.bib b/macros/latex/contrib/oberdiek/oberdiek-bundle.bib new file mode 100644 index 0000000000..8699846e18 --- /dev/null +++ b/macros/latex/contrib/oberdiek/oberdiek-bundle.bib @@ -0,0 +1,497 @@ +@manual{oberdiek:accsupp, + title={The accsupp package}, + author={Heiko Oberdiek}, + date={2018-03-28}, + version={0.5}, + url={https://ctan.org/pkg/accsupp}, +} +@manual{oberdiek:aliascnt, + title={The aliascnt package}, + author={Heiko Oberdiek}, + date={2018-09-07}, + version={1.5}, + url={https://ctan.org/pkg/aliascnt}, +} +@manual{oberdiek:alphalph, + title={The alphalph package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={2.5}, + url={https://ctan.org/pkg/alphalph}, +} +@manual{oberdiek:askinclude, + title={The askinclude package}, + author={Pablo A. Straub and Heiko Oberdiek}, + date={2018-11-01}, + version={2.4}, + url={https://ctan.org/pkg/askinclude}, +} +@manual{oberdiek:atbegshi, + title={The atbegshi package}, + author={Heiko Oberdiek}, + date={2016-06-09}, + version={1.18}, + url={https://ctan.org/pkg/atbegshi}, +} +@manual{oberdiek:atenddvi, + title={The atenddvi package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.2}, + url={https://ctan.org/pkg/atenddvi}, +} +@manual{oberdiek:atveryend, + title={The atveryend package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.9}, + url={https://ctan.org/pkg/atveryend}, +} +@manual{oberdiek:auxhook, + title={The auxhook package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/auxhook}, +} +@manual{oberdiek:bigintcalc, + title={The bigintcalc package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/bigintcalc}, +} +@manual{oberdiek:bitset, + title={The bitset package}, + author={Heiko Oberdiek}, + date={2016/05/16}, + version={1.2}, + url={https://ctan.org/pkg/bitset}, +} +@manual{oberdiek:bmpsize, + title={The bmpsize package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.7}, + url={https://ctan.org/pkg/bmpsize}, +} +@manual{oberdiek:catchfile, + title={The catchfile package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.7}, + url={https://ctan.org/pkg/catchfile}, +} +@manual{oberdiek:centernot, + title={The centernot package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/centernot}, +} +@manual{oberdiek:chemarr, + title={The chemarr package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/chemarr}, +} +@manual{oberdiek:classlist, + title={The classlist package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.5}, + url={https://ctan.org/pkg/classlist}, +} +@manual{oberdiek:colonequals, + title={The colonequals package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/colonequals}, +} +@manual{oberdiek:dvipscol, + title={The dvipscol package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/dvipscol}, +} +@manual{oberdiek:engord, + title={The engord package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.9}, + url={https://ctan.org/pkg/engord}, +} +@manual{oberdiek:enparen, + title={The enparen package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/enparen}, +} +@manual{oberdiek:eolgrab, + title={The eolgrab package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/eolgrab}, +} +@manual{oberdiek:etexcmds, + title={The etexcmds package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.6}, + url={https://ctan.org/pkg/etexcmds}, +} +@manual{oberdiek:fibnum, + title={The fibnum package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/fibnum}, +} +@manual{oberdiek:flags, + title={The flags package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={0.5}, + url={https://ctan.org/pkg/flags}, +} +@manual{oberdiek:gettitlestring, + title={The gettitlestring package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.5}, + url={https://ctan.org/pkg/gettitlestring}, +} +@manual{oberdiek:hologo, + title={The hologo package}, + author={Heiko Oberdiek}, + date={2017-05-01}, + version={1.13}, + url={https://ctan.org/pkg/hologo}, +} +@manual{oberdiek:holtxdoc, + title={The holtxdoc package}, + author={Heiko Oberdiek}, + date={2019-11-12}, + version={0.29}, + url={https://ctan.org/pkg/holtxdoc}, +} +@manual{oberdiek:hopatch, + title={The hopatch package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/hopatch}, +} +@manual{oberdiek:hycolor, + title={The hycolor package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.8}, + url={https://ctan.org/pkg/hycolor}, +} +@manual{oberdiek:hypbmsec, + title={The hypbmsec package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={2.5}, + url={https://ctan.org/pkg/hypbmsec}, +} +@manual{oberdiek:hypcap, + title={The hypcap package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.12}, + url={https://ctan.org/pkg/hypcap}, +} +@manual{oberdiek:hypdestopt, + title={The hypdestopt package}, + author={Heiko Oberdiek}, + date={2016-05-21}, + version={2.5}, + url={https://ctan.org/pkg/hypdestopt}, +} +@manual{oberdiek:hypdoc, + title={The hypdoc package}, + author={Heiko Oberdiek}, + date={2018-09-07}, + version={1.14}, + url={https://ctan.org/pkg/hypdoc}, +} +@manual{oberdiek:hypgotoe, + title={The hypgotoe package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={0.2}, + url={https://ctan.org/pkg/hypgotoe}, +} +@manual{oberdiek:hyphsubst, + title={The hyphsubst package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={0.3}, + url={https://ctan.org/pkg/hyphsubst}, +} +@manual{oberdiek:ifdraft, + title={The ifdraft package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/ifdraft}, +} +@manual{oberdiek:iflang, + title={The iflang package}, + author={Heiko Oberdiek}, + date={2018-01-21}, + version={1.7}, + url={https://ctan.org/pkg/iflang}, +} +@manual{oberdiek:intcalc, + title={The intcalc package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.2}, + url={https://ctan.org/pkg/intcalc}, +} +@manual{oberdiek:kvdefinekeys, + title={The kvdefinekeys package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/kvdefinekeys}, +} +@manual{oberdiek:kvsetkeys, + title={The kvsetkeys package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.17}, + url={https://ctan.org/pkg/kvsetkeys}, +} +@manual{oberdiek:listingsutf8, + title={The listingsutf8 package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/listingsutf8}, +} +@manual{oberdiek:ltxcmds, + title={The ltxcmds package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.23}, + url={https://ctan.org/pkg/ltxcmds}, +} +@manual{oberdiek:pagegrid, + title={The pagegrid package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.5}, + url={https://ctan.org/pkg/pagegrid}, +} +@manual{oberdiek:pagesel, + title={The pagesel package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.9}, + url={https://ctan.org/pkg/pagesel}, +} +@manual{oberdiek:pdfcol, + title={The pdfcol package}, + author={Heiko Oberdiek}, + date={2018-11-01}, + version={1.5}, + url={https://ctan.org/pkg/pdfcol}, +} +@manual{oberdiek:pdfcolfoot, + title={The pdfcolfoot package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/pdfcolfoot}, +} +@manual{oberdiek:pdfcolparallel, + title={The pdfcolparallel package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/pdfcolparallel}, +} +@manual{oberdiek:pdfcolparcolumns, + title={The pdfcolparcolumns package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/pdfcolparcolumns}, +} +@manual{oberdiek:pdfcrypt, + title={The pdfcrypt package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/pdfcrypt}, +} +@manual{oberdiek:pdfescape, + title={The pdfescape package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.14}, + url={https://ctan.org/pkg/pdfescape}, +} +@manual{oberdiek:pdflscape, + title={The pdflscape package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={0.11}, + url={https://ctan.org/pkg/pdflscape}, +} +@manual{oberdiek:pdfrender, + title={The pdfrender package}, + author={Heiko Oberdiek}, + date={2018-11-01}, + version={1.5}, + url={https://ctan.org/pkg/pdfrender}, +} +@manual{oberdiek:picture, + title={The picture package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/picture}, +} +@manual{oberdiek:pmboxdraw, + title={The pmboxdraw package}, + author={Heiko Oberdiek}, + date={2019-02-28}, + version={1.3}, + url={https://ctan.org/pkg/pmboxdraw}, +} +@manual{oberdiek:protecteddef, + title={The protecteddef package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/protecteddef}, +} +@manual{oberdiek:refcount, + title={The refcount package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={3.5}, + url={https://ctan.org/pkg/refcount}, +} +@manual{oberdiek:rerunfilecheck, + title={The rerunfilecheck package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.8}, + url={https://ctan.org/pkg/rerunfilecheck}, +} +@manual{oberdiek:resizegather, + title={The resizegather package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/resizegather}, +} +@manual{oberdiek:rotchiffre, + title={The rotchiffre package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/rotchiffre}, +} +@manual{oberdiek:scrindex, + title={The scrindex package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/scrindex}, +} +@manual{oberdiek:selinput, + title={The selinput package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.4}, + url={https://ctan.org/pkg/selinput}, +} +@manual{oberdiek:setouterhbox, + title={The setouterhbox package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.8}, + url={https://ctan.org/pkg/setouterhbox}, +} +@manual{oberdiek:settobox, + title={The settobox package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.5}, + url={https://ctan.org/pkg/settobox}, +} +@manual{oberdiek:soulutf8, + title={The soulutf8 package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/soulutf8}, +} +@manual{oberdiek:stackrel, + title={The stackrel package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/stackrel}, +} +@manual{oberdiek:stampinclude, + title={The stampinclude package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/stampinclude}, +} +@manual{oberdiek:tabularht, + title={The tabularht package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={2.6}, + url={https://ctan.org/pkg/tabularht}, +} +@manual{oberdiek:tabularkv, + title={The tabularkv package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.2}, + url={https://ctan.org/pkg/tabularkv}, +} +@manual{oberdiek:telprint, + title={The telprint package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.11}, + url={https://ctan.org/pkg/telprint}, +} +@manual{oberdiek:thepdfnumber, + title={The thepdfnumber package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.1}, + url={https://ctan.org/pkg/thepdfnumber}, +} +@manual{oberdiek:twoopt, + title={The twoopt package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.6}, + url={https://ctan.org/pkg/twoopt}, +} +@manual{oberdiek:uniquecounter, + title={The uniquecounter package}, + author={Heiko Oberdiek}, + date={2016-05-16}, + version={1.3}, + url={https://ctan.org/pkg/uniquecounter}, +} diff --git a/macros/latex/contrib/oberdiek/oberdiek-source.bib b/macros/latex/contrib/oberdiek/oberdiek-source.bib new file mode 100644 index 0000000000..36f546aa53 --- /dev/null +++ b/macros/latex/contrib/oberdiek/oberdiek-source.bib @@ -0,0 +1,27 @@ +@book{pdfspec-iso32000-1, + author={{Adobe Systems Incorporated}}, + title={Document management -- Portable document format -- Part 1: PDF 1.7}, + date={2008-07-01}, + edition=1, + url={https://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf}, + urldate={2011-11-25}, +} +@manual{pdftex-manual, + sortname={Han, The Thanh}, + author={{\hologo{HanTheThanh}} and Rahtz, Sebastian and Henkel, Hartmut + and Jackowski, Pawe{\l} and Schr{\"o}der, Martin}, + title={The {\hologo{pdfTeX}} user manual}, + version={655 (1.40.11)}, + date={2010-11-23}, + url={http://mirror.ctan.org/systems/pdftex/manual/pdftex-a.pdf}, + urldate={2011-11-29}, +} +@manual{luatex-manual, + sortname={LuaTeX, development team}, + author={{\hologo{LuaTeX}} development team}, + title={{\hologo{LuaTeX}} Reference}, + version={beta 0.71.0}, + date={2011-10-11}, + url={http://www.luatex.org/svn/trunk/manual/luatex.pdf}, + urldate={2011-11-29}, +} diff --git a/macros/latex/contrib/oberdiek/oberdiek.ins b/macros/latex/contrib/oberdiek/oberdiek.ins new file mode 100644 index 0000000000..d977aee442 --- /dev/null +++ b/macros/latex/contrib/oberdiek/oberdiek.ins @@ -0,0 +1,109 @@ +% oberdiek.ins +% 2019/12/03 +% +% Copyright (C) +% 1999, 2001, 2006 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/oberdiek/issues +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainers of this work are +% Heiko Oberdiek and the Oberdiek Package Support Group +% https://github.com/ho-tex/oberdiek/issues +% +% This work consists of the overview "oberdiek.pdf", its source +% "oberdiek.tex", and the installation script "oberdiek.ins" +% for the projects in CTAN:macros/latex/contrib/oberdiek/. +% +\input docstrip + +\batchinput{accsupp.dtx} +\batchinput{aliascnt.dtx} +\batchinput{alphalph.dtx} +\batchinput{askinclude.dtx} +\batchinput{atbegshi.dtx} +\batchinput{atenddvi.dtx} +\batchinput{atveryend.dtx} +\batchinput{auxhook.dtx} +\batchinput{bigintcalc.dtx} +\batchinput{bitset.dtx} +\batchinput{bmpsize.dtx} +\batchinput{catchfile.dtx} +\batchinput{centernot.dtx} +\batchinput{chemarr.dtx} +\batchinput{classlist.dtx} +\batchinput{colonequals.dtx} +\batchinput{dvipscol.dtx} +\batchinput{engord.dtx} +\batchinput{enparen.dtx} +\batchinput{eolgrab.dtx} +\batchinput{etexcmds.dtx} +\batchinput{fibnum.dtx} +\batchinput{flags.dtx} +\batchinput{gettitlestring.dtx} +\batchinput{hologo.dtx} +\batchinput{holtxdoc.dtx} +\batchinput{hopatch.dtx} +\batchinput{hycolor.dtx} +\batchinput{hypbmsec.dtx} +\batchinput{hypcap.dtx} +\batchinput{hypdestopt.dtx} +\batchinput{hypdoc.dtx} +\batchinput{hypgotoe.dtx} +\batchinput{hyphsubst.dtx} +\batchinput{ifdraft.dtx} +\batchinput{iflang.dtx} +\batchinput{intcalc.dtx} +\batchinput{kvdefinekeys.dtx} +\batchinput{kvsetkeys.dtx} +\batchinput{listingsutf8.dtx} +\batchinput{ltxcmds.dtx} +\batchinput{pagegrid.dtx} +\batchinput{pagesel.dtx} +\batchinput{pdfcol.dtx} +\batchinput{pdfcolfoot.dtx} +\batchinput{pdfcolparallel.dtx} +\batchinput{pdfcolparcolumns.dtx} +\batchinput{pdfcrypt.dtx} +\batchinput{pdfescape.dtx} +\batchinput{pdflscape.dtx} +\batchinput{pdfrender.dtx} +\batchinput{picture.dtx} +\batchinput{pmboxdraw.dtx} +\batchinput{protecteddef.dtx} +\batchinput{refcount.dtx} +\batchinput{rerunfilecheck.dtx} +\batchinput{resizegather.dtx} +\batchinput{rotchiffre.dtx} +\batchinput{scrindex.dtx} +\batchinput{selinput.dtx} +\batchinput{setouterhbox.dtx} +\batchinput{settobox.dtx} +\batchinput{soulutf8.dtx} +\batchinput{stackrel.dtx} +\batchinput{stampinclude.dtx} +\batchinput{tabularht.dtx} +\batchinput{tabularkv.dtx} +\batchinput{telprint.dtx} +\batchinput{thepdfnumber.dtx} +\batchinput{twoopt.dtx} +\batchinput{uniquecounter.dtx} + +\Msg{} +\Msg{********************************************************} +\Msg{*} +\Msg{* Unpacking completed, now finish the installation.} +\Msg{*} +\Msg{********************************************************} +\Msg{} + +\endbatchfile diff --git a/macros/latex/contrib/oberdiek/oberdiek.pdf b/macros/latex/contrib/oberdiek/oberdiek.pdf index 3810bd512d..c1b1fcd067 100644 Binary files a/macros/latex/contrib/oberdiek/oberdiek.pdf and b/macros/latex/contrib/oberdiek/oberdiek.pdf differ diff --git a/macros/latex/contrib/oberdiek/oberdiek.tex b/macros/latex/contrib/oberdiek/oberdiek.tex index aa80f29afb..4de3c5bbee 100644 --- a/macros/latex/contrib/oberdiek/oberdiek.tex +++ b/macros/latex/contrib/oberdiek/oberdiek.tex @@ -3,6 +3,9 @@ \newcommand*{\Title}{Overview} \newcommand*{\CTANdir}{macros/latex/contrib/oberdiek/} \newcommand*{\CTANroot}{http://mirror.ctan.org/} +\newcommand*{\CTANpkg}[1]{% + \href{http://ctan.org/pkg/#1}{[ctan]}% +} \newcommand*{\Subject}{CTAN:\CTANdir} \newcommand*{\Author}{Heiko Oberdiek} @@ -34,9 +37,7 @@ \usepackage{iftex} \ifluatex - \usepackage{fontspec}[2011/09/18]% \usepackage{unicode-math}[2011/09/19]% - \setmathfont{latinmodern-math.otf}% \fi \usepackage[ @@ -140,24 +141,20 @@ \newenvironment{overview}{% \setlength{\tabcolsep}{0.8\tabcolsep}% \setlength{\LTleft}{0pt}% - \longtable{@{}llll@{}} + \longtable{@{}lll@{}} }{% \endlongtable } -\newcommand*{\entry}[4]{% +\newcommand*{\entry}[2]{% \href{file:#1.pdf}{% \bfseries\xpackage{#1}% }% - & #2% - & v#3% - & \href{\CTANroot\CTANdir #1.pdf}{[pdf]} % - \href{\CTANroot\CTANdir #1.dtx}{[dtx]} + & + #2% + & \CTANpkg{#1} % \\*% \hyperref[{#1}]{\small (contents)}% & - \multicolumn{2}{l}{% - #4% - }% \\% } \newcommand*{\entrysep}{1.5ex} @@ -177,165 +174,147 @@ \section{Overview} \begin{overview} -\entry{accsupp}{2010/01/16}{0.3}{Accessibility support by marked content}% -[\entrysep] -\entry{aliascnt}{2009/09/08}{1.3}{Alias counters}% -[\entrysep] -\entry{alphalph}{2011/05/13}{2.4}{Convert numbers to letters}% -[\entrysep] -\entry{askinclude}{2011/12/02}{2.2}{Interactive asking of included files}% -[\entrysep] -\entry{atbegshi}{2011/10/05}{1.16}{At begin shipout hook}% -[\entrysep] -\entry{atenddvi}{2007/04/17}{1.1}{At end DVI hook}% -[\entrysep] -\entry{atveryend}{2011/06/30}{1.8}{Hooks at the very end of document}% +\entry{accsupp}{Accessibility support by marked content}% [\entrysep] -\entry{auxhook}{2011/03/04}{1.3}{Hooks for auxiliary files}% +\entry{aliascnt}{Alias counters}% [\entrysep] -\entry{bigintcalc}{2012/04/08}{1.3}{Expandable calculations on big integers}% +\entry{alphalph}{Convert numbers to letters}% [\entrysep] -\entry{bitset}{2011/01/30}{1.1}{Handle bit-vector datatype}% +\entry{askinclude}{Interactive asking of included files}% [\entrysep] -\entry{bmpsize}{2009/09/04}{1.6}{Extract size/resolution from bitmap files}% +\entry{atbegshi}{At begin shipout hook}% [\entrysep] -\entry{bookmark}{2011/12/02}{1.24}{PDF bookmarks}% +\entry{atenddvi}{At end DVI hook}% [\entrysep] -\entry{catchfile}{2011/03/01}{1.6}{Catch the contents of a file}% +\entry{atveryend}{Hooks at the very end of document}% [\entrysep] -\entry{centernot}{2011/07/11}{1.3}{Centers the not symbol horizontally}% +\entry{auxhook}{Hooks for auxiliary files}% [\entrysep] -\entry{chemarr}{2006/02/20}{1.2}{Arrows for chemical reactions}% +\entry{bigintcalc}{Expandable calculations on big integers}% [\entrysep] -\entry{classlist}{2011/10/17}{1.4}{Record classes used in a document}% +\entry{bitset}{Handle bit-vector datatype}% [\entrysep] -\entry{colonequals}{2006/08/01}{1.0}{Colon equals symbols}% +\entry{bmpsize}{Extract size/resolution from bitmap files}% [\entrysep] -\entry{dvipscol}{2008/08/11}{1.2}{Alter the usage of the dvips color stack}% +\entry{catchfile}{Catch the contents of a file}% [\entrysep] -\entry{embedfile}{2011/04/13}{2.6}{Embed files into PDF}% +\entry{centernot}{Centers the not symbol horizontally}% [\entrysep] -\entry{engord}{2010/03/01}{1.8}{Provides English ordinal numbers}% +\entry{chemarr}{Arrows for chemical reactions}% [\entrysep] -\entry{enparen}{2012/01/07}{1.0}{Parentheses nesting}% +\entry{classlist}{Record classes used in a document}% [\entrysep] -\entry{eolgrab}{2011/01/12}{1.0}{Catch arguments delimited by end of line}% +\entry{colonequals}{Colon equals symbols}% [\entrysep] -\entry{etexcmds}{2011/02/16}{1.5}{Avoid name clashes with \hologo{eTeX} commands}% +\entry{dvipscol}{Alter the usage of the dvips color stack}% [\entrysep] -\entry{fibnum}{2012/04/08}{1.0}{Fibonacci numbers}% +\entry{engord}{Provides English ordinal numbers}% [\entrysep] -\entry{flags}{2007/09/30}{0.4}{Setting/clearing of flags in bit fields}% +\entry{enparen}{Parentheses nesting}% [\entrysep] -\entry{gettitlestring}{2010/12/03}{1.4}{Cleanup title references}% +\entry{eolgrab}{Catch arguments delimited by end of line}% [\entrysep] -\entry{grfext}{2010/08/19}{1.1}{Manage graphics extensions}% +\entry{etexcmds}{Avoid name clashes with \hologo{eTeX} commands}% [\entrysep] -\entry{hologo}{2012/04/26}{1.10}{A logo collection with bookmark support}% +\entry{fibnum}{Fibonacci numbers}% [\entrysep] -\entry{holtxdoc}{2012/03/21}{0.24}{Private additional ltxdoc support}% +\entry{flags}{Setting/clearing of flags in bit fields}% [\entrysep] -\entry{hopatch}{2011/06/24}{1.1}{Wrapper for package hooks}% +\entry{gettitlestring}{Cleanup title references}% [\entrysep] -\entry{hycolor}{2011/01/30}{1.7}{Color options for hyperref/bookmark}% +\entry{hologo}{A logo collection with bookmark support}% [\entrysep] -\entry{hypbmsec}{2007/04/11}{2.4}{Bookmarks in sectioning commands}% +\entry{holtxdoc}{Private additional ltxdoc support}% [\entrysep] -\entry{hypcap}{2011/02/16}{1.11}{Adjusting the anchors of captions}% +\entry{hopatch}{Wrapper for package hooks}% [\entrysep] -\entry{hypdestopt}{2011/05/13}{2.3}{Hyperref destination optimizer}% +\entry{hycolor}{Color options for hyperref/bookmark}% [\entrysep] -\entry{hypdoc}{2011/08/19}{1.11}{Hyper extensions for doc.sty}% +\entry{hypbmsec}{Bookmarks in sectioning commands}% [\entrysep] -\entry{hypgotoe}{2007/10/30}{0.1}{Links to embedded files}% +\entry{hypcap}{Adjusting the anchors of captions}% [\entrysep] -\entry{hyphsubst}{2008/06/09}{0.2}{Substitute hyphenation patterns}% +\entry{hypdestopt}{Hyperref destination optimizer}% [\entrysep] -\entry{ifdraft}{2008/08/11}{1.3}{Detect class options draft and final}% +\entry{hypdoc}{Hyper extensions for doc.sty}% [\entrysep] -\entry{iflang}{2007/11/11}{1.5}{Checks for the current language}% +\entry{hypgotoe}{Links to embedded files}% [\entrysep] -% iftex distribution \entry{ifluatex}{2010/03/01}{1.3}{Provides the ifluatex switch}% -% iftex distribution [\entrysep] -% iftex distribution \entry{ifpdf}{2011/01/30}{2.3}{Provides the ifpdf switch}% -% iftex distribution [\entrysep] -% iftex distribution \entry{ifvtex}{2010/03/01}{1.5}{Detect \hologo{VTeX} and its facilities}% -% iftex distribution [\entrysep] -\entry{infwarerr}{2010/04/08}{1.3}{Providing info/warning/error messages}% +\entry{hyphsubst}{Substitute hyphenation patterns}% [\entrysep] -\entry{intcalc}{2007/09/27}{1.1}{Expandable calculations with integers}% +\entry{ifdraft}{Detect class options draft and final}% [\entrysep] -\entry{kvdefinekeys}{2011/04/07}{1.3}{Define keys}% +\entry{iflang}{Checks for the current language}% [\entrysep] -\entry{kvsetkeys}{2012/04/25}{1.16}{Key value parser}% +\entry{intcalc}{Expandable calculations with integers}% [\entrysep] -\entry{letltxmacro}{2010/09/02}{1.4}{Let assignment for \hologo{LaTeX} macros}% +\entry{kvdefinekeys}{Define keys}% [\entrysep] -\entry{listingsutf8}{2011/11/10}{1.2}{Allow UTF-8 in listings input}% +\entry{kvsetkeys}{Key value parser}% [\entrysep] -\entry{ltxcmds}{2011/11/09}{1.22}{\hologo{LaTeX} kernel commands for general use}% +\entry{listingsutf8}{Allow UTF-8 in listings input}% [\entrysep] -\entry{mleftright}{2010/09/25}{1.0}{Math left/right delim.\@ as open/close}% +\entry{ltxcmds}{\hologo{LaTeX} kernel commands for general use}% [\entrysep] -\entry{pagegrid}{2009/12/04}{1.4}{Print page grid in background}% +\entry{pagegrid}{Print page grid in background}% [\entrysep] -\entry{pagesel}{2008/08/11}{1.8}{Select pages of a document for output}% +\entry{pagesel}{Select pages of a document for output}% [\entrysep] -\entry{pdfcol}{2007/12/12}{1.2}{Handle new color stacks for \hologo{pdfTeX}}% +\entry{pdfcol}{Handle new color stacks for \hologo{pdfTeX}}% [\entrysep] -\entry{pdfcolfoot}{2012/01/02}{1.2}{Color stack for footnotes with \hologo{pdfTeX}}% +\entry{pdfcolfoot}{Color stack for footnotes with \hologo{pdfTeX}}% [\entrysep] -\entry{pdfcolparallel}{2010/01/11}{1.3}{Color stacks support for parallel}% +\entry{pdfcolparallel}{Color stacks support for parallel}% [\entrysep] -\entry{pdfcolparcolumns}{2010/01/11}{1.3}{Color stacks for parcolumns}% +\entry{pdfcolparcolumns}{Color stacks for parcolumns}% [\entrysep] -\entry{pdfcrypt}{2007/04/26}{1.0}{Allows the setting of PDF encryption}% +\entry{pdfcrypt}{Allows the setting of PDF encryption}% [\entrysep] -\entry{pdfescape}{2011/11/25}{1.13}{Implements \hologo{pdfTeX}'s escape features}% +\entry{pdfescape}{Implements \hologo{pdfTeX}'s escape features}% [\entrysep] -\entry{pdflscape}{2008/08/11}{0.10}{Display of landscape pages in PDF}% +\entry{pdflscape}{Display of landscape pages in PDF}% [\entrysep] -\entry{pdfrender}{2010/01/28}{1.2}{Access to some PDF graphics parameters}% +\entry{pdfrender}{Access to some PDF graphics parameters}% [\entrysep] -\entry{picture}{2009/10/11}{1.3}{Dimens for picture macros}% +\entry{picture}{Dimens for picture macros}% [\entrysep] -\entry{pmboxdraw}{2011/03/24}{1.1}{Poor man's box drawing characters}% +\entry{pmboxdraw}{Poor man's box drawing characters}% [\entrysep] -\entry{protecteddef}{2011/01/31}{1.0}{Define protected commands}% +\entry{protecteddef}{Define protected commands}% [\entrysep] -\entry{refcount}{2011/10/16}{3.4}{Data extraction from label references}% +\entry{refcount}{Data extraction from label references}% [\entrysep] -\entry{rerunfilecheck}{2011/04/15}{1.7}{Rerun checks for auxiliary files}% +\entry{rerunfilecheck}{Rerun checks for auxiliary files}% [\entrysep] -\entry{resizegather}{2010/03/01}{1.2}{Resize overly large equations}% +\entry{resizegather}{Resize overly large equations}% [\entrysep] -\entry{rotchiffre}{2010/11/12}{1.0}{Perform simple rotation ciphers}% +\entry{rotchiffre}{Perform simple rotation ciphers}% [\entrysep] -\entry{scrindex}{2008/08/11}{1.1}{Package index with \hologo{KOMAScript} classes}% +\entry{scrindex}{Package index with \hologo{KOMAScript} classes}% [\entrysep] -\entry{selinput}{2007/09/09}{1.2}{Semi-automatic input encoding detection}% +\entry{selinput}{Semi-automatic input encoding detection}% [\entrysep] -\entry{setouterhbox}{2007/09/09}{1.7}{Set hbox in outer horizontal mode}% +\entry{setouterhbox}{Set hbox in outer horizontal mode}% [\entrysep] -\entry{settobox}{2008/08/11}{1.4}{Assign box dimensions to length registers}% +\entry{settobox}{Assign box dimensions to length registers}% [\entrysep] -\entry{soulutf8}{2007/09/09}{1.0}{Permit use of UTF-8 characters in soul}% +\entry{soulutf8}{Permit use of UTF-8 characters in soul}% [\entrysep] -\entry{stackrel}{2007/11/11}{1.2}{Adding subscript option to stackrel}% +\entry{stackrel}{Adding subscript option to stackrel}% [\entrysep] -\entry{stampinclude}{2008/07/14}{1.0}{Include files based on time stamps}% +\entry{stampinclude}{Include files based on time stamps}% [\entrysep] -\entry{tabularht}{2007/04/11}{2.5}{Tabular with height specified}% +\entry{tabularht}{Tabular with height specified}% [\entrysep] -\entry{tabularkv}{2006/02/20}{1.1}{Tabular with key value interface}% +\entry{tabularkv}{Tabular with key value interface}% [\entrysep] -\entry{telprint}{2008/08/11}{1.10}{Format German phone numbers}% +\entry{telprint}{Format German phone numbers}% [\entrysep] -\entry{thepdfnumber}{2011/11/24}{1.0}{Print PDF numbers with minimal digits}% +\entry{thepdfnumber}{Print PDF numbers with minimal digits}% [\entrysep] -\entry{twoopt}{2008/08/11}{1.5}{Definitions with two optional arguments}% +\entry{twoopt}{Definitions with two optional arguments}% [\entrysep] -\entry{uniquecounter}{2011/01/30}{1.2}{Provide unlimited unique counter}% +\entry{uniquecounter}{Provide unlimited unique counter}% \end{overview} \section{Packages} @@ -456,19 +435,6 @@ options \xoption{viewport}, \xoption{trim} and \xoption{clip}. \end{abstract} \tocinclude{bmpsize} -\newpage -\subsection{\pkgsectformat{bookmark}} -\label{bookmark} -\begin{abstract} -This package implements a new bookmark (outline) organization for -package \xpackage{hyperref}. Bookmark properties such -as style and color can now be set. Other action types -are available (URI, GoToR, Named). The bookmarks are -generated in the first compile run. Package \xpackage{hyperref} -uses two runs. -\end{abstract} -\tocinclude{bookmark} - \newpage \subsection{\pkgsectformat{catchfile}} \label{catchfile} @@ -530,14 +496,6 @@ uses of the stack to avoid the error ``out of coor stack space''. \end{abstract} \tocinclude{dvipscol} -\newpage -\subsection{\pkgsectformat{embedfile}} -\label{embedfile} -\begin{abstract} -This package embeds files to a PDF document. -Currently the only supported driver is \pdfTeX\ $>=$ 1.30 in PDF mode. -\end{abstract} -\tocinclude{embedfile} \newpage \subsection{\pkgsectformat{engord}} @@ -607,16 +565,6 @@ commands from title strings. \end{abstract} \tocinclude{gettitlestring} -\newpage -\subsection{\pkgsectformat{grfext}} -\label{grfext} -\begin{abstract} -This package provides macros for adding and reordering -graphics extensions of package \xpackage{graphics}. -\end{abstract} -\tocinclude{grfext} - - \newpage \subsection{\pkgsectformat{hologo}} \label{hologo} @@ -741,15 +689,6 @@ based on macro \cs{languagename} or hyphenation patterns. \end{abstract} \tocinclude{iflang} -\newpage -\subsection{\pkgsectformat{infwarerr}} -\label{infwarerr} -\begin{abstract} -This package provides a complete set of macros for informations, -warnings and error messages with support for \plainTeX. -\end{abstract} -\tocinclude{infwarerr} - \newpage \subsection{\pkgsectformat{intcalc}} \label{intcalc} @@ -781,18 +720,6 @@ only one level of curly braces is removed from the values. \end{abstract} \tocinclude{kvsetkeys} -\newpage -\subsection{\pkgsectformat{letltxmacro}} -\label{letltxmacro} -\begin{abstract} -\TeX's \cs{let} assignment does not work for \LaTeX\ macros -with optional arguments or for macros that are defined -as robust macros by \cs{DeclareRobustCommand}. This package -defines \cs{LetLtxMacro} that also takes care of the involved -internal macros. -\end{abstract} -\tocinclude{letltxmacro} - \newpage \subsection{\pkgsectformat{listingsutf8}} \label{listingsutf8} @@ -815,18 +742,6 @@ also provides them for other formats such as plain-\TeX. \end{abstract} \tocinclude{ltxcmds} -\newpage -\subsection{\pkgsectformat{mleftright}} -\label{mleftright} -\begin{abstract} -\TeX\ sets subformulas by \cs{left} and \cs{right} as inner formulas -with additional surrounding spaces in some situations. This package -provides \cs{mleft} and \cs{mright} that call \cs{left} and \cs{right}, -but the delimiters will act as normal \cs{mathopen} and \cs{mathclose} -delimiters without the additional space of an inner formula. -\end{abstract} -\tocinclude{mleftright} - \newpage \subsection{\pkgsectformat{pagegrid}} \label{pagegrid} diff --git a/macros/latex/contrib/oberdiek/pagegrid.dtx b/macros/latex/contrib/oberdiek/pagegrid.dtx index bfd57d7ba7..60c0794247 100644 --- a/macros/latex/contrib/oberdiek/pagegrid.dtx +++ b/macros/latex/contrib/oberdiek/pagegrid.dtx @@ -63,7 +63,6 @@ % Installation: % TDS:tex/latex/oberdiek/pagegrid.sty % TDS:doc/latex/oberdiek/pagegrid.pdf -% TDS:doc/latex/oberdiek/test/pagegrid-test1.tex % TDS:source/latex/oberdiek/pagegrid.dtx % %<*ignore> @@ -131,10 +130,6 @@ and the derived files \file{pagegrid.sty}{\from{pagegrid.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{pagegrid-test1.tex}{\from{pagegrid.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pagegrid.xml}{\from{pagegrid.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -171,21 +166,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pagegrid.drv} % @@ -772,118 +752,7 @@ and the derived files \pagegrid@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input pagegrid.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -932,7 +801,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pagegrid.sty & tex/latex/oberdiek/pagegrid.sty\\ % pagegrid.pdf & doc/latex/oberdiek/pagegrid.pdf\\ -% test/pagegrid-test1.tex & doc/latex/oberdiek/test/pagegrid-test1.tex\\ % pagegrid.dtx & source/latex/oberdiek/pagegrid.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/pagegrid.pdf b/macros/latex/contrib/oberdiek/pagegrid.pdf index 976d9ae56d..c39dc8c8fe 100644 Binary files a/macros/latex/contrib/oberdiek/pagegrid.pdf and b/macros/latex/contrib/oberdiek/pagegrid.pdf differ diff --git a/macros/latex/contrib/oberdiek/pagesel.dtx b/macros/latex/contrib/oberdiek/pagesel.dtx index d0bddbefde..b674f803d4 100644 --- a/macros/latex/contrib/oberdiek/pagesel.dtx +++ b/macros/latex/contrib/oberdiek/pagesel.dtx @@ -126,10 +126,6 @@ and the derived files \file{pagesel.drv}{\from{pagesel.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{pagesel.sty}{\from{pagesel.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pagesel.xml}{\from{pagesel.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pagesel.drv} % diff --git a/macros/latex/contrib/oberdiek/pagesel.pdf b/macros/latex/contrib/oberdiek/pagesel.pdf index 6e14e5ceb6..8d67402b44 100644 Binary files a/macros/latex/contrib/oberdiek/pagesel.pdf and b/macros/latex/contrib/oberdiek/pagesel.pdf differ diff --git a/macros/latex/contrib/oberdiek/pdfcol.dtx b/macros/latex/contrib/oberdiek/pdfcol.dtx index e9a5cd552e..c86a2e6720 100644 --- a/macros/latex/contrib/oberdiek/pdfcol.dtx +++ b/macros/latex/contrib/oberdiek/pdfcol.dtx @@ -66,10 +66,6 @@ % Installation: % TDS:tex/generic/oberdiek/pdfcol.sty % TDS:doc/latex/oberdiek/pdfcol.pdf -% TDS:doc/latex/oberdiek/test/pdfcol-test1.tex -% TDS:doc/latex/oberdiek/test/pdfcol-test2.tex -% TDS:doc/latex/oberdiek/test/pdfcol-test3.tex -% TDS:doc/latex/oberdiek/test/pdfcol-test4.tex % TDS:source/latex/oberdiek/pdfcol.dtx % %<*ignore> @@ -143,10 +139,6 @@ and the derived files % \file{pdfcol-test2.tex}{\from{pdfcol.dtx}{test2}}% % \file{pdfcol-test3.tex}{\from{pdfcol.dtx}{test3}}% % \file{pdfcol-test4.tex}{\from{pdfcol.dtx}{test4}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pdfcol.xml}{\from{pdfcol.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -183,21 +175,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pdfcol.drv} % @@ -766,180 +743,7 @@ and the derived files \PDFCOL@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input pdfcol.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Very simple test} -% -% \begin{macrocode} -%<*test2|test3> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{article} -\usepackage{pdfcol}[2018/11/01] -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\begin{document} - \begin{qstest}{pdfcol}{}% - \makeatletter -%<*test2> - \Expect*{\ifpdfcolAvailable true\else false\fi}{false}% -% -%<*test3> - \Expect*{\ifpdfcolAvailable true\else false\fi}{true}% - \Expect*{\number\@pdfcolorstack}{0}% -% - \setbox0=\hbox{% - \pdfcolInitStack{test}% -%<*test3> - \Expect*{\number\pdfcol@Stack@test}{1}% - \Expect*{\number\@pdfcolorstack}{0}% -% - \pdfcolSwitchStack{test}% -%<*test3> - \Expect*{\number\@pdfcolorstack}{1}% -% - \pdfcolSetCurrent{test}% - \pdfcolSetCurrent{}% - }% - \Expect*{\the\wd0}{0.0pt}% -%<*test3> - \Expect*{\number\@pdfcolorstack}{0}% - \Expect*{\number\pdfcol@Stack@test}{1}% - \Expect*{\pdfcolIfStackExists{test}{true}{false}}{true}% -% - \Expect*{\pdfcolIfStackExists{dummy}{true}{false}}{false}% - \end{qstest}% -\end{document} -% -% \end{macrocode} -% -% \subsection{Detection of package \xpackage{luacolor}} -% -% \begin{macrocode} -%<*test4> -\NeedsTeXFormat{LaTeX2e} -\documentclass{article} -\usepackage{luacolor} -\usepackage{pdfcol} -\makeatletter -\ifpdfcolAvailable - \@latex@error{Detection of package luacolor failed}% -\fi -\csname @@end\endcsname -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -988,10 +792,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdfcol.sty & tex/generic/oberdiek/pdfcol.sty\\ % pdfcol.pdf & doc/latex/oberdiek/pdfcol.pdf\\ -% test/pdfcol-test1.tex & doc/latex/oberdiek/test/pdfcol-test1.tex\\ -% test/pdfcol-test2.tex & doc/latex/oberdiek/test/pdfcol-test2.tex\\ -% test/pdfcol-test3.tex & doc/latex/oberdiek/test/pdfcol-test3.tex\\ -% test/pdfcol-test4.tex & doc/latex/oberdiek/test/pdfcol-test4.tex\\ % pdfcol.dtx & source/latex/oberdiek/pdfcol.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/pdfcol.pdf b/macros/latex/contrib/oberdiek/pdfcol.pdf index bdb0447b13..09162628ac 100644 Binary files a/macros/latex/contrib/oberdiek/pdfcol.pdf and b/macros/latex/contrib/oberdiek/pdfcol.pdf differ diff --git a/macros/latex/contrib/oberdiek/pdfcolfoot.dtx b/macros/latex/contrib/oberdiek/pdfcolfoot.dtx index c2b22be98f..04aaf31a3a 100644 --- a/macros/latex/contrib/oberdiek/pdfcolfoot.dtx +++ b/macros/latex/contrib/oberdiek/pdfcolfoot.dtx @@ -63,7 +63,6 @@ % Installation: % TDS:tex/latex/oberdiek/pdfcolfoot.sty % TDS:doc/latex/oberdiek/pdfcolfoot.pdf -% TDS:doc/latex/oberdiek/test/pdfcolfoot-test1.tex % TDS:source/latex/oberdiek/pdfcolfoot.dtx % %<*ignore> @@ -131,10 +130,6 @@ and the derived files \file{pdfcolfoot.sty}{\from{pdfcolfoot.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{pdfcolfoot-test1.tex}{\from{pdfcolfoot.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pdfcolfoot.xml}{\from{pdfcolfoot.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -171,21 +166,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pdfcolfoot.drv} % @@ -502,35 +482,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \begin{macrocode} -%<*test1> -\NeedsTeXFormat{LaTeX2e} -\AtEndDocument{% - \typeout{}% - \typeout{**************************************}% - \typeout{*** \space Check the PDF file manually! \space ***}% - \typeout{**************************************}% - \typeout{}% -} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdfcompresslevel\endcsname\relax -\else - \pdfcompresslevel=0 % -\fi -\documentclass[12pt,a5paper]{article} -\usepackage{pdfcolfoot}[2016/05/16] -\dimen\footins=\baselineskip % for testing -\begin{document} - Black\footnote{Black \textcolor{blue}{Blue\\Blue} Black} % - \textcolor{red}{Red\newpage Red} Black% -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -579,7 +531,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdfcolfoot.sty & tex/latex/oberdiek/pdfcolfoot.sty\\ % pdfcolfoot.pdf & doc/latex/oberdiek/pdfcolfoot.pdf\\ -% test/pdfcolfoot-test1.tex & doc/latex/oberdiek/test/pdfcolfoot-test1.tex\\ % pdfcolfoot.dtx & source/latex/oberdiek/pdfcolfoot.dtx\\ % \end{tabular}^^A % }^^A @@ -695,7 +646,7 @@ and the derived files % \bibitem{pdfcol} % Heiko Oberdiek: \textit{The \xpackage{pdfcol} package}; % 2007/09/09;\\ -% \CTAN{macros/latex/contrib/oberdiek/pdfcol.pdf}. +% \CTANpkg{pdfcol}. % % \end{thebibliography} % diff --git a/macros/latex/contrib/oberdiek/pdfcolfoot.pdf b/macros/latex/contrib/oberdiek/pdfcolfoot.pdf index 122a60577e..df94353acb 100644 Binary files a/macros/latex/contrib/oberdiek/pdfcolfoot.pdf and b/macros/latex/contrib/oberdiek/pdfcolfoot.pdf differ diff --git a/macros/latex/contrib/oberdiek/pdfcolparallel.dtx b/macros/latex/contrib/oberdiek/pdfcolparallel.dtx index dea067f7e0..bee619d642 100644 --- a/macros/latex/contrib/oberdiek/pdfcolparallel.dtx +++ b/macros/latex/contrib/oberdiek/pdfcolparallel.dtx @@ -63,7 +63,6 @@ % Installation: % TDS:tex/latex/oberdiek/pdfcolparallel.sty % TDS:doc/latex/oberdiek/pdfcolparallel.pdf -% TDS:doc/latex/oberdiek/test/pdfcolparallel-test1.tex % TDS:source/latex/oberdiek/pdfcolparallel.dtx % %<*ignore> @@ -131,10 +130,6 @@ and the derived files \file{pdfcolparallel.sty}{\from{pdfcolparallel.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{pdfcolparallel-test1.tex}{\from{pdfcolparallel.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pdfcolparallel.xml}{\from{pdfcolparallel.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -171,21 +166,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pdfcolparallel.drv} % @@ -797,105 +777,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% The test file is a modified version of the file that -% Alexander Hirsch has posted in \xnewsgroup{de.comp.text.tex}: -% \URL{``\link{\texttt{parallel.sty} und farbiger Text}''}^^A -% {https://groups.google.com/group/de.comp.text.tex/msg/6a759cf33bb071a5} -% \begin{macrocode} -%<*test1> -\AtEndDocument{% - \typeout{}% - \typeout{**************************************}% - \typeout{*** \space Check the PDF file manually! \space ***}% - \typeout{**************************************}% - \typeout{}% -} -\documentclass{article} -\usepackage{xcolor} -\usepackage{pdfcolparallel}[2016/05/16] - -\begin{document} - \color{green}% - Green% - \begin{Parallel}{0.47\textwidth}{0.47\textwidth}% - \ParallelLText{% - \textcolor{red}{% - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% - }% - }% - \ParallelRText{% - \textcolor{blue}{% - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% - }% - }% - \ParallelPar - \ParallelLText{% - Default % - \color{red}% - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% - }% - \ParallelRText{% - Default % - \color{blue}% - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% - }% - \ParallelPar - \ParallelLText{% - \begin{enumerate}% - \item left text, left text, left text, left text, % - left text, left text, left text, left text,% - \item left text, left text, left text, left text, % - left text, left text, left text, left text.% - \end{enumerate}% - }% - \ParallelRText{% - \begin{enumerate}% - \item right text, right text, right text, right text, % - right text, right text, right text, right text.% - \item right text, right text, right text, right text, % - right text, right text, right text, right text.% - \end{enumerate}% - }% - \end{Parallel}% - \begin{Parallel}[p]{\textwidth}{\textwidth}% - \ParallelLText{% - \textcolor{red}{% - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % - Foo bar bla bla bla.% - }% - \par - Und noch ein Absatz.% - }% - \ParallelRText{% - \textcolor{blue}{% - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % - Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % - Foo bar bla bla bla.% - }% - }% - \end{Parallel}% - \begin{Parallel}[p]{\textwidth}{\textwidth}% - \ParallelLText{% - \rule{1pt}{.98\textheight}\Huge g% - }% - \ParallelRText{% - \rule{1pt}{.98\textheight}y% - }% - \end{Parallel}% - Green% -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -944,7 +826,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdfcolparallel.sty & tex/latex/oberdiek/pdfcolparallel.sty\\ % pdfcolparallel.pdf & doc/latex/oberdiek/pdfcolparallel.pdf\\ -% test/pdfcolparallel-test1.tex & doc/latex/oberdiek/test/pdfcolparallel-test1.tex\\ % pdfcolparallel.dtx & source/latex/oberdiek/pdfcolparallel.dtx\\ % \end{tabular}^^A % }^^A @@ -1065,7 +946,7 @@ and the derived files % \bibitem{pdfcol} % Heiko Oberdiek: \textit{The \xpackage{pdfcol} package}; % 2007/09/09;\\ -% \CTAN{macros/latex/contrib/oberdiek/pdfcol.pdf}. +% \CTANpkg{pdfcol}. % % \end{thebibliography} % diff --git a/macros/latex/contrib/oberdiek/pdfcolparallel.pdf b/macros/latex/contrib/oberdiek/pdfcolparallel.pdf index 9102ac4ae9..60a21023c0 100644 Binary files a/macros/latex/contrib/oberdiek/pdfcolparallel.pdf and b/macros/latex/contrib/oberdiek/pdfcolparallel.pdf differ diff --git a/macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx b/macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx index 9584b4d2e8..a7e89d131a 100644 --- a/macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx +++ b/macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx @@ -63,7 +63,6 @@ % Installation: % TDS:tex/latex/oberdiek/pdfcolparcolumns.sty % TDS:doc/latex/oberdiek/pdfcolparcolumns.pdf -% TDS:doc/latex/oberdiek/test/pdfcolparcolumns-test1.tex % TDS:source/latex/oberdiek/pdfcolparcolumns.dtx % %<*ignore> @@ -131,10 +130,6 @@ and the derived files \file{pdfcolparcolumns.sty}{\from{pdfcolparcolumns.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{pdfcolparcolumns-test1.tex}{\from{pdfcolparcolumns.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pdfcolparcolumns.xml}{\from{pdfcolparcolumns.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -171,21 +166,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pdfcolparcolumns.drv} % @@ -525,60 +505,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% The test file is a modified version of the file that -% Donald Goodman has posted in \xnewsgroup{comp.text.tex}: ^^A -% \URL{``\link{Re: \xpackage{xcolor} glitches}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/8eda74ed292012bb} -% \begin{macrocode} -%<*test1> -\NeedsTeXFormat{LaTeX2e} -\AtEndDocument{% - \typeout{}% - \typeout{**************************************}% - \typeout{*** \space Check the PDF file manually! \space ***}% - \typeout{**************************************}% - \typeout{}% -} -\documentclass{article} -\usepackage{xcolor} -\usepackage{pdfcolparcolumns} - -\newcommand{\instruct}[1]{% - \noindent - \footnotesize - \textcolor{red}{#1}% -} - -\begin{document} - \begin{parcolumns}[colwidths={1=2.3in,2=2.3in},sloppy]{2}% - \colchunk[1]{% - \instruct{Et non dicitur versus} % - Fidelium anim\ae\ % - \instruct{% - sed immediate subiungitur antiphona finalis % - beat\ae\ Mari\ae\ Virginis% - } % - 100.% - }% - \colchunk[2]{% - \instruct{% - And the verse % - \textcolor{black}{May the souls of the faithful} % - is not said, but the final antiphon of the % - Blessed Virgin Mary, % - \textcolor{black}{100,} % - is immediately joined.% - }% - }% - \end{parcolumns}% -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -627,7 +554,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdfcolparcolumns.sty & tex/latex/oberdiek/pdfcolparcolumns.sty\\ % pdfcolparcolumns.pdf & doc/latex/oberdiek/pdfcolparcolumns.pdf\\ -% test/pdfcolparcolumns-test1.tex & doc/latex/oberdiek/test/pdfcolparcolumns-test1.tex\\ % pdfcolparcolumns.dtx & source/latex/oberdiek/pdfcolparcolumns.dtx\\ % \end{tabular}^^A % }^^A @@ -743,12 +669,12 @@ and the derived files % \bibitem{parcolumns} % Jonathan Sauer: \textit{The \xpackage{parcolumns} package}; % 2004/11/25;\\ -% \CTAN{macros/latex/contrib/sauerj/parcolumns.pdf}. +% \CTANpkg{parcolumns}. % % \bibitem{pdfcol} % Heiko Oberdiek: \textit{The \xpackage{pdfcol} package}; % 2007/09/09;\\ -% \CTAN{macros/latex/contrib/oberdiek/pdfcol.pdf}. +% \CTANpkg{pdfcol}. % % \end{thebibliography} % diff --git a/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf b/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf index 7d8325d939..c5515f1ea3 100644 Binary files a/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf and b/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf differ diff --git a/macros/latex/contrib/oberdiek/pdfcrypt.dtx b/macros/latex/contrib/oberdiek/pdfcrypt.dtx index b3da5015d0..e4681efa8c 100644 --- a/macros/latex/contrib/oberdiek/pdfcrypt.dtx +++ b/macros/latex/contrib/oberdiek/pdfcrypt.dtx @@ -132,10 +132,6 @@ and the derived files \file{pdfcrypt.drv}{\from{pdfcrypt.dtx}{driver}}% \usedir{tex/generic/oberdiek}% \file{pdfcrypt.sty}{\from{pdfcrypt.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pdfcrypt.xml}{\from{pdfcrypt.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -172,21 +168,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pdfcrypt.drv} % diff --git a/macros/latex/contrib/oberdiek/pdfcrypt.pdf b/macros/latex/contrib/oberdiek/pdfcrypt.pdf index 2661342ae9..621d52f08c 100644 Binary files a/macros/latex/contrib/oberdiek/pdfcrypt.pdf and b/macros/latex/contrib/oberdiek/pdfcrypt.pdf differ diff --git a/macros/latex/contrib/oberdiek/pdfescape.dtx b/macros/latex/contrib/oberdiek/pdfescape.dtx index db40f23f4b..b405d7f7e1 100644 --- a/macros/latex/contrib/oberdiek/pdfescape.dtx +++ b/macros/latex/contrib/oberdiek/pdfescape.dtx @@ -68,12 +68,6 @@ % Installation: % TDS:tex/generic/oberdiek/pdfescape.sty % TDS:doc/latex/oberdiek/pdfescape.pdf -% TDS:doc/latex/oberdiek/test/pdfescape-test1.tex -% TDS:doc/latex/oberdiek/test/pdfescape-test2.tex -% TDS:doc/latex/oberdiek/test/pdfescape-test3.tex -% TDS:doc/latex/oberdiek/test/pdfescape-test4.tex -% TDS:doc/latex/oberdiek/test/pdfescape-test5.tex -% TDS:doc/latex/oberdiek/test/pdfescape-test6.tex % TDS:source/latex/oberdiek/pdfescape.dtx % %<*ignore> @@ -151,10 +145,6 @@ and the derived files % \file{pdfescape-test4.tex}{\from{pdfescape.dtx}{test4}}% % \file{pdfescape-test5.tex}{\from{pdfescape.dtx}{test5}}% % \file{pdfescape-test6.tex}{\from{pdfescape.dtx}{test6}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pdfescape.xml}{\from{pdfescape.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -191,21 +181,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pdfescape.drv} % @@ -1310,735 +1285,7 @@ $ \the\count\ltx@cclv % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input pdfescape.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \begin{macrocode} -%<*test2|test3|test4|test5> -\NeedsTeXFormat{LaTeX2e} -\makeatletter -% \end{macrocode} -% -% \subsection{Test with \cs{pdfescape...} commands} -% -% \begin{macrocode} -%<*test2> -\ProvidesFile{pdfescape-test2.tex}% - [2016/05/16 v1.14 Test with \string\pdfescape... commands]% -% -% \end{macrocode} -% -% \subsection{Test without \cs{pdfescape...}, with \eTeX} -% -% \begin{macrocode} -%<*test3> -\ProvidesFile{pdfescape-test3.tex}% - [2016/05/16 v1.14 Test without \string\pdfescape..., with e-TeX]% -% -% \end{macrocode} -% -% \subsection{Test without \cs{pdfescape...} and \eTeX} -% -% \begin{macrocode} -%<*test4> -\ProvidesFile{pdfescape-test4.tex}% - [2016/05/16 v1.14 Test without \string\pdfescape... and e-TeX]% -% -% \end{macrocode} -% -% \subsection{Test with \LuaTeX} -% -% \begin{macrocode} -%<*test5> -\ProvidesFile{pdfescape-test5.tex}% - [2016/05/16 v1.14 Test with LuaTeX]% -% -% \end{macrocode} -% -% \subsection{Check/ensure test preconditions} -% -% \subsubsection{Check \cs{pdfescape...}} -% -% \begin{macrocode} -%<*test2> -\@ifundefined{pdfescapehex}{% - \PackageError{pdfescape-test2}{% - Missing \string\pdfescape... commands% - }{Test aborted.}% - \stop -}{} -% -% \end{macrocode} -% \begin{macrocode} -%<*test3|test4> -\let\pdfescapehex\@undefined -\let\pdfunescapehex\@undefined -\let\pdfescapename\@undefined -\let\pdfescapestring\@undefined -% -% \end{macrocode} -% -% \subsubsection{Check \eTeX} -% -% \begin{macrocode} -%<*test3> -\@ifundefined{numexpr}{% - \PackageError{pdfescape-test3}{% - Missing \eTeX - }{Test aborted.}% - \stop -}{} -% -% \end{macrocode} -% Package \xpackage{qstest} uses \eTeX, thus \eTeX's features -% can only be disabled later during loading of package \xpackage{pdfescape}. -% -% \subsubsection{Check \LuaTeX} -% -% \begin{macrocode} -%<*test5> -\@ifundefined{directlua}{% - \PackageError{pdfescape-test5}{% - Missing LuaTeX% - }{Test aborted.}% - \stop -}{} -% -% \end{macrocode} -% -% \subsection{Common part} -% -% The files for testing uses the framework, provided by the -% new package \xpackage{qstest} of David Kastrup. -% \begin{macrocode} -\RequirePackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} - -\newcommand*{\ExpectVar}[2]{% - \ifx#1#2% - \else - \begingroup - \@onelevel@sanitize#1% - \@onelevel@sanitize#2% - \typeout{[#1] <> [#2]}% hash-ok - \endgroup - \fi - \Expect*{\ifx#1#2true\else false\fi}{true}% -} - -\makeatletter -\begingroup - \gdef\AllBytes{}% - \count@=0 % - \catcode0=12 % - \@whilenum\count@<256 \do{% - \lccode0=\count@ - \ifnum\count@=32 % - \xdef\AllBytes{\AllBytes\space}% - \else - \lowercase{% - \xdef\AllBytes{\AllBytes^^@}% - }% - \fi - \advance\count@ by 1 % - }% -\endgroup -\newcommand*{\AllBytesHex}{% - 000102030405060708090A0B0C0D0E0F% - 101112131415161718191A1B1C1D1E1F% - 202122232425262728292A2B2C2D2E2F% - 303132333435363738393A3B3C3D3E3F% - 404142434445464748494A4B4C4D4E4F% - 505152535455565758595A5B5C5D5E5F% - 606162636465666768696A6B6C6D6E6F% - 707172737475767778797A7B7C7D7E7F% - 808182838485868788898A8B8C8D8E8F% - 909192939495969798999A9B9C9D9E9F% - A0A1A2A3A4A5A6A7A8A9AAABACADAEAF% - B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF% - C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF% - D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF% - E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF% - F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF% -} -\@onelevel@sanitize\AllBytesHex -\expandafter\lowercase\expandafter{% - \expandafter\newcommand\expandafter*\expandafter\AllBytesHexLC - \expandafter{\AllBytesHex}% -} -\newcommand*{\AllBytesName}{} -\begingroup - \catcode`\#=12 % - \xdef\AllBytesName{% - #01#02#03#04#05#06#07#08#09#0A#0B#0C#0D#0E#0F% - #10#11#12#13#14#15#16#17#18#19#1A#1B#1C#1D#1E#1F% - #20!"#23$#25&'#28#29*+,-.#2F% - 0123456789:;#3C=#3E?% - @ABCDEFGHIJKLMNO% - PQRSTUVWXYZ#5B\@backslashchar#5D^_% - `abcdefghijklmno% - pqrstuvwxyz#7B|#7D\string~#7F% - #80#81#82#83#84#85#86#87#88#89#8A#8B#8C#8D#8E#8F% - #90#91#92#93#94#95#96#97#98#99#9A#9B#9C#9D#9E#9F% - #A0#A1#A2#A3#A4#A5#A6#A7#A8#A9#AA#AB#AC#AD#AE#AF% - #B0#B1#B2#B3#B4#B5#B6#B7#B8#B9#BA#BB#BC#BD#BE#BF% - #C0#C1#C2#C3#C4#C5#C6#C7#C8#C9#CA#CB#CC#CD#CE#CF% - #D0#D1#D2#D3#D4#D5#D6#D7#D8#D9#DA#DB#DC#DD#DE#DF% - #E0#E1#E2#E3#E4#E5#E6#E7#E8#E9#EA#EB#EC#ED#EE#EF% - #F0#F1#F2#F3#F4#F5#F6#F7#F8#F9#FA#FB#FC#FD#FE#FF% - }% -\endgroup -\@onelevel@sanitize\AllBytesName - -\newcommand*{\AllBytesString}{} -\begingroup - \def\|{|}% - \edef\%{\@percentchar}% - \catcode`\|=0 % - \catcode`\#=12 % - \catcode`\~=12 % - \catcode`\\=12 % - |xdef|AllBytesString{% - \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017% - \020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037% - \040!"#$|%&'\(\)*+,-./% - 0123456789:;<=>?% - @ABCDEFGHIJKLMNO% - PQRSTUVWXYZ[\\]^_% - `abcdefghijklmno% - pqrstuvwxyz{||}~\177% - \200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217% - \220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237% - \240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257% - \260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277% - \300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317% - \320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337% - \340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357% - \360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377% - }% -|endgroup -\@onelevel@sanitize\AllBytesString - -%<*test4> -\let\org@detokenize\detokenize -\let\detokenize\@undefined -\let\org@numexpr\numexpr -\let\numexpr\@undefined -% -\RequirePackage{pdfescape} -%<*test4> -\let\detokenize\org@detokenize -\let\numexpr\org@numexpr -% - -\begin{qstest}{all-hex}{\AllBytes, escapehex} - \EdefEscapeHex\x{\AllBytes}% - \Expect*{\x}*{\AllBytesHex}% - \ExpectVar\x\AllBytesHex -\end{qstest} - -\begin{qstest}{all-unhex}{\AllBytesHex, unescapehex} - \EdefUnescapeHex\x{\AllBytesHex}% - \Expect*{\x}*{\AllBytes}% - \ExpectVar\x\AllBytes -\end{qstest} - -\begin{qstest}{all-unhex-lc}{\AllBytesHexLC, unescapehex, lowercase} - \EdefUnescapeHex\x{\AllBytesHexLC}% - \Expect*{\x}*{\AllBytes}% - \ExpectVar\x\AllBytes -\end{qstest} - -\begin{qstest}{unhex-incomplete}{unescapehex, incomplete} - \EdefUnescapeHex\x{4}% - \Expect*{\x}{@}% -\end{qstest} - -\begin{qstest}{unhex-space}{unescapehex, space} - \EdefUnescapeHex\x{20}% - \Expect*{\x}{ }% - \ExpectVar\x\space -\end{qstest} - -\begin{qstest}{unhex-spaces}{unescapehex, spaces} - \EdefUnescapeHex\x{204020204120}% - \def\y#1{% - \edef\z{#1\string @#1#1\string A#1}% - }\y{ }% - \Expect*{\x}*{\z}% - \ExpectVar\x\z -\end{qstest} - -\begin{qstest}{unhex-hash}{unescapehex, hash} - \catcode`\#=12 % - \EdefUnescapeHex\x{#20}% - \ExpectVar\x\space -\end{qstest} - -\begin{qstest}{unhex-invalid}{unescapehex, invalid} - \def\test#1#2{% - \EdefUnescapeHex\x{#1}% - \edef\y{#2}% - \@onelevel@sanitize\y - \ExpectVar\x\y - }% -%<*test2> - \edef\x{\pdfunescapehex{4X}}% - \edef\y{\string @}% - \ifx\x\y - \else - \def~{\space}% - \typeout{************************************}% - \typeout{* Your pdfTeX contains bug 777.~~~~*}% - \typeout{* This test is redefined as dummy, *}% - \typeout{* because it triggers the bug.~~~~~*}% - \typeout{************************************}% - \def\test#1#2{}% - \fi -% - \test{X}{}% - \test{XY}{}% - \test{XYZ}{}% - \test{A}{^^a0}% - \test{AX}{^^a0}% - \test{XA}{^^a0}% - \test{XXAXX}{^^a0}% -\end{qstest} - -\begin{qstest}{all-name}{\AllBytes, escapename} - \EdefEscapeName\x{\AllBytes}% - \Expect*{\x}*{\AllBytesName}% - \ExpectVar\x\AllBytesName -\end{qstest} - -\begin{qstest}{all-string}{\AllBytes, escapestring} - \EdefEscapeString\x{\AllBytes}% - \Expect*{\x}*{\AllBytesString}% - \ExpectVar\x\AllBytesString -\end{qstest} - -\begin{qstest}{uchexdigit}{unescape, uppercase hex digit} - \catcode`\@=11 % - \catcode0=12 % - \def\test#1#2{% - \uccode0=#1\relax - \uppercase{% - \def\x{^^@}% - }% - \Expect*{% - \ifcase\expandafter\PE@TestUcHexDigit\x - true% - \else - false% - \fi - }{#2}% - }% - \def\range#1#2#3{% - \count0=#1\relax - \loop - \ifnum\count0<#2\relax - \test{\count0}{#3}% - \advance\count0 by 1 % - \repeat - }% - \range{0}{47}{false}% - \range{48}{57}{true}% - \range{58}{64}{false}% - \range{65}{70}{true}% - \range{71}{255}{false}% -\end{qstest} - -\begin{qstest}{unescapename}{unescapename} - \def\test#1#2{% - \EdefUnescapeName\x{#1}% - \edef\y{#2}% - \@onelevel@sanitize\y - \ExpectVar\x\y - }% - \catcode`\#=12 % - \catcode0=12 % - \test{}{}% - \test{x}{x}% - \test{xy}{xy}% - \test{#}{#}% - \test{##}{##}% - \test{###}{###}% - \test{####}{####}% - \test{#x}{#x}% - \test{#xy}{#xy}% - \test{#1}{#1}% - \test{#40}{@}% - \test{#400}{@0}% - \test{#4x0}{#4x0}% - \test{#ab}{^^ab}% - \test{#00}{^^@}% - \test{x#40y#40z}{x@y@z}% - \test{#40#40#40#40}{@@@@}% - \test{a#x}{a#x}% - \test{a#xy}{a#xy}% - \test{a#1}{a#1}% - \test{a#40}{a@}% - \test{a#400}{a@0}% - \test{#20}{ }% - \test{a#20}{a }% - \test{a#20b}{a b}% - \test{a#20#20#20b}{a \space\space b}% -\end{qstest} - -\begin{qstest}{unescapestring}{unescapestring} - \def\test#1#2{% - \EdefUnescapeString\x{#1}% - \edef\y{#2}% - \@onelevel@sanitize\y - \ExpectVar\x\y - }% - \catcode0=12 % - \def\DefChar#1#2{% - \begingroup - \uccode0=#2\relax - \uppercase{\endgroup - \def#1{^^@}% - }% - }% - \DefChar\nul{0}% - \DefChar\one{1}% - \DefChar\bel{8}% - \DefChar\tab{9}% - \DefChar\lf{10}% - \DefChar\ff{12}% - \DefChar\cr{13}% - \DefChar\\{92}% - \test{}{}% - \test{a}{a}% - \test{\\}{}% - \test{\\\\}{\\}% - \test{\\\\y}{\\y}% - \test{\\000}{\nul}% - \test{\\b}{\bel}% - \test{\\t}{\tab}% - \test{\\n}{\lf}% - \test{\\f}{\ff}% - \test{\\r}{\cr}% - \test{\\(}{(}% - \test{\\)}{)}% - \test{\\040}{ }% - \test{\\100}{@}% - \test{\\40}{ }% - \test{\\1}{\one}% - \test{\\01}{\one}% - \test{\\001}{\one}% - \test{\\18}{\one8}% - \test{\\018}{\one8}% - \test{\\0018}{\one8}% - \test{x\\}{x}% - \test{x\\\\}{x\\}% - \test{x\\\\y}{x\\y}% - \test{x\\000}{x\nul}% - \test{x\\b}{x\bel}% - \test{x\\t}{x\tab}% - \test{x\\n}{x\lf}% - \test{x\\f}{x\ff}% - \test{x\\r}{x\cr}% - \test{x\\(}{x(}% - \test{x\\)}{x)}% - \test{x\\040}{x }% - \test{x\\100}{x@}% - \test{x\\40}{x }% - \test{x\\1}{x\one}% - \test{x\\01}{x\one}% - \test{x\\001}{x\one}% - \test{x\\18}{x\one8}% - \test{x\\018}{x\one8}% - \test{x\\0018}{x\one8}% - \test{\\b\\t\\n\\f\\r\\(\\)\\\\\\000\\040}{% - \bel\tab\lf\ff\cr()\\\nul\space - }% - \test{\\\lf}{}% - \test{x\\\lf}{x}% - \test{\cr}{\lf}% - \test{\cr\lf}{\lf}% - \test{\lf}{\lf}% - \test{\lf\cr}{\lf\lf}% - \test{x\cr}{x\lf}% - \test{x\cr\lf}{x\lf}% - \test{x\lf}{x\lf}% - \test{x\lf\cr}{x\lf\lf}% - \test{x\\\cr\lf y\cr}{xy\lf}% -% - \test{\\409}{ 9}% - \test{\\800}{800}% - \test{\\900}{900}% - \test{\\578}{/8}% - \test{\\477}{?}% - \test{\\377}{^^ff}% - \test{\\777}{^^ff}% - \test{\\7777}{^^ff7}% -\end{qstest} -\stop -% \end{macrocode} -% -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsubsection{Test for \hologo{iniTeX}} -% -% \begin{macrocode} -%<*test6> -\input pdfescape.sty\relax -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\^=7 % -\catcode`\@=11 % -% \end{macrocode} -% \begin{macrocode} -\begingroup - \catcode`\@=11 % - \countdef\count@=255 % - \def\space{ }% - \long\def\@whilenum#1\do #2{% - \ifnum #1\relax - #2\relax - \@iwhilenum{#1\relax#2\relax}% - \fi - }% - \long\def\@iwhilenum#1{% - \ifnum #1% - \expandafter\@iwhilenum - \else - \expandafter\ltx@gobble - \fi - {#1}% - }% - \gdef\AllBytes{}% - \count@=0 % - \catcode0=12 % - \@whilenum\count@<256 \do{% - \lccode0=\count@ - \ifnum\count@=32 % - \xdef\AllBytes{\AllBytes\space}% - \else - \lowercase{% - \xdef\AllBytes{\AllBytes^^@}% - }% - \fi - \advance\count@ by 1 % - }% -\endgroup -\def\AllBytesHex{% - 000102030405060708090A0B0C0D0E0F% - 101112131415161718191A1B1C1D1E1F% - 202122232425262728292A2B2C2D2E2F% - 303132333435363738393A3B3C3D3E3F% - 404142434445464748494A4B4C4D4E4F% - 505152535455565758595A5B5C5D5E5F% - 606162636465666768696A6B6C6D6E6F% - 707172737475767778797A7B7C7D7E7F% - 808182838485868788898A8B8C8D8E8F% - 909192939495969798999A9B9C9D9E9F% - A0A1A2A3A4A5A6A7A8A9AAABACADAEAF% - B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF% - C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF% - D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF% - E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF% - F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF% -} -\ltx@onelevel@sanitize\AllBytesHex -\expandafter\lowercase\expandafter{% - \expandafter\def\expandafter\AllBytesHexLC - \expandafter{\AllBytesHex}% -} -\begingroup - \catcode`\#=12 % - \xdef\AllBytesName{% - #01#02#03#04#05#06#07#08#09#0A#0B#0C#0D#0E#0F% - #10#11#12#13#14#15#16#17#18#19#1A#1B#1C#1D#1E#1F% - #20!"#23$#25&'#28#29*+,-.#2F% - 0123456789:;#3C=#3E?% - @ABCDEFGHIJKLMNO% - PQRSTUVWXYZ#5B\ltx@backslashchar#5D^_% - `abcdefghijklmno% - pqrstuvwxyz#7B|#7D\string~#7F% - #80#81#82#83#84#85#86#87#88#89#8A#8B#8C#8D#8E#8F% - #90#91#92#93#94#95#96#97#98#99#9A#9B#9C#9D#9E#9F% - #A0#A1#A2#A3#A4#A5#A6#A7#A8#A9#AA#AB#AC#AD#AE#AF% - #B0#B1#B2#B3#B4#B5#B6#B7#B8#B9#BA#BB#BC#BD#BE#BF% - #C0#C1#C2#C3#C4#C5#C6#C7#C8#C9#CA#CB#CC#CD#CE#CF% - #D0#D1#D2#D3#D4#D5#D6#D7#D8#D9#DA#DB#DC#DD#DE#DF% - #E0#E1#E2#E3#E4#E5#E6#E7#E8#E9#EA#EB#EC#ED#EE#EF% - #F0#F1#F2#F3#F4#F5#F6#F7#F8#F9#FA#FB#FC#FD#FE#FF% - }% -\endgroup -\ltx@onelevel@sanitize\AllBytesName -\edef\AllBytesFromName{\expandafter\ltx@gobble\AllBytes} - -\begingroup - \def\|{|}% - \edef\%{\ltx@percentchar}% - \catcode`\|=0 % - \catcode`\#=12 % - \catcode`\~=12 % - \catcode`\\=12 % - |xdef|AllBytesString{% - \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017% - \020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037% - \040!"#$|%&'\(\)*+,-./% - 0123456789:;<=>?% - @ABCDEFGHIJKLMNO% - PQRSTUVWXYZ[\\]^_% - `abcdefghijklmno% - pqrstuvwxyz{||}~\177% - \200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217% - \220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237% - \240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257% - \260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277% - \300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317% - \320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337% - \340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357% - \360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377% - }% -|endgroup -\ltx@onelevel@sanitize\AllBytesString -% \end{macrocode} -% \begin{macrocode} -\def\msg#{\immediate\write16} -\def\Test#1#2#3{% - \begingroup - #1\TestResult{#2}% - \ifx\TestResult#3% - \else - \newlinechar=10 % - \msg{Expect:^^J#3}% - \msg{Result:^^J\TestResult}% - \errmessage{\string#2 -\string#1-> \string#3}% - \fi - \endgroup -} -\Test\EdefEscapeHex\AllBytes\AllBytesHex -\Test\EdefUnescapeHex\AllBytesHex\AllBytes -\Test\EdefEscapeName\AllBytes\AllBytesName -\Test\EdefUnescapeName\AllBytesName\AllBytesFromName -\Test\EdefEscapeString\AllBytes\AllBytesString -\Test\EdefUnescapeString\AllBytesString\AllBytes -% \end{macrocode} -% \begin{macrocode} -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -2087,12 +1334,6 @@ $ \the\count\ltx@cclv % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdfescape.sty & tex/generic/oberdiek/pdfescape.sty\\ % pdfescape.pdf & doc/latex/oberdiek/pdfescape.pdf\\ -% test/pdfescape-test1.tex & doc/latex/oberdiek/test/pdfescape-test1.tex\\ -% test/pdfescape-test2.tex & doc/latex/oberdiek/test/pdfescape-test2.tex\\ -% test/pdfescape-test3.tex & doc/latex/oberdiek/test/pdfescape-test3.tex\\ -% test/pdfescape-test4.tex & doc/latex/oberdiek/test/pdfescape-test4.tex\\ -% test/pdfescape-test5.tex & doc/latex/oberdiek/test/pdfescape-test5.tex\\ -% test/pdfescape-test6.tex & doc/latex/oberdiek/test/pdfescape-test6.tex\\ % pdfescape.dtx & source/latex/oberdiek/pdfescape.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/pdfescape.pdf b/macros/latex/contrib/oberdiek/pdfescape.pdf index 3f915ced82..4100374575 100644 Binary files a/macros/latex/contrib/oberdiek/pdfescape.pdf and b/macros/latex/contrib/oberdiek/pdfescape.pdf differ diff --git a/macros/latex/contrib/oberdiek/pdflscape.dtx b/macros/latex/contrib/oberdiek/pdflscape.dtx index 8743b2ebbb..e808b973e3 100644 --- a/macros/latex/contrib/oberdiek/pdflscape.dtx +++ b/macros/latex/contrib/oberdiek/pdflscape.dtx @@ -66,14 +66,6 @@ % Installation: % TDS:tex/latex/oberdiek/pdflscape.sty % TDS:doc/latex/oberdiek/pdflscape.pdf -% TDS:doc/latex/oberdiek/test/pdflscape-test1.tex -% TDS:doc/latex/oberdiek/test/pdflscape-test2.tex -% TDS:doc/latex/oberdiek/test/pdflscape-test3.tex -% TDS:doc/latex/oberdiek/test/pdflscape-test4.tex -% TDS:doc/latex/oberdiek/test/pdflscape-test5.tex -% TDS:doc/latex/oberdiek/test/pdflscape-test6.tex -% TDS:doc/latex/oberdiek/test/pdflscape-test6.txt -% TDS:doc/latex/oberdiek/test/ExtractRotate.java % TDS:source/latex/oberdiek/pdflscape.dtx % %<*ignore> @@ -152,7 +144,7 @@ and the derived files \nopreamble \nopostamble % \file{pdflscape-test6.txt}{\from{pdflscape.dtx}{result6}}% - \file{ExtractRotate.java}{\from{pdflscape.dtx}{ExtractRotate}}% +% \file{ExtractRotate.java}{\from{pdflscape.dtx}{ExtractRotate}}% % \usedir{source/latex/oberdiek/catalogue}% % \file{pdflscape.xml}{\from{pdflscape.dtx}{catalogue}}% } @@ -192,21 +184,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pdflscape.drv} % @@ -617,216 +594,6 @@ and the derived files % % \end{macrocode} % -% \section{Test} -% -% \subsection{Driver detection tests} -% \begin{macrocode} -%<*test0> -\NeedsTeXFormat{LaTeX2e} -\documentclass{minimal} -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test1> -\usepackage{ifpdf} -\ifpdf - \def\ExpectDriver{pdftex}% -\fi -\usepackage{ifxetex}% -\ifxetex - \def\ExpectDriver{dvipdfm}% -\fi -\usepackage{pdflscape}[2016/05/14] -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test2> -\def\ExpectDriver{pdftex} -\usepackage[pdftex]{pdflscape}[2016/05/14] -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test3> -\def\ExpectDriver{dvipdfm} -\usepackage[dvipdfmx]{pdflscape}[2016/05/14] -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test4> -\def\ExpectDriver{dvips} -\usepackage[dvipsone]{graphics} -\usepackage{pdflscape}[2016/05/14] -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test0> -\begin{document} -\begin{qstest}{driver}{driver} - \makeatletter - \Expect*{\PLS@driver}*{\ExpectDriver}% -\end{qstest} -\end{document} -% -% \end{macrocode} -% -% \subsection{Test for \cs{PLS@CheckAngle}} -% -% \begin{macrocode} -%<*test5> -\NeedsTeXFormat{LaTeX2e} -\documentclass{minimal} -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\usepackage{pdflscape}[2016/05/14] -\begin{document} -\begin{qstest}{checkangle}{checkangle} - \makeatletter - \def\Result{% - \def\ResultString{\the\count@}% - }% - \def\PackageError#1#2#3{% - \def\Result{% - \def\ResultString{error}% - }% - }% - \def\Test#1#2{% - \begingroup - \PLS@CheckAngle{#1}% - \Result - \Expect*{\ResultString}{#2}% - \endgroup - }% - \Test{0}{0}% - \Test{90}{90}% - \Test{180}{180}% - \Test{270}{270}% - \Test{360}{0}% - \Test{450}{90}% - \Test{540}{180}% - \Test{630}{270}% - \Test{720}{0}% - \Test{3600}{0}% - \Test{3690}{90}% - \Test{-90}{270}% - \Test{-180}{180}% - \Test{-270}{-90}% - \Test{-360}{0}% - \Test{-450}{270}% - \Test{540}{180}% - \Test{-630}{90}% - \Test{-720}{0}% - \Test{-3600}{0}% - \Test{-3690}{270}% - \Test{1}{error}% - \Test{-1}{error}% - \Test{123}{error}% -\end{qstest} -\end{document} -% -% \end{macrocode} -% -% \subsection{Test for rotate} -% -% \begin{macrocode} -%<*test6> -\NeedsTeXFormat{LaTeX2e} -\documentclass{article} -\usepackage{pdflscape}[2016/05/14] -\begin{document} -\section{Portrait page} -\begin{landscape} -\section{Landscape page} -Foo bar foo bar foo bar foo bar foo bar -foo bar foo bar foo bar foo bar foo bar. -\end{landscape} -\section{Portrait Section} -Foo bar -\begin{landscape} -\section{Again Landscape Section} -\newpage -\section{Second Page of Landscape Section} -\end{landscape} -\section{Second Last Portrait Page} -\newpage -\section{Last Portrait Page} -\end{document} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*result6> -/Page 1 /Rotate 0 -/Page 2 /Rotate 90 -/Page 3 /Rotate 0 -/Page 4 /Rotate 90 -/Page 5 /Rotate 90 -/Page 6 /Rotate 0 -/Page 7 /Rotate 0 -% -% \end{macrocode} -% -% \begin{macrocode} -%<*ExtractRotate> -/** - * ExtractRotate.java - * - * Copyright (C) 2007 by Heiko Oberdiek - * - * Requires: PDFBox (http://www.pdfbox.org/) - * - * Syntax: java ExtractRotate - * - * The is analyzed and for each page its rotation - * setting is printed in the . Example: - * /Page 1 /Rotate 0 - * /Page 2 /Rotate 90 - */ -import java.io.FileInputStream; -import java.io.FileWriter; -import org.pdfbox.pdfparser.PDFParser; -import org.pdfbox.pdmodel.PDDocument; -import org.pdfbox.pdmodel.PDDocumentCatalog; -import org.pdfbox.pdmodel.PDPage; - -public class ExtractRotate { - - public static void main(String[] args) { - try { - String infile = args[0]; - String outfile = args[1]; - FileWriter out = new FileWriter(outfile); - PDFParser parser = - new PDFParser(new FileInputStream(infile)); - parser.parse(); - PDDocument document = parser.getPDDocument(); - PDDocumentCatalog catalog = document.getDocumentCatalog(); - int i = 0; - for (Object page: catalog.getAllPages()) { - i++; - out.write("/Page " + i + " " + "/Rotate " - + ((PDPage)page).findRotation() + "\n"); - } - document.close(); - out.close(); - } - catch (Exception e) { - e.printStackTrace(); - System.exit(1); - } - } -} -% -% \end{macrocode} -% % \section{Installation} % % \subsection{Download} @@ -876,12 +643,6 @@ public class ExtractRotate { % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdflscape.sty & tex/latex/oberdiek/pdflscape.sty\\ % pdflscape.pdf & doc/latex/oberdiek/pdflscape.pdf\\ -% test/pdflscape-test1.tex & doc/latex/oberdiek/test/pdflscape-test1.tex\\ -% test/pdflscape-test2.tex & doc/latex/oberdiek/test/pdflscape-test2.tex\\ -% test/pdflscape-test3.tex & doc/latex/oberdiek/test/pdflscape-test3.tex\\ -% test/pdflscape-test4.tex & doc/latex/oberdiek/test/pdflscape-test4.tex\\ -% test/pdflscape-test5.tex & doc/latex/oberdiek/test/pdflscape-test5.tex\\ -% test/pdflscape-test6.tex & doc/latex/oberdiek/test/pdflscape-test6.tex\\ % test/pdflscape-test6.txt & doc/latex/oberdiek/test/pdflscape-test6.txt\\ % test/ExtractRotate.java & doc/latex/oberdiek/test/ExtractRotate.java\\ % pdflscape.dtx & source/latex/oberdiek/pdflscape.dtx\\ diff --git a/macros/latex/contrib/oberdiek/pdflscape.pdf b/macros/latex/contrib/oberdiek/pdflscape.pdf index 6af1d671f2..39e9c4ff80 100644 Binary files a/macros/latex/contrib/oberdiek/pdflscape.pdf and b/macros/latex/contrib/oberdiek/pdflscape.pdf differ diff --git a/macros/latex/contrib/oberdiek/pdfrender.dtx b/macros/latex/contrib/oberdiek/pdfrender.dtx index 395d21ae50..7558ad61ac 100644 --- a/macros/latex/contrib/oberdiek/pdfrender.dtx +++ b/macros/latex/contrib/oberdiek/pdfrender.dtx @@ -68,11 +68,6 @@ % Installation: % TDS:tex/generic/oberdiek/pdfrender.sty % TDS:doc/latex/oberdiek/pdfrender.pdf -% TDS:doc/latex/oberdiek/test/pdfrender-test1.tex -% TDS:doc/latex/oberdiek/test/pdfrender-test2.tex -% TDS:doc/latex/oberdiek/test/pdfrender-test3.tex -% TDS:doc/latex/oberdiek/test/pdfrender-test4.tex -% TDS:doc/latex/oberdiek/test/pdfrender-test5.tex % TDS:source/latex/oberdiek/pdfrender.dtx % %<*ignore> @@ -149,10 +144,6 @@ and the derived files % \file{pdfrender-test3.tex}{\from{pdfrender.dtx}{test3}}% % \file{pdfrender-test4.tex}{\from{pdfrender.dtx}{test4}}% % \file{pdfrender-test5.tex}{\from{pdfrender.dtx}{test5}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pdfrender.xml}{\from{pdfrender.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -191,21 +182,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pdfrender.drv} % @@ -1383,286 +1359,7 @@ and the derived files \PdfRender@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input pdfrender.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Simple test file} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{pdfrender-test2.tex}[2018/11/01] -\documentclass{article} -\usepackage{color} -\usepackage{pdfrender}[2018/11/01] -\begin{document} -Hello World -\newpage -Start -\textpdfrender{% - TextRenderingMode=1,% - LineWidth=.1,% - LineCapStyle=2,% - LineJoinStyle=1,% - MiterLimit=1.2,% - LineDashPattern=[2 2]0,% - RenderingIntent=Saturation,% -}{Hello\newpage World} -Stop -\par -\newlength{\LineWidth} -\setlength{\LineWidth}{.5pt} -Start -\textpdfrender{% - FillColor=yellow,% - StrokeColor=[cmyk]{1,.5,0,0},% - TextRenderingMode=FillStroke,% - LineWidth=.5\LineWidth,% - LineCapStyle=Round,% - LineJoinStyle=Bevel,% -}{Out-\par\newpage line} -Stop -\end{document} -% -% \end{macrocode} -% -% \subsection{Further tests} -% -% Robustness and bookmarks. -% \begin{macrocode} -%<*test3> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{pdfrender-test3.tex}[2018/11/01] -\documentclass{article} -\usepackage{pdfrender}[2018/11/01] -\usepackage{hyperref} -\usepackage{bookmark} -\begin{document} -\tableofcontents -\section{% - \textpdfrender{% - TextRenderingMode=1,% - LineCapStyle=2,% - LineJoinStyle=1,% - MiterLimit=1.2,% - LineDashPattern=[2 2]0,% - RenderingIntent=Saturation,% - }{Hello World}% -} -\end{document} -% -% \end{macrocode} -% -% Color algorithm if \cs{pdfmatch} is not available. -% \begin{macrocode} -%<*test4> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{pdfrender-test4.tex}[2018/11/01] -\documentclass[12pt]{article} -\usepackage{pdfrender}[2018/11/01] -\usepackage{color} -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -\makeatletter -\newcommand*{\CheckColor}[1]{% - \Expect{#1}*{\current@color}% -} -\makeatother -\begin{document} - \begin{qstest}{color}{color}% - \CheckColor{0 g 0 G}% - \Huge\bfseries - \noindent - \textpdfrender{% - TextRenderingMode=2,% - LineWidth=.5,% - FillColor=yellow,% - StrokeColor=blue,% - }{% - \CheckColor{0 0 1 0 k 0 0 1 RG}% - Blue(Yellow)\\% - \textpdfrender{% - FillColor=green,% - }{% - \CheckColor{0 1 0 rg 0 0 1 RG}% - Blue(Green)% - }\\% - \CheckColor{0 0 1 0 k 0 0 1 RG}% - Blue(Yellow)\\% - \textpdfrender{% - StrokeColor=red,% - }{% - \CheckColor{0 0 1 0 k 1 0 0 RG}% - Red(Yellow)% - }\\% - \CheckColor{0 0 1 0 k 0 0 1 RG}% - Blue(Yellow) % - }% - \end{qstest}% - \begin{qstest}{colorlast}{colorlast}% - \makeatletter - \def\Test#1#2#3{% - \begingroup - \def\current@color{#1}% - \textpdfrender{#2}{% - \CheckColor{#3}% - }% - \endgroup - }% - \Test{1 g 0 0 1 RG 0 0 1 0 k 0.5 G}% - {StrokeColor=green}% - {0 0 1 0 k 0 1 0 RG}% - \Test{1 g 0 0 1 RG 0 0 1 0 k 0.5 G}% - {FillColor=red}% - {1 0 0 rg 0.5 G}% - \end{qstest}% -\end{document} -% -% \end{macrocode} -% -% \subsection{Compatibility with \plainTeX} -% -% \begin{macrocode} -%<*test5> -\input luatex85.sty -\pdfoutput=1 % -\hsize=6.5in -\vsize=8.9in -\pdfpagewidth=\hsize -\pdfpageheight=\vsize -\parfillskip=0pt plus 1fil\relax -\input pdfrender.sty\relax -\catcode`\{=1 % -\catcode`\}=2 % -\let\OrgMakeFootLine\makefootline -\def\makefootline{% - \begingroup\normalcolor\OrgMakeFootLine\endgroup -} -\font\f=ec-lmr10 scaled 3000\relax -\f -Before % -\textpdfrender{% - TextRenderingMode=1,% - LineWidth=.1,% -}{Hello\par\vfill\penalty-10000 World} % -After % -\par -\vfill -\penalty-10000 % -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1711,11 +1408,6 @@ After % % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdfrender.sty & tex/generic/oberdiek/pdfrender.sty\\ % pdfrender.pdf & doc/latex/oberdiek/pdfrender.pdf\\ -% test/pdfrender-test1.tex & doc/latex/oberdiek/test/pdfrender-test1.tex\\ -% test/pdfrender-test2.tex & doc/latex/oberdiek/test/pdfrender-test2.tex\\ -% test/pdfrender-test3.tex & doc/latex/oberdiek/test/pdfrender-test3.tex\\ -% test/pdfrender-test4.tex & doc/latex/oberdiek/test/pdfrender-test4.tex\\ -% test/pdfrender-test5.tex & doc/latex/oberdiek/test/pdfrender-test5.tex\\ % pdfrender.dtx & source/latex/oberdiek/pdfrender.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/pdfrender.pdf b/macros/latex/contrib/oberdiek/pdfrender.pdf index 1852c870e2..5379dd894b 100644 Binary files a/macros/latex/contrib/oberdiek/pdfrender.pdf and b/macros/latex/contrib/oberdiek/pdfrender.pdf differ diff --git a/macros/latex/contrib/oberdiek/picture.dtx b/macros/latex/contrib/oberdiek/picture.dtx index 956110084e..ba4121a603 100644 --- a/macros/latex/contrib/oberdiek/picture.dtx +++ b/macros/latex/contrib/oberdiek/picture.dtx @@ -131,10 +131,6 @@ and the derived files \file{picture.sty}{\from{picture.dtx}{package}}% \usedir{doc/latex/oberdiek}% \file{picture-example.tex}{\from{picture.dtx}{example}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{picture.xml}{\from{picture.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -171,21 +167,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{picture.drv} % diff --git a/macros/latex/contrib/oberdiek/picture.pdf b/macros/latex/contrib/oberdiek/picture.pdf index 18a51bc158..8d58447aa0 100644 Binary files a/macros/latex/contrib/oberdiek/picture.pdf and b/macros/latex/contrib/oberdiek/picture.pdf differ diff --git a/macros/latex/contrib/oberdiek/pmboxdraw.dtx b/macros/latex/contrib/oberdiek/pmboxdraw.dtx index ef4e491f31..480eac755d 100644 --- a/macros/latex/contrib/oberdiek/pmboxdraw.dtx +++ b/macros/latex/contrib/oberdiek/pmboxdraw.dtx @@ -64,7 +64,6 @@ % TDS:tex/latex/oberdiek/pmboxdraw.sty % TDS:tex/latex/oberdiek/pmboxdrawenc.dfu % TDS:doc/latex/oberdiek/pmboxdraw.pdf -% TDS:doc/latex/oberdiek/test/pmboxdraw-test1.tex % TDS:source/latex/oberdiek/pmboxdraw.dtx % %<*ignore> @@ -133,10 +132,6 @@ and the derived files \file{pmboxdrawenc.dfu}{\from{pmboxdraw.dtx}{utf8}}% % \usedir{doc/latex/oberdiek/test}% % \file{pmboxdraw-test1.tex}{\from{pmboxdraw.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{pmboxdraw.xml}{\from{pmboxdraw.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -181,21 +176,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{pmboxdraw.drv} % @@ -5266,123 +5246,7 @@ $ \kern.5\pmbd@C % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \begin{macrocode} -%<*test1> -\def\LoadCommand{\RequirePackage{pmboxdraw}[2019/02/28]} -% -% \end{macrocode} -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input pmboxdraw.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -5432,7 +5296,6 @@ $ \kern.5\pmbd@C % pmboxdraw.sty & tex/latex/oberdiek/pmboxdraw.sty\\ % pmboxdrawenc.dfu & tex/latex/oberdiek/pmboxdrawenc.dfu\\ % pmboxdraw.pdf & doc/latex/oberdiek/pmboxdraw.pdf\\ -% test/pmboxdraw-test1.tex & doc/latex/oberdiek/test/pmboxdraw-test1.tex\\ % pmboxdraw.dtx & source/latex/oberdiek/pmboxdraw.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/pmboxdraw.pdf b/macros/latex/contrib/oberdiek/pmboxdraw.pdf index df43c95699..26299b48cd 100644 Binary files a/macros/latex/contrib/oberdiek/pmboxdraw.pdf and b/macros/latex/contrib/oberdiek/pmboxdraw.pdf differ diff --git a/macros/latex/contrib/oberdiek/protecteddef.dtx b/macros/latex/contrib/oberdiek/protecteddef.dtx index 2ddc5c9cad..cff42cccf7 100644 --- a/macros/latex/contrib/oberdiek/protecteddef.dtx +++ b/macros/latex/contrib/oberdiek/protecteddef.dtx @@ -66,8 +66,6 @@ % Installation: % TDS:tex/generic/oberdiek/protecteddef.sty % TDS:doc/latex/oberdiek/protecteddef.pdf -% TDS:doc/latex/oberdiek/test/protecteddef-test1.tex -% TDS:doc/latex/oberdiek/test/protecteddef-test2.tex % TDS:source/latex/oberdiek/protecteddef.dtx % %<*ignore> @@ -139,10 +137,6 @@ and the derived files % \usedir{doc/latex/oberdiek/test}% % \file{protecteddef-test1.tex}{\from{protecteddef.dtx}{test1}}% % \file{protecteddef-test2.tex}{\from{protecteddef.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{protecteddef.xml}{\from{protecteddef.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -179,21 +173,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{protecteddef.drv} % @@ -553,275 +532,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input protecteddef.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test without \hologo{LaTeX} and \cs{protected}} -% -% \begin{macrocode} -%<*test2> -\errorcontextlines=10000 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input protecteddef.sty\relax - \catcode`\{=1 % - \catcode`\}=2 % - \catcode`\#=6 % -\else - \RequirePackage{protecteddef}[2016/05/16]% -\fi -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname protected\endcsname\relax - \let\pdef\def -\else - \def\pdef{\protected\def}% -\fi -\def\msg#{\immediate\write16} -\countdef\errcount=2 % -\long\def\BeginCheck#1\ProtectedDef#2\EndCheck{% - \begingroup - \toks0={\ProtectedDef#2}% - \msg{<<\the\toks0>>}% - \endgroup - \setbox0=\hbox{% - #1% - \ProtectedDef#2% - \check\foo - }% - \ifdim\wd0=0pt\relax - \else - \errmessage{[Definition] Unwanted spaces?!}% - \fi - \setbox0=\hbox{% - \def\fooinitial{XYZ}% - \let\foo\fooinitial - \errcount=0 % - \expandafter\def\csname @PackageError\endcsname##1##2##3{% - \advance\errcount by 1 % - }% - \expandafter\def\csname @notdefinable\endcsname{% - \advance\errcount by 1 % - }% - \ProtectedDef#2% - \ifnum\errcount=1 % - \else - \errmessage{1 error expected, but found: \the\errcount}% - \fi - \ifx\foo\fooinitial - \else - \def\space{ }% - \errmessage{\string\foo\space is overwritten}% - \fi - }% - \ifdim\wd0=0pt\relax - \else - \errmessage{[Error] Unwanted spaces?!}% - \fi -} -\chardef\DeclareVersion=0 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname protected\endcsname\relax - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname DeclareRobustCommand\endcsname\relax - \else - \chardef\DeclareVersion=1 % - \fi -\fi -\ifnum\DeclareVersion=0 % - \def\check#1{% - \ifx\cmp#1% - \msg{* Test passed.}% - \else - \msg{}% - \msg{[\meaning#1]}% - \msg{[\meaning\cmp]}% - \errmessage{Test failed!}% - \fi - }% -\else - \def\check#1{% - \begingroup - \escapechar=-1 % - \edef\x{\endgroup - \def\noexpand\cs/{\string#1}% - }\x - \edef\CMP{% - \noexpand\protect - \expandafter\noexpand\csname\cs/ \endcsname - }% - \ifx\CMP#1% - \expandafter\ifx\csname\cs/ \endcsname\cmp - \msg{Test passed.}% - \else - \msg{}% - \msg{[\expandafter\meaning\csname\cs/ \endcsname]}% - \msg{[\meaning\cmp]}% - \errmessage{Test failed!}% - \fi - \else - \msg{}% - \msg{[\meaning#1]}% - \msg{[\meaning\CMP]}% - \errmessage{Test failed!}% - \fi - }% -\fi - -\tracingmacros=1 - -\BeginCheck - \pdef\cmp{}% - \ProtectedDef*\foo{}% -\EndCheck - -\BeginCheck - \pdef\cmp{}% - \ProtectedDef*\foo[0]{}% -\EndCheck - -\BeginCheck - \pdef\cmp#1{<#1>}% - \ProtectedDef*\foo[1]{<#1>}% -\EndCheck - -\BeginCheck - \pdef\cmp(#1){<#1>}% - \ProtectedDef*\foo(#1){<#1>}% -\EndCheck - -\BeginCheck - \long\pdef\cmp{}% - \ProtectedDef\foo{}% -\EndCheck - -\BeginCheck - \long\pdef\cmp{}% - \ProtectedDef\foo[0]{}% -\EndCheck - -\BeginCheck - \long\pdef\cmp#1{<#1>}% - \ProtectedDef\foo[1]{<#1>}% -\EndCheck - -\BeginCheck - \long\pdef\cmp(#1){<#1>}% - \ProtectedDef\foo(#1){<#1>}% -\EndCheck - -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -870,8 +581,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % protecteddef.sty & tex/generic/oberdiek/protecteddef.sty\\ % protecteddef.pdf & doc/latex/oberdiek/protecteddef.pdf\\ -% test/protecteddef-test1.tex & doc/latex/oberdiek/test/protecteddef-test1.tex\\ -% test/protecteddef-test2.tex & doc/latex/oberdiek/test/protecteddef-test2.tex\\ % protecteddef.dtx & source/latex/oberdiek/protecteddef.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/protecteddef.pdf b/macros/latex/contrib/oberdiek/protecteddef.pdf index d3ae88abbd..09203fa0d1 100644 Binary files a/macros/latex/contrib/oberdiek/protecteddef.pdf and b/macros/latex/contrib/oberdiek/protecteddef.pdf differ diff --git a/macros/latex/contrib/oberdiek/refcount.dtx b/macros/latex/contrib/oberdiek/refcount.dtx index 3a2c961431..b70bd4799e 100644 --- a/macros/latex/contrib/oberdiek/refcount.dtx +++ b/macros/latex/contrib/oberdiek/refcount.dtx @@ -64,11 +64,6 @@ % Installation: % TDS:tex/latex/oberdiek/refcount.sty % TDS:doc/latex/oberdiek/refcount.pdf -% TDS:doc/latex/oberdiek/test/refcount-test1.tex -% TDS:doc/latex/oberdiek/test/refcount-test2.tex -% TDS:doc/latex/oberdiek/test/refcount-test3.tex -% TDS:doc/latex/oberdiek/test/refcount-test4.tex -% TDS:doc/latex/oberdiek/test/refcount-test5.tex % TDS:source/latex/oberdiek/refcount.dtx % %<*ignore> @@ -141,10 +136,6 @@ and the derived files % \file{refcount-test3.tex}{\from{refcount.dtx}{test3}}% % \file{refcount-test4.tex}{\from{refcount.dtx}{test3,test4}}% % \file{refcount-test5.tex}{\from{refcount.dtx}{test5}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{refcount.xml}{\from{refcount.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -181,21 +172,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{refcount.drv} % @@ -899,416 +875,7 @@ and the derived files \rc@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input refcount.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \begin{macrocode} -%<*test2> -\errorcontextlines=10000 % -\showboxbreadth=10000 % -\showboxdepth=10000 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input refcount.sty\relax -\else - \RequirePackage{refcount}[2016/05/16]% -\fi -\catcode`\@=11 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname @onelevel@sanitize\endcsname\relax - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname detokenize\endcsname\relax - \def\strip@prefix#1->{}% - \def\@onelevel@sanitize#1{% - \edef#1{% - \expandafter\strip@prefix\meaning#1% - }% - }% - \else - \def\@onelevel@sanitize#1{% - \edef#1{% - \detokenize\expandafter{#1}% - }% - }% - \fi -\fi -\def\msg#{\immediate\write16} -\def\empty{} -\def\space{ } -% \end{macrocode} -% \begin{macrocode} -\def\r@foo{{\empty 1}{\empty 2}} -\long\def\test#1#2{% - \begingroup - \setbox0=\hbox{% - \def\TestTask{#1}% - \@onelevel@sanitize\TestTask - \msg{* \TestTask}% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\TestResult - \expandafter\expandafter\expandafter{% - #1% - }% - \def\TestExpected{#2}% - \ifx\TestResult\TestExpected - \msg{ \space ok.}% - \else - \@onelevel@sanitize\TestResult - \@onelevel@sanitize\TestExpected - \msg{ \space Result: \space\space[\TestResult]}% - \msg{ \space Expected: [\TestExpected]}% - \errmessage{Test failed!}% - \fi - }% - \ifdim\wd0=0pt % - \else - \showbox0 % - \fi - \endgroup -} -\test{\getrefnumber{foo}}{\empty 1} -\test{\getpagerefnumber{foo}}{\empty 2} -\test{\getrefbykeydefault{foo}{}{\empty default}}{\empty 1} -\test{\getrefbykeydefault{foo}{page}{\empty default}}{\empty 2} -\test{\getrefbykeydefault{foo}{name}{\empty default}}{\empty default} -\test{\getrefbykeydefault{foo}{anchor}{\empty default}}{\empty default} -\test{\getrefbykeydefault{foo}{url}{\empty default}}{\empty default} -\test{\getrefbykeydefault{foo}{title}{\empty default}}{\empty default} -\msg{} -\def\r@foo{{}{}{}{}{}{}{}{}{}{}} -\def\Test#1#2\\{% - \test{#1{foo}#2}{}% -} -\def\TestGroup{% - \Test\getrefnumber\\% - \Test\getpagerefnumber\\% - \Test\getrefbykeydefault{}{}\\% - \Test\getrefbykeydefault{page}{}\\% - \Test\getrefbykeydefault{anchor}{}\\% - \Test\getrefbykeydefault{name}{}\\% - \Test\getrefbykeydefault{url}{}\\% -} -\TestGroup -\Test\getrefbykeydefault{title}{}\\% -\msg{} -\def\r@foo{\par\par\par\par\par\par\par\par} -\long\def\Test#1#2\\{% - \test{#1{foo}#2}{\par}% -} -\TestGroup -\test{\getrefbykeydefault{title}{}{}}{} -\msg{} -\def\r@foo{{ }{ }{ }{ }{ }} -\def\Test#1#2\\{% - \test{#1{foo}#2}{ }% -} -\TestGroup -\msg{} -\long\def\TestDefault#1{% - \begingroup - \setrefcountdefault{#1}% - \test{\getrefnumber{foo}}{#1}% - \test{\getpagerefnumber{foo}}{#1}% - \endgroup -} -\def\TestDefaultX{% - \TestDefault{}% - \TestDefault{\par}% - \TestDefault{ }% - \TestDefault{\space}% -} -\let\r@foo\@undefined -\TestDefaultX -\let\r@foo\relax -\TestDefaultX -\def\r@foo{} -\TestDefaultX -% \end{macrocode} -% \begin{macrocode} -\msg{} -\long\def\Test#1#2#3#4{% - \begingroup - \def\TestTask{#1}% - \@onelevel@sanitize\TestTask - \msg{* [\TestTask]}% - \edef\TestResultA{\IfRefUndefinedExpandable{#1}{#2}{#3}}% - \IfRefUndefinedBabel{#1}{% - \def\TestResultB{#2}% - }{% - \def\TestResultB{#3}% - }% - \def\TestExpected{#4}% - \ifx\TestResultA\TestExpected - \msg{ \space ok.}% - \else - \begingroup - \@onelevel@sanitize\TestResultA - \@onelevel@sanitize\TestExpected - \msg{ \space Result: \space\space[\TestResultA]}% - \msg{ \space Expected: [\TestExpected]}% - \errmessage{Test failed!}% - \endgroup - \fi - \ifx\TestResultB\TestExpected - \msg{ \space ok.}% - \else - \begingroup - \@onelevel@sanitize\TestResultB - \@onelevel@sanitize\TestExpected - \msg{ \space Result: \space\space[\TestResultB]}% - \msg{ \space Expected: [\TestExpected]}% - \errmessage{Test failed!}% - \endgroup - \fi - \endgroup -} -\begingroup - \def\r@foo{{}{}}% - \let\r@bar\@undefined - \let\r@xyz\relax - \Test{foo}{true}{false}{false}% - \Test{bar}{true}{false}{true}% - \Test{xyz}{true}{false}{true}% -\endgroup -% \end{macrocode} -% \begin{macrocode} -\csname @@end\endcsname\end -% -% \end{macrocode} -% \subsection{Test with package \xpackage{titleref}} -% -% \begin{macrocode} -%<*test3> -\NeedsTeXFormat{LaTeX2e} -\documentclass{article} -\usepackage{refcount}[2016/05/16] -%\usepackage{nameref} -\usepackage{titleref} -\begin{document} -\section{Hello World} -\label{sec:hello} -\section{\hbox{xy}} -\label{sec:foo} -% -\makeatletter -\@ifundefined{r@sec:hello}{% - \typeout{==> Compile twice!}% -}{% - \def\test#1#2{% - \begingroup - \def\TestTask{#1}% - \@onelevel@sanitize\TestTask - \typeout{* \TestTask}% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\TestResult - \expandafter\expandafter\expandafter{% - #1% - }% - \def\TestExpected{#2}% - \ifx\TestResult\TestExpected - \typeout{ \space ok.}% - \else - \@onelevel@sanitize\TestResult - \@onelevel@sanitize\TestExpected - \typeout{ \space Result: \space\space[\TestResult]}% - \typeout{ \space Expected: [\TestExpected]}% - \errmessage{Test failed!}% - \fi - \endgroup - }% - \test{\getrefbykeydefault{sec:hello}{title}{}}{Hello World}% - \test{\getrefbykeydefault{sec:foo}{title}{}}{\hbox{xy}}% - \begingroup - \def\hbox#1{[#1]}% hash-ok - \test{\getrefbykeydefault{sec:foo}{title}{}}{\hbox{xy}}% - \endgroup -} -\makeatother -% \end{macrocode} -% \begin{macrocode} -\end{document} -% -% \end{macrocode} -% \begin{macrocode} -%<*test5> -\NeedsTeXFormat{LaTeX2e} -\documentclass{book} -\usepackage{refcount}[2016/05/16] -\usepackage{zref-runs} -\newcounter{test} -\begin{document} -\ifnum\zruns>1 % - \makeatletter - \def\Test#1#2#3{% - \begingroup - \setcounter{test}{10}% - \sbox0{% - #1{test}{#2}% - \ifnum#3=\value{test}% - \else - \PackageError{test}{\string#1{#2} <> #3 (\the\value{test})}% - \fi - }% - \ifdim\wd0=0pt % - \else - \PackageError{test}{Non-empty box}\@ehc - \fi - \endgroup - }% - \makeatother - \Test\setcounterpageref{ch:two}{1}% - \Test\setcounterpageref{ch:three}{3}% - \Test\setcounterpageref{ch:four}{5}% - \Test\setcounterpageref{ch:five}{7}% - \Test\setcounterpageref{ch:six}{9}% - \Test\setcounterpageref{ch:seven}{13}% - \Test\addtocounterpageref{ch:two}{11}% - \Test\addtocounterpageref{ch:three}{13}% - \Test\addtocounterpageref{ch:four}{15}% - \Test\addtocounterpageref{ch:five}{17}% - \Test\addtocounterpageref{ch:six}{19}% - \Test\addtocounterpageref{ch:seven}{23}% - \Test\setcounterref{ch:two}{1}% - \Test\setcounterref{ch:three}{2}% - \Test\setcounterref{ch:four}{11}% - \Test\addtocounterref{ch:two}{11}% - \Test\addtocounterref{ch:three}{12}% - \Test\addtocounterref{ch:four}{21}% -\fi -\frontmatter -\chapter{Chapter one}\label{ch:one} -\cleardoublepage -\mainmatter -\chapter{Chapter two}\label{ch:two} -\cleardoublepage -\chapter{Chapter three}\label{ch:three} -\cleardoublepage -\setcounter{chapter}{10} -\chapter{Chapter four}\label{ch:four} -\cleardoublepage -\appendix -\chapter{Chapter five}\label{ch:five} -\cleardoublepage -\chapter{Chapter six}\label{ch:six} -\cleardoublepage -\null -\cleardoublepage -\chapter{Chapter seven}\label{ch:seven} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1357,11 +924,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % refcount.sty & tex/latex/oberdiek/refcount.sty\\ % refcount.pdf & doc/latex/oberdiek/refcount.pdf\\ -% test/refcount-test1.tex & doc/latex/oberdiek/test/refcount-test1.tex\\ -% test/refcount-test2.tex & doc/latex/oberdiek/test/refcount-test2.tex\\ -% test/refcount-test3.tex & doc/latex/oberdiek/test/refcount-test3.tex\\ -% test/refcount-test4.tex & doc/latex/oberdiek/test/refcount-test4.tex\\ -% test/refcount-test5.tex & doc/latex/oberdiek/test/refcount-test5.tex\\ % refcount.dtx & source/latex/oberdiek/refcount.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/refcount.pdf b/macros/latex/contrib/oberdiek/refcount.pdf index ea859eda11..a50de50a98 100644 Binary files a/macros/latex/contrib/oberdiek/refcount.pdf and b/macros/latex/contrib/oberdiek/refcount.pdf differ diff --git a/macros/latex/contrib/oberdiek/rerunfilecheck.dtx b/macros/latex/contrib/oberdiek/rerunfilecheck.dtx index 2687619377..173044c8c0 100644 --- a/macros/latex/contrib/oberdiek/rerunfilecheck.dtx +++ b/macros/latex/contrib/oberdiek/rerunfilecheck.dtx @@ -65,7 +65,6 @@ % TDS:tex/latex/oberdiek/rerunfilecheck.sty % TDS:doc/latex/oberdiek/rerunfilecheck.pdf % TDS:doc/latex/oberdiek/rerunfilecheck-example.cfg -% TDS:doc/latex/oberdiek/test/rerunfilecheck-test1.tex % TDS:source/latex/oberdiek/rerunfilecheck.dtx % %<*ignore> @@ -176,21 +175,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{rerunfilecheck.drv} % @@ -724,123 +708,7 @@ and the derived files \ReFiCh@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \begin{macrocode} -%<*test1> -\def\LoadCommand{\RequirePackage{rerunfilecheck}[2016/05/16]} -% -% \end{macrocode} -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input rerunfilecheck.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -890,7 +758,6 @@ and the derived files % rerunfilecheck.sty & tex/latex/oberdiek/rerunfilecheck.sty\\ % rerunfilecheck.pdf & doc/latex/oberdiek/rerunfilecheck.pdf\\ % rerunfilecheck-example.cfg & doc/latex/oberdiek/rerunfilecheck-example.cfg\\ -% test/rerunfilecheck-test1.tex & doc/latex/oberdiek/test/rerunfilecheck-test1.tex\\ % rerunfilecheck.dtx & source/latex/oberdiek/rerunfilecheck.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/rerunfilecheck.pdf b/macros/latex/contrib/oberdiek/rerunfilecheck.pdf index dfab7d9e4e..f0d393ffa1 100644 Binary files a/macros/latex/contrib/oberdiek/rerunfilecheck.pdf and b/macros/latex/contrib/oberdiek/rerunfilecheck.pdf differ diff --git a/macros/latex/contrib/oberdiek/resizegather.dtx b/macros/latex/contrib/oberdiek/resizegather.dtx index 6f49f1c7ad..596446de2c 100644 --- a/macros/latex/contrib/oberdiek/resizegather.dtx +++ b/macros/latex/contrib/oberdiek/resizegather.dtx @@ -63,7 +63,6 @@ % Installation: % TDS:tex/latex/oberdiek/resizegather.sty % TDS:doc/latex/oberdiek/resizegather.pdf -% TDS:doc/latex/oberdiek/test/resizegather-test1.tex % TDS:source/latex/oberdiek/resizegather.dtx % %<*ignore> @@ -131,10 +130,6 @@ and the derived files \file{resizegather.sty}{\from{resizegather.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{resizegather-test1.tex}{\from{resizegather.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{resizegather.xml}{\from{resizegather.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -178,21 +173,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{resizegather.drv} % @@ -681,118 +661,7 @@ and the derived files \ResizeGather@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input resizegather.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -841,7 +710,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % resizegather.sty & tex/latex/oberdiek/resizegather.sty\\ % resizegather.pdf & doc/latex/oberdiek/resizegather.pdf\\ -% test/resizegather-test1.tex & doc/latex/oberdiek/test/resizegather-test1.tex\\ % resizegather.dtx & source/latex/oberdiek/resizegather.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/resizegather.pdf b/macros/latex/contrib/oberdiek/resizegather.pdf index db0ac7254f..a2535e2bd5 100644 Binary files a/macros/latex/contrib/oberdiek/resizegather.pdf and b/macros/latex/contrib/oberdiek/resizegather.pdf differ diff --git a/macros/latex/contrib/oberdiek/rotchiffre.dtx b/macros/latex/contrib/oberdiek/rotchiffre.dtx index 7e9a9e980d..3023347fe1 100644 --- a/macros/latex/contrib/oberdiek/rotchiffre.dtx +++ b/macros/latex/contrib/oberdiek/rotchiffre.dtx @@ -66,8 +66,6 @@ % Installation: % TDS:tex/generic/oberdiek/rotchiffre.sty % TDS:doc/latex/oberdiek/rotchiffre.pdf -% TDS:doc/latex/oberdiek/test/rotchiffre-test1.tex -% TDS:doc/latex/oberdiek/test/rotchiffre-test2.tex % TDS:source/latex/oberdiek/rotchiffre.dtx % %<*ignore> @@ -139,10 +137,6 @@ and the derived files % \usedir{doc/latex/oberdiek/test}% % \file{rotchiffre-test1.tex}{\from{rotchiffre.dtx}{test1}}% % \file{rotchiffre-test2.tex}{\from{rotchiffre.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{rotchiffre.xml}{\from{rotchiffre.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -181,21 +175,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{rotchiffre.drv} % @@ -719,412 +698,7 @@ and the derived files \RotCh@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input rotchiffre.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \subsubsection{Preamble} -% -% \begin{macrocode} -%<*test2> -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\^=7 % -\font\rmfont=ec-lmtt10\relax -\rmfont -\showboxbreadth=10000 % -\showboxdepth=10000 % -\errorcontextlines=10000 -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input rotchiffre.sty\relax -\else - \RequirePackage{rotchiffre}[2016/05/16]% - \RequirePackage{ifluatex}[2010/03/01]% - \RequirePackage{ifxetex}[2010/09/12]% -\fi -\catcode`\@=11 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname @onelevel@sanitize\endcsname\relax - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname detokenize\endcsname\relax - \def\strip@prefix#1->{}% - \def\@onelevel@sanitize#1{% - \edef#1{% - \expandafter\strip@prefix\meaning#1% - }% - }% - \else - \def\@onelevel@sanitize#1{% - \edef#1{% - \detokenize\expandafter{#1}% - }% - }% - \fi -\fi -\def\msg#{\immediate\write16} -\def\empty{} -\begingroup - \def\x#1{% - \def\space{#1}% - \def\spacesII{#1#1}% - \def\spacesIII{#1#1#1}% - \def\spacesIV{#1#1#1#1}% - }% -\expandafter\endgroup\x{ } -% \end{macrocode} -% \begin{macrocode} -\def\PrintStr#1#2{% - \begingroup - \@onelevel@sanitize#2% - \msg{#1: [#2]}% hash-ok - \endgroup -} -\def\CheckResult{% - \PrintStr{Result}\StrResult - \ifx\StrExpect\StrResult - \msg{==> Ok}% - \else - \begingroup - \edef\x{\endgroup - \errmessage{Test failed (\chiffre)!}% - }\x - \fi -} -\long\def\test#1#2{% - \msg{}% - \begingroup - \setbox0=\hbox{% - \edef\StrInput{#1}% - \@onelevel@sanitize\StrInput - \PrintStr{ Input}\StrInput - \edef\StrExpect{#2}% - \@onelevel@sanitize\StrExpect - \PrintStr{Expect}\StrExpect - \action{#1}% - \CheckResult - }% - \ifdim\wd0=0pt % - \else - \showbox0 % - \fi - \endgroup -} -\def\cmd#1{% - \msg{* CMD: ROT#1}% - \def\chiffre{ROT#1}% - \def\action{\EdefRot{#1}\StrResult}% -} -% \end{macrocode} -% \begin{macrocode} -\def\TestIgnore#1{% - \test{#1}{#1}% -} -\begingroup - \lccode`\P=`\%% - \lccode`\B=`\\% - \lccode`\H=`\#% -\lowercase{\endgroup - \def\PercentChar{P}% - \def\BackslashChar{B}% - \def\HashChar{H}% -} -\def\TestI{% - \TestIgnore{% - \space!"\HashChar$\PercentChar&'()*+,-./% - :;<=>?@% - [\BackslashChar]^_`% - \string{|\string}\string~% - }% -} -\begingroup - \catcode0=12 % - \lccode`A=1 % - \lccode`B=2 % - \lccode`C=3 % - \lccode`D=4 % - \lccode`E=5 % - \lccode`F=6 % - \lccode`G=7 % - \lccode`H=8 % - \lccode`I=9 % - \lccode`J=10 % - \lccode`K=11 % - \lccode`L=12 % - \lccode`M=13 % - \lccode`N=14 % - \lccode`O=15 % - \lccode`P=16 % - \lccode`Q=17 % - \lccode`R=18 % - \lccode`S=19 % - \lccode`T=20 % - \lccode`U=21 % - \lccode`V=22 % - \lccode`W=23 % - \lccode`X=24 % - \lccode`Y=25 % - \lccode`Z=26 % - \lccode`a=27 % - \lccode`b=28 % - \lccode`c=29 % - \lccode`d=30 % - \lccode`e=31 % - \lccode`f=127 % - \lccode`g=128 % - \lccode`h=129 % - \lccode`y=254 % - \lccode`z=255 % -\lowercase{\endgroup - \def\TestC{% - \TestIgnore{% - ^^@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefhyz% - }% - }% - \def\TestZ{% - \TestIgnore{^^@}% - }% -} -% \end{macrocode} -% -% \subsubsection{ROT13} -% -% \begin{macrocode} -\cmd{13} -\test{% - 0123456789% - ABCDEFGHIJKLMNOPQRSTUVWXYZ% - abcdefghijklmnopqrstuvwxyz% -}{% - 0123456789% - NOPQRSTUVWXYZABCDEFGHIJKLM% - nopqrstuvwxyzabcdefghijklm% -} -\TestI -\TestC -\test{}{} -\test{A}{N} -\test{N}{A} -\test{ }{ } -\test{0a}{0n} -\test{\spacesIV}{\spacesIV} -\test{{}}{{}} -\test{\par}{\noexpand\cne} -% \end{macrocode} -% -% \subsubsection{ROT5} -% -% \begin{macrocode} -\cmd{5} -\test{% - 0123456789% - ABCDEFGHIJKLMNOPQRSTUVWXYZ% - abcdefghijklmnopqrstuvwxyz% -}{% - 5678901234% - ABCDEFGHIJKLMNOPQRSTUVWXYZ% - abcdefghijklmnopqrstuvwxyz% -} -\TestI -\TestC -% \end{macrocode} -% -% \subsubsection{ROT18} -% -% \begin{macrocode} -\cmd{18} -\test{% - ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789% - abcdefghijklmnopqrstuvwxyz% -}{% - STUVWXYZ0123456789ABCDEFGHIJKLMNOPQR% - nopqrstuvwxyzabcdefghijklm% -} -\TestI -\TestC -% \end{macrocode} -% -% \subsubsection{ROT47} -% -% \begin{macrocode} -\cmd{47} -\test{% - !"\HashChar$\PercentChar&'()*+,-./% - 0123456789% - :;<=>?@% - ABCDEFGHIJKLMNOPQRSTUVWXYZ% - [\BackslashChar]^_`% - abcdefghijklmnopqrstuvwxyz% - \string{|\string}\string~% -}{% - PQRSTUVWXYZ% - [\BackslashChar]^_`% - abcdefghijklmnopqrstuvwxyz% - \string{|\string}\string~% - !"\HashChar$\PercentChar&'()*+,-./% - 0123456789% - :;<=>?@% - ABCDEFGHIJKLMNO% -} -\TestZ -\TestC -% \end{macrocode} -% -% \subsubsection{Big chars} -% -% \begin{macrocode} -\chardef\temp=0 % -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname XeTeXrevision\endcsname\relax - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname RequirePackage\endcsname\relax - \input ifluatex.sty\relax - \else - \RequirePackage{ifluatex}[2010/03/01]% - \fi - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname luatexversion\endcsname\relax - \else - \chardef\temp=1 % - \fi -\else - \chardef\temp=1 % -\fi -\ifcase\temp - \csname @@end\expandafter\endcsname\expandafter\end -\fi -% \end{macrocode} -% \begin{macrocode} -\msg{* Big chars} -\cmd{5} -\test{}{} -\test{ }{ } -\test{ 0 1 }{ 5 6 } -\begingroup - \lccode`A=300 % - \lccode`B=1000 % - \lccode`C=10000 % -\lowercase{\endgroup - \TestIgnore{ABC}% - \TestIgnore{x A By zC xAy AxB}% -}% -% \end{macrocode} -% \begin{macrocode} -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1173,8 +747,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % rotchiffre.sty & tex/generic/oberdiek/rotchiffre.sty\\ % rotchiffre.pdf & doc/latex/oberdiek/rotchiffre.pdf\\ -% test/rotchiffre-test1.tex & doc/latex/oberdiek/test/rotchiffre-test1.tex\\ -% test/rotchiffre-test2.tex & doc/latex/oberdiek/test/rotchiffre-test2.tex\\ % rotchiffre.dtx & source/latex/oberdiek/rotchiffre.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/rotchiffre.pdf b/macros/latex/contrib/oberdiek/rotchiffre.pdf index 698c213c9c..29808342d1 100644 Binary files a/macros/latex/contrib/oberdiek/rotchiffre.pdf and b/macros/latex/contrib/oberdiek/rotchiffre.pdf differ diff --git a/macros/latex/contrib/oberdiek/scrindex.dtx b/macros/latex/contrib/oberdiek/scrindex.dtx index 68ba61790a..fea57fd1a9 100644 --- a/macros/latex/contrib/oberdiek/scrindex.dtx +++ b/macros/latex/contrib/oberdiek/scrindex.dtx @@ -133,10 +133,6 @@ and the derived files \usedir{doc/latex/oberdiek}% \file{scrindex-example1.tex}{\from{scrindex.dtx}{example1}}% \file{scrindex-example2.tex}{\from{scrindex.dtx}{example2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{scrindex.xml}{\from{scrindex.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -174,21 +170,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{scrindex.drv} % diff --git a/macros/latex/contrib/oberdiek/scrindex.pdf b/macros/latex/contrib/oberdiek/scrindex.pdf index eb5b144d21..887e13df7a 100644 Binary files a/macros/latex/contrib/oberdiek/scrindex.pdf and b/macros/latex/contrib/oberdiek/scrindex.pdf differ diff --git a/macros/latex/contrib/oberdiek/selinput.dtx b/macros/latex/contrib/oberdiek/selinput.dtx index 1dcc45ff79..97fc336c3c 100644 --- a/macros/latex/contrib/oberdiek/selinput.dtx +++ b/macros/latex/contrib/oberdiek/selinput.dtx @@ -64,11 +64,6 @@ % Installation: % TDS:tex/latex/oberdiek/selinput.sty % TDS:doc/latex/oberdiek/selinput.pdf -% TDS:doc/latex/oberdiek/test/selinput-test1.tex -% TDS:doc/latex/oberdiek/test/selinput-test2.tex -% TDS:doc/latex/oberdiek/test/selinput-test3.tex -% TDS:doc/latex/oberdiek/test/selinput-test4.tex -% TDS:doc/latex/oberdiek/test/selinput-test5.tex % TDS:source/latex/oberdiek/selinput.dtx % %<*ignore> @@ -141,10 +136,6 @@ and the derived files % \file{selinput-test3.tex}{\from{selinput.dtx}{test,test3}}% % \file{selinput-test4.tex}{\from{selinput.dtx}{test,test4}}% % \file{selinput-test5.tex}{\from{selinput.dtx}{test,test5}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{selinput.xml}{\from{selinput.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -187,21 +178,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{selinput.drv} % @@ -666,123 +642,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \begin{macrocode} -%<*test> -\NeedsTeXFormat{LaTeX2e} -\documentclass{minimal} -\usepackage{textcomp} -\usepackage{qstest} -% \end{macrocode} -% \begin{macrocode} -%<*test1|test2|test3> -\makeatletter -\let\BeginDocumentText\@empty -\def\TestEncoding#1#2{% - \SelectInputMappings{#2}% - \Expect*{\SIE@Encoding}{#1}% - \Expect*{\inputencodingname}{#1}% - \g@addto@macro\BeginDocumentText{% - \SelectInputMappings{#2}% - \Expect*{\SIE@Encoding}{#1}% - \textbf{\SIE@Encoding:} % - \kvsetkeys{test}{#2}\par - }% -} -\def\TestKey#1#2{% - \define@key{test}{#1}{% - \sbox0{##1}% - \sbox2{#2}% - \Expect*{wd:\the\wd0, ht:\the\ht0, dp:\the\dp0}% - *{wd:\the\wd2, ht:\the\ht2, dp:\the\dp2}% - [#1=##1] % hash-ok - }% -} -\RequirePackage{keyval} -\TestKey{adieresis}{\"a} -\TestKey{germandbls}{\ss} -\TestKey{Euro}{\texteuro} -\makeatother -\usepackage[ - warning,% -% utf8=utf-8, -% ucs, -]{selinput} -%\inputencoding{ascii} -%\inputencoding{utf-8} -%\usepackage{ucs} -\begin{qstest}{preamble}{} - \TestEncoding{x-iso-8859-15}{% - adieresis=^^e4,% - germandbls=^^df,% - Euro=^^a4,% - }% - \TestEncoding{x-cp1252}{% - adieresis=^^e4,% - germandbls=^^df,% - Euro=^^80,% - }% -% \TestEncoding{utf8}{% -% \TestEncoding{utf-8}{% -% \TestEncoding{utf8x}{% - adieresis=^^c3^^a4,% - germandbls=^^c3^^9f,% -% Euro=^^e2^^82^^ac, - }% -\end{qstest} -%\let\ifUnicodeOptiongraphics\iffalse -\begin{document} -\begin{qstest}{document}{} -%\makeatletter - \BeginDocumentText -\end{qstest} -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test4> -\usepackage[warning,ucs]{selinput} -\SelectInputMappings{% - adieresis=^^c3^^a4,% - germandbls=^^c3^^9f,% - Euro=^^e2^^82^^ac,% -} -\begin{qstest}{encoding}{} - \Expect*{\inputencodingname}{utf8x}% -\end{qstest} -\begin{document} - adieresis=^^c3^^a4, % - germandbls=^^c3^^9f, % - Euro=^^e2^^82^^ac% -% -% \end{macrocode} -% -% \begin{macrocode} -%<*test5> -\usepackage[warning,ucs]{selinput} -\SelectInputMappings{% - adieresis={\"a},% - germandbls={{\ss}},% - Euro=\texteuro{},% -} -\begin{qstest}{encoding}{} - \Expect*{\inputencodingname}{ascii}% -\end{qstest} -\begin{document} - adieresis={\"a}, % - germandbls={{\ss}}, % - Euro=\texteuro{}% -% -% \end{macrocode} -% -% \begin{macrocode} -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -831,11 +691,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % selinput.sty & tex/latex/oberdiek/selinput.sty\\ % selinput.pdf & doc/latex/oberdiek/selinput.pdf\\ -% test/selinput-test1.tex & doc/latex/oberdiek/test/selinput-test1.tex\\ -% test/selinput-test2.tex & doc/latex/oberdiek/test/selinput-test2.tex\\ -% test/selinput-test3.tex & doc/latex/oberdiek/test/selinput-test3.tex\\ -% test/selinput-test4.tex & doc/latex/oberdiek/test/selinput-test4.tex\\ -% test/selinput-test5.tex & doc/latex/oberdiek/test/selinput-test5.tex\\ % selinput.dtx & source/latex/oberdiek/selinput.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/selinput.pdf b/macros/latex/contrib/oberdiek/selinput.pdf index d92d4c725b..f851f0385c 100644 Binary files a/macros/latex/contrib/oberdiek/selinput.pdf and b/macros/latex/contrib/oberdiek/selinput.pdf differ diff --git a/macros/latex/contrib/oberdiek/setouterhbox.dtx b/macros/latex/contrib/oberdiek/setouterhbox.dtx index baa5ac5573..001cd278d3 100644 --- a/macros/latex/contrib/oberdiek/setouterhbox.dtx +++ b/macros/latex/contrib/oberdiek/setouterhbox.dtx @@ -68,8 +68,6 @@ % TDS:tex/generic/oberdiek/setouterhbox.sty % TDS:doc/latex/oberdiek/setouterhbox.pdf % TDS:doc/latex/oberdiek/setouterhbox-example.tex -% TDS:doc/latex/oberdiek/test/setouterhbox-test1.tex -% TDS:doc/latex/oberdiek/test/setouterhbox-test2.tex % TDS:source/latex/oberdiek/setouterhbox.dtx % %<*ignore> @@ -144,10 +142,6 @@ and the derived files % \usedir{doc/latex/oberdiek/test}% % \file{setouterhbox-test1.tex}{\from{setouterhbox.dtx}{test1}}% % \file{setouterhbox-test2.tex}{\from{setouterhbox.dtx}{test2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{setouterhbox.xml}{\from{setouterhbox.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -184,21 +178,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{setouterhbox.drv} % @@ -787,154 +766,7 @@ E \egroup \setouterhboxAtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input setouterhbox.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Test with package \xpackage{url}} -% -% \begin{macrocode} -%<*test2> -\nofiles -\documentclass[a5paper]{article} -\usepackage{url}[2005/06/27] -\usepackage{setouterhbox} - -\newsavebox{\testbox} - -\setlength{\parindent}{0pt} -\setlength{\parskip}{2em} - -\begin{document} -\raggedright - -\url{http://this.is.a.very.long.host.name/followed/% -by/a/very_long_long_long_path.html}% - -\sbox\testbox{% - \url{http://this.is.a.very.long.host.name/followed/% - by/a/very_long_long_long_path.html}% -}% -\unhbox\testbox - -\begin{setouterhbox}{\testbox}% - \url{http://this.is.a.very.long.host.name/followed/% - by/a/very_long_long_long_path.html}% -\end{setouterhbox} -\unhbox\testbox - -\end{document} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -984,8 +816,6 @@ by/a/very_long_long_long_path.html}% % setouterhbox.sty & tex/generic/oberdiek/setouterhbox.sty\\ % setouterhbox.pdf & doc/latex/oberdiek/setouterhbox.pdf\\ % setouterhbox-example.tex & doc/latex/oberdiek/setouterhbox-example.tex\\ -% test/setouterhbox-test1.tex & doc/latex/oberdiek/test/setouterhbox-test1.tex\\ -% test/setouterhbox-test2.tex & doc/latex/oberdiek/test/setouterhbox-test2.tex\\ % setouterhbox.dtx & source/latex/oberdiek/setouterhbox.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/setouterhbox.pdf b/macros/latex/contrib/oberdiek/setouterhbox.pdf index c2efdc3fb4..be203061ab 100644 Binary files a/macros/latex/contrib/oberdiek/setouterhbox.pdf and b/macros/latex/contrib/oberdiek/setouterhbox.pdf differ diff --git a/macros/latex/contrib/oberdiek/settobox.dtx b/macros/latex/contrib/oberdiek/settobox.dtx index 7ff43430a5..c38d502a53 100644 --- a/macros/latex/contrib/oberdiek/settobox.dtx +++ b/macros/latex/contrib/oberdiek/settobox.dtx @@ -131,10 +131,6 @@ and the derived files \file{settobox.sty}{\from{settobox.dtx}{package}}% \usedir{doc/latex/oberdiek}% \file{settobox-example.tex}{\from{settobox.dtx}{example}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{settobox.xml}{\from{settobox.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -173,21 +169,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{settobox.drv} % diff --git a/macros/latex/contrib/oberdiek/settobox.pdf b/macros/latex/contrib/oberdiek/settobox.pdf index 7b1c067ae1..e9d22ad222 100644 Binary files a/macros/latex/contrib/oberdiek/settobox.pdf and b/macros/latex/contrib/oberdiek/settobox.pdf differ diff --git a/macros/latex/contrib/oberdiek/soulutf8.dtx b/macros/latex/contrib/oberdiek/soulutf8.dtx index a25b50be1c..f5708e8ac2 100644 --- a/macros/latex/contrib/oberdiek/soulutf8.dtx +++ b/macros/latex/contrib/oberdiek/soulutf8.dtx @@ -67,11 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/soulutf8.sty % TDS:doc/latex/oberdiek/soulutf8.pdf -% TDS:doc/latex/oberdiek/test/soulutf8-test1.tex -% TDS:doc/latex/oberdiek/test/soulutf8-test2.tex -% TDS:doc/latex/oberdiek/test/soulutf8-test3.tex -% TDS:doc/latex/oberdiek/test/soulutf8-test4.tex -% TDS:doc/latex/oberdiek/test/soulutf8-test5.tex % TDS:source/latex/oberdiek/soulutf8.dtx % %<*ignore> @@ -147,10 +142,6 @@ and the derived files % \file{soulutf8-test3.tex}{\from{soulutf8.dtx}{test3,utf8x}}% % \file{soulutf8-test4.tex}{\from{soulutf8.dtx}{test4,utf8,noetex}}% % \file{soulutf8-test5.tex}{\from{soulutf8.dtx}{test5,utf8x,noetex}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{soulutf8.xml}{\from{soulutf8.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -187,21 +178,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{soulutf8.drv} % @@ -1128,553 +1104,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input soulutf8.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{\LaTeX\space tests} -% -% \begin{macrocode} -%<*test2|test3|test4|test5> -% \end{macrocode} -% \begin{macrocode} -%\let\SavedUnexpanded\unexpanded -%\let\unexpanded\UNDEFINED -\NeedsTeXFormat{LaTeX2e} -\documentclass{article} -\usepackage[T1]{fontenc} -\usepackage{lmodern} -\usepackage{textcomp} -\usepackage[ngerman]{babel} -\expandafter\def\csname ver@hypdestopt.sty\endcsname{} -\usepackage[unicode]{hyperref} -\usepackage{bookmark} -\usepackage{color} -\usepackage{soul}[2003/11/17] -\makeatletter -\newcommand*{\@ifDefined}[1]{% - \@ifundefined{#1}{% - \@latex@error{% - \expandafter\noexpand\csname#1\endcsname undefined% - }\@ehc - }% -} -\newcommand*{\SaveOrg}[1]{% - \@ifdefinable{ORG@SOUL@#1}{% - \@ifDefined{SOUL@#1}{% - \expandafter\let\csname ORG@SOUL@#1\expandafter\endcsname - \csname SOUL@#1\endcsname - }% - }% -} -\newcommand*{\RestoreOrg}[1]{% - \@ifDefined{ORG@SOUL@#1}{% - \@ifDefined{SOUL@#1}{% - \expandafter\let\csname SOUL@#1\expandafter\endcsname - \csname ORG@SOUL@#1\endcsname - }% - }% -} -\makeatother -\SaveOrg{eval} -\SaveOrg{splittoken} -\SaveOrg{flushcomma} -\SaveOrg{flushapo} -\SaveOrg{grave} -\SaveOrg{addgroup} -\SaveOrg{addmath} -\SaveOrg{addprotect} -\SaveOrg{addtoken} -\usepackage{soulutf8}[2016/05/16] -% \end{macrocode} -% \begin{macrocode} -%\let\unexpanded\SavedUnexpanded -% \end{macrocode} -% Input encoding \xfile{utf8}. -% \begin{macrocode} -%<*utf8> -\usepackage[utf8]{inputenc} -\DeclareUnicodeCharacter{00A0}{\nobreakspace} -% -% \end{macrocode} -% Input encoding \xfile{utf8x}. Package \xpackage{ucs} -% has a nasty bug, that it redefines \cs{show}. -% \begin{macrocode} -%<*utf8x> -\let\origshow\show -\usepackage[utf8x]{inputenc} -\AtBeginDocument{% - \let\show\origshow -} -% -% \end{macrocode} -% -% \subsubsection{Driver definitions} -% -% \begin{macrocode} -\makeatletter -% \end{macrocode} -% \begin{macro}{\an} -% The definition for \cs{an} is taken from the documentation of -% package \xpackage{soul}. -% \begin{macrocode} -\DeclareRobustCommand*{\an}{% - \def\SOUL@preamble{$^{^P}$}% - \def\SOUL@everyspace##1{##1\texttt{\char`\ }\linebreak[2]}% - \def\SOUL@postamble{$^{^E}$}% - \def\SOUL@everyhyphen{$^{^-}$\linebreak[1]}% - \def\SOUL@everyexhyphen##1{##1$^{^=}$}% - \def\SOUL@everysyllable{$^{^S}$}% - \def\SOUL@everytoken{\the\SOUL@token$^{^T}$}% - \def\SOUL@everylowerthan{$^{^L}$}% - \SOUL@ -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\sy} -% The definition for \cs{sy} is taken from the documentation of -% package \xpackage{soul}. -% \begin{macrocode} -\DeclareRobustCommand*{\sy}{% - \SOUL@setup - \def\SOUL@preamble{% - \lefthyphenmin=\z@ - \righthyphenmin=\z@ - }% - \def\SOUL@everyspace##1{##1\space}% - \def\SOUL@everysyllable{\the\SOUL@syllable}% - \def\SOUL@everyhyphen{% - \discretionary{% - \SOUL@setkern\SOUL@hyphkern - \SOUL@sethyphenchar - }{}{% - \hbox{\kern1pt$\cdot$}% - }% - }% - \def\SOUL@everyexhyphen##1{% - \SOUL@setkern\SOUL@hyphkern - \hbox{##1}% - \discretionary{}{}{% - \SOUL@setkern\SOUL@charkern - }% - }% - \SOUL@ -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\soulH} -% \begin{macrocode} -\DeclareRobustCommand*{\soulH}{% - \def\SOUL@preamble{% - \gdef\SOULH{}% - \soulHadd{[}% - }% - \def\SOUL@everyspace##1{% - \soulHadd{Sp}% - }% - \def\SOUL@postamble{% - \soulHadd{]}% - }% - \def\SOUL@everyhyphen{% - \soulHadd{Hy}% - }% - \def\SOUL@everyexhyphen##1{% - \soulHadd{Exhy}% - }% - \def\SOUL@everysyllable{% - \soulHadd{Sy}% - }% - \def\SOUL@everytoken{% - \soulHadd{T}% - }% - \def\SOUL@everylowerthan{% - \soulHadd{<}% - }% - \SOUL@ -} -\newcommand*{\soulHadd}[1]{% - #1% - \expandafter\gdef\expandafter\soulHstring\expandafter{% - \soulHstring - #1% - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Test macros} -% -% \begin{macrocode} -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} -% \end{macrocode} -% \begin{macrocode} -\newsavebox\boxA -\newsavebox\boxB -\newsavebox\boxC -% \end{macrocode} -% \begin{macro}{\TestDriver} -% \begin{macrocode} -\newcommand*{\TestDriver}[4]{% - \subsection{Driver #1}% - \@PackageInfo{soulutf8-test}{* Driver #1}% - \expandafter\let\expandafter\testdriver\csname #1\endcsname - \def\teststringA{#3}% - \def\teststringB{#4}% - \begin{qstest}{string-#2-driver-#1}{string,#2,driver,#1}% - \@PackageInfo{soulutf8-test}{* Version: soulutf8}% - \global\let\soulHstring\@empty - \setbox0=\hbox{\expandafter\testdriver\expandafter{\teststringA}}% - \let\HstringA\soulHstring - \SetTestVBox{\boxA}{\teststringA}% - % - \@PackageInfo{soulutf8-test}{* Version: soul + patch}% - \global\let\soulHstring\@empty - \RestoreOrg{eval}% - \setbox2=\hbox{\expandafter\testdriver\expandafter{\teststringB}}% - \let\HstringB\soulHstring - \SetTestVBox{\boxB}{\teststringB}% - % - \@PackageInfo{soulutf8-test}{* Version: original soul}% - \global\let\soulHstring\@empty - \RestoreOrg{splittoken}% - \RestoreOrg{flushcomma}% - \RestoreOrg{flushapo}% - \RestoreOrg{grave}% - \RestoreOrg{addgroup}% - \RestoreOrg{addmath}% - \RestoreOrg{addprotect}% - \RestoreOrg{addtoken}% - \setbox4=\hbox{\expandafter\testdriver\expandafter{\teststringB}}% - \let\HstringC\soulHstring - \SetTestVBox{\boxC}{\teststringB}% - % - \TestInfo{0}{soulutf8}% - \TestInfo{2}{soul + patch}% - \TestInfo{4}{original soul}% - \TestInfoVBox - \showboxdepth=\maxdimen - \showboxbreadth=\maxdimen - \tracingonline=\@ne - \Expect*{\HstringA}*{\HstringB}% - \Expect*{\HstringA}*{\HstringC}% - \Expect*{\the\wd0}*{\the\wd2}% - \ifdim\wd0=\wd2 % - \else - \showbox0 % - \showbox2 % - \fi - \Expect*{\the\ht0}*{\the\ht2}% - \Expect*{\the\dp0}*{\the\dp2}% - \Expect*{\the\wd\boxB}*{\the\wd\boxA}% - \Expect*{\the\wd\boxC}*{\the\wd\boxA}% - \Expect*{\the\ht\boxB}*{\the\ht\boxA}% - \ifdim\ht\boxB=\ht\boxA - \else - \showbox\boxA - \showbox\boxB - \fi - \Expect*{\the\ht\boxC}*{\the\ht\boxA}% - \Expect*{\the\dp\boxB}*{\the\dp\boxA}% - \Expect*{\the\dp\boxC}*{\the\dp\boxA}% - \end{qstest}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SetTestVBox} -% \begin{macrocode} -\newcommand*{\SetTestVBox}[2]{% - \setbox#1=\vbox{% - \hsize=0pt\relax - \hfuzz=100mm\relax - \expandafter\testdriver\expandafter{#2}% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\TestInfo} -% \begin{macrocode} -\newcommand*{\TestInfo}[2]{% - \par - \noindent - \copy#1\relax - \hfill - \begingroup - \small - \ifdim\wd0=\wd2\relax - \ifdim\wd0=\wd4\relax - \else - \ifnum#1=2 % - \raisebox{.5\baselineskip}[0pt][0pt]{% - \llap{$\}$ }% - \rlap{width = \the\wd#1\relax\space$\{$}% - \phantom{width = 999.99999pt}% - \qquad - }% - \else - \ifnum#1=4 % - \rlap{width = \the\wd#1}% - \phantom{width = 999.99999pt}% - \qquad - \fi - \fi - \fi - \else - \begingroup - \bfseries - \rlap{width = \the\wd#1}% - \phantom{width = 999.99999pt}% - \endgroup - \qquad - \fi - \rlap{(#2)}% - \phantom{(original soul)}% - \endgroup - \par -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\TestInfoVBox} -% \begin{macrocode} -\newcommand*{\TestInfoVBox}{% - \par - \noindent - \mbox{\vrule\relax\space\copy\boxA}% - \ifdim\ht\boxA=\ht\boxB - \else - \hfill - \begingroup - \small - \rlap{(soulutf8)}% - \phantom{(soulutf8)}% - \endgroup - \par - \noindent - \mbox{\vrule\relax\space\copy\boxB}% - \hfill - \begingroup - \small - \rlap{(soul)}% - \phantom{(soulutf8)}% - \endgroup - \fi - \par -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Test} -% \begin{macrocode} -\makeatletter -\newcommand*{\Test}[3]{% - \clearpage - \begingroup - \def\linebreak{\textbackslash linebreak }% - \def\\{\textbackslash\textbackslash}% - \def\soulomit##1{% - \textbackslash soulomit\textbraceleft##1\textbraceright - }% - \def\mbox##1{% - \textbackslash mbox\textbraceleft##1\textbraceright - }% - \def\abc{\textbackslash abc }% - \def\texttt##1{% - \textbackslash texttt\textbraceleft##1\textbraceright - }% - \def\c##1{% - \textbackslash c\textbraceleft##1\textbraceright - }% -%<*utf8x> - \count@=128 % - \loop - \ifnum\count@<256 % - \lccode`\~=\count@ - \lowercase{% - \def~{\noexpand~}% - }% - \advance\count@\@ne - \repeat -% - \csname protected@edef\endcsname\x{\endgroup - \noexpand\section{String #1: #2}% - }% - \x - \TestDriver{so}{#1}{#2}{#3}% - \TestDriver{caps}{#1}{#2}{#3}% - \TestDriver{ul}{#1}{#2}{#3}% - \TestDriver{st}{#1}{#2}{#3}% - \TestDriver{hl}{#1}{#2}{#3}% - \TestDriver{an}{#1}{#2}{#3}% - \TestDriver{sy}{#1}{#2}{#3}% - \TestDriver{soulH}{#1}{#2}{#3}% -} -\makeatother -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Testing} -% -% \begin{macrocode} -\begin{document} - \Test A{}{}% - \Test B{Hello World}{Hello World}% - \Test C{% - Umlauts: ^^c3^^84^^c3^^96^^c3^^9c^^c3^^a4^^c3^^b6^^c3^^bc^^c3^^9f% - }{% - Umlauts: \"A\"O\"U\"a\"o\"u\ss - }% - \Test D{Euro: ^^e2^^82^^ac}{Euro: \texteuro}% - \Test E{Stra^^c3^^9fe}{Stra\ss e}% - \Test F{R^^c3^^b6mer}{R\"omer}% - \Test G{A^^e2^^80^^93B^^e2^^80^^94C}{A--B---C}% - \Test H{X^^c2^^a0Y}{X~Y}% - \Test I{A^^c5^^a4}{A\v T}% - \Test J{A,B,,C,,,D,,,,E}{A,B,,C,,,D,,,,E}% - \Test K{A'B''C'''D''''E}{A'B''C'''D''''E}% - \Test L{A`B``C```D````E}{A`B``C```D````E}% - \Test M{A$x$B}{A$x$B}% - \Test N{A\mbox{abc}B}{A\mbox{abc}B}% - \Test O{,,TA''}{,,TA''}% - \Test P{{!`}Hola{?`}}{{!`}Hola{?`}}% - \Test Q{re-sent\slash x}{re-sent\slash x}% - \Test R{new\\line}{new\\line}% - \Test S{foo\linebreak bar}{foo\linebreak bar}% - \Test T{Virchow{sche}}{Virchow{sche}}% - \Test U{A\soulomit{foo}B}{A\soulomit{foo}B}% - \Test V{A\texttt{xyz}B}{A\texttt{xyz}B}% - \Test W{ffi}{ffi}% - \Test X{f{}f{}i}{f{}f{}i}% - \Test Y{f\mbox{}f\mbox{}i}{f\mbox{}f\mbox{}i}% - \Test Z{\c{\"a}}{{\c{\"a}}}% -%<*test2|test3> - \let\abcx\UNDEFINED - \def\abc{% - \begingroup - \def\abcx{x}% - \abcx - \endgroup - }% - \Test{AA}{[{x\abc x}]}{[{xxx}]}% -% -% \end{macrocode} -% -% \begin{macrocode} -\end{document} -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1723,11 +1153,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % soulutf8.sty & tex/generic/oberdiek/soulutf8.sty\\ % soulutf8.pdf & doc/latex/oberdiek/soulutf8.pdf\\ -% test/soulutf8-test1.tex & doc/latex/oberdiek/test/soulutf8-test1.tex\\ -% test/soulutf8-test2.tex & doc/latex/oberdiek/test/soulutf8-test2.tex\\ -% test/soulutf8-test3.tex & doc/latex/oberdiek/test/soulutf8-test3.tex\\ -% test/soulutf8-test4.tex & doc/latex/oberdiek/test/soulutf8-test4.tex\\ -% test/soulutf8-test5.tex & doc/latex/oberdiek/test/soulutf8-test5.tex\\ % soulutf8.dtx & source/latex/oberdiek/soulutf8.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/soulutf8.pdf b/macros/latex/contrib/oberdiek/soulutf8.pdf index 3efb582a11..cf4409cdda 100644 Binary files a/macros/latex/contrib/oberdiek/soulutf8.pdf and b/macros/latex/contrib/oberdiek/soulutf8.pdf differ diff --git a/macros/latex/contrib/oberdiek/stackrel.dtx b/macros/latex/contrib/oberdiek/stackrel.dtx index 57cef731c3..6b3444c33c 100644 --- a/macros/latex/contrib/oberdiek/stackrel.dtx +++ b/macros/latex/contrib/oberdiek/stackrel.dtx @@ -126,10 +126,6 @@ and the derived files \file{stackrel.drv}{\from{stackrel.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{stackrel.sty}{\from{stackrel.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{stackrel.xml}{\from{stackrel.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -168,21 +164,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{stackrel.drv} % diff --git a/macros/latex/contrib/oberdiek/stackrel.pdf b/macros/latex/contrib/oberdiek/stackrel.pdf index 57fa7b7944..8457865306 100644 Binary files a/macros/latex/contrib/oberdiek/stackrel.pdf and b/macros/latex/contrib/oberdiek/stackrel.pdf differ diff --git a/macros/latex/contrib/oberdiek/stampinclude.dtx b/macros/latex/contrib/oberdiek/stampinclude.dtx index 5824cf4425..9acd8a61f8 100644 --- a/macros/latex/contrib/oberdiek/stampinclude.dtx +++ b/macros/latex/contrib/oberdiek/stampinclude.dtx @@ -126,10 +126,6 @@ and the derived files \file{stampinclude.drv}{\from{stampinclude.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{stampinclude.sty}{\from{stampinclude.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{stampinclude.xml}{\from{stampinclude.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{stampinclude.drv} % @@ -610,13 +591,13 @@ and the derived files % Pablo A. Straub, Heiko Oberdiek: % \textit{The \xpackage{askinclude} package}; % 2007/10/23 v2.0; -% \CTAN{macros/latex/contrib/oberdiek/askinclude.pdf}. +% \CTANpkg{askinclude}. % % \bibitem{pdftexcmds} % Heiko Oberdiek: % \textit{The \xpackage{pdftexcmds} package}; % 2007/12/12 v0.3; -% \CTAN{macros/latex/contrib/oberdiek/pdftexcmds.pdf}. +% \CTANpkg{pdftexcmds}. % % \end{thebibliography} % diff --git a/macros/latex/contrib/oberdiek/stampinclude.pdf b/macros/latex/contrib/oberdiek/stampinclude.pdf index d020b7c68b..3e72ead4ae 100644 Binary files a/macros/latex/contrib/oberdiek/stampinclude.pdf and b/macros/latex/contrib/oberdiek/stampinclude.pdf differ diff --git a/macros/latex/contrib/oberdiek/tabularht.dtx b/macros/latex/contrib/oberdiek/tabularht.dtx index dba2d2f899..8d1ef6cb74 100644 --- a/macros/latex/contrib/oberdiek/tabularht.dtx +++ b/macros/latex/contrib/oberdiek/tabularht.dtx @@ -133,10 +133,6 @@ and the derived files \usedir{doc/latex/oberdiek}% \file{tabularht-example1.tex}{\from{tabularht.dtx}{example1}}% \file{tabularht-example2.tex}{\from{tabularht.dtx}{example2}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{tabularht.xml}{\from{tabularht.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -173,21 +169,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{tabularht.drv} % diff --git a/macros/latex/contrib/oberdiek/tabularht.pdf b/macros/latex/contrib/oberdiek/tabularht.pdf index f2931eded6..92ea96cc84 100644 Binary files a/macros/latex/contrib/oberdiek/tabularht.pdf and b/macros/latex/contrib/oberdiek/tabularht.pdf differ diff --git a/macros/latex/contrib/oberdiek/tabularkv.dtx b/macros/latex/contrib/oberdiek/tabularkv.dtx index 4bd350bd19..57ef5e8745 100644 --- a/macros/latex/contrib/oberdiek/tabularkv.dtx +++ b/macros/latex/contrib/oberdiek/tabularkv.dtx @@ -131,10 +131,6 @@ and the derived files \file{tabularkv.sty}{\from{tabularkv.dtx}{package}}% \usedir{doc/latex/oberdiek}% \file{tabularkv-example.tex}{\from{tabularkv.dtx}{example}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{tabularkv.xml}{\from{tabularkv.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -171,21 +167,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{tabularkv.drv} % diff --git a/macros/latex/contrib/oberdiek/tabularkv.pdf b/macros/latex/contrib/oberdiek/tabularkv.pdf index caaf4ef906..63951304d1 100644 Binary files a/macros/latex/contrib/oberdiek/tabularkv.pdf and b/macros/latex/contrib/oberdiek/tabularkv.pdf differ diff --git a/macros/latex/contrib/oberdiek/telprint.dtx b/macros/latex/contrib/oberdiek/telprint.dtx index a2df3a6528..57152c6651 100644 --- a/macros/latex/contrib/oberdiek/telprint.dtx +++ b/macros/latex/contrib/oberdiek/telprint.dtx @@ -66,7 +66,6 @@ % Installation: % TDS:tex/generic/oberdiek/telprint.sty % TDS:doc/latex/oberdiek/telprint.pdf -% TDS:doc/latex/oberdiek/test/telprint-test1.tex % TDS:source/latex/oberdiek/telprint.dtx % %<*ignore> @@ -137,10 +136,6 @@ and the derived files \file{telprint.sty}{\from{telprint.dtx}{package}}% % \usedir{doc/latex/oberdiek/test}% % \file{telprint-test1.tex}{\from{telprint.dtx}{test1}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{telprint.xml}{\from{telprint.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -178,21 +173,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{telprint.drv} % @@ -628,118 +608,7 @@ and the derived files \TELAtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input telprint.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -788,7 +657,6 @@ and the derived files % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % telprint.sty & tex/generic/oberdiek/telprint.sty\\ % telprint.pdf & doc/latex/oberdiek/telprint.pdf\\ -% test/telprint-test1.tex & doc/latex/oberdiek/test/telprint-test1.tex\\ % telprint.dtx & source/latex/oberdiek/telprint.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/telprint.pdf b/macros/latex/contrib/oberdiek/telprint.pdf index aacc2fe448..090b5974ab 100644 Binary files a/macros/latex/contrib/oberdiek/telprint.pdf and b/macros/latex/contrib/oberdiek/telprint.pdf differ diff --git a/macros/latex/contrib/oberdiek/thepdfnumber.dtx b/macros/latex/contrib/oberdiek/thepdfnumber.dtx index 5b56027d9d..61eb42684c 100644 --- a/macros/latex/contrib/oberdiek/thepdfnumber.dtx +++ b/macros/latex/contrib/oberdiek/thepdfnumber.dtx @@ -67,9 +67,6 @@ % Installation: % TDS:tex/generic/oberdiek/thepdfnumber.sty % TDS:doc/latex/oberdiek/thepdfnumber.pdf -% TDS:doc/latex/oberdiek/test/thepdfnumber-test1.tex -% TDS:doc/latex/oberdiek/test/thepdfnumber-test2.tex -% TDS:doc/latex/oberdiek/test/thepdfnumber-test3.tex % TDS:source/latex/oberdiek/thepdfnumber.dtx % %<*ignore> @@ -186,21 +183,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{thepdfnumber.drv} % @@ -1102,303 +1084,7 @@ $ \else\ifnum`#2=46 % . \ThPdNu@AtEnd% % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input thepdfnumber.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \subsubsection{Preamble} -% -% \begin{macrocode} -%<*test2> -\catcode`\{=1 -\catcode`\}=2 -\catcode`\#=6 -\catcode`\@=11 -\errorcontextlines=10000 % -\def\msg#{\immediate\write16} -\def\space{ } -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input thepdfnumber.sty\relax -\else - \RequirePackage{thepdfnumber}[2016/05/16]% -\fi -% \end{macrocode} -% -% \begin{macro}{\Test} -% \begin{macrocode} -\def\Test#1#2{% - \def\TestExpected{#2}% -%<*active> - \edef\TestExpected{\TestExpected}% -% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter\TestResult - \expandafter\expandafter\expandafter{% - \TestCommand{#1}% - }% - \begingroup - \toks0\expandafter{\TestResult}% - \toks2\expandafter{\TestExpected}% - \ifx\TestResult\TestExpected - \msg{* OK: #1 => \the\toks0}% - \else - \errmessage{FAILED: #1 => \the\toks0\space(\the\toks2)}% - \fi - \endgroup -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\let\thepdfnumber@ErrorUnexpectedEnd\relax -\let\thepdfnumber@ErrorInvalidToken\relax -% \end{macrocode} -% -% \subsubsection{Test with active catcodes} -% -% \begin{macrocode} -%<*active> -\catcode`\~=13 % -\def\ThPdNu@Temp#1{% - \begingroup - \lccode`\~=`#1 % - \lowercase{\endgroup - \edef~% - }{\string#1}% - \catcode`#1=13 % -} -\ThPdNu@Temp{.} -\ThPdNu@Temp{-} -\ThPdNu@Temp{+} -% -% \end{macrocode} -% -% \subsubsection{Test cases for \cs{thepdfnumber}} -% -% \begin{macro}{\TestCommand} -% \begin{macrocode} -\let\TestCommand\thepdfnumber -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\Test{0}{0} -\Test{1}{1} -\Test{23}{23} -\Test{0045}{45} -\Test{4500}{4500} -\Test{-0}{0} -\Test{-1}{-1} -\Test{-00002}{-2} -\Test{-010203}{-10203} -\Test{+0}{0} -\Test{+123}{123} - -\Test{+-4}{-4} -\Test{+-+-4}{4} -\Test{++--++--++4}{4} -\Test{+++---+++---+++---4}{-4} - -\Test{.}{0} -\Test{0.}{0} -\Test{.0}{0} -\Test{0.}{0} -\Test{-.}{0} -\Test{-0.}{0} -\Test{-.0}{0} -\Test{-0.}{0} -\Test{010.020}{10.02} -\Test{123.456}{123.456} -\Test{12.}{12} -\Test{.123}{.123} -\Test{.0001}{.0001} -\Test{.00100}{.001} -\Test{.12003400560078009}{.12003400560078009} -\Test{-.12003400560078009}{-.12003400560078009} -\Test{04.0500000}{4.05} - -\Test{}{0\thepdfnumber@ErrorUnexpectedEnd} -\Test{+}{0\thepdfnumber@ErrorUnexpectedEnd} -\Test{-}{0\thepdfnumber@ErrorUnexpectedEnd} -\Test{a}{0\thepdfnumber@ErrorInvalidToken} -\Test{0x1}{0\thepdfnumber@ErrorInvalidToken} -\Test{4x56}{4\thepdfnumber@ErrorInvalidToken} -\Test{012,34}{12\thepdfnumber@ErrorInvalidToken} -\Test{0.12x4}{.12\thepdfnumber@ErrorInvalidToken} -% \end{macrocode} -% -% \subsubsection{Test cases for \cs{thepdfnumberNormZeroOne}} -% -% \begin{macro}{\TestCommand} -% \begin{macrocode} -\let\TestCommand\thepdfnumberNormZeroOne -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\Test{0}{0} -\Test{1}{1} -\Test{23}{1} -\Test{12}{1} -\Test{10}{1} -\Test{0045}{1} -\Test{001}{1} -\Test{-0}{0} -\Test{-1}{0} -\Test{-01}{0} -\Test{-4}{0} - -\Test{+-0}{0} -\Test{+-+-1}{1} -\Test{++--++--++1}{1} -\Test{+++---+++---+++---1}{0} - -\Test{.}{0} -\Test{0.}{0} -\Test{.0}{0} -\Test{0.}{0} -\Test{-.}{0} -\Test{-0.}{0} -\Test{-.0}{0} -\Test{-0.}{0} -\Test{010.020}{1} -\Test{123.456}{1} -\Test{12.}{1} -\Test{.123}{.123} -\Test{.0001}{.0001} -\Test{.00100}{.001} -\Test{.12003400560078009}{.12003400560078009} -\Test{-.12003400560078009}{0} -\Test{04.0500000}{1} -\Test{0.1200340056}{.1200340056} -\Test{1.05}{1} - -\Test{}{0\thepdfnumber@ErrorUnexpectedEnd} -\Test{+}{0\thepdfnumber@ErrorUnexpectedEnd} -\Test{-}{0\thepdfnumber@ErrorUnexpectedEnd} -\Test{a}{0\thepdfnumber@ErrorInvalidToken} -\Test{0x1}{0\thepdfnumber@ErrorInvalidToken} -\Test{4x56}{1} -\Test{012,34}{1} -\Test{.012x4}{.012\thepdfnumber@ErrorInvalidToken} -% \end{macrocode} -% -% \begin{macrocode} -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -1447,9 +1133,6 @@ $ \else\ifnum`#2=46 % . % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % thepdfnumber.sty & tex/generic/oberdiek/thepdfnumber.sty\\ % thepdfnumber.pdf & doc/latex/oberdiek/thepdfnumber.pdf\\ -% test/thepdfnumber-test1.tex & doc/latex/oberdiek/test/thepdfnumber-test1.tex\\ -% test/thepdfnumber-test2.tex & doc/latex/oberdiek/test/thepdfnumber-test2.tex\\ -% test/thepdfnumber-test3.tex & doc/latex/oberdiek/test/thepdfnumber-test3.tex\\ % thepdfnumber.dtx & source/latex/oberdiek/thepdfnumber.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/thepdfnumber.pdf b/macros/latex/contrib/oberdiek/thepdfnumber.pdf index b4a0cdf495..b46cc89055 100644 Binary files a/macros/latex/contrib/oberdiek/thepdfnumber.pdf and b/macros/latex/contrib/oberdiek/thepdfnumber.pdf differ diff --git a/macros/latex/contrib/oberdiek/twoopt.dtx b/macros/latex/contrib/oberdiek/twoopt.dtx index 4fc1bfec88..10334f0d3a 100644 --- a/macros/latex/contrib/oberdiek/twoopt.dtx +++ b/macros/latex/contrib/oberdiek/twoopt.dtx @@ -126,10 +126,6 @@ and the derived files \file{twoopt.drv}{\from{twoopt.dtx}{driver}}% \usedir{tex/latex/oberdiek}% \file{twoopt.sty}{\from{twoopt.dtx}{package}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{twoopt.xml}{\from{twoopt.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -166,21 +162,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{twoopt.drv} % diff --git a/macros/latex/contrib/oberdiek/twoopt.pdf b/macros/latex/contrib/oberdiek/twoopt.pdf index 6184989018..fcd3dea9b4 100644 Binary files a/macros/latex/contrib/oberdiek/twoopt.pdf and b/macros/latex/contrib/oberdiek/twoopt.pdf differ diff --git a/macros/latex/contrib/oberdiek/uniquecounter.dtx b/macros/latex/contrib/oberdiek/uniquecounter.dtx index 16a2991048..172d081435 100644 --- a/macros/latex/contrib/oberdiek/uniquecounter.dtx +++ b/macros/latex/contrib/oberdiek/uniquecounter.dtx @@ -69,9 +69,6 @@ % TDS:tex/generic/oberdiek/uniquecounter.sty % TDS:doc/latex/oberdiek/uniquecounter.pdf % TDS:doc/latex/oberdiek/uniquecounter-example.tex -% TDS:doc/latex/oberdiek/test/uniquecounter-test1.tex -% TDS:doc/latex/oberdiek/test/uniquecounter-test2.tex -% TDS:doc/latex/oberdiek/test/uniquecounter-test3.tex % TDS:source/latex/oberdiek/uniquecounter.dtx % %<*ignore> @@ -148,10 +145,6 @@ and the derived files % \file{uniquecounter-test1.tex}{\from{uniquecounter.dtx}{test1}}% % \file{uniquecounter-test2.tex}{\from{uniquecounter.dtx}{test2}}% % \file{uniquecounter-test3.tex}{\from{uniquecounter.dtx}{test3}}% - \nopreamble - \nopostamble -% \usedir{source/latex/oberdiek/catalogue}% -% \file{uniquecounter.xml}{\from{uniquecounter.dtx}{catalogue}}% } \catcode32=13\relax% active space @@ -188,21 +181,6 @@ and the derived files % \fi % % -% \CharacterTable -% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -% Digits \0\1\2\3\4\5\6\7\8\9 -% Exclamation \! Double quote \" Hash (number) \# -% Dollar \$ Percent \% Ampersand \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} % % \GetFileInfo{uniquecounter.drv} % @@ -530,291 +508,7 @@ and the derived files % \begin{macrocode} % % \end{macrocode} -% -% \section{Test} -% -% \subsection{Catcode checks for loading} -% -% \begin{macrocode} -%<*test1> -% \end{macrocode} -% \begin{macrocode} -\catcode`\{=1 % -\catcode`\}=2 % -\catcode`\#=6 % -\catcode`\@=11 % -\expandafter\ifx\csname count@\endcsname\relax - \countdef\count@=255 % -\fi -\expandafter\ifx\csname @gobble\endcsname\relax - \long\def\@gobble#1{}% -\fi -\expandafter\ifx\csname @firstofone\endcsname\relax - \long\def\@firstofone#1{#1}% -\fi -\expandafter\ifx\csname loop\endcsname\relax - \expandafter\@firstofone -\else - \expandafter\@gobble -\fi -{% - \def\loop#1\repeat{% - \def\body{#1}% - \iterate - }% - \def\iterate{% - \body - \let\next\iterate - \else - \let\next\relax - \fi - \next - }% - \let\repeat=\fi -}% -\def\RestoreCatcodes{} -\count@=0 % -\loop - \edef\RestoreCatcodes{% - \RestoreCatcodes - \catcode\the\count@=\the\catcode\count@\relax - }% -\ifnum\count@<255 % - \advance\count@ 1 % -\repeat - -\def\RangeCatcodeInvalid#1#2{% - \count@=#1\relax - \loop - \catcode\count@=15 % - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\RangeCatcodeCheck#1#2#3{% - \count@=#1\relax - \loop - \ifnum#3=\catcode\count@ - \else - \errmessage{% - Character \the\count@\space - with wrong catcode \the\catcode\count@\space - instead of \number#3% - }% - \fi - \ifnum\count@<#2\relax - \advance\count@ 1 % - \repeat -} -\def\space{ } -\expandafter\ifx\csname LoadCommand\endcsname\relax - \def\LoadCommand{\input uniquecounter.sty\relax}% -\fi -\def\Test{% - \RangeCatcodeInvalid{0}{47}% - \RangeCatcodeInvalid{58}{64}% - \RangeCatcodeInvalid{91}{96}% - \RangeCatcodeInvalid{123}{255}% - \catcode`\@=12 % - \catcode`\\=0 % - \catcode`\%=14 % - \LoadCommand - \RangeCatcodeCheck{0}{36}{15}% - \RangeCatcodeCheck{37}{37}{14}% - \RangeCatcodeCheck{38}{47}{15}% - \RangeCatcodeCheck{48}{57}{12}% - \RangeCatcodeCheck{58}{63}{15}% - \RangeCatcodeCheck{64}{64}{12}% - \RangeCatcodeCheck{65}{90}{11}% - \RangeCatcodeCheck{91}{91}{15}% - \RangeCatcodeCheck{92}{92}{0}% - \RangeCatcodeCheck{93}{96}{15}% - \RangeCatcodeCheck{97}{122}{11}% - \RangeCatcodeCheck{123}{255}{15}% - \RestoreCatcodes -} -\Test -\csname @@end\endcsname -\end -% \end{macrocode} -% \begin{macrocode} -% -% \end{macrocode} -% -% \subsection{Macro tests} -% -% \subsubsection{Test with \LaTeX} -% -% \begin{macrocode} -%<*test2> -\NeedsTeXFormat{LaTeX2e} -\nofiles -\documentclass{minimal} -\usepackage{uniquecounter}[2016/05/16] -\usepackage{qstest} -\IncludeTests{*} -\LogTests{log}{*}{*} - -\newcommand*{\CheckValue}[2]{% - \Expect*{#2}*{\UniqueCounterGet{#1}}% -} -\newcommand*{\CheckSpace}[1]{% - \sbox0{#1}% - \Expect{0.0pt}*{\the\wd0}% -} - -\begin{qstest}{creation}{creation} - \CheckSpace{% - \UniqueCounterNew{test}% - }% - \CheckValue{test}{0}% -\end{qstest} - -\begin{qstest}{increment}{increment} - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \CheckValue{test}{1}% - \makeatletter - \def\uqc@cnt@test{2147483645}% - \CheckValue{test}{2147483645}% - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \CheckValue{test}{2147483646}% - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \Expect{true}*{\ifx\uqc@inc\uqc@NumInc true\else false\fi}% - \CheckValue{test}{2147483647}% - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \CheckValue{test}{2147483648}% - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \CheckValue{test}{2147483649}% -\end{qstest} - -\begin{qstest}{call}{call} - \def\CheckCall#1#2{% - \Expect{#1}{#2}% - }% - \CheckSpace{% - \UniqueCounterNew{foo}% - }% - \CheckValue{foo}{0}% - \def\Check#1{% - \CheckSpace{% - \UniqueCounterCall{foo}{\CheckCall}{#1}% - }% - \CheckValue{foo}{#1}% - }% - \Check{1}% - \Check{2}% - \Check{3}% - \Check{4}% - \Check{5}% - \Check{6}% - \Check{7}% - \Check{8}% - \Check{9}% - \Check{10}% - \Check{11}% - \Check{12}% -\end{qstest} - -\csname @@end\endcsname -% -% \end{macrocode} -% \subsubsection{Test with plain-\TeX} -% -% \begin{macrocode} -%<*test3> -\input uniquecounter.sty\relax -\catcode`\@=11 % -\def\CheckValue#1#2{% - \begingroup - \edef\A{#2}% - \edef\B{\UniqueCounterGet{#1}}% - \ifx\A\B - \else - \@PackageError{TEST}{Failed: \A\space<> \B}\@ehc - \fi - \endgroup -} -\def\CheckSpace#1{% - \setbox0=\hbox{#1}% - \ifdim\wd0=\z@ - \else - \@PackageError{TEST}{Failed: 0.0pt <> \the\wd0}\@ehc - \fi -} - -\begingroup - \CheckSpace{% - \UniqueCounterNew{test}% - }% - \CheckValue{test}{0}% -\endgroup - -\begingroup - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \CheckValue{test}{1}% - \def\uqc@cnt@test{2147483645}% - \CheckValue{test}{2147483645}% - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \CheckValue{test}{2147483646}% - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \ifx\uqc@inc\uqc@NumInc - \else - \@PackageError{TEST}{Failed: wrong inc function}\@ehc - \fi - \CheckValue{test}{2147483647}% - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \CheckValue{test}{2147483648}% - \CheckSpace{% - \UniqueCounterIncrement{test}% - }% - \CheckValue{test}{2147483649}% -\endgroup -\begingroup - \def\CheckCall#1#2{% - \begingroup - \def\A{#1}% - \def\B{#2}% - \ifx\A\B - \else - \@PackageError{TEST}{Failed: \A\space <> \B}\@ehc - \fi - \endgroup - }% - \CheckSpace{% - \UniqueCounterNew{foo}% - }% - \CheckValue{foo}{0}% - \CheckSpace{% - \UniqueCounterCall{foo}{\CheckCall}{1}% - }% - \CheckSpace{% - \UniqueCounterCall{foo}{\CheckCall}{2}% - }% - \CheckValue{foo}{2}% -\endgroup -\csname @@end\endcsname\end -% -% \end{macrocode} -% -% \section{Installation} +%% \section{Installation} % % \subsection{Download} % @@ -864,9 +558,6 @@ and the derived files % uniquecounter.sty & tex/generic/oberdiek/uniquecounter.sty\\ % uniquecounter.pdf & doc/latex/oberdiek/uniquecounter.pdf\\ % uniquecounter-example.tex & doc/latex/oberdiek/uniquecounter-example.tex\\ -% test/uniquecounter-test1.tex & doc/latex/oberdiek/test/uniquecounter-test1.tex\\ -% test/uniquecounter-test2.tex & doc/latex/oberdiek/test/uniquecounter-test2.tex\\ -% test/uniquecounter-test3.tex & doc/latex/oberdiek/test/uniquecounter-test3.tex\\ % uniquecounter.dtx & source/latex/oberdiek/uniquecounter.dtx\\ % \end{tabular}^^A % }^^A diff --git a/macros/latex/contrib/oberdiek/uniquecounter.pdf b/macros/latex/contrib/oberdiek/uniquecounter.pdf index cf39951e59..78158e1f15 100644 Binary files a/macros/latex/contrib/oberdiek/uniquecounter.pdf and b/macros/latex/contrib/oberdiek/uniquecounter.pdf differ diff --git a/macros/luatex/generic/barracuda/INSTALL.txt b/macros/luatex/generic/barracuda/INSTALL.txt index 55ce68da5c..0c06f98488 100644 --- a/macros/luatex/generic/barracuda/INSTALL.txt +++ b/macros/luatex/generic/barracuda/INSTALL.txt @@ -1,30 +1,37 @@ Installation ------------- +============ Installing `barracuda` for TeX Live +----------------------------------- -If you have TeX Live installed from CTAN or from DVD TeX Collection, check -before any modification to your system if the package is already installed +If you have TeX Live installed from CTAN or from DVD TeX Collection, before +any modification to your system check if the package is already installed looking for `installed` key in the output of the command: -$ tlmgr show barracuda + $ tlmgr show barracuda If `barracuda` is not present, run the command: -$ tlmgr install barracuda + $ tlmgr install barracuda If you have installed TeX Live via Linux OS repository try your distribution's package management system. It's also possible a manual installation: -a. Grab the sources from CTAN or https://github.com/robitex/barracuda . -b. Unzip it at the root of one or your TDS trees. -c. You may need to update some filename database after this, see your TeX - distribution's manual for details. + a. Grab the sources from CTAN or https://github.com/robitex/barracuda . + b. Unzip it at the root of one or your TDS trees. + c. You may need to update some filename database after this running `texhash`, + see your TeX distribution's manual for details. + +Any TeX Live documentation files can be easily opened on screen with the +`texdoc` command line utility (this way is very handy). + + $ texdoc pkgname Installing for Lua +------------------ -Manually copy `src` folder content to a suitable directory of your system that -is reachable to Lua interpreter. +Manually copy the `src` folder content to a suitable directory of your system +that is reachable to a Lua interpreter. diff --git a/macros/luatex/generic/barracuda/README.md b/macros/luatex/generic/barracuda/README.md index e4ca271287..6dc3ccb2db 100644 --- a/macros/luatex/generic/barracuda/README.md +++ b/macros/luatex/generic/barracuda/README.md @@ -3,8 +3,8 @@ This Lua library is for drawing barcode symbols. The project delivers modules to typeset barcode from within a LuaTeX document. Therefore is also possible to use `barracuda` with a Lua standalone interpreter to draw barcodes with -different graphic format such as `SVG`. -The package does not have dependences. +different graphic format such as `SVG` (see an example below). +This package does not have dependences. ![a SVG formatted Code39 symbol](/test/test-ga-svg/test-code39.svg) @@ -14,7 +14,12 @@ complete user control over barcode symbol parameters :thumbsup: . Although development is in beta stage, `barracuda` has a good level of stability. -## Barcode symbologies +## Current version information + +Version: v0.0.9.1 +Date: 2019-12-04 + +## Barcode symbologies list So far, are supported @@ -23,15 +28,15 @@ So far, are supported - Interleaved 2 of 5 - EAN family (EAN8, EAN13, and the add-ons EAN5 and EAN2) -Other 1D encoding format will be added to the project, then it will be the -turn for 2D barcode type. +Other 1D encoding symbology will be added to the project, then it will be the +turn of 2D barcode types like Datamatrix, QRCode or PDF417. ## A very simple LaTeX example The LaTeX package `barracuda.sty` under the cover uses Lua code so you need to compile your source files with LuaTeX or LuajitTeX with the LaTeX format. -For instance here there is a minimal example for LuaLaTeX: +For instance, here there is a minimal example for LuaLaTeX: ```latex % !TeX program = LuaLaTeX @@ -47,7 +52,7 @@ For instance here there is a minimal example for LuaLaTeX: Details and package reference can be found in the manual delivered in the `doc` project directory, even if it is very minimal at the moment. -The directory `test` contains files that can be seen as code examples. +Directory `test` contains files useful also for code examples. ## Installation @@ -58,20 +63,33 @@ your system. Otherwise, you can install the package via `tlmgr` for your TeX Live distribution. If you have installed TeX Live with the `full` schema, `barracuda` is just -available and no further action is required because the last package tagged -version is periodically sent to CTAN. +available and no further action is required. Please, take into account that +only the tagged version (in the `git` sense) of the package will be sent to +CTAN. This means that intermediate development version between consecutive +releases can be found only at https://github.com/robitex/barracuda . TeX Live distribution or Lua interpreter executable are available for a very large number of Operating Systems so it is also for `barracuda`. -More detailed istruction will come soon. +Step by step istruction can be found in the INSTALL.txt file. ## Contribute -Contributes are welcome in any form and for any topics. +Contributes are welcome in any form and for any topics. You can contact me +directly via email at giaconet.mailbox@gmail.com or via a pull request on the +repository https://github.com/robitex/barracuda or writing a public message +via the web page https://github.com/robitex/barracuda/issues for todos, bugs, +feature requests, and more (press the bottom `New issue`). + +Anyway, as a starting point take a look of TODO.txt file for the next +scheduled development tasks. ## License -Please, for more legal details refer to LICENSE.txt file. +`barracuda` project is released under the +[GNU GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html). +Please, for more legal details refer to LICENSE.txt file or visit the web page +https://www.gnu.org/licenses/old-licenses/gpl-2.0.html Copyright (C) 2019 Roberto Giacomelli + diff --git a/macros/luatex/generic/barracuda/TODO.txt b/macros/luatex/generic/barracuda/TODO.txt new file mode 100644 index 0000000000..5b1970810c --- /dev/null +++ b/macros/luatex/generic/barracuda/TODO.txt @@ -0,0 +1,92 @@ +Development Program Task Table + +Hypothetical developing tasks list: + +__.__: 20__-__-__: [dev] TiKz driver +__.__: 20__-__-__: [dev] debug driver, ga code pretty printing +__.__: 20__-__-__: [dev] make thing happen: font property for text +__.__: 20__-__-__: [dev] develop LaTeX user package +__.__: 20__-__-__: [dev] coherent error management +__.__: 20__-__-__: [dev] proportional options +__.__: 20__-__-__: [dev] a number parameter can be a string? unit measure... +__.__: 20__-__-__: [prj] a command line program to print barcodes +__.__: 20__-__-__: [man] put ga-asm-spec together with the manual +__.__: 2019-__-__: [dev] guard text in EAN simbology +__.__: 2019-__-__: [dev] ISBN support +__.__: 2019-__-__: [dev] UPC support +__.__: 2019-__-__: [dev] make optional file name in all the Driver methods +__.__: 2019-__-__: [prj] use l3build for testing and CTAN files packaging + +Scheduled tasks (What we are working on): +[ ] 2019-__-__: Data Matrix 2D symbology + +__.__: 2019-__-__: [dmx] data matrix first run +__.__: 2019-__-__: [dmx] ecc200 error correction code +__.__: 2019-__-__: [svg] opcode for grids +__.__: 2019-__-__: [pdf] opcode for grids +__.__: 2019-__-__: [gas] ga-asm grid opcode +__.__: 2019-__-__: [geo] grid vector object +_1.__: 2019-__-__: [dev] init source file encoder for Data Matrix + +[🎉] 2019-12-04: prelude to version v0.1 +09.15: 2019-11-29: [prj] upload to CTAN version v0.0.9.1 (CTAN conditions) +09.14: 2019-11-29: [prj] upload to CTAN version v0.0.9 +09.13: 2019-11-26: [man] say something about barracuda.sty +09.12: 2019-11-26: [man] edit the section 'A more deep look' for clearness +09.11: 2019-11-26: [prj] reformat todo file: no more date at line end +09.10: 2019-11-26: [svg] take dimensions as scaled point and then mm +09.09: 2019-11-26: [prj] every dev task ends with a repository commit +09.08: 2019-11-25: [prj] .gitignore .out file +09.07: 2019-11-25: [svg] support for text +09.06: 2019-11-25: [man] time to get an usable manual even if minimal +09.05: 2019-11-23: [chk] some new test files +09.04: 2019-11-23: [dev] new barracuda methods save() and hbox() +09.03: 2019-11-20: [svg] driver first run +09.02: 2019-11-10: [dev] implement ga opcode for line-join style and line-cap style +09.01: 2019-11-10: [prj] make lib-parseopt a separated project + +Completed tasks: + + move costructors to the barcode abstract class 🎉 2019-11-09 +Task 8.5: adopted new Barcode costructors in the EAN encoder 2019-11-09 +Task 8.4: adopted new Barcode costructors in the ITF encoder 2019-11-09 +Task 8.3: adopted new Barcode costructors in the Code128 encoder 2019-11-09 +Task 8.2: adopted new Barcode costructors in the Code39 encoder 2019-11-04 +Task 8.1: new costructor method in the barcode superclass 2019-11-04 + + code refactoring for ga-canvas 🎉 2019-11-02 +Task 7.5: recompile all the test files 2019-11-02 +Task 7.4: new functions canvas:encode_() 2019-11-02 +Task 7.3: text position options for Code39 became two indipendent 2019-11-02 +Task 7.2: added a new code39 test file (and bugs fixed) 2019-11-02 +Task 7.1: added subdirectories in the test tree 2019-11-02 + + implement Interleaved 2 of 5 encoder 🎉 2019-07-02 +Task 6.4: test files 2019-07-02 +Task 6.3: add bearer bars for itf encoder 2019-07-02 +Task 6.2: check digit capability for itf 2 of 5 encoder 2019-07-02 +Task 6.1: implement basic Interleaved 2 of 5 encoder 2019-06-29 + + implement Code128 and EAN family encoders 🎉 2019-01-27 +Task 5.5: test file 2019-01-27 +Task 5.4: implement EAN2 variant 2019-01-26 +Task 5.3: implement EAN5 variant 2019-01-26 +Task 5.2: new family encoder concept 2019-01-25 +Task 5.1: implement EAN13 encoder 2019-01-12 +Task 4.4: refactoring param iterator 2018-12-30 +Task 4.3: test the local system of option set up for Code128 2018-12-30 +Task 4.2: test the local system of option set up for Code39 2018-12-30 +Task 4.1: test for ga-canvas 2018-12-29 +Task 3.3: opt in Code 39 and Code 128 symbol constructors 2018-12-24 +Task 3.2: focus on a new constructor in Barcode Class for + better encoder implementation 2018-12-21 +Task 3.1: import and refactoring previous Code128 encoder code 2018-12-16 + + 🎉 2018-12-11 +Task 2.5: option text_gap for code39 2018-12-11 +Task 2.4: resolved the horizontal correction in spaced text 2018-12-11 +Task 2.3: further text option for the Code39 encoder 2018-12-06 +Task 2.2: include minimal text ability to the system +Task 2.1: design and implement a basic framework + + open 0.0.1 alpha dev master branch 🎉 2018-11-30 diff --git a/macros/luatex/generic/barracuda/barracuda.pdf b/macros/luatex/generic/barracuda/barracuda.pdf deleted file mode 100644 index 3554d40a4a..0000000000 Binary files a/macros/luatex/generic/barracuda/barracuda.pdf and /dev/null differ diff --git a/macros/luatex/generic/barracuda/doc/barracuda-ga-asm.pdf b/macros/luatex/generic/barracuda/doc/barracuda-ga-asm.pdf new file mode 100644 index 0000000000..18ba18b9c2 Binary files /dev/null and b/macros/luatex/generic/barracuda/doc/barracuda-ga-asm.pdf differ diff --git a/macros/luatex/generic/barracuda/doc/barracuda-ga-asm.tex b/macros/luatex/generic/barracuda/doc/barracuda-ga-asm.tex new file mode 100644 index 0000000000..1c403455f8 --- /dev/null +++ b/macros/luatex/generic/barracuda/doc/barracuda-ga-asm.tex @@ -0,0 +1,148 @@ +% !TeX program = LuaLaTeX +% Copyright (C) 2019 Roberto Giacomelli + +\documentclass{article} + +\usepackage{fontspec} +\setmainfont{Libertinus Serif} + +\usepackage[margin=18mm]{geometry} +\usepackage{array} +\usepackage{booktabs} + +\newcolumntype{C}{>{\ttfamily}c} +\newcolumntype{L}{>{\ttfamily}l} + +\begin{document} +Goal: describe geometrical object like lines and rectangles +mainly for a barcode drawing library. + + + +\section{\texttt{ga} instruction set} + +A graphic data specification format called '\texttt{ga}' \emph{graphic alchemy}, +or if you want \emph{generic graphic assembler}. + +\begin{verbatim} +ga := generic graphic assembler + := numeric type parameter for dimension, for example f64 or i32 + := numeric type parameter for quantity, an unsigned integer, i.e. u8 + +ga := +Elem + +Elem := Code + Args + +Code := State | Object | Fn + State := 1 -> 31 -- graphic properties + Object := 32 -> 239 -- graphic objects + Fn := 240 -> 255 -- functions + +Args : | | | + := a dimension value of type DIM + := an enumeration value of type u8 (unsigned byte) + := an unsigned integer for multiplicity + := chars sequence ended with 0 +\end{verbatim} + + + +\section{Properties} + +Colors, linecap style etc\dots + +\noindent\begin{tabular}{CLlL} +\toprule +OpCode & Mnemonic key & Graphic property & Operands\\ +\midrule + 1 & pen\_thick & Line thick & \\ + 2 & line\_cap\_style & Line cap style & \\ + 3 & line\_join\_style & Line join style & \\ + 8 & color & ... \\ +\midrule +30 & start\_bbox\_group & Stop to check the bounding box & -\\ +31 & end\_bbox\_group & Set a bounding box and restart to check & \\ +\bottomrule +\end{tabular} + + + +\section{Objects} + +\subsection{Lines} + +A segment that starts from point P1 (x1, y1) and ends to P2 (x2, y2). + +\noindent\begin{tabular}{CLlL} +\toprule +OpCode & Mnemonic key & Graphic object & Operands\\ +\midrule +32 & line & Line & \\ +33 & hline & Horizontal line & \\ +34 & vline & Vertical line & \\ +\midrule +36 & vbar & Vertical bars & ...\\ +37 & hbar & Horizontal bars & ...\\ +\midrule +38 & polyline & Open polyline & ...\\ +39 & c\_polyline & Closed polyline & ...\\ +\bottomrule +\end{tabular} + + +\subsection{Rectangles} + +\noindent\begin{tabular}{CLlL} +\toprule +OpCode & Mnemonic key & Graphic object & Operands\\ +\midrule + 48 & rect & Rectangle & \\ + 49 & f\_rect & Filled rectangle & \\ + 50 & rect\_size & Rectangle & \\ + 51 & f\_rect\_size & Filled rectangle & \\ + +\bottomrule +\end{tabular} + + +\subsection{Text} + +\noindent\begin{tabular}{CLl} +\toprule +OpCode & Mnemonic key & Graphic object/Operands\\ +\midrule + 130 & text & A text with several glyphs\\ + & & \ttfamily \\ +\midrule + 131 & text\_xspaced & A text with glyphs equally spaced on its vertical axis\\ + & & \ttfamily \\ +\midrule + 132 & text\_xwidth & Glyphs equally spaced on vertical axis between two x coordinates\\ + & & \ttfamily \\ +\midrule + & under design assessment\\ + 140 & \_text\_group & Texts on the same baseline \\ + & & \ttfamily < > \\ +\bottomrule +\end{tabular} + + +\subsection{Function} + + +\noindent\begin{tabular}{CLlL} +\toprule +OpCode & Mnemonic key & Function & Operands\\ +\midrule + 240 & move & Translate objects & \\ + 241 & copy & Copy object & ...\\ + 242 & and\_copy & Place and copy objects & ...\\ + 243 & grid & Copy next \(n\) objects on a grid & \\ + 244 & sl\_grid\\ + 250 & mirror\\ + 255 & comment & A string comment & \\ +\bottomrule +\end{tabular} + + +\end{document} diff --git a/macros/luatex/generic/barracuda/doc/barracuda-manual-tool.tex b/macros/luatex/generic/barracuda/doc/barracuda-manual-tool.tex new file mode 100644 index 0000000000..9e5f5f8a47 --- /dev/null +++ b/macros/luatex/generic/barracuda/doc/barracuda-manual-tool.tex @@ -0,0 +1,7 @@ + + + + + + + diff --git a/macros/luatex/generic/barracuda/doc/barracuda.pdf b/macros/luatex/generic/barracuda/doc/barracuda.pdf new file mode 100644 index 0000000000..6472da10ee Binary files /dev/null and b/macros/luatex/generic/barracuda/doc/barracuda.pdf differ diff --git a/macros/luatex/generic/barracuda/doc/barracuda.tex b/macros/luatex/generic/barracuda/doc/barracuda.tex new file mode 100644 index 0000000000..e5d6b6acdb --- /dev/null +++ b/macros/luatex/generic/barracuda/doc/barracuda.tex @@ -0,0 +1,331 @@ +% !TeX program = LuaLaTeX +% Copyright (C) 2019 Roberto Giacomelli +% Barracuda manual main source file + +\documentclass[11pt]{article} +\usepackage{fontspec} +\usepackage{geometry} +\usepackage{fancyvrb} +\usepackage{graphicx} +\usepackage{hyperref} + +% special macro for manual typesetting +\input{barracuda-manual-tool} + +\hypersetup{ +pdfinfo={ + Title={Barracuda manual}, + Subject={Barcode printing package}, + Author={Roberto Giacomelli}, + Keywords={Barcode EAN Code128 Lua} +}} + +\setmainfont{Libertinus Serif} +\setmonofont{IBM Plex Sans Condensed} +\fvset{ + fontsize=\small, + frame=single, + labelposition=topline, + framesep=6pt +} +\geometry{ + left=32mm, + right=40mm, + top=28mm, + bottom=28mm +} +\newcommand{\code}[1]{\texttt{#1}} +\newcommand{\brcd}{\code{barracuda}} + +\author{Roberto Giacomelli\\\small email: \url{giaconet.mailbox@gmail.com}} +\title{\code{barracuda} manual\\[1ex] +\small \url{https://github.com/robitex/barracuda}} +\date{\small 2019-12-04\\Version v0.0.9.1} + +\begin{document} +\maketitle + +\abstract{% +Welcome to the \brcd{} software project devoted to barcodes printing. + +This manual shows you how to print barcodes in your \TeX{} documents and how to +export such graphic content to an external file, using \brcd{}. + +\brcd{} is written in Lua programming language and is free software released +under the GPL 2 License.% +} + + +\section{Introduction} + +Barcode symbols are usually a sequence of vertical lines representing encoded +data that can be retrived with special laser scanner or more simpler with a +smartphone running dedicated apps. Almost every store item has a label with a +printed barcode for automatic identification purpose. + +So far, \brcd{} supported symbologies are as the following: +\begin{itemize} + \item Code 39, + \item Code 128, + \item EAN family (EAN 8, EAN 13, and the add-ons EAN 2 and EAN 5), + \item ITF 2of5, interleaved Two of Five. +\end{itemize} + +The package provides drivers for different graphic format, at the moment are: +\begin{itemize} + \item PDF Portable Document Format (require a modern \TeX{} engine), + \item SVG Scalable Vector Graphic. +\end{itemize} + +The name \brcd{} is an assonance with the name Barcode. I started the project +back in 2016 for getting barcode in my \TeX{} generated PDF documents, studying +the Lua\TeX{} technology. + + +\subsection{Manual Content} + +The manual is divided into three parts. At section~\ref{secEnter} the first look +gives to the user a proof of concept to how to use and how works the package +while the next parts present details like how to change the \emph{module} width +of a EAN-13 barcode or how to implement a barcode symbology not already included +in the package. + +The plan of the manual is (but some sections are not completed yet): +\begin{description} +\item[Part 1:] Get started +\begin{itemize} + \item print your first barcode \( \to \) \ref{secEnter} + \item installing \brcd{} on your system \( \to \) \ref{secInstall} + \item \brcd{} \LaTeX{} package \( \to \) \ref{secLaTeXPkg} +\end{itemize} +\item[Part 2:] Advanced Work with \brcd{} +\begin{itemize} + \item Lua framework description \( \to \) \ref{secFramework} + \item working example and use cases \( \to \) \ref{secExample} +\end{itemize} +\item[Part 3:] Reference and parameters +\begin{itemize} + \item barcode symbology reference \( \to \) \ref{secBcRef} + \item \code{ga} specification + \item API reference \( \to \) \ref{secAPI} +\end{itemize} +\end{description} + +\subsection{Required knowledge and useful resources} + +The \brcd{} is a Lua package that can be executed by any Lua interpreter. To use +it, it's necessary some knowledge of Lua programming language and a certain +ability with the terminal of your computer system in order to accomplish command +tasks or software installations. + +It's also possible to run \brcd{} directly from within a \TeX{} source file, +compiled with a suitable typesetting engine like Lua\TeX{}. To do so a minimal +\TeX{} system knowledge is required. As an example of this workflow you simply +can look to this manual because itself is typesetted with LuaLa\TeX{}, running +\brcd{} to include barcodes as a vector graphic object. + +Here is a collection of useful learning resources\dots + +% +% +% +% + + +\section{Get Started with Barracuda} +\label{secEnter} + +The starting point to work with \brcd{} is always a plain text file with some +code, late processed by a command line program with a Lua interpreter. + +As a practical example producing an EAN-13 barcode, in a text editor of your +choice on a empty file called \code{first-run.lua}, type the following two lines +of code: +\medskip +\begin{Verbatim}[label=\footnotesize\code{first-run.lua}] +local barracuda = require "barracuda" +barracuda:save("ean-13", "8006194056290", "my_barcode", "svg") +\end{Verbatim} + +What you have done is to write a \emph{script}. If you have installed a Lua +interpreter and \brcd{}, open a terminal and run the command: +\begin{Verbatim} +$ lua first-run.lua +\end{Verbatim} + +You will see in the same directory of your script, appearing the new file +\code{my\_barcode.svg} with the drawing: +\begin{center} +\includegraphics{image/8006194056290} +\end{center} + +Coming back to the script \code{first-run.lua}, first of all, it's necessary to +load the library with the standard statement \code{require()}. What that Lua +function returns is an object---more precisely a table reference---where are +stored every package features. + +We can now produce the EAN-13 barcode using the method \code{save()} of the +\brcd{} object. The \code{save()} method takes in order the barcode symbology +identifier, the data to be encoded as a string or also a whole number, the +output file name and the optional output format. + + +\subsection{Running Lua\TeX} + +Barracuda can also running inside Lua\TeX{} and the others Lua powered \TeX{} +engine. The text source file is a bit difference respect to a Lua script: Lua +code have to bring place as the argument of directlua primitive... we must use +a box register of type horizontal... + +\begin{Verbatim} +% !TeX program = LuaTeX +\nopagenumbers +\newbox\mybox +\directlua{ + local require "barracuda" + barracuda:hbox("ean-13", "8006194056290", "mybox") +}\box\mybox +\bye +\end{Verbatim} + +The method \code{hbox()} works only with Lua\TeX{}. + + +\subsection{A more deep look} + +Barracuda is designed to be modular and flexible. For example it is possible +to draw different barcodes on the same canvas or tune barcode parameters. + +The main workflow to draw a barcode object reveals more details on internal +structure. In fact, to draw an EAN-13 barcode we must do at least the following +steps: +\begin{enumerate} +\item load the library, +\item get a reference to the \code{Barcode} class, +\item build an EAN encoder, +\item build an EAN symbol passing data to a costructor, +\item get a reference to a new canvas object, +\item draw barcode on canvas, +\item get a reference of driver object, +\item address canvas toward a driver. +\end{enumerate} + +Follow that step by step procedure the corresponding code is in the next +listing: +\begin{Verbatim} +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() + +local ean13, err_enc = barcode:new_encoder("ean-13") +assert(ean13, err_enc) + +local symb, err_symb = ean13:from_string("8006194056290") +assert(symb, err_symb) + +local canvas = barracuda:new_canvas() +symb:append_ga(canvas) + +local driver = barracuda:get_driver() +local ok, err_out = driver:save("svg", canvas, "my_barcode", "svg") +assert(ok, err_out) +\end{Verbatim} + + +\section{Installing} +\label{secInstall} + +\subsection{Installing `barracuda` for TeX Live} + +If you have TeX Live installed from CTAN or from DVD TeX Collection, check +before any modification to your system if the package is already installed +looking for \emph{installed} key in the output of the command: +\begin{Verbatim} +$ tlmgr show barracuda +\end{Verbatim} + +If `barracuda` is not present, run the command: +\begin{Verbatim} +$ tlmgr install barracuda +\end{Verbatim} + +If you have installed TeX Live via Linux OS repository try your distribution's +package management system. + +It's also possible a manual installation: +\begin{enumerate} +\item Grab the sources from CTAN or \url{https://github.com/robitex/barracuda}. +\item Unzip it at the root of one or your TDS trees. +\item You may need to update some filename database after this, see your \TeX{} +distribution's manual for details. +\end{enumerate} + +\subsection{Installing for Lua} + +Manually copy \code{src} folder content to a suitable directory of your system +that is reachable to Lua interpreter. + + +\section{Barracuda \LaTeX{} Package} +\label{secLaTeXPkg} + +The \LaTeX{} package delivered with \brcd{} is still under an early stage of +development. The only macro available is \verb=\barracuda{encoder}{data}=. +A simple example is the following source file for Lua\LaTeX{}: +\begin{Verbatim} +% !TeX program = LuaLaTeX +\documentclass{article} +\usepackage{barracuda} +\begin{document} +\leavevmode +\barracuda{code39}{123ABC}\\ +\barracuda{code128}{123ABC} +\end{document} +\end{Verbatim} + +Every macro \verb=\barracuda= typesets a barcode symbol represented with the +encoder defined in the first argument, the information defined by the second. + + +\section{The Barracuda Framework} +\label{secFramework} + +The \brcd{} package framework consists in indipendet modules: a barcode class +hierarchy encoding a text into a barcode symbology; a geometrical library called +\code{libgeo} representing several graphic object; an encoding library for the +\code{ga} format (graphic assembler) several driver to "print" a ga stream +into a file or a \TeX{} hbox register. + +To implement a barcode encoder you need to write a component called +\emph{encoder} defining every parameters and producing the encoder class, while +a driver must understand ga opcode stream and print the corresponding graphic +object. + +Every barcode encoder come with a set of parameters, some of them can be +reserved and can be setting up by the user only through the encoder. + +So, you can create many instances of the same encoder for a single barcode +type, with its own parameter set. + +The basic idea is getting faster encoder, for which the user may set up +paramenters at any level: barcode abstract class, encoder, down to a single +symbol. + +Barcode class is completely indipendent from the ouput driver and viceversa. + + +\section{Example and use cases} +\label{secExample} + +TODO + +\section{Barcode Reference} +\label{secBcRef} + +TODO + +\section{API reference} +\label{secAPI} + +TODO + +\end{document} diff --git a/macros/luatex/generic/barracuda/doc/image/8006194056290.pdf b/macros/luatex/generic/barracuda/doc/image/8006194056290.pdf new file mode 100644 index 0000000000..8effe87846 Binary files /dev/null and b/macros/luatex/generic/barracuda/doc/image/8006194056290.pdf differ diff --git a/macros/luatex/generic/barracuda/example/001-13-ean-test.pdf b/macros/luatex/generic/barracuda/example/001-13-ean-test.pdf deleted file mode 100644 index 925a8ad8f0..0000000000 Binary files a/macros/luatex/generic/barracuda/example/001-13-ean-test.pdf and /dev/null differ diff --git a/macros/luatex/generic/barracuda/example/001-13-ean-test.tex b/macros/luatex/generic/barracuda/example/001-13-ean-test.tex deleted file mode 100644 index c0a4db3894..0000000000 --- a/macros/luatex/generic/barracuda/example/001-13-ean-test.tex +++ /dev/null @@ -1,220 +0,0 @@ -% !TeX program = LuaTeX -% Copyright (C) 2019 Roberto Giacomelli - -\newbox\mybox -\nopagenumbers - -EAN encoder test. - -Test 1: one simple barcode EAN13 with default parameter: - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() - -local ean13, err = barcode:new_encoder("ean-13") -assert(not err, err) - -local symbo, err = ean13:from_string("8006194056290") -assert(not err, err) - -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) - -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\medskip -Test 2: one simple EAN8 barcode with default parameter: - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() - -local ean8, err = barcode:new_encoder("ean-8") -assert(not err, err) - -local symbo, err = ean8:from_string("96385074") -assert(not err, err) - -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) - -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\medskip -Test 3: one simple EAN5 barcode with default parameter: - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local ean5, err = barcode:new_encoder("ean-5") -assert(not err, err) -local symbo, err = ean5:from_string("54495") -assert(not err, err) -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\medskip -Test 4: one simple EAN2 barcode with default parameter: - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local ean2, err = barcode:new_encoder("ean-2") -assert(not err, err) -local symbo, err = ean2:from_string("53") -assert(not err, err) -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\medskip -Test 5: EAN13 + EAN5 barcode with default parameter: - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local ean, err = barcode:new_encoder("ean-13+5"); assert(not err, err) -local n = 123456789012 -local c = ean:checksum(n) -local s = n .. c -local symbo, err = ean:from_string(s.."12345") -assert(not err, err) -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule Test 5\vrule\box\mybox \vrule Test 5\vrule - -\medskip -Test 6: EAN13 + EAN2 barcode with default parameter: - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local ean, err = barcode:new_encoder("ean-13+2"); assert(not err, err) -local n = 123456789012 -local c = ean:checksum(n) -local s = n .. c -local symbo, err = ean:from_string(s.."12") -assert(not err, err) -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule Test 6\vrule\box\mybox \vrule Test 6\vrule - -\medskip -Test 7: EAN8 + EAN5 barcode with default parameter: - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local ean, err = barcode:new_encoder("ean-8+5"); assert(not err, err) -local n = 1234567 -local c = ean:checksum(n) -local s = n .. c -local symbo, err = ean:from_string(s.."12345") -assert(not err, err) -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule Test 7\vrule\box\mybox \vrule Test 7\vrule - -\medskip -Test 8: EAN8 + EAN2 barcode with default parameter: - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local ean, err = barcode:new_encoder("ean-8+2"); assert(not err, err) -local n = 7865431 -local c = ean:checksum(n) -local s = n .. c -local symbo, err = ean:from_string(s.."88") -assert(not err, err) -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule Test 8\vrule\box\mybox \vrule Test 8\vrule - -\medskip -Test 9: draw an EAN13 symbol with a user defined height. - -\smallskip -We will test also the function barcode:enc\_by\_name(bc\_type, name), -reusing encoders generated previuosly. The height parameter remain local -to the object symbol. -\smallskip - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local ean, err = barcode:enc_by_name("ean-13"); assert(not err, err) -local n = 818571884348 -local c = ean:checksum(n) -local s = n .. c -local symbo, err = ean:from_string(s); assert(not err, err) -local ok, err = symbo:set_param("height", tex.sp "5mm"); assert(ok, err) -local canvas = barracuda:new_canvas() -symbo:append_ga(canvas) - -local s2, err = ean:from_uint(8001120972163); assert(not err, err) -s2:append_ga(canvas, tex.sp "45mm", 0) - -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule Test 9\vrule\box\mybox \vrule Test 9\vrule - -\medskip -Test 10: draw EAN13 symbols with a user defined height. - -\smallskip -The parameter height is setting up in the encoder so it will be global. -\smallskip - -\directlua{ -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local ean, err = barcode:enc_by_name("ean-13"); assert(not err, err) -local ok, err = ean:set_param("height", tex.sp "5mm"); assert(ok, err) -local n = 758458535897; local c = ean:checksum(n); local s = n .. c -local s1, err = ean:from_string(s); assert(not err, err) -local canvas = barracuda:new_canvas() -s1:append_ga(canvas) -local s2, err = ean:from_uint(8001120972163); assert(not err, err) -s2:append_ga(canvas, tex.sp "40mm", 0) -local s3, err = ean:from_uint(8000570000310); assert(not err, err) -local ok, e = s3:set_param{height = tex.sp "10mm"}; assert(ok, e) -s3:append_ga(canvas, tex.sp "90mm", 0) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule Test 10\vrule\box\mybox \vrule Test 10\vrule - -\medskip -That's all folk! - -\bye - - diff --git a/macros/luatex/generic/barracuda/example/001-code128-test.lua b/macros/luatex/generic/barracuda/example/001-code128-test.lua deleted file mode 100644 index 78645612dc..0000000000 --- a/macros/luatex/generic/barracuda/example/001-code128-test.lua +++ /dev/null @@ -1,32 +0,0 @@ --- Copyright (C) 2018 Roberto Giacomelli - -local barracuda = require "barracuda" -local barcode = barracuda:get_barcode_class() -local c128, err = barcode:new_encoder("code128") -assert(not err, err) - -print(c128._NAME) -print(c128._VERSION) - -local info = c128:info() -print("encoder name = ", info.name) -print("description = ", info.description) -for k, tp in ipairs(info.param) do - print(k, tp.name, tp.value) -end - -local symb = c128:from_string("123") -print("Symbol char list:") -for _, c in ipairs(symb._code_data) do - print(c) -end - -local canvas = barracuda:new_canvas() - -symb:append_ga(canvas) - --- driver library -local drv = barracuda:get_driver() -drv:save("svg", canvas, "c128-123") - - diff --git a/macros/luatex/generic/barracuda/example/001-i2of5-test.pdf b/macros/luatex/generic/barracuda/example/001-i2of5-test.pdf deleted file mode 100644 index c46bb12d50..0000000000 Binary files a/macros/luatex/generic/barracuda/example/001-i2of5-test.pdf and /dev/null differ diff --git a/macros/luatex/generic/barracuda/example/001-i2of5-test.tex b/macros/luatex/generic/barracuda/example/001-i2of5-test.tex deleted file mode 100644 index 43c652d66a..0000000000 --- a/macros/luatex/generic/barracuda/example/001-i2of5-test.tex +++ /dev/null @@ -1,187 +0,0 @@ -% !TeX program = LuaTeX -% Copyright (C) 2019 Roberto Giacomelli - -\newbox\mybox -\nopagenumbers - -\directlua{barracuda = require "barracuda"} - -Interleaved 2 of 5 encoder test. - -Test 1: one simple barcode with default parameters: - -\directlua{ -local barcode = barracuda:get_barcode_class() - -local enc, err = barcode:new_encoder("i2of5"); assert(not err, err) -local symbo, err = enc:from_uint(54654681); assert(not err, err) -local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\bigskip -Test 2: one simple barcode with default parameter: - -\directlua{ -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -local symbo, err = enc:from_uint(1234567895); assert(not err, err) -local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -% check digit tests - -\directlua{% verify check digits, the last one -local code = { - 7352621, - 9624764, - 7592881, - 5344147, - 742238, - 199766, - 4544739, - 2774794, - 8509895, - 8285157, - 5387564, - 5534371, - 2155678, - 4529545, - 4689164, - 1674910, - 5317837, - 4117698, -} -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -for _, n in ipairs(code) do - local smbl, err = enc:from_uint(n, {check_digit_policy="verify"}) - assert(not err, err) -end -} - -\directlua{% check digits evaluation -local code = { - ["735262"] = 1, - ["962476"] = 4, - ["759288"] = 1, - ["534414"] = 7, - ["74223"] = 8, - ["19976"] = 6, - ["454473"] = 9, - ["277479"] = 4, - ["850989"] = 5, - ["828515"] = 7, - ["538756"] = 4, - ["553437"] = 1, - ["215567"] = 8, - ["452954"] = 5, - ["468916"] = 4, - ["167491"] = 0, - ["531783"] = 7, - ["411769"] = 8, -} -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -for sc, ck in pairs(code) do - local n = tonumber(sc) - local c, err = enc:get_checkdigit(n) - assert(not err, err) - assert(c == ck, "Wrong check digit "..c.." vs "..ck .." for "..sc) -end -} - -\bigskip -Test 3: one simple barcode with check digit automatically added: - -\directlua{ -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -local symbo, err = enc:from_uint(454473, {check_digit_policy="add"}) -assert(not err, err) -local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\bigskip -Test 4: a second simple barcode with check digit automatically added: - -\directlua{ -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -local symbo, err = enc:from_uint(74223, {check_digit_policy="add"}) -assert(not err, err) -local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\bigskip -Test 5: a symbol with native check digits: - -\directlua{ -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -local symbo, err = enc:from_uint(121891259, {check_digit_policy="verify"}) -assert(not err, err) -local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\bigskip -Test 6: bearer bars please: - -\directlua{ -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -local symbo, err = enc:from_uint(747867239, {bearer_bars_enabled = true}) -assert(not err, err) -local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\bigskip -Test 7: bearer bars all around the symbol: - -\directlua{ -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -local symbo, err = enc:from_uint(986790868, {bearer_bars_enabled = true, bearer_bars_layout="frame"}) -assert(not err, err) -local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -\bigskip -Test 8: bearer bars all around the symbol (with string costructor): - -\directlua{ -local barcode = barracuda:get_barcode_class() -local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) -local symbo, err = enc:from_string("986790868", {bearer_bars_enabled = true, bearer_bars_layout="frame"}) -assert(not err, err) -local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\vrule A\vrule\box\mybox \vrule A\vrule - -That's all folks! - -\bye - - diff --git a/macros/luatex/generic/barracuda/example/003-code39-test.pdf b/macros/luatex/generic/barracuda/example/003-code39-test.pdf deleted file mode 100644 index 4625a40010..0000000000 Binary files a/macros/luatex/generic/barracuda/example/003-code39-test.pdf and /dev/null differ diff --git a/macros/luatex/generic/barracuda/example/003-code39-test.tex b/macros/luatex/generic/barracuda/example/003-code39-test.tex deleted file mode 100644 index a4ba3d6e81..0000000000 --- a/macros/luatex/generic/barracuda/example/003-code39-test.tex +++ /dev/null @@ -1,53 +0,0 @@ -% !TeX program = LuaTeX -% Copyright (C) 2019 Roberto Giacomelli - -\newbox\mybox -\nopagenumbers - -Test 3: the same Code 39 symbol drawing multiple time on the same canvas - -\directlua{ -local barracuda = require "barracuda" -local c39, err = barracuda:get_barcode_class() - :new_encoder("code39") -assert(not err, err) -local err -local symbol -symbol, err = c39:from_string("ABCDEF12QJ31+") -assert(not err, err) - -local ok, err = c39:set_param("text_vpos", "top") -assert(ok, err) - -local canvas = barracuda:new_canvas() -symbol:append_ga(canvas) - -local ok, err = symbol:set_param("text_hpos", "center") -assert(ok, err) -symbol:append_ga(canvas, tex.sp "4.5cm") - -local ok, err = symbol:set_param("text_hpos", "right") -assert(ok, err) -symbol:append_ga(canvas, tex.sp "9.0cm") - -local ok, err = c39:set_param("text_vpos", "bottom") -assert(ok, err) - -local ok, err = symbol:set_param("text_hpos", "left") -symbol:append_ga(canvas, 0, tex.sp "-2.0cm") - -local ok, err = symbol:set_param("text_hpos", "center") -assert(ok, err) -symbol:append_ga(canvas, tex.sp "4.5cm", tex.sp "-2.0cm") - -local ok, err = symbol:set_param("text_hpos", "right") -assert(ok, err) -symbol:append_ga(canvas, tex.sp "9.0cm", tex.sp "-2.0cm") - -local drv = barracuda:get_driver() -drv:ga_to_hbox(canvas, "mybox") -} -\box\mybox -\bye - - diff --git a/macros/luatex/generic/barracuda/example/003-ean-test.pdf b/macros/luatex/generic/barracuda/example/003-ean-test.pdf deleted file mode 100644 index e03c2d48d7..0000000000 Binary files a/macros/luatex/generic/barracuda/example/003-ean-test.pdf and /dev/null differ diff --git a/macros/luatex/generic/barracuda/example/003-ean-test.tex b/macros/luatex/generic/barracuda/example/003-ean-test.tex deleted file mode 100644 index 59b17c4c07..0000000000 --- a/macros/luatex/generic/barracuda/example/003-ean-test.tex +++ /dev/null @@ -1,16 +0,0 @@ -% !TeX program = LuaLaTeX -\documentclass{standalone} -\usepackage{fontspec} -\setmainfont{ocrb10.otf} -\newbox\mybox -\directlua{ - local barracuda = require "barracuda" - barracuda:hbox("ean-13", "8006194056290", "mybox") -} - -\begin{document} -\box\mybox -\end{document} - - - diff --git a/macros/luatex/generic/barracuda/example/004-ean-test.lua b/macros/luatex/generic/barracuda/example/004-ean-test.lua deleted file mode 100644 index 017e0725b8..0000000000 --- a/macros/luatex/generic/barracuda/example/004-ean-test.lua +++ /dev/null @@ -1,9 +0,0 @@ - -local barracuda = require "barracuda" -barracuda:save("ean-13", "8006194056290", "8006194056290") - - - - - - diff --git a/macros/luatex/generic/barracuda/example/006-code39-test.lua b/macros/luatex/generic/barracuda/example/006-code39-test.lua deleted file mode 100644 index d33ad4ffaf..0000000000 --- a/macros/luatex/generic/barracuda/example/006-code39-test.lua +++ /dev/null @@ -1,45 +0,0 @@ - -local cm = 1864679.8110236 -- sp - -local barracuda = require "barracuda" -local c39, err = barracuda:get_barcode_class() - :new_encoder("code39") -assert(not err, err) -local err -local symbol -symbol, err = c39:from_string("ABCDEF12QJ31+") -assert(not err, err) - -local ok, err = c39:set_param("text_vpos", "top") -assert(ok, err) - -local canvas = barracuda:new_canvas() -symbol:append_ga(canvas) - -local ok, err = symbol:set_param("text_hpos", "center") -assert(ok, err) -symbol:append_ga(canvas, 4.5*cm) - -local ok, err = symbol:set_param("text_hpos", "right") -assert(ok, err) -symbol:append_ga(canvas, 9.0*cm) - -local ok, err = c39:set_param("text_vpos", "bottom") -assert(ok, err) - -local ok, err = symbol:set_param("text_hpos", "left") -symbol:append_ga(canvas, 0, -2.0*cm) - -local ok, err = symbol:set_param("text_hpos", "center") -assert(ok, err) -symbol:append_ga(canvas, 4.5*cm, -2.0*cm) - -local ok, err = symbol:set_param("text_hpos", "right") -assert(ok, err) -symbol:append_ga(canvas, 9.0*cm, -2.0*cm) - -local drv = barracuda:get_driver() -drv:save("svg", canvas, "006-six") - - - diff --git a/macros/luatex/generic/barracuda/example/006-six.svg b/macros/luatex/generic/barracuda/example/006-six.svg deleted file mode 100644 index 25ce8bb34c..0000000000 --- a/macros/luatex/generic/barracuda/example/006-six.svg +++ /dev/null @@ -1,653 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABCDEF12QJ31+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABCDEF12QJ31+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABCDEF12QJ31+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABCDEF12QJ31+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABCDEF12QJ31+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ABCDEF12QJ31+ - - diff --git a/macros/luatex/generic/barracuda/example/01-latex-code39.pdf b/macros/luatex/generic/barracuda/example/01-latex-code39.pdf deleted file mode 100644 index d40c55f46c..0000000000 Binary files a/macros/luatex/generic/barracuda/example/01-latex-code39.pdf and /dev/null differ diff --git a/macros/luatex/generic/barracuda/example/01-latex-code39.tex b/macros/luatex/generic/barracuda/example/01-latex-code39.tex deleted file mode 100644 index c74935ed8d..0000000000 --- a/macros/luatex/generic/barracuda/example/01-latex-code39.tex +++ /dev/null @@ -1,14 +0,0 @@ -% !TeX program = LuaLaTeX -% Copyright (C) 2019 Roberto Giacomelli - -\documentclass{article} - -\usepackage{barracuda} - -\begin{document} - -A\barracuda{code39}{123QWE}A - -\end{document} - - diff --git a/macros/luatex/generic/barracuda/example/8006194056290.svg b/macros/luatex/generic/barracuda/example/8006194056290.svg deleted file mode 100644 index f7965e94d4..0000000000 --- a/macros/luatex/generic/barracuda/example/8006194056290.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 8 - - 0 - 0 - 6 - 1 - 9 - 4 - - - 0 - 5 - 6 - 2 - 9 - 0 - - - diff --git a/macros/luatex/generic/barracuda/example/c128-123.svg b/macros/luatex/generic/barracuda/example/c128-123.svg deleted file mode 100644 index 9f5b5847aa..0000000000 --- a/macros/luatex/generic/barracuda/example/c128-123.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/macros/luatex/generic/barracuda/lib/barracuda.lua b/macros/luatex/generic/barracuda/lib/barracuda.lua deleted file mode 100644 index 33e81be24f..0000000000 --- a/macros/luatex/generic/barracuda/lib/barracuda.lua +++ /dev/null @@ -1,116 +0,0 @@ --- Welcome to the 'barracuda' barcode library --- --- Encode a message into a barcode symbol, in Lua or within a LuaTeX source file --- --- Copyright (C) 2019 Roberto Giacomelli --- --- This program is free software; you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation; either version 2 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program; if not, write to the Free Software --- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - --- Basic Conventions: --- fields that start with an undercore are private --- class name follows the snake case naming convention --- the 'barracuda' table is the only global object to access every package --- modules. - -local Barracuda = { - _VERSION = "barracuda v0.0.9", - _NAME = "barracuda", - _DESCRIPTION = "Lua library for barcode printing", - _URL = "https://github.com/robitex/barracuda", - _LICENSE = "GNU GENERAL PUBLIC LICENSE, Version 2, June 1991", -} - --- essential sub-module loading -Barracuda._libgeo = require "lib-geo.libgeo" -- basic vectorial objects -Barracuda._gacanvas = require "lib-geo.gacanvas" -- ga stream library -Barracuda._barcode = require "lib-barcode.barcode" -- barcode abstract class - -local Barcode = Barracuda._barcode -Barcode._libgeo = Barracuda._libgeo - --- encoder builder -function Barracuda:get_barcode_class() --> Barcode class object - return self._barcode -end - --- where we place output driver library -function Barracuda:get_driver() --> Driver object, err - if not self._lib_driver then - self._lib_driver = require "lib-driver.driver" - end - return self._lib_driver -end - -function Barracuda:new_canvas() --> driver - local gacanvas = self._gacanvas - return gacanvas:new() -end - --- high level barcode functions --- only default options --- panic on error - --- save barcode as a graphic external file -function Barracuda:save(bc_type, data, filename, id_drv) - local barcode = self:get_barcode_class() - local enc, err = barcode:new_encoder(bc_type) - assert(enc, err) - local arg_data = type(data) - local symb - if arg_data == "number" then - local err_data - symb, err_data = enc:from_uint(data) - asser(symb, err_data) - elseif arg_data == "string" then - local err_data - symb, err_data = enc:from_string(data) - assert(symb, err_data) - else - error("[argErr] unsupported 'data' type") - end - local canvas = self:new_canvas() - symb:append_ga(canvas) - local driver = self:get_driver() - id_drv = id_drv or "svg" - local ok, out_err = driver:save(id_drv, canvas, filename) - assert(ok, out_err) -end - --- this is a only LuaTeX method -function Barracuda:hbox(bc_type, data, box_name) - local barcode = self:get_barcode_class() - local enc, err = barcode:new_encoder(bc_type) - assert(enc, err) - local arg_data = type(data) - local symb - if arg_data == "number" then - local err_data - symb, err_data = enc:from_uint(data) - asser(symb, err_data) - elseif arg_data == "string" then - local err_data - symb, err_data = enc:from_string(data) - assert(symb, err_data) - else - error("[argErr] unsupported 'data' type") - end - local canvas = self:new_canvas() - symb:append_ga(canvas) - local driver = self:get_driver() - local ok, err_hbox = driver:ga_to_hbox(canvas, box_name) - assert(ok, err_hbox) -end - -return Barracuda diff --git a/macros/luatex/generic/barracuda/lib/lib-barcode/barcode.lua b/macros/luatex/generic/barracuda/lib/lib-barcode/barcode.lua deleted file mode 100644 index ed6204528a..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-barcode/barcode.lua +++ /dev/null @@ -1,544 +0,0 @@ - --- Barcode abstract class --- Copyright (C) 2019 Roberto Giacomelli --- Please see LICENSE.TXT for any legal information about present software - -local Barcode = { - _VERSION = "Barcode v0.0.5", - _NAME = "Barcode", - _DESCRIPTION = "Barcode abstract class", -} -Barcode.__index = Barcode - --- barcode_type/submodule name -Barcode._available_enc = {-- keys must be lowercase - code39 = "lib-barcode.code39", - code128 = "lib-barcode.code128", - ean = "lib-barcode.ean", - i2of5 = "lib-barcode.i2of5", -- Interleaved 2 of 5 -} -Barcode._builder_instances = {} -- encoder builder instances repository - --- common parameters to all the barcode objects -Barcode._super_par_def = {} -local pardef = Barcode._super_par_def - --- set an Anchor point (ax, ay) relatively to the barcode bounding box --- without considering any text object --- ax = 0, ay = 0 is the lower left corner of the symbol --- ax = 1, ay = 1 is the upper right corner of the symbol -Barcode.ax = 0.0 -pardef.ax = { - default = 0.0, - unit = "sp", -- scaled point - isReserved = false, - order = 1, - fncheck = function (self, ax, _) --> boolean, err - if ax >= 0.0 and ax <= 1.0 then return true, nil end - return false, "[OutOfRange] 'ax' out of [0, 1] interval" - end, -} -Barcode.ay = 0.0 -pardef.ay = { - default = 0.0, - unit = "sp", -- scaled point - isReserved = false, - order = 2, - fncheck = function (self, ay, _) --> boolean, err - if ay >= 0.0 and ay <= 1.0 then return true, nil end - return false, "[OutOfRange] 'ay' out of [0, 1] interval" - end, -} - --- Barcode.bbox_to_quietzone -- under assessment - --- Barcode methods - --- stateless iterator troughtout the ordered parameters collection -local function p_iter(state, i) - i = i + 1 - local t = state[i] - if t then - return i, t - end -end - --- main iterator on parameter definitions -function Barcode:param_ord_iter() - local state = {} - -- append family parameter - local p2_family = self._par_def -- base family parameters - local fam_len = 0 - if p2_family then - for pname, pdef in pairs(p2_family) do - state[pdef.order] = { - pname = pname, - pdef = pdef, - isSuper = false, - } - fam_len = fam_len + 1 - end - assert(fam_len == #state) - end - -- append the variant parameters - local var_len = 0 - local var = self._variant - if var then -- specific variant parameters - local p2_variant = assert(self._par_def_variant[var]) - for pname, pdef in pairs(p2_variant) do - if state[pname] then - error("[InternalErr] overriding paramenter '"..pname.."'") - end - state[pdef.order + fam_len] = { - pname = pname, - pdef = pdef, - isSuper = false, - } - var_len = var_len + 1 - end - assert(fam_len + var_len == #state) - end - -- append the super class parameter to the iterator state - local p1 = self._super_par_def - local super_len = 0 - for pname, pdef in pairs(p1) do - if state[pname] then - error("[InternalError] overriding paramenter name '"..pname.."'") - end - state[fam_len + var_len + pdef.order] = { - pname = pname, - pdef = pdef, - isSuper = true, - } - super_len = super_len + 1 - end - assert(super_len + fam_len + var_len == #state) - return p_iter, state, 0 -end - --- encoder costructor --- Symbology can be a family with many variants. This is represented by the --- first argument 'bc_type' formatted as -. --- in more details: --- if there are variants --- if not --- i.e. when 'bc_type' is the string "ean-13", "ean" is the barcode family and --- "13" is its variant name. --- For whose barcodes that do not have variants, 'bc_type' is simply the endoder id --- such as "code128". --- 'id_enc' is an optional identifier useful to retrive an encoder reference later --- 'opt' is an optional table with the user-defined parameters setting up encoders --- -function Barcode:new_encoder(bc_type, id_enc, opt) --> object, err - -- argument checking - if type(bc_type) ~= "string" then - return nil, "[ArgErr] 'bc_type' is not a string" - end - local pdash = string.find(bc_type, "-") - local family, variant - if pdash then - family = string.sub(bc_type, 1, pdash - 1) - variant = string.sub(bc_type, pdash + 1) - else - family = bc_type - end - local av_enc = self._available_enc - if not av_enc[family] then -- is the barcode type a real module? - return nil, "[Err] barcode type '"..family.."' not found" - end - if id_enc == nil then - id_enc = (variant or "") .. "_noname" - elseif type(id_enc) ~= "string" then - return nil, "[ArgErr] provided 'id_enc' is not a string" - end - if type(opt) == "table" or opt == nil then - opt = opt or {} - else - return nil, "[ArgErr] provided 'opt' is wrong" - end - local tenc = self._builder_instances - local builder; - if tenc[family] then -- is the encoder builder already loaded? - builder = tenc[family] - else -- loading the encoder builder - local mod_path = av_enc[family] - builder = require(mod_path) - tenc[family] = assert(builder, "[InternalErr] module not found!") - builder._enc_instances = {} - end - if builder._enc_instances[id_enc] then - return nil, "[Err] 'id_enc' already present" - end - local enc = {} -- the new encoder - enc.__index = enc - enc._variant = variant - setmetatable(enc, { - __index = function(_, k) - if builder[k] ~= nil then - return builder[k] - end - return self[k] - end - }) - builder._enc_instances[id_enc] = enc - -- param defition - for _, tpar in enc:param_ord_iter() do - local pname = tpar.pname - local pdef = tpar.pdef - local isSuper = tpar.isSuper - local val = opt[pname] -- param = val - if val ~= nil then - local ok, err = pdef:fncheck(val, enc) - if ok then - enc[pname] = val - else -- error! - return nil, err - end - else - -- load the default value of - local def_val; if pdef.fndefault then - def_val = pdef:fndefault(enc) - else - def_val = pdef.default - end - if not isSuper then - enc[pname] = def_val - end - end - end - if enc.config then -- this must be called after the parameter definition - enc:config(variant) - end - return enc, nil -end - --- retrive encoder object already created --- 'name' is optional in case you didn't assign one to the encoder -function Barcode:enc_by_name(bc_type, name) --> , - if type(bc_type) ~= "string" then - return nil, "[ArgErr] 'bc_type' must be a string" - end - local pdash = string.find(bc_type, "-") - local family, variant - if pdash then - family = string.sub(bc_type, 1, pdash - 1) - variant = string.sub(bc_type, pdash + 1) - else - family = bc_type - end - local av_enc = self._available_enc - if not av_enc[family] then -- is the barcode type a real module? - return nil, "[Err] barcode type '"..family.."' not found" - end - local builder = self._builder_instances[family] - if builder == nil then - return nil, "[Err] enc builder '"..family.."' not loaded, use 'new_encoder()' method" - end - if name == nil then - name = (variant or "") .. "_noname" - elseif type(name) ~= "string" then - return nil, "[ArgErr] 'name' must be a string" - end - local repo = builder._enc_instances - local enc = repo[name] - if enc == nil then - return nil, "[Err] encoder '"..name.."' not found" - else - return enc, nil - end -end - --- base constructors common to all the encoders --- for numeric only simbology -function Barcode:_check_char(c) --> elem, err - if type(c) ~= "string" or #c ~= 1 then - return nil, "[InternalErr] invalid char" - end - local n = string.byte(c) - 48 - if n < 0 or n > 9 then - return nil, "[ArgErr] found a not digit char" - end - return n, nil -end -function Barcode:_check_digit(n) --> elem, err - if type(n) ~= "number" then - return nil, "[InternalErr] not a number" - end - if n < 0 or n > 9 then - return nil, "[InternalErr] not a digit" - end - return n, nil -end - --- not empty string --> Barcode object -function Barcode:from_string(symb, opt) --> object, err - assert(self._check_char, "[InternalErr] undefined _check_char() method") - if type(symb) ~= "string" then - return nil, "[ArgErr] 'symb' is not a string" - end - if #symb == 0 then - return nil, "[ArgErr] 'symb' is an empty string" - end - local chars = {} - local len = 0 - for c in string.gmatch(symb, ".") do - local elem, err = self:_check_char(c) - if err then - return nil, err - else - chars[#chars+1] = elem - len = len + 1 - end - end - -- build the barcode object - local o = { - _code_data = chars, -- array of chars - _code_len = len, -- symbol lenght - } - setmetatable(o, self) - if opt ~= nil then - if type(opt) ~= "table" then - return nil, "[ArgErr] 'opt' is not a table" - else - local ok, err = o:set_param(opt) - if not ok then - return nil, err - end - end - end - if o._finalize then - local ok, e = o:_finalize() - if not ok then return nil, e end - end - return o, nil -end - --- positive integer --> Barcode object -function Barcode:from_uint(n, opt) --> object, err - assert(self._check_digit, "[InternalErr] undefined _check_digit() method") - if type(n) ~= "number" then return nil, "[ArgErr] 'n' is not a number" end - if n < 0 then return nil, "[ArgErr] 'n' must be a positive integer" end - if n - math.floor(n) ~= 0 then - return nil, "[ArgErr] 'n' is not an integer" - end - if opt ~= nil and type(opt) ~= "table" then - return nil, "[ArgErr] 'opt' is not a table" - end - local digits = {} - local i = 0 - if n == 0 then - local elem, err = self:_check_digit(0) - if err then - return nil, err - end - digits[1] = elem - i = 1 - else - while n > 0 do - local d = n % 10 - i = i + 1 - local elem, err = self:_check_digit(d) - if err then - return nil, err - end - digits[i] = elem - n = (n - d) / 10 - end - for k = 1, i/2 do -- reverse the array - local d = digits[k] - local h = i - k + 1 - digits[k] = digits[h] - digits[h] = d - end - end - -- build the barcode object - local o = { - _code_data = digits, -- array of digits - _code_len = i, -- symbol lenght - } - setmetatable(o, self) - if opt ~= nil then - if type(opt) ~= "table" then - return nil, "[ArgErr] 'opt' is not a table" - else - local ok, err = o:set_param(opt) - if not ok then - return nil, err - end - end - end - if o._finalize then - local ok, e = o:_finalize() - if not ok then return nil, e end - end - return o, nil -end - --- check a parameter set --- this method check also reserved parameter --- argments: {k=v, ...}, "default" | "current" --- if ref is "default" parameters are checked with default values --- if ref is "current" parameters are checked with current values -function Barcode:check_param(opt, ref) --> boolean, check report - if type(opt) ~= "table" then - return nil, "[ArgErr] opt is not a table" - end - if ref == nil then - ref = "current" - else - if type(ref) ~= "string" then - return nil, "[ArgErr] ref is not a string" - end - if (ref ~= "current") or (ref ~= "default") then - return nil, "[ArgErr] ref can only be 'default' or 'current'" - end - end - -- checking process - local cktab = {} - local isOk = true - local err_rpt -- nil if no error - for _, tpar in self:param_ord_iter() do - local pname = tpar.pname - local pdef = tpar.pdef - -- load the default value of - local def_val; if pdef.fndefault then - def_val = pdef:fndefault(cktab) - else - def_val = pdef.default - end - local val = opt[pname] - if val ~= nil then - local ok, err = pdef:fncheck(val, cktab) - if ok then - cktab[pname] = val - else -- error! - isOk = false - if err_rpt == nil then err_rpt = {} end - err_rpt[#err_rpt + 1] = { - param = pname, - checked_val = val, - default_val = def_val, - isOk = ok, - err = err, - } - end - end - local v - if ref == "current" then - v = self[pname] - else - v = def_val - end - cktab[pname] = v - end - return isOk, err_rpt -end - --- restore to the default values all the parameter --- (reserved parameters are unmodified so no need to restore it) --- this need further investigation about the conseguence of a restore --- that reset the parameter but "locally" --- so this method must be considered experimental -function Barcode:restore_param() --> self :FIXME: - for _, par in ipairs(self._par_id) do - local pdef = self[par.."_def"] - if not pdef.isReserved then - self[par] = pdef.default - end - end - return self -end - --- create a table with the information of the current barcode encoder -function Barcode:info() --> table - local info = { - name = self._NAME, - version = self._VERSION, - description = self._DESCRIPTION, - param = {}, - } - local tpar = info.param - for _, pardef in self:param_ord_iter() do - local id = pardef.pname - local pdef = pardef.pdef - tpar[#tpar + 1] = { - name = id, - descr = nil, -- TODO: - value = self[id], - isReserved = pdef.isReserved, - unit = pdef.unit, - } - end - return info -end - --- make accessible by name parameter values --- id: parameter identifier -function Barcode:get_param(id) --> value, err - if type(id) ~= "string" then - return nil, "[ArgErr] 'id' must be a string" - end - local pardef = self._par_def - if not pardef[id] then - return nil, "[Err] Parameter '"..id.."' doesn't exist" - end - local res = assert(self[id], "[InternalErr] parameter value unreachable") - return res, nil -end - --- set a barcode parameter only if it is not reserved --- arguments: --- :set_param{key = value, key = value, ...} --- :set_param(key, value) -function Barcode:set_param(arg1, arg2) --> boolean, err - -- processing arguments - local targ - local isPair = true - if type(arg1) == "table" then - if arg2 ~= nil then - return false, "[ArgErr] Further arguments not allowed" - end - targ = arg1 - isPair = false - elseif type(arg1) == "string" then -- key/value - if arg2 == nil then - return false, "[ArgErr] 'value' as the second argument expected" - end - targ = {} - targ[arg1] = arg2 - else - return false, "[ArgErr] param name must be a string" - end - -- preparing to the checking process - local cktab = {} - local ckparam = {} - -- checking process - for _, tpar in self:param_ord_iter() do - local pname = tpar.pname - local pdef = tpar.pdef - local val = targ[pname] -- par = val - if val ~= nil then - if pdef.isReserved then - return false, "[Err] parameter '" .. pname .. - "' is reserved, create another encoder" - end - local ok, err = pdef:fncheck(val, cktab) - if ok then - cktab[pname] = val - ckparam[pname] = val - else -- error! - return false, err - end - else -- no val in user option - cktab[pname] = self[pname] - end - end - for p, v in pairs(ckparam) do - self[p] = v - end - return true, nil -end - -return Barcode - --- diff --git a/macros/luatex/generic/barracuda/lib/lib-barcode/code128.lua b/macros/luatex/generic/barracuda/lib/lib-barcode/code128.lua deleted file mode 100644 index 317b3de8f8..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-barcode/code128.lua +++ /dev/null @@ -1,341 +0,0 @@ --- Code128 barcode generator module --- Copyright (C) 2019 Roberto Giacomelli --- --- All dimension must be in scaled point (sp) --- every fields that starts with an undercore sign are intended as private - -local Code128 = { - _VERSION = "code128 v0.0.5", - _NAME = "Code128", - _DESCRIPTION = "Code128 barcode encoder", -} - -Code128._int_def_bar = {-- code bar definitions - [0] = 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, - 132212, 221213, 221312, 231212, 112232, 122132, 122231, 113222, 123122, - 123221, 223211, 221132, 221231, 213212, 223112, 312131, 311222, 321122, - 321221, 312212, 322112, 322211, 212123, 212321, 232121, 111323, 131123, - 131321, 112313, 132113, 132311, 211313, 231113, 231311, 112133, 112331, - 132131, 113123, 113321, 133121, 313121, 211331, 231131, 213113, 213311, - 213131, 311123, 311321, 331121, 312113, 312311, 332111, 314111, 221411, - 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214, 112412, - 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111, - 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, - 212141, 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, - 411311, 113141, 114131, 311141, 411131, 211412, 211214, 211232, - 2331112, -- this is the stop char at index 106 -} - -Code128._codeset = { - A = 103, -- Start char for Codeset A - B = 104, -- Start char for Codeset B - C = 105, -- Start char for Codeset C - stopChar = 106, -- Stop char - shift = 98, -- A to B or B to A -} - -Code128._switch = { -- codes for switching from a codeset to another one - [103] = {[104] = 100, [105] = 99}, -- from A to B or C - [104] = {[103] = 101, [105] = 99}, -- from B to A or C - [105] = {[103] = 101, [104] = 100}, -- from C to A or B -} - --- parameters definition -Code128._par_def = {} -local pardef = Code128._par_def - --- module main parameter -pardef.xdim = { - default = 0.21 * 186467, -- X dimension - unit = "sp", -- scaled point - isReserved = true, - order = 1, -- the one first to be modified - fncheck = function (self, x, _) --> boolean, err - if x >= self.default then - return true, nil - else - return false, "[OutOfRange] too small value for xdim" - end - end, -} - -pardef.ydim = { - default = 10 * 186467, -- Y dimension - unit = "sp", - isReserved = false, - order = 2, - fncheck = function (self, y, tpar) --> boolean, err - local xdim = tpar.xdim - if y >= 10*xdim then - return true, nil - else - return false, "[OutOfRange] too small value for ydim" - end - end, -} - -pardef.quietzone_factor = { - default = 10, - unit = "absolute-number", - isReserved = false, - order = 3, - fncheck = function (self, z, _) --> boolean, err - if z >= 10 then - return true, nil - else - return false, "[OutOfRange] too small value for quietzone_factor" - end - end, -} - --- create vbar objects -function Code128:config() --> ok, err - -- build Vbar object for the start/stop symbol - local mod = self.xdim - local sc = self._codeset.stopChar -- build the stop char - local n = self._int_def_bar[sc] - local Vbar = self._libgeo.Vbar -- Vbar class - self._vbar = {} - local b = self._vbar - b[sc] = Vbar:from_int(n, mod, true) - return true, nil -end - --- utility functions - --- the number of consecutive digits from the index 'i' in the code array -local function count_digits_from(arr, i) - local start = i - local dim = #arr - while i <= dim and (arr[i] > 47 and arr[i] < 58) do - i = i + 1 - end - return i - start -end - --- evaluate the check digit of the data representation -local function check_digit(code) - local sum = code[1] -- this is the start character - for i = 2, #code do - sum = sum + code[i]*(i-1) - end - return sum % 103 -end - --- return a pair of boolean the first one is true --- if a control char and a lower case char occurs in the data --- and the second one is true if the control char occurs before --- the lower case char -local function ctrl_or_lowercase(pos, data) --> boolean, boolean|nil - local len = #data - local ctrl_occur, lower_occur = false, false - for i = pos, len do - local c = data[i] - if (not ctrl_occur) and (c >= 0 and c < 32) then - -- [0,31] control chars - if lower_occur then - return true, false -- lowercase char < ctrl char - else - ctrl_occur = true - end - elseif (not lower_occur) and (c > 95 and c < 128) then - -- [96, 127] lower case chars - if ctrl_occur then - return true, true -- ctrl char < lowercase char - else - lower_occur = true - end - end - end - return false -- no such data -end - --- encode the provided char against a codeset --- in the future this function will consider FN data -local function encode_char(t, codesetAorB, char_code, codesetA) - local code - if codesetAorB == codesetA then -- codesetA - if char_code < 32 then - code = char_code + 64 - elseif char_code > 31 and char_code < 96 then - code = char_code - 32 - else - error("Not implemented or wrong code") - end - else -- codesetB - if char_code > 31 and char_code < 128 then - code = char_code - 32 - else - error("Not implemented or wrong code") - end - end - t[#t + 1] = code -end - --- encode the message in a sequence of Code128 symbol minimizing its lenght -local function encode128(arr, codeset, switch) --> data, err :TODO: - local res = {} -- the result array (the check character will be appended) - -- find the Start Character A, B, or C - local cur_codeset - local ndigit = count_digits_from(arr, 1) - local len = #arr - --local no_ctrl_lower_char - if (ndigit == 2 and len == 2) or ndigit > 3 then -- start char code C - cur_codeset = codeset.C - else - local ok, ctrl_first = ctrl_or_lowercase(1, arr) - if ok and ctrl_first then - cur_codeset = codeset.A - else - cur_codeset = codeset.B - end - end - res[#res + 1] = cur_codeset - local pos = 1 -- symbol's index to encode - while pos <= len do - if cur_codeset == codeset.C then - if arr[pos] < 48 or arr[pos] > 57 then -- not numeric char - local ok, ctrl_first = ctrl_or_lowercase(pos, arr) - if ok and ctrl_first then - cur_codeset = codeset.A - else - cur_codeset = codeset.B - end - res[#res + 1] = switch[codeset.C][cur_codeset] - else - local imax = pos + 2*math.floor(ndigit/2) - 1 - for idx = pos, imax, 2 do - res[#res + 1] = (arr[idx] - 48)*10 + arr[idx+1] - 48 - end - pos = pos + imax - ndigit = ndigit - imax - if ndigit == 1 then - -- cur_codeset setup - local ok, ctrl_first = ctrl_or_lowercase(pos + 1, arr) - if ok and ctrl_first then - cur_codeset = codeset.A - else - cur_codeset = codeset.B - end - res[#res + 1] = switch[codeset.C][cur_codeset] - end - end - else --- current codeset is A or B - if ndigit > 3 then - if ndigit % 2 > 1 then -- odd number of digits - encode_char(res, cur_codeset, arr[pos], codeset.A) - pos = pos + 1 - ndigit = ndigit - 1 - end - res[#res + 1] = switch[cur_codeset][codeset.C] - cur_codeset = codeset.C - elseif (cur_codeset == codeset.B) and - (arr[pos] >= 0 and arr[pos] < 32) then -- ops a control char - local ok, ctrl_first = ctrl_or_lowercase(pos + 1, arr) - if ok and (not ctrl_first) then -- shift to codeset A - res[#res + 1] = codeset.shift - encode_char(res, codeset.A, arr[pos], codeset.A) - pos = pos + 1 - ndigit = count_digits_from(pos, arr) - else -- switch to code set A - res[#res + 1] = switch[cur_codeset][codeset.A] - cur_codeset = codeset.A - end - elseif (cur_codeset == codeset.A) and - (arr[pos] > 95 and arr[pos] < 128) then -- ops a lower case char - local ok, ctrl_first = ctrl_or_lowercase(pos+1, arr) - if ok and ctrl_first then -- shift to codeset B - res[#res + 1] = codeset.shift - encode_char(res, codeset.B, arr[pos], codeset.A) - pos = pos + 1 - ndigit = count_digits_from(arr, pos) - else -- switch to code set B - res[#res + 1] = switch[cur_codeset][codeset.B] - cur_codeset = codeset.B - end - else - -- insert char - encode_char(res, cur_codeset, arr[pos], codeset.A) - pos = pos + 1 - ndigit = count_digits_from(arr, pos) - end - end - end - res[#res + 1] = check_digit(res) - res[#res + 1] = codeset.stopChar - return res -end - --- Code 128 internal functions used by Barcode costructors - -function Code128:_check_char(c) --> elem, err - if type(c) ~= "string" or #c ~= 1 then - return nil, "[InternalErr] invalid char" - end - local b = string.byte(c) - if b > 127 then - local fmt = "[unimplemented] the '%d' is an ASCII extented char" - return nil, string.format(fmt, c) - end - return b, nil -end - -function Code128:_check_digit(n) --> elem, err - if type(n) ~= "number" then - return nil, "[InternalErr] invalid digit" - end - return n + 48, nil -end - -function Code128:_finalize() --> ok, err - local chr = assert(self._code_data, "[InternalErr] '_code_data' field is nil") - local data, err = encode128(chr, self._codeset, self._switch) - if err then return false, err end - -- load dynamically required Vbar objects - local vbar = self._vbar - local oVbar = self._libgeo.Vbar - for _, c in ipairs(data) do - if not vbar[c] then - local n = self._int_def_bar[c] - local mod = self.xdim - vbar[c] = oVbar:from_int(n, mod, true) - end - end - self._enc_data = data - return true, nil -end - --- Drawing into the provided channel the geometrical barcode data --- tx, ty is the optional translator vector --- the function return the canvas reference to allow call chaining -function Code128:append_ga(canvas, tx, ty) --> canvas - local xdim, h = self.xdim, self.ydim - local sw = 11*xdim -- the width of a symbol - local data = self._enc_data - local w = #data * sw + 2 * xdim -- total symbol width - local ax, ay = self.ax, self.ay - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local y1 = y0 + h - local xpos = x0 - -- drawing the symbol - local err - err = canvas:start_bbox_group() - assert(not err, err) - for _, c in ipairs(data) do - local vb = self._vbar[c] - err = canvas:encode_Vbar(vb, xpos, y0, y1) - assert(not err, err) - xpos = xpos + sw - end - -- bounding box setting - local qz = self.quietzone_factor * xdim - -- { xmin, ymin, xmax, ymax } - err = canvas:stop_bbox_group(x0 - qz, y0, x1 + qz, y1) - assert(not err, err) - return canvas -end - -return Code128 --- \ No newline at end of file diff --git a/macros/luatex/generic/barracuda/lib/lib-barcode/code39.lua b/macros/luatex/generic/barracuda/lib/lib-barcode/code39.lua deleted file mode 100644 index a639619c63..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-barcode/code39.lua +++ /dev/null @@ -1,381 +0,0 @@ --- Code39 barcode encoder implementation --- Copyright (C) 2019 Roberto Giacomelli --- --- All dimensions must be in scaled point (sp) --- every fields that starts with an undercore sign are intended as private - -local Code39 = { - _VERSION = "code39 v0.0.5", - _NAME = "Code39", - _DESCRIPTION = "Code39 barcode encoder", -} - -Code39._symb_def = {-- symbol definition - ["0"] = 112122111, ["1"] = 211112112, ["2"] = 211112211, - ["3"] = 111112212, ["4"] = 211122111, ["5"] = 111122112, - ["6"] = 111122211, ["7"] = 212112111, ["8"] = 112112112, - ["9"] = 112112211, ["A"] = 211211112, ["B"] = 211211211, - ["C"] = 111211212, ["D"] = 211221111, ["E"] = 111221112, - ["F"] = 111221211, ["G"] = 212211111, ["H"] = 112211112, - ["I"] = 112211211, ["J"] = 112221111, ["K"] = 221111112, - ["L"] = 221111211, ["M"] = 121111212, ["N"] = 221121111, - ["O"] = 121121112, ["P"] = 121121211, ["Q"] = 222111111, - ["R"] = 122111112, ["S"] = 122111211, ["T"] = 122121111, - ["U"] = 211111122, ["V"] = 211111221, ["W"] = 111111222, - ["X"] = 211121121, ["Y"] = 111121122, ["Z"] = 111121221, - ["-"] = 212111121, ["."] = 112111122, [" "] = 112111221, - ["$"] = 111212121, ["/"] = 121112121, ["+"] = 121211121, - ["%"] = 121212111, -} -Code39._star_def = 112121121 -- '*' start/stop character - --- parameters definition -Code39._par_def = {} -local pardef = Code39._par_def - --- module main parameter -pardef.module = { - -- Narrow element X-dimension is the width of the smallest element in a - -- barcode symbol. - -- The X-dimension impacts scan-ability. Within the allowed range, it is - -- recommended to use the largest possible X-dimension that is consistent - -- with label or form design. - -- The module width (width of narrow element) should be at least 7.5 mils - -- or 0.1905mm (a mil is 1/1000 inch). - default = 7.5 * 0.0254 * 186467, -- 7.5 mils (sp) unit misure, - unit = "sp", -- scaled point - isReserved = true, - order = 1, -- the one first to be modified - fncheck = function (self, mod, _) --> boolean, err - if mod >= self.default then return true, nil end - return false, "[OutOfRange] too small value for module" - end, -} - -pardef.ratio = { - -- The "wide" element is a multiple of the "narrow" element and this - -- multiple must remain the same throughout the symbol. This multiple can - -- range between 2.0 and 3.0. Preferred value is 3.0. - -- The multiple for the wide element should be between 2.0 and 3.0 if the - -- narrow element is greater than 20 mils. If the narrow element is less - -- than 20 mils (0.508mm), the multiple can only range between 2.0 and 2.2. - default = 2.0, -- the minimum - unit = "absolute-number", - isReserved = true, - order = 2, - fncheck = function (self, ratio, tparcheck) --> boolean, err - local mils = 0.0254 * 186467 - local mod = tparcheck.module - local maxr; if mod < 20*mils then maxr = 2.2 else maxr = 3.0 end - if ratio < 2.0 then - return false, "[OutOfRange] too small ratio (min 2.0)" - end - if ratio > maxr then - return false, "[OutOfRange] too big ratio (max "..maxr..")" - end - return true, nil - end, -} - -pardef.quietzone = { - -- It is recommended to use the largest possible quiet zone, that is - -- consistent with label or form design. - -- Quiet zones must be at least 10 times the module width or 0.10 inches, - -- whichever is larger. Default value (100 mils) - default = 2.54 * 186467, -- 0.1 inches equal to 100*mils - unit = "sp", -- scaled point - isReserved = false, - order = 3, - fncheck = function (self, qz, tparcheck) --> boolean, err - local mils = 0.0254 * 186467 - local mod = tparcheck.module - local min = math.max(10*mod, 100*mils) - if qz >= min then - return true, nil - end - return false, "[OutOfRange] quietzone too small" - end, - fndefault = function(self, tck) --> default value respect to a set of param - local mod = tck.module - return math.max(10*mod, self.default) - end, -} - -pardef.interspace = { -- Intercharacter gap - -- The intercharacter gap width (igw) is 5.3 times the module width (mw) if - -- mw is less than 10 mils. If mw is 10 mils or greater, the value for igw - -- is 3mw or 53 mils, whichever is greater. However, for quality printers, - -- igw often equals mw. - default = 7.5 * 0.0254 * 186467, -- 1 module, for quality printer - unit = "sp", -- scaled point - isReserved = false, - order = 4, - fncheck = function (self, igw, tparcheck) --> boolean, err - local mod = tparcheck.module - if igw >= mod then return true, nil end - return false, "[OutOfRange] interspace too small" - end, - fndefault = function(self, tck) --> default value respect to a set of param - return tck.module - end, -} - -pardef.height = { - -- To enhance readability, it is recommended that the barcode be designed - -- to be as tall as possible, taking into consideration the aspects of label - -- and forms design. - -- The height should be at least 0.15 times the barcode's length or 0.25 inch. - default = 8 * 186467, -- 8 mm -- TODO: better assessment for symbol length - unit = "sp", -- scaled point - isReserved = false, - order = 5, - fncheck = function (self, h, _) --> boolean, err - local mils = 0.0254 * 186467 - if h >= 250*mils then return true, nil end - return false, "[OutOfRange] height too small" - end, -} - --- text yes or not -pardef.text_enabled = { -- boolean type - -- enable/disable a text label upon the barcode symbol - default = true, - isReserved = false, - order = 6, - fncheck = function (self, flag, _) --> boolean, err - if type(flag) == "boolean" then - return true, nil - else - return false, "[TypeErr] not a boolean value" - end - end, -} - --- define the text label vertical position -pardef.text_vpos = { -- enumeration - default = "bottom", - isReserved = false, - order = 7, - policy_enum = { - top = true, -- place text at the top of symbol - bottom = true, -- place text under the symbol - }, - fncheck = function (self, e, _) --> boolean, err - if type(e) ~= "string" then return false, "[TypeError] not a string" end - local keys = self.policy_enum - if keys[e] == true then - return true, nil - else - return false, "[Err] enumeration value '"..e.."' not found" - end - end, -} - --- define the text label horizontal position -pardef.text_hpos = { -- enumeration - default = "left", - isReserved = false, - order = 8, - policy_enum = { - left = true, - center = true, - right = true, - spaced = true, - }, - fncheck = function (self, e, _) --> boolean, err - if type(e) ~= "string" then return false, "[TypeError] not a string" end - local keys = self.policy_enum - if keys[e] == true then - return true, nil - else - return false, "[Err] enumeration value '"..e.."' not found" - end - end, -} - --- vertical dimension between symbol and text -pardef.text_gap = { - default = 2.2 * 65536, -- 2.2 pt - isReserved = false, - order = 9, - unit = "em", --> TODO: please put this under further analisys asap - fncheck = function(self, g, _) --> boolean, err - if type(g) == "number" then - if g > 0 then - return true, nil - else - return false, "[OptErr] negative number" - end - else - return false, "[TypeErr] not valid type for gap opt" - end - end, -} - --- star character appearing -pardef.text_star = { - default = false, - isReserved = false, - order = 10, - fncheck = function(self, flag, _) --> boolean, err - if type(flag) == "boolean" then - return true, nil - else - return false, "[TypeErr] not a boolean value" - end - end, -} - --- configuration function -function Code39:config() --> ok, err - -- build Vbar object for the start/stop symbol - local mod, ratio = self.module, self.ratio - local n_star = self._star_def - local Vbar = self._libgeo.Vbar -- Vbar class - self._vbar = {['*'] = Vbar:from_int_revpair(n_star, mod, mod*ratio)} - return true, nil -end - --- overriding Barcode method -function Code39:_check_char(c) --> elem, err - if type(c) ~= "string" or #c ~= 1 then - return nil, "[InternalErr] invalid char" - end - local symb_def = self._symb_def - local n = symb_def[c] - if not n then - local fmt = "[ArgErr] '%s' is not a valid Code 39 symbol" - return nil, string.format(fmt, c) - end - return c, nil -end - --- overriding Barcode method -function Code39:_check_digit(n) --> elem, err - if type(n) ~= "number" then - return nil, "[InteranlErr] not a number" - end - if n < 0 or n > 9 then - return nil, "[InternalErr] not a digit" - end - return tostring(n), nil -end - -function Code39:_finalize() --> ok, err - local v = assert(self._code_data, "[InternalErr] '_code_data' field is nil") - local vbar = self._vbar - local g_Vbar = self._libgeo.Vbar - local mod, ratio = self.module, self.ratio - local symb_def = self._symb_def - for _, c in ipairs(v) do - if not vbar[c] then - local n1 = symb_def[c] - vbar[c] = g_Vbar:from_int_revpair(n1, mod, mod*ratio) - end - end - return true, nil -end - --- tx, ty is an optional translator vector -function Code39:append_ga(canvas, tx, ty) --> canvas - local code = self._code_data - local ns = self._code_len -- number of chars inside the symbol - local mod = self.module - local ratio = self.ratio - local interspace = self.interspace - local h = self.height - local xs = mod*(6 + 3*ratio) - local xgap = xs + interspace - local w = xgap*(ns + 1) + xs -- (ns + 2)*xgap - interspace - local ax, ay = self.ax, self.ay - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local y1 = y0 + h - local xpos = x0 - local err - err = canvas:start_bbox_group() - assert(not err, err) - local vbar = self._vbar - -- start/stop symbol - local term_vbar = vbar['*'] - -- draw start symbol - err = canvas:encode_Vbar(term_vbar, xpos, y0, y1) - assert(not err, err) - for _, c in ipairs(code) do -- draw code symbols - xpos = xpos + xgap - local vb = vbar[c] - err = canvas:encode_Vbar(vb, xpos, y0, y1) - assert(not err, err) - end - -- draw stop symbol - err = canvas:encode_Vbar(term_vbar, xpos + xgap, y0, y1) - assert(not err, err) - -- bounding box setting - local qz = self.quietzone - err = canvas:stop_bbox_group(x0 - qz, y0, x1 + qz, y1) - assert(not err, err) - -- check height as the minimum of 15% of length - -- TODO: message could warn the user - -- if 0.15 * w > h then - -- message("The height of the barcode is to small") - -- end - if self.text_enabled then -- human readable text - local chars; if self.text_star then - chars = {"*"} - for _, c in ipairs(code) do - chars[#chars + 1] = c - end - chars[#chars + 1] = "*" - else - chars = {} - for _, c in ipairs(code) do - chars[#chars + 1] = c - end - end - local Text = self._libgeo.Text - local txt = Text:from_chars(chars) - -- setup text position - local txt_vpos = self.text_vpos - local txt_gap = self.text_gap - local ypos, tay; if txt_vpos == "top" then -- vertical setup - ypos = y1 + txt_gap - tay = 0.0 - elseif txt_vpos == "bottom" then - ypos = y0 - txt_gap - tay = 1.0 - else - error("[IntenalErr] text vertical placement option is wrong") - end - local txt_hpos = self.text_hpos - if txt_hpos == "spaced" then -- horizontal setup - local xaxis = x0 - if not self.text_star then - xaxis = xaxis + xgap - end - xaxis = xaxis + xs/2 - err = canvas:encode_Text_xspaced(txt, xaxis, xgap, ypos, tay) - assert(not err, err) - else - local xpos, tax - if txt_hpos == "left" then - xpos = x0 - tax = 0.0 - elseif txt_hpos == "center" then - xpos = (x1 + x0)/2 - tax = 0.5 - elseif txt_hpos == "right" then - xpos = x1 - tax = 1.0 - else - error("[InternalErr] wrong option for text_pos") - end - err = canvas:encode_Text(txt, xpos, ypos, tax, tay) - assert(not err, err) - end - end - return canvas -end - -return Code39 --- \ No newline at end of file diff --git a/macros/luatex/generic/barracuda/lib/lib-barcode/ean.lua b/macros/luatex/generic/barracuda/lib/lib-barcode/ean.lua deleted file mode 100644 index 6893550a5c..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-barcode/ean.lua +++ /dev/null @@ -1,790 +0,0 @@ --- EAN family barcode generator --- --- Copyright (C) 2019 Roberto Giacomelli --- see LICENSE.txt file --- --- variant identifiers of the EAN family barcodes: --- "13" EAN13 --- "8" EAN8 --- "5" EAN5 add-on --- "2" EAN2 add-on --- "13+5" EAN13 with EAN5 add-on --- "13+2" EAN13 with EAN2 add-on --- "8+5" EAN8 with EAN5 add-on --- "8+2" EAN8 with EAN2 add-on - -local EAN = { - _VERSION = "ean v0.0.5", - _NAME = "ean", - _DESCRIPTION = "EAN barcode encoder", -} - -EAN._codeset_seq = {-- 1 -> A, 2 -> B, 3 -> C -[0]={1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3}, - {1, 1, 2, 1, 2, 2, 3, 3, 3, 3, 3, 3}, - {1, 1, 2, 2, 1, 2, 3, 3, 3, 3, 3, 3}, - {1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3}, - {1, 2, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3}, - {1, 2, 2, 1, 1, 2, 3, 3, 3, 3, 3, 3}, - {1, 2, 2, 2, 1, 1, 3, 3, 3, 3, 3, 3}, - {1, 2, 1, 2, 1, 2, 3, 3, 3, 3, 3, 3}, - {1, 2, 1, 2, 2, 1, 3, 3, 3, 3, 3, 3}, - {1, 2, 2, 1, 2, 1, 3, 3, 3, 3, 3, 3}, -} - -EAN._codeset14_8 = 1 -EAN._codeset58_8 = 3 - -EAN._codeset_5 = { -- check digit => structure -[0]={2, 2, 1, 1, 1}, -- 0 GGLLL - {2, 1, 2, 1, 1}, -- 1 GLGLL - {2, 1, 1, 2, 1}, -- 2 GLLGL - {2, 1, 1, 1, 2}, -- 3 GLLLG - {1, 2, 2, 1, 1}, -- 4 LGGLL - {1, 1, 2, 2, 1}, -- 5 LLGGL - {1, 1, 1, 2, 2}, -- 6 LLLGG - {1, 2, 1, 2, 1}, -- 7 LGLGL - {1, 2, 1, 1, 2}, -- 8 LGLLG - {1, 1, 2, 1, 2}, -- 9 LLGLG -} - -EAN._symbol = { -- codesets A, B, and C - [1] = {[0] = 3211, 2221, 2122, 1411, 1132, 1231, 1114, 1312, 1213, 3112,}, - [2] = {[0] = 1123, 1222, 2212, 1141, 2311, 1321, 4111, 2131, 3121, 2113,}, - [3] = {[0] = 3211, 2221, 2122, 1411, 1132, 1231, 1114, 1312, 1213, 3112,}, -} - -EAN._is_first_bar = {false, false, true} -EAN._start = {111, true} -EAN._stop = {11111, false} - --- family parameters - -EAN._par_def = {}; local pardef = EAN._par_def - --- standard module is 0.33 mm but it can vary from 0.264 to 0.66mm -pardef.mod = { - default = 0.33 * 186467, -- (mm to sp) X dimension (original value 0.33) - unit = "sp", -- scaled point - isReserved = true, - order = 1, -- the one first to be modified - fncheck = function (self, x, _) --> boolean, err - local mm = 186467 - local min, max = 0.264 * mm, 0.660 * mm - if x < min then - return false, "[OutOfRange] too small value for mod" - elseif x > max then - return false, "[OutOfRange] too big value for mod" - end - return true, nil - end, -} - -pardef.height = { - default = 22.85 * 186467, -- 22.85 mm - unit = "sp", - isReserved = false, - order = 2, - fncheck = function (self, h, _) --> boolean, err - if h > 0 then - return true, nil - else - return false, "[OutOfRange] non positive value for height" - end - end, -} - -pardef.quietzone_left_factor = { - default = 11, - unit = "absolute-number", - isReserved = false, - order = 3, - fncheck = function (self, qzf, _) --> boolean, err - if qzf > 0 then - return true, nil - else - return false, "[OutOfRange] non positive value for quietzone_left_factor" - end - end, -} - -pardef.quietzone_right_factor = { - default = 7, - unit = "absolute-number", - isReserved = false, - order = 4, - fncheck = function (self, qzf, _) --> boolean, err - if qzf > 0 then - return true, nil - else - return false, "[OutOfRange] non positive value for quietzone_right_factor" - end - end, -} - -pardef.bars_depth_factor = { - default = 5, - unit = "absolute-number", - isReserved = false, - order = 5, - fncheck = function (self, b, _) --> boolean, err - if b >= 0 then - return true, nil - else - return false, "[OutOfRange] non positive value for bars_depth_factor" - end - end, -} - --- enable/disable a text label upon the barcode symbol -pardef.text_enabled = { -- boolean type - default = true, - isReserved = false, - order = 6, - fncheck = function (self, flag, _) --> boolean, err - if type(flag) == "boolean" then - return true, nil - else - return false, "[TypeErr] not a boolean value for text_enabled" - end - end, -} - -pardef.text_ygap_factor = { - default = 1.0, - unit = "absolute-number", - isReserved = false, - order = 7, - fncheck = function (self, t, _) --> boolean, err - if t >= 0 then - return true, nil - else - return false, "[OutOfRange] non positive value for text_ygap_factor" - end - end, -} - -pardef.text_xgap_factor = { - default = 0.75, - unit = "absolute-number", - isReserved = false, - order = 8, - fncheck = function (self, t, _) --> boolean, err - if t >= 0 then - return true, nil - else - return false, "[OutOfRange] non positive value for text_xgap_factor" - end - end, -} - --- variant parameters - -EAN._par_def_variant = { - ["13"] = {}, -- EAN13 - ["8"] = {}, -- EAN8 - ["5"] = {}, -- add-on EAN5 - ["2"] = {}, -- add-on EAN2 - ["13+5"] = {}, -- EAN13 with EAN5 add-on - ["13+2"] = {}, -- EAN13 with EAN2 add-on - ["8+5"] = {}, -- EAN8 with EAN5 add-on - ["8+2"] = {}, -- EAN8 with EAN2 add-on -} - --- ean13_pardef.text_ISBN parameter -- TODO: - --- EAN 13/8 + add-on parameters -local addon_xgap_factor = {-- distance between symbol - default = 10, - unit = "absolute-number", - isReserved = false, - order = 1, - fncheck = function (self, t, _) --> boolean, err - if t >= 7 then - return true, nil - else - return false, "[OutOfRange] not positive value for xgap_factor" - end - end, -} -EAN._par_def_variant["13+5"].addon_xgap_factor = addon_xgap_factor -EAN._par_def_variant["13+2"].addon_xgap_factor = addon_xgap_factor -EAN._par_def_variant["8+5"].addon_xgap_factor = addon_xgap_factor -EAN._par_def_variant["8+2"].addon_xgap_factor = addon_xgap_factor - --- configuration functions - --- utility for generic configuration of full symbol, add-on included --- n1 length of main symbol, 8 or 13 --- n2 length of add-on symbol, 2 or 5 -local function config_full(ean, Vbar, mod, n1, n2) - local i1 = tostring(n1) - local fn_1 = assert(ean._config_variant[i1]) - fn_1(ean, Vbar, mod) - local i2 = tostring(n2) - local fn_2 = assert(ean._config_variant[i2]) - fn_2(ean, Vbar, mod) - ean._main_len = n1 - ean._addon_len = n2 - ean._is_last_checksum = true -end - -EAN._config_variant = { - ["13"] = function (ean13, Vbar, mod) - ean13._main_len = 13 - ean13._is_last_checksum = true - local start = ean13._start - local stop = ean13._stop - ean13._13_start_stop_vbar = Vbar:from_int(start[1], mod, start[2]) - ean13._13_ctrl_center_vbar = Vbar:from_int(stop[1], mod, stop[2]) - ean13._13_codeset_vbar = {} - local tvbar = ean13._13_codeset_vbar - for i_cs, codetab in ipairs(ean13._symbol) do - tvbar[i_cs] = {} - local tv = tvbar[i_cs] - local isbar = ean13._is_first_bar[i_cs] - for i = 0, 9 do - tv[i] = Vbar:from_int(codetab[i], mod, isbar) - end - end - end, - ["8"] = function (ean8, Vbar, mod) - ean8._main_len = 8 - ean8._is_last_checksum = true - local start = ean8._start - local stop = ean8._stop - ean8._8_start_stop_vbar = Vbar:from_int(start[1], mod, start[2]) - ean8._8_ctrl_center_vbar = Vbar:from_int(stop[1], mod, stop[2]) - ean8._8_codeset_vbar = {} - local tvbar = ean8._8_codeset_vbar - for k = 1, 3, 2 do -- only codeset A and C (k == 1, 3) - tvbar[k] = {} - local codetab = ean8._symbol[k] - local isbar = ean8._is_first_bar[k] - local tv = tvbar[k] - for i = 0, 9 do - tv[i] = Vbar:from_int(codetab[i], mod, isbar) - end - end - end, - ["5"] = function (ean5, Vbar, mod) -- add-on EAN5 - ean5._main_len = 5 - ean5._is_last_checksum = false - ean5._5_start_vbar = Vbar:from_int(112, mod, true) - ean5._5_sep_vbar = Vbar:from_int(11, mod, false) - ean5._5_codeset_vbar = {} - local tvbar = ean5._5_codeset_vbar - local symbols = ean5._symbol - for c = 1, 2 do - tvbar[c] = {} - local tcs = tvbar[c] - local isbar = false - local sb = symbols[c] - for i = 0, 9 do - tcs[i] = Vbar:from_int(sb[i], mod, false) - end - end - end, - ["2"] = function (ean2, Vbar, mod) -- add-on EAN2 - ean2._main_len = 2 - ean2._is_last_checksum = false - ean2._2_start_vbar = Vbar:from_int(112, mod, true) - ean2._2_sep_vbar = Vbar:from_int(11, mod, false) - ean2._2_codeset_vbar = {} - local tvbar = ean2._2_codeset_vbar - local symbols = ean2._symbol - for c = 1, 2 do - tvbar[c] = {} - local tcs = tvbar[c] - local isbar = false - local sb = symbols[c] - for i = 0, 9 do - tcs[i] = Vbar:from_int(sb[i], mod, false) - end - end - end, - ["13+5"] = function (ean, Vbar, mod) -- EAN13 with EAN5 add-on - config_full(ean, Vbar, mod, 13, 5) - end, - ["13+2"] = function(ean, Vbar, mod) -- EAN13 with EAN2 add-on - config_full(ean, Vbar, mod, 13, 2) - end, - ["8+5"] = function(ean, Vbar, mod) -- EAN8 with EAN5 add-on - config_full(ean, Vbar, mod, 8, 5) - end, - ["8+2"] = function(ean, Vbar, mod) -- EAN8 with EAN2 add-on - config_full(ean, Vbar, mod, 8, 2) - end, -} - --- config function --- create all the possible VBar object -function EAN:config(variant) --> ok, err - if not type(variant) == "string" then - return false, "[ArgErr] incorrect type for 'variant', string expected" - end - local fnconfig = self._config_variant[variant] - if not fnconfig then - return false, "[Err] EAN variant '".. variant .."' not found" - end - local Vbar = self._libgeo.Vbar -- Vbar class - local mod = self.mod - fnconfig(self, Vbar, mod) - return true, nil -end - --- utility function - --- the checksum of EAN8 or EAN13 code --- 'data' is an array of digits -local function checksum_8_13(data, stop_index) - local s1 = 0; for i = 2, stop_index, 2 do - s1 = s1 + data[i] - end - local s2 = 0; for i = 1, stop_index, 2 do - s2 = s2 + data[i] - end - local sum; if stop_index % 2 == 0 then - sum = 3 * s1 + s2 - else - sum = s1 + 3 * s2 - end - return (10 - (sum % 10)) % 10 -end - --- return the checksum digit of an EAN 5 or EAN 2 add-on --- this digits will not be part of the code --- 'data' is an array of digits --- i is the index where the code starts --- len is the length of the code -local function checksum_5_2(data, i, len) --> checksum digit or nil - if len == 5 then -- EAN 5 add-on - local c1 = data[i] + data[i + 2] + data[i + 4] - local c2 = data[i + 1] + data[i + 3] - local ck = 3 * c1 + 9 * c2 - return ck % 10 - elseif len == 2 then -- EAN 2 add-on - local ck = 10 * data[i] + data[i + 1] - return ck % 4 - end -end - --- public methods - --- return the checksum digit of the argument or an error --- respect to the encoder variant EAN8 or EAN13 --- 'n' can be an integer, a string of digits or an array of digits -function EAN:checksum(n) --> n, err - local arr; - if type(n) == "number" then - if n <= 0 then - return nil, "[ArgErr] number must be a positive integer" - end - if n - math.floor(n) > 0 then - return nil, "[ArgErr] 'n' is not an integer" - end - arr = {} - local i = 0 - while n > 0 do - i = i + 1 - arr[i] = n % 10 - n = (n - arr[i]) / 10 - end - -- array reversing - local len = #arr + 1 - for i = 1, #arr/2 do - local dt = arr[i] - arr[i] = arr[len - i] - arr[len - i] = dt - end - elseif type(n) == "table" then - if not #n > 0 then return nil, "[ArgErr] empty array" end - for _, d in ipairs(n) do - if type(d) ~= "number" then - return nil, "[ArgErr] array 'n' contains a not digit element" - end - if d < 0 or d > 9 then - return nil, "[ArgErr] array contains a not digit number" - end - end - arr = n - elseif type(n) == "string" then - arr = {} - for c in string.gmatch(n, ".") do - local d = tonumber(c) - if (not d) or d > 9 then - return nil, "[ArgErr] 's' contains a not digit char" - end - arr[#arr + 1] = d - end - else - return nil, "[ArgErr] not a number, a string or an array of digits" - end - local i = #arr - if i == 7 or i == 8 then - return checksum_8_13(arr, 7) - elseif i == 12 or i == 13 then - return checksum_8_13(arr, 12) - else - return nil, "[Err] unsuitable data length for EAN8 or EAN13 checksum" - end -end - -function EAN:get_code() --> string - local var = self._variant - local code = self.code13 -- TODO: - return table.concat(code) -end - --- internal methods for Barcode costructors - -function EAN:_finalize() --> ok, err - local l1 = self._main_len - local l2 = self._addon_len - local ok_len = l1 + (l2 or 0) - local symb_len = self._code_len - if symb_len ~= ok_len then - return false, "[ArgErr] not a "..ok_len.."-digits long array" - end - if self._is_last_checksum then -- is the last digit ok? - local data = self._code_data - local ck = checksum_8_13(data, l1 - 1) - if ck ~= data[l1] then - return false, "[Err] wrong checksum digit" - end - end - return true, nil -end - --- drawing functions - -EAN._append_ga_variant = {} -local fn_append_ga_variant = EAN._append_ga_variant - --- draw EAN13 symbol -fn_append_ga_variant["13"] = function (ean, canvas, tx, ty, ax, ay) - local code = ean._code_data - local mod = ean.mod - local bars_depth = mod * ean.bars_depth_factor - local w, h = 95*mod, ean.height + bars_depth - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local y1 = y0 + h - local xpos = x0 -- current insertion x-coord - local ys = y0 + bars_depth - local s_width = 7*mod - local code_seq = ean._codeset_seq[code[1]] - -- draw the start symbol - local err - err = canvas:start_bbox_group(); assert(not err, err) - local be = ean._13_start_stop_vbar - err = canvas:encode_Vbar(be, xpos, y0, y1); assert(not err, err) - xpos = xpos + 3*mod - -- draw the first 6 numbers - for i = 2, 7 do - local codeset = code_seq[i-1] - local n = code[i] - local vbar = ean._13_codeset_vbar[codeset][n] - err = canvas:encode_Vbar(vbar, xpos, ys, y1); assert(not err, err) - xpos = xpos + s_width - end - -- draw the control symbol - local ctrl = ean._13_ctrl_center_vbar - err = canvas:encode_Vbar(ctrl, xpos, y0, y1); assert(not err, err) - xpos = xpos + 5*mod - -- draw the last 6 numbers - for i = 8, 13 do - local codeset = code_seq[i-1] - local n = code[i] - local vbar = ean._13_codeset_vbar[codeset][n] - err = canvas:encode_Vbar(vbar, xpos, ys, y1); assert(not err, err) - xpos = xpos + s_width - end - -- draw the stop char - err = canvas:encode_Vbar(be, xpos, y0, y1); assert(not err, err) - -- bounding box set up - local qzl = ean.quietzone_left_factor * mod - local qzr = ean.quietzone_right_factor * mod - local err = canvas:stop_bbox_group(x0 - qzl, y0, x1 + qzr, y1) - assert(not err, err) - if ean.text_enabled then -- human readable text - local Text = ean._libgeo.Text - local txt_1 = Text:from_digit_array(code, 1, 1) - local txt_2 = Text:from_digit_array(code, 2, 7) - local txt_3 = Text:from_digit_array(code, 8, 13) - local y_bl = ys - ean.text_ygap_factor * mod - local mx = ean.text_xgap_factor - local err - err = canvas:encode_Text(txt_1, x0 - qzl, y_bl, 0, 1) - assert(not err, err) - local x2_1 = x0 + (3+mx)*mod - local x2_2 = x0 + (46-mx)*mod - err = canvas:encode_Text_xwidth(txt_2, x2_1, x2_2, y_bl, 1) - assert(not err, err) - local x3_1 = x0 + (49+mx)*mod - local x3_2 = x0 + (92-mx)*mod - err = canvas:encode_Text_xwidth(txt_3, x3_1, x3_2, y_bl, 1) - assert(not err, err) - end -end - --- draw EAN8 symbol -fn_append_ga_variant["8"] = function (ean, canvas, tx, ty, ax, ay) - local code = ean._code_data - local mod = ean.mod - local bars_depth = mod * ean.bars_depth_factor - local w, h = 67*mod, ean.height + bars_depth - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local y1 = y0 + h - local xpos = x0 -- current insertion x-coord - local ys = y0 + bars_depth - local s_width = 7*mod - -- draw the start symbol - local err - err = canvas:start_bbox_group(); assert(not err, err) - local be = ean._8_start_stop_vbar - err = canvas:encode_Vbar(be, xpos, y0, y1); assert(not err, err) - xpos = xpos + 3*mod - -- draw the first 4 numbers - local t_vbar = ean._8_codeset_vbar - local cs14 = ean._codeset14_8 - for i = 1, 4 do - local n = code[i] - local vbar = t_vbar[cs14][n] - err = canvas:encode_Vbar(vbar, xpos, ys, y1); assert(not err, err) - xpos = xpos + s_width - end - -- draw the control symbol - local ctrl = ean._8_ctrl_center_vbar - err = canvas:encode_Vbar(ctrl, xpos, y0, y1); assert(not err, err) - xpos = xpos + 5*mod - -- draw the product code - local cs58 = ean._codeset58_8 - for i = 5, 8 do - local n = code[i] - local vbar = t_vbar[cs58][n] - err = canvas:encode_Vbar(vbar, xpos, ys, y1); assert(not err, err) - xpos = xpos + s_width - end - -- draw the stop char - err = canvas:encode_Vbar(be, xpos, y0, y1); assert(not err, err) - -- bounding box set up - local qzl = ean.quietzone_left_factor * mod - local qzr = ean.quietzone_right_factor * mod - local err = canvas:stop_bbox_group(x0 - qzl, y0, x1 + qzr, y1) - assert(not err, err) - if ean.text_enabled then -- human readable text - local Text = ean._libgeo.Text - local t_1 = Text:from_digit_array(code, 1, 4) - local t_2 = Text:from_digit_array(code, 5, 8) - local y_bl = ys - ean.text_ygap_factor * mod - local mx = ean.text_xgap_factor - local x1_1 = x0 + ( 3 + mx)*mod - local x1_2 = x0 + (32 - mx)*mod - err = canvas:encode_Text_xwidth(t_1, x1_1, x1_2, y_bl, 1) - assert(not err, err) - local x2_1 = x0 + (35+mx)*mod - local x2_2 = x0 + (64-mx)*mod - err = canvas:encode_Text_xwidth(t_2, x2_1, x2_2, y_bl, 1) - assert(not err, err) - end -end - --- draw EAN5 add-on symbol -fn_append_ga_variant["5"] = function (ean, canvas, tx, ty, ax, ay, h) - local code = ean._code_data - local l1 = ean._main_len - local i1; if l1 == 5 then - i1 = 1 - else - i1 = l1 + 1 - end - local i2 = i1 + 4 - local mod = ean.mod - local w = 47*mod - h = h or ean.height - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local y1 = y0 + h - local xpos = x0 -- current insertion x-coord - local sym_w = 7*mod - local sep_w = 2*mod - -- draw the start symbol - local err - err = canvas:start_bbox_group(); assert(not err, err) - local start = ean._5_start_vbar - err = canvas:encode_Vbar(start, xpos, y0, y1); assert(not err, err) - xpos = xpos + 4*mod - local ck = checksum_5_2(code, i1, 5) - local codeset = ean._codeset_5[ck] - local sep = ean._5_sep_vbar - local t_vbar = ean._5_codeset_vbar - -- draw the five digits - local k = 0 - for i = i1, i2 do - k = k + 1 - local cs = codeset[k] -- 1 or 2 - local d = code[i] - local vbar = t_vbar[cs][d] - err = canvas:encode_Vbar(vbar, xpos, y0, y1); assert(not err, err) - xpos = xpos + sym_w - if k < 5 then - err = canvas:encode_Vbar(sep, xpos, y0, y1); assert(not err, err) - xpos = xpos + sep_w - end - end - -- bounding box set up - local qzl = ean.quietzone_left_factor * mod - local qzr = ean.quietzone_right_factor * mod - local err = canvas:stop_bbox_group(x0 - qzl, y0, x1 + qzr, y1) - assert(not err, err) - if ean.text_enabled then -- human readable text - local Text = ean._libgeo.Text - local txt = Text:from_digit_array(code, i1, i2) - local y_bl = y1 + ean.text_ygap_factor * mod - local x1_1 = x0 + 3*mod - local x1_2 = x1 - 3*mod - err = canvas:encode_Text_xwidth(txt, x1_1, x1_2, y_bl, 0) - assert(not err, err) - end -end - --- draw EAN2 symbol -fn_append_ga_variant["2"] = function (ean, canvas, tx, ty, ax, ay, h) - local code = ean._code_data - local l1 = ean._main_len - local i1; if l1 == 2 then - i1 = 1 - else - i1 = l1 + 1 - end - local mod = ean.mod - local w = 20*mod - h = h or ean.height - local x0 = (tx or 0.0) - ax * w - local y0 = (ty or 0.0) - ay * h - local x1 = x0 + w - local y1 = y0 + h - local xpos = x0 -- current insertion x-coord - local sym_w = 7*mod - local sep_w = 2*mod - -- draw the start symbol - local err - err = canvas:start_bbox_group(); assert(not err, err) - local start = ean._2_start_vbar - err = canvas:encode_Vbar(start, xpos, y0, y1); assert(not err, err) - xpos = xpos + 4*mod - local r = checksum_5_2(code, i1, 2) - local s1, s2 - if r == 0 then -- LL scheme - s1, s2 = 1, 1 - elseif r == 1 then -- LG scheme - s1, s2 = 1, 2 - elseif r == 2 then -- GL scheme - s1, s2 = 2, 1 - else -- r == 3 -- GG scheme - s1, s2 = 2, 2 - end - local t_vbar = ean._2_codeset_vbar - local d1 = code[i1] -- render the first digit - local vb1 = t_vbar[s1][d1] - err = canvas:encode_Vbar(vb1, xpos, y0, y1); assert(not err, err) - xpos = xpos + sym_w - local sep = ean._2_sep_vbar - err = canvas:encode_Vbar(sep, xpos, y0, y1); assert(not err, err) - xpos = xpos + sep_w - local d2 = code[i1 + 1] -- render the second digit - local vb2 = t_vbar[s2][d2] - err = canvas:encode_Vbar(vb2, xpos, y0, y1); assert(not err, err) - -- bounding box set up - local qzl = ean.quietzone_left_factor * mod - local qzr = ean.quietzone_right_factor * mod - local err = canvas:stop_bbox_group(x0 - qzl, y0, x1 + qzr, y1) - assert(not err, err) - if ean.text_enabled then -- human readable text - local Text = ean._libgeo.Text - local txt = Text:from_digit_array(code, i1, i1 + 1) - local y_bl = y1 + ean.text_ygap_factor * mod - local x1_1 = x0 + 3*mod - local x1_2 = x1 - 3*mod - err = canvas:encode_Text_xwidth(txt, x1_1, x1_2, y_bl, 0) - assert(not err, err) - end -end - -fn_append_ga_variant["13+5"] = function (ean, canvas, tx, ty, ax, ay) - local mod = ean.mod - local bars_depth = mod * ean.bars_depth_factor - local h = ean.height + bars_depth - local w = (142 + ean.addon_xgap_factor) * mod - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local fn_ga = ean._append_ga_variant - local fn_1 = fn_ga["13"] - local fn_2 = fn_ga["5"] - fn_1(ean, canvas, x0, y0, 0, 0) - fn_2(ean, canvas, x1, y0, 1, 0, 0.85 * h) -end - -fn_append_ga_variant["13+2"] = function (ean, canvas, tx, ty, ax, ay) - local mod = ean.mod - local bars_depth = mod * ean.bars_depth_factor - local h = ean.height + bars_depth - local w = (115 + ean.addon_xgap_factor) * mod - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local fn_ga = ean._append_ga_variant - local fn_1 = fn_ga["13"] - local fn_2 = fn_ga["2"] - fn_1(ean, canvas, x0, y0, 0, 0) - fn_2(ean, canvas, x1, y0, 1, 0, 0.85 * h) -end - -fn_append_ga_variant["8+5"] = function (ean, canvas, tx, ty, ax, ay) - local mod = ean.mod - local bars_depth = mod * ean.bars_depth_factor - local h = ean.height + bars_depth - local w = (114 + ean.addon_xgap_factor) * mod - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local fn_ga = ean._append_ga_variant - local fn_1 = fn_ga["8"] - local fn_2 = fn_ga["5"] - fn_1(ean, canvas, x0, y0, 0, 0) - fn_2(ean, canvas, x1, y0, 1, 0, 0.85 * h) -end - -fn_append_ga_variant["8+2"] = function (ean, canvas, tx, ty, ax, ay) - local mod = ean.mod - local bars_depth = mod * ean.bars_depth_factor - local h = ean.height + bars_depth - local w = (87 + ean.addon_xgap_factor) * mod - local x0 = (tx or 0) - ax * w - local y0 = (ty or 0) - ay * h - local x1 = x0 + w - local fn_ga = ean._append_ga_variant - local fn_1 = fn_ga["8"] - local fn_2 = fn_ga["2"] - fn_1(ean, canvas, x0, y0, 0, 0) - fn_2(ean, canvas, x1, y0, 1, 0, 0.85 * h) -end - --- Drawing into the provided channel geometrical data --- tx, ty is the optional translation vector --- the function return the canvas reference to allow call chaining -function EAN:append_ga(canvas, tx, ty) --> canvas - local var = self._variant - local fn_append_ga = assert(self._append_ga_variant[var]) - local ax, ay = self.ax, self.ay - fn_append_ga(self, canvas, tx, ty, ax, ay) - return canvas -end - -return EAN diff --git a/macros/luatex/generic/barracuda/lib/lib-barcode/i2of5.lua b/macros/luatex/generic/barracuda/lib/lib-barcode/i2of5.lua deleted file mode 100644 index 8097b855f7..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-barcode/i2of5.lua +++ /dev/null @@ -1,378 +0,0 @@ --- Interleaved 2 of 5 (ITF) barcode generator --- --- Copyright (C) 2019 Roberto Giacomelli --- see LICENSE.txt file - -local ITF = { -- main container - _VERSION = "ITF v0.0.1", - _NAME = "ITF", - _DESCRIPTION = "Interleaved 2 of 5 barcode encoder", -} - -ITF._start = 111 -- nnnn -ITF._stop = 112 -- Wnn (integer must be in reverse order) - -ITF._pattern = { -- true -> narrow, false -> Wide - [0] = {true, true, false, false, true}, - [1] = {false, true, true, true, false}, - [2] = {true, false, true, true, false}, - [3] = {false, false, true, true, true}, - [4] = {true, true, false, true, false}, - [5] = {false, true, false, true, true}, - [6] = {true, false, false, true, true}, - [7] = {true, true, true, false, false}, - [8] = {false, true, true, false, true}, - [9] = {true, false, true, false, true}, -} - --- define parameters -ITF._par_def = {} -local pardef = ITF._par_def - --- module main parameter -pardef.module = { - -- Narrow element X-dimension is the width of the smallest element. - -- The module width (width of narrow element) should be at least 7.5 mils - -- that is exactly 0.1905mm (1 mil is 1/1000 inch). - default = 7.5 * 0.0254 * 186467, -- 7.5 mils (sp) unit misure, - unit = "sp", -- scaled point - isReserved = true, - order = 1, -- the one first to be modified - fncheck = function (self, mod, _) --> boolean, err - if mod >= self.default then return true, nil end - return false, "[OutOfRange] too small lenght for X-dim" - end, -} - -pardef.ratio = { - -- The "wide" element is a multiple of the "narrow" element that can - -- range between 2.0 and 3.0. Preferred value is 3.0. - -- The multiple for the wide element should be between 2.0 and 3.0 if the - -- narrow element is greater than 20 mils. If the narrow element is less - -- than 20 mils (0.508mm), the ratio must exceed 2.2. - default = 3.0, - unit = "absolute-number", - isReserved = true, - order = 2, - fncheck = function (_, ratio, tpardef) --> boolean, err - local mils = 0.0254 * 186467 - local mod = tpardef.module - local minr; if mod < 20*mils then minr = 2.2 else minr = 2.0 end - if ratio < minr then - return false, "[OutOfRange] too small ratio (the min is "..minr..")" - end - if ratio > 3.0 then - return false, "[OutOfRange] too big ratio (the max is 3.0)" - end - return true, nil - end, -} - -pardef.height = { - -- The height should be at least 0.15 times the barcode's length or 0.25 inch. - default = 15 * 186467, -- 15mm -- TODO: better assessment for symbol length - unit = "sp", -- scaled point - isReserved = false, - order = 3, - fncheck = function (_self, h, _opt) --> boolean, err - local mils = 0.0254 * 186467 - if h >= 250*mils then - return true, nil - end - return false, "[OutOfRange] height too small" - end, -} - -pardef.quietzone = { - -- Quiet zones must be at least 10 times the module width or 0.25 inches, - -- whichever is larger - default = 250 * 0.0254 * 186467, -- 0.25 inch (250 mils) - unit = "sp", -- scaled point - isReserved = false, - order = 4, - fncheck = function (self, qz, _opt) --> boolean, err - local mils = 0.0254 * 186467 - local mod = self.module - local min = math.max(10*mod, 250*mils) - if qz >= min then - return true, nil - else - return false, "[OutOfRange] quietzone too small" - end - end, -} - -pardef.check_digit_policy = { -- enumeration - default = "none", - isReserved = false, - policy_enum = { - add = true, -- add a check digit to the symbol - verify = true, -- check the last digit of the symbol as check digit - none = true, -- do nothing - }, - order = 5, - fncheck = function (self, e, _) --> boolean, err - if type(e) ~= "string" then return false, "[TypeError] not a string" end - local keys = self.policy_enum - if keys[e] == true then - return true, nil - else - return false, "[Err] enum value not found" - end - end, -} - -pardef.check_digit_method = { -- enumeration - -- determine the algorithm for the check digit calculation - default = "mod_10", - isReserved = false, - order = 6, - method_enum = { - mod_10 = true, -- MOD 10 check digits method - }, - fncheck = function (self, e, _) --> boolean, err - if type(e) ~= "string" then return false, "[TypeError] not a string" end - local keys = self.method_enum - if keys[e] == true then - return true, nil - else - return false, "[Err] enum value not found" - end - end, -} - -pardef.bearer_bars_enabled = { -- boolean type - -- enable/disable Bearer bars around the barcode symbol - default = false, - isReserved = false, - order = 7, - fncheck = function (_, flag, _) --> boolean, err - if type(flag) == "boolean" then - return true, nil - else - return false, "[TypeErr] not a boolean value" - end - end, -} - -pardef.bearer_bars_thickness = { -- dimension - default = 37.5 * 0.0254 * 186467, -- 5 modules - unit = "sp", -- scaled point - isReserved = false, - order = 8, - fncheck = function (_self, thick, tpardef) --> boolean, err - local module = tpardef.module - if thick >= 2*module then - return true, nil - end - return false, "[OutOfRange] thickness too small" - end, -} - -pardef.bearer_bars_layout = { -- enumeration - -- determine the algorithm for the check digit calculation - default = "hbar", - isReserved = false, - order = 9, - method_enum = { - frame = true, -- a rectangle around the symbol - hbar = true, -- top and bottom horizontal bars - }, - fncheck = function (self, e, _) --> boolean, err - if type(e) ~= "string" then return false, "[TypeError] not a string" end - local keys = self.method_enum - if keys[e] == true then - return true, nil - else - return false, "[Err] enum value not found" - end - end, -} - --- auxiliary functions - --- separate a non negative integer in its digits {d_n-1, ..., d_1, d_0} -local function n_to_arr(n) --> len, digits - local digits = {} - local slen - if n == 0 then - digits[#digits + 1] = 0 - slen = 1 - else - slen = 0 - while n > 0 do - local d = n % 10 - digits[#digits + 1] = d - n = (n - d) / 10 - slen = slen + 1 - end - end - for k = 1, slen/2 do -- array reversing - local h = slen - k + 1 - local d = digits[k] - digits[k] = digits[h] - digits[h] = d - end - return slen, digits -end - -local function rshift(t) - local tlen = #t - for i = tlen, 1, -1 do - t[i + 1] = t[i] - end - t[1] = 0 -end - - -local function check_mod10(t, last) - local sum = 0 - local w = true - for i = last, 1, -1 do - if w then - sum = sum + 3*t[i] - else - sum = sum + t[i] - end - w = not w - end - local m = sum % 10 - if m == 0 then return 0 else return 10 - m end -end - -local function checkdigit(t, last, method) - if method == "mod_10" then - return check_mod10(t, last) - else - assert(false, "[InternalErr] unknow method") - end -end - - --- configuration function -function ITF:config() --> ok, err - -- init Vbar objects - local narrow = self.module - local wide = narrow * self.ratio - -- start symbol - local Vbar = self._libgeo.Vbar -- Vbar class - self._vbar_start = Vbar:from_int_revpair(self._start, narrow, wide) - self._vbar_stop = Vbar:from_int_revpair(self._stop, narrow, wide) - - -- build every possible pair of digits from 00 to 99 - self._vbar_data = {} - local vbar = self._vbar_data - local pattern = self._pattern - for dec = 0, 9 do - for unit = 0, 9 do - local t1 = pattern[dec] - local t2 = pattern[unit] - local n = dec*10 + unit - vbar[n] = Vbar:from_two_tab(t1, t2, narrow, wide) - end - end - return true, nil -end - --- public functions - -function ITF:get_checkdigit(n, method) - if type(n) ~= "number" then return nil, "[ArgErr] 'n' is not a number" end - if n < 0 then return nil, "[ArgErr] found a negative number" end - if n - math.floor(n) ~= 0 then return nil, "[ArgErr] found a float number" end - method = method or self.check_digit_method - local last, t = n_to_arr(n) - return checkdigit(t, last, method) -end - --- internal methods for constructors - -function ITF:_finalize() --> ok, err - -- check digit action - local policy = self.check_digit_policy - local slen = self._code_len - local is_even = (slen % 2 == 0) - local digits = self._code_data - if policy == "none" then - if not is_even then - rshift(digits) -- add a heading zero for padding - slen = slen + 1 - end - elseif policy == "add" then - if is_even then - rshift(digits) -- add a heading zero for padding - slen = slen + 1 - end - local c = checkdigit(digits, slen, self.check_digit_method) - digits[#digits + 1] = c - elseif policy == "verify" then - if not is_even then - rshift(digits) - slen = slen + 1 - end - local c = checkdigit(digits, slen - 1, self.check_digit_method) - if c ~= digits[slen] then - return false, "[DataErr] wrong check digit" - end - else - return false, "[InternalError] wrong enum value" - end - self._code_len = slen - return true, nil -end - --- drawing function --- tx, ty is an optional translator vector -function ITF:append_ga(canvas, tx, ty) --> canvas - local err = canvas:start_bbox_group(); assert(not err, err) - -- draw the start symbol - local xdim = self.module - local ratio = self.ratio - local symb_len = 2 * xdim * (3 + 2*ratio) - local x0 = tx or 0 - local xpos = x0 - local y0 = ty or 0 - local y1 = y0 + self.height - local start = self._vbar_start - local err - err = canvas:encode_Vbar(start, xpos, y0, y1); assert(not err, err) - xpos = xpos + 4 * xdim - -- draw the code symbol - local digits = self._code_data - local vbars = self._vbar_data - for i = 1, #digits, 2 do - local index = 10 * digits[i] + digits[i+1] - local b = vbars[index] - err = canvas:encode_Vbar(b, xpos, y0, y1); assert(not err, err) - xpos = xpos + symb_len - end - -- draw the stop symbol - local stop = self._vbar_stop - err = canvas:encode_Vbar(stop, xpos, y0, y1); assert(not err, err) - -- bounding box setting - local x1 = xpos + (2 + ratio)*xdim - local qz = self.quietzone - local b1x, b1y = x0 - qz, y0 - local b2x, b2y = x1 + qz, y1 - if self.bearer_bars_enabled then - local w = self.bearer_bars_thickness - err = canvas:encode_linethick(w); assert(not err, err) - b1y, b2y = b1y - w, b2y + w - local layout = self.bearer_bars_layout - if layout == "hbar" then - err = canvas:encode_hline(b1x, b2x, y0 - w/2); assert(not err, err) - err = canvas:encode_hline(b1x, b2x, y1 + w/2); assert(not err, err) - elseif layout == "frame" then - err = canvas:encode_rectangle(b1x - w/2, y0 - w/2, b2x + w/2, y1 + w/2) - assert(not err, err) - b1x, b2x = b1x - w, b2x + w - else - error("[IntenalErr] bearer bars layout option is wrong") - end - end - local err = canvas:stop_bbox_group(b1x, b1y, b2x, b2y) - assert(not err, err) - return canvas -end - -return ITF diff --git a/macros/luatex/generic/barracuda/lib/lib-driver/driver.lua b/macros/luatex/generic/barracuda/lib/lib-driver/driver.lua deleted file mode 100644 index 956c1f1e9d..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-driver/driver.lua +++ /dev/null @@ -1,400 +0,0 @@ --- --- ga Intermediate Graphic Language for barcode drawing --- Copyright (C) 2019 Roberto Giacomelli --- --- Basic driver interface --- drawing elementary vector shape --- All dimensions are in scaled point (sp) - -local Driver = { - _VERSION = "Driver v0.0.1", - _NAME = "Driver", - _DESCRIPTION = "Driver for ga graphic assembler stream", -} - -Driver.__index = Driver -Driver._drv_instance = {} -- driver instances repository - --- driver_type/submodule name -Driver._drv_available_drv = { -- lowercase keys please - native = "lib-driver.drv-pdfliteral", -- only LuaTeX driver - svg = "lib-driver.drv-svg", - -- tikz = "lib-driver.drv-tikz", -} - -function Driver:_get_driver(id_drv) --> object, err - if type(id_drv) ~= "string" then - return nil, "[ArgErr] 'id_drv' is not a string" - end - if not self._drv_available_drv[id_drv] then - return nil, "[ArgErr] driver '"..id_drv.."' not found" - end - local t_drv = self._drv_instance - if t_drv[id_drv] then -- is the repo already loaded? - return t_drv[id_drv], nil - else -- loading driver - local module = self._drv_available_drv[id_drv] - local channel = require(module) - t_drv[id_drv] = channel - return channel, nil - end -end - -function Driver:_new_state() --> a new state - return { - line_width = 65781.76, -- line width 1bp (in scaled point sp) - line_cap = 0, -- line cap style - line_join = 0, -- line join style - gtext = false, -- text group off - bb_on = true, -- bounding box checking activation - bb_x1 = nil, -- bounding box coordinates in sp (nil means no data) - bb_y1 = nil, - bb_x2 = nil, - bb_y2 = nil, - mm = 186467.98110236, -- conversion factor sp -> mm (millimeter) - bp = 65781.76, -- conversion factor sp -> bp (big point) - } -end - -function Driver:_ga_process(drv, ga, st, bf, xt) - local op_fn = self._opcode_v001 - local pc = 1 -- program counter - local data = ga._data - while data[pc] do -- stream processing - local opcode = data[pc] - local fn = assert(op_fn[opcode], "[InternalErr] unimpl opcode ".. opcode) - pc = fn(drv, st, pc + 1, data, bf, xt) - end -end - --- save graphic data in an external file with the 'id_drv' format --- id_drv: specific driver output --- ga: ga object --- filename: file name --- ext: file extension (optional) -function Driver:save(id_drv, ga, filename, ext) --> ok, err - -- retrive the output library - local drv, err = self:_get_driver(id_drv) - if err then return false, err end - -- init - local state = self:_new_state() - local buf, txt_buf = drv.init_buffer(state) -- a new buffer and text_buffer - -- processing - self:_ga_process(drv, ga, state, buf, txt_buf) - -- buffer finalizing - drv.close_buffer(state, buf, txt_buf) -- finalize the istruction - -- file saving - local sep = drv.buf_sep - ext = ext or drv.ext - local fn = io.open(filename.."."..ext, "w") -- output the file - fn:write(table.concat(buf, sep)) -- concat the buffer - fn:close() - return true, nil -end - --- insert a ga drawing in a TeX box --- PDFnative only function -function Driver:ga_to_hbox(ga, boxname) --> ok, err - -- retrive the output library - local id_drv = "native" - local drv, err = self:_get_driver(id_drv) - if err then return false, err end - -- init process - local state = self:_new_state() - local buf, txt_buf = drv.init_buffer(state) -- a new buffer and text_buffer - -- processing - self:_ga_process(drv, ga, state, buf, txt_buf) - -- finalizing - drv.close_buffer(state, buf, txt_buf) -- finalize the istruction sequence - -- build hbox - local ok, err = drv.hboxcreate(boxname, state, buf, txt_buf) - return ok, err -end - - --- operational functions --- _op_v001 corresponds to the version 1 of ga graphic assembler specification. --- The table indexes every opcode to a function that takes these arguments and --- return the updated program counter pointed to the next operation: --- fn: format specific driver library --- st: state --- pc: program counter --- ga: read only ga stream --- bf: the output buffer --- xt: the output text object buffer -Driver._opcode_v001 = { - [1] = function (drv, st, pc, ga, bf, xt) -- 1 ; set line width - local w = ga[pc] - st.line_width = w - if not drv.append_001 then - error("[InternalErr] unimplemented opcode 1 for "..drv._NAME) - end - drv.append_001(st, bf, xt, w) - return pc + 1 - end, - [2] = function (drv, st, pc, ga, bf, xt) -- 2 ; set line cap style - local style = ga[pc] - st.line_cap = style - if not drv.append_002 then - error("[InternalErr] unimplemented opcode 2 for "..drv._NAME) - end - drv.append_002(st, bf, xt, style) - return pc + 1 - end, - [3] = function (drv, st, pc, ga, bf, xt) -- 3 ; set line join style - local join = ga[pc] - if not drv.append_003 then - error("[InternalErr] unimplemented opcode 3 for "..drv._NAME) - end - drv.append_003(st, bf, xt, join) - return pc + 1 - end, - [30] = function (drv, st, pc, ga, bf, xt) -- start_bbox_group - assert(st.bb_on) - st.bb_on = false - return pc - end, - [31] = function (drv, st, pc, ga, bf, xt) -- end_bbox_group - assert(st.bb_on == false) - st.bb_on = true - local x1 = ga[pc]; pc = pc + 1 - local y1 = ga[pc]; pc = pc + 1 - local x2 = ga[pc]; pc = pc + 1 - local y2 = ga[pc]; pc = pc + 1 - if st.bb_x1 == nil then - st.bb_x1 = x1 - st.bb_y1 = y1 - st.bb_x2 = x2 - st.bb_y2 = y2 - else - if x1 < st.bb_x1 then st.bb_x1 = x1 end - if x2 > st.bb_x2 then st.bb_x2 = x2 end - if y1 < st.bb_y1 then st.bb_y1 = y1 end - if y2 > st.bb_y2 then st.bb_y2 = y2 end - end - return pc - end, - -- draw an horizontal line - -- 33 - [33] = function (drv, st, pc, ga, bf, xt) - local x1 = ga[pc]; pc = pc + 1 - local x2 = ga[pc]; pc = pc + 1 - local y = ga[pc]; pc = pc + 1 - if st.bb_on then -- eventually update bbox - local hw = st.line_width/2 - local by1 = y - hw - local by2 = y + hw - if st.bb_x1 == nil then - st.bb_x1 = x1 - st.bb_x2 = x2 - st.bb_y1 = by1 - st.bb_y2 = by2 - else - if x1 < st.bb_x1 then st.bb_x1 = x1 end - if x2 > st.bb_x2 then st.bb_x2 = x2 end - if by1 < st.bb_y1 then st.bb_y1 = by1 end - if by2 > st.bb_y2 then st.bb_y2 = by2 end - end - end - if not drv.append_033 then - error("[InternalErr] unimplemented opcode 33 for "..drv._NAME) - end - drv.append_033(st, bf, xt, x1, x2, y) - return pc - end, - -- draw a vertical line - [34] = function (drv, st, pc, ga, bf, xt) -- 34 - local y1 = ga[pc]; pc = pc + 1 - local y2 = ga[pc]; pc = pc + 1 - local x = ga[pc]; pc = pc + 1 - if st.bb_on then -- eventually update the figure bounding box - local hw = st.line_width/2 - local bx1 = x - hw - local bx2 = x + hw - if st.bb_x1 == nil then - st.bb_x1 = bx1 - st.bb_x2 = bx2 - st.bb_y1 = y1 - st.bb_y2 = y2 - else - if bx1 < st.bb_x1 then st.bb_x1 = bx1 end - if bx2 > st.bb_x2 then st.bb_x2 = bx2 end - if y1 < st.bb_y1 then st.bb_y1 = y1 end - if y2 > st.bb_y2 then st.bb_y2 = y2 end - end - end - if not drv.append_034 then - error("[InternalErr] unimplemented opcode 34 for "..drv._NAME) - end - drv.append_034(st, bf, xt, y1, y2, x) - return pc - end, - -- draw a group of vertical lines (vbar) - -- 36 - [36] = function(drv, st, pc, ga, bf, xt) -- vbar - local y1 = ga[pc]; pc = pc + 1 - local y2 = ga[pc]; pc = pc + 1 - local nbar = ga[pc]; pc = pc + 1 - assert(nbar > 0) - local h = y2 - y1 -- height common to every rectangle - assert(h > 0) - local pc_next = pc + 2 * nbar - if drv.append_036_start then - drv.append_036_start(st, bf, xt, nbar, y1, y2) - end - local bx1, bx2 - for i = pc, pc_next - 1, 2 do -- reading coordinates - local x = assert(ga[i], "[InternalErr] ga prematurely reached the end") - local w = assert(ga[i+1], "[InternalErr] ga prematurely reached the end") - drv.append_036_bar(st, bf, xt, x, w, y1, y2) - -- check the bounding box only if the corresponding flag is true - local x1 = x - w/2 - local x2 = x + w/2 - if st.bb_on then - if bx1 == nil then - bx1 = x1 - bx2 = x2 - else - if x1 < bx1 then bx1 = x1 end - if x2 > bx2 then bx2 = x2 end - end - end - end - if drv.append_036_stop then - drv.append_036_stop(st, bf, xt, nbar, y1, y2) - end - if st.bb_on then -- eventually update bbox - if st.bb_x1 == nil then - st.bb_x1 = bx1 - st.bb_x2 = bx2 - st.bb_y1 = y1 - st.bb_y2 = y2 - else - if bx1 < st.bb_x1 then st.bb_x1 = bx1 end - if bx2 > st.bb_x2 then st.bb_x2 = bx2 end - if y1 < st.bb_y1 then st.bb_y1 = y1 end - if y2 > st.bb_y2 then st.bb_y2 = y2 end - end - end - return pc_next - end, - -- draw a rectangle - -- 48 - [48] = function(drv, st, pc, ga, bf, xt) - local x1 = ga[pc]; pc = pc + 1 - local y1 = ga[pc]; pc = pc + 1 - local x2 = ga[pc]; pc = pc + 1 - local y2 = ga[pc]; pc = pc + 1 - -- check the bounding box only if the flag is true - if st.bb_on then - local hw = st.line_width/2 - local bx1, bx2 = x1 - hw, x2 + hw - local by1, by2 = y1 - hw, y2 + hw - if st.bb_x1 == nil then - st.bb_x1 = bx1 - st.bb_x2 = bx2 - st.bb_y1 = by1 - st.bb_y2 = by2 - else - if bx1 < st.bb_x1 then st.bb_x1 = bx1 end - if bx2 > st.bb_x2 then st.bb_x2 = bx2 end - if by1 < st.bb_y1 then st.bb_y1 = by1 end - if by2 > st.bb_y2 then st.bb_y2 = by2 end - end - end - if not drv.append_048 then - error("[InternalErr] unimplemented opcode 48 for "..drv._NAME) - end - drv.append_048(st, bf, xt, x1, y1, x2, y2) - return pc - end, - -- text - [130] = function(drv, st, pc, ga, bf, xt) -- text: ax ay xpos ypos string - local ax = ga[pc]; pc = pc + 1 - local ay = ga[pc]; pc = pc + 1 - local xpos = ga[pc]; pc = pc + 1 - local ypos = ga[pc]; pc = pc + 1 - assert(ga[pc] ~= 0, "[InternalErr] empty chars sequence") - while ga[pc] ~= 0 do - local c = ga[pc]; pc = pc + 1 - drv.append_130_char(st, bf, xt, c) - end - local x1, y1, x2, y2 = drv.append_130_stop(st, bf, xt, xpos, ypos, ax, ay) - -- bounding box checking - if st.bb_on then - if st.bb_x1 == nil then - st.bb_x1 = x1 - st.bb_x2 = x2 - st.bb_y1 = y1 - st.bb_y2 = y2 - else - if x1 < st.bb_x1 then st.bb_x1 = x1 end - if x2 > st.bb_x2 then st.bb_x2 = x2 end - if y1 < st.bb_y1 then st.bb_y1 = y1 end - if y2 > st.bb_y2 then st.bb_y2 = y2 end - end - end - return pc + 1 - end, - [131] = function(drv, st, pc, ga, bf, xt) -- text_xspaced x1 xgap ay ypos chars - local x1 = ga[pc]; pc = pc + 1 - local xgap = ga[pc]; pc = pc + 1 - local ay = ga[pc]; pc = pc + 1 - local ypos = ga[pc]; pc = pc + 1 - assert(ga[pc] ~= 0, "[InternalErr] empty chars sequence") - while ga[pc] ~= 0 do - local c = ga[pc]; pc = pc + 1 - drv.append_131_char(st, bf, xt, c, xgap) - end - local bx1, by1, bx2, by2 = drv.append_131_stop(st, bf, xt, x1, xgap, ypos, ay) - -- bounding box checking - if st.bb_on then -- eventually update bbox - if st.bb_x1 == nil then - st.bb_x1 = bx1 - st.bb_x2 = bx2 - st.bb_y1 = by1 -- no depth - st.bb_y2 = by2 - else - if bx1 < st.bb_x1 then st.bb_x1 = bx1 end - if bx2 > st.bb_x2 then st.bb_x2 = bx2 end - if by1 < st.bb_y1 then st.bb_y1 = by1 end - if by2 > st.bb_y2 then st.bb_y2 = by2 end - end - end - return pc + 1 - end, - -- text_xwidth - -- - [132] = function (drv, st, pc, ga, bf, xt) - local ay = ga[pc]; pc = pc + 1 -- y anchor - local x1 = ga[pc]; pc = pc + 1 -- left limit - local x2 = ga[pc]; pc = pc + 1 -- right limit - assert (x1 ~= x2, "[InternalErr] x coordinate are equal") - assert (x1 < x2, "[InternalErr] not ordered x1, x2 limits") - local ypos = ga[pc]; pc = pc + 1 -- y coordinate of anchor point - assert(ga[pc] ~= 0, "[InternalErr] empty chars sequence") - while ga[pc] ~= 0 do - local c = ga[pc]; pc = pc + 1 - drv.append_132_char(st, bf, xt, c) - end - local bx1, by1, bx2, by2 = drv.append_132_stop(st, bf, xt, x1, x2, ypos, ay) - -- bounding box checking - if st.bb_on then -- eventually update bbox - if st.bb_x1 == nil then - st.bb_x1 = bx1 - st.bb_x2 = bx2 - st.bb_y1 = by1 -- no depth - st.bb_y2 = by2 - else - if bx1 < st.bb_x1 then st.bb_x1 = bx1 end - if bx2 > st.bb_x2 then st.bb_x2 = bx2 end - if by1 < st.bb_y1 then st.bb_y1 = by1 end - if by2 > st.bb_y2 then st.bb_y2 = by2 end - end - end - return pc + 1 - end, -} - -return Driver - diff --git a/macros/luatex/generic/barracuda/lib/lib-driver/drv-pdfliteral.lua b/macros/luatex/generic/barracuda/lib/lib-driver/drv-pdfliteral.lua deleted file mode 100644 index 50baea1472..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-driver/drv-pdfliteral.lua +++ /dev/null @@ -1,284 +0,0 @@ --- --- ga graphic assembler or --- Intermediate Graphic Language for barcode drawing --- Copyright (C) 2019 Roberto Giacomelli --- --- All dimensions are in scaled point (sp) --- ga LuaTeX Driver (native implementation node+pdfliteral) - --- class for drawing elementary geometric elements -local PDFnative = { - _VERSION = "PDFnative v0.0.4", - _NAME = "PDFnative", - _DESCRIPTION = "A LuaTeX native pdfliteral driver for ga graphic stream", -} - -PDFnative.ext = "txt" -- file extension -PDFnative.buf_sep = "\n" -- separation string for buffer concat - -function PDFnative.init_buffer(st) --> buffer, text buffer - st.head = nil -- addition for text processing (to remember purpose) - st.last = nil - st.hbox = nil - st.cw = nil - st.x_hbox = nil - st.char_counter = nil - local bf = {"q"} -- create a new graphic stack - local xt = {} -- text buffer - return bf, xt -end - -function PDFnative.close_buffer(st, bf, xt) - bf[#bf + 1] = "Q" -- stack restoring -end - --- text utility special functions - -local function newglue(w) --> node - local n = node.new("glue") - n.width = w - return n -end - -local function newglyph(c) --> node -- ? U+2423 ␣ for whitespace? - if c == 32 then - return newglue(tex.sp "3.5pt") - end - local n = node.new("glyph") - n.char = c - n.font = font.current() - return n -end - -local function newpdfliteral(buf) --> node - local npdf = node.new("whatsit", "pdf_literal") - npdf.mode = 0 - npdf.data = table.concat(buf, "\n") - return npdf -end - -local function append_glyph(head, last, c) --> head, last, xdim - if c == 32 then -- space - local space = tex.sp "3.5pt" - head, last = node.insert_after(head, last, newglue(space)) - return head, last, space - else - local g = newglyph(c) - local xdim = g.width - head, last = node.insert_after(head, last, g) - return head, last, xdim - end -end - --- special drawing function -function PDFnative.hboxcreate(hboxname, st, buf, txt) --> ok, err - local node = assert(node, "This is not LuaTeX!") - local tex = assert(tex) - local font = assert(font) - if not tex.isbox(hboxname) then - return nil, string.format("Box register [%s] doesn’t exist", hboxname) - end - local bb_x1, bb_y1, bb_x2, bb_y2 = st.bb_x1, st.bb_y1, st.bb_x2, st.bb_y2 - local npdf = newpdfliteral(buf) -- node whatsit pdfliteral - -- vboxing, vertical correction - local vpdf = node.vpack(npdf) - vpdf.height = -bb_y1 - -- glue, for horizontal correction - local ng = newglue(-bb_x1) - local head, last = node.insert_after(ng, ng, vpdf) - local xprev = 0.0 - for _, t in ipairs(txt) do -- text processing - local gy = newglue(t[3] - bb_y1) -- n, x, y, w, h -- t[3] -t[5] - bb_y1 - local nvtxt = node.insert_after(t[1], t[1], gy) - local vtxt = node.vpack(nvtxt) - local gx = newglue(t[2]-xprev) - head, last = node.insert_after(head, last, gx) - head, last = node.insert_after(head, last, vtxt) - xprev = t[2] + t[4] - end - -- hboxing - local hbox = node.hpack(head) - hbox.width = bb_x2 - bb_x1 - hbox.height = bb_y2 - bb_y1 - tex.box[hboxname] = hbox - return true, nil -end - --- PDF literal encoding functions - --- 1 ; set line width -function PDFnative.append_001(st, bf, xt, w) - local bp = st.bp -- 1bp (sp) - bf[#bf + 1] = string.format("%0.6f w", w/bp) -end - --- 2 ; set line cap style -function PDFnative.append_002(st, bf, xt, cap) - bf[#bf + 1] = string.format("%d J", cap) -end - --- 3 ; set line join style -function PDFnative.append_003(st, bf, xt, j) - bf[#bf + 1] = string.format("%d j", j) -end - --- draw an horizontal line --- 33 -function PDFnative.append_033(st, bf, xt, x1, x2, y) - local bp = st.bp -- conversion factor bp -> sp - bf[#bf + 1] = string.format("% 0.6f %0.6f m", x1/bp, y/bp) - bf[#bf + 1] = string.format("% 0.6f %0.6f l", x2/bp, y/bp) - bf[#bf + 1] = "S" -- stroke -end - --- vline --- draw a vertical line --- 34 -function PDFnative.append_034(st, bf, xt, y1, y2, x) - local bp = st.bp -- conversion factor bp -> sp - bf[#bf + 1] = string.format("% 0.6f %0.6f m", x/bp, y1/bp) - bf[#bf + 1] = string.format("% 0.6f %0.6f l", x/bp, y2/bp) - bf[#bf + 1] = "S" -- stroke -end - --- Vbar --- draw a group of vertical lines --- 36 ... -function PDFnative.append_036_bar(st, bf, xt, x, w, y1, y2) - local bp = st.bp -- conversion factor bp -> sp - local fmt = "%0.6f %0.6f %0.6f %0.6f re" - local x1 = x - w/2 - local h = y2 - y1 - -- pdf literal insertion - bf[#bf + 1] = string.format(fmt, x1/bp, y1/bp, w/bp, h/bp) -end -function PDFnative.append_036_stop(st, bf, xt, nbar, y1, y2) - bf[#bf + 1] = "f" -- fill - bf[#bf + 1] = "S" -- stroke -end - --- draw a rectangle --- 48 -function PDFnative.append_048(st, bf, xt, x1, y1, x2, y2) - local w = x2 - x1 -- rectangle width - assert(w > 0) - local h = y2 - y1 -- rectangle height - assert(h > 0) - local bp = st.bp -- conversion factor - local fmt = "%0.6f %0.6f %0.6f %0.6f re S" - -- pdf literal string - bf[#bf + 1] = string.format(fmt, x1/bp, y1/bp, w/bp, h/bp) -end - --- 130 Text with several glyphs --- 130 -function PDFnative.append_130_char(st, bf, xt, c) - local head, last = st.head, st.last - head, last = append_glyph(head, last, c) - st.head = head - st.last = last -end --- return bounding box of the text object without deep -function PDFnative.append_130_stop(st, bf, xt, xpos, ypos, ax, ay) - local head = assert(st.head) - st.head = nil -- reset temporary reference - st.last = nil - local hbox = node.hpack(head) - local w, h, d = node.dimensions(hbox) - local x1 = xpos - ax*w -- text position - local y1; if ay > 0 then - y1 = ypos - h*ay - else - y1 = ypos - d*ay - end - xt[#xt + 1] = {hbox, x1, y1 - d, w, h} - return x1, y1, x1 + w, y1 + h -end - --- 131 , Text with glyphs equally spaced on its vertical axis --- 131 -function PDFnative.append_131_char(st, bf, xt, c, xgap) - local head, last, prec_cw = st.head, st.last, st.cw - local cw - if prec_cw then - local g = newglyph(c) - cw = g.width - local isp = xgap - (cw + prec_cw)/2 - local s = newglue(isp) - head, last = node.insert_after(head, last, s) - head, last = node.insert_after(head, last, g) - else -- first char - head, last, cw = append_glyph(head, last, c) - st.x_hbox = cw/2 - end - st.cw = cw - st.head = head - st.last = last -end -function PDFnative.append_131_stop(st, bf, xt, x1, xgap, ypos, ay) --> bb - local head = assert(st.head) - st.head = nil -- reset temporary reference - st.last = nil - st.cw = nil - local hbox = node.hpack(head) - local w, h, d = node.dimensions(hbox) - local bx1 = x1 - st.x_hbox - st.x_hbox = nil -- reset temporary references - local y1; if ay > 0 then - y1 = ypos - h*ay - else - y1 = ypos - d*ay - end - xt[#xt + 1] = {hbox, bx1, y1 - d, w, h} - return bx1, y1, bx1 + w, y1 + h -end - --- 132 Glyphs equally spaced on vertical axis between two x coordinates --- 132 -function PDFnative.append_132_char(st, bf, xt, c) - local head, last = st.head, st.last - if head then - local g = newglyph(c) - local s = newglue(1) - head, last = node.insert_after(head, last, s) - head, last = node.insert_after(head, last, g) - st.char_counter = st.char_counter + 1 - else -- first char - head, last, cw = append_glyph(head, last, c) - st.cw = cw - st.char_counter = 1 - end - st.head = head - st.last = last -end -function PDFnative.append_132_stop(st, bf, xt, x1, x2, ypos, ay) --> p1, p2 - local head, last = st.head, st.last - st.head = nil -- reset temporary registry - st.last = nil - local w_1 = st.cw - st.cw = nil - local i = st.char_counter - st.char_counter = nil - local w_n = last.width - local xgap = (x2 - x1 - (w_1 + w_n)/2)/(i - 1) - local c_curr = head - for _ = 1, i - 1 do - local g = c_curr.next - local c_next = g.next - local w_2 - w_1, w_2 = c_curr.width, c_next.width - g.width = xgap - (w_1 + w_2)/2 - c_curr = c_next - end - local hbox = node.hpack(head) - local w, h, d = node.dimensions(hbox) - local y; if ay > 0 then - y = ypos - h*ay - else - y = ypos - d*ay - end - xt[#xt + 1] = {hbox, x1, y - d, w, h} - return x1, y, x2, y + h -end - -return PDFnative diff --git a/macros/luatex/generic/barracuda/lib/lib-driver/drv-svg.lua b/macros/luatex/generic/barracuda/lib/lib-driver/drv-svg.lua deleted file mode 100644 index 7a2c5ab112..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-driver/drv-svg.lua +++ /dev/null @@ -1,260 +0,0 @@ --- --- ga Intermediate Graphic Language for barcode drawing --- SVG library --- Copyright (C) 2019 Roberto Giacomelli --- --- All dimension in the ga stream are scaled point (sp) --- 1 pt = 65536 sp - --- class for drawing elementary geometric elements -local SVG = { - _VERSION = "SVGdriver v0.0.1", - _NAME = "SVGdriver", - _DESCRIPTION = "A SVG driver for the ga graphic stream", -} - -SVG.ext = "svg" -- file extension -SVG.buf_sep = nil -- separation string for buffer concat - -function SVG.init_buffer(st) --> buffer, text buffer - local bf = { - '\n', - '\n', - '\n', - '\n', - } - -- additions for SVG driver to 'state' - st.ident_lvl = 1 -- identation level - st.char_buf = nil - local mm = st.mm - st.h_char = 2.1 * mm -- char height (mm) - st.w_char = st.h_char / 1.303 -- avg char width (mm) - st.d_char = st.h_char / 3.7 -- char deep (mm) - return bf, {} -end - -function SVG.close_buffer(st, bf, xt) - bf[#bf + 1] = '\n' -- close svg xml element - bf[#bf + 1] = '\n' -- a last empty line - local mm = st.mm - local x1, y1, x2, y2 = st.bb_x1, st.bb_y1, st.bb_x2, st.bb_y2 - local w = (x2 - x1)/mm - local h = (y2 - y1)/mm - local fmt_wh = bf[7] - bf[7] = string.format(fmt_wh, w, h) -- line 7 - local x, y = x1/mm, -y2/mm - local fmt_vw = bf[8] - bf[8] = string.format(fmt_vw, x, y, w, h) -end - --- SVG encoding functions - --- 1 ; set line width -function SVG.append_001(st, bf, xt, w) - -- nothing to do -end - --- draw an horizontal line --- 33 -function SVG.append_033(st, bf, xt, x1, x2, y) - local lvl = st.ident_lvl - local ident = string.rep(" ", lvl) -- a couple of spaces as indentation - local mm = st.mm -- conversion ratio sp -> bp - bf[#bf + 1] = string.format( -- element - '%s\n' -end - --- Vertical line: 34 -function SVG.append_034(st, bf, xt, y1, y2, x) - local lvl = st.ident_lvl - local ident = string.rep(" ", lvl) -- a couple of spaces as indentation - local mm = st.mm -- conversion ratio sp -> mm - bf[#bf + 1] = string.format( -- element - '%s\n' -end - --- Vbar --- draw a group of vertical lines --- 36 ... -function SVG.append_036_start(st, bf, xt, nbar, y1, y2) - local lvl = st.ident_lvl - local ident = string.rep(" ", lvl) - bf[#bf + 1] = ident..'\n' -- open a group - st.ident_lvl = lvl + 1 -end -function SVG.append_036_bar(st, bf, xt, x, w, y1, y2) - local lvl = st.ident_lvl - local ident = string.rep(" ", lvl) - local mm = st.mm -- conversion factor mm -> sp - bf[#bf + 1] = string.format( - '%s\n', - ident, x/mm, -y2/mm, -y1/mm, w/mm - ) -end -function SVG.append_036_stop(st, bf, xt, nbar, y1, y2) - st.ident_lvl = st.ident_lvl - 1 - local ident = string.rep(" ", st.ident_lvl) - bf[#bf + 1] = ident..'\n' -- end group -end - --- Text --- 130 Text with several glyphs --- 130 -function SVG.append_130_char(st, bf, xt, c) - local ch = string.char(c) - if not st.char_buf then - st.char_buf = {ch} - else - local chars = st.char_buf - chars[#chars + 1] = ch - end -end -function SVG.append_130_stop(st, bf, xt, xpos, ypos, ax, ay) --> p1, p2 - local c = st.char_buf - st.char_buf = nil - local txt = table.concat(c) - local w = st.w_char * #c -- approx dim - local h = st.h_char - local d = st.d_char - local anchor = "" - local x1 = xpos - local bx1 = xpos - if ax == 0 then -- start (default) - elseif ax == 0.5 then -- middle - anchor = ' text-anchor="middle"' - bx1 = bx1 - w/2 - elseif ax == 1 then -- end - anchor = ' text-anchor="end"' - bx1 = bx1 - w - else - x1 = x1 - ax*w - bx1 = x1 - end - local y1 = ypos - if ay > 0 then - y1 = y1 - h*ay - else - y1 = y1 - d*ay - end - local fs = st.h_char * 1.37 -- sp - local lvl = st.ident_lvl - local ident = string.rep(" ", lvl) - local mm = st.mm - bf[#bf + 1] = string.format( - '%s\n', - ident, x1/mm, -y1/mm, fs/mm, anchor - ) - bf[#bf + 1] = ident..txt - bf[#bf + 1] = ident..'\n' - return bx1, y1, bx1 + w, y1 + h -end - --- 131 , Text with glyphs equally spaced on its vertical axis --- 131 -function SVG.append_131_char(st, bf, xt, c, xgap) - local ch = string.char(c) - if not st.char_buf then - st.char_buf = {ch} - else - local chars = st.char_buf - chars[#chars + 1] = ch - end -end -function SVG.append_131_stop(st, bf, xt, x1, xgap, ypos, ay) --> p1, p2 - local chars = st.char_buf - st.char_buf = nil - local n = #chars - local h = st.h_char -- height - local d = st.d_char -- deep - local hw = st.w_char/2 -- sp half width - local y1 = ypos - if ay > 0 then - y1 = y1 - h*ay - else - y1 = y1 - d*ay - end - local lvl = st.ident_lvl - local ident = string.rep(" ", lvl) - local fs = st.h_char * 1.37 -- (sp) font-size -> inter baselines distance - local mm = st.mm - bf[#bf + 1] = string.format( - '%s\n', - ident, -y1/mm, fs/mm - ) - local x = x1 - for _, c in ipairs(chars) do - bf[#bf + 1] = string.format('%s%s\n', - ident, x/mm, c - ) - x = x + xgap - end - bf[#bf + 1] = ident..'\n' - local x2 = x1 + (n - 1)*xgap -- sp - return x1 - hw, y1, x2 + hw, y1 + h -- text group bounding box -end - --- 132 Glyphs equally spaced on vertical axis between two x coordinates --- 132 -function SVG.append_132_char(st, bf, xt, c, xgap) - local ch = string.char(c) - if not st.char_buf then - st.char_buf = {ch} - else - local chars = st.char_buf - chars[#chars + 1] = ch - end -end -function SVG.append_132_stop(st, bf, xt, x1, x2, ypos, ay) --> p1, p2 - local chars = st.char_buf; st.char_buf = nil - local n = #chars - local h = st.h_char -- height (approx) - local d = st.d_char -- deep (approx) - local cw = st.w_char -- (sp) char width (approx) - local xgap = (x2 - x1 - cw)/(n - 1) - local y1 = ypos - if ay > 0 then - y1 = y1 - h*ay - else - y1 = y1 - d*ay - end - local lvl = st.ident_lvl - local ident = string.rep(" ", lvl) - local fs = st.h_char * 1.37 -- font-size -> inter baselines distance - local mm = st.mm - bf[#bf + 1] = string.format( - '%s\n', - ident, -y1/mm, fs/mm - ) - local x = x1 + cw/2 - for _, c in ipairs(chars) do - bf[#bf + 1] = string.format('%s%s\n', - ident, x/mm, c - ) - x = x + xgap - end - bf[#bf + 1] = ident..'\n' - return x1, y1, x2, y1 + h -- text group bounding box -end - -return SVG diff --git a/macros/luatex/generic/barracuda/lib/lib-geo/gacanvas.lua b/macros/luatex/generic/barracuda/lib/lib-geo/gacanvas.lua deleted file mode 100644 index cccc68f447..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-geo/gacanvas.lua +++ /dev/null @@ -1,340 +0,0 @@ --- class gaCanvas --- Copyright (C) 2019 Roberto Giacomelli - --- ga -- basic function - -local gaCanvas = { - _VERSION = "gacanvas v0.0.4", - _NAME = "gaCanvas", - _DESCRIPTION = "A library for dealing with ga stream", -} -gaCanvas.__index = gaCanvas - --- ga specification: see the file ga-grammar.pdf in the doc directory - --- gaCanvas constructor -function gaCanvas:new() --> object - local o = { - _data = {}, - _v = 100, -- version of the ga format - } - setmetatable(o, self) - return o -end - --- Ipothetical another constructor --- function gaCanvas:from_tcp_server() --> err --- end - --- line width: opcode <1> -function gaCanvas:encode_linethick(w) --> err - if type(w) ~= "number" then return "[ArgErr] 'w' number expected" end - if w < 0 then return "[ArgErr] negative value for 'w'" end - local data = self._data - data[#data + 1] = 1 -- opcode for line thickness - data[#data + 1] = w -end - --- line cap style: opcode <2> --- 0 Butt cap --- 1 Round cap --- 2 Projecting square cap -function gaCanvas:encode_linecap(cap) --> err - if type(cap) ~= "number" then return "[ArgErr] 'cap' arg number expected" end - if cap == 0 or cap == 1 or cap == 2 then - local data = self._data - data[#data + 1] = 2 -- opcode for line cap style - data[#data + 1] = cap - else - return "[ArgErr] invalid value for 'cap'" - end -end - --- line cap style: opcode <3> --- 0 Miter join --- 1 Round join --- 2 Bevel join -function gaCanvas:encode_linejoin(join) --> err - if type(join) ~= "number" then return "[ArgErr] 'join' arg number expected" end - if join == 0 or join == 1 or join == 2 then - local data = self._data - data[#data + 1] = 3 -- opcode for line join style - data[#data + 1] = join - else - return "[ArgErr] invalid value for 'join'" - end -end - --- Stop checking the bounding box --- opcode: <30> -function gaCanvas:start_bbox_group() --> err - local data = self._data - data[#data + 1] = 30 -end - --- restart checking the bounding box --- and insert the specified bb for the entire object group --- code: <31> x1 y1 x2 y2 -function gaCanvas:stop_bbox_group(x1, y1, x2, y2) --> err - if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end - if type(y1) ~= "number" then return "[ArgErr] 'y1' number expected" end - if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end - if type(y2) ~= "number" then return "[ArgErr] 'y2' number expected" end - if x1 > x2 then x1, x2 = x2, x1 end -- reorder coordinates - if y1 > y2 then y1, y2 = y2, y1 end - local data = self._data - data[#data + 1] = 31 -- bounding box of the object group - data[#data + 1] = x1 - data[#data + 1] = y1 - data[#data + 1] = x2 - data[#data + 1] = y2 -end - --- insert a line from point (x1, y1) to the point (x2, y2) --- <32> x1 y1 x2 y2 -function gaCanvas:encode_line(x1, y1, x2, y2) --> err - if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end - if type(y1) ~= "number" then return "[ArgErr] 'y1' number expected" end - if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end - if type(y2) ~= "number" then return "[ArgErr] 'y2' number expected" end - local data = self._data - data[#data + 1] = 32 -- append line data - data[#data + 1] = x1 - data[#data + 1] = y1 - data[#data + 1] = x2 - data[#data + 1] = y2 -end - --- insert an horizontal line from point (x1, y) to point (x2, y) --- <33> x1 x2 y -function gaCanvas:encode_hline(x1, x2, y) --> err - if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end - if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end - if type(y) ~= "number" then return "[ArgErr] 'y2' number expected" end - local data = self._data - data[#data + 1] = 33 -- append hline data - data[#data + 1] = x1 - data[#data + 1] = x2 - data[#data + 1] = y -end - --- insert a rectangle from point (x1, x2) to (x2, y2) --- <48> -function gaCanvas:encode_rectangle(x1, y1, x2, y2) --> err - if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end - if type(y1) ~= "number" then return "[ArgErr] 'y1' number expected" end - if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end - if type(y2) ~= "number" then return "[ArgErr] 'y2' number expected" end - local d = self._data - d[#d + 1] = 48 -- append rectangle data - d[#d + 1] = x1 - d[#d + 1] = y1 - d[#d + 1] = x2 - d[#d + 1] = y2 -end - --- Vbar object: opcode <36> --- x0, y1, y2 ordinates -function gaCanvas:encode_Vbar(vbar, x0, y1, y2) --> err - if type(vbar) ~= "table" then - return "[ArgErr] table expected for 'vbar'" - end - if x0 == nil then - x0 = 0 - elseif type(x0) ~= "number" then - return "[ArgErr] 'x0' number expected" - end - if type(y1) ~= "number" then return "[ArgErr] 'y1' number expected" end - if type(y2) ~= "number" then return "[ArgErr] 'y2' number expected" end - -- ordinates - if y1 == y2 then return "[ArgErr] 'y1' 'y2' are the same value" end - if y1 > y2 then y1, y2 = y2, y1 end - local bars = assert(vbar._yline, "[InternalErr] no '_yline' field") - local bdim = #bars - if bdim == 0 then return "[InternalErr] number of bars is zero" end - if bdim % 2 ~= 0 then - return "[InternalErr] '_yline' does not have an even number of elements" - end - local data = self._data - data[#data + 1] = 36 -- vbar sequence start - data[#data + 1] = y1 - data[#data + 1] = y2 - data[#data + 1] = bdim / 2 -- the number of bars - for i = 1, bdim, 2 do - local coord = bars[i] - local width = bars[i + 1] - if type(coord) ~= "number" then - return "[Err] a coordinates is not a number" - end - if type(width) ~= "number" then - return "[Err] a width is not a number" - end - data[#data + 1] = coord + x0 - data[#data + 1] = width - end -end - --- [text] <130> ax ay x y chars -function gaCanvas:encode_Text(txt, xpos, ypos, ax, ay) --> err - if type(txt) ~= "table" then - return "[ArgErr] 'txt' object table expected" - end - if type(xpos) ~= "number" then - return "[ArgErr] 'xpos' number expected" - end - if type(ypos) ~= "number" then - return "[ArgErr] 'ypos' number expected" - end - if ax == nil then - ax = 0 - elseif type(ax) ~= "number" then - return "[ArgErr] 'ax' number expected" - end - if ay == nil then - ay = 0 - elseif type(ay) ~= "number" then - return "[ArgErr] 'ay' number expected" - end - local data = self._data - data[#data + 1] = 130 - data[#data + 1] = ax -- relative anchor x-coordinate - data[#data + 1] = ay -- relative anchor y-coordinate - data[#data + 1] = xpos -- text x-coordinate - data[#data + 1] = ypos -- text y-coordinate - local chars = assert(txt.codepoint, "[InternalErr] no 'codepoint' field in txt") - if #chars == 0 then return "[InternalErr] 'txt' has no chars" end - for _, c in ipairs(chars) do - data[#data + 1] = c - end - data[#data + 1] = 0 -- end string signal -end - --- glyphs equally spaced along the baseline --- [text_xspaced] <131> x1 xgap ay ypos chars -function gaCanvas:encode_Text_xspaced(txt, x1, xgap, ypos, ay) --> err - if type(txt)~= "table" then return "[ArgErr] 'txt' object table expected" end - local chars = assert(txt.codepoint, "[InternalErr] no 'codepoint' field in txt") - if #chars == 0 then return "[InternalErr] 'txt' has no chars" end - if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end - if type(xgap) ~= "number" then return "[ArgErr] 'xgap' number expected" end - if xgap < 0 then - local n = #chars - x1 = x1 + (n - 1) * xgap - xgap = -xgap - end - if type(ypos) ~= "number" then return "[ArgErr] 'ypos' number expected" end - if ay == nil then - ay = 0 - elseif type(ay) ~= "number" then - return "[ArgErr] 'ay' number expected" - end - local data = self._data - data[#data + 1] = 131 - data[#data + 1] = x1 -- x-coordinate of the first axis from left to right - data[#data + 1] = xgap -- axial distance among gliphs - data[#data + 1] = ay -- anchor relative y-coordinate - data[#data + 1] = ypos -- text y-coordinate - for _, c in ipairs(chars) do - data[#data + 1] = c - end - data[#data + 1] = 0 -- end string signal -end - --- text_xwidth --- text equally spaced but within [x1, x2] coordinate interval --- <132> -function gaCanvas:encode_Text_xwidth(txt, x1, x2, ypos, ay) --> err - if type(txt)~= "table" then return "[ArgErr] 'txt' object table expected" end - if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end - if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end - if type(ypos) ~= "number" then return "[ArgErr] 'ypos' number expected" end - if ay == nil then - ay = 0 - elseif type(ay) ~= "number" then - return "[ArgErr] 'ay' number expected" - end - local chars = assert(txt.codepoint, "[InternalErr] no 'codepoint' field in txt") - if #chars == 0 then return "[InternalErr] 'txt' has no chars" end - if x1 > x2 then x1, x2 = x2, x1 end -- reorder coordinates - local data = self._data - data[#data + 1] = 132 - data[#data + 1] = ay -- anchor relative y-coordinate - data[#data + 1] = x1 -- left limit of the text box - data[#data + 1] = x2 -- right limit of the text box - data[#data + 1] = ypos -- text y-coordinate - for _, c in ipairs(chars) do - data[#data + 1] = c - end - data[#data + 1] = 0 -- end string signal -end - --- experimental code section --- new opcodes under assessment - --- [start_text_group] 140 -function gaCanvas:start_text_group() --> err - local data = self._data - data[#data + 1] = 140 -end - --- [gtext] 141 -function gaCanvas:gtext(chars) --> err - if type(chars) ~= "table" then return "[ArgErr] 'chars' table expected" end - local data = self._data - data[#data + 1] = 141 - for _, c in ipairs(chars) do - data[#data + 1] = c - end - data[#data + 1] = 0 -- end string signal -end - --- [gtext_spaced] 142 gap string -function gaCanvas:gtext_spaced(gap, chars) --> err - if type(gap) ~= "number" then return "[ArgErr] 'gap' number expected" end - if type(chars) ~= "table" then return "[ArgErr] 'chars' table expected" end - local data = self._data - data[#data + 1] = 142 - data[#data + 1] = gap - for _, c in ipairs(chars) do - data[#data + 1] = c - end - data[#data + 1] = 0 -- end string signal -end - --- [gtext_space] 143 gap -function gaCanvas:gtext_gap(gap) --> err - if type(gap) ~= "number" then return "[ArgErr] 'gap' number expected" end - local data = self._data - data[#data + 1] = 143 - data[#data + 1] = gap -end - - --- [end_text_group] 149 ax ay x y -function gaCanvas:end_text_group(xpos, ypos, ax, ay) --> err - if type(xpos) ~= "number" then return "[ArgErr] 'xpos' number expected" end - if type(ypos) ~= "number" then return "[ArgErr] 'ypos' number expected" end - if type(ax) ~= "number" then return "[ArgErr] 'ax' number expected" end - if type(ay) ~= "number" then return "[ArgErr] 'ay' number expected" end - local data = self._data - data[#data + 1] = 149 - data[#data + 1] = ax -- anchor relative x-coordinate - data[#data + 1] = ay -- anchor relative y-coordinate - data[#data + 1] = xpos -- text x-coordinate - data[#data + 1] = ypos -- text y-coordinate -end - --- amazing... -function gaCanvas:to_string() --> string - -end - -function gaCanvas:get_bbox() - -end - -function gaCanvas:check() --> boolean, err - -end - -return gaCanvas diff --git a/macros/luatex/generic/barracuda/lib/lib-geo/libgeo.lua b/macros/luatex/generic/barracuda/lib/lib-geo/libgeo.lua deleted file mode 100644 index fd53ca6509..0000000000 --- a/macros/luatex/generic/barracuda/lib/lib-geo/libgeo.lua +++ /dev/null @@ -1,289 +0,0 @@ - --- libgeo simple Geometric Library --- Copyright (C) 2018 Roberto Giacomelli - --- All dimension must be in scaled point (sp) - -local libgeo = { - _VERSION = "libgeo v0.0.3", - _NAME = "libgeo", - _DESCRIPTION = "simple geometric library", -} - --- VBar class --- a pure geometric entity of several infinite vertical lines -libgeo.Vbar = {} -local Vbar = libgeo.Vbar -Vbar.__index = Vbar - --- Vbar costructors - --- VBar costructor from an array [xcenter1, width1, xcenter2, width2, ...] -function Vbar:from_array(yl_arr) --> - assert(type(yl_arr) == "table", "'yline_array' is a mandatory arg") - -- stream scanning - local i = 1 - local xlim = 0.0 - while yl_arr[i] do - local x = yl_arr[i]; i = i + 1 - local w = yl_arr[i]; i = i + 1 - assert(type(x) == "number", "[InternalErr] not a number") - assert(type(w) == "number", "[InternalErr] not a number") - xlim = x + w/2 - end - assert(i % 2 == 0, "[InternalErr] the index is not even") - assert(i > 0, "[InternalErr] empty array") - local o = { - _yline = yl_arr, -- [, , ...] flat array - _x_lim = xlim, -- right external bounding box coordinates - } - setmetatable(o, self) - return o -end - --- costructor useful for Code128 encoder --- from an integer: 21231 -> binary 11 0 11 000 1 -> symbol 110110001 --- is_bar :: boolean :: bar or space as first element, default true -function Vbar:from_int(ngen, mod, is_bar) --> - assert(type(ngen) == "number", "Invalid argument for n") - assert(type(mod) == "number", "Invalid argument for module width") - if is_bar == nil then is_bar = true else - assert(type(is_bar) == "boolean", "Invalid argument for is_bar") - end - -- scan ngen for digits - local digits = {} - while ngen > 0 do - local d = ngen % 10 - digits[#digits + 1] = d - ngen = (ngen - d)/10 - end - local x0 = 0.0 -- axis reference - local yl = {} - for k = #digits, 1, -1 do - local d = digits[k] - local w = d*mod -- bar width - if is_bar then -- bar - yl[#yl + 1] = x0 + w/2 - yl[#yl + 1] = w - end - x0 = x0 + w - is_bar = not is_bar - end - local o = { - _yline = yl, -- [, , ...] flat array - _x_lim = x0, -- right external coordinate - } - setmetatable(o, self) - return o -end - --- from an integer to read from right to left --- 13212 ->rev 21231 ->binary 11 0 11 000 1 -> symbol 110110001 --- is_bar :: boolean :: bar or space for first, default true -function Vbar:from_int_revstep(ngen, mod, is_bar) --> - assert(type(ngen) == "number", "Invalid argument for n") - assert(type(mod) == "number", "Invalid argument for module width") - if is_bar == nil then is_bar = true else - assert(type(is_bar) == "boolean", "Invalid argument for is_bar") - end - -- - local x0 = 0.0 -- axis reference - local i = 0 - local yl = {} - while ngen > 0 do - local d = ngen % 10 -- first digit - local w = d*mod -- bar width - if is_bar then -- bar - i = i + 1; yl[i] = x0 + w/2 - i = i + 1; yl[i] = w - end - x0 = x0 + w - is_bar = not is_bar - ngen = (ngen - d)/10 - end - assert(not is_bar, "[InternalErr] the last element in not a bar") - local o = { - _yline = yl, -- [, , ...] flat array - _x_lim = x0, -- right external coordinate - } - setmetatable(o, self) - return o -end - --- costructor useful for Code39 encoder --- i.e. 11212 -> rev -> 2 1 2 1 1 -> decodes to -> B w B w b --- build a yline array from the integer definition. Digit decoding rule: --- mod: b or w => 1 -- narrow bar/space --- MOD: B or W => 2 -- wide bar/space --- is_bar: the first element is a bar not a space, default to true -function Vbar:from_int_revpair(ngen, mod, MOD, is_bar) --> - assert(type(ngen) == "number", "Invalid argument for n") - assert(type(mod) == "number", "Invalid argument for narrow module width") - assert(type(MOD) == "number", "Invalid argument for wide module width") - assert(mod < MOD, "Not ordered narrow/Wide values") - if is_bar == nil then - is_bar = true - else - assert(type(is_bar) == "boolean", "Invalid argument for 'is_bar'") - end - local yl = {} - local x0 = 0.0 - local k = 0 - while ngen > 0 do - local d = ngen % 10 -- digit - ngen = (ngen - d)/10 - local w; if d == 1 then - w = mod - elseif d == 2 then - w = MOD - end; assert(w, "[InternalErr] Allowed digits are only 1 or 2") - if is_bar then -- bars - k = k + 1; yl[k] = x0 + w/2 -- xcenter - k = k + 1; yl[k] = w -- width - end - is_bar = not is_bar - x0 = x0 + w - end - assert(not is_bar, "[InternalErr] the last element is not a bar") - local o = { - _yline = yl, -- [, , ...] flat array - _x_lim = x0, -- external x coordinate - } - setmetatable(o, self) - return o -end - --- return a Vbar inteleaving to sequence narrow/Wide --- tbar, tspace = {boolean sequence}, true -> narrow, false -> Wide -function Vbar:from_two_tab(tbar, tspace, mod, MOD) --> - assert(type(tbar) == "table", "tbar must be a table") - assert(type(tspace) == "table", "tspace must be a table") - assert(#tbar == #tspace, "tbar and tspace must be longer the same") - assert(type(mod) == "number", "Invalid argument for narrow module width") - assert(type(MOD) == "number", "Invalid argument for wide module width") - assert(mod < MOD, "Not ordered narrow/Wide values") - local x0 = 0.0 -- x-coordinate - local yl = {} - for i = 1, #tbar do - local is_narrow = tbar[i] - assert(type(is_narrow) == "boolean", "[InternalErr] found a not boolean value") - if is_narrow then - yl[#yl + 1] = x0 + mod/2 -- bar x-coordinate - yl[#yl + 1] = mod -- bar width - x0 = x0 + mod - else - yl[#yl + 1] = x0 + MOD/2 -- bar x-coordinate - yl[#yl + 1] = MOD -- bar width - x0 = x0 + MOD - end - local is_narrow_space = tspace[i] - assert(type(is_narrow_space) == "boolean", "[InternalErr] found a not boolean value") - if is_narrow_space then - x0 = x0 + mod - else - x0 = x0 + MOD - end - end - local o = { - _yline = yl, -- [, , ...] flat array - _x_lim = x0, -- external x coordinate - } - setmetatable(o, self) - return o -end - --- Text class - -libgeo.Text = {} -local Text = libgeo.Text -Text.__index = Text - --- costructors --- internally it keeps text as a sequence of codepoint -function Text:from_string(s) --> object - assert(type(s) == "string", "[ArgErr] 's' not a valid string") - assert(#s > 0, "[Err] 's' empty string not allowed") - - local cp = {} -- codepoint array - for b in string.gmatch(s, ".") do - cp[#cp + 1] = string.byte(b) - end - local o = { - codepoint = cp, - } - setmetatable(o, self) - return o -end - --- arr, array of single digit number --- i start index --- j stop index -function Text:from_digit_array(arr, i, j) --> object - assert(type(arr) == "table", "[ArgErr] 'arr' not a table") - assert(#arr > 0, "[ArgErr] 'arr' is an empty array") - local cp = {} -- codepoint array - if i ~= nil then - assert(type(i) == "number", "[ArgErr] 'i' is not a number") - else - i = 1 - end - if j ~= nil then - assert(type(j) == "number", "[ArgErr] 'j' is not a number") - assert(i <= j, "[ArgErr] not suitable pair of array index") - else - j = #arr - end - for k = i, j do - local d = arr[k] - assert(type(d) == "number", "[ArgErr] array contains a not number element") - assert(d == math.floor(d), "[ArgErr] array contains a not integer number") - assert(d >= 0 or d < 10, "[ArgErr] array contains a not single digit number") - cp[#cp + 1] = d + 48 - end - local o = { - codepoint = cp, - } - setmetatable(o, self) - return o -end - - --- from an array of chars -function Text:from_chars(chars) --> object - assert(type(chars) == "table", "[ArgErr] 'chars' must be a table") - local arr = {} - for _, c in ipairs(chars) do - arr[#arr + 1] = string.byte(c) - end - local o = { - codepoint = arr, - } - setmetatable(o, self) - return o -end - --- provide an integer to build a Text object -function Text:from_int(n) --> object - assert(type(n) == "number", "[ArgErr] 'n' must be a number") - assert( n > 0, "[Err] 'n' must be positive") - assert( n == math.floor(n), "[Err] 'n' must be an integer") - local cp = {} - while n > 0 do - local d = n % 10 - cp[#cp + 1] = d + 48 - n = (n - d)/10 - end - local digits = #cp - for i = 1, digits/2 do -- reverse the array - local d = cp[digits - i + 1] - cp[digits - i + 1] = cp[i] - cp[i] = d - end - local o = { - codepoint = cp, - } - setmetatable(o, self) - return o -end - -return libgeo diff --git a/macros/luatex/generic/barracuda/src/barracuda.lua b/macros/luatex/generic/barracuda/src/barracuda.lua new file mode 100644 index 0000000000..4d587ef952 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/barracuda.lua @@ -0,0 +1,116 @@ +-- Welcome to the 'barracuda' barcode library +-- +-- Encode a message into a barcode symbol, in Lua or within a LuaTeX source file +-- +-- Copyright (C) 2019 Roberto Giacomelli +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 2 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program; if not, write to the Free Software +-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +-- Basic Conventions: +-- fields that start with an undercore are private +-- class name follows the snake case naming convention +-- the 'barracuda' table is the only global object to access every package +-- modules. + +local Barracuda = { + _VERSION = "barracuda v0.0.9.1", + _NAME = "barracuda", + _DESCRIPTION = "Lua library for barcode printing", + _URL = "https://github.com/robitex/barracuda", + _LICENSE = "GNU GENERAL PUBLIC LICENSE, Version 2, June 1991", +} + +-- essential sub-module loading +Barracuda._libgeo = require "lib-geo.brcd-libgeo" -- basic vectorial objects +Barracuda._gacanvas = require "lib-geo.brcd-gacanvas" -- ga stream library +Barracuda._barcode = require "lib-barcode.brcd-barcode" -- barcode abstract class + +local Barcode = Barracuda._barcode +Barcode._libgeo = Barracuda._libgeo + +-- encoder builder +function Barracuda:get_barcode_class() --> Barcode class object + return self._barcode +end + +-- where we place output driver library +function Barracuda:get_driver() --> Driver object, err + if not self._lib_driver then + self._lib_driver = require "lib-driver.brcd-driver" + end + return self._lib_driver +end + +function Barracuda:new_canvas() --> driver + local gacanvas = self._gacanvas + return gacanvas:new() +end + +-- high level barcode functions +-- only default options +-- panic on error + +-- save barcode as a graphic external file +function Barracuda:save(bc_type, data, filename, id_drv) + local barcode = self:get_barcode_class() + local enc, err = barcode:new_encoder(bc_type) + assert(enc, err) + local arg_data = type(data) + local symb + if arg_data == "number" then + local err_data + symb, err_data = enc:from_uint(data) + asser(symb, err_data) + elseif arg_data == "string" then + local err_data + symb, err_data = enc:from_string(data) + assert(symb, err_data) + else + error("[argErr] unsupported 'data' type") + end + local canvas = self:new_canvas() + symb:append_ga(canvas) + local driver = self:get_driver() + id_drv = id_drv or "svg" + local ok, out_err = driver:save(id_drv, canvas, filename) + assert(ok, out_err) +end + +-- this is a only LuaTeX method +function Barracuda:hbox(bc_type, data, box_name) + local barcode = self:get_barcode_class() + local enc, err = barcode:new_encoder(bc_type) + assert(enc, err) + local arg_data = type(data) + local symb + if arg_data == "number" then + local err_data + symb, err_data = enc:from_uint(data) + asser(symb, err_data) + elseif arg_data == "string" then + local err_data + symb, err_data = enc:from_string(data) + assert(symb, err_data) + else + error("[argErr] unsupported 'data' type") + end + local canvas = self:new_canvas() + symb:append_ga(canvas) + local driver = self:get_driver() + local ok, err_hbox = driver:ga_to_hbox(canvas, box_name) + assert(ok, err_hbox) +end + +return Barracuda diff --git a/macros/luatex/generic/barracuda/src/lib-barcode/brcd-barcode.lua b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-barcode.lua new file mode 100644 index 0000000000..415719a2f4 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-barcode.lua @@ -0,0 +1,544 @@ + +-- Barcode abstract class +-- Copyright (C) 2019 Roberto Giacomelli +-- Please see LICENSE.TXT for any legal information about present software + +local Barcode = { + _VERSION = "Barcode v0.0.9", + _NAME = "Barcode", + _DESCRIPTION = "Barcode abstract class", +} +Barcode.__index = Barcode + +-- barcode_type/submodule name +Barcode._available_enc = {-- keys must be lowercase + code39 = "lib-barcode.brcd-code39", -- Code 39 + code128 = "lib-barcode.brcd-code128", -- Code128 + ean = "lib-barcode.brcd-ean", -- EAN family (ISBN, EAN8, etc) + i2of5 = "lib-barcode.brcd-i2of5", -- Interleaved 2 of 5 +} +Barcode._builder_instances = {} -- encoder builder instances repository + +-- common parameters to all the barcode objects +Barcode._super_par_def = {} +local pardef = Barcode._super_par_def + +-- set an Anchor point (ax, ay) relatively to the barcode bounding box +-- without considering any text object +-- ax = 0, ay = 0 is the lower left corner of the symbol +-- ax = 1, ay = 1 is the upper right corner of the symbol +Barcode.ax = 0.0 +pardef.ax = { + default = 0.0, + unit = "sp", -- scaled point + isReserved = false, + order = 1, + fncheck = function (self, ax, _) --> boolean, err + if ax >= 0.0 and ax <= 1.0 then return true, nil end + return false, "[OutOfRange] 'ax' out of [0, 1] interval" + end, +} +Barcode.ay = 0.0 +pardef.ay = { + default = 0.0, + unit = "sp", -- scaled point + isReserved = false, + order = 2, + fncheck = function (self, ay, _) --> boolean, err + if ay >= 0.0 and ay <= 1.0 then return true, nil end + return false, "[OutOfRange] 'ay' out of [0, 1] interval" + end, +} + +-- Barcode.bbox_to_quietzone -- under assessment + +-- Barcode methods + +-- stateless iterator troughtout the ordered parameters collection +local function p_iter(state, i) + i = i + 1 + local t = state[i] + if t then + return i, t + end +end + +-- main iterator on parameter definitions +function Barcode:param_ord_iter() + local state = {} + -- append family parameter + local p2_family = self._par_def -- base family parameters + local fam_len = 0 + if p2_family then + for pname, pdef in pairs(p2_family) do + state[pdef.order] = { + pname = pname, + pdef = pdef, + isSuper = false, + } + fam_len = fam_len + 1 + end + assert(fam_len == #state) + end + -- append the variant parameters + local var_len = 0 + local var = self._variant + if var then -- specific variant parameters + local p2_variant = assert(self._par_def_variant[var]) + for pname, pdef in pairs(p2_variant) do + if state[pname] then + error("[InternalErr] overriding paramenter '"..pname.."'") + end + state[pdef.order + fam_len] = { + pname = pname, + pdef = pdef, + isSuper = false, + } + var_len = var_len + 1 + end + assert(fam_len + var_len == #state) + end + -- append the super class parameter to the iterator state + local p1 = self._super_par_def + local super_len = 0 + for pname, pdef in pairs(p1) do + if state[pname] then + error("[InternalError] overriding paramenter name '"..pname.."'") + end + state[fam_len + var_len + pdef.order] = { + pname = pname, + pdef = pdef, + isSuper = true, + } + super_len = super_len + 1 + end + assert(super_len + fam_len + var_len == #state) + return p_iter, state, 0 +end + +-- encoder costructor +-- Symbology can be a family with many variants. This is represented by the +-- first argument 'bc_type' formatted as -. +-- in more details: +-- if there are variants +-- if not +-- i.e. when 'bc_type' is the string "ean-13", "ean" is the barcode family and +-- "13" is its variant name. +-- For whose barcodes that do not have variants, 'bc_type' is simply the endoder id +-- such as "code128". +-- 'id_enc' is an optional identifier useful to retrive an encoder reference later +-- 'opt' is an optional table with the user-defined parameters setting up encoders +-- +function Barcode:new_encoder(bc_type, id_enc, opt) --> object, err + -- argument checking + if type(bc_type) ~= "string" then + return nil, "[ArgErr] 'bc_type' is not a string" + end + local pdash = string.find(bc_type, "-") + local family, variant + if pdash then + family = string.sub(bc_type, 1, pdash - 1) + variant = string.sub(bc_type, pdash + 1) + else + family = bc_type + end + local av_enc = self._available_enc + if not av_enc[family] then -- is the barcode type a real module? + return nil, "[Err] barcode type '"..family.."' not found" + end + if id_enc == nil then + id_enc = (variant or "") .. "_noname" + elseif type(id_enc) ~= "string" then + return nil, "[ArgErr] provided 'id_enc' is not a string" + end + if type(opt) == "table" or opt == nil then + opt = opt or {} + else + return nil, "[ArgErr] provided 'opt' is wrong" + end + local tenc = self._builder_instances + local builder; + if tenc[family] then -- is the encoder builder already loaded? + builder = tenc[family] + else -- loading the encoder builder + local mod_path = av_enc[family] + builder = require(mod_path) + tenc[family] = assert(builder, "[InternalErr] module not found!") + builder._enc_instances = {} + end + if builder._enc_instances[id_enc] then + return nil, "[Err] 'id_enc' already present" + end + local enc = {} -- the new encoder + enc.__index = enc + enc._variant = variant + setmetatable(enc, { + __index = function(_, k) + if builder[k] ~= nil then + return builder[k] + end + return self[k] + end + }) + builder._enc_instances[id_enc] = enc + -- param defition + for _, tpar in enc:param_ord_iter() do + local pname = tpar.pname + local pdef = tpar.pdef + local isSuper = tpar.isSuper + local val = opt[pname] -- param = val + if val ~= nil then + local ok, err = pdef:fncheck(val, enc) + if ok then + enc[pname] = val + else -- error! + return nil, err + end + else + -- load the default value of + local def_val; if pdef.fndefault then + def_val = pdef:fndefault(enc) + else + def_val = pdef.default + end + if not isSuper then + enc[pname] = def_val + end + end + end + if enc.config then -- this must be called after the parameter definition + enc:config(variant) + end + return enc, nil +end + +-- retrive encoder object already created +-- 'name' is optional in case you didn't assign one to the encoder +function Barcode:enc_by_name(bc_type, name) --> , + if type(bc_type) ~= "string" then + return nil, "[ArgErr] 'bc_type' must be a string" + end + local pdash = string.find(bc_type, "-") + local family, variant + if pdash then + family = string.sub(bc_type, 1, pdash - 1) + variant = string.sub(bc_type, pdash + 1) + else + family = bc_type + end + local av_enc = self._available_enc + if not av_enc[family] then -- is the barcode type a real module? + return nil, "[Err] barcode type '"..family.."' not found" + end + local builder = self._builder_instances[family] + if builder == nil then + return nil, "[Err] enc builder '"..family.."' not loaded, use 'new_encoder()' method" + end + if name == nil then + name = (variant or "") .. "_noname" + elseif type(name) ~= "string" then + return nil, "[ArgErr] 'name' must be a string" + end + local repo = builder._enc_instances + local enc = repo[name] + if enc == nil then + return nil, "[Err] encoder '"..name.."' not found" + else + return enc, nil + end +end + +-- base constructors common to all the encoders +-- for numeric only simbology +function Barcode:_check_char(c) --> elem, err + if type(c) ~= "string" or #c ~= 1 then + return nil, "[InternalErr] invalid char" + end + local n = string.byte(c) - 48 + if n < 0 or n > 9 then + return nil, "[ArgErr] found a not digit char" + end + return n, nil +end +function Barcode:_check_digit(n) --> elem, err + if type(n) ~= "number" then + return nil, "[InternalErr] not a number" + end + if n < 0 or n > 9 then + return nil, "[InternalErr] not a digit" + end + return n, nil +end + +-- not empty string --> Barcode object +function Barcode:from_string(symb, opt) --> object, err + assert(self._check_char, "[InternalErr] undefined _check_char() method") + if type(symb) ~= "string" then + return nil, "[ArgErr] 'symb' is not a string" + end + if #symb == 0 then + return nil, "[ArgErr] 'symb' is an empty string" + end + local chars = {} + local len = 0 + for c in string.gmatch(symb, ".") do + local elem, err = self:_check_char(c) + if err then + return nil, err + else + chars[#chars+1] = elem + len = len + 1 + end + end + -- build the barcode object + local o = { + _code_data = chars, -- array of chars + _code_len = len, -- symbol lenght + } + setmetatable(o, self) + if opt ~= nil then + if type(opt) ~= "table" then + return nil, "[ArgErr] 'opt' is not a table" + else + local ok, err = o:set_param(opt) + if not ok then + return nil, err + end + end + end + if o._finalize then + local ok, e = o:_finalize() + if not ok then return nil, e end + end + return o, nil +end + +-- positive integer --> Barcode object +function Barcode:from_uint(n, opt) --> object, err + assert(self._check_digit, "[InternalErr] undefined _check_digit() method") + if type(n) ~= "number" then return nil, "[ArgErr] 'n' is not a number" end + if n < 0 then return nil, "[ArgErr] 'n' must be a positive integer" end + if n - math.floor(n) ~= 0 then + return nil, "[ArgErr] 'n' is not an integer" + end + if opt ~= nil and type(opt) ~= "table" then + return nil, "[ArgErr] 'opt' is not a table" + end + local digits = {} + local i = 0 + if n == 0 then + local elem, err = self:_check_digit(0) + if err then + return nil, err + end + digits[1] = elem + i = 1 + else + while n > 0 do + local d = n % 10 + i = i + 1 + local elem, err = self:_check_digit(d) + if err then + return nil, err + end + digits[i] = elem + n = (n - d) / 10 + end + for k = 1, i/2 do -- reverse the array + local d = digits[k] + local h = i - k + 1 + digits[k] = digits[h] + digits[h] = d + end + end + -- build the barcode object + local o = { + _code_data = digits, -- array of digits + _code_len = i, -- symbol lenght + } + setmetatable(o, self) + if opt ~= nil then + if type(opt) ~= "table" then + return nil, "[ArgErr] 'opt' is not a table" + else + local ok, err = o:set_param(opt) + if not ok then + return nil, err + end + end + end + if o._finalize then + local ok, e = o:_finalize() + if not ok then return nil, e end + end + return o, nil +end + +-- check a parameter set +-- this method check also reserved parameter +-- argments: {k=v, ...}, "default" | "current" +-- if ref is "default" parameters are checked with default values +-- if ref is "current" parameters are checked with current values +function Barcode:check_param(opt, ref) --> boolean, check report + if type(opt) ~= "table" then + return nil, "[ArgErr] opt is not a table" + end + if ref == nil then + ref = "current" + else + if type(ref) ~= "string" then + return nil, "[ArgErr] ref is not a string" + end + if (ref ~= "current") or (ref ~= "default") then + return nil, "[ArgErr] ref can only be 'default' or 'current'" + end + end + -- checking process + local cktab = {} + local isOk = true + local err_rpt -- nil if no error + for _, tpar in self:param_ord_iter() do + local pname = tpar.pname + local pdef = tpar.pdef + -- load the default value of + local def_val; if pdef.fndefault then + def_val = pdef:fndefault(cktab) + else + def_val = pdef.default + end + local val = opt[pname] + if val ~= nil then + local ok, err = pdef:fncheck(val, cktab) + if ok then + cktab[pname] = val + else -- error! + isOk = false + if err_rpt == nil then err_rpt = {} end + err_rpt[#err_rpt + 1] = { + param = pname, + checked_val = val, + default_val = def_val, + isOk = ok, + err = err, + } + end + end + local v + if ref == "current" then + v = self[pname] + else + v = def_val + end + cktab[pname] = v + end + return isOk, err_rpt +end + +-- restore to the default values all the parameter +-- (reserved parameters are unmodified so no need to restore it) +-- this need further investigation about the conseguence of a restore +-- that reset the parameter but "locally" +-- so this method must be considered experimental +function Barcode:restore_param() --> self :FIXME: + for _, par in ipairs(self._par_id) do + local pdef = self[par.."_def"] + if not pdef.isReserved then + self[par] = pdef.default + end + end + return self +end + +-- create a table with the information of the current barcode encoder +function Barcode:info() --> table + local info = { + name = self._NAME, + version = self._VERSION, + description = self._DESCRIPTION, + param = {}, + } + local tpar = info.param + for _, pardef in self:param_ord_iter() do + local id = pardef.pname + local pdef = pardef.pdef + tpar[#tpar + 1] = { + name = id, + descr = nil, -- TODO: + value = self[id], + isReserved = pdef.isReserved, + unit = pdef.unit, + } + end + return info +end + +-- make accessible by name parameter values +-- id: parameter identifier +function Barcode:get_param(id) --> value, err + if type(id) ~= "string" then + return nil, "[ArgErr] 'id' must be a string" + end + local pardef = self._par_def + if not pardef[id] then + return nil, "[Err] Parameter '"..id.."' doesn't exist" + end + local res = assert(self[id], "[InternalErr] parameter value unreachable") + return res, nil +end + +-- set a barcode parameter only if it is not reserved +-- arguments: +-- :set_param{key = value, key = value, ...} +-- :set_param(key, value) +function Barcode:set_param(arg1, arg2) --> boolean, err + -- processing arguments + local targ + local isPair = true + if type(arg1) == "table" then + if arg2 ~= nil then + return false, "[ArgErr] Further arguments not allowed" + end + targ = arg1 + isPair = false + elseif type(arg1) == "string" then -- key/value + if arg2 == nil then + return false, "[ArgErr] 'value' as the second argument expected" + end + targ = {} + targ[arg1] = arg2 + else + return false, "[ArgErr] param name must be a string" + end + -- preparing to the checking process + local cktab = {} + local ckparam = {} + -- checking process + for _, tpar in self:param_ord_iter() do + local pname = tpar.pname + local pdef = tpar.pdef + local val = targ[pname] -- par = val + if val ~= nil then + if pdef.isReserved then + return false, "[Err] parameter '" .. pname .. + "' is reserved, create another encoder" + end + local ok, err = pdef:fncheck(val, cktab) + if ok then + cktab[pname] = val + ckparam[pname] = val + else -- error! + return false, err + end + else -- no val in user option + cktab[pname] = self[pname] + end + end + for p, v in pairs(ckparam) do + self[p] = v + end + return true, nil +end + +return Barcode + +-- diff --git a/macros/luatex/generic/barracuda/src/lib-barcode/brcd-code128.lua b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-code128.lua new file mode 100644 index 0000000000..317b3de8f8 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-code128.lua @@ -0,0 +1,341 @@ +-- Code128 barcode generator module +-- Copyright (C) 2019 Roberto Giacomelli +-- +-- All dimension must be in scaled point (sp) +-- every fields that starts with an undercore sign are intended as private + +local Code128 = { + _VERSION = "code128 v0.0.5", + _NAME = "Code128", + _DESCRIPTION = "Code128 barcode encoder", +} + +Code128._int_def_bar = {-- code bar definitions + [0] = 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, + 132212, 221213, 221312, 231212, 112232, 122132, 122231, 113222, 123122, + 123221, 223211, 221132, 221231, 213212, 223112, 312131, 311222, 321122, + 321221, 312212, 322112, 322211, 212123, 212321, 232121, 111323, 131123, + 131321, 112313, 132113, 132311, 211313, 231113, 231311, 112133, 112331, + 132131, 113123, 113321, 133121, 313121, 211331, 231131, 213113, 213311, + 213131, 311123, 311321, 331121, 312113, 312311, 332111, 314111, 221411, + 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214, 112412, + 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111, + 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, + 212141, 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, + 411311, 113141, 114131, 311141, 411131, 211412, 211214, 211232, + 2331112, -- this is the stop char at index 106 +} + +Code128._codeset = { + A = 103, -- Start char for Codeset A + B = 104, -- Start char for Codeset B + C = 105, -- Start char for Codeset C + stopChar = 106, -- Stop char + shift = 98, -- A to B or B to A +} + +Code128._switch = { -- codes for switching from a codeset to another one + [103] = {[104] = 100, [105] = 99}, -- from A to B or C + [104] = {[103] = 101, [105] = 99}, -- from B to A or C + [105] = {[103] = 101, [104] = 100}, -- from C to A or B +} + +-- parameters definition +Code128._par_def = {} +local pardef = Code128._par_def + +-- module main parameter +pardef.xdim = { + default = 0.21 * 186467, -- X dimension + unit = "sp", -- scaled point + isReserved = true, + order = 1, -- the one first to be modified + fncheck = function (self, x, _) --> boolean, err + if x >= self.default then + return true, nil + else + return false, "[OutOfRange] too small value for xdim" + end + end, +} + +pardef.ydim = { + default = 10 * 186467, -- Y dimension + unit = "sp", + isReserved = false, + order = 2, + fncheck = function (self, y, tpar) --> boolean, err + local xdim = tpar.xdim + if y >= 10*xdim then + return true, nil + else + return false, "[OutOfRange] too small value for ydim" + end + end, +} + +pardef.quietzone_factor = { + default = 10, + unit = "absolute-number", + isReserved = false, + order = 3, + fncheck = function (self, z, _) --> boolean, err + if z >= 10 then + return true, nil + else + return false, "[OutOfRange] too small value for quietzone_factor" + end + end, +} + +-- create vbar objects +function Code128:config() --> ok, err + -- build Vbar object for the start/stop symbol + local mod = self.xdim + local sc = self._codeset.stopChar -- build the stop char + local n = self._int_def_bar[sc] + local Vbar = self._libgeo.Vbar -- Vbar class + self._vbar = {} + local b = self._vbar + b[sc] = Vbar:from_int(n, mod, true) + return true, nil +end + +-- utility functions + +-- the number of consecutive digits from the index 'i' in the code array +local function count_digits_from(arr, i) + local start = i + local dim = #arr + while i <= dim and (arr[i] > 47 and arr[i] < 58) do + i = i + 1 + end + return i - start +end + +-- evaluate the check digit of the data representation +local function check_digit(code) + local sum = code[1] -- this is the start character + for i = 2, #code do + sum = sum + code[i]*(i-1) + end + return sum % 103 +end + +-- return a pair of boolean the first one is true +-- if a control char and a lower case char occurs in the data +-- and the second one is true if the control char occurs before +-- the lower case char +local function ctrl_or_lowercase(pos, data) --> boolean, boolean|nil + local len = #data + local ctrl_occur, lower_occur = false, false + for i = pos, len do + local c = data[i] + if (not ctrl_occur) and (c >= 0 and c < 32) then + -- [0,31] control chars + if lower_occur then + return true, false -- lowercase char < ctrl char + else + ctrl_occur = true + end + elseif (not lower_occur) and (c > 95 and c < 128) then + -- [96, 127] lower case chars + if ctrl_occur then + return true, true -- ctrl char < lowercase char + else + lower_occur = true + end + end + end + return false -- no such data +end + +-- encode the provided char against a codeset +-- in the future this function will consider FN data +local function encode_char(t, codesetAorB, char_code, codesetA) + local code + if codesetAorB == codesetA then -- codesetA + if char_code < 32 then + code = char_code + 64 + elseif char_code > 31 and char_code < 96 then + code = char_code - 32 + else + error("Not implemented or wrong code") + end + else -- codesetB + if char_code > 31 and char_code < 128 then + code = char_code - 32 + else + error("Not implemented or wrong code") + end + end + t[#t + 1] = code +end + +-- encode the message in a sequence of Code128 symbol minimizing its lenght +local function encode128(arr, codeset, switch) --> data, err :TODO: + local res = {} -- the result array (the check character will be appended) + -- find the Start Character A, B, or C + local cur_codeset + local ndigit = count_digits_from(arr, 1) + local len = #arr + --local no_ctrl_lower_char + if (ndigit == 2 and len == 2) or ndigit > 3 then -- start char code C + cur_codeset = codeset.C + else + local ok, ctrl_first = ctrl_or_lowercase(1, arr) + if ok and ctrl_first then + cur_codeset = codeset.A + else + cur_codeset = codeset.B + end + end + res[#res + 1] = cur_codeset + local pos = 1 -- symbol's index to encode + while pos <= len do + if cur_codeset == codeset.C then + if arr[pos] < 48 or arr[pos] > 57 then -- not numeric char + local ok, ctrl_first = ctrl_or_lowercase(pos, arr) + if ok and ctrl_first then + cur_codeset = codeset.A + else + cur_codeset = codeset.B + end + res[#res + 1] = switch[codeset.C][cur_codeset] + else + local imax = pos + 2*math.floor(ndigit/2) - 1 + for idx = pos, imax, 2 do + res[#res + 1] = (arr[idx] - 48)*10 + arr[idx+1] - 48 + end + pos = pos + imax + ndigit = ndigit - imax + if ndigit == 1 then + -- cur_codeset setup + local ok, ctrl_first = ctrl_or_lowercase(pos + 1, arr) + if ok and ctrl_first then + cur_codeset = codeset.A + else + cur_codeset = codeset.B + end + res[#res + 1] = switch[codeset.C][cur_codeset] + end + end + else --- current codeset is A or B + if ndigit > 3 then + if ndigit % 2 > 1 then -- odd number of digits + encode_char(res, cur_codeset, arr[pos], codeset.A) + pos = pos + 1 + ndigit = ndigit - 1 + end + res[#res + 1] = switch[cur_codeset][codeset.C] + cur_codeset = codeset.C + elseif (cur_codeset == codeset.B) and + (arr[pos] >= 0 and arr[pos] < 32) then -- ops a control char + local ok, ctrl_first = ctrl_or_lowercase(pos + 1, arr) + if ok and (not ctrl_first) then -- shift to codeset A + res[#res + 1] = codeset.shift + encode_char(res, codeset.A, arr[pos], codeset.A) + pos = pos + 1 + ndigit = count_digits_from(pos, arr) + else -- switch to code set A + res[#res + 1] = switch[cur_codeset][codeset.A] + cur_codeset = codeset.A + end + elseif (cur_codeset == codeset.A) and + (arr[pos] > 95 and arr[pos] < 128) then -- ops a lower case char + local ok, ctrl_first = ctrl_or_lowercase(pos+1, arr) + if ok and ctrl_first then -- shift to codeset B + res[#res + 1] = codeset.shift + encode_char(res, codeset.B, arr[pos], codeset.A) + pos = pos + 1 + ndigit = count_digits_from(arr, pos) + else -- switch to code set B + res[#res + 1] = switch[cur_codeset][codeset.B] + cur_codeset = codeset.B + end + else + -- insert char + encode_char(res, cur_codeset, arr[pos], codeset.A) + pos = pos + 1 + ndigit = count_digits_from(arr, pos) + end + end + end + res[#res + 1] = check_digit(res) + res[#res + 1] = codeset.stopChar + return res +end + +-- Code 128 internal functions used by Barcode costructors + +function Code128:_check_char(c) --> elem, err + if type(c) ~= "string" or #c ~= 1 then + return nil, "[InternalErr] invalid char" + end + local b = string.byte(c) + if b > 127 then + local fmt = "[unimplemented] the '%d' is an ASCII extented char" + return nil, string.format(fmt, c) + end + return b, nil +end + +function Code128:_check_digit(n) --> elem, err + if type(n) ~= "number" then + return nil, "[InternalErr] invalid digit" + end + return n + 48, nil +end + +function Code128:_finalize() --> ok, err + local chr = assert(self._code_data, "[InternalErr] '_code_data' field is nil") + local data, err = encode128(chr, self._codeset, self._switch) + if err then return false, err end + -- load dynamically required Vbar objects + local vbar = self._vbar + local oVbar = self._libgeo.Vbar + for _, c in ipairs(data) do + if not vbar[c] then + local n = self._int_def_bar[c] + local mod = self.xdim + vbar[c] = oVbar:from_int(n, mod, true) + end + end + self._enc_data = data + return true, nil +end + +-- Drawing into the provided channel the geometrical barcode data +-- tx, ty is the optional translator vector +-- the function return the canvas reference to allow call chaining +function Code128:append_ga(canvas, tx, ty) --> canvas + local xdim, h = self.xdim, self.ydim + local sw = 11*xdim -- the width of a symbol + local data = self._enc_data + local w = #data * sw + 2 * xdim -- total symbol width + local ax, ay = self.ax, self.ay + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local y1 = y0 + h + local xpos = x0 + -- drawing the symbol + local err + err = canvas:start_bbox_group() + assert(not err, err) + for _, c in ipairs(data) do + local vb = self._vbar[c] + err = canvas:encode_Vbar(vb, xpos, y0, y1) + assert(not err, err) + xpos = xpos + sw + end + -- bounding box setting + local qz = self.quietzone_factor * xdim + -- { xmin, ymin, xmax, ymax } + err = canvas:stop_bbox_group(x0 - qz, y0, x1 + qz, y1) + assert(not err, err) + return canvas +end + +return Code128 +-- \ No newline at end of file diff --git a/macros/luatex/generic/barracuda/src/lib-barcode/brcd-code39.lua b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-code39.lua new file mode 100644 index 0000000000..a639619c63 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-code39.lua @@ -0,0 +1,381 @@ +-- Code39 barcode encoder implementation +-- Copyright (C) 2019 Roberto Giacomelli +-- +-- All dimensions must be in scaled point (sp) +-- every fields that starts with an undercore sign are intended as private + +local Code39 = { + _VERSION = "code39 v0.0.5", + _NAME = "Code39", + _DESCRIPTION = "Code39 barcode encoder", +} + +Code39._symb_def = {-- symbol definition + ["0"] = 112122111, ["1"] = 211112112, ["2"] = 211112211, + ["3"] = 111112212, ["4"] = 211122111, ["5"] = 111122112, + ["6"] = 111122211, ["7"] = 212112111, ["8"] = 112112112, + ["9"] = 112112211, ["A"] = 211211112, ["B"] = 211211211, + ["C"] = 111211212, ["D"] = 211221111, ["E"] = 111221112, + ["F"] = 111221211, ["G"] = 212211111, ["H"] = 112211112, + ["I"] = 112211211, ["J"] = 112221111, ["K"] = 221111112, + ["L"] = 221111211, ["M"] = 121111212, ["N"] = 221121111, + ["O"] = 121121112, ["P"] = 121121211, ["Q"] = 222111111, + ["R"] = 122111112, ["S"] = 122111211, ["T"] = 122121111, + ["U"] = 211111122, ["V"] = 211111221, ["W"] = 111111222, + ["X"] = 211121121, ["Y"] = 111121122, ["Z"] = 111121221, + ["-"] = 212111121, ["."] = 112111122, [" "] = 112111221, + ["$"] = 111212121, ["/"] = 121112121, ["+"] = 121211121, + ["%"] = 121212111, +} +Code39._star_def = 112121121 -- '*' start/stop character + +-- parameters definition +Code39._par_def = {} +local pardef = Code39._par_def + +-- module main parameter +pardef.module = { + -- Narrow element X-dimension is the width of the smallest element in a + -- barcode symbol. + -- The X-dimension impacts scan-ability. Within the allowed range, it is + -- recommended to use the largest possible X-dimension that is consistent + -- with label or form design. + -- The module width (width of narrow element) should be at least 7.5 mils + -- or 0.1905mm (a mil is 1/1000 inch). + default = 7.5 * 0.0254 * 186467, -- 7.5 mils (sp) unit misure, + unit = "sp", -- scaled point + isReserved = true, + order = 1, -- the one first to be modified + fncheck = function (self, mod, _) --> boolean, err + if mod >= self.default then return true, nil end + return false, "[OutOfRange] too small value for module" + end, +} + +pardef.ratio = { + -- The "wide" element is a multiple of the "narrow" element and this + -- multiple must remain the same throughout the symbol. This multiple can + -- range between 2.0 and 3.0. Preferred value is 3.0. + -- The multiple for the wide element should be between 2.0 and 3.0 if the + -- narrow element is greater than 20 mils. If the narrow element is less + -- than 20 mils (0.508mm), the multiple can only range between 2.0 and 2.2. + default = 2.0, -- the minimum + unit = "absolute-number", + isReserved = true, + order = 2, + fncheck = function (self, ratio, tparcheck) --> boolean, err + local mils = 0.0254 * 186467 + local mod = tparcheck.module + local maxr; if mod < 20*mils then maxr = 2.2 else maxr = 3.0 end + if ratio < 2.0 then + return false, "[OutOfRange] too small ratio (min 2.0)" + end + if ratio > maxr then + return false, "[OutOfRange] too big ratio (max "..maxr..")" + end + return true, nil + end, +} + +pardef.quietzone = { + -- It is recommended to use the largest possible quiet zone, that is + -- consistent with label or form design. + -- Quiet zones must be at least 10 times the module width or 0.10 inches, + -- whichever is larger. Default value (100 mils) + default = 2.54 * 186467, -- 0.1 inches equal to 100*mils + unit = "sp", -- scaled point + isReserved = false, + order = 3, + fncheck = function (self, qz, tparcheck) --> boolean, err + local mils = 0.0254 * 186467 + local mod = tparcheck.module + local min = math.max(10*mod, 100*mils) + if qz >= min then + return true, nil + end + return false, "[OutOfRange] quietzone too small" + end, + fndefault = function(self, tck) --> default value respect to a set of param + local mod = tck.module + return math.max(10*mod, self.default) + end, +} + +pardef.interspace = { -- Intercharacter gap + -- The intercharacter gap width (igw) is 5.3 times the module width (mw) if + -- mw is less than 10 mils. If mw is 10 mils or greater, the value for igw + -- is 3mw or 53 mils, whichever is greater. However, for quality printers, + -- igw often equals mw. + default = 7.5 * 0.0254 * 186467, -- 1 module, for quality printer + unit = "sp", -- scaled point + isReserved = false, + order = 4, + fncheck = function (self, igw, tparcheck) --> boolean, err + local mod = tparcheck.module + if igw >= mod then return true, nil end + return false, "[OutOfRange] interspace too small" + end, + fndefault = function(self, tck) --> default value respect to a set of param + return tck.module + end, +} + +pardef.height = { + -- To enhance readability, it is recommended that the barcode be designed + -- to be as tall as possible, taking into consideration the aspects of label + -- and forms design. + -- The height should be at least 0.15 times the barcode's length or 0.25 inch. + default = 8 * 186467, -- 8 mm -- TODO: better assessment for symbol length + unit = "sp", -- scaled point + isReserved = false, + order = 5, + fncheck = function (self, h, _) --> boolean, err + local mils = 0.0254 * 186467 + if h >= 250*mils then return true, nil end + return false, "[OutOfRange] height too small" + end, +} + +-- text yes or not +pardef.text_enabled = { -- boolean type + -- enable/disable a text label upon the barcode symbol + default = true, + isReserved = false, + order = 6, + fncheck = function (self, flag, _) --> boolean, err + if type(flag) == "boolean" then + return true, nil + else + return false, "[TypeErr] not a boolean value" + end + end, +} + +-- define the text label vertical position +pardef.text_vpos = { -- enumeration + default = "bottom", + isReserved = false, + order = 7, + policy_enum = { + top = true, -- place text at the top of symbol + bottom = true, -- place text under the symbol + }, + fncheck = function (self, e, _) --> boolean, err + if type(e) ~= "string" then return false, "[TypeError] not a string" end + local keys = self.policy_enum + if keys[e] == true then + return true, nil + else + return false, "[Err] enumeration value '"..e.."' not found" + end + end, +} + +-- define the text label horizontal position +pardef.text_hpos = { -- enumeration + default = "left", + isReserved = false, + order = 8, + policy_enum = { + left = true, + center = true, + right = true, + spaced = true, + }, + fncheck = function (self, e, _) --> boolean, err + if type(e) ~= "string" then return false, "[TypeError] not a string" end + local keys = self.policy_enum + if keys[e] == true then + return true, nil + else + return false, "[Err] enumeration value '"..e.."' not found" + end + end, +} + +-- vertical dimension between symbol and text +pardef.text_gap = { + default = 2.2 * 65536, -- 2.2 pt + isReserved = false, + order = 9, + unit = "em", --> TODO: please put this under further analisys asap + fncheck = function(self, g, _) --> boolean, err + if type(g) == "number" then + if g > 0 then + return true, nil + else + return false, "[OptErr] negative number" + end + else + return false, "[TypeErr] not valid type for gap opt" + end + end, +} + +-- star character appearing +pardef.text_star = { + default = false, + isReserved = false, + order = 10, + fncheck = function(self, flag, _) --> boolean, err + if type(flag) == "boolean" then + return true, nil + else + return false, "[TypeErr] not a boolean value" + end + end, +} + +-- configuration function +function Code39:config() --> ok, err + -- build Vbar object for the start/stop symbol + local mod, ratio = self.module, self.ratio + local n_star = self._star_def + local Vbar = self._libgeo.Vbar -- Vbar class + self._vbar = {['*'] = Vbar:from_int_revpair(n_star, mod, mod*ratio)} + return true, nil +end + +-- overriding Barcode method +function Code39:_check_char(c) --> elem, err + if type(c) ~= "string" or #c ~= 1 then + return nil, "[InternalErr] invalid char" + end + local symb_def = self._symb_def + local n = symb_def[c] + if not n then + local fmt = "[ArgErr] '%s' is not a valid Code 39 symbol" + return nil, string.format(fmt, c) + end + return c, nil +end + +-- overriding Barcode method +function Code39:_check_digit(n) --> elem, err + if type(n) ~= "number" then + return nil, "[InteranlErr] not a number" + end + if n < 0 or n > 9 then + return nil, "[InternalErr] not a digit" + end + return tostring(n), nil +end + +function Code39:_finalize() --> ok, err + local v = assert(self._code_data, "[InternalErr] '_code_data' field is nil") + local vbar = self._vbar + local g_Vbar = self._libgeo.Vbar + local mod, ratio = self.module, self.ratio + local symb_def = self._symb_def + for _, c in ipairs(v) do + if not vbar[c] then + local n1 = symb_def[c] + vbar[c] = g_Vbar:from_int_revpair(n1, mod, mod*ratio) + end + end + return true, nil +end + +-- tx, ty is an optional translator vector +function Code39:append_ga(canvas, tx, ty) --> canvas + local code = self._code_data + local ns = self._code_len -- number of chars inside the symbol + local mod = self.module + local ratio = self.ratio + local interspace = self.interspace + local h = self.height + local xs = mod*(6 + 3*ratio) + local xgap = xs + interspace + local w = xgap*(ns + 1) + xs -- (ns + 2)*xgap - interspace + local ax, ay = self.ax, self.ay + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local y1 = y0 + h + local xpos = x0 + local err + err = canvas:start_bbox_group() + assert(not err, err) + local vbar = self._vbar + -- start/stop symbol + local term_vbar = vbar['*'] + -- draw start symbol + err = canvas:encode_Vbar(term_vbar, xpos, y0, y1) + assert(not err, err) + for _, c in ipairs(code) do -- draw code symbols + xpos = xpos + xgap + local vb = vbar[c] + err = canvas:encode_Vbar(vb, xpos, y0, y1) + assert(not err, err) + end + -- draw stop symbol + err = canvas:encode_Vbar(term_vbar, xpos + xgap, y0, y1) + assert(not err, err) + -- bounding box setting + local qz = self.quietzone + err = canvas:stop_bbox_group(x0 - qz, y0, x1 + qz, y1) + assert(not err, err) + -- check height as the minimum of 15% of length + -- TODO: message could warn the user + -- if 0.15 * w > h then + -- message("The height of the barcode is to small") + -- end + if self.text_enabled then -- human readable text + local chars; if self.text_star then + chars = {"*"} + for _, c in ipairs(code) do + chars[#chars + 1] = c + end + chars[#chars + 1] = "*" + else + chars = {} + for _, c in ipairs(code) do + chars[#chars + 1] = c + end + end + local Text = self._libgeo.Text + local txt = Text:from_chars(chars) + -- setup text position + local txt_vpos = self.text_vpos + local txt_gap = self.text_gap + local ypos, tay; if txt_vpos == "top" then -- vertical setup + ypos = y1 + txt_gap + tay = 0.0 + elseif txt_vpos == "bottom" then + ypos = y0 - txt_gap + tay = 1.0 + else + error("[IntenalErr] text vertical placement option is wrong") + end + local txt_hpos = self.text_hpos + if txt_hpos == "spaced" then -- horizontal setup + local xaxis = x0 + if not self.text_star then + xaxis = xaxis + xgap + end + xaxis = xaxis + xs/2 + err = canvas:encode_Text_xspaced(txt, xaxis, xgap, ypos, tay) + assert(not err, err) + else + local xpos, tax + if txt_hpos == "left" then + xpos = x0 + tax = 0.0 + elseif txt_hpos == "center" then + xpos = (x1 + x0)/2 + tax = 0.5 + elseif txt_hpos == "right" then + xpos = x1 + tax = 1.0 + else + error("[InternalErr] wrong option for text_pos") + end + err = canvas:encode_Text(txt, xpos, ypos, tax, tay) + assert(not err, err) + end + end + return canvas +end + +return Code39 +-- \ No newline at end of file diff --git a/macros/luatex/generic/barracuda/src/lib-barcode/brcd-ean.lua b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-ean.lua new file mode 100644 index 0000000000..6893550a5c --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-ean.lua @@ -0,0 +1,790 @@ +-- EAN family barcode generator +-- +-- Copyright (C) 2019 Roberto Giacomelli +-- see LICENSE.txt file +-- +-- variant identifiers of the EAN family barcodes: +-- "13" EAN13 +-- "8" EAN8 +-- "5" EAN5 add-on +-- "2" EAN2 add-on +-- "13+5" EAN13 with EAN5 add-on +-- "13+2" EAN13 with EAN2 add-on +-- "8+5" EAN8 with EAN5 add-on +-- "8+2" EAN8 with EAN2 add-on + +local EAN = { + _VERSION = "ean v0.0.5", + _NAME = "ean", + _DESCRIPTION = "EAN barcode encoder", +} + +EAN._codeset_seq = {-- 1 -> A, 2 -> B, 3 -> C +[0]={1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3}, + {1, 1, 2, 1, 2, 2, 3, 3, 3, 3, 3, 3}, + {1, 1, 2, 2, 1, 2, 3, 3, 3, 3, 3, 3}, + {1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3}, + {1, 2, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3}, + {1, 2, 2, 1, 1, 2, 3, 3, 3, 3, 3, 3}, + {1, 2, 2, 2, 1, 1, 3, 3, 3, 3, 3, 3}, + {1, 2, 1, 2, 1, 2, 3, 3, 3, 3, 3, 3}, + {1, 2, 1, 2, 2, 1, 3, 3, 3, 3, 3, 3}, + {1, 2, 2, 1, 2, 1, 3, 3, 3, 3, 3, 3}, +} + +EAN._codeset14_8 = 1 +EAN._codeset58_8 = 3 + +EAN._codeset_5 = { -- check digit => structure +[0]={2, 2, 1, 1, 1}, -- 0 GGLLL + {2, 1, 2, 1, 1}, -- 1 GLGLL + {2, 1, 1, 2, 1}, -- 2 GLLGL + {2, 1, 1, 1, 2}, -- 3 GLLLG + {1, 2, 2, 1, 1}, -- 4 LGGLL + {1, 1, 2, 2, 1}, -- 5 LLGGL + {1, 1, 1, 2, 2}, -- 6 LLLGG + {1, 2, 1, 2, 1}, -- 7 LGLGL + {1, 2, 1, 1, 2}, -- 8 LGLLG + {1, 1, 2, 1, 2}, -- 9 LLGLG +} + +EAN._symbol = { -- codesets A, B, and C + [1] = {[0] = 3211, 2221, 2122, 1411, 1132, 1231, 1114, 1312, 1213, 3112,}, + [2] = {[0] = 1123, 1222, 2212, 1141, 2311, 1321, 4111, 2131, 3121, 2113,}, + [3] = {[0] = 3211, 2221, 2122, 1411, 1132, 1231, 1114, 1312, 1213, 3112,}, +} + +EAN._is_first_bar = {false, false, true} +EAN._start = {111, true} +EAN._stop = {11111, false} + +-- family parameters + +EAN._par_def = {}; local pardef = EAN._par_def + +-- standard module is 0.33 mm but it can vary from 0.264 to 0.66mm +pardef.mod = { + default = 0.33 * 186467, -- (mm to sp) X dimension (original value 0.33) + unit = "sp", -- scaled point + isReserved = true, + order = 1, -- the one first to be modified + fncheck = function (self, x, _) --> boolean, err + local mm = 186467 + local min, max = 0.264 * mm, 0.660 * mm + if x < min then + return false, "[OutOfRange] too small value for mod" + elseif x > max then + return false, "[OutOfRange] too big value for mod" + end + return true, nil + end, +} + +pardef.height = { + default = 22.85 * 186467, -- 22.85 mm + unit = "sp", + isReserved = false, + order = 2, + fncheck = function (self, h, _) --> boolean, err + if h > 0 then + return true, nil + else + return false, "[OutOfRange] non positive value for height" + end + end, +} + +pardef.quietzone_left_factor = { + default = 11, + unit = "absolute-number", + isReserved = false, + order = 3, + fncheck = function (self, qzf, _) --> boolean, err + if qzf > 0 then + return true, nil + else + return false, "[OutOfRange] non positive value for quietzone_left_factor" + end + end, +} + +pardef.quietzone_right_factor = { + default = 7, + unit = "absolute-number", + isReserved = false, + order = 4, + fncheck = function (self, qzf, _) --> boolean, err + if qzf > 0 then + return true, nil + else + return false, "[OutOfRange] non positive value for quietzone_right_factor" + end + end, +} + +pardef.bars_depth_factor = { + default = 5, + unit = "absolute-number", + isReserved = false, + order = 5, + fncheck = function (self, b, _) --> boolean, err + if b >= 0 then + return true, nil + else + return false, "[OutOfRange] non positive value for bars_depth_factor" + end + end, +} + +-- enable/disable a text label upon the barcode symbol +pardef.text_enabled = { -- boolean type + default = true, + isReserved = false, + order = 6, + fncheck = function (self, flag, _) --> boolean, err + if type(flag) == "boolean" then + return true, nil + else + return false, "[TypeErr] not a boolean value for text_enabled" + end + end, +} + +pardef.text_ygap_factor = { + default = 1.0, + unit = "absolute-number", + isReserved = false, + order = 7, + fncheck = function (self, t, _) --> boolean, err + if t >= 0 then + return true, nil + else + return false, "[OutOfRange] non positive value for text_ygap_factor" + end + end, +} + +pardef.text_xgap_factor = { + default = 0.75, + unit = "absolute-number", + isReserved = false, + order = 8, + fncheck = function (self, t, _) --> boolean, err + if t >= 0 then + return true, nil + else + return false, "[OutOfRange] non positive value for text_xgap_factor" + end + end, +} + +-- variant parameters + +EAN._par_def_variant = { + ["13"] = {}, -- EAN13 + ["8"] = {}, -- EAN8 + ["5"] = {}, -- add-on EAN5 + ["2"] = {}, -- add-on EAN2 + ["13+5"] = {}, -- EAN13 with EAN5 add-on + ["13+2"] = {}, -- EAN13 with EAN2 add-on + ["8+5"] = {}, -- EAN8 with EAN5 add-on + ["8+2"] = {}, -- EAN8 with EAN2 add-on +} + +-- ean13_pardef.text_ISBN parameter -- TODO: + +-- EAN 13/8 + add-on parameters +local addon_xgap_factor = {-- distance between symbol + default = 10, + unit = "absolute-number", + isReserved = false, + order = 1, + fncheck = function (self, t, _) --> boolean, err + if t >= 7 then + return true, nil + else + return false, "[OutOfRange] not positive value for xgap_factor" + end + end, +} +EAN._par_def_variant["13+5"].addon_xgap_factor = addon_xgap_factor +EAN._par_def_variant["13+2"].addon_xgap_factor = addon_xgap_factor +EAN._par_def_variant["8+5"].addon_xgap_factor = addon_xgap_factor +EAN._par_def_variant["8+2"].addon_xgap_factor = addon_xgap_factor + +-- configuration functions + +-- utility for generic configuration of full symbol, add-on included +-- n1 length of main symbol, 8 or 13 +-- n2 length of add-on symbol, 2 or 5 +local function config_full(ean, Vbar, mod, n1, n2) + local i1 = tostring(n1) + local fn_1 = assert(ean._config_variant[i1]) + fn_1(ean, Vbar, mod) + local i2 = tostring(n2) + local fn_2 = assert(ean._config_variant[i2]) + fn_2(ean, Vbar, mod) + ean._main_len = n1 + ean._addon_len = n2 + ean._is_last_checksum = true +end + +EAN._config_variant = { + ["13"] = function (ean13, Vbar, mod) + ean13._main_len = 13 + ean13._is_last_checksum = true + local start = ean13._start + local stop = ean13._stop + ean13._13_start_stop_vbar = Vbar:from_int(start[1], mod, start[2]) + ean13._13_ctrl_center_vbar = Vbar:from_int(stop[1], mod, stop[2]) + ean13._13_codeset_vbar = {} + local tvbar = ean13._13_codeset_vbar + for i_cs, codetab in ipairs(ean13._symbol) do + tvbar[i_cs] = {} + local tv = tvbar[i_cs] + local isbar = ean13._is_first_bar[i_cs] + for i = 0, 9 do + tv[i] = Vbar:from_int(codetab[i], mod, isbar) + end + end + end, + ["8"] = function (ean8, Vbar, mod) + ean8._main_len = 8 + ean8._is_last_checksum = true + local start = ean8._start + local stop = ean8._stop + ean8._8_start_stop_vbar = Vbar:from_int(start[1], mod, start[2]) + ean8._8_ctrl_center_vbar = Vbar:from_int(stop[1], mod, stop[2]) + ean8._8_codeset_vbar = {} + local tvbar = ean8._8_codeset_vbar + for k = 1, 3, 2 do -- only codeset A and C (k == 1, 3) + tvbar[k] = {} + local codetab = ean8._symbol[k] + local isbar = ean8._is_first_bar[k] + local tv = tvbar[k] + for i = 0, 9 do + tv[i] = Vbar:from_int(codetab[i], mod, isbar) + end + end + end, + ["5"] = function (ean5, Vbar, mod) -- add-on EAN5 + ean5._main_len = 5 + ean5._is_last_checksum = false + ean5._5_start_vbar = Vbar:from_int(112, mod, true) + ean5._5_sep_vbar = Vbar:from_int(11, mod, false) + ean5._5_codeset_vbar = {} + local tvbar = ean5._5_codeset_vbar + local symbols = ean5._symbol + for c = 1, 2 do + tvbar[c] = {} + local tcs = tvbar[c] + local isbar = false + local sb = symbols[c] + for i = 0, 9 do + tcs[i] = Vbar:from_int(sb[i], mod, false) + end + end + end, + ["2"] = function (ean2, Vbar, mod) -- add-on EAN2 + ean2._main_len = 2 + ean2._is_last_checksum = false + ean2._2_start_vbar = Vbar:from_int(112, mod, true) + ean2._2_sep_vbar = Vbar:from_int(11, mod, false) + ean2._2_codeset_vbar = {} + local tvbar = ean2._2_codeset_vbar + local symbols = ean2._symbol + for c = 1, 2 do + tvbar[c] = {} + local tcs = tvbar[c] + local isbar = false + local sb = symbols[c] + for i = 0, 9 do + tcs[i] = Vbar:from_int(sb[i], mod, false) + end + end + end, + ["13+5"] = function (ean, Vbar, mod) -- EAN13 with EAN5 add-on + config_full(ean, Vbar, mod, 13, 5) + end, + ["13+2"] = function(ean, Vbar, mod) -- EAN13 with EAN2 add-on + config_full(ean, Vbar, mod, 13, 2) + end, + ["8+5"] = function(ean, Vbar, mod) -- EAN8 with EAN5 add-on + config_full(ean, Vbar, mod, 8, 5) + end, + ["8+2"] = function(ean, Vbar, mod) -- EAN8 with EAN2 add-on + config_full(ean, Vbar, mod, 8, 2) + end, +} + +-- config function +-- create all the possible VBar object +function EAN:config(variant) --> ok, err + if not type(variant) == "string" then + return false, "[ArgErr] incorrect type for 'variant', string expected" + end + local fnconfig = self._config_variant[variant] + if not fnconfig then + return false, "[Err] EAN variant '".. variant .."' not found" + end + local Vbar = self._libgeo.Vbar -- Vbar class + local mod = self.mod + fnconfig(self, Vbar, mod) + return true, nil +end + +-- utility function + +-- the checksum of EAN8 or EAN13 code +-- 'data' is an array of digits +local function checksum_8_13(data, stop_index) + local s1 = 0; for i = 2, stop_index, 2 do + s1 = s1 + data[i] + end + local s2 = 0; for i = 1, stop_index, 2 do + s2 = s2 + data[i] + end + local sum; if stop_index % 2 == 0 then + sum = 3 * s1 + s2 + else + sum = s1 + 3 * s2 + end + return (10 - (sum % 10)) % 10 +end + +-- return the checksum digit of an EAN 5 or EAN 2 add-on +-- this digits will not be part of the code +-- 'data' is an array of digits +-- i is the index where the code starts +-- len is the length of the code +local function checksum_5_2(data, i, len) --> checksum digit or nil + if len == 5 then -- EAN 5 add-on + local c1 = data[i] + data[i + 2] + data[i + 4] + local c2 = data[i + 1] + data[i + 3] + local ck = 3 * c1 + 9 * c2 + return ck % 10 + elseif len == 2 then -- EAN 2 add-on + local ck = 10 * data[i] + data[i + 1] + return ck % 4 + end +end + +-- public methods + +-- return the checksum digit of the argument or an error +-- respect to the encoder variant EAN8 or EAN13 +-- 'n' can be an integer, a string of digits or an array of digits +function EAN:checksum(n) --> n, err + local arr; + if type(n) == "number" then + if n <= 0 then + return nil, "[ArgErr] number must be a positive integer" + end + if n - math.floor(n) > 0 then + return nil, "[ArgErr] 'n' is not an integer" + end + arr = {} + local i = 0 + while n > 0 do + i = i + 1 + arr[i] = n % 10 + n = (n - arr[i]) / 10 + end + -- array reversing + local len = #arr + 1 + for i = 1, #arr/2 do + local dt = arr[i] + arr[i] = arr[len - i] + arr[len - i] = dt + end + elseif type(n) == "table" then + if not #n > 0 then return nil, "[ArgErr] empty array" end + for _, d in ipairs(n) do + if type(d) ~= "number" then + return nil, "[ArgErr] array 'n' contains a not digit element" + end + if d < 0 or d > 9 then + return nil, "[ArgErr] array contains a not digit number" + end + end + arr = n + elseif type(n) == "string" then + arr = {} + for c in string.gmatch(n, ".") do + local d = tonumber(c) + if (not d) or d > 9 then + return nil, "[ArgErr] 's' contains a not digit char" + end + arr[#arr + 1] = d + end + else + return nil, "[ArgErr] not a number, a string or an array of digits" + end + local i = #arr + if i == 7 or i == 8 then + return checksum_8_13(arr, 7) + elseif i == 12 or i == 13 then + return checksum_8_13(arr, 12) + else + return nil, "[Err] unsuitable data length for EAN8 or EAN13 checksum" + end +end + +function EAN:get_code() --> string + local var = self._variant + local code = self.code13 -- TODO: + return table.concat(code) +end + +-- internal methods for Barcode costructors + +function EAN:_finalize() --> ok, err + local l1 = self._main_len + local l2 = self._addon_len + local ok_len = l1 + (l2 or 0) + local symb_len = self._code_len + if symb_len ~= ok_len then + return false, "[ArgErr] not a "..ok_len.."-digits long array" + end + if self._is_last_checksum then -- is the last digit ok? + local data = self._code_data + local ck = checksum_8_13(data, l1 - 1) + if ck ~= data[l1] then + return false, "[Err] wrong checksum digit" + end + end + return true, nil +end + +-- drawing functions + +EAN._append_ga_variant = {} +local fn_append_ga_variant = EAN._append_ga_variant + +-- draw EAN13 symbol +fn_append_ga_variant["13"] = function (ean, canvas, tx, ty, ax, ay) + local code = ean._code_data + local mod = ean.mod + local bars_depth = mod * ean.bars_depth_factor + local w, h = 95*mod, ean.height + bars_depth + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local y1 = y0 + h + local xpos = x0 -- current insertion x-coord + local ys = y0 + bars_depth + local s_width = 7*mod + local code_seq = ean._codeset_seq[code[1]] + -- draw the start symbol + local err + err = canvas:start_bbox_group(); assert(not err, err) + local be = ean._13_start_stop_vbar + err = canvas:encode_Vbar(be, xpos, y0, y1); assert(not err, err) + xpos = xpos + 3*mod + -- draw the first 6 numbers + for i = 2, 7 do + local codeset = code_seq[i-1] + local n = code[i] + local vbar = ean._13_codeset_vbar[codeset][n] + err = canvas:encode_Vbar(vbar, xpos, ys, y1); assert(not err, err) + xpos = xpos + s_width + end + -- draw the control symbol + local ctrl = ean._13_ctrl_center_vbar + err = canvas:encode_Vbar(ctrl, xpos, y0, y1); assert(not err, err) + xpos = xpos + 5*mod + -- draw the last 6 numbers + for i = 8, 13 do + local codeset = code_seq[i-1] + local n = code[i] + local vbar = ean._13_codeset_vbar[codeset][n] + err = canvas:encode_Vbar(vbar, xpos, ys, y1); assert(not err, err) + xpos = xpos + s_width + end + -- draw the stop char + err = canvas:encode_Vbar(be, xpos, y0, y1); assert(not err, err) + -- bounding box set up + local qzl = ean.quietzone_left_factor * mod + local qzr = ean.quietzone_right_factor * mod + local err = canvas:stop_bbox_group(x0 - qzl, y0, x1 + qzr, y1) + assert(not err, err) + if ean.text_enabled then -- human readable text + local Text = ean._libgeo.Text + local txt_1 = Text:from_digit_array(code, 1, 1) + local txt_2 = Text:from_digit_array(code, 2, 7) + local txt_3 = Text:from_digit_array(code, 8, 13) + local y_bl = ys - ean.text_ygap_factor * mod + local mx = ean.text_xgap_factor + local err + err = canvas:encode_Text(txt_1, x0 - qzl, y_bl, 0, 1) + assert(not err, err) + local x2_1 = x0 + (3+mx)*mod + local x2_2 = x0 + (46-mx)*mod + err = canvas:encode_Text_xwidth(txt_2, x2_1, x2_2, y_bl, 1) + assert(not err, err) + local x3_1 = x0 + (49+mx)*mod + local x3_2 = x0 + (92-mx)*mod + err = canvas:encode_Text_xwidth(txt_3, x3_1, x3_2, y_bl, 1) + assert(not err, err) + end +end + +-- draw EAN8 symbol +fn_append_ga_variant["8"] = function (ean, canvas, tx, ty, ax, ay) + local code = ean._code_data + local mod = ean.mod + local bars_depth = mod * ean.bars_depth_factor + local w, h = 67*mod, ean.height + bars_depth + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local y1 = y0 + h + local xpos = x0 -- current insertion x-coord + local ys = y0 + bars_depth + local s_width = 7*mod + -- draw the start symbol + local err + err = canvas:start_bbox_group(); assert(not err, err) + local be = ean._8_start_stop_vbar + err = canvas:encode_Vbar(be, xpos, y0, y1); assert(not err, err) + xpos = xpos + 3*mod + -- draw the first 4 numbers + local t_vbar = ean._8_codeset_vbar + local cs14 = ean._codeset14_8 + for i = 1, 4 do + local n = code[i] + local vbar = t_vbar[cs14][n] + err = canvas:encode_Vbar(vbar, xpos, ys, y1); assert(not err, err) + xpos = xpos + s_width + end + -- draw the control symbol + local ctrl = ean._8_ctrl_center_vbar + err = canvas:encode_Vbar(ctrl, xpos, y0, y1); assert(not err, err) + xpos = xpos + 5*mod + -- draw the product code + local cs58 = ean._codeset58_8 + for i = 5, 8 do + local n = code[i] + local vbar = t_vbar[cs58][n] + err = canvas:encode_Vbar(vbar, xpos, ys, y1); assert(not err, err) + xpos = xpos + s_width + end + -- draw the stop char + err = canvas:encode_Vbar(be, xpos, y0, y1); assert(not err, err) + -- bounding box set up + local qzl = ean.quietzone_left_factor * mod + local qzr = ean.quietzone_right_factor * mod + local err = canvas:stop_bbox_group(x0 - qzl, y0, x1 + qzr, y1) + assert(not err, err) + if ean.text_enabled then -- human readable text + local Text = ean._libgeo.Text + local t_1 = Text:from_digit_array(code, 1, 4) + local t_2 = Text:from_digit_array(code, 5, 8) + local y_bl = ys - ean.text_ygap_factor * mod + local mx = ean.text_xgap_factor + local x1_1 = x0 + ( 3 + mx)*mod + local x1_2 = x0 + (32 - mx)*mod + err = canvas:encode_Text_xwidth(t_1, x1_1, x1_2, y_bl, 1) + assert(not err, err) + local x2_1 = x0 + (35+mx)*mod + local x2_2 = x0 + (64-mx)*mod + err = canvas:encode_Text_xwidth(t_2, x2_1, x2_2, y_bl, 1) + assert(not err, err) + end +end + +-- draw EAN5 add-on symbol +fn_append_ga_variant["5"] = function (ean, canvas, tx, ty, ax, ay, h) + local code = ean._code_data + local l1 = ean._main_len + local i1; if l1 == 5 then + i1 = 1 + else + i1 = l1 + 1 + end + local i2 = i1 + 4 + local mod = ean.mod + local w = 47*mod + h = h or ean.height + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local y1 = y0 + h + local xpos = x0 -- current insertion x-coord + local sym_w = 7*mod + local sep_w = 2*mod + -- draw the start symbol + local err + err = canvas:start_bbox_group(); assert(not err, err) + local start = ean._5_start_vbar + err = canvas:encode_Vbar(start, xpos, y0, y1); assert(not err, err) + xpos = xpos + 4*mod + local ck = checksum_5_2(code, i1, 5) + local codeset = ean._codeset_5[ck] + local sep = ean._5_sep_vbar + local t_vbar = ean._5_codeset_vbar + -- draw the five digits + local k = 0 + for i = i1, i2 do + k = k + 1 + local cs = codeset[k] -- 1 or 2 + local d = code[i] + local vbar = t_vbar[cs][d] + err = canvas:encode_Vbar(vbar, xpos, y0, y1); assert(not err, err) + xpos = xpos + sym_w + if k < 5 then + err = canvas:encode_Vbar(sep, xpos, y0, y1); assert(not err, err) + xpos = xpos + sep_w + end + end + -- bounding box set up + local qzl = ean.quietzone_left_factor * mod + local qzr = ean.quietzone_right_factor * mod + local err = canvas:stop_bbox_group(x0 - qzl, y0, x1 + qzr, y1) + assert(not err, err) + if ean.text_enabled then -- human readable text + local Text = ean._libgeo.Text + local txt = Text:from_digit_array(code, i1, i2) + local y_bl = y1 + ean.text_ygap_factor * mod + local x1_1 = x0 + 3*mod + local x1_2 = x1 - 3*mod + err = canvas:encode_Text_xwidth(txt, x1_1, x1_2, y_bl, 0) + assert(not err, err) + end +end + +-- draw EAN2 symbol +fn_append_ga_variant["2"] = function (ean, canvas, tx, ty, ax, ay, h) + local code = ean._code_data + local l1 = ean._main_len + local i1; if l1 == 2 then + i1 = 1 + else + i1 = l1 + 1 + end + local mod = ean.mod + local w = 20*mod + h = h or ean.height + local x0 = (tx or 0.0) - ax * w + local y0 = (ty or 0.0) - ay * h + local x1 = x0 + w + local y1 = y0 + h + local xpos = x0 -- current insertion x-coord + local sym_w = 7*mod + local sep_w = 2*mod + -- draw the start symbol + local err + err = canvas:start_bbox_group(); assert(not err, err) + local start = ean._2_start_vbar + err = canvas:encode_Vbar(start, xpos, y0, y1); assert(not err, err) + xpos = xpos + 4*mod + local r = checksum_5_2(code, i1, 2) + local s1, s2 + if r == 0 then -- LL scheme + s1, s2 = 1, 1 + elseif r == 1 then -- LG scheme + s1, s2 = 1, 2 + elseif r == 2 then -- GL scheme + s1, s2 = 2, 1 + else -- r == 3 -- GG scheme + s1, s2 = 2, 2 + end + local t_vbar = ean._2_codeset_vbar + local d1 = code[i1] -- render the first digit + local vb1 = t_vbar[s1][d1] + err = canvas:encode_Vbar(vb1, xpos, y0, y1); assert(not err, err) + xpos = xpos + sym_w + local sep = ean._2_sep_vbar + err = canvas:encode_Vbar(sep, xpos, y0, y1); assert(not err, err) + xpos = xpos + sep_w + local d2 = code[i1 + 1] -- render the second digit + local vb2 = t_vbar[s2][d2] + err = canvas:encode_Vbar(vb2, xpos, y0, y1); assert(not err, err) + -- bounding box set up + local qzl = ean.quietzone_left_factor * mod + local qzr = ean.quietzone_right_factor * mod + local err = canvas:stop_bbox_group(x0 - qzl, y0, x1 + qzr, y1) + assert(not err, err) + if ean.text_enabled then -- human readable text + local Text = ean._libgeo.Text + local txt = Text:from_digit_array(code, i1, i1 + 1) + local y_bl = y1 + ean.text_ygap_factor * mod + local x1_1 = x0 + 3*mod + local x1_2 = x1 - 3*mod + err = canvas:encode_Text_xwidth(txt, x1_1, x1_2, y_bl, 0) + assert(not err, err) + end +end + +fn_append_ga_variant["13+5"] = function (ean, canvas, tx, ty, ax, ay) + local mod = ean.mod + local bars_depth = mod * ean.bars_depth_factor + local h = ean.height + bars_depth + local w = (142 + ean.addon_xgap_factor) * mod + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local fn_ga = ean._append_ga_variant + local fn_1 = fn_ga["13"] + local fn_2 = fn_ga["5"] + fn_1(ean, canvas, x0, y0, 0, 0) + fn_2(ean, canvas, x1, y0, 1, 0, 0.85 * h) +end + +fn_append_ga_variant["13+2"] = function (ean, canvas, tx, ty, ax, ay) + local mod = ean.mod + local bars_depth = mod * ean.bars_depth_factor + local h = ean.height + bars_depth + local w = (115 + ean.addon_xgap_factor) * mod + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local fn_ga = ean._append_ga_variant + local fn_1 = fn_ga["13"] + local fn_2 = fn_ga["2"] + fn_1(ean, canvas, x0, y0, 0, 0) + fn_2(ean, canvas, x1, y0, 1, 0, 0.85 * h) +end + +fn_append_ga_variant["8+5"] = function (ean, canvas, tx, ty, ax, ay) + local mod = ean.mod + local bars_depth = mod * ean.bars_depth_factor + local h = ean.height + bars_depth + local w = (114 + ean.addon_xgap_factor) * mod + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local fn_ga = ean._append_ga_variant + local fn_1 = fn_ga["8"] + local fn_2 = fn_ga["5"] + fn_1(ean, canvas, x0, y0, 0, 0) + fn_2(ean, canvas, x1, y0, 1, 0, 0.85 * h) +end + +fn_append_ga_variant["8+2"] = function (ean, canvas, tx, ty, ax, ay) + local mod = ean.mod + local bars_depth = mod * ean.bars_depth_factor + local h = ean.height + bars_depth + local w = (87 + ean.addon_xgap_factor) * mod + local x0 = (tx or 0) - ax * w + local y0 = (ty or 0) - ay * h + local x1 = x0 + w + local fn_ga = ean._append_ga_variant + local fn_1 = fn_ga["8"] + local fn_2 = fn_ga["2"] + fn_1(ean, canvas, x0, y0, 0, 0) + fn_2(ean, canvas, x1, y0, 1, 0, 0.85 * h) +end + +-- Drawing into the provided channel geometrical data +-- tx, ty is the optional translation vector +-- the function return the canvas reference to allow call chaining +function EAN:append_ga(canvas, tx, ty) --> canvas + local var = self._variant + local fn_append_ga = assert(self._append_ga_variant[var]) + local ax, ay = self.ax, self.ay + fn_append_ga(self, canvas, tx, ty, ax, ay) + return canvas +end + +return EAN diff --git a/macros/luatex/generic/barracuda/src/lib-barcode/brcd-i2of5.lua b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-i2of5.lua new file mode 100644 index 0000000000..8097b855f7 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-barcode/brcd-i2of5.lua @@ -0,0 +1,378 @@ +-- Interleaved 2 of 5 (ITF) barcode generator +-- +-- Copyright (C) 2019 Roberto Giacomelli +-- see LICENSE.txt file + +local ITF = { -- main container + _VERSION = "ITF v0.0.1", + _NAME = "ITF", + _DESCRIPTION = "Interleaved 2 of 5 barcode encoder", +} + +ITF._start = 111 -- nnnn +ITF._stop = 112 -- Wnn (integer must be in reverse order) + +ITF._pattern = { -- true -> narrow, false -> Wide + [0] = {true, true, false, false, true}, + [1] = {false, true, true, true, false}, + [2] = {true, false, true, true, false}, + [3] = {false, false, true, true, true}, + [4] = {true, true, false, true, false}, + [5] = {false, true, false, true, true}, + [6] = {true, false, false, true, true}, + [7] = {true, true, true, false, false}, + [8] = {false, true, true, false, true}, + [9] = {true, false, true, false, true}, +} + +-- define parameters +ITF._par_def = {} +local pardef = ITF._par_def + +-- module main parameter +pardef.module = { + -- Narrow element X-dimension is the width of the smallest element. + -- The module width (width of narrow element) should be at least 7.5 mils + -- that is exactly 0.1905mm (1 mil is 1/1000 inch). + default = 7.5 * 0.0254 * 186467, -- 7.5 mils (sp) unit misure, + unit = "sp", -- scaled point + isReserved = true, + order = 1, -- the one first to be modified + fncheck = function (self, mod, _) --> boolean, err + if mod >= self.default then return true, nil end + return false, "[OutOfRange] too small lenght for X-dim" + end, +} + +pardef.ratio = { + -- The "wide" element is a multiple of the "narrow" element that can + -- range between 2.0 and 3.0. Preferred value is 3.0. + -- The multiple for the wide element should be between 2.0 and 3.0 if the + -- narrow element is greater than 20 mils. If the narrow element is less + -- than 20 mils (0.508mm), the ratio must exceed 2.2. + default = 3.0, + unit = "absolute-number", + isReserved = true, + order = 2, + fncheck = function (_, ratio, tpardef) --> boolean, err + local mils = 0.0254 * 186467 + local mod = tpardef.module + local minr; if mod < 20*mils then minr = 2.2 else minr = 2.0 end + if ratio < minr then + return false, "[OutOfRange] too small ratio (the min is "..minr..")" + end + if ratio > 3.0 then + return false, "[OutOfRange] too big ratio (the max is 3.0)" + end + return true, nil + end, +} + +pardef.height = { + -- The height should be at least 0.15 times the barcode's length or 0.25 inch. + default = 15 * 186467, -- 15mm -- TODO: better assessment for symbol length + unit = "sp", -- scaled point + isReserved = false, + order = 3, + fncheck = function (_self, h, _opt) --> boolean, err + local mils = 0.0254 * 186467 + if h >= 250*mils then + return true, nil + end + return false, "[OutOfRange] height too small" + end, +} + +pardef.quietzone = { + -- Quiet zones must be at least 10 times the module width or 0.25 inches, + -- whichever is larger + default = 250 * 0.0254 * 186467, -- 0.25 inch (250 mils) + unit = "sp", -- scaled point + isReserved = false, + order = 4, + fncheck = function (self, qz, _opt) --> boolean, err + local mils = 0.0254 * 186467 + local mod = self.module + local min = math.max(10*mod, 250*mils) + if qz >= min then + return true, nil + else + return false, "[OutOfRange] quietzone too small" + end + end, +} + +pardef.check_digit_policy = { -- enumeration + default = "none", + isReserved = false, + policy_enum = { + add = true, -- add a check digit to the symbol + verify = true, -- check the last digit of the symbol as check digit + none = true, -- do nothing + }, + order = 5, + fncheck = function (self, e, _) --> boolean, err + if type(e) ~= "string" then return false, "[TypeError] not a string" end + local keys = self.policy_enum + if keys[e] == true then + return true, nil + else + return false, "[Err] enum value not found" + end + end, +} + +pardef.check_digit_method = { -- enumeration + -- determine the algorithm for the check digit calculation + default = "mod_10", + isReserved = false, + order = 6, + method_enum = { + mod_10 = true, -- MOD 10 check digits method + }, + fncheck = function (self, e, _) --> boolean, err + if type(e) ~= "string" then return false, "[TypeError] not a string" end + local keys = self.method_enum + if keys[e] == true then + return true, nil + else + return false, "[Err] enum value not found" + end + end, +} + +pardef.bearer_bars_enabled = { -- boolean type + -- enable/disable Bearer bars around the barcode symbol + default = false, + isReserved = false, + order = 7, + fncheck = function (_, flag, _) --> boolean, err + if type(flag) == "boolean" then + return true, nil + else + return false, "[TypeErr] not a boolean value" + end + end, +} + +pardef.bearer_bars_thickness = { -- dimension + default = 37.5 * 0.0254 * 186467, -- 5 modules + unit = "sp", -- scaled point + isReserved = false, + order = 8, + fncheck = function (_self, thick, tpardef) --> boolean, err + local module = tpardef.module + if thick >= 2*module then + return true, nil + end + return false, "[OutOfRange] thickness too small" + end, +} + +pardef.bearer_bars_layout = { -- enumeration + -- determine the algorithm for the check digit calculation + default = "hbar", + isReserved = false, + order = 9, + method_enum = { + frame = true, -- a rectangle around the symbol + hbar = true, -- top and bottom horizontal bars + }, + fncheck = function (self, e, _) --> boolean, err + if type(e) ~= "string" then return false, "[TypeError] not a string" end + local keys = self.method_enum + if keys[e] == true then + return true, nil + else + return false, "[Err] enum value not found" + end + end, +} + +-- auxiliary functions + +-- separate a non negative integer in its digits {d_n-1, ..., d_1, d_0} +local function n_to_arr(n) --> len, digits + local digits = {} + local slen + if n == 0 then + digits[#digits + 1] = 0 + slen = 1 + else + slen = 0 + while n > 0 do + local d = n % 10 + digits[#digits + 1] = d + n = (n - d) / 10 + slen = slen + 1 + end + end + for k = 1, slen/2 do -- array reversing + local h = slen - k + 1 + local d = digits[k] + digits[k] = digits[h] + digits[h] = d + end + return slen, digits +end + +local function rshift(t) + local tlen = #t + for i = tlen, 1, -1 do + t[i + 1] = t[i] + end + t[1] = 0 +end + + +local function check_mod10(t, last) + local sum = 0 + local w = true + for i = last, 1, -1 do + if w then + sum = sum + 3*t[i] + else + sum = sum + t[i] + end + w = not w + end + local m = sum % 10 + if m == 0 then return 0 else return 10 - m end +end + +local function checkdigit(t, last, method) + if method == "mod_10" then + return check_mod10(t, last) + else + assert(false, "[InternalErr] unknow method") + end +end + + +-- configuration function +function ITF:config() --> ok, err + -- init Vbar objects + local narrow = self.module + local wide = narrow * self.ratio + -- start symbol + local Vbar = self._libgeo.Vbar -- Vbar class + self._vbar_start = Vbar:from_int_revpair(self._start, narrow, wide) + self._vbar_stop = Vbar:from_int_revpair(self._stop, narrow, wide) + + -- build every possible pair of digits from 00 to 99 + self._vbar_data = {} + local vbar = self._vbar_data + local pattern = self._pattern + for dec = 0, 9 do + for unit = 0, 9 do + local t1 = pattern[dec] + local t2 = pattern[unit] + local n = dec*10 + unit + vbar[n] = Vbar:from_two_tab(t1, t2, narrow, wide) + end + end + return true, nil +end + +-- public functions + +function ITF:get_checkdigit(n, method) + if type(n) ~= "number" then return nil, "[ArgErr] 'n' is not a number" end + if n < 0 then return nil, "[ArgErr] found a negative number" end + if n - math.floor(n) ~= 0 then return nil, "[ArgErr] found a float number" end + method = method or self.check_digit_method + local last, t = n_to_arr(n) + return checkdigit(t, last, method) +end + +-- internal methods for constructors + +function ITF:_finalize() --> ok, err + -- check digit action + local policy = self.check_digit_policy + local slen = self._code_len + local is_even = (slen % 2 == 0) + local digits = self._code_data + if policy == "none" then + if not is_even then + rshift(digits) -- add a heading zero for padding + slen = slen + 1 + end + elseif policy == "add" then + if is_even then + rshift(digits) -- add a heading zero for padding + slen = slen + 1 + end + local c = checkdigit(digits, slen, self.check_digit_method) + digits[#digits + 1] = c + elseif policy == "verify" then + if not is_even then + rshift(digits) + slen = slen + 1 + end + local c = checkdigit(digits, slen - 1, self.check_digit_method) + if c ~= digits[slen] then + return false, "[DataErr] wrong check digit" + end + else + return false, "[InternalError] wrong enum value" + end + self._code_len = slen + return true, nil +end + +-- drawing function +-- tx, ty is an optional translator vector +function ITF:append_ga(canvas, tx, ty) --> canvas + local err = canvas:start_bbox_group(); assert(not err, err) + -- draw the start symbol + local xdim = self.module + local ratio = self.ratio + local symb_len = 2 * xdim * (3 + 2*ratio) + local x0 = tx or 0 + local xpos = x0 + local y0 = ty or 0 + local y1 = y0 + self.height + local start = self._vbar_start + local err + err = canvas:encode_Vbar(start, xpos, y0, y1); assert(not err, err) + xpos = xpos + 4 * xdim + -- draw the code symbol + local digits = self._code_data + local vbars = self._vbar_data + for i = 1, #digits, 2 do + local index = 10 * digits[i] + digits[i+1] + local b = vbars[index] + err = canvas:encode_Vbar(b, xpos, y0, y1); assert(not err, err) + xpos = xpos + symb_len + end + -- draw the stop symbol + local stop = self._vbar_stop + err = canvas:encode_Vbar(stop, xpos, y0, y1); assert(not err, err) + -- bounding box setting + local x1 = xpos + (2 + ratio)*xdim + local qz = self.quietzone + local b1x, b1y = x0 - qz, y0 + local b2x, b2y = x1 + qz, y1 + if self.bearer_bars_enabled then + local w = self.bearer_bars_thickness + err = canvas:encode_linethick(w); assert(not err, err) + b1y, b2y = b1y - w, b2y + w + local layout = self.bearer_bars_layout + if layout == "hbar" then + err = canvas:encode_hline(b1x, b2x, y0 - w/2); assert(not err, err) + err = canvas:encode_hline(b1x, b2x, y1 + w/2); assert(not err, err) + elseif layout == "frame" then + err = canvas:encode_rectangle(b1x - w/2, y0 - w/2, b2x + w/2, y1 + w/2) + assert(not err, err) + b1x, b2x = b1x - w, b2x + w + else + error("[IntenalErr] bearer bars layout option is wrong") + end + end + local err = canvas:stop_bbox_group(b1x, b1y, b2x, b2y) + assert(not err, err) + return canvas +end + +return ITF diff --git a/macros/luatex/generic/barracuda/src/lib-driver/brcd-driver.lua b/macros/luatex/generic/barracuda/src/lib-driver/brcd-driver.lua new file mode 100644 index 0000000000..4827a190c5 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-driver/brcd-driver.lua @@ -0,0 +1,399 @@ +-- +-- ga Intermediate Graphic Language for barcode drawing +-- Copyright (C) 2019 Roberto Giacomelli +-- +-- Basic driver interface +-- drawing elementary vector shape +-- All dimensions are in scaled point (sp) + +local Driver = { + _VERSION = "Driver v0.0.9", + _NAME = "Driver", + _DESCRIPTION = "Driver for ga graphic assembler stream", +} + +Driver.__index = Driver +Driver._drv_instance = {} -- driver instances repository + +-- driver_type/submodule name +Driver._drv_available_drv = { -- lowercase keys please + native = "lib-driver.brcd-drv-pdfliteral", -- only LuaTeX driver + svg = "lib-driver.brcd-drv-svg", +} + +function Driver:_get_driver(id_drv) --> object, err + if type(id_drv) ~= "string" then + return nil, "[ArgErr] 'id_drv' is not a string" + end + if not self._drv_available_drv[id_drv] then + return nil, "[ArgErr] driver '"..id_drv.."' not found" + end + local t_drv = self._drv_instance + if t_drv[id_drv] then -- is the repo already loaded? + return t_drv[id_drv], nil + else -- loading driver + local module = self._drv_available_drv[id_drv] + local channel = require(module) + t_drv[id_drv] = channel + return channel, nil + end +end + +function Driver:_new_state() --> a new state + return { + line_width = 65781.76, -- line width 1bp (in scaled point sp) + line_cap = 0, -- line cap style + line_join = 0, -- line join style + gtext = false, -- text group off + bb_on = true, -- bounding box checking activation + bb_x1 = nil, -- bounding box coordinates in sp (nil means no data) + bb_y1 = nil, + bb_x2 = nil, + bb_y2 = nil, + mm = 186467.98110236, -- conversion factor sp -> mm (millimeter) + bp = 65781.76, -- conversion factor sp -> bp (big point) + } +end + +function Driver:_ga_process(drv, ga, st, bf, xt) + local op_fn = self._opcode_v001 + local pc = 1 -- program counter + local data = ga._data + while data[pc] do -- stream processing + local opcode = data[pc] + local fn = assert(op_fn[opcode], "[InternalErr] unimpl opcode ".. opcode) + pc = fn(drv, st, pc + 1, data, bf, xt) + end +end + +-- save graphic data in an external file with the 'id_drv' format +-- id_drv: specific driver output +-- ga: ga object +-- filename: file name +-- ext: file extension (optional) +function Driver:save(id_drv, ga, filename, ext) --> ok, err + -- retrive the output library + local drv, err = self:_get_driver(id_drv) + if err then return false, err end + -- init + local state = self:_new_state() + local buf, txt_buf = drv.init_buffer(state) -- a new buffer and text_buffer + -- processing + self:_ga_process(drv, ga, state, buf, txt_buf) + -- buffer finalizing + drv.close_buffer(state, buf, txt_buf) -- finalize the istruction + -- file saving + local sep = drv.buf_sep + ext = ext or drv.ext + local fn = io.open(filename.."."..ext, "w") -- output the file + fn:write(table.concat(buf, sep)) -- concat the buffer + fn:close() + return true, nil +end + +-- insert a ga drawing in a TeX box +-- PDFnative only function +function Driver:ga_to_hbox(ga, boxname) --> ok, err + -- retrive the output library + local id_drv = "native" + local drv, err = self:_get_driver(id_drv) + if err then return false, err end + -- init process + local state = self:_new_state() + local buf, txt_buf = drv.init_buffer(state) -- a new buffer and text_buffer + -- processing + self:_ga_process(drv, ga, state, buf, txt_buf) + -- finalizing + drv.close_buffer(state, buf, txt_buf) -- finalize the istruction sequence + -- build hbox + local ok, err = drv.hboxcreate(boxname, state, buf, txt_buf) + return ok, err +end + + +-- operational functions +-- _op_v001 corresponds to the version 1 of ga graphic assembler specification. +-- The table indexes every opcode to a function that takes these arguments and +-- return the updated program counter pointed to the next operation: +-- fn: format specific driver library +-- st: state +-- pc: program counter +-- ga: read only ga stream +-- bf: the output buffer +-- xt: the output text object buffer +Driver._opcode_v001 = { + [1] = function (drv, st, pc, ga, bf, xt) -- 1 ; set line width + local w = ga[pc] + st.line_width = w + if not drv.append_001 then + error("[InternalErr] unimplemented opcode 1 for "..drv._NAME) + end + drv.append_001(st, bf, xt, w) + return pc + 1 + end, + [2] = function (drv, st, pc, ga, bf, xt) -- 2 ; set line cap style + local style = ga[pc] + st.line_cap = style + if not drv.append_002 then + error("[InternalErr] unimplemented opcode 2 for "..drv._NAME) + end + drv.append_002(st, bf, xt, style) + return pc + 1 + end, + [3] = function (drv, st, pc, ga, bf, xt) -- 3 ; set line join style + local join = ga[pc] + if not drv.append_003 then + error("[InternalErr] unimplemented opcode 3 for "..drv._NAME) + end + drv.append_003(st, bf, xt, join) + return pc + 1 + end, + [30] = function (drv, st, pc, ga, bf, xt) -- start_bbox_group + assert(st.bb_on) + st.bb_on = false + return pc + end, + [31] = function (drv, st, pc, ga, bf, xt) -- end_bbox_group + assert(st.bb_on == false) + st.bb_on = true + local x1 = ga[pc]; pc = pc + 1 + local y1 = ga[pc]; pc = pc + 1 + local x2 = ga[pc]; pc = pc + 1 + local y2 = ga[pc]; pc = pc + 1 + if st.bb_x1 == nil then + st.bb_x1 = x1 + st.bb_y1 = y1 + st.bb_x2 = x2 + st.bb_y2 = y2 + else + if x1 < st.bb_x1 then st.bb_x1 = x1 end + if x2 > st.bb_x2 then st.bb_x2 = x2 end + if y1 < st.bb_y1 then st.bb_y1 = y1 end + if y2 > st.bb_y2 then st.bb_y2 = y2 end + end + return pc + end, + -- draw an horizontal line + -- 33 + [33] = function (drv, st, pc, ga, bf, xt) + local x1 = ga[pc]; pc = pc + 1 + local x2 = ga[pc]; pc = pc + 1 + local y = ga[pc]; pc = pc + 1 + if st.bb_on then -- eventually update bbox + local hw = st.line_width/2 + local by1 = y - hw + local by2 = y + hw + if st.bb_x1 == nil then + st.bb_x1 = x1 + st.bb_x2 = x2 + st.bb_y1 = by1 + st.bb_y2 = by2 + else + if x1 < st.bb_x1 then st.bb_x1 = x1 end + if x2 > st.bb_x2 then st.bb_x2 = x2 end + if by1 < st.bb_y1 then st.bb_y1 = by1 end + if by2 > st.bb_y2 then st.bb_y2 = by2 end + end + end + if not drv.append_033 then + error("[InternalErr] unimplemented opcode 33 for "..drv._NAME) + end + drv.append_033(st, bf, xt, x1, x2, y) + return pc + end, + -- draw a vertical line + [34] = function (drv, st, pc, ga, bf, xt) -- 34 + local y1 = ga[pc]; pc = pc + 1 + local y2 = ga[pc]; pc = pc + 1 + local x = ga[pc]; pc = pc + 1 + if st.bb_on then -- eventually update the figure bounding box + local hw = st.line_width/2 + local bx1 = x - hw + local bx2 = x + hw + if st.bb_x1 == nil then + st.bb_x1 = bx1 + st.bb_x2 = bx2 + st.bb_y1 = y1 + st.bb_y2 = y2 + else + if bx1 < st.bb_x1 then st.bb_x1 = bx1 end + if bx2 > st.bb_x2 then st.bb_x2 = bx2 end + if y1 < st.bb_y1 then st.bb_y1 = y1 end + if y2 > st.bb_y2 then st.bb_y2 = y2 end + end + end + if not drv.append_034 then + error("[InternalErr] unimplemented opcode 34 for "..drv._NAME) + end + drv.append_034(st, bf, xt, y1, y2, x) + return pc + end, + -- draw a group of vertical lines (vbar) + -- 36 + [36] = function(drv, st, pc, ga, bf, xt) -- vbar + local y1 = ga[pc]; pc = pc + 1 + local y2 = ga[pc]; pc = pc + 1 + local nbar = ga[pc]; pc = pc + 1 + assert(nbar > 0) + local h = y2 - y1 -- height common to every rectangle + assert(h > 0) + local pc_next = pc + 2 * nbar + if drv.append_036_start then + drv.append_036_start(st, bf, xt, nbar, y1, y2) + end + local bx1, bx2 + for i = pc, pc_next - 1, 2 do -- reading coordinates + local x = assert(ga[i], "[InternalErr] ga prematurely reached the end") + local w = assert(ga[i+1], "[InternalErr] ga prematurely reached the end") + drv.append_036_bar(st, bf, xt, x, w, y1, y2) + -- check the bounding box only if the corresponding flag is true + local x1 = x - w/2 + local x2 = x + w/2 + if st.bb_on then + if bx1 == nil then + bx1 = x1 + bx2 = x2 + else + if x1 < bx1 then bx1 = x1 end + if x2 > bx2 then bx2 = x2 end + end + end + end + if drv.append_036_stop then + drv.append_036_stop(st, bf, xt, nbar, y1, y2) + end + if st.bb_on then -- eventually update bbox + if st.bb_x1 == nil then + st.bb_x1 = bx1 + st.bb_x2 = bx2 + st.bb_y1 = y1 + st.bb_y2 = y2 + else + if bx1 < st.bb_x1 then st.bb_x1 = bx1 end + if bx2 > st.bb_x2 then st.bb_x2 = bx2 end + if y1 < st.bb_y1 then st.bb_y1 = y1 end + if y2 > st.bb_y2 then st.bb_y2 = y2 end + end + end + return pc_next + end, + -- draw a rectangle + -- 48 + [48] = function(drv, st, pc, ga, bf, xt) + local x1 = ga[pc]; pc = pc + 1 + local y1 = ga[pc]; pc = pc + 1 + local x2 = ga[pc]; pc = pc + 1 + local y2 = ga[pc]; pc = pc + 1 + -- check the bounding box only if the flag is true + if st.bb_on then + local hw = st.line_width/2 + local bx1, bx2 = x1 - hw, x2 + hw + local by1, by2 = y1 - hw, y2 + hw + if st.bb_x1 == nil then + st.bb_x1 = bx1 + st.bb_x2 = bx2 + st.bb_y1 = by1 + st.bb_y2 = by2 + else + if bx1 < st.bb_x1 then st.bb_x1 = bx1 end + if bx2 > st.bb_x2 then st.bb_x2 = bx2 end + if by1 < st.bb_y1 then st.bb_y1 = by1 end + if by2 > st.bb_y2 then st.bb_y2 = by2 end + end + end + if not drv.append_048 then + error("[InternalErr] unimplemented opcode 48 for "..drv._NAME) + end + drv.append_048(st, bf, xt, x1, y1, x2, y2) + return pc + end, + -- text + [130] = function(drv, st, pc, ga, bf, xt) -- text: ax ay xpos ypos string + local ax = ga[pc]; pc = pc + 1 + local ay = ga[pc]; pc = pc + 1 + local xpos = ga[pc]; pc = pc + 1 + local ypos = ga[pc]; pc = pc + 1 + assert(ga[pc] ~= 0, "[InternalErr] empty chars sequence") + while ga[pc] ~= 0 do + local c = ga[pc]; pc = pc + 1 + drv.append_130_char(st, bf, xt, c) + end + local x1, y1, x2, y2 = drv.append_130_stop(st, bf, xt, xpos, ypos, ax, ay) + -- bounding box checking + if st.bb_on then + if st.bb_x1 == nil then + st.bb_x1 = x1 + st.bb_x2 = x2 + st.bb_y1 = y1 + st.bb_y2 = y2 + else + if x1 < st.bb_x1 then st.bb_x1 = x1 end + if x2 > st.bb_x2 then st.bb_x2 = x2 end + if y1 < st.bb_y1 then st.bb_y1 = y1 end + if y2 > st.bb_y2 then st.bb_y2 = y2 end + end + end + return pc + 1 + end, + [131] = function(drv, st, pc, ga, bf, xt) -- text_xspaced x1 xgap ay ypos chars + local x1 = ga[pc]; pc = pc + 1 + local xgap = ga[pc]; pc = pc + 1 + local ay = ga[pc]; pc = pc + 1 + local ypos = ga[pc]; pc = pc + 1 + assert(ga[pc] ~= 0, "[InternalErr] empty chars sequence") + while ga[pc] ~= 0 do + local c = ga[pc]; pc = pc + 1 + drv.append_131_char(st, bf, xt, c, xgap) + end + local bx1, by1, bx2, by2 = drv.append_131_stop(st, bf, xt, x1, xgap, ypos, ay) + -- bounding box checking + if st.bb_on then -- eventually update bbox + if st.bb_x1 == nil then + st.bb_x1 = bx1 + st.bb_x2 = bx2 + st.bb_y1 = by1 -- no depth + st.bb_y2 = by2 + else + if bx1 < st.bb_x1 then st.bb_x1 = bx1 end + if bx2 > st.bb_x2 then st.bb_x2 = bx2 end + if by1 < st.bb_y1 then st.bb_y1 = by1 end + if by2 > st.bb_y2 then st.bb_y2 = by2 end + end + end + return pc + 1 + end, + -- text_xwidth + -- + [132] = function (drv, st, pc, ga, bf, xt) + local ay = ga[pc]; pc = pc + 1 -- y anchor + local x1 = ga[pc]; pc = pc + 1 -- left limit + local x2 = ga[pc]; pc = pc + 1 -- right limit + assert (x1 ~= x2, "[InternalErr] x coordinate are equal") + assert (x1 < x2, "[InternalErr] not ordered x1, x2 limits") + local ypos = ga[pc]; pc = pc + 1 -- y coordinate of anchor point + assert(ga[pc] ~= 0, "[InternalErr] empty chars sequence") + while ga[pc] ~= 0 do + local c = ga[pc]; pc = pc + 1 + drv.append_132_char(st, bf, xt, c) + end + local bx1, by1, bx2, by2 = drv.append_132_stop(st, bf, xt, x1, x2, ypos, ay) + -- bounding box checking + if st.bb_on then -- eventually update bbox + if st.bb_x1 == nil then + st.bb_x1 = bx1 + st.bb_x2 = bx2 + st.bb_y1 = by1 -- no depth + st.bb_y2 = by2 + else + if bx1 < st.bb_x1 then st.bb_x1 = bx1 end + if bx2 > st.bb_x2 then st.bb_x2 = bx2 end + if by1 < st.bb_y1 then st.bb_y1 = by1 end + if by2 > st.bb_y2 then st.bb_y2 = by2 end + end + end + return pc + 1 + end, +} + +return Driver + diff --git a/macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-pdfliteral.lua b/macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-pdfliteral.lua new file mode 100644 index 0000000000..50baea1472 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-pdfliteral.lua @@ -0,0 +1,284 @@ +-- +-- ga graphic assembler or +-- Intermediate Graphic Language for barcode drawing +-- Copyright (C) 2019 Roberto Giacomelli +-- +-- All dimensions are in scaled point (sp) +-- ga LuaTeX Driver (native implementation node+pdfliteral) + +-- class for drawing elementary geometric elements +local PDFnative = { + _VERSION = "PDFnative v0.0.4", + _NAME = "PDFnative", + _DESCRIPTION = "A LuaTeX native pdfliteral driver for ga graphic stream", +} + +PDFnative.ext = "txt" -- file extension +PDFnative.buf_sep = "\n" -- separation string for buffer concat + +function PDFnative.init_buffer(st) --> buffer, text buffer + st.head = nil -- addition for text processing (to remember purpose) + st.last = nil + st.hbox = nil + st.cw = nil + st.x_hbox = nil + st.char_counter = nil + local bf = {"q"} -- create a new graphic stack + local xt = {} -- text buffer + return bf, xt +end + +function PDFnative.close_buffer(st, bf, xt) + bf[#bf + 1] = "Q" -- stack restoring +end + +-- text utility special functions + +local function newglue(w) --> node + local n = node.new("glue") + n.width = w + return n +end + +local function newglyph(c) --> node -- ? U+2423 ␣ for whitespace? + if c == 32 then + return newglue(tex.sp "3.5pt") + end + local n = node.new("glyph") + n.char = c + n.font = font.current() + return n +end + +local function newpdfliteral(buf) --> node + local npdf = node.new("whatsit", "pdf_literal") + npdf.mode = 0 + npdf.data = table.concat(buf, "\n") + return npdf +end + +local function append_glyph(head, last, c) --> head, last, xdim + if c == 32 then -- space + local space = tex.sp "3.5pt" + head, last = node.insert_after(head, last, newglue(space)) + return head, last, space + else + local g = newglyph(c) + local xdim = g.width + head, last = node.insert_after(head, last, g) + return head, last, xdim + end +end + +-- special drawing function +function PDFnative.hboxcreate(hboxname, st, buf, txt) --> ok, err + local node = assert(node, "This is not LuaTeX!") + local tex = assert(tex) + local font = assert(font) + if not tex.isbox(hboxname) then + return nil, string.format("Box register [%s] doesn’t exist", hboxname) + end + local bb_x1, bb_y1, bb_x2, bb_y2 = st.bb_x1, st.bb_y1, st.bb_x2, st.bb_y2 + local npdf = newpdfliteral(buf) -- node whatsit pdfliteral + -- vboxing, vertical correction + local vpdf = node.vpack(npdf) + vpdf.height = -bb_y1 + -- glue, for horizontal correction + local ng = newglue(-bb_x1) + local head, last = node.insert_after(ng, ng, vpdf) + local xprev = 0.0 + for _, t in ipairs(txt) do -- text processing + local gy = newglue(t[3] - bb_y1) -- n, x, y, w, h -- t[3] -t[5] - bb_y1 + local nvtxt = node.insert_after(t[1], t[1], gy) + local vtxt = node.vpack(nvtxt) + local gx = newglue(t[2]-xprev) + head, last = node.insert_after(head, last, gx) + head, last = node.insert_after(head, last, vtxt) + xprev = t[2] + t[4] + end + -- hboxing + local hbox = node.hpack(head) + hbox.width = bb_x2 - bb_x1 + hbox.height = bb_y2 - bb_y1 + tex.box[hboxname] = hbox + return true, nil +end + +-- PDF literal encoding functions + +-- 1 ; set line width +function PDFnative.append_001(st, bf, xt, w) + local bp = st.bp -- 1bp (sp) + bf[#bf + 1] = string.format("%0.6f w", w/bp) +end + +-- 2 ; set line cap style +function PDFnative.append_002(st, bf, xt, cap) + bf[#bf + 1] = string.format("%d J", cap) +end + +-- 3 ; set line join style +function PDFnative.append_003(st, bf, xt, j) + bf[#bf + 1] = string.format("%d j", j) +end + +-- draw an horizontal line +-- 33 +function PDFnative.append_033(st, bf, xt, x1, x2, y) + local bp = st.bp -- conversion factor bp -> sp + bf[#bf + 1] = string.format("% 0.6f %0.6f m", x1/bp, y/bp) + bf[#bf + 1] = string.format("% 0.6f %0.6f l", x2/bp, y/bp) + bf[#bf + 1] = "S" -- stroke +end + +-- vline +-- draw a vertical line +-- 34 +function PDFnative.append_034(st, bf, xt, y1, y2, x) + local bp = st.bp -- conversion factor bp -> sp + bf[#bf + 1] = string.format("% 0.6f %0.6f m", x/bp, y1/bp) + bf[#bf + 1] = string.format("% 0.6f %0.6f l", x/bp, y2/bp) + bf[#bf + 1] = "S" -- stroke +end + +-- Vbar +-- draw a group of vertical lines +-- 36 ... +function PDFnative.append_036_bar(st, bf, xt, x, w, y1, y2) + local bp = st.bp -- conversion factor bp -> sp + local fmt = "%0.6f %0.6f %0.6f %0.6f re" + local x1 = x - w/2 + local h = y2 - y1 + -- pdf literal insertion + bf[#bf + 1] = string.format(fmt, x1/bp, y1/bp, w/bp, h/bp) +end +function PDFnative.append_036_stop(st, bf, xt, nbar, y1, y2) + bf[#bf + 1] = "f" -- fill + bf[#bf + 1] = "S" -- stroke +end + +-- draw a rectangle +-- 48 +function PDFnative.append_048(st, bf, xt, x1, y1, x2, y2) + local w = x2 - x1 -- rectangle width + assert(w > 0) + local h = y2 - y1 -- rectangle height + assert(h > 0) + local bp = st.bp -- conversion factor + local fmt = "%0.6f %0.6f %0.6f %0.6f re S" + -- pdf literal string + bf[#bf + 1] = string.format(fmt, x1/bp, y1/bp, w/bp, h/bp) +end + +-- 130 Text with several glyphs +-- 130 +function PDFnative.append_130_char(st, bf, xt, c) + local head, last = st.head, st.last + head, last = append_glyph(head, last, c) + st.head = head + st.last = last +end +-- return bounding box of the text object without deep +function PDFnative.append_130_stop(st, bf, xt, xpos, ypos, ax, ay) + local head = assert(st.head) + st.head = nil -- reset temporary reference + st.last = nil + local hbox = node.hpack(head) + local w, h, d = node.dimensions(hbox) + local x1 = xpos - ax*w -- text position + local y1; if ay > 0 then + y1 = ypos - h*ay + else + y1 = ypos - d*ay + end + xt[#xt + 1] = {hbox, x1, y1 - d, w, h} + return x1, y1, x1 + w, y1 + h +end + +-- 131 , Text with glyphs equally spaced on its vertical axis +-- 131 +function PDFnative.append_131_char(st, bf, xt, c, xgap) + local head, last, prec_cw = st.head, st.last, st.cw + local cw + if prec_cw then + local g = newglyph(c) + cw = g.width + local isp = xgap - (cw + prec_cw)/2 + local s = newglue(isp) + head, last = node.insert_after(head, last, s) + head, last = node.insert_after(head, last, g) + else -- first char + head, last, cw = append_glyph(head, last, c) + st.x_hbox = cw/2 + end + st.cw = cw + st.head = head + st.last = last +end +function PDFnative.append_131_stop(st, bf, xt, x1, xgap, ypos, ay) --> bb + local head = assert(st.head) + st.head = nil -- reset temporary reference + st.last = nil + st.cw = nil + local hbox = node.hpack(head) + local w, h, d = node.dimensions(hbox) + local bx1 = x1 - st.x_hbox + st.x_hbox = nil -- reset temporary references + local y1; if ay > 0 then + y1 = ypos - h*ay + else + y1 = ypos - d*ay + end + xt[#xt + 1] = {hbox, bx1, y1 - d, w, h} + return bx1, y1, bx1 + w, y1 + h +end + +-- 132 Glyphs equally spaced on vertical axis between two x coordinates +-- 132 +function PDFnative.append_132_char(st, bf, xt, c) + local head, last = st.head, st.last + if head then + local g = newglyph(c) + local s = newglue(1) + head, last = node.insert_after(head, last, s) + head, last = node.insert_after(head, last, g) + st.char_counter = st.char_counter + 1 + else -- first char + head, last, cw = append_glyph(head, last, c) + st.cw = cw + st.char_counter = 1 + end + st.head = head + st.last = last +end +function PDFnative.append_132_stop(st, bf, xt, x1, x2, ypos, ay) --> p1, p2 + local head, last = st.head, st.last + st.head = nil -- reset temporary registry + st.last = nil + local w_1 = st.cw + st.cw = nil + local i = st.char_counter + st.char_counter = nil + local w_n = last.width + local xgap = (x2 - x1 - (w_1 + w_n)/2)/(i - 1) + local c_curr = head + for _ = 1, i - 1 do + local g = c_curr.next + local c_next = g.next + local w_2 + w_1, w_2 = c_curr.width, c_next.width + g.width = xgap - (w_1 + w_2)/2 + c_curr = c_next + end + local hbox = node.hpack(head) + local w, h, d = node.dimensions(hbox) + local y; if ay > 0 then + y = ypos - h*ay + else + y = ypos - d*ay + end + xt[#xt + 1] = {hbox, x1, y - d, w, h} + return x1, y, x2, y + h +end + +return PDFnative diff --git a/macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-svg.lua b/macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-svg.lua new file mode 100644 index 0000000000..7a2c5ab112 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-driver/brcd-drv-svg.lua @@ -0,0 +1,260 @@ +-- +-- ga Intermediate Graphic Language for barcode drawing +-- SVG library +-- Copyright (C) 2019 Roberto Giacomelli +-- +-- All dimension in the ga stream are scaled point (sp) +-- 1 pt = 65536 sp + +-- class for drawing elementary geometric elements +local SVG = { + _VERSION = "SVGdriver v0.0.1", + _NAME = "SVGdriver", + _DESCRIPTION = "A SVG driver for the ga graphic stream", +} + +SVG.ext = "svg" -- file extension +SVG.buf_sep = nil -- separation string for buffer concat + +function SVG.init_buffer(st) --> buffer, text buffer + local bf = { + '\n', + '\n', + '\n', + '\n', + } + -- additions for SVG driver to 'state' + st.ident_lvl = 1 -- identation level + st.char_buf = nil + local mm = st.mm + st.h_char = 2.1 * mm -- char height (mm) + st.w_char = st.h_char / 1.303 -- avg char width (mm) + st.d_char = st.h_char / 3.7 -- char deep (mm) + return bf, {} +end + +function SVG.close_buffer(st, bf, xt) + bf[#bf + 1] = '\n' -- close svg xml element + bf[#bf + 1] = '\n' -- a last empty line + local mm = st.mm + local x1, y1, x2, y2 = st.bb_x1, st.bb_y1, st.bb_x2, st.bb_y2 + local w = (x2 - x1)/mm + local h = (y2 - y1)/mm + local fmt_wh = bf[7] + bf[7] = string.format(fmt_wh, w, h) -- line 7 + local x, y = x1/mm, -y2/mm + local fmt_vw = bf[8] + bf[8] = string.format(fmt_vw, x, y, w, h) +end + +-- SVG encoding functions + +-- 1 ; set line width +function SVG.append_001(st, bf, xt, w) + -- nothing to do +end + +-- draw an horizontal line +-- 33 +function SVG.append_033(st, bf, xt, x1, x2, y) + local lvl = st.ident_lvl + local ident = string.rep(" ", lvl) -- a couple of spaces as indentation + local mm = st.mm -- conversion ratio sp -> bp + bf[#bf + 1] = string.format( -- element + '%s\n' +end + +-- Vertical line: 34 +function SVG.append_034(st, bf, xt, y1, y2, x) + local lvl = st.ident_lvl + local ident = string.rep(" ", lvl) -- a couple of spaces as indentation + local mm = st.mm -- conversion ratio sp -> mm + bf[#bf + 1] = string.format( -- element + '%s\n' +end + +-- Vbar +-- draw a group of vertical lines +-- 36 ... +function SVG.append_036_start(st, bf, xt, nbar, y1, y2) + local lvl = st.ident_lvl + local ident = string.rep(" ", lvl) + bf[#bf + 1] = ident..'\n' -- open a group + st.ident_lvl = lvl + 1 +end +function SVG.append_036_bar(st, bf, xt, x, w, y1, y2) + local lvl = st.ident_lvl + local ident = string.rep(" ", lvl) + local mm = st.mm -- conversion factor mm -> sp + bf[#bf + 1] = string.format( + '%s\n', + ident, x/mm, -y2/mm, -y1/mm, w/mm + ) +end +function SVG.append_036_stop(st, bf, xt, nbar, y1, y2) + st.ident_lvl = st.ident_lvl - 1 + local ident = string.rep(" ", st.ident_lvl) + bf[#bf + 1] = ident..'\n' -- end group +end + +-- Text +-- 130 Text with several glyphs +-- 130 +function SVG.append_130_char(st, bf, xt, c) + local ch = string.char(c) + if not st.char_buf then + st.char_buf = {ch} + else + local chars = st.char_buf + chars[#chars + 1] = ch + end +end +function SVG.append_130_stop(st, bf, xt, xpos, ypos, ax, ay) --> p1, p2 + local c = st.char_buf + st.char_buf = nil + local txt = table.concat(c) + local w = st.w_char * #c -- approx dim + local h = st.h_char + local d = st.d_char + local anchor = "" + local x1 = xpos + local bx1 = xpos + if ax == 0 then -- start (default) + elseif ax == 0.5 then -- middle + anchor = ' text-anchor="middle"' + bx1 = bx1 - w/2 + elseif ax == 1 then -- end + anchor = ' text-anchor="end"' + bx1 = bx1 - w + else + x1 = x1 - ax*w + bx1 = x1 + end + local y1 = ypos + if ay > 0 then + y1 = y1 - h*ay + else + y1 = y1 - d*ay + end + local fs = st.h_char * 1.37 -- sp + local lvl = st.ident_lvl + local ident = string.rep(" ", lvl) + local mm = st.mm + bf[#bf + 1] = string.format( + '%s\n', + ident, x1/mm, -y1/mm, fs/mm, anchor + ) + bf[#bf + 1] = ident..txt + bf[#bf + 1] = ident..'\n' + return bx1, y1, bx1 + w, y1 + h +end + +-- 131 , Text with glyphs equally spaced on its vertical axis +-- 131 +function SVG.append_131_char(st, bf, xt, c, xgap) + local ch = string.char(c) + if not st.char_buf then + st.char_buf = {ch} + else + local chars = st.char_buf + chars[#chars + 1] = ch + end +end +function SVG.append_131_stop(st, bf, xt, x1, xgap, ypos, ay) --> p1, p2 + local chars = st.char_buf + st.char_buf = nil + local n = #chars + local h = st.h_char -- height + local d = st.d_char -- deep + local hw = st.w_char/2 -- sp half width + local y1 = ypos + if ay > 0 then + y1 = y1 - h*ay + else + y1 = y1 - d*ay + end + local lvl = st.ident_lvl + local ident = string.rep(" ", lvl) + local fs = st.h_char * 1.37 -- (sp) font-size -> inter baselines distance + local mm = st.mm + bf[#bf + 1] = string.format( + '%s\n', + ident, -y1/mm, fs/mm + ) + local x = x1 + for _, c in ipairs(chars) do + bf[#bf + 1] = string.format('%s%s\n', + ident, x/mm, c + ) + x = x + xgap + end + bf[#bf + 1] = ident..'\n' + local x2 = x1 + (n - 1)*xgap -- sp + return x1 - hw, y1, x2 + hw, y1 + h -- text group bounding box +end + +-- 132 Glyphs equally spaced on vertical axis between two x coordinates +-- 132 +function SVG.append_132_char(st, bf, xt, c, xgap) + local ch = string.char(c) + if not st.char_buf then + st.char_buf = {ch} + else + local chars = st.char_buf + chars[#chars + 1] = ch + end +end +function SVG.append_132_stop(st, bf, xt, x1, x2, ypos, ay) --> p1, p2 + local chars = st.char_buf; st.char_buf = nil + local n = #chars + local h = st.h_char -- height (approx) + local d = st.d_char -- deep (approx) + local cw = st.w_char -- (sp) char width (approx) + local xgap = (x2 - x1 - cw)/(n - 1) + local y1 = ypos + if ay > 0 then + y1 = y1 - h*ay + else + y1 = y1 - d*ay + end + local lvl = st.ident_lvl + local ident = string.rep(" ", lvl) + local fs = st.h_char * 1.37 -- font-size -> inter baselines distance + local mm = st.mm + bf[#bf + 1] = string.format( + '%s\n', + ident, -y1/mm, fs/mm + ) + local x = x1 + cw/2 + for _, c in ipairs(chars) do + bf[#bf + 1] = string.format('%s%s\n', + ident, x/mm, c + ) + x = x + xgap + end + bf[#bf + 1] = ident..'\n' + return x1, y1, x2, y1 + h -- text group bounding box +end + +return SVG diff --git a/macros/luatex/generic/barracuda/src/lib-geo/brcd-gacanvas.lua b/macros/luatex/generic/barracuda/src/lib-geo/brcd-gacanvas.lua new file mode 100644 index 0000000000..cccc68f447 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-geo/brcd-gacanvas.lua @@ -0,0 +1,340 @@ +-- class gaCanvas +-- Copyright (C) 2019 Roberto Giacomelli + +-- ga -- basic function + +local gaCanvas = { + _VERSION = "gacanvas v0.0.4", + _NAME = "gaCanvas", + _DESCRIPTION = "A library for dealing with ga stream", +} +gaCanvas.__index = gaCanvas + +-- ga specification: see the file ga-grammar.pdf in the doc directory + +-- gaCanvas constructor +function gaCanvas:new() --> object + local o = { + _data = {}, + _v = 100, -- version of the ga format + } + setmetatable(o, self) + return o +end + +-- Ipothetical another constructor +-- function gaCanvas:from_tcp_server() --> err +-- end + +-- line width: opcode <1> +function gaCanvas:encode_linethick(w) --> err + if type(w) ~= "number" then return "[ArgErr] 'w' number expected" end + if w < 0 then return "[ArgErr] negative value for 'w'" end + local data = self._data + data[#data + 1] = 1 -- opcode for line thickness + data[#data + 1] = w +end + +-- line cap style: opcode <2> +-- 0 Butt cap +-- 1 Round cap +-- 2 Projecting square cap +function gaCanvas:encode_linecap(cap) --> err + if type(cap) ~= "number" then return "[ArgErr] 'cap' arg number expected" end + if cap == 0 or cap == 1 or cap == 2 then + local data = self._data + data[#data + 1] = 2 -- opcode for line cap style + data[#data + 1] = cap + else + return "[ArgErr] invalid value for 'cap'" + end +end + +-- line cap style: opcode <3> +-- 0 Miter join +-- 1 Round join +-- 2 Bevel join +function gaCanvas:encode_linejoin(join) --> err + if type(join) ~= "number" then return "[ArgErr] 'join' arg number expected" end + if join == 0 or join == 1 or join == 2 then + local data = self._data + data[#data + 1] = 3 -- opcode for line join style + data[#data + 1] = join + else + return "[ArgErr] invalid value for 'join'" + end +end + +-- Stop checking the bounding box +-- opcode: <30> +function gaCanvas:start_bbox_group() --> err + local data = self._data + data[#data + 1] = 30 +end + +-- restart checking the bounding box +-- and insert the specified bb for the entire object group +-- code: <31> x1 y1 x2 y2 +function gaCanvas:stop_bbox_group(x1, y1, x2, y2) --> err + if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end + if type(y1) ~= "number" then return "[ArgErr] 'y1' number expected" end + if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end + if type(y2) ~= "number" then return "[ArgErr] 'y2' number expected" end + if x1 > x2 then x1, x2 = x2, x1 end -- reorder coordinates + if y1 > y2 then y1, y2 = y2, y1 end + local data = self._data + data[#data + 1] = 31 -- bounding box of the object group + data[#data + 1] = x1 + data[#data + 1] = y1 + data[#data + 1] = x2 + data[#data + 1] = y2 +end + +-- insert a line from point (x1, y1) to the point (x2, y2) +-- <32> x1 y1 x2 y2 +function gaCanvas:encode_line(x1, y1, x2, y2) --> err + if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end + if type(y1) ~= "number" then return "[ArgErr] 'y1' number expected" end + if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end + if type(y2) ~= "number" then return "[ArgErr] 'y2' number expected" end + local data = self._data + data[#data + 1] = 32 -- append line data + data[#data + 1] = x1 + data[#data + 1] = y1 + data[#data + 1] = x2 + data[#data + 1] = y2 +end + +-- insert an horizontal line from point (x1, y) to point (x2, y) +-- <33> x1 x2 y +function gaCanvas:encode_hline(x1, x2, y) --> err + if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end + if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end + if type(y) ~= "number" then return "[ArgErr] 'y2' number expected" end + local data = self._data + data[#data + 1] = 33 -- append hline data + data[#data + 1] = x1 + data[#data + 1] = x2 + data[#data + 1] = y +end + +-- insert a rectangle from point (x1, x2) to (x2, y2) +-- <48> +function gaCanvas:encode_rectangle(x1, y1, x2, y2) --> err + if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end + if type(y1) ~= "number" then return "[ArgErr] 'y1' number expected" end + if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end + if type(y2) ~= "number" then return "[ArgErr] 'y2' number expected" end + local d = self._data + d[#d + 1] = 48 -- append rectangle data + d[#d + 1] = x1 + d[#d + 1] = y1 + d[#d + 1] = x2 + d[#d + 1] = y2 +end + +-- Vbar object: opcode <36> +-- x0, y1, y2 ordinates +function gaCanvas:encode_Vbar(vbar, x0, y1, y2) --> err + if type(vbar) ~= "table" then + return "[ArgErr] table expected for 'vbar'" + end + if x0 == nil then + x0 = 0 + elseif type(x0) ~= "number" then + return "[ArgErr] 'x0' number expected" + end + if type(y1) ~= "number" then return "[ArgErr] 'y1' number expected" end + if type(y2) ~= "number" then return "[ArgErr] 'y2' number expected" end + -- ordinates + if y1 == y2 then return "[ArgErr] 'y1' 'y2' are the same value" end + if y1 > y2 then y1, y2 = y2, y1 end + local bars = assert(vbar._yline, "[InternalErr] no '_yline' field") + local bdim = #bars + if bdim == 0 then return "[InternalErr] number of bars is zero" end + if bdim % 2 ~= 0 then + return "[InternalErr] '_yline' does not have an even number of elements" + end + local data = self._data + data[#data + 1] = 36 -- vbar sequence start + data[#data + 1] = y1 + data[#data + 1] = y2 + data[#data + 1] = bdim / 2 -- the number of bars + for i = 1, bdim, 2 do + local coord = bars[i] + local width = bars[i + 1] + if type(coord) ~= "number" then + return "[Err] a coordinates is not a number" + end + if type(width) ~= "number" then + return "[Err] a width is not a number" + end + data[#data + 1] = coord + x0 + data[#data + 1] = width + end +end + +-- [text] <130> ax ay x y chars +function gaCanvas:encode_Text(txt, xpos, ypos, ax, ay) --> err + if type(txt) ~= "table" then + return "[ArgErr] 'txt' object table expected" + end + if type(xpos) ~= "number" then + return "[ArgErr] 'xpos' number expected" + end + if type(ypos) ~= "number" then + return "[ArgErr] 'ypos' number expected" + end + if ax == nil then + ax = 0 + elseif type(ax) ~= "number" then + return "[ArgErr] 'ax' number expected" + end + if ay == nil then + ay = 0 + elseif type(ay) ~= "number" then + return "[ArgErr] 'ay' number expected" + end + local data = self._data + data[#data + 1] = 130 + data[#data + 1] = ax -- relative anchor x-coordinate + data[#data + 1] = ay -- relative anchor y-coordinate + data[#data + 1] = xpos -- text x-coordinate + data[#data + 1] = ypos -- text y-coordinate + local chars = assert(txt.codepoint, "[InternalErr] no 'codepoint' field in txt") + if #chars == 0 then return "[InternalErr] 'txt' has no chars" end + for _, c in ipairs(chars) do + data[#data + 1] = c + end + data[#data + 1] = 0 -- end string signal +end + +-- glyphs equally spaced along the baseline +-- [text_xspaced] <131> x1 xgap ay ypos chars +function gaCanvas:encode_Text_xspaced(txt, x1, xgap, ypos, ay) --> err + if type(txt)~= "table" then return "[ArgErr] 'txt' object table expected" end + local chars = assert(txt.codepoint, "[InternalErr] no 'codepoint' field in txt") + if #chars == 0 then return "[InternalErr] 'txt' has no chars" end + if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end + if type(xgap) ~= "number" then return "[ArgErr] 'xgap' number expected" end + if xgap < 0 then + local n = #chars + x1 = x1 + (n - 1) * xgap + xgap = -xgap + end + if type(ypos) ~= "number" then return "[ArgErr] 'ypos' number expected" end + if ay == nil then + ay = 0 + elseif type(ay) ~= "number" then + return "[ArgErr] 'ay' number expected" + end + local data = self._data + data[#data + 1] = 131 + data[#data + 1] = x1 -- x-coordinate of the first axis from left to right + data[#data + 1] = xgap -- axial distance among gliphs + data[#data + 1] = ay -- anchor relative y-coordinate + data[#data + 1] = ypos -- text y-coordinate + for _, c in ipairs(chars) do + data[#data + 1] = c + end + data[#data + 1] = 0 -- end string signal +end + +-- text_xwidth +-- text equally spaced but within [x1, x2] coordinate interval +-- <132> +function gaCanvas:encode_Text_xwidth(txt, x1, x2, ypos, ay) --> err + if type(txt)~= "table" then return "[ArgErr] 'txt' object table expected" end + if type(x1) ~= "number" then return "[ArgErr] 'x1' number expected" end + if type(x2) ~= "number" then return "[ArgErr] 'x2' number expected" end + if type(ypos) ~= "number" then return "[ArgErr] 'ypos' number expected" end + if ay == nil then + ay = 0 + elseif type(ay) ~= "number" then + return "[ArgErr] 'ay' number expected" + end + local chars = assert(txt.codepoint, "[InternalErr] no 'codepoint' field in txt") + if #chars == 0 then return "[InternalErr] 'txt' has no chars" end + if x1 > x2 then x1, x2 = x2, x1 end -- reorder coordinates + local data = self._data + data[#data + 1] = 132 + data[#data + 1] = ay -- anchor relative y-coordinate + data[#data + 1] = x1 -- left limit of the text box + data[#data + 1] = x2 -- right limit of the text box + data[#data + 1] = ypos -- text y-coordinate + for _, c in ipairs(chars) do + data[#data + 1] = c + end + data[#data + 1] = 0 -- end string signal +end + +-- experimental code section +-- new opcodes under assessment + +-- [start_text_group] 140 +function gaCanvas:start_text_group() --> err + local data = self._data + data[#data + 1] = 140 +end + +-- [gtext] 141 +function gaCanvas:gtext(chars) --> err + if type(chars) ~= "table" then return "[ArgErr] 'chars' table expected" end + local data = self._data + data[#data + 1] = 141 + for _, c in ipairs(chars) do + data[#data + 1] = c + end + data[#data + 1] = 0 -- end string signal +end + +-- [gtext_spaced] 142 gap string +function gaCanvas:gtext_spaced(gap, chars) --> err + if type(gap) ~= "number" then return "[ArgErr] 'gap' number expected" end + if type(chars) ~= "table" then return "[ArgErr] 'chars' table expected" end + local data = self._data + data[#data + 1] = 142 + data[#data + 1] = gap + for _, c in ipairs(chars) do + data[#data + 1] = c + end + data[#data + 1] = 0 -- end string signal +end + +-- [gtext_space] 143 gap +function gaCanvas:gtext_gap(gap) --> err + if type(gap) ~= "number" then return "[ArgErr] 'gap' number expected" end + local data = self._data + data[#data + 1] = 143 + data[#data + 1] = gap +end + + +-- [end_text_group] 149 ax ay x y +function gaCanvas:end_text_group(xpos, ypos, ax, ay) --> err + if type(xpos) ~= "number" then return "[ArgErr] 'xpos' number expected" end + if type(ypos) ~= "number" then return "[ArgErr] 'ypos' number expected" end + if type(ax) ~= "number" then return "[ArgErr] 'ax' number expected" end + if type(ay) ~= "number" then return "[ArgErr] 'ay' number expected" end + local data = self._data + data[#data + 1] = 149 + data[#data + 1] = ax -- anchor relative x-coordinate + data[#data + 1] = ay -- anchor relative y-coordinate + data[#data + 1] = xpos -- text x-coordinate + data[#data + 1] = ypos -- text y-coordinate +end + +-- amazing... +function gaCanvas:to_string() --> string + +end + +function gaCanvas:get_bbox() + +end + +function gaCanvas:check() --> boolean, err + +end + +return gaCanvas diff --git a/macros/luatex/generic/barracuda/src/lib-geo/brcd-libgeo.lua b/macros/luatex/generic/barracuda/src/lib-geo/brcd-libgeo.lua new file mode 100644 index 0000000000..fd53ca6509 --- /dev/null +++ b/macros/luatex/generic/barracuda/src/lib-geo/brcd-libgeo.lua @@ -0,0 +1,289 @@ + +-- libgeo simple Geometric Library +-- Copyright (C) 2018 Roberto Giacomelli + +-- All dimension must be in scaled point (sp) + +local libgeo = { + _VERSION = "libgeo v0.0.3", + _NAME = "libgeo", + _DESCRIPTION = "simple geometric library", +} + +-- VBar class +-- a pure geometric entity of several infinite vertical lines +libgeo.Vbar = {} +local Vbar = libgeo.Vbar +Vbar.__index = Vbar + +-- Vbar costructors + +-- VBar costructor from an array [xcenter1, width1, xcenter2, width2, ...] +function Vbar:from_array(yl_arr) --> + assert(type(yl_arr) == "table", "'yline_array' is a mandatory arg") + -- stream scanning + local i = 1 + local xlim = 0.0 + while yl_arr[i] do + local x = yl_arr[i]; i = i + 1 + local w = yl_arr[i]; i = i + 1 + assert(type(x) == "number", "[InternalErr] not a number") + assert(type(w) == "number", "[InternalErr] not a number") + xlim = x + w/2 + end + assert(i % 2 == 0, "[InternalErr] the index is not even") + assert(i > 0, "[InternalErr] empty array") + local o = { + _yline = yl_arr, -- [, , ...] flat array + _x_lim = xlim, -- right external bounding box coordinates + } + setmetatable(o, self) + return o +end + +-- costructor useful for Code128 encoder +-- from an integer: 21231 -> binary 11 0 11 000 1 -> symbol 110110001 +-- is_bar :: boolean :: bar or space as first element, default true +function Vbar:from_int(ngen, mod, is_bar) --> + assert(type(ngen) == "number", "Invalid argument for n") + assert(type(mod) == "number", "Invalid argument for module width") + if is_bar == nil then is_bar = true else + assert(type(is_bar) == "boolean", "Invalid argument for is_bar") + end + -- scan ngen for digits + local digits = {} + while ngen > 0 do + local d = ngen % 10 + digits[#digits + 1] = d + ngen = (ngen - d)/10 + end + local x0 = 0.0 -- axis reference + local yl = {} + for k = #digits, 1, -1 do + local d = digits[k] + local w = d*mod -- bar width + if is_bar then -- bar + yl[#yl + 1] = x0 + w/2 + yl[#yl + 1] = w + end + x0 = x0 + w + is_bar = not is_bar + end + local o = { + _yline = yl, -- [, , ...] flat array + _x_lim = x0, -- right external coordinate + } + setmetatable(o, self) + return o +end + +-- from an integer to read from right to left +-- 13212 ->rev 21231 ->binary 11 0 11 000 1 -> symbol 110110001 +-- is_bar :: boolean :: bar or space for first, default true +function Vbar:from_int_revstep(ngen, mod, is_bar) --> + assert(type(ngen) == "number", "Invalid argument for n") + assert(type(mod) == "number", "Invalid argument for module width") + if is_bar == nil then is_bar = true else + assert(type(is_bar) == "boolean", "Invalid argument for is_bar") + end + -- + local x0 = 0.0 -- axis reference + local i = 0 + local yl = {} + while ngen > 0 do + local d = ngen % 10 -- first digit + local w = d*mod -- bar width + if is_bar then -- bar + i = i + 1; yl[i] = x0 + w/2 + i = i + 1; yl[i] = w + end + x0 = x0 + w + is_bar = not is_bar + ngen = (ngen - d)/10 + end + assert(not is_bar, "[InternalErr] the last element in not a bar") + local o = { + _yline = yl, -- [, , ...] flat array + _x_lim = x0, -- right external coordinate + } + setmetatable(o, self) + return o +end + +-- costructor useful for Code39 encoder +-- i.e. 11212 -> rev -> 2 1 2 1 1 -> decodes to -> B w B w b +-- build a yline array from the integer definition. Digit decoding rule: +-- mod: b or w => 1 -- narrow bar/space +-- MOD: B or W => 2 -- wide bar/space +-- is_bar: the first element is a bar not a space, default to true +function Vbar:from_int_revpair(ngen, mod, MOD, is_bar) --> + assert(type(ngen) == "number", "Invalid argument for n") + assert(type(mod) == "number", "Invalid argument for narrow module width") + assert(type(MOD) == "number", "Invalid argument for wide module width") + assert(mod < MOD, "Not ordered narrow/Wide values") + if is_bar == nil then + is_bar = true + else + assert(type(is_bar) == "boolean", "Invalid argument for 'is_bar'") + end + local yl = {} + local x0 = 0.0 + local k = 0 + while ngen > 0 do + local d = ngen % 10 -- digit + ngen = (ngen - d)/10 + local w; if d == 1 then + w = mod + elseif d == 2 then + w = MOD + end; assert(w, "[InternalErr] Allowed digits are only 1 or 2") + if is_bar then -- bars + k = k + 1; yl[k] = x0 + w/2 -- xcenter + k = k + 1; yl[k] = w -- width + end + is_bar = not is_bar + x0 = x0 + w + end + assert(not is_bar, "[InternalErr] the last element is not a bar") + local o = { + _yline = yl, -- [, , ...] flat array + _x_lim = x0, -- external x coordinate + } + setmetatable(o, self) + return o +end + +-- return a Vbar inteleaving to sequence narrow/Wide +-- tbar, tspace = {boolean sequence}, true -> narrow, false -> Wide +function Vbar:from_two_tab(tbar, tspace, mod, MOD) --> + assert(type(tbar) == "table", "tbar must be a table") + assert(type(tspace) == "table", "tspace must be a table") + assert(#tbar == #tspace, "tbar and tspace must be longer the same") + assert(type(mod) == "number", "Invalid argument for narrow module width") + assert(type(MOD) == "number", "Invalid argument for wide module width") + assert(mod < MOD, "Not ordered narrow/Wide values") + local x0 = 0.0 -- x-coordinate + local yl = {} + for i = 1, #tbar do + local is_narrow = tbar[i] + assert(type(is_narrow) == "boolean", "[InternalErr] found a not boolean value") + if is_narrow then + yl[#yl + 1] = x0 + mod/2 -- bar x-coordinate + yl[#yl + 1] = mod -- bar width + x0 = x0 + mod + else + yl[#yl + 1] = x0 + MOD/2 -- bar x-coordinate + yl[#yl + 1] = MOD -- bar width + x0 = x0 + MOD + end + local is_narrow_space = tspace[i] + assert(type(is_narrow_space) == "boolean", "[InternalErr] found a not boolean value") + if is_narrow_space then + x0 = x0 + mod + else + x0 = x0 + MOD + end + end + local o = { + _yline = yl, -- [, , ...] flat array + _x_lim = x0, -- external x coordinate + } + setmetatable(o, self) + return o +end + +-- Text class + +libgeo.Text = {} +local Text = libgeo.Text +Text.__index = Text + +-- costructors +-- internally it keeps text as a sequence of codepoint +function Text:from_string(s) --> object + assert(type(s) == "string", "[ArgErr] 's' not a valid string") + assert(#s > 0, "[Err] 's' empty string not allowed") + + local cp = {} -- codepoint array + for b in string.gmatch(s, ".") do + cp[#cp + 1] = string.byte(b) + end + local o = { + codepoint = cp, + } + setmetatable(o, self) + return o +end + +-- arr, array of single digit number +-- i start index +-- j stop index +function Text:from_digit_array(arr, i, j) --> object + assert(type(arr) == "table", "[ArgErr] 'arr' not a table") + assert(#arr > 0, "[ArgErr] 'arr' is an empty array") + local cp = {} -- codepoint array + if i ~= nil then + assert(type(i) == "number", "[ArgErr] 'i' is not a number") + else + i = 1 + end + if j ~= nil then + assert(type(j) == "number", "[ArgErr] 'j' is not a number") + assert(i <= j, "[ArgErr] not suitable pair of array index") + else + j = #arr + end + for k = i, j do + local d = arr[k] + assert(type(d) == "number", "[ArgErr] array contains a not number element") + assert(d == math.floor(d), "[ArgErr] array contains a not integer number") + assert(d >= 0 or d < 10, "[ArgErr] array contains a not single digit number") + cp[#cp + 1] = d + 48 + end + local o = { + codepoint = cp, + } + setmetatable(o, self) + return o +end + + +-- from an array of chars +function Text:from_chars(chars) --> object + assert(type(chars) == "table", "[ArgErr] 'chars' must be a table") + local arr = {} + for _, c in ipairs(chars) do + arr[#arr + 1] = string.byte(c) + end + local o = { + codepoint = arr, + } + setmetatable(o, self) + return o +end + +-- provide an integer to build a Text object +function Text:from_int(n) --> object + assert(type(n) == "number", "[ArgErr] 'n' must be a number") + assert( n > 0, "[Err] 'n' must be positive") + assert( n == math.floor(n), "[Err] 'n' must be an integer") + local cp = {} + while n > 0 do + local d = n % 10 + cp[#cp + 1] = d + 48 + n = (n - d)/10 + end + local digits = #cp + for i = 1, digits/2 do -- reverse the array + local d = cp[digits - i + 1] + cp[digits - i + 1] = cp[i] + cp[i] = d + end + local o = { + codepoint = cp, + } + setmetatable(o, self) + return o +end + +return libgeo diff --git a/macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.pdf b/macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.pdf new file mode 100644 index 0000000000..a075d25db1 Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.tex b/macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.tex new file mode 100644 index 0000000000..33a81aeb5d --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-barracuda-package/01-barracuda-latex-test.tex @@ -0,0 +1,13 @@ +% !TeX program = LuaLaTeX +% Copyright (C) 2019 Roberto Giacomelli + +% test file: make a Code39 barcodes in a LaTeX document + +\documentclass{article} +\usepackage{barracuda} + +\begin{document} +A\barracuda{code39}{123QWE}A +\end{document} + + diff --git a/macros/luatex/generic/barracuda/test/test-code128/001-code128-test.lua b/macros/luatex/generic/barracuda/test/test-code128/001-code128-test.lua new file mode 100644 index 0000000000..78645612dc --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code128/001-code128-test.lua @@ -0,0 +1,32 @@ +-- Copyright (C) 2018 Roberto Giacomelli + +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local c128, err = barcode:new_encoder("code128") +assert(not err, err) + +print(c128._NAME) +print(c128._VERSION) + +local info = c128:info() +print("encoder name = ", info.name) +print("description = ", info.description) +for k, tp in ipairs(info.param) do + print(k, tp.name, tp.value) +end + +local symb = c128:from_string("123") +print("Symbol char list:") +for _, c in ipairs(symb._code_data) do + print(c) +end + +local canvas = barracuda:new_canvas() + +symb:append_ga(canvas) + +-- driver library +local drv = barracuda:get_driver() +drv:save("svg", canvas, "c128-123") + + diff --git a/macros/luatex/generic/barracuda/test/test-code128/002-code128-test.pdf b/macros/luatex/generic/barracuda/test/test-code128/002-code128-test.pdf new file mode 100644 index 0000000000..c3c8460bc7 Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-code128/002-code128-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-code128/002-code128-test.tex b/macros/luatex/generic/barracuda/test/test-code128/002-code128-test.tex new file mode 100644 index 0000000000..eeaf60e483 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code128/002-code128-test.tex @@ -0,0 +1,125 @@ +% !TeX program = LuaTeX +% Copyright (C) 2019 Roberto Giacomelli + +\newbox\mybox +\nopagenumbers + +Code 128 encoder test. + +Test 1: one simple barcode with default parameter: + +\directlua{ +barracuda = require "barracuda" +} + +\directlua{ +local barcode = barracuda:get_barcode_class() + +local c128, err = barcode:new_encoder("code128") +assert(not err, err) + +local symbo, err = c128:from_string("5465468132546812") +assert(not err, err) + +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +Test 2: two symbols, different anchor. The first symbol (more longer than the +second one) takes the anchor parameters from the super class Barcode, while +the second one takes anchors from itself: + +\directlua{ +local barcode = barracuda:get_barcode_class() +local ok, err = barcode:set_param{ax = 1, ay = 1} % super class set up +assert(ok, err) +assert(barcode.ax == 1, "barcode ax is "..tostring(barcode.ax)) + +local c128, err = barcode:enc_by_name("code128") +assert(c128.ax == 1, "c128 ax is "..tostring(c128.ax)) + +local s1, err = c128:from_string("12345678901234567890"); assert(s1, err) +local s2, err = c128:from_string("0987654321", {ax = 0, ay = 0}); assert(s2, err) + +local s1_ax = s1:get_param("ax") +assert(s1.ax == 1, "1 ax is "..tostring(s1.ax)) +local s2_ax = s2:get_param("ax") +assert(s2.ax == 0, "0 ax is "..tostring(s2.ax)) + +local canvas = barracuda:new_canvas() +s1:append_ga(canvas) +s2:append_ga(canvas) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +}\box\mybox + +Test 3: play with the barcodes height (ydim parameter). The vertical anchor ay +will take to super class Barcode, previously set to 1.0. So, the symbols will +be aligned to the top: + +\directlua{ +local c128, err = barracuda:get_barcode_class() + :enc_by_name "code128"; assert(c128, err) + +local s, err = c128:from_string("123456"); assert(s, err) +local canvas = barracuda:new_canvas() +s:append_ga(canvas) + +local ok, err = s:set_param("ydim", tex.sp "30mm") +s:append_ga(canvas, tex.sp "20mm") + +local ok, err = s:set_param("ydim", tex.sp "60mm") +s:append_ga(canvas, tex.sp "40mm") + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +}\box\mybox + +Test 4: set up vertical anchor globally to 0.0, locally to the encoder to 0.5 +and locally to 1.0: + +\directlua{ +local barcode = barracuda:get_barcode_class() +% set ay globally to 0.0 +local ok, err = barcode:set_param("ay", 0); assert(ok, err) + +local c128, err = barcode:enc_by_name "code128"; assert(c128, err) +local s, err = c128:from_string("ABCDEFGHI"); assert(s, err) + +local canvas = barracuda:new_canvas() +local _, err = s:append_ga(canvas); assert(not err, err) + +% set ay to 0.5 for the encoder +local ok, err = c128:set_param("ay", 0.5); assert(ok, err) +local _, err = s:append_ga(canvas, tex.sp "30mm"); assert(not err, err) +% set locally to the symbol ay to 1.0 +local ok, err = s:set_param("ay", 1) +local _, err = s:append_ga(canvas, tex.sp "60mm"); assert(not err, err) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +}\box\mybox + +Test 5: uint() costructor and save a file with PDF literal code: + +\directlua{ +local barcode = barracuda:get_barcode_class() +local c128, err = barcode:enc_by_name("code128"); assert(c128, err) +local s, e = c128:from_uint(1234567890); assert(s, e) +local canvas = barracuda:new_canvas() +local _, errc = s:append_ga(canvas); assert(not errc, errc) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +drv:save("native", canvas, "02-05-pdfliteral") +}\box\mybox + +That's all folk! + +\bye + +function Driver:save(id_drv, ga, filename, ext) --> ok, err \ No newline at end of file diff --git a/macros/luatex/generic/barracuda/test/test-code128/02-05-pdfliteral.txt b/macros/luatex/generic/barracuda/test/test-code128/02-05-pdfliteral.txt new file mode 100644 index 0000000000..fe16d33c50 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code128/02-05-pdfliteral.txt @@ -0,0 +1,43 @@ +q +-53.574521 -14.173154 1.190545 28.346308 re +-51.788704 -14.173154 0.595272 28.346308 re +-50.002887 -14.173154 1.785817 28.346308 re +f +S +-47.026524 -14.173154 0.595272 28.346308 re +-45.835979 -14.173154 1.190545 28.346308 re +-43.454889 -14.173154 1.785817 28.346308 re +f +S +-40.478527 -14.173154 0.595272 28.346308 re +-38.097437 -14.173154 0.595272 28.346308 re +-36.906892 -14.173154 1.190545 28.346308 re +f +S +-33.930530 -14.173154 1.785817 28.346308 re +-30.358895 -14.173154 0.595272 28.346308 re +-29.168350 -14.173154 1.190545 28.346308 re +f +S +-27.382533 -14.173154 1.190545 28.346308 re +-23.810898 -14.173154 0.595272 28.346308 re +-22.620353 -14.173154 0.595272 28.346308 re +f +S +-20.834536 -14.173154 1.190545 28.346308 re +-19.048719 -14.173154 2.381090 28.346308 re +-16.072356 -14.173154 1.190545 28.346308 re +f +S +-14.286539 -14.173154 0.595272 28.346308 re +-12.500722 -14.173154 2.381090 28.346308 re +-8.929087 -14.173154 0.595272 28.346308 re +f +S +-7.738542 -14.173154 1.190545 28.346308 re +-4.762180 -14.173154 1.785817 28.346308 re +-2.381090 -14.173154 0.595272 28.346308 re +-1.190545 -14.173154 1.190545 28.346308 re +f +S +Q \ No newline at end of file diff --git a/macros/luatex/generic/barracuda/test/test-code128/c128-123.svg b/macros/luatex/generic/barracuda/test/test-code128/c128-123.svg new file mode 100644 index 0000000000..9f5b5847aa --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code128/c128-123.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macros/luatex/generic/barracuda/test/test-code39/001-code39-test.lua b/macros/luatex/generic/barracuda/test/test-code39/001-code39-test.lua new file mode 100644 index 0000000000..e4a8569e93 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code39/001-code39-test.lua @@ -0,0 +1,41 @@ +-- Copyright (C) 2019 Roberto Giacomelli +-- test Code 39 encoder + +local barracuda = require "barracuda" + +for k, v in pairs(barracuda) do + print(k,v) +end + +local barcode = barracuda:get_barcode_class() + +local c39, err = barcode:new_encoder("code39") +assert(not err, err) + +print(c39._NAME) +print(c39._VERSION) + +local info = c39:info() + +print("encoder name = ", info.name) +print("description = ", info.description) + +for k, tp in ipairs(info.param) do + print(k, tp.name, tp.value) +end + +local symb = c39:from_string("123") + +print("print internal representation of chars") +for _, c in ipairs(symb.code) do + print(c) +end +print() + +local canvas = barracuda:new_canvas() +symb:append_ga(canvas) + +-- native driver +local drv = barracuda:get_driver() + +for _, code in ipairs(canvas._data) do print(code) end diff --git a/macros/luatex/generic/barracuda/test/test-code39/002-code39-test.pdf b/macros/luatex/generic/barracuda/test/test-code39/002-code39-test.pdf new file mode 100644 index 0000000000..060a61e892 Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-code39/002-code39-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-code39/002-code39-test.tex b/macros/luatex/generic/barracuda/test/test-code39/002-code39-test.tex new file mode 100644 index 0000000000..73f91aac43 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code39/002-code39-test.tex @@ -0,0 +1,120 @@ +% !TeX program = LuaTeX +% Copyright (C) 2019 Roberto Giacomelli + +\newbox\mybox +\nopagenumbers + +Test 1: Code 39 symbol with default parameters: + +\directlua{ +local barracuda = require "barracuda" +local c39, err = barracuda:get_barcode_class() + :new_encoder("code39") +assert(not err, err) + +local symbol, err = c39:from_string("ABC12QJ31") +assert(not err, err) + +local canvas = barracuda:new_canvas() +symbol:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\box\mybox + +Test 2: get the reference of the previous encoder and typeset two +Code 39 symbols on the same canvas, one above to the other: + +\directlua{ +local barracuda = require "barracuda" +local c39, err = barracuda:get_barcode_class() + :enc_by_name("code39") + assert(c39, err) + +local s1, err = c39:from_string("ZKPQJ31"); assert(s1, err) +local s2, err = c39:from_string("RTFG746", {text_vpos="top"}); assert(s2, err) + +local canvas = barracuda:new_canvas() +s1:append_ga(canvas) + +local h2 = s2:get_param("height") +s2:append_ga(canvas, 0.0, h2 + tex.sp "5pt") +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\box\mybox + +Test 3: with the same encoder print a symbol, change globally the height, +and reprint the same symbol again on the same canvas: + +\directlua{ +local barracuda = require "barracuda" +local c39, err = barracuda:get_barcode_class() + :enc_by_name("code39") + assert(c39, err) + +local s1, err = c39:from_string("ZKPQJ31"); assert(s1, err) + +local canvas = barracuda:new_canvas() +s1:append_ga(canvas) + +local h = s1:get_param("height") +c39:set_param("height", 2*h) +c39:set_param {text_vpos = "top"} + +s1:append_ga(canvas, 0.0, h + tex.sp "5pt") + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\box\mybox + +Test 4: do the same in test 3 but change locally parameters as +height and text properties: + +\directlua{ +local barracuda = require "barracuda" +local c39, err = barracuda:get_barcode_class() + :enc_by_name("code39") + assert(c39, err) + +local s1, err = c39:from_string("0123456789"); assert(s1, err) + +local canvas = barracuda:new_canvas() +s1:append_ga(canvas) +local h, err = s1:get_param("height"); assert(h, err) +local ok, err = s1:set_param{ + height = h/2, + text_enabled = true, + text_vpos = "bottom", + text_hpos = "spaced", + text_star = true, + ay = 1, +}; assert(ok, err) +s1:append_ga(canvas, 0.0, - tex.sp "5pt") + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\box\mybox + +Test 5: create a new encoder with a large module value: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() + +local c39, err = barcode:new_encoder("code39", "e2", {module = tex.sp "0.5mm"}) +assert(c39, err) + +local s1, err = c39:from_string("02040608"); assert(s1, err) + +local canvas = barracuda:new_canvas() +s1:append_ga(canvas) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\box\mybox + +\bye diff --git a/macros/luatex/generic/barracuda/test/test-code39/003-code39-test.pdf b/macros/luatex/generic/barracuda/test/test-code39/003-code39-test.pdf new file mode 100644 index 0000000000..66b04e61e3 Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-code39/003-code39-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-code39/003-code39-test.tex b/macros/luatex/generic/barracuda/test/test-code39/003-code39-test.tex new file mode 100644 index 0000000000..a4ba3d6e81 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code39/003-code39-test.tex @@ -0,0 +1,53 @@ +% !TeX program = LuaTeX +% Copyright (C) 2019 Roberto Giacomelli + +\newbox\mybox +\nopagenumbers + +Test 3: the same Code 39 symbol drawing multiple time on the same canvas + +\directlua{ +local barracuda = require "barracuda" +local c39, err = barracuda:get_barcode_class() + :new_encoder("code39") +assert(not err, err) +local err +local symbol +symbol, err = c39:from_string("ABCDEF12QJ31+") +assert(not err, err) + +local ok, err = c39:set_param("text_vpos", "top") +assert(ok, err) + +local canvas = barracuda:new_canvas() +symbol:append_ga(canvas) + +local ok, err = symbol:set_param("text_hpos", "center") +assert(ok, err) +symbol:append_ga(canvas, tex.sp "4.5cm") + +local ok, err = symbol:set_param("text_hpos", "right") +assert(ok, err) +symbol:append_ga(canvas, tex.sp "9.0cm") + +local ok, err = c39:set_param("text_vpos", "bottom") +assert(ok, err) + +local ok, err = symbol:set_param("text_hpos", "left") +symbol:append_ga(canvas, 0, tex.sp "-2.0cm") + +local ok, err = symbol:set_param("text_hpos", "center") +assert(ok, err) +symbol:append_ga(canvas, tex.sp "4.5cm", tex.sp "-2.0cm") + +local ok, err = symbol:set_param("text_hpos", "right") +assert(ok, err) +symbol:append_ga(canvas, tex.sp "9.0cm", tex.sp "-2.0cm") + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\box\mybox +\bye + + diff --git a/macros/luatex/generic/barracuda/test/test-code39/004-code39-test.pdf b/macros/luatex/generic/barracuda/test/test-code39/004-code39-test.pdf new file mode 100644 index 0000000000..3c96d9233b Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-code39/004-code39-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-code39/004-code39-test.tex b/macros/luatex/generic/barracuda/test/test-code39/004-code39-test.tex new file mode 100644 index 0000000000..559dc94383 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code39/004-code39-test.tex @@ -0,0 +1,46 @@ +% !TeX program = LuaTeX +% Copyright (C) 2019 Roberto Giacomelli + +\newbox\mybox +\nopagenumbers + +Test 4: check uint costructor: + +\directlua{ +barracuda = require "barracuda" +local c39, err = barracuda:get_barcode_class() + :new_encoder("code39") +assert(not err, err) +local err +local symbol +symbol, err = c39:from_uint(0, {text_hpos="center"}) +assert(not err, err) + +local canvas = barracuda:new_canvas() +symbol:append_ga(canvas) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\box\mybox + +\directlua{ +local c39, err = barracuda:get_barcode_class() + :enc_by_name("code39") +assert(c39, err) +local e +local symbol +symbol, e = c39:from_uint(0123456789, {text_hpos="spaced",text_star=true}) +assert(not e, e) + +local canvas = barracuda:new_canvas() +symbol:append_ga(canvas) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\box\mybox + +\bye + + diff --git a/macros/luatex/generic/barracuda/test/test-code39/005-code39-test.lua b/macros/luatex/generic/barracuda/test/test-code39/005-code39-test.lua new file mode 100644 index 0000000000..4ac0ff171d --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code39/005-code39-test.lua @@ -0,0 +1,8 @@ + +-- Code 39 test file number 5 + +local barracuda = require "barracuda" +barracuda:save("code39", "ABCDEFG", "my_barcode") + +-- end of test file + diff --git a/macros/luatex/generic/barracuda/test/test-code39/006-code39-test.lua b/macros/luatex/generic/barracuda/test/test-code39/006-code39-test.lua new file mode 100644 index 0000000000..d33ad4ffaf --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code39/006-code39-test.lua @@ -0,0 +1,45 @@ + +local cm = 1864679.8110236 -- sp + +local barracuda = require "barracuda" +local c39, err = barracuda:get_barcode_class() + :new_encoder("code39") +assert(not err, err) +local err +local symbol +symbol, err = c39:from_string("ABCDEF12QJ31+") +assert(not err, err) + +local ok, err = c39:set_param("text_vpos", "top") +assert(ok, err) + +local canvas = barracuda:new_canvas() +symbol:append_ga(canvas) + +local ok, err = symbol:set_param("text_hpos", "center") +assert(ok, err) +symbol:append_ga(canvas, 4.5*cm) + +local ok, err = symbol:set_param("text_hpos", "right") +assert(ok, err) +symbol:append_ga(canvas, 9.0*cm) + +local ok, err = c39:set_param("text_vpos", "bottom") +assert(ok, err) + +local ok, err = symbol:set_param("text_hpos", "left") +symbol:append_ga(canvas, 0, -2.0*cm) + +local ok, err = symbol:set_param("text_hpos", "center") +assert(ok, err) +symbol:append_ga(canvas, 4.5*cm, -2.0*cm) + +local ok, err = symbol:set_param("text_hpos", "right") +assert(ok, err) +symbol:append_ga(canvas, 9.0*cm, -2.0*cm) + +local drv = barracuda:get_driver() +drv:save("svg", canvas, "006-six") + + + diff --git a/macros/luatex/generic/barracuda/test/test-code39/006-six.svg b/macros/luatex/generic/barracuda/test/test-code39/006-six.svg new file mode 100644 index 0000000000..25ce8bb34c --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code39/006-six.svg @@ -0,0 +1,653 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ABCDEF12QJ31+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ABCDEF12QJ31+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ABCDEF12QJ31+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ABCDEF12QJ31+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ABCDEF12QJ31+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ABCDEF12QJ31+ + + diff --git a/macros/luatex/generic/barracuda/test/test-code39/my_barcode.svg b/macros/luatex/generic/barracuda/test/test-code39/my_barcode.svg new file mode 100644 index 0000000000..426fb3de86 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-code39/my_barcode.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ABCDEFG + + diff --git a/macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.pdf b/macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.pdf new file mode 100644 index 0000000000..0e8abb933f Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.tex b/macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.tex new file mode 100644 index 0000000000..c0a4db3894 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ean/001-13-ean-test.tex @@ -0,0 +1,220 @@ +% !TeX program = LuaTeX +% Copyright (C) 2019 Roberto Giacomelli + +\newbox\mybox +\nopagenumbers + +EAN encoder test. + +Test 1: one simple barcode EAN13 with default parameter: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() + +local ean13, err = barcode:new_encoder("ean-13") +assert(not err, err) + +local symbo, err = ean13:from_string("8006194056290") +assert(not err, err) + +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\medskip +Test 2: one simple EAN8 barcode with default parameter: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() + +local ean8, err = barcode:new_encoder("ean-8") +assert(not err, err) + +local symbo, err = ean8:from_string("96385074") +assert(not err, err) + +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\medskip +Test 3: one simple EAN5 barcode with default parameter: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local ean5, err = barcode:new_encoder("ean-5") +assert(not err, err) +local symbo, err = ean5:from_string("54495") +assert(not err, err) +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\medskip +Test 4: one simple EAN2 barcode with default parameter: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local ean2, err = barcode:new_encoder("ean-2") +assert(not err, err) +local symbo, err = ean2:from_string("53") +assert(not err, err) +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\medskip +Test 5: EAN13 + EAN5 barcode with default parameter: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local ean, err = barcode:new_encoder("ean-13+5"); assert(not err, err) +local n = 123456789012 +local c = ean:checksum(n) +local s = n .. c +local symbo, err = ean:from_string(s.."12345") +assert(not err, err) +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule Test 5\vrule\box\mybox \vrule Test 5\vrule + +\medskip +Test 6: EAN13 + EAN2 barcode with default parameter: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local ean, err = barcode:new_encoder("ean-13+2"); assert(not err, err) +local n = 123456789012 +local c = ean:checksum(n) +local s = n .. c +local symbo, err = ean:from_string(s.."12") +assert(not err, err) +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule Test 6\vrule\box\mybox \vrule Test 6\vrule + +\medskip +Test 7: EAN8 + EAN5 barcode with default parameter: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local ean, err = barcode:new_encoder("ean-8+5"); assert(not err, err) +local n = 1234567 +local c = ean:checksum(n) +local s = n .. c +local symbo, err = ean:from_string(s.."12345") +assert(not err, err) +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule Test 7\vrule\box\mybox \vrule Test 7\vrule + +\medskip +Test 8: EAN8 + EAN2 barcode with default parameter: + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local ean, err = barcode:new_encoder("ean-8+2"); assert(not err, err) +local n = 7865431 +local c = ean:checksum(n) +local s = n .. c +local symbo, err = ean:from_string(s.."88") +assert(not err, err) +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule Test 8\vrule\box\mybox \vrule Test 8\vrule + +\medskip +Test 9: draw an EAN13 symbol with a user defined height. + +\smallskip +We will test also the function barcode:enc\_by\_name(bc\_type, name), +reusing encoders generated previuosly. The height parameter remain local +to the object symbol. +\smallskip + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local ean, err = barcode:enc_by_name("ean-13"); assert(not err, err) +local n = 818571884348 +local c = ean:checksum(n) +local s = n .. c +local symbo, err = ean:from_string(s); assert(not err, err) +local ok, err = symbo:set_param("height", tex.sp "5mm"); assert(ok, err) +local canvas = barracuda:new_canvas() +symbo:append_ga(canvas) + +local s2, err = ean:from_uint(8001120972163); assert(not err, err) +s2:append_ga(canvas, tex.sp "45mm", 0) + +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule Test 9\vrule\box\mybox \vrule Test 9\vrule + +\medskip +Test 10: draw EAN13 symbols with a user defined height. + +\smallskip +The parameter height is setting up in the encoder so it will be global. +\smallskip + +\directlua{ +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local ean, err = barcode:enc_by_name("ean-13"); assert(not err, err) +local ok, err = ean:set_param("height", tex.sp "5mm"); assert(ok, err) +local n = 758458535897; local c = ean:checksum(n); local s = n .. c +local s1, err = ean:from_string(s); assert(not err, err) +local canvas = barracuda:new_canvas() +s1:append_ga(canvas) +local s2, err = ean:from_uint(8001120972163); assert(not err, err) +s2:append_ga(canvas, tex.sp "40mm", 0) +local s3, err = ean:from_uint(8000570000310); assert(not err, err) +local ok, e = s3:set_param{height = tex.sp "10mm"}; assert(ok, e) +s3:append_ga(canvas, tex.sp "90mm", 0) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule Test 10\vrule\box\mybox \vrule Test 10\vrule + +\medskip +That's all folk! + +\bye + + diff --git a/macros/luatex/generic/barracuda/test/test-ean/002-ean-test.pdf b/macros/luatex/generic/barracuda/test/test-ean/002-ean-test.pdf new file mode 100644 index 0000000000..568050371c Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-ean/002-ean-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-ean/002-ean-test.tex b/macros/luatex/generic/barracuda/test/test-ean/002-ean-test.tex new file mode 100644 index 0000000000..2c82373b61 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ean/002-ean-test.tex @@ -0,0 +1,12 @@ +% !TeX program = LuaTeX +\nopagenumbers +\newbox\mybox +\directlua{ + local barracuda = require "barracuda" + barracuda:hbox("ean-13", "8006194056290", "mybox") +} +\pagewidth=80mm +\pageheight=60mm +\box\mybox +\bye + diff --git a/macros/luatex/generic/barracuda/test/test-ean/003-ean-test.pdf b/macros/luatex/generic/barracuda/test/test-ean/003-ean-test.pdf new file mode 100644 index 0000000000..baa5a5b9cd Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-ean/003-ean-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-ean/003-ean-test.tex b/macros/luatex/generic/barracuda/test/test-ean/003-ean-test.tex new file mode 100644 index 0000000000..59b17c4c07 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ean/003-ean-test.tex @@ -0,0 +1,16 @@ +% !TeX program = LuaLaTeX +\documentclass{standalone} +\usepackage{fontspec} +\setmainfont{ocrb10.otf} +\newbox\mybox +\directlua{ + local barracuda = require "barracuda" + barracuda:hbox("ean-13", "8006194056290", "mybox") +} + +\begin{document} +\box\mybox +\end{document} + + + diff --git a/macros/luatex/generic/barracuda/test/test-ean/004-ean-test.lua b/macros/luatex/generic/barracuda/test/test-ean/004-ean-test.lua new file mode 100644 index 0000000000..017e0725b8 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ean/004-ean-test.lua @@ -0,0 +1,9 @@ + +local barracuda = require "barracuda" +barracuda:save("ean-13", "8006194056290", "8006194056290") + + + + + + diff --git a/macros/luatex/generic/barracuda/test/test-ean/8006194056290.svg b/macros/luatex/generic/barracuda/test/test-ean/8006194056290.svg new file mode 100644 index 0000000000..f7965e94d4 --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ean/8006194056290.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8 + + 0 + 0 + 6 + 1 + 9 + 4 + + + 0 + 5 + 6 + 2 + 9 + 0 + + + diff --git a/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.pdf b/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.pdf new file mode 100644 index 0000000000..b8a7477c7f Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex b/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex new file mode 100644 index 0000000000..1a5ed80d0c --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ga-pdfliteral/001-ga-pdfliteral-test.tex @@ -0,0 +1,740 @@ +% !TeX program = LuaTeX +% test for ga-canvas pdfliteral driver +% +% Copyright (C) 2019 Roberto Giacomelli +% see LICENSE.txt file + +---ga--- is a binary format as an istruction set similar to +a sort of assembler language that describes simple graphic +objects like lines and rectangles. +This file contains tests aiming to check the pdfliteral +driver capability to render such ga streams---usually a Lua +array. + +The pdfliteral driver directly inserts PDF vector graphic +primitives within the output and should be intented as the +"native" driver of barracuda package. + +The complete reference of the ---ga--- format is available +throgh out the content of the "ga-grammar.tex" file. + +Please note that all dimensions are in scaled point, the +very small \TeX{} internal unit, in fact we have that +65536sp = 1pt. + +Running the source file with luatex. The typesetting engine +executes the directlua macro, so vector graphics appear in +the PDF output file. + +\newbox\mybox +\directlua{ + driver = require [[lib-driver.brcd-driver]] % global Lua variables + pt = tex.sp [[1pt]] % 1pt = 65536sp +} + +Let's start drawing an horizontal line 100pt long: +\directlua{ + local ga = {_data = {33, 0*pt, 100*pt, 0*pt}} + driver:ga_to_hbox(ga, [[mybox]]) +}\box\mybox + +or two different parallel lines 24pt long: +\directlua{ + local ga = {_data = {33, 0*pt, 24*pt, 0*pt, 33, 0*pt, 24*pt, 5*pt}} + driver:ga_to_hbox(ga, [[mybox]]) +}\box\mybox + +and again two horizontal lines 10pt thick, touching a corner: +\directlua{ + local ga = {_data = { + 1, 10*pt, + 33, -24*pt, 0*pt, -5*pt, + 33, 0*pt, 24*pt, 5*pt, + }} + driver:ga_to_hbox(ga, [[mybox]]) +}\box\mybox + +Several vertical lines with its horizontal limits: +\directlua{ + local ga = { _data = { + 34, -20*pt, 20*pt, 0*pt, + 34, -15*pt, 15*pt, 5*pt, + 34, -10*pt, 10*pt, 10*pt, + 34, -5*pt, 5*pt, 15*pt, + 34, -.5*pt, .5*pt, 20*pt, + 34, -5*pt, 5*pt, 25*pt, + 34, -10*pt, 10*pt, 30*pt, + 34, -15*pt, 15*pt, 35*pt, + 34, -20*pt, 20*pt, 40*pt, + 1, .05*pt, + 33, 0*pt, 40*pt, -20*pt, + 33, 0*pt, 40*pt, 20*pt, + }} + driver:ga_to_hbox(ga, [[mybox]]) +}\box\mybox + +Finally a little rectangle: +\directlua{ + local ga = {_data = { + 1, 5*pt, + 48, 0*pt, 0*pt, 15*pt, 10*pt, + }} + driver:ga_to_hbox(ga, [[mybox]]) +}\box\mybox + +\bigskip +Test number 1: a vbar 2pt width, 20pt height: +\directlua{ + % vbar: <36> y1 y2 x1 w1 x2 w2 ... xn wn + local ga = {_data = {36, 0, 20*pt, 1, 0.0, 2*pt}} + driver:ga_to_hbox(ga, [[mybox]]) +}\box\mybox + +\bigskip +Test number 2: ten vbars in a row equally spaced by 10pt: +\directlua{ + local ga = {36, 0, 10*pt, 10,} + for i = 0, 9 do + ga[i*2 + 5] = 5*pt + i*20*pt + ga[i*2 + 6] = 10*pt + end + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 3: two series of vbars 10pt and 5pt large: +\directlua{ + local ga = {36, 0, 10*pt, 10,} + for i = 0, 9 do + ga[i*2 + 5] = 5*pt + i*20*pt + ga[i*2 + 6] = 10*pt + end + ga[25] = 36 % vbar opcode + ga[26] = 2.5*pt % y1 + ga[27] = 7.5*pt % y2 + ga[28] = 9 % number of bars + for i = 0, 8 do + ga[i*2 + 29] = 15*pt + i*20*pt + ga[i*2 + 30] = 5*pt + end + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 4: a bunch of thin vertical bars (25): +\directlua{ + local ga = {} + ga[1] = 36 % vbar opcode + ga[2] = 5*pt % y1 + ga[3] = 25*pt % y2 + ga[4] = 25 % number of bars + for i = 0, 24 do + ga[i*2 + 5] = 1*pt + i*4*pt + ga[i*2 + 6] = 2*pt + end + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule A\box\mybox A\vrule + +\bigskip +Test number 5: two rows of a bunch of thin bars: +\directlua{ + local ga = {} + ga[1] = 36 % vbar opcode + ga[2] = 5*pt % y1 + ga[3] = 25*pt % y2 + ga[4] = 25 % number of bars + for i = 0, 24 do + ga[i*2 + 5] = 1*pt + i*4*pt + ga[i*2 + 6] = 2*pt + end + ga[55] = 36 % vbar opcode + ga[56] = 25*pt % y1 + ga[57] = 45*pt % y2 + ga[58] = 24 % number of bars + for i = 0, 23 do + ga[i*2 + 59] = 3*pt + i*4*pt + ga[i*2 + 60] = 2*pt + end + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 6: staircase of Vbars (manually data definition): +\directlua{ + local ga = { + 36, % vbar opcode + 0*pt, % y1 + 20*pt, % y2 + 1, % number of bars + 5*pt, % x + 10*pt, % w + 36, % vbar opcode + 20*pt, % y1 + 40*pt, % y2 + 1, % number of bars + 15*pt, % x + 10*pt, % w + 36, % vbar opcode + 40*pt, % y1 + 60*pt, % y2 + 1, % number of bars + 25*pt, % x + 10*pt, % w + } + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 7: vbars with spaced text, in three different rows: +\directlua{ + local ga = {} + ga[1] = 36 % vbar opcode + ga[2] = 0*pt % y1 + ga[3] = 20*pt % y2 + ga[4] = 8 % number of bars + for i = 1,8 do + ga[3 + i*2] = i * 2 * 5*pt % x coordinate of bar axis + ga[4 + i*2] = 5*pt % bar width + end + ga[21] = 36 % vbar opcode + ga[22] = 30*pt % y1 + ga[23] = 50*pt % y2 + ga[24] = 8 % number of bars + for i = 1,8 do + ga[23 + i*2] = i * 2 * 5*pt % x coordinate of bar axis + ga[24 + i*2] = 5*pt % bar width + end + % 131 + ga[41] = 131 % opcode text_xspaced + ga[42] = 10*pt % x coordinate of the first glyph axis + ga[43] = 10*pt % x gap among glyphs + ga[44] = 0.5 % half height + ga[45] = 25*pt % y coordinate of glyps + ga[46] = 65 % A + ga[47] = 66 % B + ga[48] = 67 % C + ga[49] = 68 % D + ga[50] = 69 % E + ga[51] = 70 % F + ga[52] = 71 % G + ga[53] = 72 % H + ga[54] = 0 + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 8: spaced text (checking the correct vertical alignment): +\directlua{ + local ga = {} + ga[1] = 36 % vbar opcode + ga[2] = 0*pt % y1 + ga[3] = 20*pt % y2 + ga[4] = 8 % number of bars + for i = 1,8 do + ga[3 + i*2] = i * 2 * 5*pt % x coordinate of bar axis + ga[4 + i*2] = 1*pt % bar width + end + ga[21] = 36 % vbar opcode + ga[22] = 40*pt % y1 + ga[23] = 60*pt % y2 + ga[24] = 8 % number of bars + for i = 1,8 do + ga[23 + i*2] = i * 2 * 5*pt % x coordinate of bar axis + ga[24 + i*2] = 1*pt % bar width + end + % 131 + ga[41] = 131 % opcode text_xspaced + ga[42] = 10*pt % x coordinate of the first glyph axis + ga[43] = 10*pt % x gap among glyphs + ga[44] = 0.0 % half height + ga[45] = 30*pt % y coordinate of glyps + ga[46] = 65 % A + ga[47] = 66 % B + ga[48] = 67 % C + ga[49] = string.byte("Q") + ga[50] = 69 % E + ga[51] = 70 % F + ga[52] = 71 % G + ga[53] = 72 % H + ga[54] = 0 + ga[55] = 131 % opcode text_xspaced + ga[56] = 10*pt % x coordinate of the first glyph axis + ga[57] = 10*pt % x gap among glyphs + ga[58] = 1.0 % half height + ga[59] = 30*pt % y coordinate of glyps + ga[60] = 49 % 1 + ga[61] = 50 % 2 + ga[62] = 51 % 3 + ga[63] = 52 % 4 + ga[64] = 53 % 5 + ga[65] = 54 % 6 + ga[66] = 55 % 7 + ga[67] = 56 % 8 + ga[68] = 0 + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 9: spaced text, check correct vertical alignment: +\directlua{ + local ga = {} + ga[1] = 36 % vbar opcode + ga[2] = 0*pt % y1 + ga[3] = 20*pt % y2 + ga[4] = 8 % number of bars + for i = 1,8 do + ga[3 + i*2] = i * 2 * 5*pt % x coordinate of bar axis + ga[4 + i*2] = 8*pt % bar width + end + ga[21] = 36 % vbar opcode + ga[22] = 40*pt % y1 + ga[23] = 60*pt % y2 + ga[24] = 8 % number of bars + for i = 1,8 do + ga[23 + i*2] = i * 2 * 5*pt % x coordinate of bar axis + ga[24 + i*2] = 8*pt % bar width + end + % 131 + ga[41] = 131 % opcode text_xspaced + ga[42] = 10*pt % x coordinate of the first glyph axis + ga[43] = 10*pt % x gap among glyphs + ga[44] = 0.0 % half height + ga[45] = 20*pt % y coordinate of glyps + ga[46] = 65 % A + ga[47] = 66 % B + ga[48] = 67 % C + ga[49] = 68 % D + ga[50] = 69 % E + ga[51] = 70 % F + ga[52] = 71 % G + ga[53] = 72 % H + ga[54] = 0 + ga[55] = 131 % opcode text_xspaced + ga[56] = 10*pt % x coordinate of the first glyph axis + ga[57] = 10*pt % x gap among glyphs + ga[58] = 1.0 % half height + ga[59] = 40*pt % y coordinate of glyps + ga[60] = 49 % 1 + ga[61] = 50 % 2 + ga[62] = 51 % 3 + ga[63] = 52 % 4 + ga[64] = 53 % 5 + ga[65] = 54 % 6 + ga[66] = 55 % 7 + ga[67] = 56 % 8 + ga[68] = 0 + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 10: two centered texts aligned to the baseline: +\directlua{ + local ga = {} + % 130 + ga[ 1] = 130 % opcode text + ga[ 2] = 0.5 % ax relative x coordinate + ga[ 3] = 1.0 % ay relative y coordinate + ga[ 4] = 0.0 % x position + ga[ 5] = 0.0 % y position + ga[ 6] = 65 % A + ga[ 7] = string.byte("Q") % Q depth glyph + ga[ 8] = 67 % C + ga[ 9] = 0 + ga[10] = 130 % opcode text + ga[11] = 0.5 % ax + ga[12] = 0.0 % ay + ga[13] = 0.0 % x + ga[14] = 0.0 % y + ga[15] = 48 % 0 + ga[16] = 49 % 1 + ga[17] = 50 % 2 + ga[18] = 51 % 3 + ga[19] = 52 % 4 + ga[20] = 53 % 5 + ga[21] = 54 % 6 + ga[22] = 55 % 7 + ga[23] = 56 % 8 + ga[24] = 57 % 9 + ga[25] = 0 + driver:ga_to_hbox({_data = ga}, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +So far, we have manually build data for ga stream. Next we are going to +use the ga-canvas library. + +\bigskip +In fact, all the previous tests are rebuild with the ga-canvas library. + +Test 1: a vbar 2pt width, 20pt height: +\directlua{ + gacanvas = require "lib-geo.brcd-gacanvas" + local ga = gacanvas:new() + local vbar = {_yline = {0.0, 2*pt}} + local err = ga:encode_Vbar(vbar, 0.0, 0.0, 20*pt) % x, w + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\box\mybox + +\bigskip +Test 2: ten vbars equally spaced by 10pt: +\directlua{ + local ga = gacanvas:new() + local data = {} + for i = 0, 9 do + data[i*2 + 1] = 5*pt + i*20*pt % x + data[i*2 + 2] = 10*pt % w + end + local bars = {_yline = data} + local err = ga:encode_Vbar(bars, 0.0, 0.0, 10*pt) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test 3: two series of vbars 10pt and 5pt large: +\directlua{ + local b1 = {} + for i = 0, 9 do + b1[i*2 + 1] = i*20*pt + b1[i*2 + 2] = 10*pt + end + local b2 = {} + for i = 0, 8 do + b2[i*2 + 1] = i*20*pt + b2[i*2 + 2] = 5*pt + end + local ga = gacanvas:new() + local err = ga:encode_Vbar({_yline=b1}, 0.0, 0.0, 10*pt) + assert(not err, err) + err = ga:encode_Vbar({_yline=b2}, 10.0*pt, 2.5*pt, 7.5*pt) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test 4: a bunch of thin bars: +\directlua{ + local b = {} + for i = 0, 24 do + b[i*2 + 1] = 1*pt + i*4*pt + b[i*2 + 2] = 2*pt + end + local ga = gacanvas:new() + local err = ga:encode_Vbar({_yline=b}, 0.0, 5*pt, 25*pt) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule{ }\box\mybox{ }\vrule + +\bigskip +Test 5: two levels of a bunch of thin bars: +\directlua{ + local b = {} + for i = 0, 24 do + b[i*2 + 1] = i*4*pt + b[i*2 + 2] = 2*pt + end + local b = {_yline=b} + local ga = gacanvas:new() + local err = ga:encode_Vbar(b, 0.0, 5*pt, 25*pt) + assert(not err, err) + err = ga:encode_Vbar(b, 2*pt, 25*pt, 45*pt, b) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 6: staircase of bars (manual insertion of data): +\directlua{ + local b = {_yline={0.0, 10*pt}} + local ga = gacanvas:new() + local err = ga:encode_Vbar(b, 0.0, 0.0, 20*pt) + assert(not err, err) + err = ga:encode_Vbar(b, 10*pt, 20*pt, 40*pt) + assert(not err, err) + err = ga:encode_Vbar(b, 20*pt, 40*pt, 60*pt) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 7: vbars with spaced text, all in three rows: +\directlua{ + local b = {} + for i = 0,7 do + b[i*2+1] = i*10*pt + b[i*2+2] = 5*pt + end + local vb = {_yline=b} + local ga = gacanvas:new() + local err = ga:encode_Vbar(vb, 0.0, 0.0, 20*pt) + assert(not err, err) + local err = ga:encode_Vbar(vb, 0.0, 30*pt, 50*pt) + assert(not err, err) + local txt = {codepoint = { + 65, % A + 66, % B + 67, % C + 68, % D + 69, % E + 70, % F + 71, % G + 72, % H + }} + err = ga:encode_Text_xspaced(txt, 0.0, 10*pt, 25*pt, 0.5) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test 8: spaced text, check correct vertical alignment: +\directlua{ + local b = {} + for i = 0,7 do + b[i*2+1] = i*10*pt + b[i*2+2] = 2*pt + end + b = {_yline=b} + local ga = gacanvas:new() + local err = ga:encode_Vbar(b, 0.0, 0.0, 20*pt) + assert(not err, err) + local err = ga:encode_Vbar(b, 0.0, 40*pt, 60*pt) + assert(not err, err) + local c = { codepoint = { + 65, % A + 66, % B + 67, % C + string.byte("Q"), + 69, % E + 70, % F + 71, % G + 72, % H + }} + err = ga:encode_Text_xspaced(c, 0.0, 10*pt, 30*pt, 0.0) + assert(not err, err) + local n = { codepoint = { + 49, % 1 + 50, % 2 + 51, % 3 + 52, % 4 + 53, % 5 + 54, % 6 + 55, % 7 + 56, % 8 + }} + err = ga:encode_Text_xspaced(n, 0.0, 10*pt, 30*pt, 1.0) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 9: spaced text, check correct vertical alignment: +\directlua{ + local b = {} + for i = 0,7 do + b[i*2+1] = i*10*pt + b[i*2+2] = 8*pt + end + b = {_yline = b} + local ga = gacanvas:new() + local err = ga:encode_Vbar(b, 0.0, 0.0, 20*pt) + assert(not err, err) + local err = ga:encode_Vbar(b, 0.0, 40*pt, 60*pt) + assert(not err, err) + local c = { codepoint = { + 65, % A + 66, % B + 67, % C + string.byte("Q"), + 69, % E + 70, % F + 71, % G + 72, % H + }} + err = ga:encode_Text_xspaced(c, 0.0, 10*pt, 20*pt, 0.0) + assert(not err, err) + local n = { codepoint = { + 49, % 1 + 50, % 2 + 51, % 3 + 52, % 4 + 53, % 5 + 54, % 6 + 55, % 7 + 56, % 8 + }} + err = ga:encode_Text_xspaced(n, 0.0, 10*pt, 40*pt, 1.0) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule{ }\box\mybox{ }\vrule + +\bigskip +Test number 10: two centered texts and baseline aligned: +\directlua{ + local n = { codepoint = { + 48, % 0 + 49, % 1 + 50, % 2 + 51, % 3 + 52, % 4 + 53, % 5 + 54, % 6 + 55, % 7 + 56, % 8 + 57, % 9 + }} + local ga = gacanvas:new() + local err = ga:encode_Text(n, 0, 0, 0.5, 0) + assert(not err, err) + local a = { codepoint = { + 65, % A + string.byte("Q"), % Q + 67, % C + }} + err = ga:encode_Text(a, 0, 0, 0.5, 1) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 11: two centered texts aligned: +\directlua{ + local n = { codepoint = { + 48, % 0 + 49, % 1 + 50, % 2 + 51, % 3 + 52, % 4 + 53, % 5 + 54, % 6 + 55, % 7 + 56, % 8 + 57, % 9 + }} + local ga = gacanvas:new() + local err = ga:encode_Text(n, 0, 0, 0.5, 1) + assert(not err, err) + local a = { codepoint = { + 65, % A + string.byte("Q"), % Q + 67, % C + }} + err = ga:encode_Text(a, 0, 0, 0.5, 0) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 12: text\_xwidth opcode: + +\directlua{ + local n = { codepoint = { + 48, % 0 + 49, % 1 + 50, % 2 + 51, % 3 + 52, % 4 + 53, % 5 + 54, % 6 + 55, % 7 + 56, % 8 + 57, % 9 + }} + local ga = gacanvas:new() + local err = ga:encode_Text_xwidth(n, 0, tex.sp "5cm", 0, 0) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\vrule\hbox to 5cm{0 \hfill9}\vrule + +\bigskip +Test number 13: text\_xwidth with different size: +\smallskip + +\directlua{ + local n = {codepoint = { + 48, % 0 + 49, % 1 + 50, % 2 + 51, % 3 + 52, % 4 + 53, % 5 + 54, % 6 + 55, % 7 + 56, % 8 + 57, % 9 + }} + local ga = gacanvas:new() + % (txt, x1, x2, ypos, ay) --> err + local err = ga:encode_Text_xwidth(n, tex.sp "0mm", tex.sp "50mm", 0, 0) + assert(not err, err) + local err = ga:encode_Text_xwidth(n, tex.sp "5mm", tex.sp "45mm", tex.sp "3mm", 0) + assert(not err, err) + local err = ga:encode_Text_xwidth(n, tex.sp "10mm", tex.sp "40mm", tex.sp "6mm", 0) + assert(not err, err) + local err = ga:encode_Text_xwidth(n, tex.sp "15mm", tex.sp "35mm", tex.sp "9mm", 0) + assert(not err, err) + local err = ga:encode_Text_xwidth(n, tex.sp "20mm", tex.sp "30mm", tex.sp "12mm", 0) + assert(not err, err) + local err = ga:encode_Text_xwidth(n, tex.sp "24mm", tex.sp "26mm", tex.sp "15mm", 0) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 14: place bars and text as text\_xwidth: +\smallskip + +\directlua{ + local b = {} + for i = 0, 9 do + b[i*2 + 1] = i*12*pt + b[i*2 + 2] = 0.4*pt + end + b = {_yline = b} + local n = {codepoint = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,}} + local ga = gacanvas:new() + % (vbar, x0, y1, y2) --> err + local err = ga:encode_Vbar(b, 0.0, 0*pt, 25*pt) + local err = ga:encode_Vbar(b, 0.0, 32*pt, 42*pt) + assert(not err, err) + % (txt, x1, x2, ypos, ay) --> err + local err = ga:encode_Text_xwidth(n, 0*pt, 108*pt, 25*pt, 0) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\smallskip +\directlua{ + local b = {} + for i = 0, 8 do + b[i*2 + 1] = i*12*pt + b[i*2 + 2] = 0.2*pt + end + b = {_yline = b} + local n = { 48, 49, 50, 51, string.byte([[x]]), 53, 54, 55, 56,} + n = {codepoint = n} + local ga = gacanvas:new() + % x0, y1, y2, bars + local err = ga:encode_Vbar(b, 0.0, 0*pt, 25*pt) + local err = ga:encode_Vbar(b, 0.0, 32*pt, 42*pt) + assert(not err, err) + % (txt, x1, x2, ypos, ay) --> err + local err = ga:encode_Text_xwidth(n, 0*pt, 96*pt, 25*pt, 0) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bigskip +Test number 15: place text\_xwidth when text is only two chars long: + +\directlua{ + local n = {codepoint = { 48, 56,}} % 0 and 8 + local ga = gacanvas:new() + % (txt, x1, x2, ypos, ay) --> err + local err = ga:encode_Text_xwidth(n, 0*pt, 32*pt, 25*pt, 0) + assert(not err, err) + driver:ga_to_hbox(ga, [[mybox]]) +}\vrule\box\mybox\vrule + +\bye diff --git a/macros/luatex/generic/barracuda/test/test-ga-svg/001-ga-svg-test.lua b/macros/luatex/generic/barracuda/test/test-ga-svg/001-ga-svg-test.lua new file mode 100644 index 0000000000..2f932235cb --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ga-svg/001-ga-svg-test.lua @@ -0,0 +1,28 @@ +-- test SVG driver output + +local barracuda = require "barracuda" +local driver = barracuda:get_driver() + +local mm = 186467.9811 -- 1 mm in sp +local ga1 = { _data = { 1, 1*mm, + 34, 10*mm, 100*mm, 0*mm, -- vline, y1, y2, x + 34, 20*mm, 90*mm, 10*mm, + 34, 30*mm, 80*mm, 20*mm, + 34, 40*mm, 70*mm, 30*mm, + 34, 50*mm, 60*mm, 40*mm, +}} + +driver:save("svg", ga1, "test-01") + +local ga2 = { _data = { + 1, 5*mm, + 34, 0*mm, 50*mm, 2.5*mm, + 33, 0*mm, 50*mm, 40*mm, +}} + +driver:save("svg", ga2, "test-02") + + + + + diff --git a/macros/luatex/generic/barracuda/test/test-ga-svg/002-ga-svg-test.lua b/macros/luatex/generic/barracuda/test/test-ga-svg/002-ga-svg-test.lua new file mode 100644 index 0000000000..8f10d6dfbf --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ga-svg/002-ga-svg-test.lua @@ -0,0 +1,18 @@ +-- test SVG driver output + +local barracuda = require "barracuda" +local barcode = barracuda:get_barcode_class() +local driver = barracuda:get_driver() + +local opt = {module = 15 * 0.0254 * 186467, height = 12 * 186467} + +local c39, err = barcode:new_encoder("code39", nil, opt) +assert(not err, err) + +local symbol, err = c39:from_string("ABC000Z") +assert(not err, err) + +local canvas = barracuda:new_canvas() +symbol:append_ga(canvas) + +driver:save("svg", canvas, "test-code39") \ No newline at end of file diff --git a/macros/luatex/generic/barracuda/test/test-ga-svg/test-01.svg b/macros/luatex/generic/barracuda/test/test-ga-svg/test-01.svg new file mode 100644 index 0000000000..77e3ba6e0c --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ga-svg/test-01.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + diff --git a/macros/luatex/generic/barracuda/test/test-ga-svg/test-02.svg b/macros/luatex/generic/barracuda/test/test-ga-svg/test-02.svg new file mode 100644 index 0000000000..ff7862b12f --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ga-svg/test-02.svg @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/macros/luatex/generic/barracuda/test/test-ga-svg/test-code39.svg b/macros/luatex/generic/barracuda/test/test-ga-svg/test-code39.svg new file mode 100644 index 0000000000..8453a6bdeb --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-ga-svg/test-code39.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ABC000Z + + diff --git a/macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.pdf b/macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.pdf new file mode 100644 index 0000000000..3aa107681c Binary files /dev/null and b/macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.pdf differ diff --git a/macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.tex b/macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.tex new file mode 100644 index 0000000000..43c652d66a --- /dev/null +++ b/macros/luatex/generic/barracuda/test/test-i2of5/001-i2of5-test.tex @@ -0,0 +1,187 @@ +% !TeX program = LuaTeX +% Copyright (C) 2019 Roberto Giacomelli + +\newbox\mybox +\nopagenumbers + +\directlua{barracuda = require "barracuda"} + +Interleaved 2 of 5 encoder test. + +Test 1: one simple barcode with default parameters: + +\directlua{ +local barcode = barracuda:get_barcode_class() + +local enc, err = barcode:new_encoder("i2of5"); assert(not err, err) +local symbo, err = enc:from_uint(54654681); assert(not err, err) +local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\bigskip +Test 2: one simple barcode with default parameter: + +\directlua{ +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +local symbo, err = enc:from_uint(1234567895); assert(not err, err) +local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +% check digit tests + +\directlua{% verify check digits, the last one +local code = { + 7352621, + 9624764, + 7592881, + 5344147, + 742238, + 199766, + 4544739, + 2774794, + 8509895, + 8285157, + 5387564, + 5534371, + 2155678, + 4529545, + 4689164, + 1674910, + 5317837, + 4117698, +} +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +for _, n in ipairs(code) do + local smbl, err = enc:from_uint(n, {check_digit_policy="verify"}) + assert(not err, err) +end +} + +\directlua{% check digits evaluation +local code = { + ["735262"] = 1, + ["962476"] = 4, + ["759288"] = 1, + ["534414"] = 7, + ["74223"] = 8, + ["19976"] = 6, + ["454473"] = 9, + ["277479"] = 4, + ["850989"] = 5, + ["828515"] = 7, + ["538756"] = 4, + ["553437"] = 1, + ["215567"] = 8, + ["452954"] = 5, + ["468916"] = 4, + ["167491"] = 0, + ["531783"] = 7, + ["411769"] = 8, +} +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +for sc, ck in pairs(code) do + local n = tonumber(sc) + local c, err = enc:get_checkdigit(n) + assert(not err, err) + assert(c == ck, "Wrong check digit "..c.." vs "..ck .." for "..sc) +end +} + +\bigskip +Test 3: one simple barcode with check digit automatically added: + +\directlua{ +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +local symbo, err = enc:from_uint(454473, {check_digit_policy="add"}) +assert(not err, err) +local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\bigskip +Test 4: a second simple barcode with check digit automatically added: + +\directlua{ +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +local symbo, err = enc:from_uint(74223, {check_digit_policy="add"}) +assert(not err, err) +local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\bigskip +Test 5: a symbol with native check digits: + +\directlua{ +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +local symbo, err = enc:from_uint(121891259, {check_digit_policy="verify"}) +assert(not err, err) +local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\bigskip +Test 6: bearer bars please: + +\directlua{ +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +local symbo, err = enc:from_uint(747867239, {bearer_bars_enabled = true}) +assert(not err, err) +local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\bigskip +Test 7: bearer bars all around the symbol: + +\directlua{ +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +local symbo, err = enc:from_uint(986790868, {bearer_bars_enabled = true, bearer_bars_layout="frame"}) +assert(not err, err) +local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +\bigskip +Test 8: bearer bars all around the symbol (with string costructor): + +\directlua{ +local barcode = barracuda:get_barcode_class() +local enc, err = barcode:enc_by_name("i2of5"); assert(not err, err) +local symbo, err = enc:from_string("986790868", {bearer_bars_enabled = true, bearer_bars_layout="frame"}) +assert(not err, err) +local canvas = barracuda:new_canvas(); symbo:append_ga(canvas) +local drv = barracuda:get_driver() +drv:ga_to_hbox(canvas, "mybox") +} +\vrule A\vrule\box\mybox \vrule A\vrule + +That's all folks! + +\bye + + diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl index f5f4f114eb..bd35455b59 100644 --- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl @@ -3,6 +3,9 @@ $mirrors = { 'Algeria' => { 'http://ctan.epst-tlemcen.dz/tex-archive/' => 1 }, + 'Morocco' => { + 'https://mirror.marwan.ma/ctan/' => 1 + }, 'South Africa' => { 'http://ftp.leg.uct.ac.za/pub/packages/ctan/' => 1, 'http://ftp.sun.ac.za/ftp/CTAN/' => 1, @@ -45,6 +48,9 @@ $mirrors = { 'http://mirror.navercorp.com/CTAN/' => 1, 'http://mirror.yongbok.net/ctan/' => 1 }, + 'Philippines' => { + 'http://mirror.pregi.net/tex-archive/' => 1 + }, 'Singapore' => { 'https://download.nus.edu.sg/mirror/ctan/' => 1 }, @@ -115,8 +121,7 @@ $mirrors = { }, 'Poland' => { 'ftp://ftp.gust.org.pl/TeX/' => 1, - 'ftp://sunsite.icm.edu.pl/pub/CTAN/' => 1, - 'http://piotrkosoft.net/pub/mirrors/CTAN/' => 1 + 'ftp://sunsite.icm.edu.pl/pub/CTAN/' => 1 }, 'Portugal' => { 'http://mirrors.up.pt/pub/CTAN/' => 1, @@ -126,6 +131,7 @@ $mirrors = { 'http://mirrors.nxthost.com/ctan/' => 1 }, 'Russia' => { + 'http://ctan.altspu.ru/' => 1, 'http://mirror.macomnet.net/pub/CTAN/' => 1, 'http://mirrors.mi.ras.ru/CTAN/' => 1 }, @@ -175,10 +181,5 @@ $mirrors = { 'New Zealand' => { 'http://mirror.aut.ac.nz/CTAN/' => 1 } - }, - 'South America' => { - 'Brazil' => { - 'http://linorg.usp.br/CTAN/' => 1 - } } }; diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb index 58a9d7c13b..fd08f2756e 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb @@ -26,11 +26,11 @@ depend container_split_src_files/1 depend frozen/0 depend minrelease/2016 depend release/2019 -depend revision/53004 +depend revision/53015 name 00texlive.image category TLCore -revision 53004 +revision 53009 shortdesc TeX Live files only in the source repository longdesc The files here are not copied by the installer and containers longdesc are not built for them; they exist only in the source @@ -4087,7 +4087,7 @@ depend opt_w32_multi_user:1 name 00texlive.installer category TLCore -revision 52996 +revision 53006 shortdesc TeX Live standalone installer package longdesc This package defines the files to go into the installer longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the @@ -16709,7 +16709,7 @@ docfiles size=32 name animate category Package -revision 52944 +revision 53010 shortdesc Create PDF and SVG animations from graphics files and inline graphics relocated 1 longdesc The package provides an interface to create portable, @@ -16717,16 +16717,16 @@ longdesc JavaScript driven PDF and SVG animations from sets of graphics longdesc files or from inline graphics, such as LaTeX picture longdesc environment, PSTricks or pgf/TikZ generated pictures, or just longdesc from typeset text. -containersize 24332 -containerchecksum a2633c9e1643e6f8f17e504cc1acceb04e9586a2fa29918fc23b0342ddd2641b87119d3f5d55b67643722d874b5a30df169dff6066ad786b181f58b7cdd055ac -doccontainersize 3146080 -doccontainerchecksum 1ced939d4d13266f7d800a9356c92f43fd802f1297c8c5fb973298e30e2559e9ceb337c7a0771b571ef98be72b322a6bddb4a2575641b9b5de4585c8f82c565c +containersize 24320 +containerchecksum 1c8d528d2bb96d6f47ee2a36dcfc7b1f696426b799b2825cc4ca558d18cfeb6c142c32040dfe861f86a91f671358c45825d00a2b0c6eef8d44e4b89cb6f64b3a +doccontainersize 3146412 +doccontainerchecksum 2839c6cd71a0ae63d4116ea4a71b9566f698cc77f727ab5dcefd6ba97f9d433b1b6b605bf564f4f86af0cbe2a7212cf38b3c384290c7e19a9c5342dfe8885a18 docfiles size=964 RELOC/doc/latex/animate/ChangeLog RELOC/doc/latex/animate/README.txt RELOC/doc/latex/animate/animate.pdf details="Package documentation" -srccontainersize 29900 -srccontainerchecksum e42a8d071f349ba8947bd51b0e19819fa04bb06a91638cda83fd0e85bf4f76fa53c4ff8ebe8101d568eb574014a792eda38ac277bf03b9ed7cca74d94fd2df9f +srccontainersize 29896 +srccontainerchecksum eea48e512e9167a08d214a04295c49c729d96728a2f5e70f6e7be7d4b4e74323f44d86d921853a7a22b4adab8bf2285f6749d50ec812c34c3ad6b4ec487b8180 srcfiles size=36 RELOC/source/latex/animate/animate.tex RELOC/source/latex/animate/files/bye_0.eps @@ -16736,11 +16736,11 @@ srcfiles size=36 RELOC/source/latex/animate/files/click.mp3 RELOC/source/latex/animate/files/exp.mp RELOC/source/latex/animate/files/scarab.mp -runfiles size=35 +runfiles size=34 RELOC/tex/latex/animate/animate.sty catalogue-contact-repository https://gitlab.com/agrahn/animate catalogue-ctan /macros/latex/contrib/animate -catalogue-date 2019-11-27 14:44:46 +0100 +catalogue-date 2019-12-03 13:33:30 +0100 catalogue-license lppl catalogue-topics graphics-motion @@ -19258,23 +19258,23 @@ binfiles arch=x86_64-solaris size=1 name archaeologie category Package -revision 50908 +revision 53011 shortdesc A citation-style which covers rules of the German Archaeological Institute relocated 1 longdesc This citation-style covers the citation and bibliography rules longdesc of the German Archaeological Institute (DAI). Various options longdesc are available to change and adjust the outcome according to longdesc one's own preferences. -containersize 72716 -containerchecksum 4998ea296e2a3e6c94ffb23b8ef981ff88f49f886063fb6f7ad6a549dff1624bd23f0615ad7ce44358de7f79b87b02b5d90800c48b8de607399403c045750d82 -doccontainersize 950288 -doccontainerchecksum 4d8e3d71d6516654dc96602dd1bcf7eeb0bcbb26fb87efc4cc8c78655140ba28d1d68b1fa42bf6a653e6058e7c648a190e18abb7a9ec1b467acf885d71db38d2 -docfiles size=262 +containersize 72704 +containerchecksum d4da1a75a9f0ab7845e9b1d5d88d34a27c866d8682d49c4cb502350a8d0ff61029eb17d9dac85fd52bb546f9212ee4f68cdf05bc020bbb176894c00b1f1ce997 +doccontainersize 948944 +doccontainerchecksum 72fa90e5a8cbaec21173f4682ffa27899a274b32a9f1baba7e734950c87f4919b3b19db0a37ec996998f5b1ae350f43156cfebd89cc85129964cf7d6b56d7c82 +docfiles size=263 RELOC/doc/latex/archaeologie/README.md details="Readme" RELOC/doc/latex/archaeologie/archaeologie.pdf details="Package documentation" -srccontainersize 134136 -srccontainerchecksum 55e8e5bfb8f0845750a3b13545c979367f34a6de44e8714089c95c3df34b4b07bbcc058a30ef941d9e835b8a3e2070b92822a575f472410f388fe19780e08618 -srcfiles size=188 +srccontainersize 134268 +srccontainerchecksum 07798de918b4e28159526652bb9d4d6515600ecc6f2f6a2c4edc7011cc113370e5ffe3d0b5be515c3d3dfe4cca410c317288997b846a5420cf7b0f9920344683 +srcfiles size=189 RELOC/source/latex/archaeologie/Makefile RELOC/source/latex/archaeologie/archaeologie.dtx RELOC/source/latex/archaeologie/archaeologie.ins @@ -19298,10 +19298,10 @@ catalogue-contact-bugs https://github.com/LukasCBossert/biblatex-archaeologie/is catalogue-contact-home http://biblatex-archaeologie.de catalogue-contact-repository https://github.com/LukasCBossert/biblatex-archaeologie catalogue-ctan /macros/latex/contrib/biblatex-contrib/archaeologie -catalogue-date 2019-04-30 12:17:51 +0200 +catalogue-date 2019-12-03 10:32:45 +0100 catalogue-license lppl1.3 catalogue-topics humanities biblatex -catalogue-version 2.4.2 +catalogue-version 2.4.3 name archaic category Package @@ -34259,7 +34259,7 @@ catalogue-topics biblatex bibtex-doc name biblatex-chem category Package -revision 51958 +revision 53012 shortdesc A set of BibLaTeX implementations of chemistry-related bibliography styles relocated 1 longdesc The bundle offers a set of styles to allow chemists to use @@ -34267,10 +34267,10 @@ longdesc BibLaTeX. The package has complete styles for: all ACS longdesc journals; RSC journals using standard (Chem. Commun.) style; longdesc and Angewandte Chem. style, (thus covering a wide range of longdesc journals). A comprehensive set of examples of use is included. -containersize 5616 -containerchecksum 6a7494fe396febf23e6d6afe7f7800e7117c722aa45e28373acae3590bca898da8867269d6e148b36c4da301b60c8c342f4ae24dfeb56d0100528dcc4305fbe8 -doccontainersize 923944 -doccontainerchecksum 90bcd8c128dd7d601a29c828302ef3cc4dc345a77d6dfda9962061ebdcfbdc8ac4a2525c727985a14467bbfae651347226fcabc395318ed490bf4d324476ed28 +containersize 5620 +containerchecksum 16ec0b77de0d9162287dfedb7eef76818b7d58f6764e4edbd67e25ec141919f23802602f1505dd92b2fdc8ca948db0a32ac62ab99d1b79baa2e24ea616165556 +doccontainersize 923856 +doccontainerchecksum 0c19ce9fa71e67b035f3b945f33ace8f21b65fdfd5d290284a3607d7aff74f50123b03656601a77225632c85d5c6b12ea0beb54dcf5c3d22752c2f6763c72efb docfiles size=382 RELOC/doc/latex/biblatex-chem/README.md details="Readme" RELOC/doc/latex/biblatex-chem/biblatex-chem-acs.pdf @@ -34294,10 +34294,10 @@ runfiles size=24 RELOC/tex/latex/biblatex-chem/chem-rsc.bbx RELOC/tex/latex/biblatex-chem/chem-rsc.cbx catalogue-ctan /macros/latex/contrib/biblatex-contrib/biblatex-chem -catalogue-date 2019-08-24 23:31:15 +0200 -catalogue-license lppl1.3 +catalogue-date 2019-12-03 17:44:42 +0100 +catalogue-license lppl1.3c catalogue-topics biblatex chemistry journalpub -catalogue-version 1.1x +catalogue-version 1.1y name biblatex-chicago category Package @@ -35415,7 +35415,7 @@ catalogue-version 1.9.8a name biblatex-phys category Package -revision 52152 +revision 53013 shortdesc A BibLaTeX implementation of the AIP and APS bibliography style relocated 1 longdesc The biblatex-phys package provides an implementation of the @@ -35426,10 +35426,10 @@ longdesc option: \usepackage[style=phys]{biblatex} A demonstration longdesc database is provided to show how to format input for the style. longdesc Style options are provided to cover the minor formatting longdesc variations between the AIP and APS bibliography styles. -containersize 3420 -containerchecksum 8eb90dd0bf30a8eb3a6dae780d9b89724dbd124bdbae112c0d87f865b1e1ba106f13ccdc2d9299735899ef7b8e6aedce3dfa24264123bee1a14249fbf979c716 -doccontainersize 455032 -doccontainerchecksum 87bf23273c9e981175fc36a2f3d8238fac13ae3115473f755e5151811d3a3903d31d4571f96dfae1a2f257da628e1c13dfc5fb17a49022f2995eacb4f8abbe36 +containersize 3440 +containerchecksum a7afe31e2cad56dece6bdf60d75d2d7b4279525da00bc4fe0003804dffd0934514a43164e4f5fe5a4776365d428a21a800f0419cd632f56afb6bea6233bf51c5 +doccontainersize 456532 +doccontainerchecksum a1dfe75c92e89ef47ed6a4ef6d997bf2aa717d6c6f023773a056f5ccf53cbc78d5d2206b1b29e0ab11389b76ef98d7e2a7f8242947abd0a8fd93e1db94f299c3 docfiles size=118 RELOC/doc/latex/biblatex-phys/README.md details="Readme" RELOC/doc/latex/biblatex-phys/biblatex-phys.bib @@ -35440,10 +35440,10 @@ runfiles size=6 RELOC/tex/latex/biblatex-phys/phys.cbx RELOC/tex/latex/biblatex-phys/phys.dbx catalogue-ctan /macros/latex/contrib/biblatex-contrib/biblatex-phys -catalogue-date 2019-09-22 00:18:54 +0200 +catalogue-date 2019-12-03 13:45:33 +0100 catalogue-license lppl1.3 catalogue-topics physics biblatex -catalogue-version 1.1a +catalogue-version 1.1b name biblatex-publist category Package @@ -77365,7 +77365,7 @@ binfiles arch=x86_64-solaris size=3 name csquotes category Package -revision 52806 +revision 53014 shortdesc Context sensitive quotation facilities relocated 1 longdesc This package provides advanced facilities for inline and @@ -77383,10 +77383,10 @@ longdesc well as the optional active quotes are freely configurable. The longdesc package is dependent on e-TeX, and requires the author's longdesc etoolbox package. depend etoolbox -containersize 17808 -containerchecksum 914ecaabcac9459cc24d33987519ee0d07c21d0c3529a2d50dc952fff8866f9dd9bdf4255fbf31a77eda0afc83acd02e0d45b7a0cca3be5a65fcc282fb1d1e17 -doccontainersize 314676 -doccontainerchecksum a8820056eb13fd25194701d17b6a77f23da18c5f0eece4297984b818da93584b7a3cf0ed999be8453a7352787af38d94c7253fa3f5f8ee0ce0d6bf4587e3fe91 +containersize 17844 +containerchecksum 49e712dc4212b5534b4508bb8096df4d13962ebe155e751ad5d833639689e6fd3abbf2c28ada689d5ca998142f9b258fc7e34d548ad5253ff7c6222f7cce9975 +doccontainersize 314828 +doccontainerchecksum fff2550acfd360f76e7d47b8f5117e75ef9c26e1c5d5ec8c339fcb169627a354e8f0a49468c1a0d5ee8d075e8530206f0028222ce4f95ba5b3414933ae3a7e6f docfiles size=103 RELOC/doc/latex/csquotes/README.md details="Package README" RELOC/doc/latex/csquotes/csquotes.pdf details="Tutorial on use of the package" @@ -77397,10 +77397,10 @@ runfiles size=24 RELOC/tex/latex/csquotes/csquotes.def RELOC/tex/latex/csquotes/csquotes.sty catalogue-ctan /macros/latex/contrib/csquotes -catalogue-date 2019-11-15 16:17:59 +0100 +catalogue-date 2019-12-02 22:00:27 +0100 catalogue-license lppl1.3c catalogue-topics quote-marks etex -catalogue-version 5.2h +catalogue-version 5.2i name csquotes-de category Package @@ -139003,7 +139003,7 @@ catalogue-version 2.4 name jadetex category Package -revision 52612 +revision 53009 shortdesc Macros supporting Jade DSSSL output longdesc Macro package on top of LaTeX to typeset TeX output of the Jade longdesc DSSSL implementation. @@ -139025,10 +139025,12 @@ depend graphics-def depend hyperref depend hyphen-base depend iftex +depend kvoptions depend latex-fonts depend latexconfig depend marvosym depend oberdiek +depend pdftexcmds depend psnfss depend stmaryrd depend symbol @@ -139040,12 +139042,12 @@ depend url depend wasysym depend zapfding depend jadetex.ARCH -execute AddFormat name=jadetex engine=pdftex patterns=language.dat options="*jadetex.ini" fmttriggers=amsfonts,babel,cm,colortbl,cyrillic,dehyph,ec,fancyhdr,graphics,graphics-cfg,graphics-def,hyperref,hyphen-base,iftex,latex,latex-fonts,latexconfig,marvosym,oberdiek,passivetex,psnfss,stmaryrd,symbol,tex-ini-files,tipa,tools,ulem,url,wasysym,zapfding -execute AddFormat name=pdfjadetex engine=pdftex patterns=language.dat options="*pdfjadetex.ini" fmttriggers=amsfonts,babel,cm,colortbl,cyrillic,dehyph,ec,fancyhdr,graphics,graphics-cfg,graphics-def,hyperref,hyphen-base,iftex,latex,latex-fonts,latexconfig,marvosym,oberdiek,passivetex,psnfss,stmaryrd,symbol,tex-ini-files,tipa,tools,ulem,url,wasysym,zapfding -containersize 29688 -containerchecksum 07c6f8ef30e6c7ee64c057ec3ee4fde3b3cadcf4ac552225c220822ff2255ddcad29c1a3a27e15f409210fa4653ab380749a53b8ce353f71e76ab0d493e4ba55 -doccontainersize 31792 -doccontainerchecksum d8227b4126705b22848472f7460ca1f9f8c760fd4490f65d8a19b94c04d0f9a9bf8c93bca9f1fe976d11e002ec186ad468cef9d32c933a5248c9bf9b22e10555 +execute AddFormat name=jadetex engine=pdftex patterns=language.dat options="*jadetex.ini" fmttriggers=amsfonts,babel,cm,colortbl,cyrillic,dehyph,ec,fancyhdr,graphics,graphics-cfg,graphics-def,hyperref,hyphen-base,iftex,kvoptions,latex,latex-fonts,latexconfig,marvosym,oberdiek,passivetex,pdftexcmds,psnfss,stmaryrd,symbol,tex-ini-files,tipa,tools,ulem,url,wasysym,zapfding +execute AddFormat name=pdfjadetex engine=pdftex patterns=language.dat options="*pdfjadetex.ini" fmttriggers=amsfonts,babel,cm,colortbl,cyrillic,dehyph,ec,fancyhdr,graphics,graphics-cfg,graphics-def,hyperref,hyphen-base,iftex,kvoptions,latex,latex-fonts,latexconfig,marvosym,oberdiek,passivetex,pdftexcmds,psnfss,stmaryrd,symbol,tex-ini-files,tipa,tools,ulem,url,wasysym,zapfding +containersize 29704 +containerchecksum 67c9cd5541aab6b3cf631d7a533122aa31b5d9617c2ef3c04485a1a299bd3da181ddb84104cdbe4435fb050d71d01d7fd0d26d24170cd72cba103f9f580851b0 +doccontainersize 31788 +doccontainerchecksum 63ab0da46455e45546490f88ff8102a17b2090a90058963a0704b5e1fc5375df198e5cee38a0623ecd9eff7f2bcf28dd646894447ce3735ee045141743532004 docfiles size=34 texmf-dist/doc/man/man1/jadetex.1 texmf-dist/doc/man/man1/jadetex.man1.pdf @@ -139064,7 +139066,7 @@ docfiles size=34 texmf-dist/doc/otherformats/jadetex/base/releasenotes.dsl texmf-dist/doc/otherformats/jadetex/base/releasenotes.xml srccontainersize 19312 -srccontainerchecksum a527b25e95664caf20de43f8bfa5cf05b0c3db6bde75dac56d5e319af5297fb699a31983f0d988277969d0fa5f3bc5c6a583fdbc90327bd62b99159fb8ca64df +srccontainerchecksum 72675efd4287b8d8188a8c2f2536c5c1d21082c97674d6f869cfb8fd555359ff45805b56b1152abe9f151f3a100d6b3a3e9ff270fa06bfc191041467ed318de6 srcfiles size=21 texmf-dist/source/jadetex/base/Makefile texmf-dist/source/jadetex/base/jadetex.dtx @@ -145757,7 +145759,7 @@ catalogue-topics diagram name knowledge category Package -revision 52864 +revision 53015 shortdesc Displaying, hyperlinking, and indexing notions in a document relocated 1 longdesc The package offers a systematic way to handle @@ -145765,32 +145767,32 @@ longdesc notions/concepts/terms throughout a document. It helps building longdesc an index. In combination with hyperref it makes it easy to have longdesc every reference of a concept linked to its introduction. It longdesc also offers simple notations. -containersize 20628 -containerchecksum 93db2163a52dae6f0e5478bf80d523e697d789d92a260aa98d2f11d897f11c586eab32b9113fdcd1e611f2a948342283f5388aa240daa6e3b30138fb5922105a -doccontainersize 733396 -doccontainerchecksum fa64186b6abf876721029eafd354a49c2b3f7568f18f9c2e4e6528cfc0b750370fbd3bee99846cd3a08bb3a0176fe2f151d8b7079f16ca2d4e6e7a671116962d -docfiles size=212 +containersize 21308 +containerchecksum 9003490224482bf5d887a5f688b204e62f22c658c809d6f20a3f3d0239bf896d295686f5d69ba0a66103f9cc971d2084a07821b4e4824e69057fb22bb920ef2c +doccontainersize 738344 +doccontainerchecksum ad81eaac45c89cf681e1213286c9f67a074477145e15bb245d7f039f5f3af7a4a9899c2eaee908e1d28f90a995b5a2d5e8cd612ab3b163cf48e1aec091f2e900 +docfiles size=214 RELOC/doc/latex/knowledge/README.md details="Readme" RELOC/doc/latex/knowledge/knowledge-example.tex RELOC/doc/latex/knowledge/knowledge.pdf details="Package documentation" RELOC/doc/latex/knowledge/knowledge.tex RELOC/doc/latex/knowledge/makefile -srccontainersize 39204 -srccontainerchecksum 7504ea2179a8f5c82b232f159231cd29384b6670db732f1018f4621e7110b46bb27cce4f45e050dd959fefd6baa23064e85b52e6d8da093856c36762eaa77156 -srcfiles size=52 +srccontainersize 40592 +srccontainerchecksum fceb82e3465b561d9c11e07ad7e62a22ed589caa6c50083c5581bbbebf7cc5cca1c70a11afbba8f63f90301f290b85b7d34e84d5e166b2f2ba8b1570e8219f85 +srcfiles size=53 RELOC/source/latex/knowledge/knowledge-code.dtx RELOC/source/latex/knowledge/knowledge-configuration.dtx RELOC/source/latex/knowledge/knowledge-utils.dtx RELOC/source/latex/knowledge/knowledge.ins -runfiles size=31 +runfiles size=32 RELOC/tex/latex/knowledge/knowledge.sty catalogue-contact-home https://www.irif.fr/~colcombe/knowledge_en.html catalogue-contact-repository https://www.irif.fr/~colcombe/Knowledge/ catalogue-ctan /macros/latex/contrib/knowledge -catalogue-date 2019-11-19 13:25:23 +0100 +catalogue-date 2019-12-03 14:30:24 +0100 catalogue-license lppl1.2 catalogue-topics index label-ref expl3 -catalogue-version 1.19 +catalogue-version 1.20 name knuth category Package @@ -152871,7 +152873,7 @@ docfiles size=32 name latex-bin-dev category TLCore -revision 52830 +revision 53009 shortdesc LaTeX pre-release executables and formats longdesc See the latex-base-dev package for information. depend luatex @@ -152884,19 +152886,20 @@ depend latex-graphics-dev depend babel depend cm depend hyphen-base +depend l3kernel depend tex-ini-files -depend dehyph depend unicode-data +depend dehyph depend luaotfload depend latex-bin-dev.ARCH -execute AddFormat name=latex-dev engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *latex.ini" fmttriggers=babel,cm,hyphen-base,latex-base-dev,latex-fonts,tex-ini-files,dehyph,latexconfig -execute AddFormat name=pdflatex-dev engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *pdflatex.ini" fmttriggers=babel,cm,hyphen-base,latex-base-dev,latex-fonts,tex-ini-files,dehyph,latexconfig -execute AddFormat name=dvilualatex-dev engine=luatex patterns=language.dat,language.dat.lua options="dvilualatex.ini" fmttriggers=babel,cm,hyphen-base,latex-base-dev,latex-fonts,tex-ini-files,unicode-data,luaotfload -execute AddFormat name=lualatex-dev engine=luahbtex patterns=language.dat,language.dat.lua options="lualatex.ini" fmttriggers=babel,cm,hyphen-base,latex-base-dev,latex-fonts,tex-ini-files,unicode-data,luaotfload -containersize 580 -containerchecksum 638ede3262c508983afe930a4cbe86e411781ca15dc182ad3a56779d549ef8e40bc09a82d2f1849729565ea463d91d887ea87837066453a3986a96e4566fa8bf +execute AddFormat name=latex-dev engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *latex.ini" fmttriggers=babel,cm,hyphen-base,l3kernel,latex-base-dev,latex-fonts,tex-ini-files,unicode-data,dehyph,latexconfig +execute AddFormat name=pdflatex-dev engine=pdftex patterns=language.dat options="-translate-file=cp227.tcx *pdflatex.ini" fmttriggers=babel,cm,hyphen-base,l3kernel,latex-base-dev,latex-fonts,tex-ini-files,unicode-data,dehyph,latexconfig +execute AddFormat name=dvilualatex-dev engine=luatex patterns=language.dat,language.dat.lua options="dvilualatex.ini" fmttriggers=babel,cm,hyphen-base,l3kernel,latex-base-dev,latex-fonts,tex-ini-files,unicode-data,luaotfload +execute AddFormat name=lualatex-dev engine=luahbtex patterns=language.dat,language.dat.lua options="lualatex.ini" fmttriggers=babel,cm,hyphen-base,l3kernel,latex-base-dev,latex-fonts,tex-ini-files,unicode-data,luaotfload +containersize 592 +containerchecksum 6c70f00768f573384e20e3f30358a74dcccba1e8a04a2e1e38a2d7958bd77541bd4a27c3374cee9613985e33d8d30c6d16299cfeee2353609ee6bf7501fab85a doccontainersize 13960 -doccontainerchecksum 46c707dc5f539fedf90ce8d476d18356a3a3f2a6fee9d55c8a101e97657b4abb60acffd77ac3671798b08f5d9340365d7707c000a75c076a0584c2151a023278 +doccontainerchecksum 4c88c962787f9670bd6c8973acf6b15fa49675d84cc2a2143ba58871f731e01edc1e007aea7c5c251765b7fa7d188ff056b1aff12d14610c0e0d776cf8b1b0cf docfiles size=35 texmf-dist/doc/man/man1/dvilualatex-dev.1 texmf-dist/doc/man/man1/dvilualatex-dev.man1.pdf @@ -173607,8 +173610,9 @@ catalogue-topics colour luatex catalogue-version 1.13 name luahbtex -category Package -revision 52830 +category TLCore +revision 53009 +shortdesc LuaTeX with HarfBuzz library for glyph shaping depend luatex depend cm depend etex @@ -173618,11 +173622,11 @@ depend plain depend tex-ini-files depend unicode-data depend luahbtex.ARCH -execute AddFormat name=luahbtex engine=luahbtex patterns=language.def,language.dat.lua options="luatex.ini" fmttriggers=cm,etex,hyphen-base,knuth-lib,plain,tex-ini-files,unicode-data -containersize 404 -containerchecksum c46ba6657d1ac1109e71518bda3d71071d0a42e97445135af4f87b99517b0639063385658c4f9e8fcd77e919419b8ffafa02700a2154c2e69f2584ed5df8ccb8 +execute AddFormat name=luahbtex engine=luahbtex patterns=language.def,language.dat.lua options="luatex.ini" fmttriggers=cm,etex,hyphen-base,knuth-lib,plain,tex-ini-files,unicode-data,luatex +containersize 452 +containerchecksum 347f0a377b032b3ea8b66c4002e5b20b09300c6a630906edf4ff9fe92fa7a7c0c617b8a84068d6546e4d5e7b090d5e428ffa5eb5a1fdbc8697a1fc1544aa40d0 doccontainersize 30224 -doccontainerchecksum 47222975fcce2b22ec45eda42f06b7529a9fac6721f3ec373dd61fd9f04cdafda24891a132ea5a49728d46d1cd039dd09e911c209b4cce75808cc54e3ef32503 +doccontainerchecksum 064bb0226c34f71999e92f0c31b219c5449efb54d9b1fec016fa8f97e789623755a0b04ebf104770a08d4535beafb37cfa3499a65b67a57165ed1cba140c9687 docfiles size=10 texmf-dist/doc/man/man1/luahbtex.1 texmf-dist/doc/man/man1/luahbtex.man1.pdf @@ -174082,7 +174086,8 @@ catalogue-version 0.03 name luajittex category TLCore -revision 52830 +revision 53009 +shortdesc LuaTeX with just-in-time (jit) compiler depend luatex depend cm depend etex @@ -174092,11 +174097,11 @@ depend plain depend tex-ini-files depend unicode-data depend luajittex.ARCH -execute AddFormat name=luajittex engine=luajittex options="luatex.ini" patterns=language.def,language.dat.lua fmttriggers=cm,etex,hyphen-base,knuth-lib,plain,tex-ini-files,unicode-data -containersize 404 -containerchecksum 17ca90c81c8f2b4cc8f5a9bb97758997ba27edb717efbe50f719888be91a3bb5579317fc351811e0ca2d70565721b2d8c43141f87a5f4182b0481fc01eb19647 +execute AddFormat name=luajittex engine=luajittex options="luatex.ini" patterns=language.def,language.dat.lua fmttriggers=cm,etex,hyphen-base,knuth-lib,plain,tex-ini-files,unicode-data,luatex +containersize 444 +containerchecksum ea6731224675b9fbd877b456fe53589d4221f2facee01e118210b371be65d1bb2e49ba1e035c567e6e5640ae50539bff7f7ae9af077c448b39bca2000bd7ab8b doccontainersize 30220 -doccontainerchecksum ea072d733448fcb7742c460f40f2fdf5f856fe0f8ad9adf1e65bbde72c9716c94baa378a89bb004a82f5725f93edb87326ba2120ed9983ac1687a8665fd20f3f +doccontainerchecksum 9f50d97a2ba4b8c6734c39cfde5f9b4af69740c9753c20fa51f24c021eea4f6142673d28e7c7251407ca5f73363aff009430db89b39bc755d46aa37cf192379d docfiles size=10 texmf-dist/doc/man/man1/luajittex.1 texmf-dist/doc/man/man1/luajittex.man1.pdf @@ -229587,7 +229592,7 @@ catalogue-version 0.1 name platex category Package -revision 52476 +revision 53009 shortdesc pLaTeX2e and miscellaneous macros for pTeX longdesc The bundle provides pLaTeX2e and miscellaneous macros for pTeX longdesc and e-pTeX. This is a community edition forked from the @@ -229599,14 +229604,16 @@ depend hyphen-base depend latex-fonts depend ptex-fonts depend latex +depend l3kernel depend latex-base-dev +depend unicode-data depend platex.ARCH execute AddFormat name=platex engine=eptex options="*platex.ini" patterns=language.dat fmttriggers=babel,cm,hyphen-base,latex-fonts,ptex-fonts,latex -execute AddFormat name=platex-dev engine=eptex options="*platex.ini" patterns=language.dat fmttriggers=babel,cm,hyphen-base,latex-fonts,ptex-fonts,latex-base-dev -containersize 36096 -containerchecksum 7dd812e8f69c9236afff8cd1f61e4d2b99f0ca604a07edea915e50491f3fe1cbae6ea4acdabfc592f89136f201527e5fadf42699d9c547664d642d35217f97e7 +execute AddFormat name=platex-dev engine=eptex options="*platex.ini" patterns=language.dat fmttriggers=babel,cm,hyphen-base,latex-fonts,ptex-fonts,l3kernel,latex-base-dev,unicode-data +containersize 36120 +containerchecksum 5aac75b6f272569f4ee44969d0efdd9270b583398ea6188ba362c9e28bc97def19b5fedf51227ae3167afd3e1dfd1beb5c75cad2d09106cf5f4e317b08c10992 doccontainersize 1586492 -doccontainerchecksum e18cb575b3d9e46a7430435aec5303e907a6ca6244f41d4ff9a3bbde8ac7ded6bfed84fe2644ad7d49f017d301d1d8400cfbb73711bdbbd430341ad0107d1cc6 +doccontainerchecksum a180db196d39b788cbee77b0046a99bd657b80ec0944e1d134d12cd9f53c99c14db33b759e317eea8697d667681269c78da2b7b4850c52a2dfe4b86265ad12d0 docfiles size=403 texmf-dist/doc/man/man1/platex.1 texmf-dist/doc/man/man1/platex.man1.pdf @@ -229618,7 +229625,7 @@ docfiles size=403 texmf-dist/doc/platex/base/platexrelease.pdf texmf-dist/doc/platex/base/pldoc.pdf srccontainersize 120776 -srccontainerchecksum 7f3be01cde496fb129443fc18b628936663bdf54e680db1aa90d9652e025d5452ea3939f66747f69918aac04097f6006f57bc4704ad551a037fa7b31f34f3fd9 +srccontainerchecksum 4c7a57a7afc0d06379eb9e661c1fb9a94a3ae171ed223e7aae625c5770fb2a28772ce114f81d8ee89f4a2896e989b31bcc7785d059016389cdae0960df1c0b15 srcfiles size=179 texmf-dist/source/platex/base/Makefile texmf-dist/source/platex/base/jclasses.dtx @@ -242455,33 +242462,33 @@ catalogue-topics font-cjk name ptex-manual category Package -revision 52451 +revision 53007 shortdesc Japanese pTeX manual relocated 1 longdesc This package contains the Japanese pTeX manual. Feedback is longdesc welcome! containersize 416 -containerchecksum d9199d9d596e094e88502a9ae952446cd6cadfd97269fe6450df97b9cdb63a96d23366d2f3a2a0de112935d893912847726af5136abdae68e5b1daa029471159 -doccontainersize 2504136 -doccontainerchecksum 65c4cb8952bbcaaf6c18693c3193ebd9d00d8ffc03c69e336bdceb14602d368ae8988c7667d806c4ebcb628418589226804ddcd6e9a217ec482d0c8cdb5706a4 -docfiles size=721 +containerchecksum bbe8cc1483d48b4b77c3ad00b0159c65b1a0dcdb2a860bc38993150e60f3b2a92ae61d3e598a02afb06c8b3810b85e64a179a8c2088b2b342c6c8148af3be2d1 +doccontainersize 2540232 +doccontainerchecksum 5ab04251235c4cd5c13e213f66e75fd7176bd3b393d4f7b74d7b5cf96620154f76f50dbef02b2ba65ae8ea47557be57baccec5e92a60a2b68e8c9b9e2c44ea8e +docfiles size=734 RELOC/doc/ptex/ptex-manual/LICENSE RELOC/doc/ptex/ptex-manual/README.md details="Readme" RELOC/doc/ptex/ptex-manual/eptex_resume.pdf RELOC/doc/ptex/ptex-manual/eptex_resume.tex - RELOC/doc/ptex/ptex-manual/eptexdoc.pdf + RELOC/doc/ptex/ptex-manual/eptexdoc.pdf details="e-pTeX manual" language="ja" RELOC/doc/ptex/ptex-manual/eptexdoc.tex RELOC/doc/ptex/ptex-manual/fam256d.tex RELOC/doc/ptex/ptex-manual/fam256p.tex - RELOC/doc/ptex/ptex-manual/jfm.pdf + RELOC/doc/ptex/ptex-manual/jfm.pdf details="Specification of the Japanese Font Metric format" language="ja" RELOC/doc/ptex/ptex-manual/jfm.tex RELOC/doc/ptex/ptex-manual/jtex_asciimw.pdf RELOC/doc/ptex/ptex-manual/jtex_asciimw.tex RELOC/doc/ptex/ptex-manual/jtexdoc_asciimw.pdf RELOC/doc/ptex/ptex-manual/jtexdoc_asciimw.tex - RELOC/doc/ptex/ptex-manual/ptex-guide-en.pdf + RELOC/doc/ptex/ptex-manual/ptex-guide-en.pdf details="Guide to pTeX and friends (in English)" RELOC/doc/ptex/ptex-manual/ptex-guide-en.tex - RELOC/doc/ptex/ptex-manual/ptex-manual.pdf details="The document itself" language="ja" + RELOC/doc/ptex/ptex-manual/ptex-manual.pdf details="pTeX manual" language="ja" RELOC/doc/ptex/ptex-manual/ptex-manual.sty RELOC/doc/ptex/ptex-manual/ptex-manual.tex RELOC/doc/ptex/ptex-manual/ptexdoc_asciimw.pdf @@ -242490,7 +242497,7 @@ docfiles size=721 RELOC/doc/ptex/ptex-manual/ptexskip_asciimw.tex catalogue-contact-repository https://github.com/texjporg/ptex-manual catalogue-ctan /info/ptex-manual -catalogue-date 2019-10-19 16:19:35 +0200 +catalogue-date 2019-11-26 20:23:43 +0100 catalogue-license bsd3 catalogue-topics japanese-doc @@ -283480,15 +283487,15 @@ docfiles size=572 name texlive-docindex category TLCore -revision 52996 +revision 53006 shortdesc top-level TeX Live doc.html, etc. longdesc These files are regenerated as needed, which is often, so we longdesc make them a separate package. See the tl-update-auto script longdesc for the process. -containersize 109880 -containerchecksum 96aa5ea54e4a5b071bddd65585acd19a12b45f77a50f96716d75ea36c89eb6950523a716526e03786cef55857fadef2eaa5742114669b83c9194235ee9021ef3 -doccontainersize 156072 -doccontainerchecksum ec30b34c1766c59d0358c5aae528000f415300896a21e5c1c31376e62a5404aee6ff6c5ed43fa29ebb848327842559a2d4af3f2e609554e37b199a758ecb30b7 +containersize 109876 +containerchecksum f78a4bddb6bc2010d98a8a8d061c63afd1db8e9fa05169dde0b552df8bdbf0ee943a5e229ccb19eaf8dd2d18b45cf80e9fe30b6f62fb55f4714b997fe099f7d7 +doccontainersize 156196 +doccontainerchecksum 1c25c5ab01a4bfadb092138fb867938ea20c8b6b8fa447bfec86f223eb6b869b94be0bcb1228ed6183d9c5fab1b04e14579b37ea179d4e609ad3fa08ec90c5aa docfiles size=306 doc.html runfiles size=270 @@ -283705,17 +283712,17 @@ docfiles size=503 name texlive-scripts category TLCore -revision 52996 +revision 53006 shortdesc TeX Live infrastructure programs longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for longdesc tlmgr to run but still ours. Not included in tlcritical. depend texlive.infra depend texlive-scripts.ARCH postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat -containersize 85432 -containerchecksum 9c08859ba1d84fb3db3ea2f6a3c8dcce4ff240b401043642404ca61d0521e069b4d308c12828381f358945d873c22c1edd01e4db93fb2eb9e8d446a3d5062a8f +containersize 85436 +containerchecksum 2ceea5fb753599584c1f2b7c06c06c64ed9b61dce13ca01d90f71715626bfa7f17454667ba02deb94abd8c21e62a5c348731a88ccd569e20807f43f4711dfc98 doccontainersize 51204 -doccontainerchecksum dce84183936545cb64f8a770b4a19d40d179d2f84cabf6d38a2dab5b49f7b40454ec90ed80795da2989b472a47b45d44c1006e781efe1a71014e3aec732d1cdd +doccontainerchecksum 883e61521eb87495adb189a161bc881435b7b36113b032e4a124d130ac4b33239693221997ae7a60dc14664eef64707cc837e0b160e409183a7b18435479b6cb docfiles size=20 texmf-dist/doc/man/man1/install-tl.1 texmf-dist/doc/man/man1/install-tl.man1.pdf @@ -303773,7 +303780,7 @@ runfiles size=7998 name uplatex category Package -revision 52477 +revision 53009 shortdesc pLaTeX2e and miscellaneous macros for upTeX longdesc The bundle provides pLaTeX2e macros for upTeX by Takuji Tanaka. longdesc This is a community edition syncing with platex. The bundle @@ -303786,14 +303793,16 @@ depend latex-fonts depend uptex-fonts depend platex depend latex +depend l3kernel depend latex-base-dev +depend unicode-data depend uplatex.ARCH execute AddFormat name=uplatex engine=euptex options="*uplatex.ini" patterns=language.dat fmttriggers=babel,cm,hyphen-base,latex-fonts,uptex-fonts,platex,latex -execute AddFormat name=uplatex-dev engine=euptex options="*uplatex.ini" patterns=language.dat fmttriggers=babel,cm,hyphen-base,latex-fonts,uptex-fonts,platex,latex-base-dev -containersize 14748 -containerchecksum 9674abf28a3f4f217b339a0e8f3319b0af160bb8e3f798cd909bb7677bff2bc80e3e2d52a42fff51e972630f1568a64b89940fad1011a65ffb94ebe66156981c +execute AddFormat name=uplatex-dev engine=euptex options="*uplatex.ini" patterns=language.dat fmttriggers=babel,cm,hyphen-base,latex-fonts,uptex-fonts,platex,l3kernel,latex-base-dev,unicode-data +containersize 14768 +containerchecksum d33e04da42d3c07eeb779681005b2c2aaea504a7558313fd1e02bd2ea45bbc27710f5c29bd47485fd20c7809dec37c82b40bd18a08eba0a3fb6b2d75737f8811 doccontainersize 880644 -doccontainerchecksum 9adf24469b6a4ea875f41bb145bc4d4c33f922647fb888efc967b00aca50fde0299a5eaed27afeed0fe7f35d52ec8ba11e57eb3c6f16a122778a5bc0ed431d0e +doccontainerchecksum 3e398c84c5a5167e5ff016a272382ff5710637b591282a374d596be31c5c5df3aa15fcc84352dda7ed770a955ba55a5da2323dfce24d1dd21d9a606c1aafb38c docfiles size=229 texmf-dist/doc/man/man1/uplatex.1 texmf-dist/doc/man/man1/uplatex.man1.pdf @@ -303803,8 +303812,8 @@ docfiles size=229 texmf-dist/doc/uplatex/base/uplatex-en.pdf details="Package documentation" texmf-dist/doc/uplatex/base/uplatex.pdf details="Package documentation" language="ja" texmf-dist/doc/uplatex/base/upldoc.pdf -srccontainersize 50568 -srccontainerchecksum a5ce35a584f72305f73b21aa0e5d941dfde13e357cb54ce64b14430332d53f4d045050be4e8b0a5578f73ec776daa4022fa7e4899ea43b9fe35a4334081e9900 +srccontainersize 50572 +srccontainerchecksum dc71219ae5f1f8762967505b5e7bc2ec2bacc059410e934e7c95f51a4c0c68fe4f704c193004f235fb0ad3867cdb6f84e7c482cdd2c4481b82294b150e18bd6a srcfiles size=69 texmf-dist/source/uplatex/base/Makefile texmf-dist/source/uplatex/base/ujclasses.dtx @@ -314191,19 +314200,20 @@ catalogue-version 0.3 name xelatex-dev category TLCore -revision 52835 +revision 53009 depend xetex depend cm depend hyphen-base depend tex-ini-files depend unicode-data depend babel +depend l3kernel depend latex-base-dev depend latex-fonts depend xelatex-dev.ARCH -execute AddFormat name=xelatex-dev engine=xetex patterns=language.dat options="-etex xelatex.ini" fmttriggers=cm,hyphen-base,tex-ini-files,unicode-data,babel,latex-base-dev,latex-fonts -containersize 404 -containerchecksum e9f6a8611d575e9569ea07c42922d00cdeae71963dd06c73ef3d0277c5cb6618922c7658d00f3713fad45e0b62c70d5606d48649ba2045a45b812c202b13d6b1 +execute AddFormat name=xelatex-dev engine=xetex patterns=language.dat options="-etex xelatex.ini" fmttriggers=cm,hyphen-base,tex-ini-files,unicode-data,babel,l3kernel,latex-base-dev,latex-fonts +containersize 412 +containerchecksum cb4ad9e262f9de19a4ea574f8a3c1566b06622e57dda9440be4a95f5b7ba47b81f358aee303b0e95c9c17b48a239016ac85acee02c87fe98717dd6ed8034e1ad name xelatex-dev.aarch64-linux category TLCore diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 index bc1ebbb7a0..a9483a97c0 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 @@ -1 +1 @@ -86008dacf8cabb23be4fa8cbaad5b6ac texlive.tlpdb +b2ea22b8baf58d969142b3492ef59987 texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 index 16471e83ae..f86f4bf26e 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 @@ -1 +1 @@ -2b44ada5c67a520ce8c7c07f7e1d96c750f3ca077344215c6d7eff34968acef9e64d4a707167d1eeefd9d614da98c02b47222cab237fc645f7d519753685b819 texlive.tlpdb +edd6180638d2cb940e30ed8f5991aaeb3495ff48e23fba9baec3ee6f2fdf6fbb0ff6a22ac7693e4f4bee17eb417c9e1410727ca8681b30db164272abf99dfd75 texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc index e677270b76..baf9c9b51c 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc @@ -1,10 +1,10 @@ -----BEGIN PGP SIGNATURE----- -iQEcBAEBCgAGBQJd5bJ5AAoJEEzhh34ZQ4xwsUgIAJ4wWuK7hcwguNtkqdMoIxFZ -oK/LJsmEkooCRqDbow5t9xJ352aY8vh5DJGIc6OL4kwbtxjTm3zX2Xw9g6o9+abb -2r1SMw5qQZm8ddfa3Xx1hx0f1Fl7C25t1/JNPhLRkagD8q/wKq//oFvh8dixahD6 -KvOVXUzs9GhHbya0fVS+lBWv5jajZsKqLx6Oc0/qC924oceT4wqNIUppCXujxgur -BzN5byJIFZ9Av81D5GZ5RzJTpFaOqYtcaI6anMCbHhWwzg/8PA3yA8a8Nn2OfhWq -XhECAvifYipdF1M/Zuy3CmQVLct5bl1EbMdR03x3tqsWVyYSXFAnoPjBnGBWkV8= -=b4QF +iQEcBAEBCgAGBQJd5wPMAAoJEEzhh34ZQ4xww0gH/iV1BvtfEua8Vs0vL4KJ7fqD +qWCiQ4TVz+oB62Vcf6y3WpghX7kdM4eZd+BrqNz+zZ5pLg/uHg//t0BkI9VGjl9x +CdfOPtDn5prwTlUDoe5ihKXXuXTCMV/MPMC5n0owEbKpgvcY3S2cTqA5MJCLUz9e +0bqWRCRe7zDQDfNv/jgi59agDbf7uahs8akymO3M4FkZB7pntmEl4qU+KixDkrzw +04kKh22ZZJSpwgggqk5ErJsdftca+EJJbjvgiN9VHQrbbzF7n3yG0a1WKcdvrHfe +l6UY8tkWAGhXGqvr1R/bEA9VITGxoYhUsRpfI35h+v51Nnw19DUbzNj1xfcB2lM= +=gK2T -----END PGP SIGNATURE----- diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz index c6be8d0290..02210f7220 100644 Binary files a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz and b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz differ diff --git a/systems/win32/miktex/tm/packages/files.csv.lzma b/systems/win32/miktex/tm/packages/files.csv.lzma index 64f3636656..f147c4fdce 100644 Binary files a/systems/win32/miktex/tm/packages/files.csv.lzma and b/systems/win32/miktex/tm/packages/files.csv.lzma differ diff --git a/systems/win32/miktex/tm/packages/next/files.csv.lzma b/systems/win32/miktex/tm/packages/next/files.csv.lzma index a9482567ae..8958b3762d 100644 Binary files a/systems/win32/miktex/tm/packages/next/files.csv.lzma and b/systems/win32/miktex/tm/packages/next/files.csv.lzma differ diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini index db102f2cff..4bc2f3e7e8 100644 --- a/systems/win32/miktex/tm/packages/next/pr.ini +++ b/systems/win32/miktex/tm/packages/next/pr.ini @@ -2,9 +2,9 @@ [repository] -date=1575407786 +date=1575494141 lastupd=miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-2.9 miktex-chktex-bin-x64-2.9 -lstdigest=ba90e8f21f7fe488550a0c5262eb7e57 -numpkg=3788 +lstdigest=a6aab9c4c95aaf841c88e3142152a122 +numpkg=3790 relstate=next -version=7276 +version=7277 diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini index 9f51a94838..dedaee1558 100644 --- a/systems/win32/miktex/tm/packages/pr.ini +++ b/systems/win32/miktex/tm/packages/pr.ini @@ -2,9 +2,9 @@ [repository] -date=1575407506 -lastupd=biblatex-apa6 csquotes graphicxsp luatexko pinoutikz xetexko barracuda circuitikz erewhon-math fourier hvqrurl newtx tracklang biblatex-ext curve2e epstopdf-pkg kvoptions stringenc transparent biblatex-apa -lstdigest=aeed444255aa0541bea413d74e38788f -numpkg=3788 +date=1575493893 +lastupd=animate archaeologie biblatex-chem biblatex-phys bookmark embedfile knowledge biblatex-apa6 csquotes graphicxsp luatexko pinoutikz xetexko barracuda circuitikz erewhon-math fourier hvqrurl newtx tracklang +lstdigest=adba824a34964b0bc85aa713832c371f +numpkg=3790 relstate=stable -version=7276 +version=7277 diff --git a/systems/win32/w32tex/ChangeLog b/systems/win32/w32tex/ChangeLog index cbd044e618..ec835bfe70 100644 --- a/systems/win32/w32tex/ChangeLog +++ b/systems/win32/w32tex/ChangeLog @@ -1,5 +1,13 @@ W32TeX (x86 & x64) ChangeLog +[2019/12/03] +(01) biblatex-biber.tar.xz + Update biblatex-apa6. +(02) context.tar.xz + ConTeXt version: 2019.12.02 18:28. +(03) pgfcontrib.tar.xz + Update pinoutikz, and gnuplot-lua-tikz. + [2019/12/02] (01) biblatex-biber.tar.xz Update biblatex-apa6. diff --git a/timestamp b/timestamp index 7dfadb6d52..877b4c9a48 100644 --- a/timestamp +++ b/timestamp @@ -2,4 +2,4 @@ # The source CTAN of this site's material: dante.ctan.org # The year-month-day-hour-minute of this site's material: -2019-12-04-02-02 +2019-12-05-02-02 diff --git a/usergrps/dante/dtk/doc/beispiel.pdf b/usergrps/dante/dtk/doc/beispiel.pdf index d97e605b41..5534602dc2 100644 Binary files a/usergrps/dante/dtk/doc/beispiel.pdf and b/usergrps/dante/dtk/doc/beispiel.pdf differ diff --git a/usergrps/dante/dtk/doc/beispiel.tex b/usergrps/dante/dtk/doc/beispiel.tex index 0d15e2f1f9..8d45c42c75 100644 --- a/usergrps/dante/dtk/doc/beispiel.tex +++ b/usergrps/dante/dtk/doc/beispiel.tex @@ -55,18 +55,7 @@ Beispiele mit Listings in nummerierter und in nichtnummerierter Art: \textsf{Ubuntu} wird in serifenloser Schrift gesetzt. Weitere Informationen für Autoren findet man im DTK-Wiki: -\qrurl{http://projekte.dante.de/DanteFAQ/WebHome}. -Fehlen Informationen, so schreibe man eine kurze Zeile -an die Redaktion, die jederzeit behilflich ist. - -\begin{verbatim} -\textsf{Ubuntu} wird in serifenloser Schrift gesetzt. -Weitere Informationen für Autoren findet man im DTK-Wiki: -\qrurl{http://projekte.dante.de/DanteFAQ/WebHome}. -Fehlen Informationen, so schreibe man eine kurze Zeile -an die Redaktion, die jederzeit behilflich ist. -\end{verbatim} - +\url{http://projekte.dante.de/DanteFAQ/WebHome}. \section{Listen} diff --git a/usergrps/dante/dtk/dtk-url.sty b/usergrps/dante/dtk/dtk-url.sty index b4d37a4ffc..fc52c397e8 100644 --- a/usergrps/dante/dtk/dtk-url.sty +++ b/usergrps/dante/dtk/dtk-url.sty @@ -14,22 +14,12 @@ %% version 2005/12/01 or later. \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{dtk-url}[2019/10/28 v1.4 Urls (qrcode) for DTK (HO,hv,rn)] +\ProvidesPackage{dtk-url}[2019/12/04 v1.5 Urls (qrcode) for DTK (HO,hv,rn)] \RequirePackage{url}[2006/04/12] \RequirePackage{xcolor} \RequirePackage{xkeyval} - -\newlength\dtk@url@qrheight -\newlength\dtk@url@qradjust -\providecommand*\dtk@url@qrlevel{} -\define@key{dtk}{qrheight}[1cm]{\setlength\dtk@url@qrheight{#1}} -\define@key{dtk}{qradjust}[-1.5\normalbaselineskip]{\setlength\dtk@url@qradjust{#1}} -\define@key{dtk}{qrcolor}[black]{\colorlet{dtk@url@qrcolor}{#1}} -\define@key{dtk}{qrlevel}[M]{\renewcommand*\dtk@url@qrlevel{#1}} - -\setkeys{dtk}{qrheight,qrcolor,qradjust,qrlevel}% the default setting - +\RequirePackage{hvqrurl} % Konfiguration: \newcommand*{\DTK@UrlSetup}{\urlstyle{tt}} @@ -193,22 +183,4 @@ }% } -\RequirePackage{qrcode} - -\newcommand*\qrurl{% - \providecommand*\qr@blank{0} - \@ifstar{\@tempswafalse}{\@tempswatrue}% - \qr@url -} -\newcommand*\qr@url[2][]{% - \begingroup - \if$#1$\else\setkeys{dtk}{#1}\fi - \qrset{height=\dtk@url@qrheight,level=\dtk@url@qrlevel}% - \if@tempswa\url{#2}\fi - \edef\reserved@a{\noexpand\marginnote{\noexpand\color{dtk@url@qrcolor}\noexpand\qrcode{% - \detokenize\expandafter{#2}}}[\dtk@url@qradjust]}% - \reserved@a - \endgroup -} - \endinput diff --git a/usergrps/dante/dtk/dtk.cls b/usergrps/dante/dtk/dtk.cls index b4e75c1726..474f2ef9f6 100644 --- a/usergrps/dante/dtk/dtk.cls +++ b/usergrps/dante/dtk/dtk.cls @@ -2,7 +2,7 @@ %% %% LaTeX Class for ``Die TeXnische Komoedie''. %% -%% Copyright (C) 2015- +%% Copyright (C) 2015-2019 %% Rolf Niepraschk, Herbert Voss %% %% It may be distributed and/or modified under the @@ -28,8 +28,8 @@ \HyphSubstIfExists{german-x-latest}{% \HyphSubstLet{german}{german-x-latest}}{} -\def\DTKversion{2.08f} -\def\DTKversiondate{2019/11/10} +\def\DTKversion{2.08g} +\def\DTKversiondate{2019/12/04} \ProvidesClass{dtk}[\DTKversiondate v\DTKversion dtk documentclass (RN)] \@ifpackagelater{iftex}{2019/10/24}{% -- cgit v1.2.3