From e22515f37100cb2802961f6a7cb76c8a22a118db Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 11 Dec 2019 03:01:04 +0000 Subject: CTAN sync 201912110301 --- CTAN.sites | 5 - FILES.byname | 770 ++--- FILES.byname.gz | Bin 2142839 -> 2143241 bytes FILES.last07days | 824 +++--- macros/generic/witharrows/witharrows-french.pdf | Bin 257959 -> 257996 bytes macros/generic/witharrows/witharrows-french.tex | 48 +- macros/generic/witharrows/witharrows.dtx | 145 +- macros/generic/witharrows/witharrows.pdf | Bin 587398 -> 589390 bytes macros/latex/contrib/alphalph/README.md | 9 + macros/latex/contrib/alphalph/alphalph.dtx | 1535 ++++++++++ macros/latex/contrib/alphalph/alphalph.pdf | Bin 0 -> 354103 bytes macros/latex/contrib/askinclude/README.md | 10 + macros/latex/contrib/askinclude/askinclude.dtx | 1895 +++++++++++++ macros/latex/contrib/askinclude/askinclude.pdf | Bin 0 -> 594397 bytes macros/latex/contrib/bibleref/CHANGES | 3 + macros/latex/contrib/bibleref/bibleref.dtx | 192 +- macros/latex/contrib/bibleref/bibleref.pdf | Bin 285284 -> 286825 bytes macros/latex/contrib/bibleref/makefile | 1 - .../contrib/bibleref/samples/sample-categories.pdf | Bin 12427 -> 12303 bytes .../contrib/bibleref/samples/sample-indextools.pdf | Bin 9544 -> 9463 bytes .../latex/contrib/bibleref/samples/sample-xidx.pdf | Bin 19945 -> 19439 bytes macros/latex/contrib/bibleref/samples/sample.pdf | Bin 40093 -> 39426 bytes macros/latex/contrib/bitset/README.md | 11 + macros/latex/contrib/bitset/bitset.dtx | 2957 ++++++++++++++++++++ macros/latex/contrib/bitset/bitset.pdf | Bin 0 -> 624889 bytes macros/latex/contrib/catchfile/README.md | 9 + macros/latex/contrib/catchfile/catchfile.dtx | 777 +++++ macros/latex/contrib/catchfile/catchfile.pdf | Bin 0 -> 298510 bytes macros/latex/contrib/listingsutf8/README.md | 11 + macros/latex/contrib/listingsutf8/listingsutf8.dtx | 673 +++++ macros/latex/contrib/listingsutf8/listingsutf8.pdf | Bin 0 -> 298795 bytes macros/latex/contrib/oberdiek/README.txt | 2 +- macros/latex/contrib/oberdiek/aliascnt.pdf | Bin 293099 -> 293095 bytes macros/latex/contrib/oberdiek/alphalph.dtx | 1535 ---------- macros/latex/contrib/oberdiek/askinclude.dtx | 1947 ------------- macros/latex/contrib/oberdiek/askinclude.pdf | Bin 593900 -> 0 bytes macros/latex/contrib/oberdiek/auxhook.pdf | Bin 285266 -> 285845 bytes macros/latex/contrib/oberdiek/bigintcalc.pdf | Bin 467906 -> 468260 bytes macros/latex/contrib/oberdiek/bitset.dtx | 2957 -------------------- macros/latex/contrib/oberdiek/bmpsize.pdf | Bin 497867 -> 498211 bytes macros/latex/contrib/oberdiek/catchfile.dtx | 777 ----- macros/latex/contrib/oberdiek/centernot.pdf | Bin 274864 -> 275199 bytes macros/latex/contrib/oberdiek/chemarr.pdf | Bin 288654 -> 289226 bytes macros/latex/contrib/oberdiek/classlist.pdf | Bin 271621 -> 271947 bytes macros/latex/contrib/oberdiek/colonequals.pdf | Bin 284627 -> 284949 bytes macros/latex/contrib/oberdiek/dvipscol.pdf | Bin 269326 -> 269922 bytes macros/latex/contrib/oberdiek/engord.pdf | Bin 318562 -> 319151 bytes macros/latex/contrib/oberdiek/enparen.pdf | Bin 304863 -> 305218 bytes macros/latex/contrib/oberdiek/eolgrab.pdf | Bin 316822 -> 317170 bytes macros/latex/contrib/oberdiek/etexcmds.pdf | Bin 300241 -> 300824 bytes macros/latex/contrib/oberdiek/fibnum.pdf | Bin 354313 -> 354648 bytes macros/latex/contrib/oberdiek/flags.pdf | Bin 283637 -> 283961 bytes macros/latex/contrib/oberdiek/gettitlestring.pdf | Bin 318743 -> 318747 bytes macros/latex/contrib/oberdiek/holtxdoc.dtx | 27 +- macros/latex/contrib/oberdiek/holtxdoc.pdf | Bin 305359 -> 306330 bytes macros/latex/contrib/oberdiek/hopatch.pdf | Bin 293225 -> 293225 bytes macros/latex/contrib/oberdiek/hycolor.pdf | Bin 364633 -> 364626 bytes macros/latex/contrib/oberdiek/hypbmsec.pdf | Bin 289747 -> 290353 bytes macros/latex/contrib/oberdiek/hypcap.pdf | Bin 284122 -> 284122 bytes macros/latex/contrib/oberdiek/hypdestopt.pdf | Bin 317677 -> 318258 bytes macros/latex/contrib/oberdiek/hypdoc.pdf | Bin 319844 -> 320178 bytes macros/latex/contrib/oberdiek/hypgotoe.pdf | Bin 285090 -> 285077 bytes macros/latex/contrib/oberdiek/hyphsubst.pdf | Bin 299858 -> 300446 bytes macros/latex/contrib/oberdiek/ifdraft.pdf | Bin 265294 -> 265890 bytes macros/latex/contrib/oberdiek/iflang.pdf | Bin 314990 -> 314990 bytes macros/latex/contrib/oberdiek/intcalc.pdf | Bin 431640 -> 431637 bytes macros/latex/contrib/oberdiek/kvdefinekeys.pdf | Bin 295786 -> 296060 bytes macros/latex/contrib/oberdiek/kvsetkeys.pdf | Bin 375389 -> 375389 bytes macros/latex/contrib/oberdiek/listingsutf8.dtx | 675 ----- macros/latex/contrib/oberdiek/listingsutf8.pdf | Bin 298594 -> 0 bytes macros/latex/contrib/oberdiek/ltxcmds.pdf | Bin 394188 -> 394196 bytes macros/latex/contrib/oberdiek/oberdiek-bundle.bib | 42 - macros/latex/contrib/oberdiek/oberdiek.ins | 10 +- macros/latex/contrib/oberdiek/oberdiek.pdf | Bin 345578 -> 319133 bytes macros/latex/contrib/oberdiek/oberdiek.tex | 95 +- macros/latex/contrib/oberdiek/pagegrid.pdf | Bin 311600 -> 311938 bytes macros/latex/contrib/oberdiek/pagesel.pdf | Bin 312192 -> 312194 bytes macros/latex/contrib/oberdiek/pdfcol.pdf | Bin 302693 -> 303046 bytes macros/latex/contrib/oberdiek/pdfcolfoot.pdf | Bin 294403 -> 294724 bytes macros/latex/contrib/oberdiek/pdfcolparallel.pdf | Bin 319986 -> 320329 bytes macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf | Bin 308006 -> 308338 bytes macros/latex/contrib/oberdiek/pdfcrypt.pdf | Bin 311564 -> 311898 bytes macros/latex/contrib/oberdiek/pdfescape.dtx | 1533 ---------- macros/latex/contrib/oberdiek/pdfrender.pdf | Bin 382955 -> 383290 bytes macros/latex/contrib/oberdiek/picture.dtx | 768 ----- macros/latex/contrib/oberdiek/protecteddef.pdf | Bin 307773 -> 308115 bytes macros/latex/contrib/oberdiek/refcount.pdf | Bin 326895 -> 326895 bytes macros/latex/contrib/oberdiek/resizegather.dtx | 2 +- macros/latex/contrib/oberdiek/resizegather.pdf | Bin 517568 -> 517717 bytes macros/latex/contrib/oberdiek/rotchiffre.pdf | Bin 317164 -> 317497 bytes macros/latex/contrib/oberdiek/scrindex.pdf | Bin 283891 -> 283886 bytes macros/latex/contrib/oberdiek/selinput.dtx | 853 ------ macros/latex/contrib/oberdiek/setouterhbox.pdf | Bin 330129 -> 330126 bytes macros/latex/contrib/oberdiek/settobox.pdf | Bin 293548 -> 293875 bytes macros/latex/contrib/oberdiek/soulutf8.pdf | Bin 352081 -> 352082 bytes macros/latex/contrib/oberdiek/stackrel.pdf | Bin 281746 -> 282341 bytes macros/latex/contrib/oberdiek/stampinclude.pdf | Bin 277765 -> 278115 bytes macros/latex/contrib/oberdiek/tabularht.pdf | Bin 331314 -> 331646 bytes macros/latex/contrib/oberdiek/tabularkv.pdf | Bin 254709 -> 255279 bytes macros/latex/contrib/oberdiek/telprint.pdf | Bin 303828 -> 303826 bytes macros/latex/contrib/oberdiek/thepdfnumber.pdf | Bin 347238 -> 347573 bytes macros/latex/contrib/oberdiek/twoopt.pdf | Bin 274422 -> 275011 bytes macros/latex/contrib/oberdiek/uniquecounter.pdf | Bin 289988 -> 290336 bytes macros/latex/contrib/pdfescape/README.md | 10 + macros/latex/contrib/pdfescape/pdfescape.dtx | 1530 ++++++++++ macros/latex/contrib/pdfescape/pdfescape.pdf | Bin 0 -> 346644 bytes macros/latex/contrib/picture/README.md | 11 + macros/latex/contrib/picture/picture.dtx | 772 +++++ macros/latex/contrib/picture/picture.pdf | Bin 0 -> 295737 bytes macros/latex/contrib/selinput/README.md | 9 + macros/latex/contrib/selinput/selinput.dtx | 851 ++++++ macros/latex/contrib/selinput/selinput.pdf | Bin 0 -> 536592 bytes .../texlive/tlnet/tlpkg/installer/ctan-mirrors.pl | 3 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb | 257 +- 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 2156148 -> 2150176 bytes systems/win32/miktex/tm/packages/next/pr.ini | 6 +- systems/win32/miktex/tm/packages/pr.ini | 6 +- systems/win32/w32tex/ChangeLog | 6 + systems/win32/w32tex/TLW64/00README.TLW64 | 6 +- timestamp | 2 +- 123 files changed, 12337 insertions(+), 12248 deletions(-) create mode 100644 macros/latex/contrib/alphalph/README.md create mode 100644 macros/latex/contrib/alphalph/alphalph.dtx create mode 100644 macros/latex/contrib/alphalph/alphalph.pdf create mode 100644 macros/latex/contrib/askinclude/README.md create mode 100644 macros/latex/contrib/askinclude/askinclude.dtx create mode 100644 macros/latex/contrib/askinclude/askinclude.pdf create mode 100644 macros/latex/contrib/bitset/README.md create mode 100644 macros/latex/contrib/bitset/bitset.dtx create mode 100644 macros/latex/contrib/bitset/bitset.pdf create mode 100644 macros/latex/contrib/catchfile/README.md create mode 100644 macros/latex/contrib/catchfile/catchfile.dtx create mode 100644 macros/latex/contrib/catchfile/catchfile.pdf create mode 100644 macros/latex/contrib/listingsutf8/README.md create mode 100644 macros/latex/contrib/listingsutf8/listingsutf8.dtx create mode 100644 macros/latex/contrib/listingsutf8/listingsutf8.pdf delete mode 100644 macros/latex/contrib/oberdiek/alphalph.dtx delete mode 100644 macros/latex/contrib/oberdiek/askinclude.dtx delete mode 100644 macros/latex/contrib/oberdiek/askinclude.pdf delete mode 100644 macros/latex/contrib/oberdiek/bitset.dtx delete mode 100644 macros/latex/contrib/oberdiek/catchfile.dtx delete mode 100644 macros/latex/contrib/oberdiek/listingsutf8.dtx delete mode 100644 macros/latex/contrib/oberdiek/listingsutf8.pdf delete mode 100644 macros/latex/contrib/oberdiek/pdfescape.dtx delete mode 100644 macros/latex/contrib/oberdiek/picture.dtx delete mode 100644 macros/latex/contrib/oberdiek/selinput.dtx create mode 100644 macros/latex/contrib/pdfescape/README.md create mode 100644 macros/latex/contrib/pdfescape/pdfescape.dtx create mode 100644 macros/latex/contrib/pdfescape/pdfescape.pdf create mode 100644 macros/latex/contrib/picture/README.md create mode 100644 macros/latex/contrib/picture/picture.dtx create mode 100644 macros/latex/contrib/picture/picture.pdf create mode 100644 macros/latex/contrib/selinput/README.md create mode 100644 macros/latex/contrib/selinput/selinput.dtx create mode 100644 macros/latex/contrib/selinput/selinput.pdf diff --git a/CTAN.sites b/CTAN.sites index c7148518eb..778ed62a9f 100644 --- a/CTAN.sites +++ b/CTAN.sites @@ -97,11 +97,6 @@ by country): URL: http://mirror.iopb.res.in/tex-archive/ - mirror.unpad.ac.id (Indonesia) - URL: http://mirror.unpad.ac.id/ctan/ - URL: https://mirror.unpad.ac.id/ctan/ - - ctan.asis.ai (Iran) URL: http://ctan.asis.ai/ URL: rsync://ctan.asis.ai/ctan/ diff --git a/FILES.byname b/FILES.byname index 4b23f9806a..03053383c8 100644 --- a/FILES.byname +++ b/FILES.byname @@ -4992,7 +4992,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/09 | 276353 | FILES.last07days +2019/12/10 | 284891 | 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 @@ -157962,11 +157962,13 @@ 2010/11/19 | 165549 | install/macros/latex/contrib/acroterm.tds.zip 2019/01/04 | 821335 | install/macros/latex/contrib/adjustbox.tds.zip 2015/08/04 | 140785 | install/macros/latex/contrib/alertmessage.tds.zip +2019/12/09 | 365186 | install/macros/latex/contrib/alphalph.tds.zip 2013/03/08 | 2249874 | install/macros/latex/contrib/amsrefs.tds.zip 2019/12/03 | 3237505 | install/macros/latex/contrib/animate.tds.zip 2014/08/24 | 220789 | install/macros/latex/contrib/answers.tds.zip 2009/09/08 | 175772 | install/macros/latex/contrib/appendix.tds.zip 2018/03/09 | 187753 | install/macros/latex/contrib/ascmac.tds.zip +2019/12/09 | 605189 | install/macros/latex/contrib/askinclude.tds.zip 2010/03/20 | 235440 | install/macros/latex/contrib/asyfig.tds.zip 2019/12/05 | 418377 | install/macros/latex/contrib/atbegshi.tds.zip 2019/12/05 | 277908 | install/macros/latex/contrib/atenddvi.tds.zip @@ -157995,6 +157997,7 @@ 2019/12/03 | 460970 | install/macros/latex/contrib/biblatex-contrib/biblatex-phys.tds.zip 2018/10/18 | 360761 | install/macros/latex/contrib/biblatex-contrib/biblatex-science.tds.zip 2011/04/02 | 808780 | install/macros/latex/contrib/bibleref-german.tds.zip +2019/12/09 | 636608 | install/macros/latex/contrib/bitset.tds.zip 2009/09/08 | 241226 | install/macros/latex/contrib/booklet.tds.zip 2019/12/03 | 503071 | install/macros/latex/contrib/bookmark.tds.zip 2015/03/10 | 214797 | install/macros/latex/contrib/boxedminipage2e.tds.zip @@ -158003,6 +158006,7 @@ 2009/10/01 | 166291 | install/macros/latex/contrib/cachepic.tds.zip 2014/02/24 | 625238 | install/macros/latex/contrib/calculator.tds.zip 2019/11/24 | 2055335 | install/macros/latex/contrib/caption.tds.zip +2019/12/10 | 304516 | install/macros/latex/contrib/catchfile.tds.zip 2011/08/07 | 511024 | install/macros/latex/contrib/ccaption.tds.zip 2009/10/20 | 291969 | install/macros/latex/contrib/changepage.tds.zip 2009/05/30 | 200532 | install/macros/latex/contrib/chappg.tds.zip @@ -158121,6 +158125,7 @@ 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 +2019/12/09 | 304271 | install/macros/latex/contrib/listingsutf8.tds.zip 2017/12/11 | 219276 | install/macros/latex/contrib/lithuanian.tds.zip 2010/08/04 | 13722 | install/macros/latex/contrib/logreq.tds.zip 2012/10/01 | 317588 | install/macros/latex/contrib/longnamefilelist.tds.zip @@ -158164,7 +158169,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/12/05 | 21660308 | install/macros/latex/contrib/oberdiek.tds.zip +2019/12/09 | 20665809 | 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 @@ -158175,12 +158180,14 @@ 2012/04/23 | 48496 | install/macros/latex/contrib/pax.tds.zip 2010/03/26 | 367318 | install/macros/latex/contrib/pdf14.tds.zip 2018/11/01 | 1331970 | install/macros/latex/contrib/pdfcomment.tds.zip +2019/12/09 | 354248 | install/macros/latex/contrib/pdfescape.tds.zip 2019/12/05 | 304681 | install/macros/latex/contrib/pdflscape.tds.zip 2019/11/21 | 382377 | install/macros/latex/contrib/pdfpages.tds.zip 2019/11/24 | 427899 | install/macros/latex/contrib/pdftexcmds.tds.zip 2019/09/23 | 318990 | install/macros/latex/contrib/perltex.tds.zip 2013/10/16 | 519904 | install/macros/latex/contrib/pfarrei.tds.zip 2014/07/10 | 183200 | install/macros/latex/contrib/pgfopts.tds.zip +2019/12/09 | 301956 | install/macros/latex/contrib/picture.tds.zip 2019/11/17 | 557858 | install/macros/latex/contrib/pkuthss.tds.zip 2019/12/05 | 621416 | install/macros/latex/contrib/pmboxdraw.tds.zip 2019/11/15 | 854008 | install/macros/latex/contrib/polyglossia.tds.zip @@ -158208,6 +158215,7 @@ 2014/08/31 | 524706 | install/macros/latex/contrib/sclang-prettifier.tds.zip 2017/08/05 | 166767 | install/macros/latex/contrib/screenplay-pkg.tds.zip 2012/09/24 | 130991 | install/macros/latex/contrib/scrjrnl.tds.zip +2019/12/09 | 543284 | install/macros/latex/contrib/selinput.tds.zip 2019/10/10 | 800504 | install/macros/latex/contrib/siunitx.tds.zip 2019/09/29 | 332217 | install/macros/latex/contrib/skdoc.tds.zip 2019/10/15 | 315856 | install/macros/latex/contrib/skmath.tds.zip @@ -171949,12 +171957,12 @@ 1994/03/19 | 4184 | macros/generic/vrb/vrb.tex 2005/09/25 | 2555 | macros/generic/vrb.zip 2019/10/07 | 1217 | macros/generic/witharrows/README.md -2019/10/21 | 250895 | macros/generic/witharrows/witharrows.dtx -2019/10/21 | 257959 | macros/generic/witharrows/witharrows-french.pdf -2019/10/07 | 86376 | macros/generic/witharrows/witharrows-french.tex +2019/12/10 | 252257 | macros/generic/witharrows/witharrows.dtx +2019/12/10 | 257996 | macros/generic/witharrows/witharrows-french.pdf +2019/12/04 | 86306 | macros/generic/witharrows/witharrows-french.tex 2019/07/29 | 1487 | macros/generic/witharrows/witharrows.ins -2019/10/21 | 587398 | macros/generic/witharrows/witharrows.pdf -2019/10/21 | 892243 | macros/generic/witharrows.zip +2019/12/10 | 589390 | macros/generic/witharrows/witharrows.pdf +2019/12/10 | 895265 | macros/generic/witharrows.zip 2010/05/14 | 252 | macros/generic/xcomment/Changes 2010/05/14 | 1836 | macros/generic/xcomment/Makefile 2010/05/14 | 372 | macros/generic/xcomment/README @@ -174293,6 +174301,10 @@ 2007/09/24 | 146651 | macros/latex/contrib/alnumsec/alnumsec.pdf 2005/02/16 | 862 | macros/latex/contrib/alnumsec/README 2007/09/25 | 132077 | macros/latex/contrib/alnumsec.zip +2019/12/09 | 43702 | macros/latex/contrib/alphalph/alphalph.dtx +2019/12/09 | 354103 | macros/latex/contrib/alphalph/alphalph.pdf +2019/12/09 | 164 | macros/latex/contrib/alphalph/README.md +2019/12/10 | 361066 | macros/latex/contrib/alphalph.zip 2019/06/24 | 794330 | macros/latex/contrib/alterqcm/doc/article_post.pdf 2011/06/03 | 322096 | macros/latex/contrib/alterqcm/doc/doc_aq-screen.pdf 2010/09/16 | 12450 | macros/latex/contrib/alterqcm/doc/latex/180px-Gustave_Moreau_007.jpg @@ -174632,6 +174644,10 @@ 2018/03/09 | 1675 | macros/latex/contrib/ascmac/Makefile 2018/03/09 | 793 | macros/latex/contrib/ascmac/README.md 2018/03/09 | 179175 | macros/latex/contrib/ascmac.zip +2019/12/09 | 54949 | macros/latex/contrib/askinclude/askinclude.dtx +2019/12/09 | 594397 | macros/latex/contrib/askinclude/askinclude.pdf +2019/12/09 | 117 | macros/latex/contrib/askinclude/README.md +2019/12/10 | 600329 | macros/latex/contrib/askinclude.zip 2013/12/04 | 308877 | macros/latex/contrib/askmaps/askmaps.pdf 2013/12/04 | 12911 | macros/latex/contrib/askmaps/askmaps.sty 2013/12/04 | 19318 | macros/latex/contrib/askmaps/askmaps.tex @@ -177327,10 +177343,10 @@ 2019/12/01 | 129 | macros/latex/contrib/biblatex/latex/lbx/USenglish.lbx 2019/12/01 | 5198 | macros/latex/contrib/biblatex/README 2019/12/08 | 18583473 | macros/latex/contrib/biblatex.zip -2019/01/13 | 91077 | macros/latex/contrib/bibleref/bibleref.dtx +2019/12/10 | 96969 | macros/latex/contrib/bibleref/bibleref.dtx 2016/09/10 | 1782 | macros/latex/contrib/bibleref/bibleref.ins -2019/01/13 | 285284 | macros/latex/contrib/bibleref/bibleref.pdf -2019/01/13 | 1990 | macros/latex/contrib/bibleref/CHANGES +2019/12/10 | 286825 | macros/latex/contrib/bibleref/bibleref.pdf +2019/12/10 | 2050 | macros/latex/contrib/bibleref/CHANGES 2019/02/20 | 590 | macros/latex/contrib/bibleref-french/bible.bib 2019/02/20 | 43408 | macros/latex/contrib/bibleref-french/bibleref-french.dtx 2019/02/20 | 324759 | macros/latex/contrib/bibleref-french/bibleref-french-francais.pdf @@ -177361,7 +177377,7 @@ 2012/02/27 | 297683 | macros/latex/contrib/bibleref-lds/bibleref-lds.pdf 2012/02/27 | 973 | macros/latex/contrib/bibleref-lds/README 2012/02/27 | 280274 | macros/latex/contrib/bibleref-lds.zip -2016/09/28 | 479 | macros/latex/contrib/bibleref/makefile +2019/01/14 | 447 | macros/latex/contrib/bibleref/makefile 2012/02/27 | 92615 | macros/latex/contrib/bibleref-mouth/bibleref-mouth.dtx 2012/02/27 | 1711 | macros/latex/contrib/bibleref-mouth/bibleref-mouth.ins 2012/02/27 | 413665 | macros/latex/contrib/bibleref-mouth/bibleref-mouth.pdf @@ -177373,11 +177389,11 @@ 2011/03/28 | 537 | macros/latex/contrib/bibleref-parse/README 2011/04/11 | 112064 | macros/latex/contrib/bibleref-parse.zip 2018/11/17 | 955 | macros/latex/contrib/bibleref/README -2019/01/13 | 12427 | macros/latex/contrib/bibleref/samples/sample-categories.pdf -2019/01/13 | 9544 | macros/latex/contrib/bibleref/samples/sample-indextools.pdf -2019/01/13 | 40093 | macros/latex/contrib/bibleref/samples/sample.pdf -2019/01/13 | 19945 | macros/latex/contrib/bibleref/samples/sample-xidx.pdf -2019/01/14 | 382009 | macros/latex/contrib/bibleref.zip +2019/12/10 | 12303 | macros/latex/contrib/bibleref/samples/sample-categories.pdf +2019/12/10 | 9463 | macros/latex/contrib/bibleref/samples/sample-indextools.pdf +2019/12/10 | 39426 | macros/latex/contrib/bibleref/samples/sample.pdf +2019/12/10 | 19439 | macros/latex/contrib/bibleref/samples/sample-xidx.pdf +2019/12/10 | 382847 | macros/latex/contrib/bibleref.zip 2017/09/02 | 139812 | macros/latex/contrib/bibletext/bibletext.pdf 2017/09/02 | 1644 | macros/latex/contrib/bibletext/bibletext.sty 2017/09/02 | 2368 | macros/latex/contrib/bibletext/bibletext.tex @@ -177455,6 +177471,10 @@ 2015/12/11 | 175733 | macros/latex/contrib/bitpattern/bitpattern.pdf 2015/12/11 | 777 | macros/latex/contrib/bitpattern/README.md 2015/12/11 | 181496 | macros/latex/contrib/bitpattern.zip +2019/12/09 | 77669 | macros/latex/contrib/bitset/bitset.dtx +2019/12/09 | 624889 | macros/latex/contrib/bitset/bitset.pdf +2019/12/09 | 198 | macros/latex/contrib/bitset/README.md +2019/12/10 | 629749 | macros/latex/contrib/bitset.zip 1999/11/12 | 9382 | macros/latex/contrib/bizcard/bizcard.dtx 1999/11/12 | 1160 | macros/latex/contrib/bizcard/bizcard.ins 2009/04/21 | 84073 | macros/latex/contrib/bizcard/bizcard.pdf @@ -178177,6 +178197,10 @@ 2011/02/19 | 190846 | macros/latex/contrib/catchfilebetweentags/catchfilebetweentags.pdf 2010/10/25 | 530 | macros/latex/contrib/catchfilebetweentags/README 2011/02/19 | 154911 | macros/latex/contrib/catchfilebetweentags.zip +2019/12/10 | 22108 | macros/latex/contrib/catchfile/catchfile.dtx +2019/12/10 | 298510 | macros/latex/contrib/catchfile/catchfile.pdf +2019/12/10 | 171 | macros/latex/contrib/catchfile/README.md +2019/12/10 | 301119 | macros/latex/contrib/catchfile.zip 2018/11/02 | 21421 | macros/latex/contrib/catechis/catechis.dtx 2018/11/02 | 2197 | macros/latex/contrib/catechis/catechis.ins 2018/11/02 | 388369 | macros/latex/contrib/catechis/catechis.pdf @@ -188367,6 +188391,10 @@ 2019/09/11 | 565021 | macros/latex/contrib/listings/lstdrvrs.pdf 2019/05/06 | 6062 | macros/latex/contrib/listings/Makefile 2019/05/06 | 674 | macros/latex/contrib/listings/README +2019/12/09 | 18907 | macros/latex/contrib/listingsutf8/listingsutf8.dtx +2019/12/09 | 298795 | macros/latex/contrib/listingsutf8/listingsutf8.pdf +2019/12/09 | 315 | macros/latex/contrib/listingsutf8/README.md +2019/12/10 | 301785 | macros/latex/contrib/listingsutf8.zip 2019/09/11 | 2732001 | macros/latex/contrib/listings.zip 2010/03/07 | 260381 | macros/latex/contrib/listing.zip 2014/08/04 | 16189 | macros/latex/contrib/listlbls/listlbls.dtx @@ -190754,139 +190782,129 @@ 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/12/05 | 16535 | macros/latex/contrib/oberdiek/aliascnt.dtx -2019/12/05 | 293099 | macros/latex/contrib/oberdiek/aliascnt.pdf -2019/12/05 | 43831 | macros/latex/contrib/oberdiek/alphalph.dtx -2019/12/05 | 354229 | macros/latex/contrib/oberdiek/alphalph.pdf -2019/12/05 | 58016 | macros/latex/contrib/oberdiek/askinclude.dtx -2019/12/05 | 593900 | macros/latex/contrib/oberdiek/askinclude.pdf -2019/12/05 | 17618 | macros/latex/contrib/oberdiek/auxhook.dtx -2019/12/05 | 285266 | macros/latex/contrib/oberdiek/auxhook.pdf -2019/12/05 | 85469 | macros/latex/contrib/oberdiek/bigintcalc.dtx -2019/12/05 | 467906 | macros/latex/contrib/oberdiek/bigintcalc.pdf -2019/12/05 | 77827 | macros/latex/contrib/oberdiek/bitset.dtx -2019/12/05 | 626116 | macros/latex/contrib/oberdiek/bitset.pdf -2019/12/05 | 105963 | macros/latex/contrib/oberdiek/bmpsize.dtx -2019/12/05 | 497867 | macros/latex/contrib/oberdiek/bmpsize.pdf -2019/12/05 | 22212 | macros/latex/contrib/oberdiek/catchfile.dtx -2019/12/05 | 298873 | macros/latex/contrib/oberdiek/catchfile.pdf -2019/12/05 | 15084 | macros/latex/contrib/oberdiek/centernot.dtx -2019/12/05 | 274864 | macros/latex/contrib/oberdiek/centernot.pdf -2019/12/05 | 13772 | macros/latex/contrib/oberdiek/chemarr.dtx -2019/12/05 | 288654 | macros/latex/contrib/oberdiek/chemarr.pdf -2019/12/05 | 16633 | macros/latex/contrib/oberdiek/classlist.dtx -2019/12/05 | 271621 | macros/latex/contrib/oberdiek/classlist.pdf -2019/12/05 | 16564 | macros/latex/contrib/oberdiek/colonequals.dtx -2019/12/05 | 284627 | macros/latex/contrib/oberdiek/colonequals.pdf -2019/12/05 | 14185 | macros/latex/contrib/oberdiek/dvipscol.dtx -2019/12/05 | 269326 | macros/latex/contrib/oberdiek/dvipscol.pdf -2019/12/05 | 24106 | macros/latex/contrib/oberdiek/engord.dtx -2019/12/05 | 318562 | macros/latex/contrib/oberdiek/engord.pdf -2019/12/05 | 26109 | macros/latex/contrib/oberdiek/enparen.dtx -2019/12/05 | 304863 | macros/latex/contrib/oberdiek/enparen.pdf -2019/12/05 | 25097 | macros/latex/contrib/oberdiek/eolgrab.dtx -2019/12/05 | 316822 | macros/latex/contrib/oberdiek/eolgrab.pdf -2019/12/05 | 20366 | macros/latex/contrib/oberdiek/etexcmds.dtx -2019/12/05 | 300241 | macros/latex/contrib/oberdiek/etexcmds.pdf -2019/12/05 | 25810 | macros/latex/contrib/oberdiek/fibnum.dtx -2019/12/05 | 354313 | macros/latex/contrib/oberdiek/fibnum.pdf -2019/12/05 | 16789 | macros/latex/contrib/oberdiek/flags.dtx -2019/12/05 | 283637 | macros/latex/contrib/oberdiek/flags.pdf -2019/12/05 | 23136 | macros/latex/contrib/oberdiek/gettitlestring.dtx -2019/12/05 | 318743 | macros/latex/contrib/oberdiek/gettitlestring.pdf -2019/12/05 | 21471 | macros/latex/contrib/oberdiek/holtxdoc.dtx -2019/12/05 | 305359 | macros/latex/contrib/oberdiek/holtxdoc.pdf -2019/12/05 | 20806 | macros/latex/contrib/oberdiek/hopatch.dtx -2019/12/05 | 293225 | macros/latex/contrib/oberdiek/hopatch.pdf -2019/12/05 | 46055 | macros/latex/contrib/oberdiek/hycolor.dtx -2019/12/05 | 364633 | macros/latex/contrib/oberdiek/hycolor.pdf -2019/12/05 | 25146 | macros/latex/contrib/oberdiek/hypbmsec.dtx -2019/12/05 | 289747 | macros/latex/contrib/oberdiek/hypbmsec.pdf -2019/12/05 | 21476 | macros/latex/contrib/oberdiek/hypcap.dtx -2019/12/05 | 284122 | macros/latex/contrib/oberdiek/hypcap.pdf -2019/12/05 | 28916 | macros/latex/contrib/oberdiek/hypdestopt.dtx -2019/12/05 | 317677 | macros/latex/contrib/oberdiek/hypdestopt.pdf -2019/12/05 | 35799 | macros/latex/contrib/oberdiek/hypdoc.dtx -2019/12/05 | 319844 | macros/latex/contrib/oberdiek/hypdoc.pdf -2019/12/05 | 17957 | macros/latex/contrib/oberdiek/hypgotoe.dtx -2019/12/05 | 285090 | macros/latex/contrib/oberdiek/hypgotoe.pdf -2019/12/05 | 21343 | macros/latex/contrib/oberdiek/hyphsubst.dtx -2019/12/05 | 299858 | macros/latex/contrib/oberdiek/hyphsubst.pdf -2019/12/05 | 15169 | macros/latex/contrib/oberdiek/ifdraft.dtx -2019/12/05 | 265294 | macros/latex/contrib/oberdiek/ifdraft.pdf -2019/12/05 | 25308 | macros/latex/contrib/oberdiek/iflang.dtx -2019/12/05 | 314990 | macros/latex/contrib/oberdiek/iflang.pdf -2019/12/05 | 71514 | macros/latex/contrib/oberdiek/intcalc.dtx -2019/12/05 | 431640 | macros/latex/contrib/oberdiek/intcalc.pdf -2019/12/05 | 17107 | macros/latex/contrib/oberdiek/kvdefinekeys.dtx -2019/12/05 | 295786 | macros/latex/contrib/oberdiek/kvdefinekeys.pdf -2019/12/05 | 47687 | macros/latex/contrib/oberdiek/kvsetkeys.dtx -2019/12/05 | 375389 | macros/latex/contrib/oberdiek/kvsetkeys.pdf -2019/12/05 | 19140 | macros/latex/contrib/oberdiek/listingsutf8.dtx -2019/12/05 | 298594 | macros/latex/contrib/oberdiek/listingsutf8.pdf -2019/12/05 | 67789 | macros/latex/contrib/oberdiek/ltxcmds.dtx -2019/12/05 | 394188 | macros/latex/contrib/oberdiek/ltxcmds.pdf -2019/12/05 | 10554 | macros/latex/contrib/oberdiek/oberdiek-bundle.bib -2019/12/05 | 2866 | macros/latex/contrib/oberdiek/oberdiek.ins -2019/12/05 | 345578 | macros/latex/contrib/oberdiek/oberdiek.pdf -2019/12/05 | 959 | macros/latex/contrib/oberdiek/oberdiek-source.bib -2019/12/05 | 26773 | macros/latex/contrib/oberdiek/oberdiek.tex -2019/12/05 | 28136 | macros/latex/contrib/oberdiek/pagegrid.dtx -2019/12/05 | 311600 | macros/latex/contrib/oberdiek/pagegrid.pdf -2019/12/05 | 24209 | macros/latex/contrib/oberdiek/pagesel.dtx -2019/12/05 | 312192 | macros/latex/contrib/oberdiek/pagesel.pdf -2019/12/05 | 26388 | macros/latex/contrib/oberdiek/pdfcol.dtx -2019/12/05 | 19329 | macros/latex/contrib/oberdiek/pdfcolfoot.dtx -2019/12/05 | 294403 | macros/latex/contrib/oberdiek/pdfcolfoot.pdf -2019/12/05 | 26867 | macros/latex/contrib/oberdiek/pdfcolparallel.dtx -2019/12/05 | 319986 | macros/latex/contrib/oberdiek/pdfcolparallel.pdf -2019/12/05 | 20692 | macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx -2019/12/05 | 308006 | macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf -2019/12/05 | 302693 | macros/latex/contrib/oberdiek/pdfcol.pdf -2019/12/05 | 27847 | macros/latex/contrib/oberdiek/pdfcrypt.dtx -2019/12/05 | 311564 | macros/latex/contrib/oberdiek/pdfcrypt.pdf -2019/12/05 | 39389 | macros/latex/contrib/oberdiek/pdfescape.dtx -2019/12/05 | 346746 | macros/latex/contrib/oberdiek/pdfescape.pdf -2019/12/05 | 46837 | macros/latex/contrib/oberdiek/pdfrender.dtx -2019/12/05 | 382955 | macros/latex/contrib/oberdiek/pdfrender.pdf -2019/12/05 | 20736 | macros/latex/contrib/oberdiek/picture.dtx -2019/12/05 | 295928 | macros/latex/contrib/oberdiek/picture.pdf -2019/12/05 | 20812 | macros/latex/contrib/oberdiek/protecteddef.dtx -2019/12/05 | 307773 | macros/latex/contrib/oberdiek/protecteddef.pdf -2019/12/05 | 816 | macros/latex/contrib/oberdiek/README.txt -2019/12/05 | 29904 | macros/latex/contrib/oberdiek/refcount.dtx -2019/12/05 | 326895 | macros/latex/contrib/oberdiek/refcount.pdf -2019/12/05 | 24771 | macros/latex/contrib/oberdiek/resizegather.dtx -2019/12/05 | 517568 | macros/latex/contrib/oberdiek/resizegather.pdf -2019/12/05 | 25691 | macros/latex/contrib/oberdiek/rotchiffre.dtx -2019/12/05 | 317164 | macros/latex/contrib/oberdiek/rotchiffre.pdf -2019/12/05 | 19267 | macros/latex/contrib/oberdiek/scrindex.dtx -2019/12/05 | 283891 | macros/latex/contrib/oberdiek/scrindex.pdf -2019/12/05 | 24735 | macros/latex/contrib/oberdiek/selinput.dtx -2019/12/05 | 537938 | macros/latex/contrib/oberdiek/selinput.pdf -2019/12/05 | 29459 | macros/latex/contrib/oberdiek/setouterhbox.dtx -2019/12/05 | 330129 | macros/latex/contrib/oberdiek/setouterhbox.pdf -2019/12/05 | 20045 | macros/latex/contrib/oberdiek/settobox.dtx -2019/12/05 | 293548 | macros/latex/contrib/oberdiek/settobox.pdf -2019/12/05 | 35155 | macros/latex/contrib/oberdiek/soulutf8.dtx -2019/12/05 | 352081 | macros/latex/contrib/oberdiek/soulutf8.pdf -2019/12/05 | 13782 | macros/latex/contrib/oberdiek/stackrel.dtx -2019/12/05 | 281746 | macros/latex/contrib/oberdiek/stackrel.pdf -2019/12/05 | 18499 | macros/latex/contrib/oberdiek/stampinclude.dtx -2019/12/05 | 277765 | macros/latex/contrib/oberdiek/stampinclude.pdf -2019/12/05 | 31024 | macros/latex/contrib/oberdiek/tabularht.dtx -2019/12/05 | 331314 | macros/latex/contrib/oberdiek/tabularht.pdf -2019/12/05 | 13344 | macros/latex/contrib/oberdiek/tabularkv.dtx -2019/12/05 | 254709 | macros/latex/contrib/oberdiek/tabularkv.pdf -2019/12/05 | 24890 | macros/latex/contrib/oberdiek/telprint.dtx -2019/12/05 | 303828 | macros/latex/contrib/oberdiek/telprint.pdf -2019/12/05 | 32949 | macros/latex/contrib/oberdiek/thepdfnumber.dtx -2019/12/05 | 347238 | macros/latex/contrib/oberdiek/thepdfnumber.pdf -2019/12/05 | 16829 | macros/latex/contrib/oberdiek/twoopt.dtx -2019/12/05 | 274422 | macros/latex/contrib/oberdiek/twoopt.pdf -2019/12/05 | 20085 | macros/latex/contrib/oberdiek/uniquecounter.dtx -2019/12/05 | 289988 | macros/latex/contrib/oberdiek/uniquecounter.pdf -2019/12/06 | 21471329 | macros/latex/contrib/oberdiek.zip +2019/12/09 | 16535 | macros/latex/contrib/oberdiek/aliascnt.dtx +2019/12/09 | 293095 | macros/latex/contrib/oberdiek/aliascnt.pdf +2019/12/09 | 354229 | macros/latex/contrib/oberdiek/alphalph.pdf +2019/12/09 | 17618 | macros/latex/contrib/oberdiek/auxhook.dtx +2019/12/09 | 285845 | macros/latex/contrib/oberdiek/auxhook.pdf +2019/12/09 | 85469 | macros/latex/contrib/oberdiek/bigintcalc.dtx +2019/12/09 | 468260 | macros/latex/contrib/oberdiek/bigintcalc.pdf +2019/12/09 | 626116 | macros/latex/contrib/oberdiek/bitset.pdf +2019/12/09 | 105963 | macros/latex/contrib/oberdiek/bmpsize.dtx +2019/12/09 | 498211 | macros/latex/contrib/oberdiek/bmpsize.pdf +2019/12/09 | 298873 | macros/latex/contrib/oberdiek/catchfile.pdf +2019/12/09 | 15084 | macros/latex/contrib/oberdiek/centernot.dtx +2019/12/09 | 275199 | macros/latex/contrib/oberdiek/centernot.pdf +2019/12/09 | 13772 | macros/latex/contrib/oberdiek/chemarr.dtx +2019/12/09 | 289226 | macros/latex/contrib/oberdiek/chemarr.pdf +2019/12/09 | 16633 | macros/latex/contrib/oberdiek/classlist.dtx +2019/12/09 | 271947 | macros/latex/contrib/oberdiek/classlist.pdf +2019/12/09 | 16564 | macros/latex/contrib/oberdiek/colonequals.dtx +2019/12/09 | 284949 | macros/latex/contrib/oberdiek/colonequals.pdf +2019/12/09 | 14185 | macros/latex/contrib/oberdiek/dvipscol.dtx +2019/12/09 | 269922 | macros/latex/contrib/oberdiek/dvipscol.pdf +2019/12/09 | 24106 | macros/latex/contrib/oberdiek/engord.dtx +2019/12/09 | 319151 | macros/latex/contrib/oberdiek/engord.pdf +2019/12/09 | 26109 | macros/latex/contrib/oberdiek/enparen.dtx +2019/12/09 | 305218 | macros/latex/contrib/oberdiek/enparen.pdf +2019/12/09 | 25097 | macros/latex/contrib/oberdiek/eolgrab.dtx +2019/12/09 | 317170 | macros/latex/contrib/oberdiek/eolgrab.pdf +2019/12/09 | 20366 | macros/latex/contrib/oberdiek/etexcmds.dtx +2019/12/09 | 300824 | macros/latex/contrib/oberdiek/etexcmds.pdf +2019/12/09 | 25810 | macros/latex/contrib/oberdiek/fibnum.dtx +2019/12/09 | 354648 | macros/latex/contrib/oberdiek/fibnum.pdf +2019/12/09 | 16789 | macros/latex/contrib/oberdiek/flags.dtx +2019/12/09 | 283961 | macros/latex/contrib/oberdiek/flags.pdf +2019/12/09 | 23136 | macros/latex/contrib/oberdiek/gettitlestring.dtx +2019/12/09 | 318747 | macros/latex/contrib/oberdiek/gettitlestring.pdf +2019/12/09 | 21668 | macros/latex/contrib/oberdiek/holtxdoc.dtx +2019/12/09 | 306330 | macros/latex/contrib/oberdiek/holtxdoc.pdf +2019/12/09 | 20806 | macros/latex/contrib/oberdiek/hopatch.dtx +2019/12/09 | 293225 | macros/latex/contrib/oberdiek/hopatch.pdf +2019/12/09 | 46055 | macros/latex/contrib/oberdiek/hycolor.dtx +2019/12/09 | 364626 | macros/latex/contrib/oberdiek/hycolor.pdf +2019/12/09 | 25146 | macros/latex/contrib/oberdiek/hypbmsec.dtx +2019/12/09 | 290353 | macros/latex/contrib/oberdiek/hypbmsec.pdf +2019/12/09 | 21476 | macros/latex/contrib/oberdiek/hypcap.dtx +2019/12/09 | 284122 | macros/latex/contrib/oberdiek/hypcap.pdf +2019/12/09 | 28916 | macros/latex/contrib/oberdiek/hypdestopt.dtx +2019/12/09 | 318258 | macros/latex/contrib/oberdiek/hypdestopt.pdf +2019/12/09 | 35799 | macros/latex/contrib/oberdiek/hypdoc.dtx +2019/12/09 | 320178 | macros/latex/contrib/oberdiek/hypdoc.pdf +2019/12/09 | 17957 | macros/latex/contrib/oberdiek/hypgotoe.dtx +2019/12/09 | 285077 | macros/latex/contrib/oberdiek/hypgotoe.pdf +2019/12/09 | 21343 | macros/latex/contrib/oberdiek/hyphsubst.dtx +2019/12/09 | 300446 | macros/latex/contrib/oberdiek/hyphsubst.pdf +2019/12/09 | 15169 | macros/latex/contrib/oberdiek/ifdraft.dtx +2019/12/09 | 265890 | macros/latex/contrib/oberdiek/ifdraft.pdf +2019/12/09 | 25308 | macros/latex/contrib/oberdiek/iflang.dtx +2019/12/09 | 314990 | macros/latex/contrib/oberdiek/iflang.pdf +2019/12/09 | 71514 | macros/latex/contrib/oberdiek/intcalc.dtx +2019/12/09 | 431637 | macros/latex/contrib/oberdiek/intcalc.pdf +2019/12/09 | 17107 | macros/latex/contrib/oberdiek/kvdefinekeys.dtx +2019/12/09 | 296060 | macros/latex/contrib/oberdiek/kvdefinekeys.pdf +2019/12/09 | 47687 | macros/latex/contrib/oberdiek/kvsetkeys.dtx +2019/12/09 | 375389 | macros/latex/contrib/oberdiek/kvsetkeys.pdf +2019/12/09 | 67789 | macros/latex/contrib/oberdiek/ltxcmds.dtx +2019/12/09 | 394196 | macros/latex/contrib/oberdiek/ltxcmds.pdf +2019/12/09 | 9529 | macros/latex/contrib/oberdiek/oberdiek-bundle.bib +2019/12/09 | 2653 | macros/latex/contrib/oberdiek/oberdiek.ins +2019/12/09 | 319133 | macros/latex/contrib/oberdiek/oberdiek.pdf +2019/12/09 | 959 | macros/latex/contrib/oberdiek/oberdiek-source.bib +2019/12/09 | 24079 | macros/latex/contrib/oberdiek/oberdiek.tex +2019/12/09 | 28136 | macros/latex/contrib/oberdiek/pagegrid.dtx +2019/12/09 | 311938 | macros/latex/contrib/oberdiek/pagegrid.pdf +2019/12/09 | 24209 | macros/latex/contrib/oberdiek/pagesel.dtx +2019/12/09 | 312194 | macros/latex/contrib/oberdiek/pagesel.pdf +2019/12/09 | 26388 | macros/latex/contrib/oberdiek/pdfcol.dtx +2019/12/09 | 19329 | macros/latex/contrib/oberdiek/pdfcolfoot.dtx +2019/12/09 | 294724 | macros/latex/contrib/oberdiek/pdfcolfoot.pdf +2019/12/09 | 26867 | macros/latex/contrib/oberdiek/pdfcolparallel.dtx +2019/12/09 | 320329 | macros/latex/contrib/oberdiek/pdfcolparallel.pdf +2019/12/09 | 20692 | macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx +2019/12/09 | 308338 | macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf +2019/12/09 | 303046 | macros/latex/contrib/oberdiek/pdfcol.pdf +2019/12/09 | 27847 | macros/latex/contrib/oberdiek/pdfcrypt.dtx +2019/12/09 | 311898 | macros/latex/contrib/oberdiek/pdfcrypt.pdf +2019/12/09 | 346746 | macros/latex/contrib/oberdiek/pdfescape.pdf +2019/12/09 | 46837 | macros/latex/contrib/oberdiek/pdfrender.dtx +2019/12/09 | 383290 | macros/latex/contrib/oberdiek/pdfrender.pdf +2019/12/09 | 295928 | macros/latex/contrib/oberdiek/picture.pdf +2019/12/09 | 20812 | macros/latex/contrib/oberdiek/protecteddef.dtx +2019/12/09 | 308115 | macros/latex/contrib/oberdiek/protecteddef.pdf +2019/12/09 | 816 | macros/latex/contrib/oberdiek/README.txt +2019/12/09 | 29904 | macros/latex/contrib/oberdiek/refcount.dtx +2019/12/09 | 326895 | macros/latex/contrib/oberdiek/refcount.pdf +2019/12/09 | 24780 | macros/latex/contrib/oberdiek/resizegather.dtx +2019/12/09 | 517717 | macros/latex/contrib/oberdiek/resizegather.pdf +2019/12/09 | 25691 | macros/latex/contrib/oberdiek/rotchiffre.dtx +2019/12/09 | 317497 | macros/latex/contrib/oberdiek/rotchiffre.pdf +2019/12/09 | 19267 | macros/latex/contrib/oberdiek/scrindex.dtx +2019/12/09 | 283886 | macros/latex/contrib/oberdiek/scrindex.pdf +2019/12/09 | 537938 | macros/latex/contrib/oberdiek/selinput.pdf +2019/12/09 | 29459 | macros/latex/contrib/oberdiek/setouterhbox.dtx +2019/12/09 | 330126 | macros/latex/contrib/oberdiek/setouterhbox.pdf +2019/12/09 | 20045 | macros/latex/contrib/oberdiek/settobox.dtx +2019/12/09 | 293875 | macros/latex/contrib/oberdiek/settobox.pdf +2019/12/09 | 35155 | macros/latex/contrib/oberdiek/soulutf8.dtx +2019/12/09 | 352082 | macros/latex/contrib/oberdiek/soulutf8.pdf +2019/12/09 | 13782 | macros/latex/contrib/oberdiek/stackrel.dtx +2019/12/09 | 282341 | macros/latex/contrib/oberdiek/stackrel.pdf +2019/12/09 | 18499 | macros/latex/contrib/oberdiek/stampinclude.dtx +2019/12/09 | 278115 | macros/latex/contrib/oberdiek/stampinclude.pdf +2019/12/09 | 31024 | macros/latex/contrib/oberdiek/tabularht.dtx +2019/12/09 | 331646 | macros/latex/contrib/oberdiek/tabularht.pdf +2019/12/09 | 13344 | macros/latex/contrib/oberdiek/tabularkv.dtx +2019/12/09 | 255279 | macros/latex/contrib/oberdiek/tabularkv.pdf +2019/12/09 | 24890 | macros/latex/contrib/oberdiek/telprint.dtx +2019/12/09 | 303826 | macros/latex/contrib/oberdiek/telprint.pdf +2019/12/09 | 32949 | macros/latex/contrib/oberdiek/thepdfnumber.dtx +2019/12/09 | 347573 | macros/latex/contrib/oberdiek/thepdfnumber.pdf +2019/12/09 | 16829 | macros/latex/contrib/oberdiek/twoopt.dtx +2019/12/09 | 275011 | macros/latex/contrib/oberdiek/twoopt.pdf +2019/12/09 | 20085 | macros/latex/contrib/oberdiek/uniquecounter.dtx +2019/12/09 | 290336 | macros/latex/contrib/oberdiek/uniquecounter.pdf +2019/12/10 | 20504623 | 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 @@ -192002,6 +192020,10 @@ 2004/08/13 | 3736 | macros/latex/contrib/pdfcprot/README.txt 2004/08/13 | 505 | macros/latex/contrib/pdfcprot/TODO 2005/06/10 | 405934 | macros/latex/contrib/pdfcprot.zip +2019/12/09 | 39106 | macros/latex/contrib/pdfescape/pdfescape.dtx +2019/12/09 | 346644 | macros/latex/contrib/pdfescape/pdfescape.pdf +2019/12/09 | 181 | macros/latex/contrib/pdfescape/README.md +2019/12/10 | 349047 | macros/latex/contrib/pdfescape.zip 2019/12/05 | 21712 | macros/latex/contrib/pdflscape/pdflscape.dtx 2019/12/05 | 299397 | macros/latex/contrib/pdflscape/pdflscape.pdf 2019/12/05 | 170 | macros/latex/contrib/pdflscape/README.md @@ -192312,6 +192334,10 @@ 2016/02/06 | 1810 | macros/latex/contrib/pict2e/README.md 2019/08/20 | 825873 | macros/latex/contrib/pict2e.zip 2001/11/14 | 15940 | macros/latex/contrib/pictex2/pictex2.sty +2019/12/09 | 20808 | macros/latex/contrib/picture/picture.dtx +2019/12/09 | 295737 | macros/latex/contrib/picture/picture.pdf +2019/12/09 | 281 | macros/latex/contrib/picture/README.md +2019/12/10 | 298290 | macros/latex/contrib/picture.zip 2011/03/24 | 165933 | macros/latex/contrib/piff/duplicat-doc.pdf 2011/03/24 | 1219 | macros/latex/contrib/piff/duplicat-doc.tex 2010/12/03 | 1135 | macros/latex/contrib/piff/duplicat.sty @@ -196219,6 +196245,10 @@ 2010/10/24 | 7434 | macros/latex/contrib/selectp/selectp-doc.tex 2009/09/12 | 9678 | macros/latex/contrib/selectp/selectp.sty 2010/10/24 | 282665 | macros/latex/contrib/selectp.zip +2019/12/09 | 145 | macros/latex/contrib/selinput/README.md +2019/12/09 | 24477 | macros/latex/contrib/selinput/selinput.dtx +2019/12/09 | 536592 | macros/latex/contrib/selinput/selinput.pdf +2019/12/10 | 540398 | macros/latex/contrib/selinput.zip 2018/05/21 | 1014 | macros/latex/contrib/semantic-markup/README 2018/05/21 | 274152 | macros/latex/contrib/semantic-markup/semantic-markup.pdf 2018/05/21 | 4582 | macros/latex/contrib/semantic-markup/semantic-markup.sty @@ -247884,7 +247914,7 @@ 2019/02/28 | 127824 | systems/texlive/tlnet/archive/babel-danish.doc.tar.xz 2019/02/28 | 5704 | systems/texlive/tlnet/archive/babel-danish.source.tar.xz 2019/02/28 | 2464 | systems/texlive/tlnet/archive/babel-danish.tar.xz -2019/11/15 | 715120 | systems/texlive/tlnet/archive/babel.doc.tar.xz +2019/12/10 | 726916 | systems/texlive/tlnet/archive/babel.doc.r53072.tar.xz 2019/02/28 | 154000 | systems/texlive/tlnet/archive/babel-dutch.doc.tar.xz 2019/02/28 | 7936 | systems/texlive/tlnet/archive/babel-dutch.source.tar.xz 2019/02/28 | 2848 | systems/texlive/tlnet/archive/babel-dutch.tar.xz @@ -247970,6 +248000,7 @@ 2019/02/28 | 146188 | systems/texlive/tlnet/archive/babel-portuges.doc.tar.xz 2019/02/28 | 6648 | systems/texlive/tlnet/archive/babel-portuges.source.tar.xz 2019/02/28 | 2704 | systems/texlive/tlnet/archive/babel-portuges.tar.xz +2019/12/10 | 153836 | systems/texlive/tlnet/archive/babel.r53072.tar.xz 2019/02/28 | 113084 | systems/texlive/tlnet/archive/babel-romanian.doc.tar.xz 2019/02/28 | 4340 | systems/texlive/tlnet/archive/babel-romanian.source.tar.xz 2019/02/28 | 2176 | systems/texlive/tlnet/archive/babel-romanian.tar.xz @@ -248000,7 +248031,7 @@ 2019/02/28 | 215620 | systems/texlive/tlnet/archive/babel-sorbian.doc.tar.xz 2019/02/28 | 6236 | systems/texlive/tlnet/archive/babel-sorbian.source.tar.xz 2019/02/28 | 3156 | systems/texlive/tlnet/archive/babel-sorbian.tar.xz -2019/11/15 | 608012 | systems/texlive/tlnet/archive/babel.source.tar.xz +2019/12/10 | 611124 | systems/texlive/tlnet/archive/babel.source.r53072.tar.xz 2019/02/28 | 1232 | systems/texlive/tlnet/archive/babel-spanglish.doc.tar.xz 2019/02/28 | 4284 | systems/texlive/tlnet/archive/babel-spanglish.tar.xz 2019/02/28 | 183488 | systems/texlive/tlnet/archive/babel-spanish.doc.tar.xz @@ -248009,7 +248040,6 @@ 2019/02/28 | 130184 | systems/texlive/tlnet/archive/babel-swedish.doc.tar.xz 2019/02/28 | 6788 | systems/texlive/tlnet/archive/babel-swedish.source.tar.xz 2019/02/28 | 2688 | systems/texlive/tlnet/archive/babel-swedish.tar.xz -2019/11/15 | 151820 | systems/texlive/tlnet/archive/babel.tar.xz 2019/02/28 | 215648 | systems/texlive/tlnet/archive/babel-thai.doc.tar.xz 2019/02/28 | 11116 | systems/texlive/tlnet/archive/babel-thai.source.tar.xz 2019/02/28 | 6376 | systems/texlive/tlnet/archive/babel-thai.tar.xz @@ -248151,15 +248181,15 @@ 2019/02/28 | 372 | systems/texlive/tlnet/archive/beamer-tut-pt.tar.xz 2019/02/28 | 618140 | systems/texlive/tlnet/archive/beamer-verona.doc.tar.xz 2019/02/28 | 3988 | systems/texlive/tlnet/archive/beamer-verona.tar.xz -2019/12/09 | 822292 | systems/texlive/tlnet/archive/beebe.r53060.tar.xz +2019/12/10 | 822800 | systems/texlive/tlnet/archive/beebe.r53066.tar.xz 2019/02/28 | 709916 | systems/texlive/tlnet/archive/begingreek.doc.tar.xz 2019/02/28 | 7448 | systems/texlive/tlnet/archive/begingreek.source.tar.xz 2019/02/28 | 1664 | systems/texlive/tlnet/archive/begingreek.tar.xz 2019/02/28 | 40204 | systems/texlive/tlnet/archive/begriff.doc.tar.xz 2019/02/28 | 2468 | systems/texlive/tlnet/archive/begriff.tar.xz -2019/02/28 | 698248 | systems/texlive/tlnet/archive/beilstein.doc.tar.xz -2019/02/28 | 76764 | systems/texlive/tlnet/archive/beilstein.source.tar.xz -2019/02/28 | 13972 | systems/texlive/tlnet/archive/beilstein.tar.xz +2019/12/10 | 696516 | systems/texlive/tlnet/archive/beilstein.doc.r53069.tar.xz +2019/12/10 | 14044 | systems/texlive/tlnet/archive/beilstein.r53069.tar.xz +2019/12/10 | 77364 | systems/texlive/tlnet/archive/beilstein.source.r53069.tar.xz 2019/02/28 | 720 | systems/texlive/tlnet/archive/belleek.doc.tar.xz 2019/02/28 | 596 | systems/texlive/tlnet/archive/belleek.source.tar.xz 2019/02/28 | 83284 | systems/texlive/tlnet/archive/belleek.tar.xz @@ -249521,8 +249551,8 @@ 2019/02/28 | 3560 | systems/texlive/tlnet/archive/copyedit.tar.xz 2019/02/28 | 1691464 | systems/texlive/tlnet/archive/copyrightbox.doc.tar.xz 2019/02/28 | 1480 | systems/texlive/tlnet/archive/copyrightbox.tar.xz -2019/10/24 | 56160 | systems/texlive/tlnet/archive/cormorantgaramond.doc.tar.xz -2019/10/24 | 4336284 | systems/texlive/tlnet/archive/cormorantgaramond.tar.xz +2019/12/10 | 158020 | systems/texlive/tlnet/archive/cormorantgaramond.doc.r53067.tar.xz +2019/12/10 | 5582788 | systems/texlive/tlnet/archive/cormorantgaramond.r53067.tar.xz 2019/02/28 | 478128 | systems/texlive/tlnet/archive/correctmathalign.doc.tar.xz 2019/02/28 | 1508 | systems/texlive/tlnet/archive/correctmathalign.tar.xz 2019/02/28 | 155852 | systems/texlive/tlnet/archive/coseoul.doc.tar.xz @@ -250868,9 +250898,9 @@ 2019/02/28 | 364 | systems/texlive/tlnet/archive/epstopdf.i386-linux.tar.xz 2019/02/28 | 364 | systems/texlive/tlnet/archive/epstopdf.i386-netbsd.tar.xz 2019/02/28 | 364 | systems/texlive/tlnet/archive/epstopdf.i386-solaris.tar.xz -2019/12/01 | 362176 | systems/texlive/tlnet/archive/epstopdf-pkg.doc.r52979.tar.xz -2019/12/01 | 4212 | systems/texlive/tlnet/archive/epstopdf-pkg.r52979.tar.xz -2019/12/01 | 12492 | systems/texlive/tlnet/archive/epstopdf-pkg.source.r52979.tar.xz +2019/12/10 | 353844 | systems/texlive/tlnet/archive/epstopdf-pkg.doc.r53070.tar.xz +2019/12/10 | 4200 | systems/texlive/tlnet/archive/epstopdf-pkg.r53070.tar.xz +2019/12/10 | 11944 | systems/texlive/tlnet/archive/epstopdf-pkg.source.r53070.tar.xz 2019/02/28 | 12460 | systems/texlive/tlnet/archive/epstopdf.tar.xz 2019/02/28 | 708 | systems/texlive/tlnet/archive/epstopdf.win32.tar.xz 2019/02/28 | 364 | systems/texlive/tlnet/archive/epstopdf.x86_64-cygwin.tar.xz @@ -256425,9 +256455,9 @@ 2019/02/28 | 398972 | systems/texlive/tlnet/archive/regstats.doc.tar.xz 2019/02/28 | 13252 | systems/texlive/tlnet/archive/regstats.source.tar.xz 2019/02/28 | 3648 | systems/texlive/tlnet/archive/regstats.tar.xz -2019/11/30 | 8551088 | systems/texlive/tlnet/archive/reledmac.doc.r52970.tar.xz -2019/11/30 | 52936 | systems/texlive/tlnet/archive/reledmac.r52970.tar.xz -2019/11/30 | 203556 | systems/texlive/tlnet/archive/reledmac.source.r52970.tar.xz +2019/12/10 | 8551380 | systems/texlive/tlnet/archive/reledmac.doc.r53071.tar.xz +2019/12/10 | 52912 | systems/texlive/tlnet/archive/reledmac.r53071.tar.xz +2019/12/10 | 203624 | systems/texlive/tlnet/archive/reledmac.source.r53071.tar.xz 2019/02/28 | 26504 | systems/texlive/tlnet/archive/relenc.doc.tar.xz 2019/02/28 | 26728 | systems/texlive/tlnet/archive/relenc.source.tar.xz 2019/02/28 | 11188 | systems/texlive/tlnet/archive/relenc.tar.xz @@ -257649,8 +257679,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/08 | 156792 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53055.tar.xz -2019/12/08 | 109876 | systems/texlive/tlnet/archive/texlive-docindex.r53055.tar.xz +2019/12/10 | 156688 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53066.tar.xz +2019/12/10 | 109876 | systems/texlive/tlnet/archive/texlive-docindex.r53066.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 @@ -257706,13 +257736,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/09 | 51204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r53060.tar.xz +2019/12/10 | 51204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r53066.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/09 | 85448 | systems/texlive/tlnet/archive/texlive-scripts.r53060.tar.xz +2019/12/10 | 85460 | systems/texlive/tlnet/archive/texlive-scripts.r53066.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 @@ -259008,8 +259038,8 @@ 2019/12/03 | 57320 | systems/texlive/tlnet/archive/xetexko.r53002.tar.xz 2019/02/28 | 932 | systems/texlive/tlnet/archive/xetex-pstricks.doc.tar.xz 2019/02/28 | 724 | systems/texlive/tlnet/archive/xetex-pstricks.tar.xz -2019/03/06 | 160552 | systems/texlive/tlnet/archive/xetexref.doc.tar.xz -2019/03/06 | 472 | systems/texlive/tlnet/archive/xetexref.tar.xz +2019/12/10 | 157320 | systems/texlive/tlnet/archive/xetexref.doc.r53068.tar.xz +2019/12/10 | 472 | systems/texlive/tlnet/archive/xetexref.r53068.tar.xz 2019/11/08 | 6940 | systems/texlive/tlnet/archive/xetex.tar.xz 2019/02/28 | 1204 | systems/texlive/tlnet/archive/xetex-tibetan.doc.tar.xz 2019/02/28 | 7048 | systems/texlive/tlnet/archive/xetex-tibetan.tar.xz @@ -259289,16 +259319,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/09 | 3947715 | systems/texlive/tlnet/install-tl-unx.tar.gz -2019/12/09 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2019/12/09 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2019/12/10 | 3947739 | systems/texlive/tlnet/install-tl-unx.tar.gz +2019/12/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2019/12/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2019/05/09 | 4543 | systems/texlive/tlnet/install-tl-windows.bat -2019/12/09 | 18699287 | systems/texlive/tlnet/install-tl-windows.exe -2019/12/09 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2019/12/09 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2019/12/09 | 22539829 | systems/texlive/tlnet/install-tl.zip -2019/12/09 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2019/12/09 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2019/12/10 | 18700043 | systems/texlive/tlnet/install-tl-windows.exe +2019/12/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2019/12/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2019/12/10 | 22539834 | systems/texlive/tlnet/install-tl.zip +2019/12/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2019/12/10 | 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 @@ -259307,7 +259337,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/08 | 5791 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2019/12/09 | 5838 | 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 @@ -259353,12 +259383,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/09 | 16001507 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2019/12/09 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2019/12/10 | 16001561 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2019/12/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2019/12/06 | 87499 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2019/12/09 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2019/12/09 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2019/12/09 | 2156148 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2019/12/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2019/12/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2019/12/10 | 2150176 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2019/12/05 | 59158 | 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 @@ -262747,7 +262777,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/09 | 511566 | systems/win32/miktex/tm/packages/files.csv.lzma +2019/12/10 | 511566 | 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 @@ -263863,9 +263893,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/09 | 193592 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2019/12/09 | 1148550 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2019/12/09 | 1070643 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2019/12/10 | 193630 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2019/12/10 | 1149592 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2019/12/10 | 1071487 | 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 @@ -264014,181 +264044,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/09 | 511962 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2019/12/09 | 29239 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2019/12/09 | 33400 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2019/12/09 | 863201 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2019/12/09 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2019/12/09 | 24073 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2019/12/09 | 26178 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2019/12/09 | 29295 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2019/12/09 | 34846 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2019/12/09 | 49772 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2019/12/09 | 57220 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2019/12/09 | 84533 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma -2019/12/09 | 94239 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2019/12/09 | 60328 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2019/12/09 | 67256 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2019/12/09 | 26661 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2019/12/09 | 30240 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2019/12/09 | 328877 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma -2019/12/09 | 391461 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2019/12/09 | 32267 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2019/12/09 | 36381 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2019/12/09 | 49263 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2019/12/09 | 53998 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2019/12/09 | 198081 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma -2019/12/09 | 214154 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma -2019/12/09 | 169204 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma -2019/12/09 | 184159 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2019/12/09 | 51772 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma -2019/12/09 | 58794 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2019/12/09 | 20739 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2019/12/09 | 22961 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2019/12/09 | 449940 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma -2019/12/09 | 40991 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma -2019/12/09 | 45809 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2019/12/09 | 271813 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2019/12/09 | 308659 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2019/12/09 | 40737 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma -2019/12/09 | 44980 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2019/12/09 | 112993 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2019/12/09 | 127173 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2019/12/09 | 1203299 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2019/12/09 | 1329051 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2019/12/09 | 33549 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma -2019/12/09 | 38864 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2019/12/09 | 43439 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2019/12/09 | 47979 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2019/12/09 | 45466 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2019/12/09 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2019/12/09 | 56620 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2019/12/09 | 61657 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2019/12/09 | 133205 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2019/12/09 | 152165 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2019/12/09 | 69608 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2019/12/09 | 72598 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2019/12/09 | 68674 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma -2019/12/09 | 77319 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma -2019/12/09 | 246456 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2019/12/09 | 281675 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2019/12/09 | 25328 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma -2019/12/09 | 28709 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2019/12/09 | 100682 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma -2019/12/09 | 116803 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2019/12/09 | 63290 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2019/12/09 | 72573 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2019/12/09 | 94639 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2019/12/09 | 111236 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2019/12/09 | 35216 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2019/12/09 | 39846 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2019/12/09 | 457347 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2019/12/09 | 544015 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2019/12/09 | 137171 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma -2019/12/09 | 150092 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma -2019/12/09 | 92936 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2019/12/09 | 108760 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2019/12/09 | 15896 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma -2019/12/09 | 17699 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2019/12/09 | 27822 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2019/12/09 | 29691 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2019/12/09 | 498555 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma -2019/12/09 | 560771 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2019/12/09 | 538882 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2019/12/09 | 575920 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2019/12/09 | 93475 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma -2019/12/09 | 102381 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2019/12/09 | 1679154 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2019/12/09 | 1945837 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2019/12/09 | 67251 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2019/12/09 | 73636 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2019/12/09 | 26977 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2019/12/09 | 31293 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2019/12/09 | 7505 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2019/12/09 | 8484 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2019/12/09 | 167846 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma -2019/12/09 | 182758 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2019/12/09 | 247500 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2019/12/09 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2019/12/09 | 87275 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2019/12/09 | 91981 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2019/12/09 | 77961 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2019/12/09 | 86581 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2019/12/09 | 166013 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma -2019/12/09 | 185299 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2019/12/09 | 146763 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma -2019/12/09 | 165963 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2019/12/09 | 194997 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2019/12/09 | 177584 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2019/12/09 | 80507 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2019/12/09 | 91155 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2019/12/09 | 30991 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2019/12/09 | 34834 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2019/12/09 | 56422 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2019/12/09 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2019/12/09 | 41878 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2019/12/09 | 45741 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2019/12/09 | 45589 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2019/12/09 | 52141 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2019/12/09 | 354503 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma -2019/12/09 | 387512 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma -2019/12/09 | 321501 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma -2019/12/09 | 356318 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2019/12/09 | 187296 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2019/12/09 | 193313 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2019/12/09 | 202429 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2019/12/09 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2019/12/09 | 77936 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2019/12/09 | 87218 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2019/12/09 | 932884 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2019/12/09 | 1042662 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2019/12/09 | 19791 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2019/12/09 | 23345 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2019/12/09 | 31154 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2019/12/09 | 36633 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2019/12/09 | 63274 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma -2019/12/09 | 71697 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2019/12/09 | 42573 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2019/12/09 | 50790 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2019/12/09 | 1068588 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma -2019/12/09 | 1195623 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2019/12/09 | 41864 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma -2019/12/09 | 50828 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2019/12/09 | 53446 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma -2019/12/09 | 59459 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma -2019/12/09 | 26800 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2019/12/09 | 29145 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2019/12/09 | 16044 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2019/12/09 | 17763 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2019/12/09 | 63117 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2019/12/09 | 69211 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2019/12/09 | 147095 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2019/12/09 | 160558 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2019/12/09 | 70250 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2019/12/09 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2019/12/09 | 91337 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2019/12/09 | 96209 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2019/12/09 | 2459484 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma -2019/12/09 | 2579407 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2019/12/09 | 54738 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2019/12/09 | 61219 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2019/12/09 | 26508 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma -2019/12/09 | 32349 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2019/12/09 | 61568 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2019/12/09 | 65025 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2019/12/09 | 246892 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2019/12/09 | 276601 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2019/12/09 | 533456 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2019/12/09 | 563305 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2019/12/09 | 39221 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma -2019/12/09 | 42942 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2019/12/09 | 193609 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2019/12/09 | 1149519 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2019/12/09 | 1071192 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2019/12/09 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2019/12/09 | 14050 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2019/12/10 | 511962 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2019/12/10 | 29239 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2019/12/10 | 33399 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2019/12/10 | 863200 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2019/12/10 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2019/12/10 | 24073 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2019/12/10 | 26178 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2019/12/10 | 29296 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2019/12/10 | 34845 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2019/12/10 | 49773 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2019/12/10 | 57219 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2019/12/10 | 84533 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2019/12/10 | 94238 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2019/12/10 | 60329 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2019/12/10 | 67256 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2019/12/10 | 26662 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2019/12/10 | 30240 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2019/12/10 | 328876 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2019/12/10 | 391461 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2019/12/10 | 32267 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2019/12/10 | 36381 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2019/12/10 | 49265 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2019/12/10 | 53996 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2019/12/10 | 198080 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2019/12/10 | 214150 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2019/12/10 | 169203 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2019/12/10 | 184161 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2019/12/10 | 51773 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2019/12/10 | 58794 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2019/12/10 | 20738 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2019/12/10 | 22958 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2019/12/10 | 449933 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma +2019/12/10 | 40990 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2019/12/10 | 45810 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2019/12/10 | 271814 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2019/12/10 | 308659 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2019/12/10 | 40736 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2019/12/10 | 44980 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2019/12/10 | 112993 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2019/12/10 | 127170 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2019/12/10 | 1203299 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2019/12/10 | 1329052 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2019/12/10 | 33547 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2019/12/10 | 38863 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2019/12/10 | 43438 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2019/12/10 | 47978 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2019/12/10 | 45467 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2019/12/10 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2019/12/10 | 56620 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2019/12/10 | 61657 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2019/12/10 | 133204 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2019/12/10 | 152163 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2019/12/10 | 69609 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2019/12/10 | 72600 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2019/12/10 | 68672 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2019/12/10 | 77319 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2019/12/10 | 246456 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2019/12/10 | 281674 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2019/12/10 | 25328 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2019/12/10 | 28711 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2019/12/10 | 100682 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2019/12/10 | 116802 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2019/12/10 | 63288 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2019/12/10 | 72572 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2019/12/10 | 94639 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2019/12/10 | 111235 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2019/12/10 | 35215 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2019/12/10 | 39845 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2019/12/10 | 457347 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2019/12/10 | 544015 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2019/12/10 | 137171 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2019/12/10 | 150090 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2019/12/10 | 92937 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2019/12/10 | 108758 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2019/12/10 | 15896 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2019/12/10 | 17697 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2019/12/10 | 27819 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2019/12/10 | 29691 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2019/12/10 | 498554 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2019/12/10 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2019/12/10 | 538880 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2019/12/10 | 575923 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2019/12/10 | 93474 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2019/12/10 | 102378 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2019/12/10 | 1679153 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2019/12/10 | 1945835 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2019/12/10 | 67249 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2019/12/10 | 73635 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2019/12/10 | 26976 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2019/12/10 | 31293 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2019/12/10 | 7505 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2019/12/10 | 8484 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2019/12/10 | 167844 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2019/12/10 | 182759 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2019/12/10 | 247500 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2019/12/10 | 281286 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2019/12/10 | 87274 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2019/12/10 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2019/12/10 | 77960 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2019/12/10 | 86582 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2019/12/10 | 166013 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2019/12/10 | 185299 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2019/12/10 | 146764 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2019/12/10 | 165964 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2019/12/10 | 194997 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2019/12/10 | 177584 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2019/12/10 | 80506 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2019/12/10 | 91155 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2019/12/10 | 30990 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2019/12/10 | 34834 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2019/12/10 | 56423 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2019/12/10 | 62908 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2019/12/10 | 41879 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2019/12/10 | 45741 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2019/12/10 | 45590 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2019/12/10 | 52142 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2019/12/10 | 354501 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma +2019/12/10 | 387514 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma +2019/12/10 | 321501 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2019/12/10 | 356320 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2019/12/10 | 187295 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2019/12/10 | 193312 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2019/12/10 | 202430 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2019/12/10 | 237542 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2019/12/10 | 77936 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2019/12/10 | 87219 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2019/12/10 | 932884 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2019/12/10 | 1042660 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2019/12/10 | 19792 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2019/12/10 | 23345 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2019/12/10 | 31154 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2019/12/10 | 36633 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2019/12/10 | 63273 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2019/12/10 | 71697 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2019/12/10 | 42572 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2019/12/10 | 50788 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2019/12/10 | 1068589 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2019/12/10 | 1195621 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2019/12/10 | 41863 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2019/12/10 | 50828 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2019/12/10 | 53445 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma +2019/12/10 | 59458 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma +2019/12/10 | 26799 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2019/12/10 | 29142 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2019/12/10 | 16042 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2019/12/10 | 17762 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2019/12/10 | 63115 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2019/12/10 | 69210 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2019/12/10 | 147094 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2019/12/10 | 160558 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2019/12/10 | 70248 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2019/12/10 | 79844 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2019/12/10 | 91337 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2019/12/10 | 96206 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2019/12/10 | 2459482 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2019/12/10 | 2579407 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2019/12/10 | 54739 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2019/12/10 | 61218 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2019/12/10 | 26508 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2019/12/10 | 32348 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2019/12/10 | 61568 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2019/12/10 | 65024 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2019/12/10 | 246891 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2019/12/10 | 276600 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2019/12/10 | 533457 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2019/12/10 | 563305 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2019/12/10 | 39220 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2019/12/10 | 42942 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2019/12/10 | 193578 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2019/12/10 | 1150593 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2019/12/10 | 1070782 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2019/12/10 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2019/12/10 | 14049 | 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/09 | 652 | systems/win32/miktex/tm/packages/next/pr.ini +2019/12/10 | 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 @@ -264492,7 +264522,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/09 | 393 | systems/win32/miktex/tm/packages/pr.ini +2019/12/10 | 393 | 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 @@ -265600,9 +265630,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/03 | 63292480 | systems/win32/w32tex/biblatex-biber.tar.xz +2019/12/09 | 63290712 | systems/win32/w32tex/biblatex-biber.tar.xz 2016/12/13 | 65971452 | systems/win32/w32tex/cbfonts.tar.xz -2019/12/08 | 558290 | systems/win32/w32tex/ChangeLog +2019/12/09 | 558442 | 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 @@ -265663,8 +265693,8 @@ 2019/11/08 | 1791884 | systems/win32/w32tex/texinstwin.zip 2019/04/15 | 97136 | systems/win32/w32tex/tiff2png-w32.tar.xz 2013/04/08 | 308444 | systems/win32/w32tex/timesnew.tar.xz -2019/03/14 | 1739 | systems/win32/w32tex/TLW64/00README.TLW64 -2019/12/08 | 90102371 | systems/win32/w32tex/TLW64/tl-win64.zip +2019/12/09 | 1840 | systems/win32/w32tex/TLW64/00README.TLW64 +2019/12/09 | 91231316 | systems/win32/w32tex/TLW64/tl-win64.zip 2019/08/14 | 819188 | systems/win32/w32tex/ttf2pk-w32.tar.xz 2019/08/14 | 830416 | systems/win32/w32tex/ttf2pt1-w32.tar.xz 2017/10/13 | 1773368 | systems/win32/w32tex/tuftelatex.tar.xz @@ -265679,7 +265709,7 @@ 2019/12/04 | 98405516 | systems/win32/w32tex/web2c-lib.tar.xz 2019/11/27 | 43962412 | systems/win32/w32tex/web2c-w32.tar.xz 2019/08/28 | 810352 | systems/win32/w32tex/win64/aleph-w64.tar.xz -2019/08/25 | 21280532 | systems/win32/w32tex/win64/biblatex-biber-w64.tar.xz +2019/12/09 | 22317480 | systems/win32/w32tex/win64/biblatex-biber-w64.tar.xz 2019/12/06 | 1935348 | systems/win32/w32tex/win64/context-w64.tar.xz 2019/08/28 | 82568 | systems/win32/w32tex/win64/cweb-w64.tar.xz 2019/08/14 | 745316 | systems/win32/w32tex/win64/dvi2ps-w64.tar.xz @@ -265816,7 +265846,7 @@ 2004/06/04 | 404 | tds/tds.sed 2004/06/23 | 65418 | tds/tds.tex 2019/05/29 | 304264 | tds.zip -2019/12/10 | 186 | timestamp +2019/12/11 | 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 diff --git a/FILES.byname.gz b/FILES.byname.gz index eaf6ff4e82..eeab312f19 100644 Binary files a/FILES.byname.gz and b/FILES.byname.gz differ diff --git a/FILES.last07days b/FILES.last07days index c5de75a5b4..8ae0c8e987 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,216 +1,439 @@ +2019/12/10 | 96969 | macros/latex/contrib/bibleref/bibleref.dtx +2019/12/10 | 96206 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2019/12/10 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2019/12/10 | 9463 | macros/latex/contrib/bibleref/samples/sample-indextools.pdf +2019/12/10 | 94639 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2019/12/10 | 94238 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2019/12/10 | 93474 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2019/12/10 | 932884 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2019/12/10 | 92937 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2019/12/10 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2019/12/10 | 91337 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2019/12/10 | 91155 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2019/12/10 | 895265 | macros/generic/witharrows.zip +2019/12/10 | 87274 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2019/12/10 | 87219 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2019/12/10 | 86582 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2019/12/10 | 863200 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2019/12/10 | 8551380 | systems/texlive/tlnet/archive/reledmac.doc.r53071.tar.xz +2019/12/10 | 85460 | systems/texlive/tlnet/archive/texlive-scripts.r53066.tar.xz +2019/12/10 | 8484 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2019/12/10 | 84533 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2019/12/10 | 822800 | systems/texlive/tlnet/archive/beebe.r53066.tar.xz +2019/12/10 | 80506 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2019/12/10 | 79844 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2019/12/10 | 77960 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2019/12/10 | 77936 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2019/12/10 | 77364 | systems/texlive/tlnet/archive/beilstein.source.r53069.tar.xz +2019/12/10 | 77319 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2019/12/10 | 7505 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2019/12/10 | 73635 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2019/12/10 | 726916 | systems/texlive/tlnet/archive/babel.doc.r53072.tar.xz +2019/12/10 | 72600 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2019/12/10 | 72572 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2019/12/10 | 71697 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2019/12/10 | 70248 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2019/12/10 | 696516 | systems/texlive/tlnet/archive/beilstein.doc.r53069.tar.xz +2019/12/10 | 69609 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2019/12/10 | 69210 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2019/12/10 | 68672 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2019/12/10 | 67256 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2019/12/10 | 67249 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2019/12/10 | 652 | systems/win32/miktex/tm/packages/next/pr.ini +2019/12/10 | 65024 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2019/12/10 | 63288 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2019/12/10 | 63273 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2019/12/10 | 63115 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2019/12/10 | 629749 | macros/latex/contrib/bitset.zip +2019/12/10 | 62908 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2019/12/10 | 61657 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2019/12/10 | 61568 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2019/12/10 | 61218 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2019/12/10 | 611124 | systems/texlive/tlnet/archive/babel.source.r53072.tar.xz +2019/12/10 | 60329 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2019/12/10 | 600329 | macros/latex/contrib/askinclude.zip +2019/12/10 | 59458 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma +2019/12/10 | 589390 | macros/generic/witharrows/witharrows.pdf +2019/12/10 | 58794 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2019/12/10 | 575923 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2019/12/10 | 57219 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2019/12/10 | 56620 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2019/12/10 | 56423 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2019/12/10 | 563305 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2019/12/10 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2019/12/10 | 5582788 | systems/texlive/tlnet/archive/cormorantgaramond.r53067.tar.xz +2019/12/10 | 54739 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2019/12/10 | 544015 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2019/12/10 | 540398 | macros/latex/contrib/selinput.zip +2019/12/10 | 53996 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2019/12/10 | 538880 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2019/12/10 | 53445 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma +2019/12/10 | 533457 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2019/12/10 | 52912 | systems/texlive/tlnet/archive/reledmac.r53071.tar.xz +2019/12/10 | 52142 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2019/12/10 | 51773 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2019/12/10 | 51204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r53066.tar.xz +2019/12/10 | 511962 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2019/12/10 | 511566 | systems/win32/miktex/tm/packages/files.csv.lzma +2019/12/10 | 50828 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2019/12/10 | 50788 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2019/12/10 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2019/12/10 | 498554 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2019/12/10 | 49773 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2019/12/10 | 49265 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2019/12/10 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2019/12/10 | 47978 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2019/12/10 | 472 | systems/texlive/tlnet/archive/xetexref.r53068.tar.xz +2019/12/10 | 45810 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2019/12/10 | 45741 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2019/12/10 | 457347 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2019/12/10 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2019/12/10 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2019/12/10 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2019/12/10 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2019/12/10 | 45590 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2019/12/10 | 45467 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2019/12/10 | 449933 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma +2019/12/10 | 44980 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2019/12/10 | 43438 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2019/12/10 | 42942 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2019/12/10 | 42572 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2019/12/10 | 4200 | systems/texlive/tlnet/archive/epstopdf-pkg.r53070.tar.xz +2019/12/10 | 41879 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2019/12/10 | 41863 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2019/12/10 | 40990 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2019/12/10 | 40736 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2019/12/10 | 39845 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2019/12/10 | 3947739 | systems/texlive/tlnet/install-tl-unx.tar.gz +2019/12/10 | 39426 | macros/latex/contrib/bibleref/samples/sample.pdf +2019/12/10 | 393 | systems/win32/miktex/tm/packages/pr.ini +2019/12/10 | 39220 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2019/12/10 | 391461 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2019/12/10 | 38863 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2019/12/10 | 387514 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma +2019/12/10 | 382847 | macros/latex/contrib/bibleref.zip +2019/12/10 | 36633 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2019/12/10 | 36381 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2019/12/10 | 361066 | macros/latex/contrib/alphalph.zip +2019/12/10 | 356320 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2019/12/10 | 354501 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma +2019/12/10 | 353844 | systems/texlive/tlnet/archive/epstopdf-pkg.doc.r53070.tar.xz +2019/12/10 | 35215 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2019/12/10 | 349047 | macros/latex/contrib/pdfescape.zip +2019/12/10 | 34845 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2019/12/10 | 34834 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2019/12/10 | 33547 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2019/12/10 | 33399 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2019/12/10 | 328876 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2019/12/10 | 32348 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2019/12/10 | 32267 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2019/12/10 | 321501 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2019/12/10 | 31293 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2019/12/10 | 31154 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2019/12/10 | 30990 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2019/12/10 | 308659 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2019/12/10 | 304516 | install/macros/latex/contrib/catchfile.tds.zip +2019/12/10 | 30240 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2019/12/10 | 301785 | macros/latex/contrib/listingsutf8.zip +2019/12/10 | 301119 | macros/latex/contrib/catchfile.zip +2019/12/10 | 298510 | macros/latex/contrib/catchfile/catchfile.pdf +2019/12/10 | 298290 | macros/latex/contrib/picture.zip +2019/12/10 | 29691 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2019/12/10 | 29296 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2019/12/10 | 29239 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2019/12/10 | 29142 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2019/12/10 | 28711 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2019/12/10 | 286825 | macros/latex/contrib/bibleref/bibleref.pdf +2019/12/10 | 281674 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2019/12/10 | 281286 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2019/12/10 | 27819 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2019/12/10 | 276600 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2019/12/10 | 271814 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2019/12/10 | 26976 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2019/12/10 | 26799 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2019/12/10 | 26662 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2019/12/10 | 26508 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2019/12/10 | 26178 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2019/12/10 | 257996 | macros/generic/witharrows/witharrows-french.pdf +2019/12/10 | 2579407 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2019/12/10 | 25328 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2019/12/10 | 252257 | macros/generic/witharrows/witharrows.dtx +2019/12/10 | 247500 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2019/12/10 | 246891 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2019/12/10 | 246456 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2019/12/10 | 2459482 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2019/12/10 | 24073 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2019/12/10 | 237542 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2019/12/10 | 23345 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2019/12/10 | 22958 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2019/12/10 | 22539834 | systems/texlive/tlnet/install-tl.zip +2019/12/10 | 22108 | macros/latex/contrib/catchfile/catchfile.dtx +2019/12/10 | 2150176 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2019/12/10 | 214150 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2019/12/10 | 20738 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2019/12/10 | 2050 | macros/latex/contrib/bibleref/CHANGES +2019/12/10 | 20504623 | macros/latex/contrib/oberdiek.zip +2019/12/10 | 203624 | systems/texlive/tlnet/archive/reledmac.source.r53071.tar.xz +2019/12/10 | 202430 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2019/12/10 | 198080 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2019/12/10 | 19792 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2019/12/10 | 194997 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2019/12/10 | 1945835 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2019/12/10 | 19439 | macros/latex/contrib/bibleref/samples/sample-xidx.pdf +2019/12/10 | 193630 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2019/12/10 | 193578 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2019/12/10 | 193312 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2019/12/10 | 187295 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2019/12/10 | 18700043 | systems/texlive/tlnet/install-tl-windows.exe +2019/12/10 | 185299 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2019/12/10 | 184161 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2019/12/10 | 182759 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2019/12/10 | 17762 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2019/12/10 | 177584 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2019/12/10 | 17697 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2019/12/10 | 171 | macros/latex/contrib/catchfile/README.md +2019/12/10 | 169203 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2019/12/10 | 1679153 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2019/12/10 | 167844 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2019/12/10 | 166013 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2019/12/10 | 165964 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2019/12/10 | 160558 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2019/12/10 | 16042 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2019/12/10 | 16001561 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2019/12/10 | 15896 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2019/12/10 | 158020 | systems/texlive/tlnet/archive/cormorantgaramond.doc.r53067.tar.xz +2019/12/10 | 157320 | systems/texlive/tlnet/archive/xetexref.doc.r53068.tar.xz +2019/12/10 | 156688 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53066.tar.xz +2019/12/10 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2019/12/10 | 153836 | systems/texlive/tlnet/archive/babel.r53072.tar.xz +2019/12/10 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2019/12/10 | 152163 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2019/12/10 | 150090 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2019/12/10 | 147094 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2019/12/10 | 146764 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2019/12/10 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2019/12/10 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2019/12/10 | 14049 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2019/12/10 | 14044 | systems/texlive/tlnet/archive/beilstein.r53069.tar.xz +2019/12/10 | 137171 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2019/12/10 | 133204 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2019/12/10 | 1329052 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2019/12/10 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2019/12/10 | 127170 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2019/12/10 | 12303 | macros/latex/contrib/bibleref/samples/sample-categories.pdf +2019/12/10 | 1203299 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2019/12/10 | 1195621 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2019/12/10 | 11944 | systems/texlive/tlnet/archive/epstopdf-pkg.source.r53070.tar.xz +2019/12/10 | 116802 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2019/12/10 | 1150593 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2019/12/10 | 1149592 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2019/12/10 | 112993 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2019/12/10 | 111235 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2019/12/10 | 109876 | systems/texlive/tlnet/archive/texlive-docindex.r53066.tar.xz +2019/12/10 | 108758 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2019/12/10 | 1071487 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2019/12/10 | 1070782 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2019/12/10 | 1068589 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2019/12/10 | 1042660 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2019/12/10 | 102378 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2019/12/10 | 100682 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma 2019/12/09 | 985304 | macros/latex/contrib/reledmac/reledpar.pdf -2019/12/09 | 96209 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2019/12/09 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2019/12/09 | 959 | macros/latex/contrib/oberdiek/oberdiek-source.bib +2019/12/09 | 9529 | macros/latex/contrib/oberdiek/oberdiek-bundle.bib 2019/12/09 | 952208 | systems/texlive/tlnet/archive/elegantnote.doc.r53061.tar.xz -2019/12/09 | 94639 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2019/12/09 | 94239 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma 2019/12/09 | 9354 | macros/latex/contrib/beilstein/figure1.pdf -2019/12/09 | 93475 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma 2019/12/09 | 93475 | macros/latex/contrib/reledmac/examples/3-reledpar_mwe.pdf -2019/12/09 | 932884 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2019/12/09 | 92936 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2019/12/09 | 91981 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma 2019/12/09 | 917840 | systems/texlive/tlnet/archive/biber.source.r53064.tar.xz -2019/12/09 | 91337 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2019/12/09 | 91155 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2019/12/09 | 87275 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2019/12/09 | 87218 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2019/12/09 | 86581 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2019/12/09 | 863201 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2019/12/09 | 91231316 | systems/win32/w32tex/TLW64/tl-win64.zip 2019/12/09 | 860793 | macros/latex/contrib/reledmac/reledmac.dtx -2019/12/09 | 85448 | systems/texlive/tlnet/archive/texlive-scripts.r53060.tar.xz -2019/12/09 | 8484 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2019/12/09 | 85469 | macros/latex/contrib/oberdiek/bigintcalc.dtx 2019/12/09 | 846270 | systems/win32/miktex/tm/packages/economic.tar.lzma -2019/12/09 | 84533 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma -2019/12/09 | 822292 | systems/texlive/tlnet/archive/beebe.r53060.tar.xz +2019/12/09 | 816 | macros/latex/contrib/oberdiek/README.txt 2019/12/09 | 808176 | install/macros/latex/contrib/beilstein.tds.zip -2019/12/09 | 80507 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2019/12/09 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2019/12/09 | 77961 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2019/12/09 | 77936 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2019/12/09 | 77319 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2019/12/09 | 77669 | macros/latex/contrib/bitset/bitset.dtx 2019/12/09 | 765961 | systems/win32/miktex/tm/packages/curve2e.tar.lzma 2019/12/09 | 756 | systems/texlive/tlnet/archive/biber.r53064.tar.xz -2019/12/09 | 7505 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma 2019/12/09 | 7392 | macros/latex/required/babel/base/babel.ins 2019/12/09 | 7369497 | systems/win32/miktex/tm/packages/biblatex.tar.lzma -2019/12/09 | 73636 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma 2019/12/09 | 736268 | macros/latex/required/babel/base/babel.pdf -2019/12/09 | 72598 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2019/12/09 | 72573 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma 2019/12/09 | 7191872 | systems/texlive/tlnet/archive/biblatex.doc.r53063.tar.xz -2019/12/09 | 71697 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2019/12/09 | 71514 | macros/latex/contrib/oberdiek/intcalc.dtx 2019/12/09 | 713940 | macros/latex/required/babel/base/locale.zip -2019/12/09 | 70250 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2019/12/09 | 69608 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2019/12/09 | 69211 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2019/12/09 | 68674 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma 2019/12/09 | 683777 | macros/latex/contrib/beilstein/beilstein.pdf -2019/12/09 | 67256 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2019/12/09 | 67251 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2019/12/09 | 652 | systems/win32/miktex/tm/packages/next/pr.ini -2019/12/09 | 65025 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2019/12/09 | 67789 | macros/latex/contrib/oberdiek/ltxcmds.dtx 2019/12/09 | 643748 | macros/latex/required/babel/base/babel.dtx -2019/12/09 | 63290 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2019/12/09 | 63274 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma -2019/12/09 | 63117 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2019/12/09 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2019/12/09 | 636608 | install/macros/latex/contrib/bitset.tds.zip +2019/12/09 | 63290712 | systems/win32/w32tex/biblatex-biber.tar.xz +2019/12/09 | 626116 | macros/latex/contrib/oberdiek/bitset.pdf +2019/12/09 | 624889 | macros/latex/contrib/bitset/bitset.pdf 2019/12/09 | 616892 | systems/win32/miktex/tm/packages/pmboxdraw.tar.lzma -2019/12/09 | 61657 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2019/12/09 | 61568 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2019/12/09 | 61219 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2019/12/09 | 60328 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2019/12/09 | 59459 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma +2019/12/09 | 605189 | install/macros/latex/contrib/askinclude.tds.zip +2019/12/09 | 594397 | macros/latex/contrib/askinclude/askinclude.pdf 2019/12/09 | 588 | macros/latex/contrib/epstopdf-pkg/README.md -2019/12/09 | 58794 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2019/12/09 | 5838 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2019/12/09 | 583217 | systems/win32/miktex/tm/packages/hologo.tar.lzma -2019/12/09 | 575920 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma 2019/12/09 | 5750873 | systems/win32/miktex/tm/packages/cormorantgaramond.tar.lzma -2019/12/09 | 57220 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2019/12/09 | 56620 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2019/12/09 | 56422 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2019/12/09 | 563305 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2019/12/09 | 560771 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2019/12/09 | 558442 | systems/win32/w32tex/ChangeLog 2019/12/09 | 5544142 | systems/win32/miktex/tm/packages/glossaries.tar.lzma -2019/12/09 | 54738 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2019/12/09 | 544015 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2019/12/09 | 53998 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2019/12/09 | 538882 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2019/12/09 | 53446 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma -2019/12/09 | 533456 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2019/12/09 | 52141 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2019/12/09 | 51772 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2019/12/09 | 54949 | macros/latex/contrib/askinclude/askinclude.dtx +2019/12/09 | 543284 | install/macros/latex/contrib/selinput.tds.zip +2019/12/09 | 537938 | macros/latex/contrib/oberdiek/selinput.pdf +2019/12/09 | 536592 | macros/latex/contrib/selinput/selinput.pdf +2019/12/09 | 517717 | macros/latex/contrib/oberdiek/resizegather.pdf 2019/12/09 | 5127 | macros/latex/required/babel/base/README.md -2019/12/09 | 51204 | systems/texlive/tlnet/archive/texlive-scripts.doc.r53060.tar.xz -2019/12/09 | 511962 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2019/12/09 | 511566 | systems/win32/miktex/tm/packages/files.csv.lzma -2019/12/09 | 50828 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2019/12/09 | 50790 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2019/12/09 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2019/12/09 | 498555 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma 2019/12/09 | 49850 | macros/latex/contrib/beilstein/bjnano_logo.pdf -2019/12/09 | 49772 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2019/12/09 | 49263 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2019/12/09 | 498211 | macros/latex/contrib/oberdiek/bmpsize.pdf 2019/12/09 | 490683 | macros/latex/contrib/elegantnote/elegantnote-en.pdf -2019/12/09 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 -2019/12/09 | 47979 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2019/12/09 | 47687 | macros/latex/contrib/oberdiek/kvsetkeys.dtx 2019/12/09 | 471807 | systems/win32/miktex/tm/packages/mathcommand.tar.lzma 2019/12/09 | 46988 | macros/latex/contrib/epstopdf-pkg/epstopdf.dtx -2019/12/09 | 45809 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2019/12/09 | 45741 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2019/12/09 | 457347 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2019/12/09 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2019/12/09 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2019/12/09 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2019/12/09 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc -2019/12/09 | 45589 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2019/12/09 | 45466 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2019/12/09 | 449940 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma -2019/12/09 | 44980 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2019/12/09 | 46837 | macros/latex/contrib/oberdiek/pdfrender.dtx +2019/12/09 | 468260 | macros/latex/contrib/oberdiek/bigintcalc.pdf +2019/12/09 | 46055 | macros/latex/contrib/oberdiek/hycolor.dtx 2019/12/09 | 449393 | macros/latex/contrib/elegantnote/elegantnote-cn.pdf -2019/12/09 | 43439 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2019/12/09 | 43702 | macros/latex/contrib/alphalph/alphalph.dtx 2019/12/09 | 4316 | systems/texlive/tlnet/archive/elegantnote.r53061.tar.xz -2019/12/09 | 42942 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2019/12/09 | 42573 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2019/12/09 | 431637 | macros/latex/contrib/oberdiek/intcalc.pdf 2019/12/09 | 42467 | info/xetexref/xetex-reference.tex -2019/12/09 | 41878 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2019/12/09 | 41864 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma -2019/12/09 | 40991 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma 2019/12/09 | 4087 | macros/latex/contrib/reledmac/README 2019/12/09 | 40796 | macros/latex/contrib/reledmac/doc-more/page-typesetting-columns.pdf -2019/12/09 | 40737 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma -2019/12/09 | 39846 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2019/12/09 | 3947715 | systems/texlive/tlnet/install-tl-unx.tar.gz -2019/12/09 | 393 | systems/win32/miktex/tm/packages/pr.ini -2019/12/09 | 39221 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma -2019/12/09 | 391461 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2019/12/09 | 38864 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2019/12/09 | 387512 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma +2019/12/09 | 394196 | macros/latex/contrib/oberdiek/ltxcmds.pdf +2019/12/09 | 39106 | macros/latex/contrib/pdfescape/pdfescape.dtx +2019/12/09 | 383290 | macros/latex/contrib/oberdiek/pdfrender.pdf 2019/12/09 | 37802 | macros/latex/contrib/reledmac/examples/3-reledpar_pages_different_languages_lualatex.pdf -2019/12/09 | 36633 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2019/12/09 | 36381 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2019/12/09 | 375389 | macros/latex/contrib/oberdiek/kvsetkeys.pdf +2019/12/09 | 365186 | install/macros/latex/contrib/alphalph.tds.zip +2019/12/09 | 364626 | macros/latex/contrib/oberdiek/hycolor.pdf 2019/12/09 | 363644 | macros/latex/contrib/epstopdf-pkg.zip +2019/12/09 | 35799 | macros/latex/contrib/oberdiek/hypdoc.dtx 2019/12/09 | 357389 | macros/latex/contrib/epstopdf-pkg/epstopdf.pdf -2019/12/09 | 356318 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma 2019/12/09 | 356258 | macros/latex/contrib/reledmac/migration.pdf -2019/12/09 | 354503 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma +2019/12/09 | 354648 | macros/latex/contrib/oberdiek/fibnum.pdf +2019/12/09 | 354248 | install/macros/latex/contrib/pdfescape.tds.zip +2019/12/09 | 354229 | macros/latex/contrib/oberdiek/alphalph.pdf +2019/12/09 | 354103 | macros/latex/contrib/alphalph/alphalph.pdf 2019/12/09 | 3526 | macros/latex/required/babel/base/bbidxglo.dtx -2019/12/09 | 35216 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2019/12/09 | 34846 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2019/12/09 | 34834 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2019/12/09 | 352082 | macros/latex/contrib/oberdiek/soulutf8.pdf +2019/12/09 | 35155 | macros/latex/contrib/oberdiek/soulutf8.dtx +2019/12/09 | 347573 | macros/latex/contrib/oberdiek/thepdfnumber.pdf +2019/12/09 | 346746 | macros/latex/contrib/oberdiek/pdfescape.pdf +2019/12/09 | 346644 | macros/latex/contrib/pdfescape/pdfescape.pdf 2019/12/09 | 3461852 | dviware/dvisvgm.zip -2019/12/09 | 33549 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma -2019/12/09 | 33400 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2019/12/09 | 331646 | macros/latex/contrib/oberdiek/tabularht.pdf 2019/12/09 | 331641 | systems/win32/miktex/tm/packages/csquotes.tar.lzma -2019/12/09 | 328877 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2019/12/09 | 330126 | macros/latex/contrib/oberdiek/setouterhbox.pdf +2019/12/09 | 32949 | macros/latex/contrib/oberdiek/thepdfnumber.dtx +2019/12/09 | 326895 | macros/latex/contrib/oberdiek/refcount.pdf 2019/12/09 | 324460 | systems/win32/miktex/tm/packages/rerunfilecheck.tar.lzma -2019/12/09 | 32349 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2019/12/09 | 32267 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2019/12/09 | 321501 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2019/12/09 | 320329 | macros/latex/contrib/oberdiek/pdfcolparallel.pdf +2019/12/09 | 320178 | macros/latex/contrib/oberdiek/hypdoc.pdf +2019/12/09 | 319151 | macros/latex/contrib/oberdiek/engord.pdf +2019/12/09 | 319133 | macros/latex/contrib/oberdiek/oberdiek.pdf +2019/12/09 | 318747 | macros/latex/contrib/oberdiek/gettitlestring.pdf +2019/12/09 | 318258 | macros/latex/contrib/oberdiek/hypdestopt.pdf +2019/12/09 | 317497 | macros/latex/contrib/oberdiek/rotchiffre.pdf +2019/12/09 | 317170 | macros/latex/contrib/oberdiek/eolgrab.pdf 2019/12/09 | 31645 | macros/latex/contrib/reledmac/examples/2-reledmac-right-to-left.pdf -2019/12/09 | 31293 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2019/12/09 | 31154 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2019/12/09 | 30991 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2019/12/09 | 308659 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2019/12/09 | 315 | macros/latex/contrib/listingsutf8/README.md +2019/12/09 | 314990 | macros/latex/contrib/oberdiek/iflang.pdf +2019/12/09 | 312194 | macros/latex/contrib/oberdiek/pagesel.pdf +2019/12/09 | 311938 | macros/latex/contrib/oberdiek/pagegrid.pdf +2019/12/09 | 311898 | macros/latex/contrib/oberdiek/pdfcrypt.pdf +2019/12/09 | 31024 | macros/latex/contrib/oberdiek/tabularht.dtx +2019/12/09 | 308338 | macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf +2019/12/09 | 308115 | macros/latex/contrib/oberdiek/protecteddef.pdf 2019/12/09 | 306824 | systems/win32/miktex/tm/packages/pdflscape.tar.lzma -2019/12/09 | 30240 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2019/12/09 | 29691 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2019/12/09 | 29295 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2019/12/09 | 29239 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2019/12/09 | 29145 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2019/12/09 | 28709 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2019/12/09 | 306330 | macros/latex/contrib/oberdiek/holtxdoc.pdf +2019/12/09 | 305218 | macros/latex/contrib/oberdiek/enparen.pdf +2019/12/09 | 304271 | install/macros/latex/contrib/listingsutf8.tds.zip +2019/12/09 | 303826 | macros/latex/contrib/oberdiek/telprint.pdf +2019/12/09 | 303046 | macros/latex/contrib/oberdiek/pdfcol.pdf +2019/12/09 | 301956 | install/macros/latex/contrib/picture.tds.zip +2019/12/09 | 300824 | macros/latex/contrib/oberdiek/etexcmds.pdf +2019/12/09 | 300446 | macros/latex/contrib/oberdiek/hyphsubst.pdf +2019/12/09 | 29904 | macros/latex/contrib/oberdiek/refcount.dtx +2019/12/09 | 298873 | macros/latex/contrib/oberdiek/catchfile.pdf +2019/12/09 | 298795 | macros/latex/contrib/listingsutf8/listingsutf8.pdf +2019/12/09 | 296060 | macros/latex/contrib/oberdiek/kvdefinekeys.pdf +2019/12/09 | 295928 | macros/latex/contrib/oberdiek/picture.pdf +2019/12/09 | 295737 | macros/latex/contrib/picture/picture.pdf +2019/12/09 | 294724 | macros/latex/contrib/oberdiek/pdfcolfoot.pdf +2019/12/09 | 29459 | macros/latex/contrib/oberdiek/setouterhbox.dtx +2019/12/09 | 293875 | macros/latex/contrib/oberdiek/settobox.pdf +2019/12/09 | 293225 | macros/latex/contrib/oberdiek/hopatch.pdf +2019/12/09 | 293095 | macros/latex/contrib/oberdiek/aliascnt.pdf +2019/12/09 | 290353 | macros/latex/contrib/oberdiek/hypbmsec.pdf +2019/12/09 | 290336 | macros/latex/contrib/oberdiek/uniquecounter.pdf +2019/12/09 | 289226 | macros/latex/contrib/oberdiek/chemarr.pdf +2019/12/09 | 28916 | macros/latex/contrib/oberdiek/hypdestopt.dtx +2019/12/09 | 285845 | macros/latex/contrib/oberdiek/auxhook.pdf +2019/12/09 | 285077 | macros/latex/contrib/oberdiek/hypgotoe.pdf +2019/12/09 | 284949 | macros/latex/contrib/oberdiek/colonequals.pdf +2019/12/09 | 284122 | macros/latex/contrib/oberdiek/hypcap.pdf +2019/12/09 | 283961 | macros/latex/contrib/oberdiek/flags.pdf +2019/12/09 | 283886 | macros/latex/contrib/oberdiek/scrindex.pdf 2019/12/09 | 28362304 | systems/win32/miktex/tm/packages/biber-darwin-x86_64.tar.lzma 2019/12/09 | 28319368 | systems/texlive/tlnet/archive/biber.x86_64-darwin.r53064.tar.xz -2019/12/09 | 281675 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2019/12/09 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2019/12/09 | 282341 | macros/latex/contrib/oberdiek/stackrel.pdf +2019/12/09 | 281 | macros/latex/contrib/picture/README.md +2019/12/09 | 28136 | macros/latex/contrib/oberdiek/pagegrid.dtx 2019/12/09 | 278783 | systems/win32/miktex/tm/packages/atenddvi.tar.lzma -2019/12/09 | 27822 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2019/12/09 | 276601 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2019/12/09 | 27847 | macros/latex/contrib/oberdiek/pdfcrypt.dtx +2019/12/09 | 278115 | macros/latex/contrib/oberdiek/stampinclude.pdf +2019/12/09 | 275199 | macros/latex/contrib/oberdiek/centernot.pdf 2019/12/09 | 275089 | systems/win32/miktex/tm/packages/biber-doc.tar.lzma -2019/12/09 | 271813 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2019/12/09 | 26977 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2019/12/09 | 26800 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2019/12/09 | 26661 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2019/12/09 | 26508 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2019/12/09 | 275011 | macros/latex/contrib/oberdiek/twoopt.pdf +2019/12/09 | 271947 | macros/latex/contrib/oberdiek/classlist.pdf +2019/12/09 | 269922 | macros/latex/contrib/oberdiek/dvipscol.pdf +2019/12/09 | 26867 | macros/latex/contrib/oberdiek/pdfcolparallel.dtx +2019/12/09 | 265890 | macros/latex/contrib/oberdiek/ifdraft.pdf +2019/12/09 | 2653 | macros/latex/contrib/oberdiek/oberdiek.ins +2019/12/09 | 26388 | macros/latex/contrib/oberdiek/pdfcol.dtx 2019/12/09 | 263410 | macros/latex/contrib/reledmac/examples/4-reledpar_pages_titles_in_line_numbering_with_notes.pdf -2019/12/09 | 26178 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2019/12/09 | 26109 | macros/latex/contrib/oberdiek/enparen.dtx 2019/12/09 | 260036 | systems/texlive/tlnet/archive/biber.doc.r53064.tar.xz -2019/12/09 | 2579407 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2019/12/09 | 25810 | macros/latex/contrib/oberdiek/fibnum.dtx +2019/12/09 | 25691 | macros/latex/contrib/oberdiek/rotchiffre.dtx +2019/12/09 | 255279 | macros/latex/contrib/oberdiek/tabularkv.pdf 2019/12/09 | 2534904 | install/macros/latex/required/babel-base.tds.zip -2019/12/09 | 25328 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma -2019/12/09 | 247500 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2019/12/09 | 246892 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2019/12/09 | 246456 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2019/12/09 | 2459484 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2019/12/09 | 25308 | macros/latex/contrib/oberdiek/iflang.dtx +2019/12/09 | 25146 | macros/latex/contrib/oberdiek/hypbmsec.dtx +2019/12/09 | 25097 | macros/latex/contrib/oberdiek/eolgrab.dtx +2019/12/09 | 24890 | macros/latex/contrib/oberdiek/telprint.dtx +2019/12/09 | 24780 | macros/latex/contrib/oberdiek/resizegather.dtx +2019/12/09 | 24477 | macros/latex/contrib/selinput/selinput.dtx 2019/12/09 | 24281 | macros/latex/contrib/reledmac/examples/3-reledpar_columns_different_languages.pdf +2019/12/09 | 24209 | macros/latex/contrib/oberdiek/pagesel.dtx 2019/12/09 | 2412 | macros/latex/contrib/beilstein/beilstein.ins -2019/12/09 | 24073 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2019/12/09 | 24106 | macros/latex/contrib/oberdiek/engord.dtx +2019/12/09 | 24079 | macros/latex/contrib/oberdiek/oberdiek.tex 2019/12/09 | 239560 | macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf -2019/12/09 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2019/12/09 | 23345 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2019/12/09 | 22961 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2019/12/09 | 22539829 | systems/texlive/tlnet/install-tl.zip +2019/12/09 | 23136 | macros/latex/contrib/oberdiek/gettitlestring.dtx 2019/12/09 | 22484892 | systems/texlive/tlnet/archive/biber.win32.r53064.tar.xz 2019/12/09 | 22448493 | systems/win32/miktex/tm/packages/biber-windows-x86.tar.lzma 2019/12/09 | 22416215 | systems/win32/miktex/tm/packages/biber-windows-x64.tar.lzma +2019/12/09 | 22317480 | systems/win32/w32tex/win64/biblatex-biber-w64.tar.xz 2019/12/09 | 21932 | macros/latex/required/babel/base/bbcompat.dtx +2019/12/09 | 21668 | macros/latex/contrib/oberdiek/holtxdoc.dtx 2019/12/09 | 216304 | systems/texlive/tlnet/archive/biblatex.r53063.tar.xz -2019/12/09 | 2156148 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2019/12/09 | 215182 | macros/latex/contrib/reledmac/examples/4-reledpar_one_series_per_pstart.pdf 2019/12/09 | 215012 | macros/latex/contrib/reledmac/examples/2-subdivision-number-in-header.pdf -2019/12/09 | 214154 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma -2019/12/09 | 20739 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2019/12/09 | 202429 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2019/12/09 | 21476 | macros/latex/contrib/oberdiek/hypcap.dtx +2019/12/09 | 21343 | macros/latex/contrib/oberdiek/hyphsubst.dtx +2019/12/09 | 20812 | macros/latex/contrib/oberdiek/protecteddef.dtx +2019/12/09 | 20808 | macros/latex/contrib/picture/picture.dtx +2019/12/09 | 20806 | macros/latex/contrib/oberdiek/hopatch.dtx +2019/12/09 | 20692 | macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx +2019/12/09 | 20665809 | install/macros/latex/contrib/oberdiek.tds.zip +2019/12/09 | 20366 | macros/latex/contrib/oberdiek/etexcmds.dtx 2019/12/09 | 201833 | macros/latex/contrib/reledmac/examples/4-reledpar_columns_titles_in_line_numbering_with_notes.pdf -2019/12/09 | 198081 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2019/12/09 | 20085 | macros/latex/contrib/oberdiek/uniquecounter.dtx +2019/12/09 | 20045 | macros/latex/contrib/oberdiek/settobox.dtx +2019/12/09 | 198 | macros/latex/contrib/bitset/README.md 2019/12/09 | 1980536 | macros/latex/contrib/reledmac/reledmac.pdf -2019/12/09 | 19791 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma 2019/12/09 | 19772 | systems/texlive/tlnet/archive/mcf2graph.r53062.tar.xz -2019/12/09 | 194997 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2019/12/09 | 1945837 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2019/12/09 | 193609 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2019/12/09 | 193592 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2019/12/09 | 193313 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2019/12/09 | 19329 | macros/latex/contrib/oberdiek/pdfcolfoot.dtx +2019/12/09 | 19267 | macros/latex/contrib/oberdiek/scrindex.dtx 2019/12/09 | 190222 | macros/latex/contrib/reledmac/examples/2-titles_in_line_numbering_with_notes.pdf 2019/12/09 | 190161 | macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted-nomax.pdf 2019/12/09 | 190134 | macros/latex/contrib/reledmac/examples/4-reledpar_columns_alignment.pdf @@ -218,74 +441,63 @@ 2019/12/09 | 189798 | macros/latex/contrib/reledmac/examples/1-tabular.pdf 2019/12/09 | 189690 | macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column-continuous-numbering.pdf 2019/12/09 | 189362 | macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_advancedshifted.pdf +2019/12/09 | 18907 | macros/latex/contrib/listingsutf8/listingsutf8.dtx 2019/12/09 | 188865 | macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_shifted.pdf 2019/12/09 | 188836 | macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nomax.pdf 2019/12/09 | 188745 | macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_nosync.pdf 2019/12/09 | 187631 | macros/latex/contrib/reledmac/examples/2-indexing.pdf -2019/12/09 | 187296 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2019/12/09 | 18699287 | systems/texlive/tlnet/install-tl-windows.exe -2019/12/09 | 185299 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2019/12/09 | 184159 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2019/12/09 | 18499 | macros/latex/contrib/oberdiek/stampinclude.dtx 2019/12/09 | 18415972 | systems/texlive/tlnet/archive/biber.x86_64-linuxmusl.r53064.tar.xz +2019/12/09 | 1840 | systems/win32/w32tex/TLW64/00README.TLW64 2019/12/09 | 183782 | macros/latex/contrib/reledmac/examples/4-reledpar_titles_not_in_line_numbering.pdf 2019/12/09 | 18359936 | systems/texlive/tlnet/archive/biber.x86_64-linux.r53064.tar.xz -2019/12/09 | 182758 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma 2019/12/09 | 18258176 | systems/win32/miktex/tm/packages/biber-linux-x86_64.tar.lzma +2019/12/09 | 181 | macros/latex/contrib/pdfescape/README.md 2019/12/09 | 18110 | macros/latex/contrib/reledmac/examples/2-glossaries.pdf +2019/12/09 | 17957 | macros/latex/contrib/oberdiek/hypgotoe.dtx 2019/12/09 | 17845176 | systems/texlive/tlnet/archive/biber.amd64-freebsd.r53064.tar.xz -2019/12/09 | 17763 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2019/12/09 | 177584 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma 2019/12/09 | 177475 | macros/latex/contrib/reledmac/examples/1-criticalendotes.pdf -2019/12/09 | 17699 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2019/12/09 | 17618 | macros/latex/contrib/oberdiek/auxhook.dtx 2019/12/09 | 175170 | macros/latex/contrib/reledmac/examples/2-titles_not_in_line_numbering.pdf +2019/12/09 | 17107 | macros/latex/contrib/oberdiek/kvdefinekeys.dtx 2019/12/09 | 17103052 | systems/texlive/tlnet/archive/biber.x86_64-cygwin.r53064.tar.xz 2019/12/09 | 16986716 | systems/texlive/tlnet/archive/biber.i386-cygwin.r53064.tar.xz -2019/12/09 | 169204 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2019/12/09 | 16829 | macros/latex/contrib/oberdiek/twoopt.dtx 2019/12/09 | 168099 | macros/latex/contrib/reledmac/examples/3-reledpar_sync_setting_default.pdf -2019/12/09 | 1679154 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2019/12/09 | 167846 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2019/12/09 | 16789 | macros/latex/contrib/oberdiek/flags.dtx 2019/12/09 | 16740732 | systems/texlive/tlnet/archive/biber.x86_64-solaris.r53064.tar.xz -2019/12/09 | 166013 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma -2019/12/09 | 165963 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2019/12/09 | 16633 | macros/latex/contrib/oberdiek/classlist.dtx +2019/12/09 | 16564 | macros/latex/contrib/oberdiek/colonequals.dtx +2019/12/09 | 16535 | macros/latex/contrib/oberdiek/aliascnt.dtx +2019/12/09 | 164 | macros/latex/contrib/alphalph/README.md 2019/12/09 | 16390292 | systems/texlive/tlnet/archive/biber.x86_64-darwinlegacy.r53064.tar.xz 2019/12/09 | 1621271 | macros/latex/required/babel/base.zip -2019/12/09 | 160558 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2019/12/09 | 16044 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2019/12/09 | 16001507 | systems/texlive/tlnet/tlpkg/texlive.tlpdb 2019/12/09 | 15936520 | systems/texlive/tlnet/archive/biber.i386-freebsd.r53064.tar.xz -2019/12/09 | 15896 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma 2019/12/09 | 15832248 | systems/texlive/tlnet/archive/biber.i386-solaris.r53064.tar.xz 2019/12/09 | 158108 | macros/latex/contrib/reledmac/examples/2-manuscript-apparatus.pdf 2019/12/09 | 157222 | info/xetexref.zip 2019/12/09 | 15589296 | systems/texlive/tlnet/archive/biber.i386-linux.r53064.tar.xz -2019/12/09 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2019/12/09 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2019/12/09 | 152165 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2019/12/09 | 150092 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2019/12/09 | 15169 | macros/latex/contrib/oberdiek/ifdraft.dtx +2019/12/09 | 15084 | macros/latex/contrib/oberdiek/centernot.dtx 2019/12/09 | 148670 | macros/latex/contrib/beilstein/beilstein.dtx 2019/12/09 | 14796800 | systems/win32/miktex/tm/packages/oberdiek.tar.lzma -2019/12/09 | 147095 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2019/12/09 | 146763 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma 2019/12/09 | 146393 | info/xetexref/xetex-reference.pdf -2019/12/09 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2019/12/09 | 145 | macros/latex/contrib/selinput/README.md 2019/12/09 | 1458048 | macros/latex/contrib/beilstein.zip 2019/12/09 | 145283 | macros/latex/contrib/reledmac/examples/1-sidenotes.pdf -2019/12/09 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 2019/12/09 | 144492 | macros/latex/contrib/reledmac/examples/2-line_numbers_in_header.pdf +2019/12/09 | 14185 | macros/latex/contrib/oberdiek/dvipscol.dtx 2019/12/09 | 140523 | macros/latex/contrib/reledmac/examples/2-one_series_per_pstart.pdf -2019/12/09 | 14050 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma 2019/12/09 | 1399 | macros/latex/contrib/beilstein/README.md 2019/12/09 | 138405 | macros/latex/contrib/reledmac/examples/2-linespacing.pdf 2019/12/09 | 138222 | macros/latex/contrib/reledmac/examples/3-reledpar_same_page_number_in_both_side.pdf -2019/12/09 | 137171 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2019/12/09 | 13782 | macros/latex/contrib/oberdiek/stackrel.dtx +2019/12/09 | 13772 | macros/latex/contrib/oberdiek/chemarr.dtx 2019/12/09 | 13678 | macros/latex/contrib/elegantnote/elegantnote-cn.tex 2019/12/09 | 135414 | macros/latex/contrib/reledmac/examples/2-performances.pdf 2019/12/09 | 134815 | macros/latex/contrib/reledmac/examples/4-reledpar_column_mix_with_not_column.pdf -2019/12/09 | 133205 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2019/12/09 | 1329051 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2019/12/09 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2019/12/09 | 13344 | macros/latex/contrib/oberdiek/tabularkv.dtx 2019/12/09 | 129005 | macros/latex/contrib/reledmac/examples/2-notes-width.pdf -2019/12/09 | 127173 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma 2019/12/09 | 126045 | macros/latex/contrib/reledmac/examples/2-footnote_spacing.pdf 2019/12/09 | 125082 | macros/latex/contrib/reledmac/examples/4-reledpar_pages_notes_leftpage.pdf 2019/12/09 | 12480 | macros/latex/contrib/elegantnote/elegantnote-en.tex @@ -298,28 +510,16 @@ 2019/12/09 | 122256 | macros/latex/contrib/reledmac/examples/2-cross_referencing.pdf 2019/12/09 | 121597 | macros/latex/contrib/reledmac/examples/1-criticalnotes.pdf 2019/12/09 | 1209 | info/xetexref/README.txt -2019/12/09 | 1203299 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2019/12/09 | 1195623 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma 2019/12/09 | 118947 | macros/latex/contrib/reledmac/examples/4-reledpar_verse_text_between.pdf -2019/12/09 | 116803 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2019/12/09 | 1149519 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2019/12/09 | 1148550 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2019/12/09 | 112993 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2019/12/09 | 111236 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2019/12/09 | 108760 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2019/12/09 | 117 | macros/latex/contrib/askinclude/README.md 2019/12/09 | 1082525 | systems/win32/miktex/tm/packages/elegantnote.tar.lzma 2019/12/09 | 10814498 | systems/win32/miktex/tm/packages/plex.tar.lzma -2019/12/09 | 1071192 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2019/12/09 | 1070643 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma -2019/12/09 | 1068588 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma 2019/12/09 | 1065114 | systems/win32/miktex/tm/packages/mcf2graph.tar.lzma +2019/12/09 | 105963 | macros/latex/contrib/oberdiek/bmpsize.dtx 2019/12/09 | 1043724 | systems/texlive/tlnet/archive/mcf2graph.doc.r53062.tar.xz -2019/12/09 | 1042662 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma 2019/12/09 | 10266 | macros/latex/contrib/beilstein/scheme2.pdf 2019/12/09 | 10249 | macros/latex/contrib/beilstein/scheme1.pdf -2019/12/09 | 102381 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma 2019/12/09 | 10207196 | macros/latex/contrib/reledmac.zip -2019/12/09 | 100682 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma 2019/12/09 | 1003 | macros/latex/contrib/beilstein/CHANGELOG.md 2019/12/08 | 963664 | fonts/cormorantgaramond/truetype/CormorantGaramond-Light.ttf 2019/12/08 | 963336 | fonts/cormorantgaramond/truetype/CormorantGaramond-Regular.ttf @@ -329,7 +529,6 @@ 2019/12/08 | 944456 | fonts/cormorantgaramond/truetype/CormorantGaramond-Bold.ttf 2019/12/08 | 9133640 | install/fonts/cormorantgaramond.tds.zip 2019/12/08 | 9047888 | fonts/cormorantgaramond.zip -2019/12/08 | 90102371 | systems/win32/w32tex/TLW64/tl-win64.zip 2019/12/08 | 85192 | fonts/cormorantgaramond/map/CormorantGaramond.map 2019/12/08 | 780 | fonts/cormorantgaramond/vf/CormorantGaramond-SemiBold-tosf-sc-ot1.vf 2019/12/08 | 780 | fonts/cormorantgaramond/vf/CormorantGaramond-SemiBold-tlf-sc-ot1.vf @@ -435,7 +634,6 @@ 2019/12/08 | 5876 | fonts/cormorantgaramond/tfm/CormorantGaramond-Bold-lf-ot1.tfm 2019/12/08 | 5824 | fonts/cormorantgaramond/tfm/CormorantGaramond-Bold-tosf-ot1.tfm 2019/12/08 | 5820 | fonts/cormorantgaramond/tfm/CormorantGaramond-Bold-tlf-ot1.tfm -2019/12/08 | 5791 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2019/12/08 | 5788 | fonts/cormorantgaramond/latex/T2CCormorantGaramond-TOsF.fd 2019/12/08 | 5788 | fonts/cormorantgaramond/latex/T2BCormorantGaramond-TOsF.fd 2019/12/08 | 5788 | fonts/cormorantgaramond/latex/T2ACormorantGaramond-TOsF.fd @@ -462,7 +660,6 @@ 2019/12/08 | 5622 | fonts/cormorantgaramond/latex/T2ACormorantGaramond-LF.fd 2019/12/08 | 5622 | fonts/cormorantgaramond/latex/OT1CormorantGaramond-LF.fd 2019/12/08 | 5622 | fonts/cormorantgaramond/latex/LY1CormorantGaramond-LF.fd -2019/12/08 | 558290 | systems/win32/w32tex/ChangeLog 2019/12/08 | 5564 | fonts/cormorantgaramond/latex/T1CormorantGaramond-LF.fd 2019/12/08 | 500887 | fonts/cormorantgaramond/type1/CormorantGaramond-Regular.pfb 2019/12/08 | 496721 | fonts/cormorantgaramond/type1/CormorantGaramond-Medium.pfb @@ -1199,7 +1396,6 @@ 2019/12/08 | 15712 | fonts/cormorantgaramond/tfm/CormorantGaramond-Bold-tosf-sc-ly1.tfm 2019/12/08 | 15712 | fonts/cormorantgaramond/tfm/CormorantGaramond-Bold-tlf-sc-ly1.tfm 2019/12/08 | 15700 | fonts/cormorantgaramond/tfm/CormorantGaramond-Light-lf-sc-ly1.tfm -2019/12/08 | 156792 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53055.tar.xz 2019/12/08 | 1564 | fonts/cormorantgaramond/tfm/CormorantGaramond-LightItalic-tosf-ts1.tfm 2019/12/08 | 1564 | fonts/cormorantgaramond/tfm/CormorantGaramond-LightItalic-tlf-ts1.tfm 2019/12/08 | 1564 | fonts/cormorantgaramond/tfm/CormorantGaramond-LightItalic-osf-ts1.tfm @@ -1357,7 +1553,6 @@ 2019/12/08 | 1296 | fonts/cormorantgaramond/tfm/CormorantGaramond-Light-tosf-sc-ot1--base.tfm 2019/12/08 | 1292 | fonts/cormorantgaramond/tfm/CormorantGaramond-Light-tlf-sc-ot1--base.tfm 2019/12/08 | 1212730 | macros/latex/contrib/elegantnote.zip -2019/12/08 | 109876 | systems/texlive/tlnet/archive/texlive-docindex.r53055.tar.xz 2019/12/08 | 1072978 | graphics/mcf2graph.zip 2019/12/08 | 10534100 | systems/texlive/tlnet/archive/plex.r53058.tar.xz 2019/12/08 | 1000 | fonts/cormorantgaramond/doc/cormorantgaramond.tex @@ -1991,7 +2186,6 @@ 2019/12/06 | 2304 | macros/latex/contrib/glossaries/samples/sampleNtn.tex 2019/12/06 | 218861 | macros/latex/contrib/curve2e/curve2e.dtx 2019/12/06 | 21710 | macros/latex/contrib/glossaries/samples/sample-si.pdf -2019/12/06 | 21471329 | macros/latex/contrib/oberdiek.zip 2019/12/06 | 2094 | macros/latex/contrib/glossaries/samples/sample-dot-abbr.tex 2019/12/06 | 20661 | macros/latex/contrib/csquotes/csquotes.def 2019/12/06 | 1984 | dviware/dvisvgm/src/optimizer/GroupCollapser.hpp @@ -3122,220 +3316,88 @@ 2019/12/06 | 10037 | dviware/dvisvgm/src/FilePath.cpp 2019/12/06 | 1000 | fonts/plex/tfm/IBMPlexMono-LightItalic-sup-ot1.tfm 2019/12/05 | 9914 | systems/texlive/tlnet/tlpkg/TeXLive/TeXCatalogue.pm -2019/12/05 | 959 | macros/latex/contrib/oberdiek/oberdiek-source.bib 2019/12/05 | 91664 | macros/latex/contrib/elegantnote/image/logo-blue.png 2019/12/05 | 872170 | macros/latex/contrib/mathfont.zip -2019/12/05 | 85469 | macros/latex/contrib/oberdiek/bigintcalc.dtx -2019/12/05 | 816 | macros/latex/contrib/oberdiek/README.txt 2019/12/05 | 8116 | systems/texlive/tlnet/archive/bookmark.r53026.tar.xz 2019/12/05 | 80796 | systems/texlive/tlnet/archive/dtk.doc.r53020.tar.xz 2019/12/05 | 779213 | systems/win32/miktex/tm/packages/dynkin-diagrams.tar.lzma -2019/12/05 | 77827 | macros/latex/contrib/oberdiek/bitset.dtx 2019/12/05 | 760028 | systems/texlive/tlnet/archive/dynkin-diagrams.doc.r53018.tar.xz -2019/12/05 | 71514 | macros/latex/contrib/oberdiek/intcalc.dtx -2019/12/05 | 67789 | macros/latex/contrib/oberdiek/ltxcmds.dtx 2019/12/05 | 6548 | systems/texlive/tlnet/archive/mleftright.source.r53021.tar.xz 2019/12/05 | 638010 | macros/latex/contrib/pmboxdraw/pmboxdraw.pdf -2019/12/05 | 626116 | macros/latex/contrib/oberdiek/bitset.pdf 2019/12/05 | 621416 | install/macros/latex/contrib/pmboxdraw.tds.zip 2019/12/05 | 61855 | macros/latex/contrib/atbegshi/atbegshi.dtx 2019/12/05 | 6144 | systems/texlive/tlnet/archive/grfext.source.r53024.tar.xz -2019/12/05 | 593900 | macros/latex/contrib/oberdiek/askinclude.pdf 2019/12/05 | 59158 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm 2019/12/05 | 5912 | systems/texlive/tlnet/archive/letltxmacro.source.r53022.tar.xz 2019/12/05 | 583460 | install/macros/latex/contrib/hologo.tds.zip -2019/12/05 | 58016 | macros/latex/contrib/oberdiek/askinclude.dtx 2019/12/05 | 5712 | systems/texlive/tlnet/archive/infwarerr.source.r53023.tar.xz 2019/12/05 | 567626 | macros/latex/contrib/hologo/hologo.pdf -2019/12/05 | 537938 | macros/latex/contrib/oberdiek/selinput.pdf -2019/12/05 | 517568 | macros/latex/contrib/oberdiek/resizegather.pdf 2019/12/05 | 5104 | systems/texlive/tlnet/archive/embedfile.r53025.tar.xz -2019/12/05 | 497867 | macros/latex/contrib/oberdiek/bmpsize.pdf -2019/12/05 | 47687 | macros/latex/contrib/oberdiek/kvsetkeys.dtx 2019/12/05 | 474875 | systems/win32/miktex/tm/packages/babel-italian.tar.lzma -2019/12/05 | 46837 | macros/latex/contrib/oberdiek/pdfrender.dtx -2019/12/05 | 467906 | macros/latex/contrib/oberdiek/bigintcalc.pdf 2019/12/05 | 465408 | systems/texlive/tlnet/archive/bookmark.doc.r53026.tar.xz -2019/12/05 | 46055 | macros/latex/contrib/oberdiek/hycolor.dtx 2019/12/05 | 446552 | systems/texlive/tlnet/archive/babel-italian.doc.r53019.tar.xz -2019/12/05 | 43831 | macros/latex/contrib/oberdiek/alphalph.dtx -2019/12/05 | 431640 | macros/latex/contrib/oberdiek/intcalc.pdf 2019/12/05 | 418377 | install/macros/latex/contrib/atbegshi.tds.zip 2019/12/05 | 410685 | macros/latex/contrib/atbegshi.zip 2019/12/05 | 405994 | macros/latex/contrib/atbegshi/atbegshi.pdf 2019/12/05 | 40355 | macros/latex/contrib/atveryend/atveryend.dtx -2019/12/05 | 394188 | macros/latex/contrib/oberdiek/ltxcmds.pdf -2019/12/05 | 39389 | macros/latex/contrib/oberdiek/pdfescape.dtx 2019/12/05 | 387416 | systems/texlive/tlnet/archive/embedfile.doc.r53025.tar.xz 2019/12/05 | 386981 | install/macros/latex/contrib/atveryend.tds.zip -2019/12/05 | 382955 | macros/latex/contrib/oberdiek/pdfrender.pdf 2019/12/05 | 382724 | macros/latex/contrib/atveryend.zip 2019/12/05 | 381073 | macros/latex/contrib/atveryend/atveryend.pdf 2019/12/05 | 3756 | systems/texlive/tlnet/archive/babel-italian.r53019.tar.xz -2019/12/05 | 375389 | macros/latex/contrib/oberdiek/kvsetkeys.pdf 2019/12/05 | 364 | macros/latex/contrib/atveryend/README.md -2019/12/05 | 364633 | macros/latex/contrib/oberdiek/hycolor.pdf -2019/12/05 | 35799 | macros/latex/contrib/oberdiek/hypdoc.dtx 2019/12/05 | 355 | macros/latex/contrib/atenddvi/README.md -2019/12/05 | 354313 | macros/latex/contrib/oberdiek/fibnum.pdf -2019/12/05 | 354229 | macros/latex/contrib/oberdiek/alphalph.pdf -2019/12/05 | 352081 | macros/latex/contrib/oberdiek/soulutf8.pdf -2019/12/05 | 35155 | macros/latex/contrib/oberdiek/soulutf8.dtx -2019/12/05 | 347238 | macros/latex/contrib/oberdiek/thepdfnumber.pdf -2019/12/05 | 346746 | macros/latex/contrib/oberdiek/pdfescape.pdf -2019/12/05 | 345578 | macros/latex/contrib/oberdiek/oberdiek.pdf 2019/12/05 | 340781 | install/macros/latex/contrib/accsupp.tds.zip 2019/12/05 | 331978 | macros/latex/contrib/accsupp.zip -2019/12/05 | 331314 | macros/latex/contrib/oberdiek/tabularht.pdf -2019/12/05 | 330129 | macros/latex/contrib/oberdiek/setouterhbox.pdf -2019/12/05 | 32949 | macros/latex/contrib/oberdiek/thepdfnumber.dtx 2019/12/05 | 327709 | macros/latex/contrib/accsupp/accsupp.pdf -2019/12/05 | 326895 | macros/latex/contrib/oberdiek/refcount.pdf 2019/12/05 | 322832 | install/macros/latex/contrib/rerunfilecheck.tds.zip 2019/12/05 | 321737 | macros/latex/contrib/mathfont/mathfont_symbol_list.pdf -2019/12/05 | 319986 | macros/latex/contrib/oberdiek/pdfcolparallel.pdf -2019/12/05 | 319844 | macros/latex/contrib/oberdiek/hypdoc.pdf -2019/12/05 | 318743 | macros/latex/contrib/oberdiek/gettitlestring.pdf -2019/12/05 | 318562 | macros/latex/contrib/oberdiek/engord.pdf 2019/12/05 | 317993 | systems/win32/miktex/tm/packages/mleftright.tar.lzma 2019/12/05 | 317869 | systems/win32/miktex/tm/packages/barracuda.tar.lzma -2019/12/05 | 317677 | macros/latex/contrib/oberdiek/hypdestopt.pdf -2019/12/05 | 317164 | macros/latex/contrib/oberdiek/rotchiffre.pdf 2019/12/05 | 317057 | systems/win32/miktex/tm/packages/grfext.tar.lzma -2019/12/05 | 316822 | macros/latex/contrib/oberdiek/eolgrab.pdf 2019/12/05 | 315092 | macros/latex/contrib/rerunfilecheck/rerunfilecheck.pdf -2019/12/05 | 314990 | macros/latex/contrib/oberdiek/iflang.pdf -2019/12/05 | 312192 | macros/latex/contrib/oberdiek/pagesel.pdf -2019/12/05 | 311600 | macros/latex/contrib/oberdiek/pagegrid.pdf -2019/12/05 | 311564 | macros/latex/contrib/oberdiek/pdfcrypt.pdf 2019/12/05 | 310 | macros/latex/contrib/accsupp/README.md -2019/12/05 | 31024 | macros/latex/contrib/oberdiek/tabularht.dtx 2019/12/05 | 308648 | systems/texlive/tlnet/archive/mleftright.doc.r53021.tar.xz 2019/12/05 | 308376 | systems/texlive/tlnet/archive/grfext.doc.r53024.tar.xz -2019/12/05 | 308006 | macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf -2019/12/05 | 307773 | macros/latex/contrib/oberdiek/protecteddef.pdf -2019/12/05 | 305359 | macros/latex/contrib/oberdiek/holtxdoc.pdf -2019/12/05 | 304863 | macros/latex/contrib/oberdiek/enparen.pdf 2019/12/05 | 304681 | install/macros/latex/contrib/pdflscape.tds.zip -2019/12/05 | 303828 | macros/latex/contrib/oberdiek/telprint.pdf -2019/12/05 | 302693 | macros/latex/contrib/oberdiek/pdfcol.pdf 2019/12/05 | 30265 | macros/latex/contrib/accsupp/accsupp.dtx -2019/12/05 | 300241 | macros/latex/contrib/oberdiek/etexcmds.pdf -2019/12/05 | 299858 | macros/latex/contrib/oberdiek/hyphsubst.pdf 2019/12/05 | 299397 | macros/latex/contrib/pdflscape/pdflscape.pdf -2019/12/05 | 29904 | macros/latex/contrib/oberdiek/refcount.dtx -2019/12/05 | 298873 | macros/latex/contrib/oberdiek/catchfile.pdf -2019/12/05 | 298594 | macros/latex/contrib/oberdiek/listingsutf8.pdf 2019/12/05 | 298537 | systems/win32/miktex/tm/packages/letltxmacro.tar.lzma -2019/12/05 | 295928 | macros/latex/contrib/oberdiek/picture.pdf -2019/12/05 | 295786 | macros/latex/contrib/oberdiek/kvdefinekeys.pdf -2019/12/05 | 29459 | macros/latex/contrib/oberdiek/setouterhbox.dtx -2019/12/05 | 294403 | macros/latex/contrib/oberdiek/pdfcolfoot.pdf -2019/12/05 | 293548 | macros/latex/contrib/oberdiek/settobox.pdf 2019/12/05 | 293465 | systems/win32/miktex/tm/packages/infwarerr.tar.lzma -2019/12/05 | 293225 | macros/latex/contrib/oberdiek/hopatch.pdf -2019/12/05 | 293099 | macros/latex/contrib/oberdiek/aliascnt.pdf 2019/12/05 | 290936 | systems/texlive/tlnet/archive/letltxmacro.doc.r53022.tar.xz -2019/12/05 | 289988 | macros/latex/contrib/oberdiek/uniquecounter.pdf -2019/12/05 | 289747 | macros/latex/contrib/oberdiek/hypbmsec.pdf -2019/12/05 | 28916 | macros/latex/contrib/oberdiek/hypdestopt.dtx -2019/12/05 | 288654 | macros/latex/contrib/oberdiek/chemarr.pdf -2019/12/05 | 2866 | macros/latex/contrib/oberdiek/oberdiek.ins -2019/12/05 | 285266 | macros/latex/contrib/oberdiek/auxhook.pdf -2019/12/05 | 285090 | macros/latex/contrib/oberdiek/hypgotoe.pdf 2019/12/05 | 284912 | systems/texlive/tlnet/archive/infwarerr.doc.r53023.tar.xz -2019/12/05 | 284627 | macros/latex/contrib/oberdiek/colonequals.pdf -2019/12/05 | 284122 | macros/latex/contrib/oberdiek/hypcap.pdf -2019/12/05 | 283891 | macros/latex/contrib/oberdiek/scrindex.pdf -2019/12/05 | 283637 | macros/latex/contrib/oberdiek/flags.pdf -2019/12/05 | 281746 | macros/latex/contrib/oberdiek/stackrel.pdf -2019/12/05 | 28136 | macros/latex/contrib/oberdiek/pagegrid.dtx 2019/12/05 | 280910 | macros/latex/contrib/mathfont/mathfont_code.pdf -2019/12/05 | 27847 | macros/latex/contrib/oberdiek/pdfcrypt.dtx 2019/12/05 | 277908 | install/macros/latex/contrib/atenddvi.tds.zip -2019/12/05 | 277765 | macros/latex/contrib/oberdiek/stampinclude.pdf -2019/12/05 | 274864 | macros/latex/contrib/oberdiek/centernot.pdf -2019/12/05 | 274422 | macros/latex/contrib/oberdiek/twoopt.pdf 2019/12/05 | 273056 | macros/latex/contrib/atenddvi/atenddvi.pdf 2019/12/05 | 27174 | macros/latex/contrib/rerunfilecheck/rerunfilecheck.dtx -2019/12/05 | 271621 | macros/latex/contrib/oberdiek/classlist.pdf -2019/12/05 | 269326 | macros/latex/contrib/oberdiek/dvipscol.pdf -2019/12/05 | 26867 | macros/latex/contrib/oberdiek/pdfcolparallel.dtx -2019/12/05 | 26773 | macros/latex/contrib/oberdiek/oberdiek.tex 2019/12/05 | 2668 | systems/texlive/tlnet/archive/infwarerr.r53023.tar.xz -2019/12/05 | 265294 | macros/latex/contrib/oberdiek/ifdraft.pdf 2019/12/05 | 2644 | systems/texlive/tlnet/archive/mleftright.r53021.tar.xz -2019/12/05 | 26388 | macros/latex/contrib/oberdiek/pdfcol.dtx -2019/12/05 | 26109 | macros/latex/contrib/oberdiek/enparen.dtx -2019/12/05 | 25810 | macros/latex/contrib/oberdiek/fibnum.dtx -2019/12/05 | 25691 | macros/latex/contrib/oberdiek/rotchiffre.dtx -2019/12/05 | 254709 | macros/latex/contrib/oberdiek/tabularkv.pdf -2019/12/05 | 25308 | macros/latex/contrib/oberdiek/iflang.dtx -2019/12/05 | 25146 | macros/latex/contrib/oberdiek/hypbmsec.dtx -2019/12/05 | 25097 | macros/latex/contrib/oberdiek/eolgrab.dtx -2019/12/05 | 24890 | macros/latex/contrib/oberdiek/telprint.dtx -2019/12/05 | 24771 | macros/latex/contrib/oberdiek/resizegather.dtx -2019/12/05 | 24735 | macros/latex/contrib/oberdiek/selinput.dtx -2019/12/05 | 24209 | macros/latex/contrib/oberdiek/pagesel.dtx -2019/12/05 | 24106 | macros/latex/contrib/oberdiek/engord.dtx 2019/12/05 | 240025 | macros/latex/contrib/mathfont/mathfont_user_guide.pdf 2019/12/05 | 2340 | systems/texlive/tlnet/archive/grfext.r53024.tar.xz -2019/12/05 | 23136 | macros/latex/contrib/oberdiek/gettitlestring.dtx -2019/12/05 | 22212 | macros/latex/contrib/oberdiek/catchfile.dtx 2019/12/05 | 22064 | systems/texlive/tlnet/archive/babel-italian.source.r53019.tar.xz 2019/12/05 | 217 | macros/latex/contrib/atbegshi/README.md 2019/12/05 | 21712 | macros/latex/contrib/pdflscape/pdflscape.dtx -2019/12/05 | 21660308 | install/macros/latex/contrib/oberdiek.tds.zip -2019/12/05 | 21476 | macros/latex/contrib/oberdiek/hypcap.dtx -2019/12/05 | 21471 | macros/latex/contrib/oberdiek/holtxdoc.dtx -2019/12/05 | 21343 | macros/latex/contrib/oberdiek/hyphsubst.dtx 2019/12/05 | 2092 | systems/texlive/tlnet/archive/letltxmacro.r53022.tar.xz -2019/12/05 | 20812 | macros/latex/contrib/oberdiek/protecteddef.dtx -2019/12/05 | 20806 | macros/latex/contrib/oberdiek/hopatch.dtx -2019/12/05 | 20736 | macros/latex/contrib/oberdiek/picture.dtx -2019/12/05 | 20692 | macros/latex/contrib/oberdiek/pdfcolparcolumns.dtx -2019/12/05 | 20366 | macros/latex/contrib/oberdiek/etexcmds.dtx -2019/12/05 | 20085 | macros/latex/contrib/oberdiek/uniquecounter.dtx -2019/12/05 | 20045 | macros/latex/contrib/oberdiek/settobox.dtx -2019/12/05 | 19329 | macros/latex/contrib/oberdiek/pdfcolfoot.dtx -2019/12/05 | 19267 | macros/latex/contrib/oberdiek/scrindex.dtx -2019/12/05 | 19140 | macros/latex/contrib/oberdiek/listingsutf8.dtx -2019/12/05 | 18499 | macros/latex/contrib/oberdiek/stampinclude.dtx 2019/12/05 | 18372 | systems/texlive/tlnet/archive/bookmark.source.r53026.tar.xz 2019/12/05 | 182 | macros/latex/contrib/rerunfilecheck/README.md 2019/12/05 | 180745 | macros/latex/contrib/mathfont/mathfont_code.dtx -2019/12/05 | 17957 | macros/latex/contrib/oberdiek/hypgotoe.dtx -2019/12/05 | 17618 | macros/latex/contrib/oberdiek/auxhook.dtx 2019/12/05 | 17300 | systems/texlive/tlnet/archive/dtk.r53020.tar.xz 2019/12/05 | 17204 | systems/texlive/tlnet/archive/dynkin-diagrams.r53018.tar.xz -2019/12/05 | 17107 | macros/latex/contrib/oberdiek/kvdefinekeys.dtx 2019/12/05 | 170 | macros/latex/contrib/pdflscape/README.md -2019/12/05 | 16829 | macros/latex/contrib/oberdiek/twoopt.dtx 2019/12/05 | 16804 | macros/latex/contrib/atenddvi/atenddvi.dtx -2019/12/05 | 16789 | macros/latex/contrib/oberdiek/flags.dtx -2019/12/05 | 16633 | macros/latex/contrib/oberdiek/classlist.dtx -2019/12/05 | 16564 | macros/latex/contrib/oberdiek/colonequals.dtx -2019/12/05 | 16535 | macros/latex/contrib/oberdiek/aliascnt.dtx 2019/12/05 | 159 | macros/latex/contrib/pmboxdraw/README.md -2019/12/05 | 15169 | macros/latex/contrib/oberdiek/ifdraft.dtx -2019/12/05 | 15084 | macros/latex/contrib/oberdiek/centernot.dtx 2019/12/05 | 147250 | macros/latex/contrib/pmboxdraw/pmboxdraw.dtx -2019/12/05 | 14185 | macros/latex/contrib/oberdiek/dvipscol.dtx -2019/12/05 | 13782 | macros/latex/contrib/oberdiek/stackrel.dtx -2019/12/05 | 13772 | macros/latex/contrib/oberdiek/chemarr.dtx 2019/12/05 | 136134 | systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm -2019/12/05 | 13344 | macros/latex/contrib/oberdiek/tabularkv.dtx 2019/12/05 | 13064 | systems/texlive/tlnet/archive/embedfile.source.r53025.tar.xz 2019/12/05 | 115 | macros/latex/contrib/hologo/README.md 2019/12/05 | 114687 | macros/latex/contrib/hologo/hologo.dtx -2019/12/05 | 105963 | macros/latex/contrib/oberdiek/bmpsize.dtx -2019/12/05 | 10554 | macros/latex/contrib/oberdiek/oberdiek-bundle.bib 2019/12/04 | 98405516 | systems/win32/w32tex/web2c-lib.tar.xz 2019/12/04 | 948944 | systems/texlive/tlnet/archive/archaeologie.doc.r53011.tar.xz 2019/12/04 | 929431 | systems/win32/miktex/tm/packages/biblatex-chem.tar.lzma 2019/12/04 | 923856 | systems/texlive/tlnet/archive/biblatex-chem.doc.r53012.tar.xz 2019/12/04 | 9170 | usergrps/dante/dtk/dtk-extern.sty 2019/12/04 | 880644 | systems/texlive/tlnet/archive/uplatex.doc.r53009.tar.xz +2019/12/04 | 86306 | macros/generic/witharrows/witharrows-french.tex 2019/12/04 | 81416012 | systems/win32/w32tex/pgfcontrib.tar.xz 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 @@ -3424,95 +3486,3 @@ 2019/12/04 | 10444 | macros/luatex/generic/barracuda/doc/barracuda.tex 2019/12/04 | 104375 | usergrps/dante/dtk.zip 2019/12/04 | 1039 | usergrps/dante/dtk/dtk-author.clo -2019/12/03 | 93584 | macros/latex/contrib/bookmark/bookmark.dtx -2019/12/03 | 9188 | macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.tex -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 | 7936 | macros/latex/contrib/knowledge/knowledge-configuration.dtx -2019/12/03 | 789186 | macros/latex/contrib/knowledge.zip -2019/12/03 | 765941 | systems/win32/miktex/tm/packages/graphicxsp.tar.lzma -2019/12/03 | 72279 | systems/win32/miktex/tm/packages/pinoutikz.tar.lzma -2019/12/03 | 702619 | macros/latex/contrib/knowledge/knowledge.pdf -2019/12/03 | 69492 | systems/texlive/tlnet/archive/pinoutikz.doc.r52999.tar.xz -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 | 63292480 | systems/win32/w32tex/biblatex-biber.tar.xz -2019/12/03 | 57640 | macros/latex/contrib/embedfile/embedfile.dtx -2019/12/03 | 57320 | systems/texlive/tlnet/archive/xetexko.r53002.tar.xz -2019/12/03 | 503071 | install/macros/latex/contrib/bookmark.tds.zip -2019/12/03 | 481265 | macros/latex/contrib/bookmark.zip -2019/12/03 | 475757 | macros/latex/contrib/bookmark/bookmark.pdf -2019/12/03 | 460970 | install/macros/latex/contrib/biblatex-contrib/biblatex-phys.tds.zip -2019/12/03 | 459931 | macros/latex/contrib/biblatex-contrib/biblatex-phys.zip -2019/12/03 | 4533088 | systems/texlive/tlnet/archive/newtx.r52998.tar.xz -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 | 406694 | install/macros/latex/contrib/embedfile.tds.zip -2019/12/03 | 397370 | macros/latex/contrib/embedfile.zip -2019/12/03 | 3925892 | macros/latex/contrib/animate/animate.pdf -2019/12/03 | 391565 | macros/latex/contrib/embedfile/embedfile.pdf -2019/12/03 | 382257 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem.pdf -2019/12/03 | 3792 | systems/texlive/tlnet/archive/logreq.doc.r53003.tar.xz -2019/12/03 | 354 | macros/latex/contrib/mleftright/README.md -2019/12/03 | 328 | macros/latex/contrib/bookmark/README.md -2019/12/03 | 3237505 | install/macros/latex/contrib/animate.tds.zip -2019/12/03 | 3235221 | macros/latex/contrib/animate.zip -2019/12/03 | 323255 | systems/win32/miktex/tm/packages/luatexko.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 | 315992 | install/macros/latex/contrib/mleftright.tds.zip -2019/12/03 | 314941 | install/macros/latex/contrib/grfext.tds.zip -2019/12/03 | 309397 | macros/latex/contrib/mleftright/mleftright.pdf -2019/12/03 | 309305 | macros/latex/contrib/grfext/grfext.pdf -2019/12/03 | 300508 | systems/texlive/tlnet/archive/luatexko.doc.r53001.tar.xz -2019/12/03 | 297356 | install/macros/latex/contrib/letltxmacro.tds.zip -2019/12/03 | 293696 | systems/win32/miktex/tm/packages/xetexko.tar.lzma -2019/12/03 | 291825 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem-acs.pdf -2019/12/03 | 291576 | install/macros/latex/contrib/infwarerr.tds.zip -2019/12/03 | 290791 | macros/latex/contrib/letltxmacro/letltxmacro.pdf -2019/12/03 | 288 | macros/latex/contrib/letltxmacro/README.md -2019/12/03 | 285979 | macros/latex/contrib/infwarerr/infwarerr.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 | 273290 | macros/latex/contrib/biblatex-contrib/biblatex-chem/biblatex-chem-rsc.pdf -2019/12/03 | 2700 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-angew.cbx -2019/12/03 | 2614 | macros/latex/contrib/knowledge/makefile -2019/12/03 | 2500 | systems/texlive/tlnet/archive/pinoutikz.r52999.tar.xz -2019/12/03 | 248023 | systems/win32/miktex/tm/packages/biblatex-apa6.tar.lzma -2019/12/03 | 236080 | systems/texlive/tlnet/archive/xetexko.doc.r53002.tar.xz -2019/12/03 | 23458 | macros/latex/contrib/mleftright/mleftright.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 | 226776 | systems/texlive/tlnet/archive/biblatex-apa6.doc.r53000.tar.xz -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 | 21760 | systems/texlive/tlnet/archive/luatexko.r53001.tar.xz -2019/12/03 | 20988 | systems/texlive/tlnet/archive/biblatex-apa6.r53000.tar.xz -2019/12/03 | 2025 | macros/latex/contrib/knowledge/README.md -2019/12/03 | 19463 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-acs.bbx -2019/12/03 | 18753 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-biochem.bbx -2019/12/03 | 182368 | systems/texlive/tlnet/archive/erewhon-math.r52997.tar.xz -2019/12/03 | 17830 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-angew.bbx -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 | 166 | macros/latex/contrib/infwarerr/README.md -2019/12/03 | 16680 | macros/latex/contrib/biblatex-contrib/biblatex-chem/chem-rsc.bbx -2019/12/03 | 157894 | macros/latex/contrib/knowledge/knowledge-code.dtx -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 | 148 | macros/latex/contrib/embedfile/README.md -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 | 139242 | macros/latex/contrib/animate/animate.sty -2019/12/03 | 1387 | macros/latex/contrib/biblatex-contrib/biblatex-phys/phys.dbx -2019/12/03 | 137 | macros/latex/contrib/grfext/README.md -2019/12/03 | 13519 | macros/latex/contrib/biblatex-contrib/biblatex-phys/biblatex-phys.bib -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 | 1151924 | macros/latex/contrib/biblatex-contrib/archaeologie.zip -2019/12/03 | 10993 | macros/latex/contrib/animate/ChangeLog -2019/12/03 | 108788 | systems/texlive/tlnet/archive/hyperref.r53004.tar.xz diff --git a/macros/generic/witharrows/witharrows-french.pdf b/macros/generic/witharrows/witharrows-french.pdf index 5460b3fb46..0a045846a7 100644 Binary files a/macros/generic/witharrows/witharrows-french.pdf and b/macros/generic/witharrows/witharrows-french.pdf differ diff --git a/macros/generic/witharrows/witharrows-french.tex b/macros/generic/witharrows/witharrows-french.tex index 1c2f8481c8..f57d0a28d2 100644 --- a/macros/generic/witharrows/witharrows-french.tex +++ b/macros/generic/witharrows/witharrows-french.tex @@ -18,7 +18,7 @@ \usetikzlibrary{calc} \usepackage[only,llbracket,rrbracket]{stmaryrd} -% We use \MakeShortVerb of shortvrb and not \DefineShortVrb of fancyvrb +% We use \MakeShortVerb of shortvrb and not \DefineShortVerb of fancyvrb % because we don't want the contents of short verbatim colored in gray \usepackage{shortvrb} \MakeShortVerb{\|} @@ -32,21 +32,23 @@ \titlespacing*{\section}{0pt}{6.5ex plus 1ex minus .2ex}{4.3ex plus .2ex} \titlespacing*{\subsection}{0pt}{4.5ex plus 1ex minus .2ex}{2ex plus .2ex} -\usepackage{fncylab} % à supprimer en 2020 + \labelformat{equation}{(#1)} -\def\interitem{\vskip 7mm plus 2 mm minus 3mm} +\def\interitem{\vspace{7mm plus 2 mm minus 3mm}} \def\emphase{\bgroup\color{RoyalPurple}\let\next=} \skip \footins = 2 \bigskipamount \usepackage[hyperfootnotes = false]{hyperref} -\hypersetup{ - pdfinfo = { - Title = { L’extension witharrows }, - Subject = { Une extension pour plain-TeX et LaTeX } , - Author = { F. Pantigny } +\hypersetup + { + pdfinfo = + { + Title = L’extension witharrows , + Subject = Une extension pour plain-TeX et LaTeX , + Author = F. Pantigny } } @@ -122,7 +124,7 @@ La commande |\Arrow| a plusieurs options. Ces options peuvent être placées ent l'argument obligatoire. L'option |jump| indique le nombre\footnote{Il n'est pas possible de donner une valeur négative à |jump|. -Voir plus loin (p.~\pageref{Backwards}) la manière de tracer une flèche qui remonte.} de rangées que la flèche doit sauter (la valeur par défaut est, bien +Voir plus loin (p.~\pageref{Backwards}) la manière de tracer une flèche qui remonte.} de rangées que la flèche doit sauter (la valeur initiale est, bien entendu,~$1$). @@ -158,7 +160,7 @@ A & = \bigl((a+b)+1\bigr)^2 \Arrow{}\Arrow{}[jump=2] \\ \interitem L'option |xoffset| décale la flèche vers la droite (habituellement, on ne souhaite pas que les flèches soient -collées au texte). La valeur par défaut de |xoffset| est de $3$~mm. +collées au texte). La valeur initiale de |xoffset| est de $3$~mm. \begin{Verbatim} $\begin{WithArrows} A & = \bigl((a+b)+1\bigr)^2 @@ -468,7 +470,7 @@ la page~\pageref{NestedEnv}. Jusqu'à présent, nous n'avons utilisé l'environnement |{WithArrows}| qu'avec deux colonnes. Néanmoins, il est possible de l'utiliser avec un nombre arbitraire de colonnes grâce à l'option |format|. La valeur donnée à cette option est similaire au préambule d'un environnement |{array}|: il s'agit d'une séquence de lettres |r|, |c| et -|l|. La valeur par défaut de cette option |format| est, en fait, |rl|. +|l|. La valeur initiale de cette option |format| est, en fait, |rl|. \bigskip @@ -834,7 +836,7 @@ x+2y & = 0 \\ \interitem De même que l'environnement |{aligned}|, |{WithArrows}| a une option de placement qui peut prendre les valeurs |t|, -|c| ou |b|. Néanmoins, la valeur par défaut n'est pas |c| mais |t|. Si on le souhaite, il est possible d'avoir la +|c| ou |b|. Néanmoins, la valeur initiale n'est pas |c| mais |t|. Si on le souhaite, il est possible d'avoir la valeur |c| comme valeur par défaut en utilisant l'instruction |\WithArrowsOptions{c}| au début du document. % \begin{Verbatim} @@ -1373,7 +1375,7 @@ A & = A_1 \Arrow{première étape} \\ \bigskip Avec l'option |fleqn|, l'environnement est composé calé à gauche (d'une manière similaire à l'option |fleqn| des classes standard de LaTeX). Dans ce cas, la marge gauche peut être réglée avec -l'option |mathindent| (qui a un nom inspiré du paramètre |\mathindent| de LaTeX). La valeur par défaut +l'option |mathindent| (qui a un nom inspiré du paramètre |\mathindent| de LaTeX). La valeur initiale pour cette option est de 25~pt. \begin{Verbatim} @@ -1623,11 +1625,11 @@ suivant.\footnote{L'environnement |{cases}| de l'\pkg{amsmath} permet de réalis \end{DispWithArrows} \interitem -Dans l'exemple suivant, on sous-numérote les équations d'un système avec l'option |subnumerate| (disponible +Dans l'exemple suivant, on sous-numérote les équations d'un système avec l'option |subequations| (disponible quand l'|amsmath| est chargé). \begin{Verbatim} -\begin{DispWithArrows}~emphase#< \label{système} (\ref*{système}) \Leftrightarrow >@% +\begin{DispWithArrows}~emphase#< \label{système} \ref*{système} \Leftrightarrow >@% [format = l, subequations] x+y+z = -3 \Arrow[tikz=-,jump=2]{3 equations} \\ xy+xz+yz=-2 \\ @@ -1635,7 +1637,7 @@ xyz = -15 \label{dernière-équation} \end{DispWithArrows} \end{Verbatim} % -\begin{DispWithArrows}< \label{système} (\ref*{système}) \Leftrightarrow >% +\begin{DispWithArrows}< \label{système} \ref*{système} \Leftrightarrow >% [format = l, subequations] x+y+z = -3 \Arrow[tikz=-,jump=2]{3 équations} \\ xy+xz+yz=-2 \\ @@ -1650,8 +1652,8 @@ dernière équation est l'équation \ref{dernière-équation} (référence obten \bigskip On peut souhaiter remplacer l'accolade gauche par un autre délimiteur extensible (gauche). On peut le faire avec -l'option |replace-left-brace-by|. Par exemple «|replace-left-brace-by = [\enskip|» va composer avec un -crochet et ajouter aussi un espace de 1~em après le crochet. +l'option |replace-left-brace-by|. Par exemple, «|replace-left-brace-by = [\enskip|» va composer avec un crochet et +ajouter aussi un espace de 1~em après le crochet. \bigskip \section{Fonctionnalités avancées} @@ -1789,9 +1791,9 @@ Nous expliquons d'abord le comportement quand les paramètres |start-adjust| et zéro: \begin{itemize} \item l'option |ystart| représente la distance verticale entre la ligne de base du -texte et le début de la flèche (valeur par défaut : $0.4$~ex); +texte et le début de la flèche (valeur initiale : $0.4$~ex); \item l'option |ygap| représente la distance verticale entre deux flèches consécutives -(valeur par défaut : $0.4$~ex). +(valeur initiale : $0.4$~ex). \end{itemize} @@ -1841,7 +1843,7 @@ A & = (a+1)^2 \Arrow{on développe} \\ \bigskip Voici le comportement par défaut depuis la version 1.13 (les paramètres -|start-adjust| et |end-ajust| sont utilisés avec la valeur par défaut $0.4$~ex). La flèche +|start-adjust| et |end-ajust| sont utilisés avec la valeur initiale $0.4$~ex). La flèche est plus longue et le résultat est plus esthétique. \medskip @@ -1866,7 +1868,7 @@ en fixant simplement |start-adjust| et |end-adjust| à $0$~pt: \bigskip Depuis la version 2.1 de \pkg{witharrows}, une flèche de |jump| égal à~$1$ a une longueur\footnote{On appelle \emph{longueur} de la flèche la différence entre l'ordonnée du point de départ et l'ordonnée du point d'arrivée.} -maximale égale au paramètre |max-length-of-arrow|. La valeur par défaut de ce paramètre est égale à~$2$~cm. +maximale égale au paramètre |max-length-of-arrow|. La valeur initiale de ce paramètre est égale à~$2$~cm. Dans l'exemple suivant, la valeur de |max-length-of-arrow| a été fixée à $1.5$~cm. \begin{Verbatim} @@ -2093,7 +2095,7 @@ pour tracer les flèches.\footnote{Si un environnement |{DispWithArrows}| ou environnements imbriqués à l'intérieur).} \smallskip -La valeur par défaut de |tikz-code| est |\draw (#1) to node {#3} (#2) ;| +La valeur initiale de |tikz-code| est |\draw (#1) to node {#3} (#2) ;| où les trois marqueurs |#1|, |#2| et |#3| représentent le point de départ, le point d'arrivée et l'étiquette de la flèche. diff --git a/macros/generic/witharrows/witharrows.dtx b/macros/generic/witharrows/witharrows.dtx index 96fd85f7f6..8aef1584bb 100644 --- a/macros/generic/witharrows/witharrows.dtx +++ b/macros/generic/witharrows/witharrows.dtx @@ -15,8 +15,8 @@ % % \fi % \iffalse -\def\myfileversion{2.1} -\def\myfiledate{2019/10/21} +\def\myfileversion{2.2} +\def\myfiledate{2019/12/10} % % %<*batchfile> @@ -57,7 +57,7 @@ version 2005/12/01 or later. \usepackage{varwidth} \labelformat{equation}{(#1)} \NewDocumentEnvironment {scope} {} {} {} -\def\interitem{\vskip 7mm plus 2 mm minus 3mm} +\def\interitem{\vspace{7mm plus 2 mm minus 3mm}} \def\emphase{\bgroup\color{RoyalPurple}\let\next=} \fvset{commandchars=\~\#\@,formatcom={\color{gray}}} \DeclareMathOperator{\re}{Re} @@ -80,9 +80,9 @@ version 2005/12/01 or later. % { % pdfinfo = % { -% Title = { The extension 'witharrows' } , -% Subject = { An extension for plain-TeX and LaTeX} , -% Author = { F. Pantigny } +% Title = The extension 'witharrows' , +% Subject = An extension for plain-TeX and LaTeX , +% Author = F. Pantigny % } % } % @@ -180,7 +180,7 @@ version 2005/12/01 or later. % % \interitem % The option |xoffset| shifts the arrow to the right (we usually don't want the -% arrows to be stucked on the text). The default value of |xoffset| is $3$~mm. +% arrows to be stucked on the text). The initial value of |xoffset| is $3$~mm. % \begin{Verbatim} % $\begin{WithArrows} % A & = \bigl((a+b)+1\bigr)^2 @@ -508,7 +508,7 @@ version 2005/12/01 or later. % it's possible to use the environment with an arbitrary number of columns with % the option |format|. The value given to this option is like the preamble of an % environment |{array}|, that is to say a sequence of letters |r|, |c| and |l|. -% The default value of the option |format| is, in fact, |rl|. +% The initial value of the option |format| is, in fact, |rl|. % % \bigskip % For exemple, if we want only one column left-aligned, we use the option |format=l|. @@ -879,7 +879,7 @@ version 2005/12/01 or later. % % \interitem % Like the environment |{aligned}|, |{WithArrows}| has an option of placement -% which can assume the values |t|, |c| or |b|. However, the default value is not +% which can assume the values |t|, |c| or |b|. However, the initial value is not % |c| but |t|. If desired, it's possible to have the |c| value as the default % with the command |\WithArrowsOptions{c}| at the beginning of the document. % % @@ -1032,7 +1032,7 @@ version 2005/12/01 or later. % % \smallskip % A command |\Arrow| in |code-after| takes three arguments : -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item a specification of the start row of the arrow ; % \item a specification of the end row of the arrow ; % \item the label of the arrow. @@ -1095,7 +1095,7 @@ version 2005/12/01 or later. % \end{WithArrows}$ % % \bigskip -% The options allowed for a command |\Arrow| in |code-after| are : |ll|, |lr|, +% The options allowed for a command |\Arrow| in |code-after| are: |ll|, |lr|, % |rl|, |rr|, |v|, |xoffset|, |tikz| and |tikz-code|. Except |v|, which is % specific to |\Arrow| in |code-after|, all these options have their usual % meaning. @@ -1215,7 +1215,7 @@ version 2005/12/01 or later. % \medskip % The package \pkg{witharrows} provides some tools facilitating the use of these % nodes: -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item the command |\WithArrowsLastEnv| gives the number of the last % environment of level~$0$ (\emph{i.e.} which is not included in another % environment of the package \pkg{witharrows}); @@ -1372,7 +1372,7 @@ version 2005/12/01 or later. % & = a^2 + 2a + 1 \tag{$\star$} \label{my-equation} % \end{DispWithArrows} % A link to the equation \ref{my-equation}.\footnote{In this document, the -% references has been customized with |\labelformat{equation}{(#1)}|} +% references have been customized with |\labelformat{equation}{(#1)}| in the preamble.} % % % \medskip @@ -1434,7 +1434,7 @@ version 2005/12/01 or later. % With the option |fleqn|, the environment is composed flush left (in a way % similar to the option |fleqn| of the standard classes of LaTeX). In this case, % the left margin can be controlled with the option |mathindent| (with a name -% inspired by the parameter |\mathindent| of standard LaTeX). The default value +% inspired by the parameter |\mathindent| of standard LaTeX). The initial value % of this parameter is 25~pt. % % \begin{Verbatim} @@ -1449,7 +1449,7 @@ version 2005/12/01 or later. % \end{DispWithArrows} % % \medskip -% \emph{Remark} : By design, the option |fleqn| of \pkg{witharrows} is +% \emph{Remark}: By design, the option |fleqn| of \pkg{witharrows} is % independent of the option |fleqn| of LaTeX. Indeed, since the environments of % \pkg{witharrows} are meant to be used with arrows on the right side, the user % may want to use \pkg{witharrows} with the option |fleqn| (in order to have @@ -1467,12 +1467,12 @@ version 2005/12/01 or later. % If the package \pkg{amsmath} is loaded, it's possible to use the command % |\intertext| in the environments |{DispWithArrows}|. It's also possible to use % the environment |{subequations}|. However, there is, for the environments -% |{DispWithArrows}| an option |subequations| to encapsulate the environment in +% |{DispWithArrows}|, an option |subequations| to encapsulate the environment in % an environment |{subequations}|. % % \medskip % In the following example, the key |{subequations}| is fixed by the command -% |\WithArrowsOptions|. Each environment |{DispWithArrows}| will subnumerated +% |\WithArrowsOptions|. Each environment |{DispWithArrows}| will be subnumerated % (in the scope of the |\WithArrowsOptions|) % \begin{Verbatim} % ~emphase#\WithArrowsOptions{subequations}@ @@ -1616,7 +1616,7 @@ version 2005/12/01 or later. % (in fact, it's possible to use \pkg{witharrows} without \pkg{amsmath}). % % There are differences between |{DispWithArrows}| and |{align}|. -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item The environment |{DispWithArrows}| cannot be inserted in an environment % |{gather}| of \pkg{amsmath}. % \item An environment |{DispWithArrows}| is always unbreakable (even with @@ -1688,10 +1688,10 @@ version 2005/12/01 or later. % % \interitem % In the following example, we subnumerate the equations with the option -% |subnumerate| (available when the package \pkg{amsmath} is loaded). +% |subequations| (available when the package \pkg{amsmath} is loaded). % % \begin{Verbatim} -% \begin{DispWithArrows}~emphase#< \label{system} (\ref*{system}) \Leftrightarrow >@[ +% \begin{DispWithArrows}~emphase#< \label{system} \ref*{system} \Leftrightarrow >@[ % format = l, subequations ] % x+y+z = -3 \Arrow[tikz=-,jump=2]{3 equations} \\ % xy+xz+yz=-2 \\ @@ -1699,7 +1699,7 @@ version 2005/12/01 or later. % \end{DispWithArrows} % \end{Verbatim} % % -% \begin{DispWithArrows}< \label{system} (\ref*{system}) \Leftrightarrow >[ +% \begin{DispWithArrows}< \label{system} \ref*{system} \Leftrightarrow >[ % format = l, subequations] % x+y+z = -3 \Arrow[tikz=-,jump=2]{3 equations} \\ % xy+xz+yz=-2 \\ @@ -1708,7 +1708,7 @@ version 2005/12/01 or later. % % % \bigskip -% The whole system is the equation \eqref{system} (this reference has been coded +% The whole system is the equation \ref{system} (this reference has been coded % by |\ref{system}|) whereas the last equation is the equation % \ref{last-equation} (this reference has been coded by % |\ref{last-equation}|). The command |\ref*| used in the code above is @@ -1748,7 +1748,7 @@ version 2005/12/01 or later. % % \medskip % The version of \pkg{witharrows} for plain-TeX doesn't provide all the -% functionnlities of the LaTeX version. In particular, the funcionnalities which +% functionnalities of the LaTeX version. In particular, the functionnalities which % deal with the number of the equations are not available (since they rely upon % the system of tags of LaTeX). % @@ -1857,11 +1857,11 @@ version 2005/12/01 or later. % \medskip % We first explain the behaviour when the parameters |start-adjust| and % |end-adjust| are equal to zero: -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item the option |ystart| sets the vertical distance between the base line of -% the text and the start of the arrow (default value: 0.4 ex); +% the text and the start of the arrow (initial value: 0.4 ex); % \item the option |ygap| sets the vertical distance between two consecutive -% arrows (default value: 0.4~ex). +% arrows (initial value: 0.4~ex). % \end{itemize} % % @@ -1911,7 +1911,7 @@ version 2005/12/01 or later. % % \bigskip % Here is the standard behaviour since version 1.13 (the parameters -% |start-adjust| and |end-ajust| are used with the default value $0.4$~ex). The +% |start-adjust| and |end-ajust| are used with the initial value $0.4$~ex). The % arrow is longer and the result is more aesthetic. % % \medskip @@ -1929,8 +1929,8 @@ version 2005/12/01 or later. % Since the version 2.1 of \pkg{witharrows}, an arrow of |jump| equal to~$1$ has % a maximal length\footnote{We call \emph{length} of an arrow the difference % between the $y$-value of its start point and the $y$~value of its end point.} -% equal to the parameter |max-length-of-arrow|. The default value of this -% parameter est $2$~cm. +% equal to the parameter |max-length-of-arrow|. The initial value of this +% parameter is $2$~cm. % % In the following example, the value of |max-length-of-arrow| has been fixed to % $1.5$~cm. @@ -1949,7 +1949,7 @@ version 2005/12/01 or later. % $L_2 \gets L_2-L_1$ \\ % $L_3 \gets L_3-L_1$ \\ % $L_4 \gets L_4-L_1$ \\ -% $L_5 \gets L_5-L_1$ % don't put \\ ici +% $L_5 \gets L_5-L_1$ % don't put \\ here % } \\ % & = % \begin{vmatrix} @@ -2423,14 +2423,12 @@ version 2005/12/01 or later. % |expl3| code fails.\footnote{cf. % |tex.stackexchange.com/questions/57424/using-of-usetikzlibrary-in-an-expl3-package-fails|} % -% \begin{macrocode} -%<@@=wa> -% \end{macrocode} +% <@@=witharrows> % % \begin{macrocode} %<*LaTeX> \RequirePackage{tikz} -\RequirePackage{expl3}[2019/02/15] +\RequirePackage{expl3}[2019/07/01] % %<*plain-TeX> \input tikz.tex @@ -2457,7 +2455,7 @@ version 2005/12/01 or later. % |{WithArrows}|, |{DispWithArrows}|, |{DispWithArrows*}| and the commands % |\Arrow|, |\WithArrowsOptions| and |\WithArrowsNewStyle|. % \begin{macrocode} -\RequirePackage { xparse } [ 2018-10-17 ] +\RequirePackage { xparse } [ 2019-01-01 ] % % \end{macrocode} % @@ -2955,10 +2953,10 @@ version 2005/12/01 or later. % \bigskip % In the |\halign| of an environment |{WithArrows}| or |{DispWithArrows}|, we % will have to use four counters: -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item |\g_@@_arrow_int| to count the arrows created in the environment ; % \item |\g_@@_line_int| to count the lines of the |\halign| ; -% \item |\g_@@_col_int| to count the column of the |\halign|. +% \item |\g_@@_col_int| to count the columns of the |\halign|. % \end{itemize} % % @@ -2975,13 +2973,23 @@ version 2005/12/01 or later. \seq_new:N \g_@@_col_int_seq \int_new:N \g_@@_col_int % \end{macrocode} +% +% We will also use a ``static'' version of the counter of columns, called +% |\g_@@_static_col_int|. The value will be set directly in each cell of the +% array by an instruction in the template of the |\halign|. The aim of this +% programmation is to try to detect some utilisation of |\omit| (which should be +% forbidden) in the cells of the |\halign|. +% \begin{macrocode} +\seq_new:N \g_@@_static_col_int_seq +\int_new:N \g_@@_static_col_int +% \end{macrocode} % % % \bigskip % For the environment |{DispWithArrows}|, the comma list |\l_@@_tags_clist| will % be the list of the numbers of lines to be tagged (with the counter |equation| % of LaTeX). In fact, |\l_@@_tags_clist| may contain non negative integers but -% also three special values, |first|, |last| and |all|. +% also three special values: |first|, |last| and |all|. % \begin{macrocode} %<*LaTeX> \clist_new:N \l_@@_tags_clist @@ -3005,7 +3013,7 @@ version 2005/12/01 or later. % \bigskip % If the user has given a value for the option |command-name| (at the global or % at the \emph{environment} level), a command with this name is defined locally -% in the environment with meaning |\@@_Arrow|. The default value of the option +% in the environment with meaning |\@@_Arrow|. The initial value of the option % |command-name| is ``|Arrow|'' and thus, by default, the name of the command % will be |\Arrow|. % \begin{macrocode} @@ -3071,7 +3079,7 @@ version 2005/12/01 or later. % \end{macrocode} % % \bigskip -% The option boolean corresponds to the option |subequations|. +% The option |\l_@@_subequations_bool| corresponds to the option |subequations|. % \begin{macrocode} %<*LaTeX> \bool_new:N \l_@@_subequations_bool @@ -3082,7 +3090,7 @@ version 2005/12/01 or later. % \subsection{The definition of the options} % % There are four levels where options can be set: -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item with |\usepackage[...]{witharrows}|: this level will be called % \emph{package} level; % \item with |\WithArrowsOptions{...}|: this level will be called \emph{global} @@ -3856,9 +3864,9 @@ version 2005/12/01 or later. % \end{macrocode} % % -% The initialization of the counters |\g_@@_arrow_int|, |\g_@@_line_int| and -% |\g_@@_col_int|. However, we have to save their previous values with the -% stacks created for this end. +% The initialization of the counters |\g_@@_arrow_int|, |\g_@@_line_int|, +% |\g_@@_col_int| and |\g_@@_static_col_int|. However, we have to save their +% previous values with the stacks created for this end. % \begin{macrocode} \seq_gput_right:NV \g_@@_arrow_int_seq \g_@@_arrow_int \int_gzero:N \g_@@_arrow_int @@ -3866,6 +3874,8 @@ version 2005/12/01 or later. \int_gzero:N \g_@@_line_int \seq_gput_right:NV \g_@@_col_int_seq \g_@@_col_int \int_gzero:N \g_@@_col_int + \seq_gput_right:NV \g_@@_static_col_int_seq \g_@@_static_col_int + \int_gzero:N \g_@@_static_col_int % \end{macrocode} % % In the preamble of the |\halign|, there will be \emph{two} counters of the @@ -3875,15 +3885,12 @@ version 2005/12/01 or later. % is a third column in the environment), we will have the following instructions : % \begin{Verbatim} % \int_gincr:N \g_~@~@_col_int -% \int_gset:Nn \g_~@~@_static_col_int 3 +% \int_set:Nn \g_~@~@_static_col_int 3 % \end{Verbatim} % The counter |\g_@@_col_int| is incremented dynamically and the second is % static. If the user has used a command |\omit|, the dynamic incrementation is -% not done in the cell and, at this end of the row, the difference between the +% not done in the cell and, at the end of the row, the difference between the % counters may infer the presence of |\omit| at least once. -% \begin{macrocode} - \int_gzero_new:N \g_@@_static_col_int -% \end{macrocode} % % \bigskip % We also have to update the position on the nesting tree. @@ -3924,14 +3931,14 @@ version 2005/12/01 or later. % % \medskip % The counter |\l_@@_jump_int| corresponds to the option |jump|. Now, we set the -% default value for this option. +% initial value for this option. % \begin{macrocode} \int_set:Nn \l_@@_jump_int \c_one_int % \end{macrocode} % % \medskip % The string |\l_@@_format_str| corresponds to the option |format|. Now, we set -% the default value for this option. +% the initial value for this option. % \begin{macrocode} \str_set:Nn \l_@@_format_str { rl } % \end{macrocode} @@ -4004,7 +4011,7 @@ version 2005/12/01 or later. % % \medskip % Be careful! The following counter |\g_@@_col_int| will be used for two usages: -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item during, the construction of the preamble of the |\halign|, it will be % used as counter for the number of the column under construction in the % preamble (since the preamble is constructed backwards, |\g_@@_col_int| will go @@ -4082,7 +4089,7 @@ version 2005/12/01 or later. % % Several important points must be noted concerning that construction of the % preamble. -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item The construction of the preamble is done by reading backwards the % format |\l_@@_format_str| and adding the corresponding tokens in the input % stream of TeX. That means that the part of the preamble concerning the last @@ -4379,8 +4386,17 @@ version 2005/12/01 or later. \cs_set:Npn \WithArrowsRightX { \g_@@_right_x_dim } % \end{macrocode} % +% \bigskip +% We use |\normalbaselines| of plain-TeX because we have used +% |\spread@equation| (of \pkg{amsmath} or defined directly if \pkg{amsmath} is +% not loaded) and you don't want |\spread@equation| to have effects in the +% labels of the arrows. +% \begin{macrocode} + \normalbaselines +% \end{macrocode} +% % \bigskip -% It there is really arrows in the environment, we draw the arrows. +% If there is really arrows in the environment, we draw the arrows. % \begin{macrocode} \int_compare:nNnT \g_@@_arrow_int > 0 { @@ -4444,7 +4460,7 @@ version 2005/12/01 or later. % % \bigskip % Finally, we restore the previous values of the counters |\g_@@_arrow_int|, -% |\g_@@_line_int| and |\g_@@_col_int|. It is recalled that we manage three +% |\g_@@_col_int| and |\g_@@_static_col_int|. It is recalled that we manage four % stacks in order to be able to do such a restoration. % \begin{macrocode} \seq_gpop_right:NN \g_@@_arrow_int_seq \l_tmpa_tl @@ -4453,6 +4469,8 @@ version 2005/12/01 or later. \int_gset:Nn \g_@@_line_int \l_tmpa_tl \seq_gpop_right:NN \g_@@_col_int_seq \l_tmpa_tl \int_gset:Nn \g_@@_col_int \l_tmpa_tl + \seq_gpop_right:NN \g_@@_static_col_int_seq \l_tmpa_tl + \int_gset:Nn \g_@@_static_col_int \l_tmpa_tl } % \end{macrocode} % That's the end of the command |\@@_post_halign:|. @@ -4699,7 +4717,7 @@ version 2005/12/01 or later. { \exp_args:NV \str_if_eq:nnT \l_@@_type_env_str { #2 } { - \@@_warning:n { newline~at~the~end~of~env } + \@@_error:n { newline~at~the~end~of~env } \group_begin: \globaldefs = 1 \@@_msg_redirect_name:nn { newline~at~the~end~of~env } { none } @@ -5300,7 +5318,7 @@ version 2005/12/01 or later. % % \bigskip % The arrows are divided in groups. There is two reasons for this division. -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item If the option |group| or the option |groups| is used, all the arrows of % a group are drawn on a same vertical at an abscissa of |\l_@@_x_dim|. % \item For aesthetic reasons, the starting point of all the starting arrows of @@ -5742,7 +5760,7 @@ version 2005/12/01 or later. % \bigskip % We compute and store in |\g_tmpa_tl| and |\g_tmpb_tl| the exact coordinates of % the extremities of the arrow. -% \begin{itemize} +% \begin{itemize}[beginpenalty=10000] % \item Concerning the % $x$-values, the abscissa computed in |\l_@@_x_dim| will be used if the option % of position is |i|, |group| or |groups|. @@ -6365,7 +6383,8 @@ version 2005/12/01 or later. { The~environments~of~witharrows~(\{WithArrows\}~and~ \{DispWithArrows\})~should~not~end~by~\token_to_str:N \\.\\ - This~warning~might~become~an~error~in~a~future~version. + However,~you~can~go~on~for~this~time.~No~similar~error~will~be~ + raised~in~this~document. } % % \end{macrocode} @@ -7127,12 +7146,18 @@ version 2005/12/01 or later. % A version of \pkg{witharrows} is available for plain-TeX. % % -% \subsection*{Changes between 2.0 and 2.1 } +% \subsection*{Changes between 2.0 and 2.1} % % Option |max-length-of-arrow|. % % Validation with regular expression for the first argument of |\MultiArrow|. % +% \subsection*{Changes between 2.1 and 2.2} +% +% Addition of |\normalbaselines| at the beginning of |\@@_post_halign:|. +% +% The warning for an environment ending by |\\| has been transformed in |error|. +% % \PrintIndex % % \tableofcontents diff --git a/macros/generic/witharrows/witharrows.pdf b/macros/generic/witharrows/witharrows.pdf index 425dab200f..eb25c91d02 100644 Binary files a/macros/generic/witharrows/witharrows.pdf and b/macros/generic/witharrows/witharrows.pdf differ diff --git a/macros/latex/contrib/alphalph/README.md b/macros/latex/contrib/alphalph/README.md new file mode 100644 index 0000000000..994f0a7fc5 --- /dev/null +++ b/macros/latex/contrib/alphalph/README.md @@ -0,0 +1,9 @@ +# alphalph + +alphalph package for LaTeX + + +The package provides methods to represent numbers with a limited +set of symbols. Both LaTeX and plain TeX are supported. + + diff --git a/macros/latex/contrib/alphalph/alphalph.dtx b/macros/latex/contrib/alphalph/alphalph.dtx new file mode 100644 index 0000000000..abff74de87 --- /dev/null +++ b/macros/latex/contrib/alphalph/alphalph.dtx @@ -0,0 +1,1535 @@ +% \iffalse meta-comment +% +% File: alphalph.dtx +% Version: 2019/12/09 v2.6 +% Info: Convert numbers to letters +% +% Copyright (C) +% 1999, 2006-2008, 2010, 2011 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/alphalph/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/alphalph/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 alphalph.dtx +% and the derived files +% alphalph.sty, alphalph.pdf, alphalph.ins, alphalph.drv, +% alphalph-test1.tex, alphalph-test2.tex, alphalph-test3.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/alphalph/alphalph.dtx +% CTAN:macros/latex/contrib/alphalph/alphalph.pdf +% +% Unpacking: +% (a) If alphalph.ins is present: +% tex alphalph.ins +% (b) Without alphalph.ins: +% tex alphalph.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{alphalph.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If alphalph.drv is present: +% latex alphalph.drv +% (b) Without alphalph.drv: +% latex alphalph.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 alphalph.dtx +% makeindex -s gind.ist alphalph.idx +% pdflatex alphalph.dtx +% makeindex -s gind.ist alphalph.idx +% pdflatex alphalph.dtx +% +% Installation: +% TDS:tex/generic/alphalph/alphalph.sty +% TDS:doc/latex/alphalph/alphalph.pdf +% TDS:source/latex/alphalph/alphalph.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: alphalph 2019/12/09 v2.6 Convert numbers to letters (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: alphalph +Version: 2019/12/09 v2.6 + +Copyright (C) + 1999, 2006-2008, 2010, 2011 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/alphalph/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 alphalph.dtx +and the derived files + alphalph.sty, alphalph.pdf, alphalph.ins, alphalph.drv, + alphalph-test1.tex, alphalph-test2.tex, alphalph-test3.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{alphalph.ins}{\from{alphalph.dtx}{install}}% + \file{alphalph.drv}{\from{alphalph.dtx}{driver}}% + \usedir{tex/generic/alphalph}% + \file{alphalph.sty}{\from{alphalph.dtx}{package}}% +} + +\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{* alphalph.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `alphalph.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{alphalph.drv}% + [2019/12/09 v2.6 Convert numbers to letters (HO)]% +\documentclass{ltxdoc} +\usepackage{alphalph}[2019/12/09] +\makeatletter +\newalphalph{\fnsymbolwrap}[wrap]{\@fnsymbol}{} +\newcommand*{\fnsymbolsingle}[1]{% + \ensuremath{% + \ifcase#1% + \or *% + \or \dagger + \or \ddagger + \or \mathsection + \or \mathparagraph + \else + \@ctrerr + \fi + }% +} +\makeatother +\newalphalph{\fnsymbolmult}[mult]{\fnsymbolsingle}{} +\usepackage{amsmath} +\DeclareMathOperator{\opDiv}{div} +\DeclareMathOperator{\opMod}{mod} +\newcommand*{\Def}{% + \ensuremath{% + \mathrel{\mathop{:}}=% + }% +} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{alphalph.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{alphalph.drv} +% +% \title{The \xpackage{alphalph} package} +% \date{2019/12/09 v2.6} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/alphalph/issues}}} +% +% \maketitle +% +% \begin{abstract} +% The package provides methods to represent numbers with a limited +% set of symbols. Both \hologo{LaTeX} and \hologo{plainTeX} are supported. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% \hologo{LaTeX} counters can be represented in different ways +% by using presentation commands: +% \begin{quote} +% \cs{arabic}, \cs{roman}, \cs{Roman},\\ +% \cs{alph}, \cs{Alph}, \cs{fnsymbol} +% \end{quote} +% The ranges of supported counter values are more or less +% restricted. Only \cs{arabic} can be used with any counter +% value \hologo{TeX} supports. +% \begin{quote} +% \catcode`\|=12 % +% \begin{tabular}{@{}l|l|l|l@{}} +% Presentation & Supported & Ignored & Error message\\ +% command & domain & values & ``Counter too large''\\ +% \hline +% \cs{arabic} +% & \ttfamily -MAX..MAX & &\\ +% \cs{roman}, \cs{Roman} +% & \ttfamily 1..MAX & \ttfamily -MAX..0 &\\ +% \cs{alph}, \cs{Alph} +% & \ttfamily 1..26 & 0 & \ttfamily -MAX..-1, 27..MAX\\ +% \cs{fnsymbol} +% & \ttfamily 1..9 & 0 & \ttfamily -MAX..-1, 10..MAX\\ +% \hline +% \end{tabular}\\[1ex] +% \texttt{MAX} = \texttt{2147483647} +% \end{quote} +% Ordinal numbers are often used in documents: numbering +% of chapters, sections, figures, footnotes and so on. +% The layouter chooses \cs{Alph} for chapter numbers +% and \cs{fnsymbol} for footnotes. But what can be done +% if there are more than 26 chapters or more than 10 footnotes? +% This package \xpackage{alphalph} allows to define new +% presentation commands. They rely on a existing command +% and define presentations for values greater the limits. +% Three different methods are provided by the package. +% In the following use cases they are presentated. +% +% \subsection{Use cases} +% +% \subsubsection{Number system based on symbols} +% +% Asume you are writing a book and your lecturer demands +% that chapter numbers must be letters. But you have already +% 30 chapters and you have only 26 letters? +% +% In the decimal system the situation would be clear. +% If you run out of digits, you are using more digits +% to represent a number. This method can be also be used +% for letters. After chapter 26 with |Z| we us |AA|, |AB|, |AC|, and |AD| +% for the remaining chapters. +% +% Happily this package already defines this presentation command: +%\begin{quote} +%\begin{verbatim} +%\usepackage{alphalph} +%\renewcommand*{\thechapter}{% +% \AlphAlph{\value{chapter}}% +%} +%\end{verbatim} +%\end{quote} +% \cs{AlphAlph} generates: +% \AlphAlph{1}, \AlphAlph{2}, \AlphAlph{3}, \dots, +% \AlphAlph{26}, \AlphAlph{27}, \AlphAlph{28}, \dots +% +% The other presentation command is \cs{alphalph} for lowercase letters. +% +% \subsubsection{Wrap symbols around} +% +% Nine footnote symbols are quite a few. +% Too soon the symbols are consumed +% and \hologo{LaTeX} complains with the error ``Counter too large''. +% However, it could be acceptable to start again with the symbols +% from the beginning, especially if there are less than nine symbols +% on a page. +% This could be achieved by a counter reset. +% But finding the right place can be difficult or needs manual +% actions. Also a +% unique counter value can be desirable (e.g. for generating +% unique anchor/link names). +% Package \xpackage{alphalph} allows you to define +% a macro that implements a ``wrap around'', but letting +% the value of the counter untouched: +%\begin{quote} +%\begin{verbatim} +%\usepackage{alphalph} +%\makeatletter +%\newalphalph{\fnsymbolwrap}[wrap]{\@fnsymbol}{} +%\makeatother +%\renewcommand*{\thefootnote}{% +% \fnsymbolwrap{\value{footnote}}% +%} +%\end{verbatim} +%\end{quote} +% \cs{fnsymbolwrap} generates: +% \fnsymbolwrap{1}~(1), \fnsymbolwrap{2}~(2), \fnsymbolwrap{3}~(3), \dots, +% \fnsymbolwrap{9}~(9), \fnsymbolwrap{10}~(10), \fnsymbolwrap{11}~11, \dots +% +% \subsubsection{Multiple symbols} +% +% \Hologo{LaTeX}'s standard set of footnote symbols contains doubled +% symbols at the higher positions. Could this principle +% be generalized? +% Yes, but first we need a clean footnote symbol list without +% doubled entries, example: +%\begin{quote} +%\begin{verbatim} +%\usepackage{alphalph} +%\makeatletter +%\newcommand*{\fnsymbolsingle}[1]{% +% \ensuremath{% +% \ifcase#1% +% \or *% +% \or \dagger +% \or \ddagger +% \or \mathsection +% \or \mathparagraph +% \else +% \@ctrerr +% \fi +% }% +%} +%\makeatother +%\newalphalph{\fnsymbolmult}[mult]{\fnsymbolsingle}{} +%\renewcommand*{\thefootnote}{% +% \fnsymbolmult{\value{footnote}}% +%} +%\end{verbatim} +%\end{quote} +% The own definition of \cs{fnsymbolsingle} has the +% advantage that this list can easily modified. +% Otherwise you can use \cs{@fnsymbol} directly, +% because it uses the same first five symbols. +%\begin{quote} +%\begin{verbatim} +%\usepackage{alphalph} +%\makeatletter +%\newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5} +%\makeatother +%\renewcommand*{\thefootnote}{% +% \fnsymbolmult{\value{footnote}}% +%} +%\end{verbatim} +%\end{quote} +% \cs{fnsymbolmult} generates: +% \fnsymbolmult{1}~(1), \fnsymbolmult{2}~(2), \fnsymbolmult{3}~(3), +% \fnsymbolmult{4}~(4), \fnsymbolmult{5}~(5), \fnsymbolmult{6}~(6), +% \dots, \fnsymbolmult{16}~16, \fnsymbolmult{17}~17, \dots +% +% \bigskip +% The same method can also be used for the chapter problem +% in the first discussed use case: +%\begin{quote} +%\begin{verbatim} +%\usepackage{alphalph} +%\makeatletter +%\newalphalph{\AlphMult}[mult]{\@Alph}{26} +%\makeatother +%\renewcommand*{\chapter}{% +% \AlphMult{\value{chapter}}% +%} +%\end{verbatim} +%\end{quote} +% \cs{AlphMult} then generates AA, BB, CC, and DD for chapters 27--30. +% +% \subsection{Glossary} +% +% \begin{description} +% \item[Counter presentation command] is a macro that +% expects a \hologo{LaTeX} counter name as argument. +% Numbers cannot be used. Examples: +% \cs{arabic}, \cs{alph}, \cs{fnsymbol}. +% \item[Number presentation command] is a macro that +% expects a number as argument. A number is anything +% that \hologo{TeX} accepts as number including \cs{value}. +% Examples: \cs{alphalph}, \cs{AlphAlph}, \cs{alphalph@alph} +% +% However, \cs{alph} or \cs{fnsymbol} are not number +% presentation commands because they expect a counter +% name as argument. Happily \hologo{LaTeX} counter presentation +% commands internally uses number presentation commands +% with the same name, but prefixed by `@'. Thus +% \cs{@alph}, \cs{@fnsymbol} are number presentation commands. +% \item[Symbols provider] is a command that can be used +% to get a list of symbols. For example, \cs{@Alph} +% provides the 26 uppercase letters from `A' to `Z'. +% Basically a symbol provider is a number presentation +% command, usually with a limited range. +% \item[Number of symbols] is the number of the +% last symbol slot of a symbol provider. Thus \cs{@Alph} +% generates 26 symbols, \cs{@fnsymbol} provides 9 symbols. +% \end{description} +% +% \subsection{Package usage} +% +% The package \Package{alphalph} can be used with both \hologo{plainTeX} +% and \hologo{LaTeX}: +% \begin{description} +% \item[\hologo{plainTeX}:] |\input alphalph.sty| +% \item[\hologo{LaTeX2e}:] |\usepackage{alphalph}|\\ +% There aren't any options. +% \end{description} +% +% \subsection{User commands} +% +% \begin{declcs}{AlphAlph} \M{number}\\ +% \cs{alphalph} \M{number} +% \end{declcs} +% Both macros are number presentation commands that +% expects a number as argument. \hologo{LaTeX} counters +% are used with \cs{value}. +% +% The macros represents a number by letters. +% First single letters |A..Z| are used, then +% two letters |AA..ZZ|, three letters |AAA...ZZZ|, \dots +% follow. +% +% Macro \cs{AlphAlph} uses uppercase letters, +% \cs{alphalph} generates the lowercase variant. +% \begin{quote} +% \catcode`\|=12 +% \def\entry#1{ +% \texttt{#1} +% & \texttt{\AlphAlph{#1}} +% & \texttt{\alphalph{#1}} +% } +% \begin{tabular}{@{}l|l|l@{}} +% \meta{number} & \verb|\AlphAlph{|\meta{number}\verb|}| +% & \verb|\alphalph{|\meta{number}\verb|}|\\ +% \hline +% \entry{1}\\ +% \entry{2}\\ +% \entry{26}\\ +% \entry{27}\\ +% \entry{30}\\ +% \entry{2000}\\ +% \entry{3752127}\\ +% \entry{10786572}\\ +% \entry{2147483647}\\ +% \end{tabular} +% \end{quote} +% +% \begin{declcs}{newalphalph} +% \M{cmd} +% |[|\meta{method}|]| +% \M{symbols provider} +% \M{number of symbols} +% \end{declcs} +% Macro \cs{newalphalph} defines \meta{cmd} as new +% number presentation command. Like \cs{newcommand} an error +% is thrown, if macro \meta{cmd} already exists. +% +% The \meta{method} is one of |alph|, |wrap|, or |mult|. +% The default is |alph|. +% +% As symbol provider a number presentation command +% can be used, e.g. \cs{@fnsymbol}, \cs{@Alph}, or +% \cs{alphalph@alph}. +% +% The last argument is the number of symbols. +% If the argument is empty, then \cs{newalphalph} tries +% to find this number itself. \hologo{LaTeX}'s number presentation +% commands throw an error message, if the number is too large. +% This error message is put in a macro \cs{@ctrerr}. +% Thus \cs{newalphalph} calls the symbol provider and tests +% a number by typesetting it in a temporary box. The error +% macro \cs{@ctrerr} is catched, it proofs that the number +% is not supported. Also if the width of the result is zero +% the number is considered as unavailable. +% +% The empty argument is useful for potentially variable lists. +% However if the end cannot be detected, then the number of +% symbols must be given. This is also a lot faster. Therefore don't +% let the argument empty without reason. +% +% \subsection{Programmer commands} +% +% \begin{declcs}{alphalph@Alph} \M{number}\\ +% \cs{alphalph@alph} \M{number} +% \end{declcs} +% They are basically the same as \cs{@Alph} and \cs{@alph}. +% Some languages of package \xpackage{babel} redefine +% \hologo{LaTeX}'s macros to include some font setup that +% breaks expandibility. Therefore \cs{AlphAlph} and \cs{alphalph} +% are based on \cs{alphalph@Alph} and \cs{alphalph@alph} to get +% the letters. The behaviour of these symbol providers for numbers +% outside the range |1..26| is undefined. +% +% \subsection{Design principles} +% +% \subsubsection{Number presentation commands} +% +% All number presentation commands that this package defines +% (including \cs{alphalph} and \cs{AlphAlph}) have the following +% properties: +% \begin{itemize} +% \item They are fully expandable. This means that they can safely +% \begin{itemize} +% \item be written to a file, +% \item used in moving arguments (\hologo{LaTeX}: they are \emph{robust}), +% \item used in a \cmd{\csname}-\cmd{\endcsname} pair. +% \end{itemize} +% \item If the argument is zero or negative, the commands expand +% to nothing like \cmd{\romannumeral}. +% \item The argument is a \hologo{TeX} number. Anything that would be +% accepted by \cmd{\number} is a valid argument: +% \begin{itemize} +% \item explicite constants, +% \item macros that expand to a number, +% \item count registers, \hologo{LaTeX} counter can used +% via \cmd{\value}, e.\,g.:\\ +% |\alphalph{\value{page}}| +% \item \dots +% \end{itemize} +% \item \hologo{eTeX}'s numeric expressions are supported, if \hologo{eTeX} is +% available. Then \cs{numexpr} is applied to the argument. +% Package \cs{calc}'s expressions are not supported. +% That would violate the expandibility. +% \end{itemize} +% +% \subsubsection{General usability} +% +% \begin{description} +% \item[\hologo{TeX} format:] +% The package does not depend on \hologo{LaTeX}, it can also be used +% by \hologo{plainTeX}, for example. +% \item[\hologo{eTeX}:] \eTeX is supported, the macros are shorter and +% faster. But \eTeX's extensions are not requirements. +% Without \hologo{eTeX}, just the implementation changes. The properties +% remain unchanged. +% \end{description} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% \subsection{Begin\texorpdfstring{ of package}{}} +% \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@alphalph.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{alphalph}{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@alphalph.sty\endcsname +\ProvidesPackage{alphalph}% + [2019/12/09 v2.6 Convert numbers to letters (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 AlPh@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\AlPh@AtEnd{% + \AlPh@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{33}{12}% ! +\TMP@EnsureCode{39}{12}% ' +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{43}{12}% + +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{59}{12}% ; +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\TMP@EnsureCode{96}{12}% ` +\TMP@EnsureCode{124}{12}% | +\edef\AlPh@AtEnd{\AlPh@AtEnd\noexpand\endinput} +% \end{macrocode} +% +% \subsection{Package loading} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax + \input intcalc.sty\relax +\else + \RequirePackage{infwarerr}[2007/09/09]% + \RequirePackage{intcalc}[2007/09/09]% +\fi +% \end{macrocode} +% +% \subsection{\hologo{eTeX} detection} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname numexpr\endcsname\relax + \catcode124=9 % '!': ignore + \catcode43=14 % '+': comment +\else + \catcode124=14 % '!': comment + \catcode43=9 % '+': ignore +\fi +% \end{macrocode} +% +% \subsection{Help macros} +% +% \begin{macro}{\AlPh@Error} +% \begin{macrocode} +\def\AlPh@Error#1{% + \begingroup + \escapechar=92 % backslash + \@PackageError{alphalph}{#1}\@ehc + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AlPh@IfDefinable} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname @ifdefinable\endcsname\relax + \def\AlPh@IfDefinable#1#2{% + \ifcase\ifx#1\@undefined\else\ifx#1\relax\else1\fi\fi0 % + #2% + \else + \AlPh@Error{% + Command \string#1 already defined% + }% + \fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\else +% \end{macrocode} +% \begin{macro}{\AlPh@IfDefinable} +% \begin{macrocode} + \let\AlPh@IfDefinable\@ifdefinable +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \begin{macro}{\@ReturnAfterElseFi} +% \begin{macro}{\@ReturnAfterFi} +% The following commands moves the `then' and `else' part respectively +% behind the |\if|-construct. This prevents a too deep |\if|-nesting +% and so a \hologo{TeX} capacity error because of a limited input stack size. +% I use this trick in several packages, so I don't prefix these internal +% commands in order not to have the same macros with different names. +% (It saves memory.) +% \begin{macrocode} +\long\def\@ReturnAfterElseFi#1\else#2\fi{\fi#1} +\long\def\@ReturnAfterFi#1\fi{\fi#1} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@gobblefour} +% \Hologo{LaTeX} defines commands for eating arguments. +% Define \cs{@gobblefour} if it is not defined (\hologo{plainTeX}). +% \begin{macrocode} +\expandafter\ifx\csname @gobblefour\endcsname\relax + \long\def\@gobblefour#1#2#3#4{}% +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{AlPh@IfOptArg} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname kernel@ifnextchar\endcsname\relax + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname @ifnextchar\endcsname\relax + \def\AlPh@IfOptArg#1#2{% + \def\AlPh@TempA{#1}% + \def\AlPh@TempB{#2}% + \futurelet\AlPh@Token\AlPh@IfOptArgNext + }% + \let\AlPh@BracketLeft=[%] + \def\AlPh@IfOptArgNext{% + \ifx\AlPh@Token\AlPh@BracketLeft + \expandafter\AlPh@TempA + \else + \expandafter\AlPh@TempB + \fi + }% + \else + \def\AlPh@IfOptArg{\@ifnextchar[}%] + \fi +\else + \def\AlPh@IfOptArg{\kernel@ifnextchar[}%] +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Symbol provider} +% +% \subsubsection{Alphabet} +% +% The output of \cs{alphalph} and \cs{AlphAlph} should be +% usable as part of command names (see \cs{@namedef}, \cs{csname}, \dots). +% Unhappily some languages of package \xpackage{babel} +% redefine \hologo{LaTeX}'s \cs{@alph} and \cs{@Alph} in a manner that +% they cannot be used in expandable context any more. +% Therefore package \xpackage{alphalph} provides its own +% commands. +% +% \begin{macro}{\alphalph@Alph} +% \begin{macro}{\alphalph@alph} +% The two commands \cmd{\AlPh@Alph} and \cmd{\AlPh@alph} convert a +% number into a letter (uppercase and lowercase respectivly). +% The character |@| is used as an error symbol, +% if the number isn't in the range of 1 until 26. +% Here we need no space after the number |#1|, because the error +% symbol |@| for the zero case stops scanning the number. +% This error symbol should not appear anywhere (except for bugs). +% \begin{macrocode} +\def\alphalph@Alph#1{% + \ifcase#1% + @% + \or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M% + \or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z% + \else + \AlPh@ctrerr + @% + \fi +} +\def\alphalph@alph#1{% + \ifcase#1% + @% + \or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m% + \or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z% + \else + \AlPh@ctrerr + @% + \fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\AlPh@ctrerr} +% Macro \cs{AlPh@ctrerr} is used as hook for the algorithm +% to get the available number of symbols. +% \begin{macrocode} +\def\AlPh@ctrerr{} +% \end{macrocode} +% \end{macro} +% +% \subsection{Finding number of symbols} +% +% \begin{macro}{\AlPh@GetNumberOfSymbols} +% \noindent +% |#1|: symbols provider +% \begin{macrocode} +\def\AlPh@GetNumberOfSymbols#1{% + \AlPh@TestNumber1!{#1}% + \ifAlPh@Unavailable + \def\AlPh@Number{0}% + \AlPh@Error{No symbols found}% + \else + \def\AlPh@Number{1}% + \AlPh@ExpSearch2!{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifAlPh@Unavailable} +% \begin{macrocode} +\let\ifAlPh@Unavailable\iffalse +\def\AlPh@Unavailabletrue{% + \global\let\ifAlPh@Unavailable\iftrue +} +\def\AlPh@Unavailablefalse{% + \global\let\ifAlPh@Unavailable\iffalse +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@TestNumber} +% |#1|: number to be tested\\ +% |#2|: symbols provider +% \begin{macrocode} +\def\AlPh@TestNumber#1!#2{% + \AlPh@Unavailablefalse + \begingroup + \setbox0=\hbox{% + \begingroup % color + \let\@ctrerr\AlPh@Unavailabletrue + \let\AlPh@ctrerr\AlPh@Unavailabletrue + #2{#1}% + \endgroup + }% + \ifdim\wd0=0pt % + \AlPh@Unavailabletrue + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@ExpSearch} +% |#1|: number to be tested\\ +% |#2|: symbols provider +% \begin{macrocode} +\def\AlPh@ExpSearch#1!#2{% + \let\AlPh@Next\relax + \AlPh@TestNumber#1!{#2}% + \ifAlPh@Unavailable + \expandafter\AlPh@BinSearch\AlPh@Number!#1!{#2}% + \else + \def\AlPh@Number{#1}% + \ifnum#1>1073741823 % + \AlPh@TestNumber2147483647!{#2}% + \ifAlPh@Unavailable + \AlPh@BinSearch#1!2147483647!{#2}% + \else + \def\AlPh@Number{0}% + \AlPh@Error{% + Maximal symbol number not found% + }% + \fi + \else + \def\AlPh@Next{% + \expandafter\AlPh@ExpSearch\number\intcalcShl{#1}!{#2}% + }% + \fi + \fi + \AlPh@Next +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@BinSearch} +% |#1|: available number\\ +% |#2|: unavailable number, |#2| $>$ |#1|\\ +% |#3|: symbols provider +% \begin{macrocode} +\def\AlPh@BinSearch#1!#2!#3{% + \expandafter\AlPh@ProcessBinSearch + \number\intcalcShr{\intcalcAdd{#1}{#2}}!% + #1!#2!{#3}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@ProcessBinSearch} +% |#1|: number to be tested, |#2| $\leq$ |#1| $\leq$ |#3|\\ +% |#2|: available number\\ +% |#3|: unavailable number\\ +% |#4|: symbols provider +% \begin{macrocode} +\def\AlPh@ProcessBinSearch#1!#2!#3!#4{% + \let\AlPh@Next\relax + \ifnum#1>#2 % + \ifnum#1<#3 % + \AlPh@TestNumber#1!{#4}% + \ifAlPh@Unavailable + \def\AlPh@Next{% + \AlPh@BinSearch#2!#1!{#4}% + }% + \else + \def\AlPh@Next{% + \AlPh@BinSearch#1!#3!{#4}% + }% + \fi + \else + \def\AlPh@Number{#2}% + \fi + \else + \def\AlPh@Number{#2}% + \fi + \AlPh@Next +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Methods} +% +% The names of method macros start with \cs{AlPh@Method}. +% These macros do the main job in converting a number to +% its representation. +% A method command is called with three arguments. +% The first argument is the number of symbols. The +% second argument is the basic macro for converting +% a number with limited number range. The last parameter +% is the number that needs converting. +% +% \subsubsection{Common methods} +% +% \begin{macro}{\AlPh@CheckPositive} +% \noindent +% |#1|: number to be checked +% |#2|: continuation macro\\ +% |#3|: number of symbols (hidden here)\\ +% |#4|: symbol provider (hidden here) +% \begin{macrocode} +\def\AlPh@CheckPositive#1!#2{% + \ifnum#1<1 % + \expandafter\@gobblefour + \fi + #2{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Method `alph'} +% +% \begin{macro}{\AlPh@Method@alph} +% \noindent +% |#1|: number of symbols\\ +% |#2|: symbols provider\\ +% |#3|: number to be converted +% \begin{macrocode} +\def\AlPh@Method@alph#1#2#3{% + \expandafter\AlPh@CheckPositive +| \number#3!% ++ \the\numexpr#3!% + \AlPh@ProcessAlph + {#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@ProcessAlph} +% |#1|: current number\\ +% |#2|: number of symbols\\ +% |#3|: symbols provider +% \begin{macrocode} +\def\AlPh@ProcessAlph#1#2#3{% + \ifnum#1>#2 % + \@ReturnAfterElseFi{% + \expandafter\AlPh@StepAlph\number + \intcalcInc{% + \intcalcMod{\intcalcDec{#1}}{#2}% + }% + \expandafter!\number + \intcalcDiv{\intcalcDec{#1}}{#2}% + !{#2}{#3}% + }% + \else + \@ReturnAfterFi{% + #3{#1}% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@StepAlph} +% |#1|: current last digit\\ +% |#2|: new current number\\ +% |#3|: number of symbols\\ +% |#4|: symbols provider +% \begin{macrocode} +\def\AlPh@StepAlph#1!#2!#3#4{% + \AlPh@ProcessAlph{#2}{#3}{#4}% + #4{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Method `wrap'} +% +% \begin{macro}{\AlPh@Method@wrap} +% \noindent +% |#1|: number of symbols\\ +% |#2|: symbols provider\\ +% |#3|: number to be converted +% \begin{macrocode} +\def\AlPh@Method@wrap#1#2#3{% + \expandafter\AlPh@CheckPositive +| \number#3!% ++ \the\numexpr#3!% + \AlPh@ProcessWrap + {#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AlPh@ProcessWrap} +% |#1|: number to be converted\\ +% |#2|: number of symbols\\ +% |#3|: symbols provider +% \begin{macrocode} +\def\AlPh@ProcessWrap#1#2#3{% + \ifnum#1>#2 % + \@ReturnAfterElseFi{% + \expandafter\AlPh@StepWrap\number + \intcalcInc{\intcalcMod{\intcalcDec{#1}}{#2}}% + !{#3}% + }% + \else + \@ReturnAfterFi{% + #3{#1}% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@StepWrap} +% |#1|: final number\\ +% |#2|: symbols provider +% \begin{macrocode} +\def\AlPh@StepWrap#1!#2{% + #2{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Method `mult'} +% +% After the number of symbols is exhausted, +% repetitions of the symbol are used. +% \begin{gather*} +% x \Def \text{number to be converted}\\ +% n \Def \text{number of symbols}\\ +% r \Def \text{repetition length}\\ +% s \Def \text{symbol slot}\\ +% r = ((x - 1) \div n) + 1\\ +% s = ((x - 1) \mod n) + 1 +% \end{gather*} +% \begin{macro}{\AlPh@Method@mult} +% \noindent +% |#1|: number of symbols\\ +% |#2|: symbols provider\\ +% |#3|: number to be converted +% \begin{macrocode} +\def\AlPh@Method@mult#1#2#3{% + \expandafter\AlPh@CheckPositive +| \number#3!% ++ \the\numexpr#3!% + \AlPh@ProcessMult + {#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AlPh@ProcessMult} +% |#1|: number to be converted\\ +% |#2|: number of symbols\\ +% |#3|: symbols provider +% \begin{macrocode} +\def\AlPh@ProcessMult#1#2#3{% + \ifnum#1>#2 % + \@ReturnAfterElseFi{% + \expandafter\AlPh@StepMult\romannumeral + \intcalcInc{\intcalcDiv{\intcalcDec{#1}}{#2}}% + 000% + \expandafter!\number + \intcalcInc{\intcalcMod{\intcalcDec{#1}}{#2}}% + !{#3}% + }% + \else + \@ReturnAfterFi{% + #3{#1}% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@StepMult} +% |#1#2|: repetitions coded as list of character `m'\\ +% |#3|: symbol slot\\ +% |#4|: symbols provider +% \begin{macrocode} +\def\AlPh@StepMult#1#2!#3!#4{% + \ifx\\#2\\% + \else + \@ReturnAfterFi{% + \AlPh@StepMult#2!#3!{#4}% + }% + \fi + #4{#3}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{User interface} +% +% \begin{macro}{\newalphalph} +% Macro \cs{newalphalph} had three arguments in versions below 2.0. +% For the new method argument we use an optional argument an first +% position.\\ +% |#1|: cmd\\ +% |[#2]|: method name: |alph| (default), |wrap|, |mult|\\ % hash-ok +% |#3|: symbols provider\\ +% |#4|: number of symbols +% \begin{macrocode} +\AlPh@IfDefinable\newalphalph{% + \def\newalphalph#1{% + \AlPh@IfOptArg{% + \AlPh@newalphalph{#1}% + }{% + \AlPh@newalphalph{#1}[alph]% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@newalphalph} +% |#1|: cmd +% |#2|: method name\\ +% |#3|: symbols provider\\ +% |#4|: number of symbols +% \begin{macrocode} +\def\AlPh@newalphalph#1[#2]#3#4{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname AlPh@Method@#2\endcsname\relax + \AlPh@Error{% + Unknown method % +| `#2'% ++ `\detokenize{#2}'% + }% + \else + \ifx\\#4\\% + \AlPh@GetNumberOfSymbols{#3}% + \ifcase\AlPh@Number + \else + \begingroup + \escapechar=92 % backslash + \@PackageInfo{alphalph}{% + Number of symbols for \string#1 is \AlPh@Number + }% + \endgroup + \expandafter\AlPh@NewAlphAlph + \csname AlPh@Method@#2\expandafter\endcsname + \AlPh@Number!{#1}{#3}% + \fi + \else + \expandafter\AlPh@NewAlphAlph + \csname AlPh@Method@#2\expandafter\endcsname +| \number#4!% ++ \the\numexpr#4!% + {#1}{#3}% + \fi + \fi +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AlPh@NewAlphAlph} +% |#1|: method macro\\ +% |#2|: number of symbols\\ +% |#3|: cmd\\ +% |#4|: symbols provider +% \begin{macrocode} +\def\AlPh@NewAlphAlph#1#2!#3#4{% + \AlPh@IfDefinable#3{% + \ifnum#2>0 % + \def#3{#1{#2}{#4}}% + \else + \AlPh@Error{% + Definition of \string#3 failed,\MessageBreak + because number of symbols (#2) is not positive% + }% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AlphAlph} +% \begin{macrocode} +\newalphalph\AlphAlph\alphalph@Alph{26} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\alphalph} +% \begin{macrocode} +\newalphalph\alphalph\alphalph@alph{26} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\AlPh@AtEnd% +% +% \end{macrocode} +% +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{alphalph}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/alphalph/alphalph.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/alphalph/alphalph.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `alphalph' +% 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/alphalph.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{alphalph.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip alphalph.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 alphalph.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@{}} +% alphalph.sty & tex/generic/alphalph/alphalph.sty\\ +% alphalph.pdf & doc/latex/alphalph/alphalph.pdf\\ +% alphalph.dtx & source/latex/alphalph/alphalph.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{alphalph.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 alphalph.dtx +%makeindex -s gind.ist alphalph.idx +%pdflatex alphalph.dtx +%makeindex -s gind.ist alphalph.idx +%pdflatex alphalph.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{1999/03/19 v0.1} +% \item +% The first version was built as a response to a +% \URL{\link{question}}^^A +% {https://groups.google.com/group/comp.text.tex/msg/17a74cd721641038}^^A +% of \NameEmail{Will Douglas}{william.douglas@wolfson.ox.ac.uk} +% and the +% \URL{\link{request}}^^A +% {https://groups.google.com/group/comp.text.tex/msg/8f9768825640315f}^^A +% of \NameEmail{Donald Arsenau}{asnd@reg.triumf.ca}, +% published in the newsgroup +% \href{news:comp.text.tex}{comp.text.tex}: +% \URL{``\link{Re: alph counters \textgreater\ 26}''}^^A +% {https://groups.google.com/group/comp.text.tex/msg/cec563eef8bf65d0} +% \item +% Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) +% \end{Version} +% \begin{Version}{1999/04/12 v1.0} +% \item +% Documentation added in dtx format. +% \item +% \hologo{eTeX} support added. +% \end{Version} +% \begin{Version}{1999/04/13 v1.1} +% \item +% Minor documentation change. +% \item +% First CTAN release. +% \end{Version} +% \begin{Version}{1999/06/26 v1.2} +% \item +% First generic code about \cmd{\ProvidesPackage} improved. +% \item +% Documentation: Installation part revised. +% \end{Version} +% \begin{Version}{2006/02/20 v1.3} +% \item +% Reload check (for \hologo{plainTeX}) +% \item +% New DTX framework. +% \item +% LPPL 1.3 +% \end{Version} +% \begin{Version}{2006/05/30 v1.4} +% \item +% \cs{newalphalph} added. +% \end{Version} +% \begin{Version}{2007/04/11 v1.5} +% \item +% Line ends sanitized. +% \end{Version} +% \begin{Version}{2007/09/09 v2.0} +% \item +% New implementation that uses package \cs{intcalc}. +% This removes the dependency on \hologo{eTeX}. +% \item +% \cs{newalphalph} is extended to support new methods `wrap' and 'multi'. +% \item +% Documentation rewritten. +% \end{Version} +% \begin{Version}{2008/08/11 v2.1} +% \item +% Code is not changed. +% \item +% URLs updated from \texttt{www.dejanews.com} +% to \texttt{groups.google.com}. +% \end{Version} +% \begin{Version}{2010/03/01 v2.2} +% \item +% Compatibility with \hologo{iniTeX}. +% \end{Version} +% \begin{Version}{2010/04/18 v2.3} +% \item +% Documentation fixes (Martin M\"unch). +% \end{Version} +% \begin{Version}{2011/05/13 v2.4} +% \item +% Documentation fixes (Jim Diamond) and using package +% \xpackage{hologo} for the documentation. +% \item +% Catalogue file added. +% \end{Version} +% \begin{Version}{2016/05/16 v2.5} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/09 v2.6} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/alphalph/alphalph.pdf b/macros/latex/contrib/alphalph/alphalph.pdf new file mode 100644 index 0000000000..50c43eb264 Binary files /dev/null and b/macros/latex/contrib/alphalph/alphalph.pdf differ diff --git a/macros/latex/contrib/askinclude/README.md b/macros/latex/contrib/askinclude/README.md new file mode 100644 index 0000000000..51997bfd6e --- /dev/null +++ b/macros/latex/contrib/askinclude/README.md @@ -0,0 +1,10 @@ +# askinclude + +askinclude package for LaTeX + + + +This package replaces \includeonly by an interactive user +interface. + + diff --git a/macros/latex/contrib/askinclude/askinclude.dtx b/macros/latex/contrib/askinclude/askinclude.dtx new file mode 100644 index 0000000000..04f8d04f17 --- /dev/null +++ b/macros/latex/contrib/askinclude/askinclude.dtx @@ -0,0 +1,1895 @@ +% \iffalse meta-comment +% +% File: askinclude.dtx +% Version: 2019/12/09 v2.5 +% Info: Interactive asking of included files +% +% Copyright (C) +% 1991-1994 Pablo A. Straub +% 2007, 2008, 2011 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/askinclude/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/askinclude/issues +% +% This work consists of the main source file askinclude.dtx +% and the derived files +% askinclude.sty, askinclude.pdf, askinclude.ins, askinclude.drv, +% +% Distribution: +% CTAN:macros/latex/contrib/askinclude/askinclude.dtx +% CTAN:macros/latex/contrib/askinclude/askinclude.pdf +% +% Unpacking: +% (a) If askinclude.ins is present: +% tex askinclude.ins +% (b) Without askinclude.ins: +% tex askinclude.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{askinclude.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If askinclude.drv is present: +% latex askinclude.drv +% (b) Without askinclude.drv: +% latex askinclude.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 askinclude.dtx +% bibtex askinclude.aux +% makeindex -s gind.ist askinclude.idx +% pdflatex askinclude.dtx +% makeindex -s gind.ist askinclude.idx +% pdflatex askinclude.dtx +% +% Installation: +% TDS:tex/latex/askinclude/askinclude.sty +% TDS:doc/latex/askinclude/askinclude.pdf +% TDS:source/latex/askinclude/askinclude.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: askinclude 2019/12/09 v2.5 Interactive asking of included files} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: askinclude +Version: 2019/12/09 v2.5 + +Copyright (C) + 1991-1994 Pablo A. Straub + 2007, 2008, 2011 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/askinclude/issues + + +This work consists of the main source file askinclude.dtx +and the derived files + askinclude.sty, askinclude.pdf, askinclude.ins, askinclude.drv, + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{askinclude.ins}{\from{askinclude.dtx}{install}}% + \file{askinclude.drv}{\from{askinclude.dtx}{driver}}% + \nopreamble + \nopostamble + \file{askinclude.bib}{\from{askinclude.dtx}{bib}}% + \usepreamble\defaultpreamble + \usepostamble\defaultpostamble + \usedir{tex/latex/askinclude}% + \file{askinclude.sty}{\from{askinclude.dtx}{package}}% +} + +\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{* askinclude.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `askinclude.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*bib> +@online{texlive, + author={Fairbairns, Robin}, + title={[tex-live] licence on includeonly.sty}, + date={2007-10-13}, + url={https://www.tug.org/pipermail/tex-live/2007-October/014928.html}, + urldate={2011-12-02}, +} +@online{newsthread, + author={Vo{\ss}, Herbert}, + title={askinclude.sty}, + note={Thread in newsgroup {\xnewsgroup{comp.text.tex}}; + Message-ID: {\texttt{fev72m\$b35\$02\$2@news.t-online.com}}}, + date={2007-10-15}, + url={https://groups.google.com/group/comp.text.tex/browse_thread/thread/728a3e73c04c6789/349e31865c40d00c}, + urldate={2011-12-02}, +} +@manual{makematch, + author={Kastrup, David}, + title={makematch.sty: Pattern matching with wildcards}, + date={2007-02-23}, + version={1.7925}, + url={https://ctan.org/pkg/qstest}, + urldate={2011-12-02}, +} +@manual{excludeonly, + author={Luecking, Daniel H. and Arseneau, Donald}, + title={The excludeonly package}, + date={2003-03-14}, + url={https://ctan.org/pkg/excludeonly}, + urldate={2011-12-02}, +} +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{askinclude.drv}% + [2019/12/09 v2.5 Interactive asking of included files]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\usepackage{iftex} +\ifluatex +\else + \usepackage[T1]{fontenc}% + \usepackage{lmodern}% +\fi +\usepackage{csquotes} +\usepackage[ + backend=bibtex, + bibencoding=ascii, + alldates=iso,seconds=true, +]{biblatex}[2011/11/13] +\bibliography{oberdiek-source} +\bibliography{askinclude} +\begin{document} + \DocInput{askinclude.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{askinclude.drv} +% +% \title{The \xpackage{askinclude} package} +% \date{2019/12/09 v2.5} +% \author{ +% Pablo A. Straub\\[1ex] +% Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/askinclude/issues}}} +% +% +% \maketitle +% +% \begin{abstract} +% This package replaces \cs{includeonly} by an interactive user +% interface. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{User interface} +% +% The \cs{include} feature of \LaTeX\ allows the division of +% the text body in separate compilation units. It is page +% based and stores counter settings in additional auxiliary +% files. \cs{includeonly} limits the actually included files +% to the ones, listed in its argument. +% +% Example: +%\begin{quote} +%\begin{verbatim} +%\documentclass{report} +% +%\usepackage{askinclude} +% +% % Don't use \include in the preamble. +% % Instead \input can be used or make a package +% +%\begin{document} +%\include{title} +%\include{introduction} +%\include{summary} +%\include{index} +%\end{document} +%\end{verbatim} +%\end{quote} +% +% Package \xpackage{askinclude} adds an interactive user interface. +% The user is asked which files he want to include and sets +% \cs{includeonly} accordingly. +% +% The first time the package is used the question looks like: +%\begin{quote} +%\begin{verbatim} +%*********************************** +%*** Package askinclude Question *** +%*********************************** +% +%Previous answer (noregexp): +% [*] +% +%Regular expressions: +% --> [noregexp] disabled +% [makematch] enabled, using package `makematch' +% [pdfmatch] enabled, using pdfTeX's \pdfmatch +% +%Which files do you want to include? +% [foo,bar] comma separated file or pattern list +% [*] all files +% [-] no files +% [?] ask for each file +% [] use the previous answer +% +%\answer=chapter2,summary +%\end{verbatim} +%\end{quote} +% Square brackets are used as quotation symbols, +% they are not part of the answer. +% The answer by the user follows in the last line after |\answer=|. +% \begin{description} +% \def\Item[#1]{\item[{[\texttt{#1}]:}]} +% \Item[foo,bar] +% A comma separated file list (also one file only) is passed +% to macro \cs{includeonly} directly. If regular expression support +% is enabled, the entries in the list are interpreted as +% file name patterns that will be matched against the file names +% in \cs{include}, see \hyperref[sec:regexp]{section \ref*{sec:regexp}}. +% \Item[*] This is a shortcut for specifying \emph{all} files. +% \Item[-] This means \emph{none} of the files is included. +% \Item[?] The switches in single asking mode. +% The user will be asked at each \cs{include}. +% See section \hyperref[sec:single]{section \ref*{sec:single}}. +% \Item[] Just pressing return (empty string) uses the default +% answer, that was stored in the auxiliary file (\xfile{.aux}) +% of the previous \LaTeX run with package \xpackage{askinclude}. +% Without previous runs the default is [|*|] for all files. +% \Item[noregexp] Turns regular expression support off. +% \Item[makematch] Enables regular expression support +% package \xpackage{makematch} provides. +% \Item[pdfmatch] It is shown, if \pdfTeX~1.30 or later is used. +% It relies on an undocumented feature \cs{pdfmatch} that may +% change in future versions of \pdfTeX. +% \end{description} +% Package \xpackage{askinclude} remembers the files of \cs{include} +% in the auxiliary file and the given answer. they are +% presented at the next run +% at the start of the question: +%\begin{quote} +%\begin{verbatim} +%*********************************** +%*** Package askinclude Question *** +%*********************************** +% +%Files, found by previous run in \include: +% (-) title +% (-) introduction +% (-) chapter1 +% (+) chapter2 +% (-) chapter3 +% (+) summary +% +%Previous answer (noregexp): +% [chapter2,summary] +%... +%\end{verbatim} +%\end{quote} +% |(+)| and |(-)| marks files that were and were not included in +% the previous run. The file list and marks are not always correct. +% For example, if \cs{include} statements are added or removed. +% If the method of regular expression support is different, +% then the marks only reflects the mode of the previous answer. +% +% \subsection{Single asking mode} +% \label{sec:single} +% +% The special answer `|?|' trigger single asking mode, +% at the next \cs{include} the user is asked again: +%\begin{quote} +%\begin{verbatim} +%*********************************** +%*** Package askinclude Question *** +%*********************************** +% +%Include `title'? [y]es, [n]o, [A]ll, [N]one, [D]efault (n): +% +%\answer= +%\end{verbatim} +%\end{quote} +% Use the letter inside the square brackets as answer. +% An empty string uses the default answer, the letter in parentheses. +% The answers are: +% \begin{description} +% \def\Item[#1]{\item[{[\texttt{#1}]:}]} +% \Item[y] The file is included. +% \Item[n] The file is excluded. +% \Item[A] This file and all following files are included. +% \Item[N] This file and all following files are excluded. +% \Item[D] Use the default answer for this and all following files. +% \end{description} +% If the file is known from the previous run, then the +% default is `|y|' or `|n|' corresponding to the mark +% `|(+)|' or `|(-)|' in the list of previous files. +% Otherwise `|y|' is used as default. +% +% \subsection{Regular expressions} +% \label{sec:regexp} +% +% Three methods are available that can also set by package options: +% \begin{description} +% \def\Item[#1]{\item[\xoption{#1}:]} +% \Item[noregexp] Regular expression support is disabled. +% \Item[makematch] Use package \xpackage{makematch}. +% \Item[pdfmatch] Use \pdfTeX's \cs{pdfmatch} if available. +% \end{description} +% Without options the value remembered in the auxiliary file +% is used, otherwise the default is \xoption{noregexp}. +% +% \subsubsection{Method \xoption{makematch}} +% +% Package \xpackage{makematch} (part of \xpackage{qstest}), written +% by David Kastrup provides pattern matching based on wildcards: +% \begin{description} +% \item[{[\texttt{*}]}:] The star matches zero or more characters. +% Thus a lonely star machtes anything. +% \item[{[\texttt{!}]}:] The exclamation mark at the begin of a +% pattern negates it, thus the matching files are excluded. +% \end{description} +% The pattern list is evaluated for a file name from left to +% right. Always a file name must match the whole pattern. +% The file is included if it is matched by a pattern and +% not excluded afterwards. Examples: +% \begin{quote} +% \def\no{\textrm{$\emptyset$}} +% \begin{tabular}{>{\ttfamily}l|>{\ttfamily}l|>{\ttfamily}l} +% \textrm{Pattern list} & \textrm{File names} & \textrm{Result}\\ +% \hline +% foobar & foobar,dummy & foobar\\ +% foo* & foobar,xfoobar & foobar\\ +% \relax *foo* & xfoobar & xfoobar\\ +% f*b*r & foobar & foobar\\ +% \relax * & any & any\\ +% !foobar & foobar,other & other\\ +% !foo* & xfoobar & xfoobar\\ +% in*,!*dex & intro,index & intro\\ +% !index,in* & intro,index & intro,index\\ +% \relax *,!chap2 & chap1,chap2,chap3 & chap1,chap3\\ +% \end{tabular} +% \end{quote} +% The example in the last line shows, how the behaviour of package +% \xpackage{excludeonly} \cite{excludeonly} can be simulated. +% +% The documentation of package \xpackage{makematch} tells the +% the empty pattern does not match anything. But if you answer +% the question with an empty string the answer of the previous +% run is used. Also curly braces are not reliable because the +% can get stripped during the processing of the answer. +% Using a pair of empty curly braces or the comma for two empty +% patterns currently works, but this is specific for the current +% implementation and may change in future. But the special +% answer `-' is available. +% +% \subsubsection{Method \xoption{pdfmatch}} +% +% In \pdfTeX\ 1.30 the new primitive \cs{pdfmatch} was introduced. +% It is not documented yet, because it was not decided if it remains +% and which implementation of regular expressions should be used. +% Thus the situation may change in later versions of \pdfTeX. +% Currently (1.30 until 1.40) it uses a library for POSIX 1003.2 regular +% expressions, see manual page ``regex(7)''. +% +% If a pattern in the pattern list is invalid, the package prints +% a warning and removes the pattern from the list. Actually there +% are two warnings, the other warning is generated by \pdfTeX\ itself. +% +% In opposite to \xoption{makematch} the pattern only needs to +% match the specified part of the file name. +% For matching the whole name, the symbols `|^|' and `|$|' for +% begin and end of string must be included. +% +% Additionally an initial exclamation mark `|!|' implements the +% same logic as method \xoption{makematch}. The match result is +% inverted, the matched file excluded. +% +% Examples: +% \begin{quote} +% \def\no{\textrm{$\emptyset$}} +% \begin{tabular}{>{\ttfamily}l|>{\ttfamily}l|>{\ttfamily}l} +% \textrm{Pattern list} & \textrm{File names} & \textrm{Result}\\ +% \hline +% foobar & foobar,dummy & foobar\\ +% foo.* & foobar,xfoobar & foobar,xfoobar\\ +% |^|foo.* & foobar,xfoobar & foobar\\ +% foo|$| & foo,foobar & foo\\ +% fo?bar & fbar,fobar,foobar & fbar,fobar\\ +% fo+bar & fbar,fobar,foobar & fobar,foobar\\ +% fo*bar & fbar,fobar,foobar & fbar,fobar,foobar\\ +% chap3 & chap3,chap32 & chap1,chap3,chap32\\ +% chap[13] & chap1,chap2,chap3 & chap1,chap3\\ +% chap(1\string|3)|$| & chap1,chap3,chap33 & chap1,chap3\\ +% .* & any & any\\ +% !foobar & foobar,other & other\\ +% in.*,!dex & intro,index & intro\\ +% !index,in.* & intro,index & intro,index\\ +% .*,!chap2 & chap1,chap2,chap3 & chap1,chap3\\ +% .*,!bla & foo,bla,blabla & foo\\ +% .*,!|^|bla|$| & foo,bla,blabla & foo,blabla\\ +% \end{tabular} +% \end{quote} +% The example in the last line shows, how the behaviour of package +% \xpackage{excludeonly} \cite{excludeonly} can be simulated. +% As the third last line shows, that sometimes `|^|' and `|$|' can +% be omitted, but this will not work always, shown in the second +% last line. +% +% \subsection{History} +% +% Package \xpackage{askinclude} was invented by Pablo A. Straub in 1991 +% and maintained until 1994. +% ^^A Email address: pablo.straub \symbol{64} gmail.com +% +% In October 2007 it was removed from ``TeX Live'' because of +% the no-commercial license \cite{texlive}. Herbert Vo\ss\ initiated +% a search for the author in the newsgroup \xnewsgroup{comp.text.tex} +% \cite{newsthread} to ask him to change the license. +% +% It seems that the author could not be reached any more. +% Joseph Wright suggested a reimplementation that I (HO) have done +% as package \xpackage{askinc}. Soon it was enhanced by +% feature requests. +% +% Then Ulrike Fischer found email addresses of the original author +% and Jim Hefferon succeeded in contacting him. He allowed a change +% of the license to LPPL and the transfer of the maintainership +% to someone else. +% +% Thus I merged both packages as \xpackage{askinclude} in a new +% major version 2. The license is LPPL. +% +% \subsection{New features of version 2} +% +% \begin{itemize} +% \item License is now LPPL. +% \item A list of \cs{include} files that are detected by the previous +% run is printed before the question. +% \item If the special answer `|?|' is given, then the user is +% asked at each \cs{include}. +% \item Support for regular expressions. +% \item The remaining stuff in the \xfile{.aux} file does not +% cause errors, if the package is removed. +% \item The use of \cs{includeonly} before the package loading time +% is detected and respected by taking precedence. After the package +% is loaded, \cs{includeonly} is disabled and prints a warning. +% \end{itemize} +% +% \subsection{Compatibility to version 1} +% +% \begin{itemize} +% \item The user interface of version 1 with its special answers +% `|*|', `|-|', and `' remain unchanged, but it is extended by +% version 2 with the special answer `|?|' and support for +% regular expressions can be enabled. +% \item As reimplementation the internal macros have changed of course. +% \item \xfile{.aux} files that are written by version 1.x will work +% with version 2.x because \cs{@includeonly} is recognized. +% \item \LaTeX\ 2.09: The package works as \cs{documentstyle} option +% in compatibility mode of \LaTeXe. It is possible that it +% will not work in pure \LaTeX\ 2.09. +% \end{itemize} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Header and catcodes} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x{\endgroup + \expandafter\edef\csname AskInc@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\AskInc@AtEnd{% + \AskInc@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{33}{12}% ! +\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{58}{12}% : +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{63}{12}% ? +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\TMP@EnsureCode{96}{12}% ` +\edef\AskInc@AtEnd{\AskInc@AtEnd\noexpand\endinput} +\ProvidesPackage{askinclude}% + [2019/12/09 v2.5 Interactive asking of included files]% +% \end{macrocode} +% +% Luatex compat +% \begin{macrocode} +\ifx\pdfextension\@undefined\else + \protected\def\pdflastobj {\numexpr\pdffeedback lastobj\relax} + \protected\def\pdfnames {\pdfextension names } + \protected\def\pdfobj {\pdfextension obj } + \let\pdfoutput \outputmode +\fi +% \end{macrocode} +% +% \subsection{Delay action after preamble} +% +% \begin{macro}{\AskInc@AtBeginDocument} +% Some actions such as \xfile{.aux} file writing cannot be +% performed in the preamble. \cs{AtBeginDocument} delays +% such action until |\begin{document}|. However \cs{AtBeginDocument} +% must not be used after that time (\cs{@onlypreamble}). +% Thus \cs{AskInc@AtBeginDocument} uses \cs{AtBeginDocument} +% in the preamble and afterwards executes the code immediately. +% \begin{macrocode} +\AtBeginDocument{% + \let\AskInc@AtBeginDocument\@firstofone +} +\providecommand*{\AskInc@AtBeginDocument}{\AtBeginDocument} +% \end{macrocode} +% \end{macro} +% +% \subsection{Write entry in \xfile{.aux} file} +% +% \begin{macro}{\AskInc@WriteAux} +% The first argument is written to the main \xfile{.aux} file +% and the second argument is executed if writing was possible. +% Remember \cs{nofiles} prevents writing to auxiliary files. +% \begin{macrocode} +\def\AskInc@WriteAux#1#2{% + \AskInc@AtBeginDocument{% + \if@filesw + \immediate\write\@mainaux{#1}% + #2% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Remember \cs{include} files} +% +% \begin{macro}{\AskInc@CharHash} +% \begin{macrocode} +\edef\AskInc@CharHash{\string#} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AskInc@WriteDefAddList} +% \begin{macrocode} +\def\AskInc@WriteDefAddList{% + \AskInc@WriteAux{% +% \end{macrocode} +% \begin{macro}{\AskInc@AddList} +% \begin{macrocode} + \string\providecommand*\string\AskInc@AddList[2]{% + \string\ifcase\string\ifx\AskInc@CharHash1\string\@undefined + \string\else + \string\ifx\AskInc@CharHash1\string\relax + \string\else + \string\ifx\AskInc@CharHash1\string\@empty + \string\else + 1% + \string\fi + \string\fi + \string\fi + 0 % + \string\gdef\AskInc@CharHash1{\AskInc@CharHash2}% + \string\else + \string\g@addto@macro\AskInc@CharHash1{,\AskInc@CharHash2}% + \string\fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + }{% + \global\let\AskInc@WriteDefAddList\relax + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@WriteDefAddFile} +% \begin{macrocode} +\def\AskInc@WriteDefAddFile{% + \AskInc@WriteDefAddList + \AskInc@WriteAux{% +% \end{macrocode} +% \begin{macro}{\AskInc@AddFile} +% \begin{macrocode} + \string\providecommand\string\AskInc@AddFile{% + \string\AskInc@AddList\string\AskInc@Files + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + }{% + \global\let\AskInc@WriteDefAddFile\relax + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@AddFile} +% \begin{macrocode} +\AtBeginDocument{% + \global\let\AskInc@AddFile\@gobble +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@WriteAddFile} +% \begin{macrocode} +\def\AskInc@WriteAddFile#1{% + \AskInc@WriteDefAddFile + \AskInc@WriteAux{% + \string\AskInc@AddFile{#1}% + }{}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@Files} +% \begin{macrocode} +\providecommand*{\AskInc@Files}{} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Summary:} +% Now \cs{AskInc@Files} is always defined +% and either empty or contains a comma separated list of +% \cs{include} files of previous run. +% +% The \cs{include} files are remembered by using +% \cs{AskInc@WriteAddFile} at each \cs{include}. +% +% \subsection{Redefine \cs{include}} +% +% \begin{macro}{\AskInc@OrgInclude} +% \begin{macrocode} +\newcommand{\AskInc@OrgInclude}{} +\let\AskInc@OrgInclude\include +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@AskFile} +% \begin{macrocode} +\let\AskInc@AskFile\@gobble +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@MatchFile} +% \begin{macrocode} +\let\AskInc@MatchFile\@gobble +% \end{macrocode} +% \end{macro} +% \begin{macro}{\include} +% \begin{macrocode} +\renewcommand*{\include}[1]{% + \AskInc@WriteAddFile{#1}% + \AskInc@AskFile{#1}% + \AskInc@MatchFile{#1}% + \AskInc@OrgInclude{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Store answer and match method in \xfile{.aux} file} +% +% \begin{macrocode} +\AtEndOfPackage{% + \AtBeginDocument{% + \@ifundefined{AskInc@Answer}{}{% + \AskInc@WriteAux{% + \string\gdef\string\AskInc@Answer{\AskInc@Answer}% + }{}% + }% + \@ifundefined{AskInc@MatchMethod}{}{% + \AskInc@WriteAux{% + \string\gdef\string\AskInc@MatchMethod{\AskInc@MatchMethod}% + }{}% + }% + }% +} +% \end{macrocode} +% +% \subsection{Support for \cs{@includeonly}} +% +% \begin{macro}{\@includeonly} +% Macro \cs{@includeonly} is defined for compatiblity reasons only, +% if the \xfile{.aux} file was written by versions before 2 of package +% \xpackage{askinclude}. +% \begin{macrocode} +\providecommand*{\@includeonly}[1]{% + \gdef\AskInc@Answer{#1}% + \ifx\AskInc@Answer\@empty + \gdef\AskInc@Answer{-}% + \fi + \global\let\AskInc@MatchMethod\@empty +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Stop if \cs{includeonly} is active} +% +% If \cs{includeonly} is used before, the questions are skipped +% and the data in the main auxiliary file is preserved. +% \begin{macrocode} +\if@partsw + \PackageWarningNoLine{askinclude}{% + Previous \string\includeonly\space detected,\MessageBreak + therefore asking for files is suppressed% + }% +% \end{macrocode} +% Dummy options. +% \begin{macrocode} + \DeclareOption{makematch}{}% + \DeclareOption{pdfmatch}{}% + \DeclareOption{noregexp}{}% + \ProcessOptions*% +% \end{macrocode} +% Preserve \cs{AskInc@MatchFiles}. +% \begin{macrocode} + \@ifundefined{AskInc@MatchFiles}{% + }{% + \ifx\AskInc@MatchMethod\@empty + \else + \AskInc@WriteAux{% + \string\gdef\string\AskInc@MatchFiles{\AskInc@MatchFiles}% + }{}% + \fi + }% + \expandafter\AskInc@AtEnd +\fi% +% \end{macrocode} +% +% \subsection{\cs{includeonly}} +% +% \begin{macro}{\AskInc@OrgIncludeOnly} +% \begin{macrocode} +\newcommand{\AskInc@OrgIncludeOnly}{}% +\let\AskInc@OrgIncludeOnly\includeonly +% \end{macrocode} +% \end{macro} +% \begin{macro}{\includeonly} +% \begin{macrocode} +\renewcommand*{\includeonly}[1]{% + \PackageWarning{askinclude}{% + \string\includeonly\space is managed by package `askinclude',% + \MessageBreak + therefore it is ignored% + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Options} +% +% \begin{macro}{\AskInc@StringNoRegExp} +% \begin{macrocode} +\def\AskInc@StringNoRegExp{noregexp} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@StringMakeMatch} +% \begin{macrocode} +\def\AskInc@StringMakeMatch{makematch} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@StringPdfMatch} +% \begin{macrocode} +\def\AskInc@StringPdfMatch{pdfmatch} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifAskInc@PdfMatchAvailable} +% \begin{macrocode} +\newif\ifAskInc@PdfMatchAvailable +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdfmatch\endcsname\relax +\else + \AskInc@PdfMatchAvailabletrue +\fi +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\DeclareOption{makematch}{% + \let\AskInc@MatchOption\AskInc@StringMakeMatch +} +\ifAskInc@PdfMatchAvailable + \DeclareOption{pdfmatch}{% + \let\AskInc@MatchOption\AskInc@StringPdfMatch + }% +\else + \DeclareOption{pdfmatch}{% + \PackageWarningNoLine{askinclude}{% + Option `pdfmatch' is not available because\MessageBreak + your pdfTeX does not provide \string\pdfmatch + }% + }% +\fi +\DeclareOption{noregexp}{% + \let\AskInc@MatchOption\@empty +} +\ProcessOptions* +% \end{macrocode} +% +% \subsection{Strings} +% +% \begin{macro}{\AskInc@CharAsterisk} +% \begin{macrocode} +\def\AskInc@CharAsterisk{*} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharMinus} +% \begin{macrocode} +\def\AskInc@CharMinus{-} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharPlus} +% \begin{macrocode} +\def\AskInc@CharPlus{+} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharQuestion} +% \begin{macrocode} +\def\AskInc@CharQuestion{?} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharExclam} +% \begin{macrocode} +\def\AskInc@CharExclam{!} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharYes} +% \begin{macrocode} +\def\AskInc@CharYes{y} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharNo} +% \begin{macrocode} +\def\AskInc@CharNo{n} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharAll} +% \begin{macrocode} +\def\AskInc@CharAll{A} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharNone} +% \begin{macrocode} +\def\AskInc@CharNone{N} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CharDefault} +% \begin{macrocode} +\def\AskInc@CharDefault{D} +% \end{macrocode} +% \end{macro} +% +% \subsection{Set defaults} +% +% \begin{macro}{\AskInc@SanitizeAnswer} +% \begin{macrocode} +\def\AskInc@SanitizeAnswer#1#2{% + \begingroup + \escapechar=`\\% + \edef\[{\string\[}% + \edef\]{\string\]}% + \edef\({\string\(}% + \edef\){\string\)}% + \edef\*{\string\*}% + \edef\+{\string\+}% + \edef\?{\string\?}% + \edef\|{\string\|}% + \edef\^{\string\^}% + \edef\${\string\$}% + \edef\{{\string\{}% + \edef\}{\string\}}% + \edef\.{\string\.}% + \xdef#1{% + \expandafter\expandafter\expandafter\zap@space + \expandafter#2\space\@empty + }% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\AtBeginDocument{% + \@ifundefined{AskInc@Answer}{% + \global\let\AskInc@Answer\AskInc@CharAsterisk + }{% + \AskInc@SanitizeAnswer\AskInc@Answer\AskInc@Answer + }% + \global\let\AskInc@PreviousAnswer\AskInc@Answer + \@ifundefined{AskInc@MatchMethod}{% + \global\let\AskInc@MatchMethod\@empty + }{}% + \global\let\AskInc@PreviousMatchMethod\AskInc@MatchMethod + \@ifundefined{AskInc@MatchOption}{% + \let\AskInc@MatchOption\AskInc@MatchMethod + }{}% + \ifx\AskInc@MatchOption\AskInc@StringPdfMatch + \ifAskInc@PdfMatchAvailable + \else + \let\AskInc@MatchOption\@empty + \fi + \fi + \@ifundefined{AskInc@MatchFiles}{% + \let\AskInc@MatchFiles\@empty + }{}% +} +% \end{macrocode} +% +% \subsection{Questions} +% +% \subsubsection{Generic question header} +% +% \begin{macro}{\AskInc@QuestionHeader} +% \begin{macrocode} +\def\AskInc@QuestionHeader{% + \typeout{}% + \typeout{***********************************}% + \typeout{*** Package askinclude Question ***}% + \typeout{***********************************}% + \typeout{}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Display files} +% +% \begin{macro}{\AskInc@TypeoutFiles} +% \begin{macrocode} +\def\AskInc@TypeoutFiles{% + \global\let\AskInc@PreviousMatches\@empty + \ifx\AskInc@Files\@empty + \else + \typeout{Files, found by previous run in \string\include:}% + \@for\AskInc@File:=\AskInc@Files\do{% + \ifx\AskInc@Answer\AskInc@CharAsterisk + \let\AskInc@Mark\AskInc@CharPlus + \else + \let\AskInc@Mark\AskInc@CharMinus + \ifx\AskInc@Answer\AskInc@CharMinus + \else + \ifx\AskInc@MatchMethod\@empty + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\@for\AskInc@Temp:=\AskInc@Answer}% + {\@for\AskInc@Temp:=\AskInc@MatchFiles}% + \do{% + \ifx\AskInc@File\AskInc@Temp + \let\AskInc@Mark\AskInc@CharPlus + \fi + }% + \fi + \fi + \typeout{ \@spaces(\AskInc@Mark) \AskInc@File}% + \ifx\AskInc@Mark\AskInc@CharPlus + \ifx\AskInc@PreviousMatches\@empty + \global\let\AskInc@PreviousMatches\AskInc@File + \else + \expandafter\g@addto@macro + \expandafter\AskInc@PreviousMatches{% + \expandafter,\AskInc@File + }% + \fi + \fi + }% + \typeout{}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Previous answer} +% +% \begin{macro}{\AskInc@TypeoutPreviousAnswer} +% \begin{macrocode} +\def\AskInc@TypeoutPreviousAnswer{% + \typeout{% + Previous answer (% + \ifx\AskInc@MatchMethod\@empty + noregexp% + \else + \AskInc@MatchMethod + \fi + ):% + }% + \typeout{ \@spaces[\AskInc@Answer]}% + \typeout{}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Current regular expression support} +% +% \begin{macro}{\AskInc@TypeoutMatchMethod} +% \begin{macrocode} +\def\AskInc@TypeoutMatchMethod{% + \typeout{Regular expressions:}% + \AskInc@TypeoutMethod\@empty{noregexp}{% + \space disabled% + }% + \AskInc@TypeoutMethod\AskInc@StringMakeMatch{makematch}{% + enabled, using package `makematch'% + }% + \ifAskInc@PdfMatchAvailable + \AskInc@TypeoutMethod\AskInc@StringPdfMatch{pdfmatch}{% + \space enabled, using pdfTeX's \string\pdfmatch + }% + \fi + \typeout{}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@TypeoutMethod} +% \begin{macrocode} +\def\AskInc@TypeoutMethod#1#2#3{% + \typeout{% + \ifx#1\AskInc@MatchOption \space--> \else\@spaces\space\fi + [#2] #3% hash-ok + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Main question text} +% +% \begin{macro}{\AskInc@TypeoutMainQuestion} +% \begin{macrocode} +\def\AskInc@TypeoutMainQuestion{% + \typeout{Which files do you want to include?}% + \typeout{ \@spaces[foo,bar] \space\space + comma separated file or pattern list}% + \typeout{ \@spaces[*] \@spaces\@spaces all files}% + \typeout{ \@spaces[-] \@spaces\@spaces no files}% + \typeout{ \@spaces[?] \@spaces\@spaces ask for each file}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Main question} +% +% \begin{macro}{\AskInc@MainQuestion} +% \begin{macrocode} +\def\AskInc@MainQuestion{% + \AskInc@QuestionHeader + \AskInc@TypeoutFiles + \AskInc@TypeoutPreviousAnswer + \AskInc@TypeoutMatchMethod + \AskInc@TypeoutMainQuestion + \begingroup + \@makeother\*% + \@makeother\-% + \@makeother\?% + \@makeother\,% + \@makeother\!% + \@makeother\^% + \@makeother\$% + \@makeother\(% + \@makeother\)% + \@makeother\+% + \@makeother\[% + \@makeother\]% + \@makeother\\% + \@makeother\|% + \@makeother\:% + \@makeother\.% + \typein[\answer]% + { \@spaces[] \space\@spaces\@spaces use the previous answer}% + \typeout{}% + \AskInc@SanitizeAnswer\AskInc@@Answer\answer + \endgroup + \let\AskInc@Next\AskInc@MainQuestion + \ifx\AskInc@@Answer\AskInc@StringNoRegExp + \let\AskInc@MatchOption\@empty + \else + \ifx\AskInc@@Answer\AskInc@StringMakeMatch + \let\AskInc@MatchOption\AskInc@StringMakeMatch + \else + \ifx\AskInc@@Answer\AskInc@StringPdfMatch + \ifAskInc@PdfMatchAvailable + \let\AskInc@MatchOption\AskInc@StringPdfMatch + \else + \PackageWarning{askinclude}{% + Method `pdfmatch' is not available because\MessageBreak + your pdfTeX does not provide \string\pdfmatch + }% + \let\AskInc@MatchOption\@empty + \fi + \else + \ifx\AskInc@@Answer\@empty + \global\let\AskInc@@Answer\AskInc@Answer + \fi + \let\AskInc@Next\AskInc@MainAnswer + \fi + \fi + \fi + \AskInc@Next +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Evaluate answer of main question} +% +% \begin{macro}{\AskInc@MainAnswer} +% \begin{macrocode} +\def\AskInc@MainAnswer{% + \ifx\AskInc@@Answer\AskInc@CharQuestion + \global\let\AskInc@Answer\@empty + \global\let\AskInc@MatchMethod\@empty + \global\let\AskInc@AskFile\AskInc@DoAskFile + \AskInc@OrgIncludeOnly{}% + \else + \global\let\AskInc@Answer\AskInc@@Answer + \ifx\AskInc@@Answer\AskInc@CharAsterisk + \global\let\AskInc@MatchMethod\@empty + \else + \ifx\AskInc@@Answer\AskInc@CharMinus + \global\let\AskInc@MatchMethod\@empty + \AskInc@OrgIncludeOnly{}% + \else + \global\let\AskInc@MatchMethod\AskInc@MatchOption + \ifx\AskInc@MatchOption\@empty + \expandafter\AskInc@OrgIncludeOnly\expandafter{% + \AskInc@Answer + }% + \else + \AskInc@MatchInit + \AskInc@OrgIncludeOnly{}% + \fi + \fi + \fi + \fi + \let\AskInc@Include\AskInc@DoInclude +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AskInc@MatchInit} +% \begin{macrocode} +\def\AskInc@MatchInit{% + \RequirePackage{kvsetkeys}[2007/09/29]% + \expandafter\comma@normalize\expandafter{\AskInc@Answer}% + \global\let\AskInc@MatchList\comma@list +% \end{macrocode} +% \begin{macro}{\AskInc@MatchFile} +% \begin{macrocode} + \def\AskInc@MatchFile##1{% + \AskInc@DoMatch{##1}{% + \AskInc@WriteAddMatch{##1}% + \ifx\@partlist\@empty + \gdef\@partlist{##1}% + \else + \g@addto@macro\@partlist{,##1}% + \fi + }% + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + \ifx\AskInc@MatchMethod\AskInc@StringMakeMatch + \AskInc@MakeMatchInit + \else + \AskInc@PdfMatchInit + \fi + \let\AskInc@MatchInit\@undefined +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@MakeMatchInit} +% \begin{macrocode} +\def\AskInc@MakeMatchInit{% + \RequirePackage{makematch}% +% \end{macrocode} +% \begin{macro}{\AskInc@DoMatch} +% \begin{macrocode} + \def\AskInc@DoMatch##1{% + \def\AskInc@Temp{% + \MakeMatcher[,]\AskInc@Temp + }% + \expandafter\AskInc@Temp\expandafter{\AskInc@MatchList}% + \AskInc@Temp{{##1}}\@firstofone\@gobble + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + \let\AskInc@MakeMatchInit\@undefined +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@PdfMatchInit} +% \begin{macrocode} +\def\AskInc@PdfMatchInit{% +% \end{macrocode} +% \begin{macro}{\ifAskInc@Found} +% \begin{macrocode} + \newif\ifAskInc@Found +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@DoMatch} +% \begin{macrocode} + \def\AskInc@DoMatch##1{% + \AskInc@Foundfalse + \expandafter\comma@parse@normalized\expandafter + {\AskInc@MatchList}{\AskInc@CheckMatch{##1}}% + \ifAskInc@Found + \expandafter\@firstofone + \else + \expandafter\@gobble + \fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@CheckMatch} +% \begin{macrocode} + \def\AskInc@CheckMatch##1##2{% + \AskInc@@CheckMatch##2\@empty\@nil{##1}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@@CheckMatch} +% \begin{macrocode} + \def\AskInc@@CheckMatch##1##2\@nil##3{% + \def\AskInc@Temp{##1}% + \ifx\AskInc@Temp\AskInc@CharExclam + \ifcase\pdfmatch{##2}{##3}=1 % + \or + \AskInc@Foundfalse + \else + \AskInc@InvalidPattern{##2}{##1##2}% + \fi + \else + \ifcase\pdfmatch{##1##2}{##3} % + \or + \AskInc@Foundtrue + \else + \AskInc@InvalidPattern{##1##2}{##1##2}% + \fi + \fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@InvalidPattern} +% Prints a warning with the regular expression and +% removes it from the list to prevent further warnings +% for the same expression. +% \begin{macrocode} + \def\AskInc@InvalidPattern##1##2{% + \edef\AskInc@Temp{##1}% + \PackageWarningNoLine{askinclude}{% + Invalid pattern `\AskInc@Temp' for \string\pdfmatch + }% + \edef\AskInc@Temp{##2}% + \global\expandafter\let\expandafter\AskInc@MatchList + \expandafter\@empty + \expandafter\comma@parse@normalized\expandafter + {\AskInc@MatchList}\AskInc@FilterPattern + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@FilterPattern} +% \begin{macrocode} + \def\AskInc@FilterPattern##1{% + \edef\AskInc@Pattern{##1}% + \ifx\AskInc@Temp\AskInc@Pattern + \else + \ifx\AskInc@MatchList\@empty + \global\let\AskInc@MatchList\AskInc@Pattern + \else + \expandafter\g@addto@macro\expandafter\AskInc@MatchList{% + \expandafter,\AskInc@Pattern + }% + \fi + \fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + \let\AskInc@PdfMatchInit\@undefined +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AskInc@WriteDefAddMatch} +% \begin{macrocode} +\def\AskInc@WriteDefAddMatch{% + \AskInc@WriteDefAddList + \AskInc@WriteAux{% +% \end{macrocode} +% \begin{macro}{\AskInc@AddMatch} +% \begin{macrocode} + \string\providecommand\string\AskInc@AddMatch{% + \string\AskInc@AddList\string\AskInc@MatchFiles + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} + }{% + \global\let\AskInc@WriteDefAddMatch\relax + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@AddMatch} +% \begin{macrocode} +\AtBeginDocument{% + \global\let\AskInc@AddMatch\@gobble +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@WriteAddMatch} +% \begin{macrocode} +\def\AskInc@WriteAddMatch#1{% + \AskInc@WriteDefAddMatch + \AskInc@WriteAux{% + \string\AskInc@AddMatch{#1}% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AskInc@SaveAnswer} +% \begin{macrocode} +\def\AskInc@SaveAnswer{% + \AskInc@WriteAux{% + \string\gdef\string\AskInc@Answer{\AskInc@Answer}% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Ask for each file} +% +% \begin{macro}{\AskInc@PreviousAnswer} +% \begin{macrocode} +\@ifundefined{AskInc@PreviousAnswer}{% + \let\AskInc@PreviousAnswer\AskInc@CharAsterisk +}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@PreviousMatchMethod} +% \begin{macrocode} +\@ifundefined{AskInc@PreviousMatchMethod}{% + \let\AskInc@PreviousMatchMethod\@empty +}{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@DoAskFile} +% \begin{macrocode} +\def\AskInc@DoAskFile#1{% + \edef\AskInc@File{#1}% + \ifx\AskInc@PreviousAnswer\AskInc@CharAsterisk + \let\AskInc@Default\AskInc@CharYes + \else + \let\AskInc@Default\AskInc@CharNo + \ifx\AskInc@PreviousAnswer\AskInc@CharMinus + \else + \ifx\AskInc@PreviousMatchMethod\@empty + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\@for\AskInc@Temp:=\AskInc@PreviousAnswer}% + {\@for\AskInc@Temp:=\AskInc@MatchFiles}% + \do{% + \ifx\AskInc@Temp\AskInc@File + \let\AskInc@Default\AskInc@CharYes + \fi + }% + \fi + \ifx\AskInc@Default\AskInc@CharNo + \let\AskInc@Default\AskInc@CharYes + \@for\AskInc@Temp:=\AskInc@Files\do{% + \ifx\AskInc@Temp\AskInc@File + \let\AskInc@Default\AskInc@CharNo + \fi + }% + \fi + \fi + \let\AskInc@@QuestionHeader\AskInc@QuestionHeader + \AskInc@AskQuestion + \ifx\AskInc@AskResult\AskInc@CharYes + \ifx\AskInc@Answer\@empty + \gdef\AskInc@Answer{#1}% + \else + \g@addto@macro\AskInc@Answer{,#1}% + \fi + \AskInc@SaveAnswer + \let\@partlist\AskInc@Answer + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\AskInc@AskQuestion} +% \begin{macrocode} +\def\AskInc@AskQuestion{% + \let\AskInc@Temp\answer + \AskInc@@QuestionHeader + \let\AskInc@@QuestionHeader\relax + \typein[\answer]{% + Include `\AskInc@File'? [y]es, [n]o, [A]ll, [N]one, [D]efault % + (\AskInc@Default):% + }% + \typeout{}% + \let\AskInc@AskResult\answer + \let\answer\AskInc@Temp + \ifx\AskInc@AskResult\@empty + \let\AskInc@AskResult\AskInc@Default + \let\AskInc@Next\relax + \else + \ifx\AskInc@AskResult\AskInc@CharYes + \let\AskInc@Next\relax + \else + \ifx\AskInc@AskResult\AskInc@CharNo + \let\AskInc@Next\relax + \else + \ifx\AskInc@AskResult\AskInc@CharAll + \gdef\AskInc@AskQuestion{% + \let\AskInc@AskResult\AskInc@CharYes + }% + \else + \ifx\AskInc@AskResult\AskInc@CharNone + \gdef\AskInc@AskQuestion{% + \let\AskInc@AskResult\AskInc@CharNo + }% + \else + \ifx\AskInc@AskResult\AskInc@CharDefault + \gdef\AskInc@AskQuestion{% + \let\AskInc@AskResult\AskInc@Default + }% + \else + \PackageWarningNoLine{askinclude}{% + Invalid answer [\AskInc@AskResult].\MessageBreak + Answer must be one letter out of [ynAND]% + }% + \fi + \fi + \fi + \let\AskInc@Next\AskInc@AskQuestion + \fi + \fi + \fi + \AskInc@Next +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\AtBeginDocument{\AskInc@MainQuestion} +% \end{macrocode} +% +% \begin{macrocode} +\AskInc@AtEnd% +% +% \end{macrocode} +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{askinclude}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/askinclude/askinclude.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/askinclude/askinclude.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `askinclude' +% 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/askinclude.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{askinclude.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip askinclude.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 askinclude.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@{}} +% askinclude.sty & tex/latex/askinclude/askinclude.sty\\ +% askinclude.pdf & doc/latex/askinclude/askinclude.pdf\\ +% askinclude.dtx & source/latex/askinclude/askinclude.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{askinclude.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 askinclude.dtx +%bibtex askinclude.aux +%makeindex -s gind.ist askinclude.idx +%pdflatex askinclude.dtx +%makeindex -s gind.ist askinclude.idx +%pdflatex askinclude.dtx +%\end{verbatim} +% \end{quote} +% +% \section{Acknowledgement} +% +% \begin{description} +% \item[Tom Scavo] +% suggested saving the include file list +% from the previous run and a simplified user interface. +% \item[Joseph Wright] suggested questions for each \cs{include}. +% \end{description} +% +% \printbibliography[ +% heading=bibnumbered, +% ] +% +% \begin{History} + +% \begin{Version}{1991/11/05 v0.95} +% \item +% First beta-test version (asked two questions). +% \end{Version} +% \begin{Version}{1991/11/05 v0.99} +% \item +% Second beta-test version (asks one question; uses `|*|' and `|-|'). +% \end{Version} +% \begin{Version}{1991/11/07 v1.0} +% \item +% Changed prompts (sent to \xnewsgroup{comp.text.tex}): +% \URL{``\link{Interactive inclusion of files in LaTeX}''}^^A +% {https://groups.google.com/group/comp.text.tex/msg/34b770a7c277e79c} +% \end{Version} +% \begin{Version}{1991/12/13 v1.1} +% \item +% \textit{Unknown}. +% \end{Version} +% \begin{Version}{1994/11/02 v1.2e} +% \item +% Two small changes to run under LaTeX2e [RF]. +% \item +% Additional documentation [TRS]. +% \end{Version} +% \begin{Version}{2007/10/15 v1.0 (askinc)} +% \item +% Reimplementation, published as \xpackage{askinc} in +% newsgroup \xnewsgroup{comp.text.tex}:\\ +% \URL{``\link{Re: askinclude.sty}''}^^A +% {https://groups.google.com/group/comp.text.tex/msg/2d638b84a858fdc8} +% \item +% Listing of included files, collected from the previous run before +% the question. +% \item +% No error message by \xfile{.aux} file if package is removed. +% \end{Version} +% \begin{Version}{2007/10/23 v2.0} +% \item +% The next version of \xpackage{askinc} becomes +% version 2.0 of \xpackage{askinclude}. +% \item +% `|?|' added for questioning each file. +% \item +% \cs{includeonly} has precedence until package loading. +% Then it is disabled by a warning. +% \item +% Documentation rewritten/added. +% \item +% Tests added. +% \end{Version} +% \begin{Version}{2008/08/11 v2.1} +% \item +% Code is not changed. +% \item +% URLs updated. +% \end{Version} +% \begin{Version}{2011/12/02 v2.2} +% \item +% Bibliography rewritten for biblatex. +% \end{Version} +% \begin{Version}{2016/05/14 v2.3} +% \item +% Luatex compatibility +% \end{Version} +% \begin{Version}{2018/11/01 v2.4} +% \item +% Remove luatex85 package dependency +% \end{Version} +% \begin{Version}{2019/12/09 v2.5} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput +% \begin{Version}{1991/11/05 v0.95} +% \item +% First beta-test version (asked two questions). +% \end{Version} +% \begin{Version}{1991/11/05 v0.99} +% \item +% Second beta-test version (asks one question; uses `|*|' and `|-|'). +% \end{Version} +% \begin{Version}{1991/11/07 v1.0} +% \item +% Changed prompts (sent to \xnewsgroup{comp.text.tex}): +% \URL{``\link{Interactive inclusion of files in LaTeX}''}^^A +% {https://groups.google.com/group/comp.text.tex/msg/34b770a7c277e79c} +% \end{Version} +% \begin{Version}{1991/12/13 v1.1} +% \item +% \textit{Unknown}. +% \end{Version} +% \begin{Version}{1994/11/02 v1.2e} +% \item +% Two small changes to run under LaTeX2e [RF]. +% \item +% Additional documentation [TRS]. +% \end{Version} +% \begin{Version}{2007/10/15 v1.0 (askinc)} +% \item +% Reimplementation, published as \xpackage{askinc} in +% newsgroup \xnewsgroup{comp.text.tex}:\\ +% \URL{``\link{Re: askinclude.sty}''}^^A +% {https://groups.google.com/group/comp.text.tex/msg/2d638b84a858fdc8} +% \item +% Listing of included files, collected from the previous run before +% the question. +% \item +% No error message by \xfile{.aux} file if package is removed. +% \end{Version} +% \begin{Version}{2007/10/23 v2.0} +% \item +% The next version of \xpackage{askinc} becomes +% version 2.0 of \xpackage{askinclude}. +% \item +% `|?|' added for questioning each file. +% \item +% \cs{includeonly} has precedence until package loading. +% Then it is disabled by a warning. +% \item +% Documentation rewritten/added. +% \item +% Tests added. +% \end{Version} +% \begin{Version}{2008/08/11 v2.1} +% \item +% Code is not changed. +% \item +% URLs updated. +% \end{Version} +% \begin{Version}{2011/12/02 v2.2} +% \item +% Bibliography rewritten for biblatex. +% \end{Version} +% \begin{Version}{2016/05/14 v2.3} +% \item +% Luatex compatibility +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/askinclude/askinclude.pdf b/macros/latex/contrib/askinclude/askinclude.pdf new file mode 100644 index 0000000000..10c3f10452 Binary files /dev/null and b/macros/latex/contrib/askinclude/askinclude.pdf differ diff --git a/macros/latex/contrib/bibleref/CHANGES b/macros/latex/contrib/bibleref/CHANGES index f69256bc20..29d7c6e962 100644 --- a/macros/latex/contrib/bibleref/CHANGES +++ b/macros/latex/contrib/bibleref/CHANGES @@ -1,3 +1,6 @@ +1.24 + * Add more abbreviation + * Add more \brthreeabbrvname 1.23 * Add Tt abbreviation 1.22 diff --git a/macros/latex/contrib/bibleref/bibleref.dtx b/macros/latex/contrib/bibleref/bibleref.dtx index ff5130502c..0802fcf73b 100644 --- a/macros/latex/contrib/bibleref/bibleref.dtx +++ b/macros/latex/contrib/bibleref/bibleref.dtx @@ -84,12 +84,9 @@ %indicating the chapter and verse or verses. Verses can be %specified as a comma separated list of individual verses or range %of verses. A range of verses should be written with a single -%hyphen, e.g.\ \verb|2-4|. In the typeset output the range of verses will -%be separated with -%\begin{definition}[\DescribeMacro{\BRvrsep}] -%\cs{BRvrsep} -%\end{definition} -%(an en-dash by default.) A chapter may be referenced without a +%hyphen, e.g.\ \verb|2-4|. +% +% A chapter may be referenced without a %verse, but the colon must remain, e.g.\ \verb|(12:)| simply %indicates chapter 12. % @@ -134,6 +131,42 @@ % \begin{verbatim} % \renewcommand{\BRotherchapterstyle}[1]{} % \end{verbatim} +%\subsection{Default separators} +% In the typeset output the range of verses will +%be separated with +%\begin{definition}[\DescribeMacro{\BRvrsep}] +%\cs{BRvrsep} +%\end{definition} +%(an en-dash by default.) +% +%In the typeset output the verses in a list of verses will +%be separated with +%\begin{definition}[\DescribeMacro{\BRvsep}] +%\cs{BRvsep} +%\end{definition} +%(a comma, by default). +% +% +%In the typeset output the chapters will +%be separated with +%\begin{definition}[\DescribeMacro{\BRchsep}] +%\cs{BRchsep} +%\end{definition} +%(a semi-colon, by default). +% +%In the typeset output the chapter and the verse will +%be separated with +%\begin{definition}[\DescribeMacro{\BRchvsep}] +%\cs{BRchvsep} +%\end{definition} +%(a colon, by default). +% +%In the typeset output the books name will be followed by +%\begin{definition}[\DescribeMacro{\BRperiod}] +%\cs{BRperiod} +%\end{definition} +%(nothing, by default). +% %\subsection{Examples} %\begin{center} %\begin{tabular}{ll} @@ -215,7 +248,9 @@ %\begin{verbatim} %\addbiblebook{Susanna}{Story of Susanna} %\end{verbatim} -% +%\begin{definition}[\DescribeMacro{\brthreeabbrvname}] +% The \cs{brthreeabbrvname} command switches all the abbreviation of the booktitle to be typeset using exaclty three characters. +%\end{definition} %\section{Defining New Styles} % %You can define a new style using the command @@ -973,7 +1008,7 @@ % Declare package % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{bibleref}[2019/01/13 1.23 (NLCT and MR)] +\ProvidesPackage{bibleref}[2019/12/10 1.24 (NLCT and MR)] % \end{macrocode} % Need to do some conditional stuff % \begin{macrocode} @@ -1368,6 +1403,88 @@ \def\br@Revelation{Rev\BRperiod}} % \end{macrocode} %\end{macro} +% +%\begin{macro}{\brthreeabbrvname} +%\changes{1.24}{2019/12/10}{Added \cs{brthreelettabbrvname}} +% This switches to a standardized set of three-character abbreviations. +% \begin{macrocode} +\newcommand*{\brthreeabbrvname}{% +\def\br@Genesis{Gen\BRperiod}% +\def\br@Exodus{Exo\BRperiod}% +\def\br@Leviticus{Lev\BRperiod}% +\def\br@Numbers{Num\BRperiod}% +\def\br@Deuteronomy{Deu\BRperiod}% +\def\br@Joshua{Jos\BRperiod}% +\def\br@Judges{Jdg\BRperiod}% +\def\br@Ruth{Rut\BRperiod}% +\def\br@ISamuel{\BRbooknumberstyle{1}Sa\BRperiod}% +\def\br@IISamuel{\BRbooknumberstyle{2}Sa\BRperiod}% +\def\br@IKings{\BRbooknumberstyle{1}Ki\BRperiod}% +\def\br@IIKings{\BRbooknumberstyle{2}Ki\BRperiod}% +\def\br@IChronicles{\BRbooknumberstyle{1}Ch\BRperiod}% +\def\br@IIChronicles{\BRbooknumberstyle{2}Ch\BRperiod}% +\def\br@Ezra{Ezr\BRperiod}% +\def\br@Nehemiah{Neh\BRperiod}% +\def\br@Tobit{Tob\BRperiod}% +\def\br@Judith{Jdi\BRperiod}% +\def\br@Esther{Est\BRperiod}% +\def\br@IMaccabees{\BRbooknumberstyle{1}Ma\BRperiod}% +\def\br@IIMaccabees{\BRbooknumberstyle{2}Ma\BRperiod}% +\def\br@Job{Job}% +\def\br@Psalms{Psa\BRperiod}% +\def\br@Proverbs{Pro\BRperiod}% +\def\br@Ecclesiastes{Ecc\BRperiod}% +\def\br@SongofSongs{SoS\BRperiod}% +\def\br@Wisdom{Wis\BRperiod}% +\def\br@Ecclesiasticus{Ecu\BRperiod}% +\def\br@Isaiah{Isa\BRperiod}% +\def\br@Jeremiah{Jer\BRperiod}% +\def\br@Lamentations{Lam\BRperiod}% +\def\br@Baruch{Bar\BRperiod}% +\def\br@Ezekiel{Eze\BRperiod}% +\def\br@Daniel{Dan\BRperiod}% +\def\br@Hosea{Hos\BRperiod}% +\def\br@Joel{Joe\BRperiod}% +\def\br@Amos{Amo\BRperiod}% +\def\br@Obadiah{Oba\BRperiod}% +\def\br@Jonah{Jon\BRperiod}% +\def\br@Micah{Mic\BRperiod}% +\def\br@Nahum{Nah\BRperiod}% +\def\br@Habakkuk{Hab\BRperiod}% +\def\br@Zephaniah{Zep\BRperiod}% +\def\br@Haggai{Hag\BRperiod}% +\def\br@Zechariah{Zec\BRperiod}% +\def\br@Malachi{Mal\BRperiod}% +\def\br@Matthew{Mat\BRperiod}% +\def\br@Mark{Mar\BRperiod}% +\def\br@Luke{Luk\BRperiod}% +\def\br@John{Joh\BRperiod}% +\def\br@Acts{Act\BRperiod}% +\def\br@Romans{Rom\BRperiod}% +\def\br@ICorinthians{\BRepistlenumberstyle{1}Co\BRperiod}% +\def\br@IICorinthians{\BRepistlenumberstyle{2}Co\BRperiod}% +\def\br@Galatians{Gal\BRperiod}% +\def\br@Ephesians{Eph\BRperiod}% +\def\br@Philippians{Php\BRperiod}% +\def\br@Colossians{Col\BRperiod}% +\def\br@IThessalonians{\BRepistlenumberstyle{1}Th\BRperiod}% +\def\br@IIThessalonians{\BRepistlenumberstyle{2}Th\BRperiod}% +\def\br@ITimothy{\BRepistlenumberstyle{1}Ti\BRperiod}% +\def\br@IITimothy{\BRepistlenumberstyle{2}Ti\BRperiod}% +\def\br@Titus{Tit\BRperiod}% +\def\br@Philemon{Phm\BRperiod}% +\def\br@Hebrews{Heb\BRperiod}% +\def\br@James{Jam\BRperiod}% +\def\br@IPeter{\BRepistlenumberstyle{1}Pe\BRperiod}% +\def\br@IIPeter{\BRepistlenumberstyle{2}Pe\BRperiod}% +\def\br@IJohn{\BRepistlenumberstyle{1}Jo}% +\def\br@IIJohn{\BRepistlenumberstyle{2}Jo}% +\def\br@IIIJohn{\BRepistlenumberstyle{3}Jo}% +\def\br@Jude{Jde\BRperiod}% +\def\br@Revelation{Rev\BRperiod}} +% \end{macrocode} +%\end{macro} +% % Provide synonymns. % \begin{macrocode} \newcommand*\br@Gn{\br@Genesis}% @@ -1403,7 +1520,6 @@ \newcommand*\br@Lm{\br@Lamentations}% \newcommand*\br@Ba{\br@Baruch}% \newcommand*\br@Bar{\br@Baruch}% -\newcommand*\br@Ezk{\br@Ezekiel}% \newcommand*\br@Dn{\br@Daniel}% \newcommand*\br@Ho{\br@Hosea}% \newcommand*\br@Jl{\br@Joel}% @@ -1421,14 +1537,10 @@ \newcommand*\br@Mk{\br@Mark}% \newcommand*\br@Lk{\br@Luke}% \newcommand*\br@Jn{\br@John}% -\newcommand*\br@Ac{\br@Acts}% \newcommand*\br@Rm{\br@Romans}% -\newcommand*\br@ICo{\br@ICorinthians}% -\newcommand*\br@IICo{\br@IICorinthians}% \newcommand*\br@Ga{\br@Galatians}% \newcommand*\br@Ep{\br@Ephesians}% \newcommand*\br@Ph{\br@Philippians}% -\newcommand*\br@Col{\br@Colossians}% \newcommand*\br@ITh{\br@IThessalonians}% \newcommand*\br@IITh{\br@IIThessalonians}% \newcommand*\br@ITm{\br@ITimothy}% @@ -1447,27 +1559,48 @@ %\changes{1.21}{2018/11/17}{Add Wis abbreviation} %\changes{1.22}{2018/12/05}{Add Bar abbreviation} %\changes{1.23}{2019/01/13}{Add Ti abbreviation} +%\changes{1.24}{2019/12/10}{Added Exo, Levit, Deu, Jos, Jsh, Rut, IKi, IKin, IIKi, IIKin, IMac, IIMac, Psa, Psal, Pro, Son, Song, Songs, Ezk, Eze, Joe, Amo, Oba, Zec, Zep, Mat, Mar, Luk, Joh, Act, ICo IICo, Php, Col, IThe, IThes, IIThe, IIThes, ITi, IITi, Hb, Jam, IPe, IIPe, IJo, IJoh, IIJo, IIJoh, IIIJn, IIIJo, IIIJoh % \begin{macrocode} \newcommand*\br@Gen{\br@Genesis}% +\newcommand*\br@Exo{\br@Exodus}% \newcommand*\br@Exod{\br@Exodus}% \newcommand*\br@Lev{\br@Leviticus}% +\newcommand*\br@Levit{\br@Leviticus}% \newcommand*\br@Num{\br@Numbers}% +\newcommand*\br@Deu{\br@Deuteronomy}% \newcommand*\br@Deut{\br@Deuteronomy}% \newcommand*\br@Josh{\br@Joshua}% +\newcommand*\br@Jsh{\br@Joshua}% \newcommand*\br@Judg{\br@Judges}% +\newcommand*\br@Jdg{\br@Judges}% +\newcommand*\br@Rut{\br@Ruth}% \newcommand*\br@ISam{\br@ISamuel}% +\newcommand*\br@ISa{\br@ISamuel}% \newcommand*\br@IISam{\br@IISamuel}% +\newcommand*\br@IISa{\br@IISamuel}% \newcommand*\br@IKgs{\br@IKings}% +\newcommand*\br@IKi{\br@IKings}% +\newcommand*\br@IKin{\br@IKings}% \newcommand*\br@IIKgs{\br@IIKings}% +\newcommand*\br@IIKi{\br@IIKings}% +\newcommand*\br@IIKin{\br@IIKings}% \newcommand*\br@IChr{\br@IChronicles}% \newcommand*\br@IIChr{\br@IIChronicles}% \newcommand*\br@Neh{\br@Nehemiah}% \newcommand*\br@Esth{\br@Esther}% \newcommand*\br@IMacc{\br@IMaccabees}% +\newcommand*\br@IMac{\br@IMaccabees}% +\newcommand*\br@IIMac{\br@IIMaccabees}% \newcommand*\br@IIMacc{\br@IIMaccabees}% +\newcommand*\br@Psa{\br@Psalms}% +\newcommand*\br@Psal{\br@Psalms}% +\newcommand*\br@Pro{\br@Proverbs}% \newcommand*\br@Prov{\br@Proverbs}% \newcommand*\br@Eccl{\br@Ecclesiastes}% \newcommand*\br@SofS{\br@SongofSongs}% +\newcommand*\br@Son{\br@SongofSongs}% +\newcommand*\br@Song{\br@SongofSongs}% +\newcommand*\br@Songs{\br@SongofSongs}% \newcommand*\br@Wis{\br@Wisdom}% \newcommand*\br@Wisd{\br@Wisdom}% \newcommand*\br@Ecclus{\br@Ecclesiasticus}% @@ -1475,32 +1608,65 @@ \newcommand*\br@Jer{\br@Jeremiah}% \newcommand*\br@Lam{\br@Lamentations}% \newcommand*\br@Ezek{\br@Ezekiel}% +\newcommand*\br@Ezk{\br@Ezekiel}% +\newcommand*\br@Eze{\br@Ezekiel}% \newcommand*\br@Dan{\br@Daniel}% \newcommand*\br@Hos{\br@Hosea}% +\newcommand*\br@Joe{\br@Joel}% +\newcommand*\br@Amo{\br@Amos}% \newcommand*\br@Obad{\br@Obadiah}% +\newcommand*\br@Oba{\br@Obadiah}% \newcommand*\br@Mic{\br@Micah}% \newcommand*\br@Nah{\br@Nahum}% \newcommand*\br@Zeph{\br@Zephaniah}% +\newcommand*\br@Zep{\br@Zephaniah}% \newcommand*\br@Hag{\br@Haggai}% \newcommand*\br@Zech{\br@Zechariah}% +\newcommand*\br@Zec{\br@Zechariah}% \newcommand*\br@Mal{\br@Malachi}% \newcommand*\br@Matt{\br@Matthew}% +\newcommand*\br@Mat{\br@Matthew}% +\newcommand*\br@Mar{\br@Mark}% +\newcommand*\br@Luk{\br@Luke}% +\newcommand*\br@Joh{\br@John}% +\newcommand*\br@Ac{\br@Acts}% \newcommand*\br@Rom{\br@Romans}% +\newcommand*\br@ICo{\br@ICorinthians}% \newcommand*\br@ICor{\br@ICorinthians}% +\newcommand*\br@IICo{\br@IICorinthians}% \newcommand*\br@IICor{\br@IICorinthians}% \newcommand*\br@Gal{\br@Galatians}% \newcommand*\br@Eph{\br@Ephesians}% \newcommand*\br@Phil{\br@Philippians}% +\newcommand*\br@Php{\br@Philippians}% +\newcommand*\br@Col{\br@Colossians}% +\newcommand*\br@IThe{\br@IThessalonians}% +\newcommand*\br@IThes{\br@IThessalonians}% \newcommand*\br@IThess{\br@IThessalonians}% +\newcommand*\br@IIThe{\br@IIThessalonians}% +\newcommand*\br@IIThes{\br@IIThessalonians}% \newcommand*\br@IIThess{\br@IIThessalonians}% +\newcommand*\br@ITi{\br@ITimothy}% \newcommand*\br@ITim{\br@ITimothy}% +\newcommand*\br@IITi{\br@IITimothy}% \newcommand*\br@IITim{\br@IITimothy}% \newcommand*\br@Tit{\br@Titus}% \newcommand*\br@Ti{\br@Titus}% \newcommand*\br@Philem{\br@Philemon}% +\newcommand*\br@Hb{\br@Hebrews}% \newcommand*\br@Jas{\br@James}% +\newcommand*\br@Jam{\br@James}% \newcommand*\br@IPet{\br@IPeter}% +\newcommand*\br@IPe{\br@IPeter}% \newcommand*\br@IIPet{\br@IIPeter}% +\newcommand*\br@IIPe{\br@IIPeter}% +\newcommand*\br@IJo{\br@IJohn}% +\newcommand*\br@IJoh{\br@IJohn}% +\newcommand*\br@IIJo{\br@IIJohn}% +\newcommand*\br@IIJoh{\br@IIJohn}% +\newcommand*\br@IIIJn{\br@IIIJohn}% +\newcommand*\br@IIIJo{\br@IIIJohn}% +\newcommand*\br@IIIJoh{\br@IIIJohn}% \newcommand*\br@Rev{\br@Revelation} % \end{macrocode} %\begin{macro}{\brs@default} diff --git a/macros/latex/contrib/bibleref/bibleref.pdf b/macros/latex/contrib/bibleref/bibleref.pdf index d0d85d2b7e..99a06b2011 100644 Binary files a/macros/latex/contrib/bibleref/bibleref.pdf and b/macros/latex/contrib/bibleref/bibleref.pdf differ diff --git a/macros/latex/contrib/bibleref/makefile b/macros/latex/contrib/bibleref/makefile index b5dbbd7b50..90e5996d92 100644 --- a/macros/latex/contrib/bibleref/makefile +++ b/macros/latex/contrib/bibleref/makefile @@ -3,7 +3,6 @@ all:bibleref.pdf bibleref.sty mkdir bibleref mkdir bibleref/samples latexmk sample*tex - ln sample*tex bibleref/samples ln sample*pdf bibleref/samples ln CHANGES *ins *dtx bibleref.pdf README makefile bibleref @$(RM) ../bibleref.zip diff --git a/macros/latex/contrib/bibleref/samples/sample-categories.pdf b/macros/latex/contrib/bibleref/samples/sample-categories.pdf index e2822edd5b..4ccfb376e4 100644 Binary files a/macros/latex/contrib/bibleref/samples/sample-categories.pdf and b/macros/latex/contrib/bibleref/samples/sample-categories.pdf differ diff --git a/macros/latex/contrib/bibleref/samples/sample-indextools.pdf b/macros/latex/contrib/bibleref/samples/sample-indextools.pdf index 9f34cb6d51..21662c8438 100644 Binary files a/macros/latex/contrib/bibleref/samples/sample-indextools.pdf and b/macros/latex/contrib/bibleref/samples/sample-indextools.pdf differ diff --git a/macros/latex/contrib/bibleref/samples/sample-xidx.pdf b/macros/latex/contrib/bibleref/samples/sample-xidx.pdf index b890da74db..a4d31ce675 100644 Binary files a/macros/latex/contrib/bibleref/samples/sample-xidx.pdf and b/macros/latex/contrib/bibleref/samples/sample-xidx.pdf differ diff --git a/macros/latex/contrib/bibleref/samples/sample.pdf b/macros/latex/contrib/bibleref/samples/sample.pdf index 631b27f11b..3f58999daa 100644 Binary files a/macros/latex/contrib/bibleref/samples/sample.pdf and b/macros/latex/contrib/bibleref/samples/sample.pdf differ diff --git a/macros/latex/contrib/bitset/README.md b/macros/latex/contrib/bitset/README.md new file mode 100644 index 0000000000..655e6c6231 --- /dev/null +++ b/macros/latex/contrib/bitset/README.md @@ -0,0 +1,11 @@ +# bitset + +bitset package for LaTeX + + + +This package defines and implements the data type bit set, +a vector of bits. The size of the vector may grow dynamically. +Individual bits can be manipulated. + + diff --git a/macros/latex/contrib/bitset/bitset.dtx b/macros/latex/contrib/bitset/bitset.dtx new file mode 100644 index 0000000000..307b681bbb --- /dev/null +++ b/macros/latex/contrib/bitset/bitset.dtx @@ -0,0 +1,2957 @@ +% \iffalse meta-comment +% +% File: bitset.dtx +% Version: 2019/12/09 v1.3 +% Info: Handle bit-vector datatype +% +% Copyright (C) +% 2007, 2011 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/bitset/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/bitset/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 bitset.dtx +% and the derived files +% bitset.sty, bitset.pdf, bitset.ins, bitset.drv, bitset-test1.tex, +% bitset-test2.tex, bitset-test3.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/bitset/bitset.dtx +% CTAN:macros/latex/contrib/bitset/bitset.pdf +% +% Unpacking: +% (a) If bitset.ins is present: +% tex bitset.ins +% (b) Without bitset.ins: +% tex bitset.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{bitset.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If bitset.drv is present: +% latex bitset.drv +% (b) Without bitset.drv: +% latex bitset.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 bitset.dtx +% makeindex -s gind.ist bitset.idx +% pdflatex bitset.dtx +% makeindex -s gind.ist bitset.idx +% pdflatex bitset.dtx +% +% Installation: +% TDS:tex/generic/bitset/bitset.sty +% TDS:doc/latex/bitset/bitset.pdf +% TDS:source/latex/bitset/bitset.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: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: bitset +Version: 2019/12/09 v1.3 + +Copyright (C) + 2007, 2011 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/bitset/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 bitset.dtx +and the derived files + bitset.sty, bitset.pdf, bitset.ins, bitset.drv, bitset-test1.tex, + bitset-test2.tex, bitset-test3.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{bitset.ins}{\from{bitset.dtx}{install}}% + \file{bitset.drv}{\from{bitset.dtx}{driver}}% + \usedir{tex/generic/bitset}% + \file{bitset.sty}{\from{bitset.dtx}{package}}% +} + +\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{* bitset.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `bitset.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{bitset.drv}% + [2019/12/09 v1.3 Handle bit-vector datatype (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\usepackage{amstext} +\usepackage{iftex} +\ifluatex +\else + \usepackage[T1]{fontenc}% + \usepackage{lmodern}% +\fi +\begin{document} + \DocInput{bitset.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{bitset.drv} +% +% \title{The \xpackage{bitset} package} +% \date{2019/12/09 v1.3} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/bitset/issues}}} +% +% \maketitle +% +% \begin{abstract} +% This package defines and implements the data type bit set, +% a vector of bits. The size of the vector may grow dynamically. +% Individual bits can be manipulated. +% \end{abstract} +% +% \tableofcontents +% +% \clearpage +% \section{Documentation} +% +% \subsection{Introduction} +% +% Annotations in the PDF format know entries whose values are +% integers. This numbers are interpreted as set of flags +% specifying properties. For example, annotation dictionaries +% can have a key |/F|. The bits of its integer value +% are interpreted the following way: +% \begin{quote} +% \begin{tabular}{@{}l|l@{}} +% Bit position & Property name\\ +% \hline +% 1 & Invisible\\ +% 2 & Hidden\\ +% 3 & Print\\ +% 4 & NoZoom\\ +% 5 & NoRotate\\ +% 6 & NoView\\ +% 7 & ReadOnly\\ +% \dots & \dots +% \end{tabular} +% \end{quote} +% Now, let's see how these values are set in package \xpackage{hyperref} +% before it uses this package (before v6.77a): +%\begin{quote} +%\begin{verbatim} +%\ifFld@hidden /F 6\else /F 4\fi +%\end{verbatim} +%\end{quote} +% Where are the other flags? The following example for key |/Ff| +% in a widget annotation +% supports at least three properties: +%\begin{quote} +%\begin{verbatim} +%\ifFld@multiline +% \ifFld@readonly /Ff 4097\else /Ff 4096\fi +%\else +% \ifFld@password +% \ifFld@readonly /Ff 8193\else /Ff 8192\fi +% \else +% \ifFld@readonly /Ff 1\fi +% \fi +%\fi +%\end{verbatim} +%\end{quote} +% But you see the point. It would be a nightmare to continue +% this way in supporting the missing flag settings. This kind +% of integers may have up to 32 bits. +% +% Therefore I wanted a data structure for setting and +% clearing individual bits. Also it should provide +% an export as decimal number. The snipsets above are +% executed in expansion contexts without \TeX's stomach +% commands. It would be convenient to have an expandable +% conversion from the data structure to the integer that +% gets written to the PDF file. +% +% This package \xpackage{bitset} implements such a data +% structure. The interface is quite close to Java's +% class |BitSet| in order not to learn to many interfaces +% for the same kind of data structure. +% +% \subsection{Glossary} +% +% \begin{description} +% \item[Bit set:] +% A bit set is a vector of bits or flags. +% The vector size is unlimited and +% grows dynamically. An undefined bit set is treated as bit +% set where all bits are cleared. +% +% Bit sets are addressed by name. A name should consists of +% letters or digits. Technically it must survive \cs{csname}, +% see \LaTeX's environment names for other names with such +% a constraint. Package \xpackage{babel}'s shorthands are +% not supported due to technical reasons. Shorthand support +% would break expandable operations. +% \item[Size:] +% A size of a bit set is the number of bits in use. +% It's the number of the highest index, incremented by one. +% Sizes are in the range |0| up to |2147483647|, the highest +% number supported by \TeX. +% \item[Index:] +% Bit positions in a bit set are addressed by an index number. +% The bit vector is zero based. The first and least significant +% bit is addressed by index |0| and the highest possible bit +% by |2147483646|. +% \item[Bit:] +% A bit is enoded as |0| for cleared/disabled or |1| for set/enabled. +% \end{description} +% +% \subsection{Design principles} +% +% \begin{description} +% \item[Name conventions:] +% To avoid conflicts with existing macro names, the operations +% are prefixed by the package name. +% \item[Zero based indexes:] The first bit is addressed by zero. +% (Convention of array indexing in C, Java, \dots) +% \item[Unlimited size:] +% There is no restriction on the size of a bit set other than +% usual memory limitations. \cs{bitsetSetDec} and \cs{bitsetGetDec} +% transparently switch to package \xpackage{bigintcalc} if the numbers +% get too large for \TeX's number limit. +% \item[Expandibility:] +% Any operation that does not change the bit set is expandable. +% And all operations that extract or calculate some result +% do this in exact two expansion steps. For example, +% a macro \cs{Macro} wants a bit set as decimal number. +% But the argument must be a plain number without macros. +% Thus you could prefix \cs{bitsetGetDec} with \cs{number}. +% However this won't work for bit sets with 31 or more bits +% because of \TeX's number limit of $2^{31}-1$. +% then just hit the operator with two \cs{expandafter}: +% \begin{quote} +% |\expandafter\expandafter\expandafter|\\ +% |\Macro\bitsetGetDec{foo}| +% \end{quote} +% |\bitsetGetDec| is hit first by the third \cs{expandafter} +% and then by the second one. +% \item[Format independence:] This package is written as \LaTeX\ package, +% but it does not depend on \LaTeX. It will also work for other formats +% such as \plainTeX. +% \item[Independence from \TeX\ engines:] +% Vanilla \TeX\ is all you need. Calculations are delegated to +% packages \xpackage{intcalc} and \xpackage{bigintcalc}. +% They don't need any special features, but they will switch +% to a little more efficient implementation if features such +% as \cs{numexpr} are available. +% \item[Numeric arguments:] Anything that is accepted by +% \cs{number}. If \eTeX\ is detected, also expressions +% for \cs{numexpr} are supported. The only exception so far +% is the number for \cs{bitsetSetDec}. The number might be too +% large for \cs{number} or \cs{numexpr}. +% \item[Error messages:] +% In expandable contexts, only a limited set of \TeX\ primitive +% commands work as expected. So called stomach commands behave +% like \cs{relax} and don't get expanded or executed. +% Unhappily also the error commands belong to this category. +% The expandable operations will throw an unknown control +% sequence instead to get \TeX's and user's attention. +% The name of these control sequences starts with +% \cs{BitSetError:} with the type of error after the colon. +% \end{description} +% +% \subsection{Operator overview} +% +% \begin{minipage}{\linewidth} +% \begin{description} +% \def\It#1#2{^^A +% \item[^^A +% {#1} ^^A +% \textmd{(\hyperref[{sec:#2}]{section \ref*{sec:#2}})}^^A +% ]^^A +% \mbox{}\\^^A +% } +% \def\op#1{^^A +% \cs{bitset}\texttt{\bfseries#1}^^A +% } +% \def\M#1{\meta{#1}} +% \def\Q{\hspace*{\fill}} +% \It{Miscellaneous}{misc} +% \op{Reset}\Q \M{BitSet}\\ +% \op{Let}\Q \M{BitSet A} \M{BitSet B} +% \It{Import}{import} +% \op{SetBin}, \op{SetOct}, \op{SetHex}\Q \M{BitSet} \M{Value}\\ +% \op{SetDec}\Q \M{BitSet} \M{Value} +% \It{Export\textsuperscript{a}}{export} +% \op{GetBin}, \op{GetOct}, \op{GetHex}\Q \M{BitSet} \M{MinSize}\\ +% \op{GetDec}\Q \M{BitSet} +% \It{Logical operators}{log} +% \op{And}, \op{AndNot}\Q \M{BitSet A} \M{BitSet B}\\ +% \op{Or}, \op{Xor}\Q \M{BitSet A} \M{BitSet B} +% \It{Shifting}{shift} +% \op{ShiftLeft}, \op{ShiftRight}\Q \M{BitSet} \M{ShiftAmount}\\ +% \It{Bit manipulation}{bitman} +% \op{Clear}, \op{Set}, \op{Flip}\Q \M{BitSet} \M{Index}\\ +% \op{SetValue}\Q \M{BitSet} \M{Index} \M{Value}\\ +% \op{ClearRange}, \op{SetRange}, \op{FlipRange}\\ +% \Q \M{BitSet} \M{IndexFrom} \M{IndexTo}\\ +% \op{SetValueRange}\Q \M{BitSet} \M{IndexFrom} \M{IndexTo} +% \It{Bit retrieval\textsuperscript{a}}{bitret} +% \op{Get}\Q \M{BitSet} \M{Index}\\ +% \op{NextClearBit}, \op{NextSetBit}\Q \M{BitSet} \M{Index}\\ +% \op{GetSetBitList}\Q \M{BitSet} +% \It{Bit set properties}{prop} +% \op{Size}, \op{Cardinality}\Q \M{BitSet} +% \It{Queries\textsuperscript{b}}{query} +% \op{IsDefined}, \op{IsEmpty}\Q \M{BitSet} \M{Then} \M{Else}\\ +% \op{Equals}, \op{Intersects}\Q \M{BitSet A} \M{BitSet B} \M{Then} \M{Else}\\ +% \op{Query}\Q \M{BitSet} \M{Index} \M{Then} \M{Else} +% \end{description} +% \footnotetext[1]{Macros are expandable, full expansion by two steps.} +% \footnotetext[2]{Macros are expandable.} +% \end{minipage} +% +% \subsection{Package loading} +% +% The package can be used as normal \LaTeX\ package: +%\begin{quote} +%|\usepackage{bitset}| +%\end{quote} +% Also \plainTeX\ is supported: +%\begin{quote} +%|\input bitset.sty\relax| +%\end{quote} +% +% \subsection{Operators} +% +% The following macros work on and with bit sets. +% A bit set \meta{BitSet} is represented by a name. +% The should consist of letters and digits. Technically +% it must survive \cs{csname}. It is the same constraint +% that must be satisfied by label or environment names +% in \LaTeX. +% +% However active characters that are shorthands +% of package \xpackage{babel} are not supported. +% Support for shorthands works by an assignment. +% But many operators +% such as \cs{bitsetGetDec} must be usable in expandable +% contexts. There assignments will not be executed in the +% best case or they will cause errors. +% +% The bits in a bit set are addressed by non-negative +% integers starting from zero. Thus negative index +% numbers cause an error message. Because index numbers +% are \TeX\ numbers. The largest index is 2147483647. +% But in practice memory limits and patience limits +% will be very likely reached much before. +% +% \subsubsection{Miscellaneous}\label{sec:misc} +% +% There isn't a separate operation for bit set creation. +% For simplicity an undefined bit set is treated as bit set +% with all bits cleared. +% +% \begin{declcs}{bitsetReset} \M{BitSet} +% \end{declcs} +% Macro \cs{bitsetReset} clears all bits. The result is an +% empty bit set. It may also be used as replacement for +% an operation ``new'', because an undefined bit set is defined +% afterwards. +% +% \begin{declcs}{bitsetLet} \M{BitSet A} \M{BitSet B} +% \end{declcs} +% Macro \cs{bitsetLet} performs a simple assignment similar +% to \TeX's \cs{let}. After the operation \meta{BitSet A} has +% the same value as \meta{BitSet B}. If \meta{BitSet B} is +% undefined, then \meta{BitSet A} will be the empty bit set. +% +% Note: If \meta{BitSet A} exists, it will be overwritten. +% +% \subsubsection{Import}\label{sec:import} +% +% \begin{declcs}{bitsetSetBin} \M{BitSet} \M{BinaryNumber}\\ +% \cs{bitsetSetOct} \M{BitSet} \M{OctalNumber}\\ +% \cs{bitsetSetHex} \M{BitSet} \M{HexadecimalNumber} +% \end{declcs} +% The numbers are interpreted as bit vectors and the flags in +% the bit \meta{BitSet} set are set accordingly. +% These numeric arguments are the only arguments where +% spaces are allowed. Then the numbers are easier to read. +% +% \begin{declcs}{bitsetSetDec} \M{BitSet} \M{DecimalNumber} +% \end{declcs} +% Macro \cs{bitsetSetDec} uses \meta{DecimalNumber} to +% set the bit set \meta{BitSet}. +% The numeric argument must expand +% to a plain number consisting of decimal digits without +% command tokens or spaces. Internally this argument is +% expanded only. It cannot be passed to \cs{number} or +% \cs{numexpr}, because the number may be too large for them. +% However \cs{number} or |\the\numexpr| may be used +% explicitely. This also helps for unexpandable number +% command tokens or registers (\cs{z@}, \cs{@ne}, \cs{count@}, \dots). +% Also \LaTeX'\ \cs{value} needs prefixing: +% \begin{quote} +% |\bitsetSetDec{foo}{\number\value{bar}}| +% \end{quote} +% +% \subsubsection{Export}\label{sec:export} +% +% \begin{declcs}{bitsetGetBin} \M{BitSet} \M{MinSize}\\ +% \cs{bitsetGetOct} \M{BitSet} \M{MinSize}\\ +% \cs{bitsetGetHex} \M{BitSet} \M{MinSize} +% \end{declcs} +% These macros returns the bit set as binary, octal or hexadecimal +% number. If the bit size is smaller than \meta{MinSize} the gap is +% filled with leading zeros. +% Example: +% \begin{quote} +% |\bitsetReset{abc}|\\ +% |\bitsetSet{abc}{2}|\\ +% |\bitsetGetBin{abc}{8}| $\rightarrow$ |00000100|\\ +% |\bitsetSet{abc}{5}\bitsetSet{abc}{7}|\\ +% |\bitsetGetHex{abc}{16}| $\rightarrow$ |00A2| +% \end{quote} +% Macro \cs{bitsetGetHex} uses the uppercase letters |A| to |F|. +% The catcode of the letters is one of 11 (letter) or 12 (other). +% +% \begin{declcs}{bitsetGetDec} \M{BitSet} +% \end{declcs} +% Macro \cs{bitsetGetDec} returns the bit set \meta{BitSet} as +% decimal number. The returned number can be larger than +% \TeX's number limit of $2^{31}-1$. +% +% \subsubsection{Logical operators}\label{sec:log} +% +% \begin{declcs}{bitsetAnd} \M{BitSet A} \M{BitSet B} +% \end{declcs} +% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} +% \mathbin{\text{and}} B \qquad (\forall\, \text{bits})$ +% +% \begin{declcs}{bitsetAndNot} \M{BitSet A} \M{BitSet B} +% \end{declcs} +% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} +% \mathbin{\text{and}} (\text{not}\,B) \qquad (\forall\, \text{bits})$ +% +% \begin{declcs}{bitsetOr} \M{BitSet A} \M{BitSet B} +% \end{declcs} +% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} +% \mathbin{\text{or}} B \qquad (\forall\, \text{bits})$ +% +% \begin{declcs}{bitsetXor} \M{BitSet A} \M{BitSet B} +% \end{declcs} +% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} +% \mathbin{\text{xor}} B \qquad (\forall\, \text{bits})$ +% +% \subsubsection{Shifting}\label{sec:shift} +% +% \begin{declcs}{bitsetShiftLeft} \M{BitSet} \M{ShiftAmount}\\ +% \cs{bitsetShiftRight} \M{BitSet} \M{ShiftAmount} +% \end{declcs} +% A left shift by one is a multiplication by two, thus left shifting +% moves the flags to higher positions. The new created low positions +% are filled by zeros. +% +% A right shift is the opposite, dividing by two, movint the bits +% to lower positions. The number will become smaller, the lowest +% bits are lost. +% +% If the \meta{ShiftAmount} is negative, it reverts the meaning of +% the shift operation. A left shift becomes a right shift. +% A \meta{ShiftAmount} of zero is ignored. +% +% \subsubsection{Bit manipulation}\label{sec:bitman} +% +% \begin{declcs}{bitsetClear} \M{BitSet} \M{Index}\\ +% \cs{bitsetSet} \M{BitSet} \M{Index}\\ +% \cs{bitsetFlip} \M{BitSet} \M{Index} +% \end{declcs} +% This macros manipulate a single bit in \meta{BitSet} addressed +% by \cs{Index}. Macro \cs{bitsetClear} disables the bit, +% \cs{bitsetSet} enables it and \cs{bitsetFlip} reverts the current +% setting of the bit. +% +% \begin{declcs}{bitsetSetValue} \M{BitSet} \M{Index} \M{Bit} +% \end{declcs} +% Macro \cs{bitsetSetValue} puts bit \meta{Bit} at position \meta{Index} +% in bit set \meta{BitSet}. \meta{Bit} must be a valid \TeX\ number +% equals to zero (disabled/cleared) or one (enabled/set). +% +% \subsubsection{Bit retrieval}\label{sec:bitret} +% +% \begin{declcs}{bitsetGet} \M{BitSet} \M{Index} +% \end{declcs} +% Macro \cs{bitsetGet} extracts the status of the bit at +% position \meta{Index} in bit set \meta{BitSet}. +% Digit |1| is returned if the bit is set/enabled. If the +% bit is cleared/disabled and in cases of an undefined bitset or +% an index number out of range the return value is |0|. +% +% \begin{declcs}{bitsetNextClearBit} \M{BitSet} \M{Index} +% \end{declcs} +% Starting at position \meta{Index} (inclusive) the bits +% are inspected. The first position without a set bit is returned. +% Possible results are decimal numbers: \meta{Index}, \meta{Index} + 1, +% \dots, ($\infty$) +% +% \begin{declcs}{bitsetNextSetBit} \M{BitSet} \M{Index} +% \end{declcs} +% Starting at position \meta{Index} (inclusive) the bits are +% inspected and the index position of the first found set bit +% is returned. If there isn't such a bit, then the result is +% |-1|. In summary possible results are decimal numbers: +% |-1|, \meta{Index}, \meta{Index} + 1, \dots, ($\infty$) +% +% \begin{declcs}{bitsetGetSetBitList} \M{BitSet} +% \end{declcs} +% Macro \cs{bitsetGetSetBitList} is an application for +% \cs{bitsetNextSetBit}. The set bits are iterated and +% returned as comma separated list of index positions +% in increasing order. The list is empty in case of +% an empty bit set. +% +% \subsubsection{Bit set properties}\label{sec:prop} +% +% \begin{declcs}{bitsetSize} \M{BitSet} +% \end{declcs} +% Macro \cs{bitsetSize} returns number of bits in use. +% It is the same as the index number of the highest set/enabled bit +% incremented by one. +% +% \begin{declcs}{bitsetCardinality} \M{BitSet} +% \end{declcs} +% Macro \cs{bitsetCardinality} counts the number of set/enabled bits. +% +% \subsubsection{Queries}\label{sec:query} +% +% Also the query procedures are expandable. They ask for a piece +% of information about a bit set and execute code depending +% on the answer. +% +% \begin{declcs}{bitsetIsDefined} \M{BitSet} \M{Then} \M{Else} +% \end{declcs} +% If the bit set with the name \meta{BitSet} exists the code +% given in \meta{Then} is executed, otherwise \meta{Else} is used. +% +% \begin{declcs}{bitsetIsEmpty} \M{BitSet} \M{Then} \M{Else} +% \end{declcs} +% If the bit set \meta{BitSet} exists and at least one bit +% is set/enabled, the code in \meta{Then} is executed, +% \meta{Else} otherwise. +% +% \begin{declcs}{bitsetEquals} \M{BitSet A} \M{BitSet B} \M{Then} \M{Else} +% \end{declcs} +% Both bit sets are equal if and only if either both are undefined +% or both are defined and represents the same bit values at the +% same positions. Thus this definition is reflexive, symmeric, +% and transitive, enough for an equivalent relation. +% +% \begin{declcs}{bitsetIntersects} \M{BitSet A} \M{BitSet B} \M{Then} \M{Else} +% \end{declcs} +% If and only if \meta{BitSet A} and \meta{BitSet B} have +% at least one bit at the same position that is set, then +% code part \meta{Then} is executed. +% +% \begin{declcs}{bitsetQuery} \M{BitSet} \M{Index} \M{Then} \M{Else} +% \end{declcs} +% It's just a wrapper for \cs{bitsetGet}. If the bit at position +% \meta{Index} is enabled, code \meta{Then} is called. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% The internal format of a bit set is quite simple, a sequence +% of digits |0| and |1|. The least significant bit is left. +% A bit set without any flag set is encoded by |0|. Also +% undefined bit sets are treated that way. After the +% highest bit that is set there are no further zeroes. +% A regular expression of valid bit sets values: +% \begin{quote} +% |0|\string||[01]*1| +% \end{quote} +% +% \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@bitset.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{bitset}{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@bitset.sty\endcsname +\ProvidesPackage{bitset}% + [2019/12/09 v1.3 Handle bit-vector datatype (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 BitSet@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\BitSet@AtEnd{% + \BitSet@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{33}{12}% ! +\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{58}{11}% : (letter!) +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{63}{14}% ? (comment!) +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\TMP@EnsureCode{96}{12}% ` +\edef\BitSet@AtEnd{\BitSet@AtEnd\noexpand\endinput} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname BitSet@TestMode\endcsname\relax +\else + \catcode63=9 % ? (ignore) +\fi +? \let\BitSet@@TestMode\BitSet@TestMode +% \end{macrocode} +% +% \subsection{Package loading} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \def\TMP@RequirePackage#1[#2]{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname ver@#1.sty\endcsname\relax + \input #1.sty\relax + \fi + }% + \TMP@RequirePackage{infwarerr}[2007/09/09]% + \TMP@RequirePackage{intcalc}[2007/09/27]% + \TMP@RequirePackage{bigintcalc}[2007/09/27]% +\else + \RequirePackage{infwarerr}[2007/09/09]% + \RequirePackage{intcalc}[2007/09/27]% + \RequirePackage{bigintcalc}[2007/09/27]% +\fi +% \end{macrocode} +% +% \subsection{Help macros} +% +% \subsubsection{Number constant} +% +% \begin{macro}{\BitSet@MaxSize} +% \begin{macrocode} +\def\BitSet@MaxSize{2147483647}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{General basic macros} +% +% \begin{macro}{\BitSet@Empty} +% \begin{macrocode} +\def\BitSet@Empty{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@FirstOfOne} +% \begin{macrocode} +\def\BitSet@FirstOfOne#1{#1} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Gobble} +% \begin{macrocode} +\def\BitSet@Gobble#1{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@FirstOfTwo} +% \begin{macrocode} +\def\BitSet@FirstOfTwo#1#2{#1} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@SecondOfTwo} +% \begin{macrocode} +\def\BitSet@SecondOfTwo#1#2{#2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BitSet@Space} +% \begin{macrocode} +\def\BitSet@Space{ } +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@ZapSpace} +% \begin{macrocode} +\def\BitSet@ZapSpace#1 #2{% + #1% + \ifx\BitSet@Empty#2% + \else + \expandafter\BitSet@ZapSpace + \fi + #2% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Tail recursion} +% +% \begin{macro}{\BitSet@Fi} +% \begin{macrocode} +\let\BitSet@Fi\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@AfterFi} +% \begin{macrocode} +\def\BitSet@AfterFi#1#2\BitSet@Fi{\fi#1} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@AfterFiFi} +% \begin{macrocode} +\def\BitSet@AfterFiFi#1#2\BitSet@Fi{\fi\fi#1}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@AfterFiFiFi} +% \begin{macrocode} +\def\BitSet@AfterFiFiFi#1#2\BitSet@Fi{\fi\fi\fi#1}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Check macros} +% +% \begin{macro}{\BitSet@IfUndefined} +% \begin{macrocode} +\def\BitSet@IfUndefined#1{% + \expandafter\ifx\csname BS@#1\endcsname\relax + \expandafter\BitSet@FirstOfTwo + \else + \expandafter\BitSet@SecondOfTwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BitSet@CheckIndex} +% |#1|: continuation code\\ +% |#2|: BitSet\\ +% |#3|: Index +% \begin{macrocode} +\def\BitSet@CheckIndex#1#2#3{% + \BitSet@IfUndefined{#2}{\bitsetReset{#2}}{}% + \expandafter\expandafter\expandafter\BitSet@@CheckIndex + \intcalcNum{#3}!% + {#2}{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@CheckIndex} +% |#1|: plain Index\\ +% |#2|: BitSet\\ +% |#3|: continuation code +% \begin{macrocode} +\def\BitSet@@CheckIndex#1!#2#3{% + \ifnum#1<0 % + \BitSet@AfterFi{% + \@PackageError{bitset}{% + Invalid negative index (#1)% + }\@ehc + }% + \else + \BitSet@AfterFi{% + #3{#2}{#1}% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Miscellaneous}\label{src:misc} +% +% \begin{macro}{\bitsetReset} +% \begin{macrocode} +\def\bitsetReset#1{% + \expandafter\def\csname BS@#1\endcsname{0}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bitsetLet} +% \begin{macrocode} +\def\bitsetLet#1#2{% + \BitSet@IfUndefined{#2}{% + \bitsetReset{#1}% + }{% + \expandafter\let\csname BS@#1\expandafter\endcsname + \csname BS@#2\endcsname + }% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Import}\label{src:import} +% +% \subsubsection{From binary number} +% +% \begin{macro}{\bitsetSetBin} +% \begin{macrocode} +\def\bitsetSetBin#1#2{% + \edef\BitSet@Temp{#2}% + \edef\BitSet@Temp{% + \expandafter\expandafter\expandafter\BitSet@ZapSpace + \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty + }% + \edef\BitSet@Temp{% + \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty + }% + \ifx\BitSet@Temp\BitSet@Empty + \expandafter\let\csname BS@#1\endcsname\BitSet@Zero + \else + \expandafter\edef\csname BS@#1\endcsname{% + \expandafter\BitSet@Reverse\BitSet@Temp!% + }% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@KillZeros} +% \begin{macrocode} +\def\BitSet@KillZeros#1{% + \ifx#10% + \expandafter\BitSet@KillZeros + \else + #1% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Reverse} +% \begin{macrocode} +\def\BitSet@Reverse#1#2!{% + \ifx\\#2\\% + #1% + \else + \BitSet@AfterFi{% + \BitSet@Reverse#2!#1% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{From octal/hex number} +% +% \begin{macro}{\bitsetSetOct} +% \begin{macrocode} +\def\bitsetSetOct{% + \BitSet@SetOctHex\BitSet@FromFirstOct +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetSetHex} +% \begin{macrocode} +\def\bitsetSetHex{% + \BitSet@SetOctHex\BitSet@FromFirstHex +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@SetOctHex} +% \begin{macrocode} +\def\BitSet@SetOctHex#1#2#3{% + \edef\BitSet@Temp{#3}% + \edef\BitSet@Temp{% + \expandafter\expandafter\expandafter\BitSet@ZapSpace + \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty + }% + \edef\BitSet@Temp{% + \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty + }% + \ifx\BitSet@Temp\BitSet@Empty + \expandafter\let\csname BS@#2\endcsname\BitSet@Zero + \else + \edef\BitSet@Temp{% + \expandafter#1\BitSet@Temp!% + }% + \ifx\BitSet@Temp\BitSet@Empty + \expandafter\let\csname BS@#2\endcsname\BitSet@Zero + \else + \expandafter\edef\csname BS@#2\endcsname{% + \expandafter\BitSet@Reverse\BitSet@Temp!% + }% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@FromFirstOct} +% \begin{macrocode} +\def\BitSet@FromFirstOct#1{% + \ifx#1!% + \else + \ifcase#1 \BitSet@AfterFiFi\BitSet@FromFirstOct + \or 1% + \or 10% + \or 11% + \or 100% + \or 101% + \or 110% + \or 111% + \else \BitSetError:WrongOctalDigit% + \fi + \expandafter\BitSet@FromOct + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@FromOct} +% \begin{macrocode} +\def\BitSet@FromOct#1{% + \ifx#1!% + \else + \ifcase#1 000% + \or 001% + \or 010% + \or 011% + \or 100% + \or 101% + \or 110% + \or 111% + \else \BitSetError:WrongOctalDigit% + \fi + \expandafter\BitSet@FromOct + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BitSet@FromFirstHex} +% \begin{macrocode} +\def\BitSet@FromFirstHex#1{% + \ifx#1!% + \else + \ifx#10% + \BitSet@AfterFiFi\BitSet@FromFirstHex + \fi + \expandafter\ifx\csname BitSet@Hex#1\endcsname\relax + \BitSetError:InvalidHexDigit% + \else + \expandafter\expandafter\expandafter\BitSet@KillZeros + \csname BitSet@Hex#1\endcsname + \fi + \expandafter\BitSet@FromHex + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@FromHex} +% \begin{macrocode} +\def\BitSet@FromHex#1{% + \ifx#1!% + \else + \expandafter\ifx\csname BitSet@Hex#1\endcsname\relax + \BitSetError:InvalidHexDigit% + \else + \csname BitSet@Hex#1\endcsname + \fi + \expandafter\BitSet@FromHex + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Hex[0..F]} +% \begin{macrocode} +\def\BitSet@Temp#1{% + \expandafter\def\csname BitSet@Hex#1\endcsname +} +\BitSet@Temp 0{0000}% +\BitSet@Temp 1{0001}% +\BitSet@Temp 2{0010}% +\BitSet@Temp 3{0011}% +\BitSet@Temp 4{0100}% +\BitSet@Temp 5{0101}% +\BitSet@Temp 6{0110}% +\BitSet@Temp 7{0111}% +\BitSet@Temp 8{1000}% +\BitSet@Temp 9{1001}% +\BitSet@Temp A{1010}% +\BitSet@Temp B{1011}% +\BitSet@Temp C{1100}% +\BitSet@Temp D{1101}% +\BitSet@Temp E{1110}% +\BitSet@Temp F{1111}% +\BitSet@Temp a{1010}% +\BitSet@Temp b{1011}% +\BitSet@Temp c{1100}% +\BitSet@Temp d{1101}% +\BitSet@Temp e{1110}% +\BitSet@Temp f{1111}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{From decimal number} +% +% \begin{macro}{\bitsetSetDec} +% \begin{macrocode} +\def\bitsetSetDec#1#2{% + \edef\BitSet@Temp{#2}% + \edef\BitSet@Temp{% + \expandafter\expandafter\expandafter\BitSet@ZapSpace + \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty + }% + \edef\BitSet@Temp{% + \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty + }% + \ifx\BitSet@Temp\BitSet@Empty + \expandafter\let\csname BS@#1\endcsname\BitSet@Zero + \else + \ifcase\bigintcalcSgn{\BitSet@Temp} % + \expandafter\let\csname BS@#1\endcsname\BitSet@Zero + \or + \ifnum\bigintcalcCmp\BitSet@Temp\BitSet@MaxSize>0 % + \expandafter\edef\csname BS@#1\endcsname{% + \expandafter\BitSet@SetDecBig\BitSet@Temp!% + }% + \else + \expandafter\edef\csname BS@#1\endcsname{% + \expandafter\BitSet@SetDec\BitSet@Temp!% + }% + \fi + \else + \@PackageError{bitset}{% + Bit sets cannot be negative% + }\@ehc + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@SetDecBig} +% \begin{macrocode} +\def\BitSet@SetDecBig#1#2#3#4#5#6#7#8#9!{% + \ifx\\#9\\% + \BitSet@SetDec#1#2#3#4#5#6#7#8!% + \else + \ifcase\BigIntCalcOdd#1#2#4#5#6#7#8#9! % + 0% + \or + 1% +? \else\BitSetError:ThisCannotHappen% + \fi + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@SetDecBig + \BigIntCalcShr#1#2#3#4#5#6#7#8#9!!% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@SetDec} +% \begin{macrocode} +\def\BitSet@SetDec#1!{% + \ifcase#1 % + \or 1% + \else + \ifodd#1 % + 1% + \else + 0% + \fi + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@SetDec + \IntCalcShr#1!!% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Export}\label{src:export} +% +% \subsubsection{To binary number} +% +% \begin{macro}{\bitsetGetBin} +% \begin{macrocode} +\def\bitsetGetBin#1#2{% + \romannumeral0% + \expandafter\expandafter\expandafter\BitSet@@GetBin + \intcalcNum{#2}!{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@GetBin} +% \begin{macrocode} +\def\BitSet@@GetBin#1!#2{% + \BitSet@IfUndefined{#2}{% + \ifnum#1>1 % + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@Fill + \IntCalcDec#1!!0% + }% + \else + \BitSet@AfterFi{ 0}% + \BitSet@Fi + }{% + \expandafter\expandafter\expandafter\BitSet@NumBinRev + \expandafter\expandafter\expandafter1% + \expandafter\expandafter\expandafter!% + \csname BS@#2\endcsname!!#1!% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Fill} +% |#1|: number of leading digits |0|\\ +% |#2|: result +% \begin{macrocode} +\def\BitSet@Fill#1!{% + \ifnum#1>0 % + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@Fill + \IntCalcDec#1!!0% + }% + \else + \BitSet@AfterFi{ }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BitSet@NumBinRev} +% |#1|: bit counter (including |#2|)\\ +% |#2#3|: reverted number\\ +% |#4|: result\\ +% |#5|: min size +% \begin{macrocode} +\def\BitSet@NumBinRev#1!#2#3!{% + \ifx\\#3\\% + \BitSet@AfterFi{% + \BitSet@NumBinFill#1!#2% + }% + \else + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@NumBinRev + \IntCalcInc#1!!#3!#2% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@NumBinFill} +% \begin{macrocode} +\def\BitSet@NumBinFill#1!#2!#3!{% + \ifnum#3>#1 % + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@Fill + \IntCalcSub#3!#1!!#2% + }% + \else + \BitSet@AfterFi{ #2}% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{To octal/hexadecimal number} +% +% \begin{macro}{\bitsetGetOct} +% \begin{macrocode} +\def\bitsetGetOct#1#2{% + \romannumeral0% + \bitsetIsEmpty{#1}{% + \expandafter\expandafter\expandafter\BitSet@@GetOctHex + \intcalcNum{#2}!3!230% + }{% + \expandafter\expandafter\expandafter\BitSet@@GetOct + \expandafter\expandafter\expandafter1% + \expandafter\expandafter\expandafter!% + \expandafter\expandafter\expandafter!% + \csname BS@#1\endcsname00% + \BitSet@Empty\BitSet@Empty\BitSet@Empty!{#2}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetGetHex} +% \begin{macrocode} +\def\bitsetGetHex#1#2{% + \romannumeral0% + \bitsetIsEmpty{#1}{% + \expandafter\expandafter\expandafter\BitSet@@GetOctHex + \intcalcNum{#2}!4!340% + }{% + \expandafter\expandafter\expandafter\BitSet@@GetHex + \expandafter\expandafter\expandafter1% + \expandafter\expandafter\expandafter!% + \expandafter\expandafter\expandafter!% + \csname BS@#1\endcsname000% + \BitSet@Empty\BitSet@Empty\BitSet@Empty\BitSet@Empty!{#2}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@GetOct} +% |#1|: number of digits\\ +% |#2|: result\\ +% |#3#4#5|: bits +% \begin{macrocode} +\def\BitSet@@GetOct#1!#2!#3#4#5{% + \ifx#5\BitSet@Empty + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@GetOctHex + \IntCalcDec#1!!#2!23% + }% + \else + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@@GetOct + \number\IntCalcInc#1!\expandafter\expandafter\expandafter!% + \csname BitSet@Oct#5#4#3\endcsname#2!% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Oct[000..111]} +% \begin{macrocode} +\def\BitSet@Temp#1#2#3#4{% + \expandafter\def\csname BitSet@Oct#1#2#3\endcsname{#4}% +} +\BitSet@Temp0000% +\BitSet@Temp0011% +\BitSet@Temp0102% +\BitSet@Temp0113% +\BitSet@Temp1004% +\BitSet@Temp1015% +\BitSet@Temp1106% +\BitSet@Temp1117% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@GetHex} +% |#1|: number of digits\\ +% |#2|: result\\ +% |#3#4#5#6|: bits +% \begin{macrocode} +\def\BitSet@@GetHex#1!#2!#3#4#5#6{% + \ifx#6\BitSet@Empty + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@GetOctHex + \IntCalcDec#1!!#2!34% + }% + \else + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@@GetHex + \number\IntCalcInc#1!\expandafter\expandafter\expandafter!% + \csname BitSet@Hex#6#5#4#3\endcsname#2!% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Hex[0000..1111]} +% \begin{macrocode} +\def\BitSet@Temp#1#2#3#4#5{% + \expandafter\def\csname BitSet@Hex#1#2#3#4\endcsname{#5}% +} +\BitSet@Temp00000% +\BitSet@Temp00011% +\BitSet@Temp00102% +\BitSet@Temp00113% +\BitSet@Temp01004% +\BitSet@Temp01015% +\BitSet@Temp01106% +\BitSet@Temp01117% +\BitSet@Temp10008% +\BitSet@Temp10019% +\BitSet@Temp1010A% +\BitSet@Temp1011B% +\BitSet@Temp1100C% +\BitSet@Temp1101D% +\BitSet@Temp1110E% +\BitSet@Temp1111F% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@GetOctHex} +% Leading zeros $ (|#4| - |#1| * 3 + 2)/3 $ if $ |#4| > |#1| * 3$\\ +% |#1|: digit size\\ +% |#2|: result\\ +% |#3|: bits per digit - 1\\ +% |#4|: bits per digit +% |#5|: garbage\\ +% |#6|: min size +% \begin{macrocode} +\def\BitSet@GetOctHex#1!#2!#3#4#5!#6{% + \expandafter\BitSet@@GetOctHex + \number\intcalcNum{#6}\expandafter\expandafter\expandafter!% + \IntCalcMul#1!#4!!#3#4#2% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@GetOctHex} +% |#1|: plain min size\\ +% |#2|: digits * (bits per digit)\\ +% |#3|: bits per digit - 1\\ +% |#4|: bits per digit +% \begin{macrocode} +\def\BitSet@@GetOctHex#1!#2!#3#4{% + \ifnum#1>#2 % + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\BitSet@Fill + \expandafter\IntCalcDiv\number + \expandafter\expandafter\expandafter\IntCalcAdd + \IntCalcSub#1!#2!!#3!!#4!!% + }% + \else + \BitSet@AfterFi{ }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{To decimal number} +% +% \begin{macro}{\bitsetGetDec} +% \begin{macrocode} +\def\bitsetGetDec#1{% + \romannumeral0% + \BitSet@IfUndefined{#1}{ 0}{% + \expandafter\expandafter\expandafter\BitSet@GetDec + \csname BS@#1\endcsname!% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@GetDec} +% \begin{macrocode} +\def\BitSet@GetDec#1#2!{% + \ifx\\#2\\% + \BitSet@AfterFi{ #1}% + \else + \BitSet@AfterFi{% + \BitSet@@GetDec2!#1!#2!% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@GetDec} +% |#1|: power of two\\ +% |#2|: result\\ +% |#3#4|: number +% \begin{macrocode} +\def\BitSet@@GetDec#1!#2!#3#4!{% + \ifx\\#4\\% + \ifx#31% + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@Space + \IntCalcAdd#1!#2!% + }% + \else + \BitSet@AfterFiFi{ #2}% + \fi + \else + \ifx#31% + \BitSet@AfterFiFi{% + \csname BitSet@N#1% + \expandafter\expandafter\expandafter\endcsname + \IntCalcAdd#1!#2!!#4!% + }% + \else + \BitSet@AfterFiFi{% + \csname BitSet@N#1\endcsname#2!#4!% + }% + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@N[1,2,4,...]} +% \begin{macrocode} +\def\BitSet@Temp#1#2{% + \expandafter\def\csname BitSet@N#1\endcsname{% + \BitSet@@GetDec#2!% + }% +} +\BitSet@Temp{1}{2} +\BitSet@Temp{2}{4} +\BitSet@Temp{4}{8} +\BitSet@Temp{8}{16} +\BitSet@Temp{16}{32} +\BitSet@Temp{32}{64} +\BitSet@Temp{64}{128} +\BitSet@Temp{128}{256} +\BitSet@Temp{256}{512} +\BitSet@Temp{512}{1024} +\BitSet@Temp{1024}{2048} +\BitSet@Temp{2048}{4096} +\BitSet@Temp{4096}{8192} +\BitSet@Temp{8192}{16384} +\BitSet@Temp{16384}{32768} +\BitSet@Temp{32768}{65536} +\BitSet@Temp{65536}{131072} +\BitSet@Temp{131072}{262144} +\BitSet@Temp{262144}{524288} +\BitSet@Temp{524288}{1048576} +\BitSet@Temp{1048576}{2097152} +\BitSet@Temp{2097152}{4194304} +\BitSet@Temp{4194304}{8388608} +\BitSet@Temp{8388608}{16777216} +\BitSet@Temp{16777216}{33554432} +\BitSet@Temp{33554432}{67108864} +\BitSet@Temp{67108864}{134217728} +\BitSet@Temp{134217728}{268435456} +\BitSet@Temp{268435456}{536870912} +\BitSet@Temp{536870912}{1073741824} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@N1073741824} +% \begin{macrocode} +\expandafter\def\csname BitSet@N1073741824\endcsname{% + \BitSet@GetDecBig2147483648!% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BitSet@GetDecBig} +% |#1|: current power of two\\ +% |#2|: result\\ +% |#3#4|: number +% \begin{macrocode} +\def\BitSet@GetDecBig#1!#2!#3#4!{% + \ifx\\#4\\% + \ifx#31% + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@Space + \BigIntCalcAdd#1!#2!% + }% + \else + \BitSet@AfterFiFi{ #2}% + \fi + \else + \ifx#31% + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@@GetDecBig + \BigIntCalcAdd#1!#2!!#1!#4!% + }% + \else + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@GetDecBig + \BigIntCalcShl#1!!#2!#4!% + }% + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@GetDecBig} +% |#1|: result\\ +% |#2|: power of two\\ +% |#3#4|: number +% \begin{macrocode} +\def\BitSet@@GetDecBig#1!#2!{% + \expandafter\expandafter\expandafter\BitSet@GetDecBig + \BigIntCalcShl#2!!#1!% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Logical operators}\label{src:log} +% +% \subsubsection{\cs{bitsetAnd}} +% +% \begin{macro}{\bitsetAnd} +% Decision table for \cs{bitsetAnd}: +% \begin{quote} +% \begin{tabular}{l|l|l|l|} +% & undef(B) & empty(B) & cardinality(B)$>$0\\ +% \hline +% undef(A) & A := empty & A := empty & A := empty\\ +% \hline +% empty(A) & & &\\ +% \hline +% cardinality(A)$>$0 & A := empty & A := empty & A \&= B\\ +% \hline +% \end{tabular} +% \end{quote} +% \begin{macrocode} +\def\bitsetAnd#1#2{% + \bitsetIsEmpty{#1}{% + \bitsetReset{#1}% + }{% + \bitsetIsEmpty{#2}{% + \bitsetReset{#1}% + }{% + \expandafter\edef\csname BS@#1\endcsname{% + \expandafter\expandafter\expandafter\BitSet@And + \csname BS@#1\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter!% + \csname BS@#2\endcsname!!% + }% + \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty + \bitsetReset{#1}% + \fi + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@And} +% \begin{macrocode} +\def\BitSet@And#1#2!#3#4!#5!{% + \ifx\\#2\\% + \ifnum#1#3=11 #51\fi + \else + \ifx\\#4\\% + \ifnum#1#3=11 #51\fi + \else + \ifnum#1#3=11 % + #51% + \BitSet@AfterFiFiFi{% + \BitSet@And#2!#4!!% + }% + \else + \BitSet@AfterFiFiFi{% + \BitSet@And#2!#4!#50!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\cs{bitsetAndNot}} +% +% \begin{macro}{\bitsetAndNot} +% Decision table for \cs{bitsetAndNot}: +% \begin{quote} +% \begin{tabular}{l|l|l|l|} +% & undef(B) & empty(B) & cardinality(B)$>$0\\ +% \hline +% undef(A) & A := empty & A := empty & A := empty\\ +% \hline +% empty(A) & & &\\ +% \hline +% cardinality(A)$>$0 & & & A \&= !B\\ +% \hline +% \end{tabular} +% \end{quote} +% \begin{macrocode} +\def\bitsetAndNot#1#2{% + \bitsetIsEmpty{#1}{% + \bitsetReset{#1}% + }{% + \bitsetIsEmpty{#2}{% + }{% + \expandafter\edef\csname BS@#1\endcsname{% + \expandafter\expandafter\expandafter\BitSet@AndNot + \csname BS@#1\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter!% + \csname BS@#2\endcsname!!% + }% + \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty + \bitsetReset{#1}% + \fi + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@AndNot} +% \begin{macrocode} +\def\BitSet@AndNot#1#2!#3#4!#5!{% + \ifx\\#2\\% + \ifnum#1#3=10 #51\fi + \else + \ifx\\#4\\% + #5% + \ifnum#1#3=10 1\else 0\fi + #2% + \else + \ifnum#1#3=10 % + #51% + \BitSet@AfterFiFiFi{% + \BitSet@AndNot#2!#4!!% + }% + \else + \BitSet@AfterFiFiFi{% + \BitSet@AndNot#2!#4!#50!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\cs{bitsetOr}} +% +% \begin{macro}{\bitsetOr} +% Decision table for \cs{bitsetOr}: +% \begin{quote} +% \begin{tabular}{l|l|l|l|} +% & undef(B) & empty(B) & cardinality(B)$>$0\\ +% \hline +% undef(A) & A := empty & A := empty & A := B\\ +% \hline +% empty(A) & & & A := B\\ +% \hline +% cardinality(A)$>$0 & & & A \string|= B\\ +% \hline +% \end{tabular} +% \end{quote} +% \begin{macrocode} +\def\bitsetOr#1#2{% + \bitsetIsEmpty{#2}{% + \BitSet@IfUndefined{#1}{\bitsetReset{#1}}{}% + }{% + \bitsetIsEmpty{#1}{% + \expandafter\let\csname BS@#1\expandafter\endcsname + \csname BS@#2\endcsname + }{% + \expandafter\edef\csname BS@#1\endcsname{% + \expandafter\expandafter\expandafter\BitSet@Or + \csname BS@#1\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter!% + \csname BS@#2\endcsname!% + }% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Or} +% \begin{macrocode} +\def\BitSet@Or#1#2!#3#4!{% + \ifnum#1#3>0 1\else 0\fi + \ifx\\#2\\% + #4% + \else + \ifx\\#4\\% + #2% + \else + \BitSet@AfterFiFi{% + \BitSet@Or#2!#4!% + }% + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\cs{bitsetXor}} +% +% \begin{macro}{\bitsetXor} +% Decision table for \cs{bitsetXor}: +% \begin{quote} +% \begin{tabular}{l|l|l|l|} +% & undef(B) & empty(B) & cardinality(B)$>$0\\ +% \hline +% undef(A) & A := empty & A := empty & A := B\\ +% \hline +% empty(A) & & & A := B\\ +% \hline +% cardinality(A)$>$0 & & & A \string^= B\\ +% \hline +% \end{tabular} +% \end{quote} +% \begin{macrocode} +\def\bitsetXor#1#2{% + \bitsetIsEmpty{#2}{% + \BitSet@IfUndefined{#1}{\bitsetReset{#1}}{}% + }{% + \bitsetIsEmpty{#1}{% + \expandafter\let\csname BS@#1\expandafter\endcsname + \csname BS@#2\endcsname + }{% + \expandafter\edef\csname BS@#1\endcsname{% + \expandafter\expandafter\expandafter\BitSet@Xor + \csname BS@#1\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter!% + \csname BS@#2\endcsname!!% + }% + \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty + \bitsetReset{#1}% + \fi + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Xor} +% \begin{macrocode} +\def\BitSet@Xor#1#2!#3#4!#5!{% + \ifx\\#2\\% + \ifx#1#3% + \ifx\\#4\\% + \else + #50#4% + \fi + \else + #51#4% + \fi + \else + \ifx\\#4\\% + #5% + \ifx#1#30\else 1\fi + #2% + \else + \ifx#1#3% + \BitSet@AfterFiFiFi{% + \BitSet@Xor#2!#4!#50!% + }% + \else + #51% + \BitSet@AfterFiFiFi{% + \BitSet@Xor#2!#4!!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Shifting}\label{src:shift} +% +% \subsubsection{\cs{bitsetShiftLeft}} +% +% \begin{macro}{\bitsetShiftLeft} +% \begin{macrocode} +\def\bitsetShiftLeft#1#2{% + \BitSet@IfUndefined{#1}{% + \bitsetReset{#1}% + }{% + \bitsetIsEmpty{#1}{% + }{% + \expandafter\expandafter\expandafter\BitSet@ShiftLeft + \intcalcNum{#2}!{#1}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@ShiftLeft} +% \begin{macrocode} +\def\BitSet@ShiftLeft#1!#2{% + \ifcase\intcalcSgn{#1} % + \or + \begingroup + \uccode`m=`0 % + \uppercase\expandafter{\expandafter\endgroup + \expandafter\edef\csname BS@#2\expandafter\endcsname + \expandafter{% + \romannumeral#1000\expandafter\BitSet@Space + \csname BS@#2\endcsname + }% + }% + \else + \expandafter\BitSet@ShiftRight\BitSet@Gobble#1!{#2}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\cs{bitsetShiftRight}} +% +% \begin{macro}{\bitsetShiftRight} +% \begin{macrocode} +\def\bitsetShiftRight#1#2{% + \BitSet@IfUndefined{#1}{% + \bitsetReset{#1}% + }{% + \bitsetIsEmpty{#1}{% + }{% + \expandafter\expandafter\expandafter\BitSet@ShiftRight + \intcalcNum{#2}!{#1}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@ShiftRight} +% \begin{macrocode} +\def\BitSet@ShiftRight#1!#2{% + \ifcase\intcalcSgn{#1} % + \or + \expandafter\edef\csname BS@#2\endcsname{% + \expandafter\expandafter\expandafter\BitSet@Kill + \csname BS@#2\expandafter\endcsname\expandafter\BitSet@Empty + \expandafter=% + \expandafter{\expandafter}\expandafter{\expandafter}% + \romannumeral#1000!% + }% + \else + \expandafter\BitSet@ShiftLeft\BitSet@Gobble#1!{#2}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Kill} +% \begin{macrocode} +\def\BitSet@Kill#1#2=#3#4#5{% + #3#4% + \ifx#5!% + \ifx#1\BitSet@Empty + 0% + \else + #1#2% + \fi + \else + \ifx#1\BitSet@Empty + 0% + \BitSet@AfterFiFi\BitSet@Cleanup + \else + \BitSet@Kill#2=% + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Bit manipulation}\label{src:bitman} +% +% \begin{macro}{\bitsetClear} +% \begin{macrocode} +\def\bitsetClear{% + \BitSet@CheckIndex\BitSet@Clear +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetSet} +% \begin{macrocode} +\def\bitsetSet{% + \BitSet@CheckIndex\BitSet@Set +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetFlip} +% \begin{macrocode} +\def\bitsetFlip{% + \BitSet@CheckIndex\BitSet@Flip +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetSetValue} +% \begin{macrocode} +\def\bitsetSetValue#1#2#3{% + \expandafter\expandafter\expandafter\BitSet@SetValue + \intcalcNum{#3}!{#1}{#2}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@SetValue} +% |#1|: plain value\\ +% |#2|: BitSet\\ +% |#3|: Index +% \begin{macrocode} +\def\BitSet@SetValue#1!{% + \BitSet@CheckIndex{% + \ifcase#1 % + \expandafter\BitSet@Clear + \or + \expandafter\BitSet@Set + \else + \BitSet@ErrorInvalidBitValue{#1}% + \expandafter\expandafter\expandafter\BitSet@Gobble + \expandafter\BitSet@Gobble + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@ErrorInvalidBitValue} +% |#1|: Wrong bit value +% \begin{macrocode} +\def\BitSet@ErrorInvalidBitValue#1{% + \@PackageError{bitset}{% + Invalid bit value (#1) not in range 0..1% + }\@ehc +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Clear operation} +% +% \begin{macro}{\BitSet@Clear} +% |#1|: BitSet\\ +% |#2|: plain and checked index +% \begin{macrocode} +\def\BitSet@Clear#1#2{% + \edef\BitSet@Temp{% + \expandafter\expandafter\expandafter\BitSet@@Clear + \csname BS@#1\expandafter\endcsname + \expandafter\BitSet@Empty\expandafter=\expandafter!% + \romannumeral#2000!% + }% + \expandafter\let\csname BS@#1\expandafter\endcsname + \ifx\BitSet@Temp\BitSet@Empty + \BitSet@Zero + \else + \BitSet@Temp + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@Clear} +% \begin{macrocode} +\def\BitSet@@Clear#1#2=#3!#4{% + \ifx#4!% + \ifx#1\BitSet@Empty + \else + \ifx\BitSet@Empty#2% + \else + #30#2% + \fi + \fi + \else + \ifx#1\BitSet@Empty + \BitSet@AfterFiFi\BitSet@Cleanup + \else + \ifx#10% + \BitSet@AfterFiFiFi{% + \BitSet@@Clear#2=#30!% + }% + \else + #31% + \BitSet@AfterFiFiFi{% + \BitSet@@Clear#2=!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Set operation} +% +% \begin{macro}{\BitSet@Set} +% |#1|: BitSet\\ +% |#2|: plain and checked Index +% \begin{macrocode} +\def\BitSet@Set#1#2{% + \expandafter\edef\csname BS@#1\endcsname{% + \expandafter\expandafter\expandafter\BitSet@@Set + \csname BS@#1\expandafter\endcsname + \expandafter\BitSet@Empty\expandafter=% + \expandafter{\expandafter}\expandafter{\expandafter}% + \romannumeral#2000!% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@Set} +% \begin{macrocode} +\def\BitSet@@Set#1#2=#3#4#5{% + #3#4% + \ifx#5!% + 1#2% + \else + \ifx#1\BitSet@Empty + 0% + \BitSet@AfterFiFi\BitSet@@@Set + \else + #1% + \BitSet@@Set#2=% + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@@Set} +% \begin{macrocode} +\def\BitSet@@@Set#1{% + \ifx#1!% + 1% + \else + 0% + \expandafter\BitSet@@@Set + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Flip operation} +% +% \begin{macro}{\BitSet@Flip} +% |#1|: BitSet\\ +% |#2|: plain and checked Index +% \begin{macrocode} +\def\BitSet@Flip#1#2{% + \edef\BitSet@Temp{% + \expandafter\expandafter\expandafter\BitSet@@Flip + \csname BS@#1\expandafter\endcsname + \expandafter\BitSet@Empty\expandafter=\expandafter!% + \romannumeral#2000!% + }% + \expandafter\let\csname BS@#1\expandafter\endcsname + \ifx\BitSet@Temp\BitSet@Empty + \BitSet@Zero + \else + \BitSet@Temp + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@Flip} +% \begin{macrocode} +\def\BitSet@@Flip#1#2=#3!#4{% + \ifx#4!% + \ifx#11% + \ifx\BitSet@Empty#2% + \else + #30#2% + \fi + \else + #31#2% + \fi + \else + \ifx#1\BitSet@Empty + #30% + \BitSet@AfterFiFi\BitSet@@@Set + \else + \ifx#10% + \BitSet@AfterFiFiFi{% + \BitSet@@Flip#2=#30!% + }% + \else + #31% + \BitSet@AfterFiFiFi{% + \BitSet@@Flip#2=!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Range operators} +% +% \begin{macro}{\bitsetClearRange} +% \begin{macrocode} +\def\bitsetClearRange{% + \BitSet@Range\BitSet@Clear +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetSetRange} +% \begin{macrocode} +\def\bitsetSetRange{% + \BitSet@Range\BitSet@Set +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetFlipRange} +% \begin{macrocode} +\def\bitsetFlipRange{% + \BitSet@Range\BitSet@Flip +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetSetValueRange} +% \begin{macrocode} +\def\bitsetSetValueRange#1#2#3#4{% + \expandafter\expandafter\expandafter\BitSet@SetValueRange + \intcalcNum{#4}!{#1}{#2}{#3}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@SetValueRange} +% \begin{macrocode} +\def\BitSet@SetValueRange#1!#2#3#4{% + \ifcase#1 % + \BitSet@Range\BitSet@Clear{#2}{#3}{#4}% + \or + \BitSet@Range\BitSet@Set{#2}{#3}{#4}% + \else + \BitSet@ErrorInvalidBitValue{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BitSet@Range} +% |#1|: clear/set/flip macro\\ +% |#2|: BitSet\\ +% |#3|: Index from\\ +% |#4|: Index to +% \begin{macrocode} +\def\BitSet@Range#1#2#3#4{% + \edef\BitSet@Temp{% + \noexpand\BitSet@@Range\noexpand#1{#2}% + \intcalcNum{#3}!\intcalcNum{#4}!% + }% + \BitSet@Temp +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@Range} +% |#1|: clear/set/flip macro\\ +% |#2|: BitSet\\ +% |#3|: Index from\\ +% |#4|: Index to +% \begin{macrocode} +\def\BitSet@@Range#1#2#3!#4!{% + \ifnum#3<0 % + \BitSet@NegativeIndex#1{#2}#3!#4!0!#4!% + \else + \ifnum#4<0 % + \BitSet@NegativeIndex#1{#2}#3!#4!#3!0!% + \else + \ifcase\intcalcCmp{#3}{#4} % + \or + \@PackageError{bitset}{% + Wrong index numbers in range [#3..#4]\MessageBreak% hash-ok + for clear/set/flip on bit set `#2'.\MessageBreak + The lower index exceeds the upper index.\MessageBreak + Canceling the operation as error recovery% + }\@ehc + \else + \BitSet@@@Range#3!#4!#1{#2}% + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@NegativeIndex} +% \begin{macrocode} +\def\BitSet@NegativeIndex#1#2#3!#4!#5!#6!{% + \@PackageError{bitset}{% + Negative index in range [#3..#4]\MessageBreak % hash-ok + for \string\bitset + \ifx#1\BitSet@Clear + Clear% + \else + \ifx#1\BitSet@Set + Set% + \else + Flip% + \fi + \fi + Range on bit set `#2'.\MessageBreak + Using [#5..#6] as error recovery% hash-ok + }\@ehc + \BitSet@@Range#1{#2}#5!#6!% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@Range} +% \begin{macrocode} +\def\BitSet@@@Range#1!#2!#3#4{% + \ifnum#1<#2 % + #3{#4}{#1}% + \BitSet@AfterFi{% + \expandafter\expandafter\expandafter\BitSet@@@Range + \IntCalcInc#1!!#2!#3{#4}% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Bit retrieval}\label{src:bitret} +% +% \subsubsection{\cs{bitsetGet}} +% +% \begin{macro}{\bitsetGet} +% \begin{macrocode} +\def\bitsetGet#1#2{% + \number + \expandafter\expandafter\expandafter\BitSet@Get + \intcalcNum{#2}!{#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Get} +% |#1|: plain index\\ +% |#2|: BitSet +% \begin{macrocode} +\def\BitSet@Get#1!#2{% + \ifnum#1<0 % + \BitSet@AfterFi{% + 0 \BitSetError:NegativeIndex% + }% + \else + \BitSet@IfUndefined{#2}{0}{% + \expandafter\expandafter\expandafter\BitSet@@Get + \csname BS@#2\expandafter\endcsname + \expandafter!\expandafter=% + \expandafter{\expandafter}\expandafter{\expandafter}% + \romannumeral\intcalcNum{#1}000!% + }% + \expandafter\BitSet@Space + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@Get} +% \begin{macrocode} +\def\BitSet@@Get#1#2=#3#4#5{% + #3#4% + \ifx#5!% + \ifx#1!% + 0% + \else + #1% + \fi + \else + \ifx#1!% + 0% + \BitSet@AfterFiFi\BitSet@Cleanup + \else + \BitSet@@Get#2=% + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\cs{bitsetNextClearBit}, \cs{bitsetNextSetBit}} +% +% \begin{macro}{\bitsetNextClearBit} +% \begin{macrocode} +\def\bitsetNextClearBit#1#2{% + \number + \expandafter\expandafter\expandafter\BitSet@NextClearBit + \intcalcNum{#2}!{#1} % +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@NextClearBit} +% |#1|: Index\\ +% |#2|: BitSet +% \begin{macrocode} +\def\BitSet@NextClearBit#1!#2{% + \ifnum#1<0 % + \BitSet@NextClearBit0!{#2}% + \BitSet@AfterFi{% + \expandafter\BitSet@Space + \expandafter\BitSetError:NegativeIndex\romannumeral0% + }% + \else + \bitsetIsEmpty{#2}{#1}{% + \expandafter\BitSet@Skip + \number#1\expandafter\expandafter\expandafter!% + \csname BS@#2\endcsname!!!!!!!!!=% + {\BitSet@@NextClearBit#1!}% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@NextClearBit} +% |#1|: index for next bit in |#2|\\ +% |#2|: next bit +% \begin{macrocode} +\def\BitSet@@NextClearBit#1!#2{% + \ifx#2!% + #1% + \else + \ifx#20% + #1% + \BitSet@AfterFiFi\BitSet@Cleanup + \else + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@@NextClearBit + \IntCalcInc#1!!% + }% + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bitsetNextSetBit} +% \begin{macrocode} +\def\bitsetNextSetBit#1#2{% + \number + \expandafter\expandafter\expandafter\BitSet@NextSetBit + \intcalcNum{#2}!{#1} % +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@NextSetBit} +% |#1|: Index\\ +% |#2|: BitSet +% \begin{macrocode} +\def\BitSet@NextSetBit#1!#2{% + \ifnum#1<0 % + \BitSet@NextSetBit0!{#2}% + \BitSet@AfterFi{% + \expandafter\BitSet@Space + \expandafter\BitSetError:NegativeIndex\romannumeral0% + }% + \else + \bitsetIsEmpty{#2}{-1}{% + \expandafter\BitSet@Skip + \number#1\expandafter\expandafter\expandafter!% + \csname BS@#2\endcsname!!!!!!!!!=% + {\BitSet@@NextSetBit#1!}% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@@NextSetBit} +% |#1|: index for next bit in |#2|\\ +% |#2|: next bit +% \begin{macrocode} +\def\BitSet@@NextSetBit#1!#2{% + \ifx#2!% + -1% + \else + \ifx#21% + #1% + \BitSet@AfterFiFi\BitSet@Cleanup + \else + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@@NextSetBit + \IntCalcInc#1!!% + }% + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Cleanup} +% \begin{macrocode} +\def\BitSet@Cleanup#1!{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\BitSet@Skip} +% |#1|: number of bits to skip\\ +% |#2|: bits\\ +% |#3|: continuation code +% \begin{macrocode} +\def\BitSet@Skip#1!#2{% + \ifx#2!% + \BitSet@AfterFi{% + \BitSet@SkipContinue% + }% + \else + \ifcase#1 % + \BitSet@AfterFiFi{% + \BitSet@SkipContinue#2% + }% + \or + \BitSet@AfterFiFi\BitSet@SkipContinue + \or + \BitSet@AfterFiFi{% + \expandafter\BitSet@SkipContinue\BitSet@Gobble + }% + \else + \ifnum#1>8 % + \BitSet@AfterFiFiFi{% + \expandafter\BitSet@Skip + \number\IntCalcSub#1!8!\expandafter!% + \BitSet@GobbleSeven + }% + \else + \BitSet@AfterFiFiFi{% + \expandafter\expandafter\expandafter\BitSet@Skip + \IntCalcDec#1!!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@SkipContinue} +% |#1|: remaining bits\\ +% |#2|: continuation code +% \begin{macrocode} +\def\BitSet@SkipContinue#1!#2=#3{% + #3#1!% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@GobbleSeven} +% \begin{macrocode} +\def\BitSet@GobbleSeven#1#2#3#4#5#6#7{} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\cs{bitsetGetSetBitList}} +% +% \begin{macro}{\bitsetGetSetBitList} +% It's just a wrapper for \cs{bitsetNextSetBit}. +% \begin{macrocode} +\def\bitsetGetSetBitList#1{% + \romannumeral0% + \bitsetIsEmpty{#1}{ }{% + \expandafter\BitSet@GetSetBitList + \number\BitSet@NextSetBit0!{#1}!{#1}{}!% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@GetSetBitList} +% |#1|: found index\\ +% |#2|: BitSet\\ +% |#3|: comma +% |#4|: result +% \begin{macrocode} +\def\BitSet@GetSetBitList#1!#2#3#4!{% + \ifnum#1<0 % + \BitSet@AfterFi{ #4}% + \else + \BitSet@AfterFi{% + \expandafter\BitSet@GetSetBitList\number + \expandafter\expandafter\expandafter\BitSet@NextSetBit + \IntCalcInc#1!!{#2}!{#2},#4#3#1!% + }% + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Bit set properties}\label{src:prop} +% +% \begin{macro}{\bitsetSize} +% \begin{macrocode} +\def\bitsetSize#1{% + \number + \BitSet@IfUndefined{#1}{0 }{% + \expandafter\expandafter\expandafter\BitSet@Size + \expandafter\expandafter\expandafter1% + \expandafter\expandafter\expandafter!% + \csname BS@#1\endcsname!0!% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Size} +% |#1|: counter\\ +% |#2#3|: bits\\ +% |#4|: result +% \begin{macrocode} +\def\BitSet@Size#1!#2#3!#4!{% + \ifx#21% + \ifx\\#3\\% + \BitSet@AfterFiFi{#1 }% + \else + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@Size + \IntCalcInc#1!!#3!#1!% + }% + \fi + \else + \ifx\\#3\\% + \BitSet@AfterFiFi{#4 }% + \else + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@Size + \IntCalcInc#1!!#3!#4!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bitsetCardinality} +% \begin{macrocode} +\def\bitsetCardinality#1{% + \number + \BitSet@IfUndefined{#1}{0 }{% + \expandafter\expandafter\expandafter\BitSet@Cardinality + \expandafter\expandafter\expandafter0% + \expandafter\expandafter\expandafter!% + \csname BS@#1\endcsname!% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Cardinality} +% |#1|: result\\ +% |#2#3|: bits +% \begin{macrocode} +\def\BitSet@Cardinality#1!#2#3!{% + \ifx#21% + \ifx\\#3\\% + \BitSet@AfterFiFi{\IntCalcInc#1! }% + \else + \BitSet@AfterFiFi{% + \expandafter\expandafter\expandafter\BitSet@Cardinality + \IntCalcInc#1!!#3!% + }% + \fi + \else + \ifx\\#3\\% + \BitSet@AfterFiFi{#1 }% + \else + \BitSet@AfterFiFi{% + \BitSet@Cardinality#1!#3!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Queries}\label{src:query} +% +% \begin{macro}{\bitsetIsDefined} +% \begin{macrocode} +\def\bitsetIsDefined#1{% + \BitSet@IfUndefined{#1}% + \BitSet@SecondOfTwo + \BitSet@FirstOfTwo +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bitsetIsEmpty} +% \begin{macrocode} +\def\bitsetIsEmpty#1{% + \BitSet@IfUndefined{#1}\BitSet@FirstOfTwo{% + \expandafter\ifx\csname BS@#1\endcsname\BitSet@Zero + \expandafter\BitSet@FirstOfTwo + \else + \expandafter\BitSet@SecondOfTwo + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Zero} +% \begin{macrocode} +\def\BitSet@Zero{0} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bitsetQuery} +% \begin{macrocode} +\def\bitsetQuery#1#2{% + \ifnum\bitsetGet{#1}{#2}=1 % + \expandafter\BitSet@FirstOfTwo + \else + \expandafter\BitSet@SecondOfTwo + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bitsetEquals} +% \begin{macrocode} +\def\bitsetEquals#1#2{% + \BitSet@IfUndefined{#1}{% + \BitSet@IfUndefined{#2}\BitSet@FirstOfTwo\BitSet@SecondOfTwo + }{% + \BitSet@IfUndefined{#2}\BitSet@SecondOfTwo{% + \expandafter\ifx\csname BS@#1\expandafter\endcsname + \csname BS@#2\endcsname + \expandafter\BitSet@FirstOfTwo + \else + \expandafter\BitSet@SecondOfTwo + \fi + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bitsetIntersects} +% \begin{macrocode} +\def\bitsetIntersects#1#2{% + \bitsetIsEmpty{#1}\BitSet@SecondOfTwo{% + \bitsetIsEmpty{#2}\BitSet@SecondOfTwo{% + \expandafter\expandafter\expandafter\BitSet@Intersects + \csname BS@#1\expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter!% + \csname BS@#2\endcsname!% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\BitSet@Intersects} +% \begin{macrocode} +\def\BitSet@Intersects#1#2!#3#4!{% + \ifnum#1#3=11 % + \BitSet@AfterFi\BitSet@FirstOfTwo + \else + \ifx\\#2\\% + \BitSet@AfterFiFi\BitSet@SecondOfTwo + \else + \ifx\\#4\\% + \BitSet@AfterFiFiFi\BitSet@SecondOfTwo + \else + \BitSet@AfterFiFiFi{% + \BitSet@Intersects#2!#4!% + }% + \fi + \fi + \BitSet@Fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\BitSet@AtEnd% +% +% \end{macrocode} +%% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{bitset}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/bitset/bitset.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/bitset/bitset.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `bitset' +% 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/bitset.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{bitset.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip bitset.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 bitset.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@{}} +% bitset.sty & tex/generic/bitset/bitset.sty\\ +% bitset.pdf & doc/latex/bitset/bitset.pdf\\ +% bitset.dtx & source/latex/bitset/bitset.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{bitset.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 bitset.dtx +%makeindex -s gind.ist bitset.idx +%pdflatex bitset.dtx +%makeindex -s gind.ist bitset.idx +%pdflatex bitset.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/09/28 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2011/01/30 v1.1} +% \item +% Already loaded package files are not input in \hologo{plainTeX}. +% \end{Version} +% \begin{Version}{2016/05/16 v1.2} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/09 v1.3} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/bitset/bitset.pdf b/macros/latex/contrib/bitset/bitset.pdf new file mode 100644 index 0000000000..2572156d82 Binary files /dev/null and b/macros/latex/contrib/bitset/bitset.pdf differ diff --git a/macros/latex/contrib/catchfile/README.md b/macros/latex/contrib/catchfile/README.md new file mode 100644 index 0000000000..5975b3433f --- /dev/null +++ b/macros/latex/contrib/catchfile/README.md @@ -0,0 +1,9 @@ +# catchfile + +catchfile package for LaTeX + + +This package catches the contents of a file and puts it in a macro. +It requires eTeX. Both LaTeX and plain TeX are supported. + + diff --git a/macros/latex/contrib/catchfile/catchfile.dtx b/macros/latex/contrib/catchfile/catchfile.dtx new file mode 100644 index 0000000000..b6a4549709 --- /dev/null +++ b/macros/latex/contrib/catchfile/catchfile.dtx @@ -0,0 +1,777 @@ +% \iffalse meta-comment +% +% File: catchfile.dtx +% Version: 2019/12/09 v1.8 +% Info: Catch the contents of a file +% +% Copyright (C) +% 2007, 2010, 2011 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/catchfile/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/catchfile/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 catchfile.dtx +% and the derived files +% catchfile.sty, catchfile.pdf, catchfile.ins, catchfile.drv, +% catchfile-test1.tex, catchfile-test2.tex, +% catchfile-test3.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/catchfile/catchfile.dtx +% CTAN:macros/latex/contrib/catchfile/catchfile.pdf +% +% Unpacking: +% (a) If catchfile.ins is present: +% tex catchfile.ins +% (b) Without catchfile.ins: +% tex catchfile.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{catchfile.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If catchfile.drv is present: +% latex catchfile.drv +% (b) Without catchfile.drv: +% latex catchfile.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 catchfile.dtx +% makeindex -s gind.ist catchfile.idx +% pdflatex catchfile.dtx +% makeindex -s gind.ist catchfile.idx +% pdflatex catchfile.dtx +% +% Installation: +% TDS:tex/generic/catchfile/catchfile.sty +% TDS:doc/latex/catchfile/catchfile.pdf +% TDS:source/latex/catchfile/catchfile.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: catchfile 2019/12/09 v1.8 Catch the contents of a file (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: catchfile +Version: 2019/12/09 v1.8 + +Copyright (C) + 2007, 2010, 2011 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/catchfile/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 catchfile.dtx +and the derived files + catchfile.sty, catchfile.pdf, catchfile.ins, catchfile.drv, + catchfile-test1.tex, catchfile-test2.tex, + catchfile-test3.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{catchfile.ins}{\from{catchfile.dtx}{install}}% + \file{catchfile.drv}{\from{catchfile.dtx}{driver}}% + \usedir{tex/generic/catchfile}% + \file{catchfile.sty}{\from{catchfile.dtx}{package}}% +} + +\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{* catchfile.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `catchfile.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{catchfile.drv}% + [2019/12/09 v1.8 Catch the contents of a file (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{catchfile.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{catchfile.drv} +% +% \title{The \xpackage{catchfile} package} +% \date{2019/12/09 v1.8} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/catchfile/issues}}} +% +% \maketitle +% +% \begin{abstract} +% This package catches the contents of a file and puts it in a macro. +% It requires \eTeX. Both \LaTeX\ and \plainTeX\ are supported. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% The package relies on \eTeX's \cs{everyeof}. Otherwise it +% aborts with an error message. +% +% \begin{declcs}{CatchFileDef} \M{cmd} \M{file name} \M{setup}\\ +% \cs{CatchFileEdef} \M{cmd} \M{file name} \M{setup} +% \end{declcs} +% Macro \meta{cmd} is defined with the contents +% of file \meta{file name}. +% \cs{CatchFileDef} uses \cs{def}, \cs{CatchFileEdef} \cs{edef} +% for the definition. +% Additional setup code for setting +% catcodes or treatment of line ends can be given in code +% \meta{setup}. See the test files for an example. +% +% \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@catchfile.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{catchfile}{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@catchfile.sty\endcsname +\ProvidesPackage{catchfile}% + [2019/12/09 v1.8 Catch the contents of a file (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 CatchFile@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\CatchFile@AtEnd{% + \CatchFile@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{39}{12}% ' +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\TMP@EnsureCode{96}{12}% ` +\edef\CatchFile@AtEnd{\CatchFile@AtEnd\noexpand\endinput} +% \end{macrocode} +% +% \subsection{Preparations} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax + \input ltxcmds.sty\relax +\else + \RequirePackage{infwarerr}[2007/09/09]% + \RequirePackage{ltxcmds}[2010/03/09]% +\fi +% \end{macrocode} +% +% Check for \eTeX's \cs{everyeof}. +% \begin{macrocode} +\begingroup + \escapechar=92\relax + \edef\TestString{\string\everyeof}% + \edef\TestMeaning{\meaning\everyeof}% + \ifx\TestString\TestMeaning + \else + \@PackageError{catchfile}{% + Cannot find e-TeX's \string\everyeof,\MessageBreak + package loading is aborted% + }\@ehd + \endgroup + \expandafter\CatchFile@AtEnd + \fi% +\endgroup +% \end{macrocode} +% +% \subsection{Looking for primitive \cs{input}} +% +% \begin{macro}{\CatchFile@Input} +% The package needs the expandable primitive \cs{input}. +% However there are formats that redefine it. For example, +% \LaTeX's \cs{input} is not expandable, but it stores +% the primitive in \cs{@@input}. The third possibility +% is \cs{pdfprimitive}, introduced in \pdfTeX\ 1.40.0. +% +% Thus we try to find the primitive and store it in +% \cs{CatchFile@Input}. If it is used, it must be expanded +% twice (because of the solution with \cs{pdfprimitive}). +% \begin{macrocode} +\begingroup + \def\Check#1#2#3#4\endgroup{% + \edef\TestString{\string#1}% + \edef\TestMeaning{\meaning#2}% + \ifx\TestString\TestMeaning + \endgroup + \let\CatchFile@Primitive#2% + \def\CatchFile@Input{\CatchFile@Primitive#3}% + \else + #4\endgroup + \fi + }% + \Check\input\input{}% + \Check\input\@@input{}% + \Check\pdfprimitive\pdfprimitive\input + \@PackageError{% + Cannot find primitive \string\input,\MessageBreak + package loading is aborted% + }\@ehd + \csname endgroup\endcsname + \CatchFile@AtEnd% +\endgroup +% \end{macrocode} +% \end{macro} +% +% \subsection{Input file check} +% +% \begin{macro}{\CatchFile@CheckFileExists} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname IfFileExists\endcsname\relax + \input pdftexcmds.sty\relax + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname pdf@filesize\endcsname\relax + \def\CatchFile@CheckFileExists#1{% + \expandafter\ifx\csname @inputcheck\endcsname\relax + \csname newread\endcsname\@inputcheck + \fi + \openin\@inputcheck#1\relax + \expandafter\closein\expandafter\@inputcheck + \ifeof\@inputcheck + \let\CatchFile@File\relax + \else + \def\CatchFile@File{#1}% + \fi + }% + \else + \def\CatchFile@CheckFileExists#1{% + \expandafter\expandafter\expandafter\ifx + \expandafter\expandafter\expandafter\relax\pdf@filesize{#1}\relax + \let\CatchFile@File\relax + \else + \def\CatchFile@File{#1}% + \fi + }% + \fi +\else + \def\CatchFile@CheckFileExists#1{% + \IfFileExists{#1}{% + \expandafter\CatchFile@DefFile\@filef@und\@nil + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname @addtofilelist\endcsname\relax + \else + \@addtofilelist\CatchFile@File + \fi + }{% + \let\CatchFile@File\relax + }% + }% + \def\CatchFile@DefFile#1 \@nil{% + \def\CatchFile@File{#1}% + }% +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CatchFile@NotFound} +% \begin{macrocode} +\def\CatchFile@NotFound#1#2{% + \def#1{}% + \@PackageError{catchfile}{% + File `#2' not found% + }\@ehc +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Catch file contents} +% +% \begin{macrocode} +\ltx@IfUndefined{RequirePackage}{% + \input etexcmds.sty\relax +}{% + \RequirePackage{etexcmds}[2010/01/28]% +} +% \end{macrocode} +% +% \begin{macro}{\CatchFileEdef} +% \begin{macrocode} +\long\def\CatchFileEdef#1#2#3{% + \CatchFile@CheckFileExists{#2}% + \ifx\CatchFile@File\relax + \CatchFile@NotFound{#1}{#2}% + \else + \begingroup + \everyeof{\noexpand}% + #3% + \xdef\CatchFile@Contents{\CatchFile@Input\CatchFile@File\space}% + \endgroup + \let#1\CatchFile@Contents + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\CatchFileDef} +% \begin{macrocode} +\long\def\CatchFileDef#1#2#3{% + \CatchFile@CheckFileExists{#2}% + \ifx\CatchFile@File\relax + \CatchFile@NotFound{#1}{#2}% + \else + \begingroup + \everyeof\expandafter{% + \CatchFile@EOF + \expandafter\CatchFile@Finish + \noexpand + }% + \ltx@ifundefined{etex@unexpanded}{% + \expandafter\long\expandafter\def\expandafter\CatchFile@Do + \expandafter##\expandafter1\CatchFile@EOF{% + \toks\ltx@zero{##1}% + \xdef\CatchFile@gtemp{\the\toks\ltx@zero}% + \def\CatchFile@Finish{% + \endgroup + \let#1\CatchFile@gtemp + \global\let\CatchFile@gtemp\ltx@undefined + }% + }% + }{% + \expandafter\long\expandafter\def\expandafter\CatchFile@Do + \expandafter##\expandafter1\CatchFile@EOF{% + \edef\CatchFile@Finish{% + \endgroup + \etex@unexpanded{% + \edef#1{\etex@unexpanded{##1}}% + }% + }% + }% + }% + #3\relax + \expandafter\expandafter\expandafter\CatchFile@Do + \CatchFile@Input\CatchFile@File\relax + \fi +} +% \end{macrocode} +% \cs{relax} after |#3| was added to make it more robust in +% case the user uses something like +%\begin{verbatim} +%\CatchFileDef{\content}{\jobname.tt}{\endlinechar=-1} +%\end{verbatim} +% that expands the following \cs{expandafter} after |#3| prematurely +% (contribution of Martin Scharrer). +% \end{macro} +% \begin{macro}{\CatchFile@EOF} +% If the file is read the catcode mappings are fixed. +% This means that the same character cannot occur +% inside the file with different catcodes. +% Thus we use as end of file marker the at sign +% twice with different catcodes. +% \begin{macrocode} +\begingroup + \lccode65=64 % lowercase('A') = '@' + \lccode66=64 % lowercase('B') = '@' + \catcode65=8 % catcode('A') = subscript + \catcode66=3 % catcode('B') = math shift +\lowercase{\endgroup + \def\CatchFile@EOF{AB}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\CatchFile@AtEnd% +% +% \end{macrocode} +%% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{catchfile}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/catchfile/catchfile.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/catchfile/catchfile.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `catchfile' +% 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/catchfile.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{catchfile.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip catchfile.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 catchfile.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@{}} +% catchfile.sty & tex/generic/catchfile/catchfile.sty\\ +% catchfile.pdf & doc/latex/catchfile/catchfile.pdf\\ +% catchfile.dtx & source/latex/catchfile/catchfile.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{catchfile.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 catchfile.dtx +%makeindex -s gind.ist catchfile.idx +%pdflatex catchfile.dtx +%makeindex -s gind.ist catchfile.idx +%pdflatex catchfile.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/05/30 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2007/09/09 v1.1} +% \item +% Catcode section rewritten. +% \end{Version} +% \begin{Version}{2007/11/11 v1.2} +% \item +% Use of package \xpackage{pdftexcmds} for \LuaTeX\ support. +% \end{Version} +% \begin{Version}{2010/03/01 v1.3} +% \item +% Fix for unknown \cs{@PackageErrorNoLine}. +% \end{Version} +% \begin{Version}{2010/04/08 v1.4} +% \item +% \cs{closein} also added if \cs{ifeof} is true. +% \end{Version} +% \begin{Version}{2010/04/28 v1.5} +% \item +% \cs{CatchFileDef}: Getting rid of warning `end of semi simple group +% entered at line \dots\ of +% a different file (Florent Chervet). +% \item +% \cs{CatchFileDef}: Fix for error `Illegal parameter number in +% definition of \dots' (HO) including improvement that uses +% \cs{unexpanded} if available (Florent Chervet). +% \end{Version} +% \begin{Version}{2011/03/01 v1.6} +% \item +% \cs{relax} added after the setup argument of +% \cs{CatchFileDef} to prevent premature file reading +% (Martin Scharrer). +% \end{Version} +% \begin{Version}{2016/05/16 v1.7} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/09 v1.8} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/catchfile/catchfile.pdf b/macros/latex/contrib/catchfile/catchfile.pdf new file mode 100644 index 0000000000..cc9f89d10f Binary files /dev/null and b/macros/latex/contrib/catchfile/catchfile.pdf differ diff --git a/macros/latex/contrib/listingsutf8/README.md b/macros/latex/contrib/listingsutf8/README.md new file mode 100644 index 0000000000..c5d95c046f --- /dev/null +++ b/macros/latex/contrib/listingsutf8/README.md @@ -0,0 +1,11 @@ +# listingsutf8 + +listingsutf8 package for LaTeX + + +Package listings does not support files with multi-byte +encodings such as UTF-8. In case of \lstinputlisting a simple +workaround is possible if an one-byte encoding exists that the file +can be converted to. Also eTeX and pdfTeX regardless of its mode +are required. + diff --git a/macros/latex/contrib/listingsutf8/listingsutf8.dtx b/macros/latex/contrib/listingsutf8/listingsutf8.dtx new file mode 100644 index 0000000000..31ae6f77b0 --- /dev/null +++ b/macros/latex/contrib/listingsutf8/listingsutf8.dtx @@ -0,0 +1,673 @@ +% \iffalse meta-comment +% +% File: listingsutf8.dtx +% Version: 2019/12/09 v1.4 +% Info: Allow UTF-8 in listings input +% +% Copyright (C) +% 2007, 2011 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/listingsutf8/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/listingsutf8/issues +% +% This work consists of the main source file listingsutf8.dtx +% and the derived files +% listingsutf8.sty, listingsutf8.pdf, listingsutf8.ins, listingsutf8.drv, +% listingsutf8-test1.tex, listingsutf8-test2.tex, +% listingsutf8-test3.tex, listingsutf8-test4.tex, +% listingsutf8-test5.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/listingsutf8/listingsutf8.dtx +% CTAN:macros/latex/contrib/listingsutf8/listingsutf8.pdf +% +% Unpacking: +% (a) If listingsutf8.ins is present: +% tex listingsutf8.ins +% (b) Without listingsutf8.ins: +% tex listingsutf8.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{listingsutf8.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If listingsutf8.drv is present: +% latex listingsutf8.drv +% (b) Without listingsutf8.drv: +% latex listingsutf8.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 listingsutf8.dtx +% makeindex -s gind.ist listingsutf8.idx +% pdflatex listingsutf8.dtx +% makeindex -s gind.ist listingsutf8.idx +% pdflatex listingsutf8.dtx +% +% Installation: +% TDS:tex/latex/listingsutf8/listingsutf8.sty +% TDS:doc/latex/listingsutf8/listingsutf8.pdf +% TDS:source/latex/listingsutf8/listingsutf8.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: listingsutf8 2019/12/09 v1.4 Allow UTF-8 in listings input (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: listingsutf8 +Version: 2019/12/09 v1.4 + +Copyright (C) + 2007, 2011 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/listingsutf8/issues + + +This work consists of the main source file listingsutf8.dtx +and the derived files + listingsutf8.sty, listingsutf8.pdf, listingsutf8.ins, listingsutf8.drv, + listingsutf8-test1.tex, listingsutf8-test2.tex, + listingsutf8-test3.tex, listingsutf8-test4.tex, + listingsutf8-test5.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{listingsutf8.ins}{\from{listingsutf8.dtx}{install}}% + \file{listingsutf8.drv}{\from{listingsutf8.dtx}{driver}}% + \usedir{tex/latex/listingsutf8}% + \file{listingsutf8.sty}{\from{listingsutf8.dtx}{package}}% +} + +\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{* listingsutf8.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `listingsutf8.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{listingsutf8.drv}% + [2019/12/09 v1.4 Allow UTF-8 in listings input (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{listingsutf8.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{listingsutf8.drv} +% +% \title{The \xpackage{listingsutf8} package} +% \date{2019/12/09 v1.4} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/listingsutf8/issues}}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{listings} does not support files with multi-byte +% encodings such as UTF-8. In case of \cs{lstinputlisting} a simple +% workaround is possible if an one-byte encoding exists that the file +% can be converted to. Also \eTeX\ and \pdfTeX\ regardless of its mode +% are required. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{User interface} +% +% Load this package after or instead of package \xpackage{listings} +% \cite{listings}. +% The package does not define own options and passes given options to +% package \xpackage{listings}. +% +% The syntax of package \xpackage{listings}' key \xoption{inputencoding} +% is extended: +% \begin{quote} +% |inputencoding=utf8/|\meta{one-byte-encoding}\\ +% Example: |inputencoding=utf8/latin1| +% \end{quote} +% That means the file is encoded in UTF-8 and can +% be converted to the given \meta{one-byte-encoding}. +% The available encodings for \meta{one-byte-encoding} are +% listed in section ``1.2 Supported encodings'' of +% package \xpackage{stringenc}'s documentation \cite{stringenc}. +% Of course, the encoding must encode its characters with +% one byte exactly. This excludes the unicode encodings +% (\xoption{utf8}, \xoption{utf16}, \dots). +% +% Only \cs{lstinputlisting} is supported by the syntax extension +% of key \xoption{inputencoding}. +% +% Internally package \xpackage{listingsutf8} reads the file as binary file +% via primitives of \pdfTeX\ (\cs{pdffiledump}). Then the file +% contents is converted as string using package \xpackage{stringenc} and +% finally the string is read as virtual file by \eTeX's \cs{scantokens}. +% +% \subsection{Future} +% +% Workarounds are not provided for +% \begin{itemize} +% \item \cs{lstinline} +% \item Environment |lstlisting|. +% \item Environments defined by \cs{lstnewenvironment}. +% \end{itemize} +% Perhaps someone will find time to extend package \xpackage{listings} +% with full native support for UTF-8. Then this package would become obsolete. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{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 lstU@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\lstU@AtEnd{% + \lstU@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{10}{12}% ^^J +\TMP@EnsureCode{33}{12}% ! +\TMP@EnsureCode{36}{3}% $ +\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{58}{12}% : +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\TMP@EnsureCode{94}{7}% ^ (superscript) +\TMP@EnsureCode{95}{8}% _ (subscript) +\TMP@EnsureCode{96}{12}% ` +\TMP@EnsureCode{124}{12}% | +\TMP@EnsureCode{126}{13}% ~ (active) +\edef\lstU@AtEnd{\lstU@AtEnd\noexpand\endinput} +% \end{macrocode} +% +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{listingsutf8}% + [2019/12/09 v1.4 Allow UTF-8 in listings input (HO)] +% \end{macrocode} +% +% \subsection{Package options} +% +% Just pass options to package listings. +% +% \begin{macrocode} +\DeclareOption*{% + \PassOptionsToPackage\CurrentOption{listings}% +} +\ProcessOptions* +% \end{macrocode} +% Key \xoption{inputencoding} was introduced in version +% 2002/04/01 v1.0 of package \xpackage{listings}. +% \begin{macrocode} +\RequirePackage{listings}[2002/04/01] +% \end{macrocode} +% Ensure that \cs{inputencoding} is provided. +% \begin{macrocode} +\AtBeginDocument{% + \@ifundefined{inputencoding}{% + \RequirePackage{inputenc}% + }{}% +} +% \end{macrocode} +% +% \subsection{Check prerequisites} +% +% \begin{macrocode} +\RequirePackage{pdftexcmds}[2011/04/22] +% \end{macrocode} +% +% \begin{macrocode} +\def\lstU@temp#1#2{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname #1\endcsname\relax + \PackageWarningNoLine{listingsutf8}{% + Package loading is aborted because of missing % + \@backslashchar#1.\MessageBreak + #2% + }% + \expandafter\lstU@AtEnd + \fi +} +\lstU@temp{scantokens}{It is provided by e-TeX}% +\lstU@temp{pdf@unescapehex}{It is provided by pdfTeX >= 1.30}% +\lstU@temp{pdf@filedump}{It is provided by pdfTeX >= 1.30}% +\lstU@temp{pdf@filesize}{It is provided by pdfTeX >= 1.30}% +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{stringenc}[2010/03/01] +% \end{macrocode} +% +% \subsection{Add support for UTF-8} +% +% \begin{macro}{\iflstU@utfviii} +% \begin{macrocode} +\newif\iflstU@utfviii +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lstU@inputenc} +% \begin{macrocode} +\def\lstU@inputenc#1{% + \expandafter\lstU@@inputenc#1utf8/utf8/\@nil +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\lstU@@inputenc} +\def\lstU@@inputenc#1utf8/#2utf8/#3\@nil{% + \ifx\\#1\\% + \lstU@utfviiitrue + \def\lst@inputenc{#2}% + \else + \lstU@utfviiifalse + \fi +} +% \begin{macrocode} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\lst@Key{inputencoding}\relax{% + \def\lst@inputenc{#1}% + \lstU@inputenc{#1}% +} +% \end{macrocode} +% +% \subsubsection{Conversion} +% +% \begin{macro}{\lstU@input} +% \begin{macrocode} +\def\lstU@input#1{% + \iflstU@utfviii + \edef\lstU@text{% + \pdf@unescapehex{% + \pdf@filedump{0}{\pdf@filesize{#1}}{#1}% + }% + }% + \lstU@CRLFtoLF\lstU@text + \StringEncodingConvert\lstU@text\lstU@text{utf8}\lst@inputenc + \def\lstU@temp{% + \scantokens\expandafter{\lstU@text}% + }% + \else + \def\lstU@temp{% + \input{#1}% + }% + \fi + \lstU@temp +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Convert CR/LF pairs to LF} +% +% \begin{macro}{\lstU@CRLFtoLF} +% \begin{macrocode} +\begingroup + \endlinechar=-1 % + \@makeother\^^J % + \@makeother\^^M % + \gdef\lstU@CRLFtoLF#1{% + \edef#1{% + \expandafter\lstU@CRLFtoLF@aux#1^^M^^J\@nil + }% + }% + \gdef\lstU@CRLFtoLF@aux#1^^M^^J#2\@nil{% + #1% + \ifx\relax#2\relax + \@car + \fi + ^^J% + \lstU@CRLFtoLF@aux#2\@nil + }% +\endgroup % +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Patch \cs{lst@InputListing}} +% +% \begin{macrocode} +\def\lstU@temp#1\def\lst@next#2#3\@nil{% + \def\lst@InputListing##1{% + #1% + \def\lst@next{\lstU@input{##1}}% + #3% + }% +} +\expandafter\lstU@temp\lst@InputListing{#1}\@nil +% \end{macrocode} +% +% \begin{macrocode} +\lstU@AtEnd% +% +% \end{macrocode} +%% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{listingsutf8}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/listingsutf8/listingsutf8.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/listingsutf8/listingsutf8.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `listingsutf8' +% 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/listingsutf8.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{listingsutf8.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip listingsutf8.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 listingsutf8.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@{}} +% listingsutf8.sty & tex/latex/listingsutf8/listingsutf8.sty\\ +% listingsutf8.pdf & doc/latex/listingsutf8/listingsutf8.pdf\\ +% listingsutf8.dtx & source/latex/listingsutf8/listingsutf8.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{listingsutf8.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 listingsutf8.dtx +%makeindex -s gind.ist listingsutf8.idx +%pdflatex listingsutf8.dtx +%makeindex -s gind.ist listingsutf8.idx +%pdflatex listingsutf8.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% +% \bibitem{inputenc} +% Alan Jeffrey, Frank Mittelbach, +% \textit{inputenc.sty}, 2006/05/05 v1.1b. +% \CTANpkg{inputenc} +% +% \bibitem{listings} +% Carsten Heinz, Brooks Moses: +% \textit{The \xpackage{listings} package}; +% 2007/02/22;\\ +% \CTANpkg{listings}. +% +% \bibitem{stringenc} +% Heiko Oberdiek: +% \textit{The \xpackage{stringenc} package}; +% 2007/10/22;\\ +% \CTANpkg{stringenc}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2007/10/22 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2007/11/11 v1.1} +% \item +% Use of package \xpackage{pdftexcmds}. +% \end{Version} +% \begin{Version}{2011/11/10 v1.2} +% \item +% DOS line ends CR/LF normalized to LF to avoid empty lines +% (Bug report of Thomas Benkert in de.comp.text.tex). +% \end{Version} +% \begin{Version}{2016/05/16 v1.3} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/09 v1.4} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/listingsutf8/listingsutf8.pdf b/macros/latex/contrib/listingsutf8/listingsutf8.pdf new file mode 100644 index 0000000000..2c722abd81 Binary files /dev/null and b/macros/latex/contrib/listingsutf8/listingsutf8.pdf differ diff --git a/macros/latex/contrib/oberdiek/README.txt b/macros/latex/contrib/oberdiek/README.txt index 9abb0caf69..1a01bea365 100644 --- a/macros/latex/contrib/oberdiek/README.txt +++ b/macros/latex/contrib/oberdiek/README.txt @@ -1,4 +1,4 @@ -README 2019/12/05 +README 2019/12/09 This file describes the directory CTAN:macros/latex/contrib/oberdiek/ diff --git a/macros/latex/contrib/oberdiek/aliascnt.pdf b/macros/latex/contrib/oberdiek/aliascnt.pdf index 81d6089175..2710d52efd 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 deleted file mode 100644 index 7c70cd4825..0000000000 --- a/macros/latex/contrib/oberdiek/alphalph.dtx +++ /dev/null @@ -1,1535 +0,0 @@ -% \iffalse meta-comment -% -% File: alphalph.dtx -% Version: 2016/05/16 v2.5 -% Info: Convert numbers to letters -% -% Copyright (C) -% 1999, 2006-2008, 2010, 2011 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 alphalph.dtx -% and the derived files -% alphalph.sty, alphalph.pdf, alphalph.ins, alphalph.drv, -% alphalph-test1.tex, alphalph-test2.tex, alphalph-test3.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/alphalph.dtx -% CTAN:macros/latex/contrib/oberdiek/alphalph.pdf -% -% Unpacking: -% (a) If alphalph.ins is present: -% tex alphalph.ins -% (b) Without alphalph.ins: -% tex alphalph.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{alphalph.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If alphalph.drv is present: -% latex alphalph.drv -% (b) Without alphalph.drv: -% latex alphalph.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 alphalph.dtx -% makeindex -s gind.ist alphalph.idx -% pdflatex alphalph.dtx -% makeindex -s gind.ist alphalph.idx -% pdflatex alphalph.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/alphalph.sty -% TDS:doc/latex/oberdiek/alphalph.pdf -% TDS:source/latex/oberdiek/alphalph.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: alphalph 2016/05/16 v2.5 Convert numbers to letters (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: alphalph -Version: 2016/05/16 v2.5 - -Copyright (C) - 1999, 2006-2008, 2010, 2011 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 alphalph.dtx -and the derived files - alphalph.sty, alphalph.pdf, alphalph.ins, alphalph.drv, - alphalph-test1.tex, alphalph-test2.tex, alphalph-test3.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{alphalph.ins}{\from{alphalph.dtx}{install}}% - \file{alphalph.drv}{\from{alphalph.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{alphalph.sty}{\from{alphalph.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \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}}% -} - -\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{* alphalph.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `alphalph.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{alphalph.drv}% - [2016/05/16 v2.5 Convert numbers to letters (HO)]% -\documentclass{ltxdoc} -\usepackage{alphalph}[2016/05/16] -\makeatletter -\newalphalph{\fnsymbolwrap}[wrap]{\@fnsymbol}{} -\newcommand*{\fnsymbolsingle}[1]{% - \ensuremath{% - \ifcase#1% - \or *% - \or \dagger - \or \ddagger - \or \mathsection - \or \mathparagraph - \else - \@ctrerr - \fi - }% -} -\makeatother -\newalphalph{\fnsymbolmult}[mult]{\fnsymbolsingle}{} -\usepackage{amsmath} -\DeclareMathOperator{\opDiv}{div} -\DeclareMathOperator{\opMod}{mod} -\newcommand*{\Def}{% - \ensuremath{% - \mathrel{\mathop{:}}=% - }% -} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{alphalph.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{alphalph.drv} -% -% \title{The \xpackage{alphalph} package} -% \date{2016/05/16 v2.5} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% The package provides methods to represent numbers with a limited -% set of symbols. Both \hologo{LaTeX} and \hologo{plainTeX} are supported. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \subsection{Introduction} -% \hologo{LaTeX} counters can be represented in different ways -% by using presentation commands: -% \begin{quote} -% \cs{arabic}, \cs{roman}, \cs{Roman},\\ -% \cs{alph}, \cs{Alph}, \cs{fnsymbol} -% \end{quote} -% The ranges of supported counter values are more or less -% restricted. Only \cs{arabic} can be used with any counter -% value \hologo{TeX} supports. -% \begin{quote} -% \catcode`\|=12 % -% \begin{tabular}{@{}l|l|l|l@{}} -% Presentation & Supported & Ignored & Error message\\ -% command & domain & values & ``Counter too large''\\ -% \hline -% \cs{arabic} -% & \ttfamily -MAX..MAX & &\\ -% \cs{roman}, \cs{Roman} -% & \ttfamily 1..MAX & \ttfamily -MAX..0 &\\ -% \cs{alph}, \cs{Alph} -% & \ttfamily 1..26 & 0 & \ttfamily -MAX..-1, 27..MAX\\ -% \cs{fnsymbol} -% & \ttfamily 1..9 & 0 & \ttfamily -MAX..-1, 10..MAX\\ -% \hline -% \end{tabular}\\[1ex] -% \texttt{MAX} = \texttt{2147483647} -% \end{quote} -% Ordinal numbers are often used in documents: numbering -% of chapters, sections, figures, footnotes and so on. -% The layouter chooses \cs{Alph} for chapter numbers -% and \cs{fnsymbol} for footnotes. But what can be done -% if there are more than 26 chapters or more than 10 footnotes? -% This package \xpackage{alphalph} allows to define new -% presentation commands. They rely on a existing command -% and define presentations for values greater the limits. -% Three different methods are provided by the package. -% In the following use cases they are presentated. -% -% \subsection{Use cases} -% -% \subsubsection{Number system based on symbols} -% -% Asume you are writing a book and your lecturer demands -% that chapter numbers must be letters. But you have already -% 30 chapters and you have only 26 letters? -% -% In the decimal system the situation would be clear. -% If you run out of digits, you are using more digits -% to represent a number. This method can be also be used -% for letters. After chapter 26 with |Z| we us |AA|, |AB|, |AC|, and |AD| -% for the remaining chapters. -% -% Happily this package already defines this presentation command: -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\renewcommand*{\thechapter}{% -% \AlphAlph{\value{chapter}}% -%} -%\end{verbatim} -%\end{quote} -% \cs{AlphAlph} generates: -% \AlphAlph{1}, \AlphAlph{2}, \AlphAlph{3}, \dots, -% \AlphAlph{26}, \AlphAlph{27}, \AlphAlph{28}, \dots -% -% The other presentation command is \cs{alphalph} for lowercase letters. -% -% \subsubsection{Wrap symbols around} -% -% Nine footnote symbols are quite a few. -% Too soon the symbols are consumed -% and \hologo{LaTeX} complains with the error ``Counter too large''. -% However, it could be acceptable to start again with the symbols -% from the beginning, especially if there are less than nine symbols -% on a page. -% This could be achieved by a counter reset. -% But finding the right place can be difficult or needs manual -% actions. Also a -% unique counter value can be desirable (e.g. for generating -% unique anchor/link names). -% Package \xpackage{alphalph} allows you to define -% a macro that implements a ``wrap around'', but letting -% the value of the counter untouched: -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\makeatletter -%\newalphalph{\fnsymbolwrap}[wrap]{\@fnsymbol}{} -%\makeatother -%\renewcommand*{\thefootnote}{% -% \fnsymbolwrap{\value{footnote}}% -%} -%\end{verbatim} -%\end{quote} -% \cs{fnsymbolwrap} generates: -% \fnsymbolwrap{1}~(1), \fnsymbolwrap{2}~(2), \fnsymbolwrap{3}~(3), \dots, -% \fnsymbolwrap{9}~(9), \fnsymbolwrap{10}~(10), \fnsymbolwrap{11}~11, \dots -% -% \subsubsection{Multiple symbols} -% -% \Hologo{LaTeX}'s standard set of footnote symbols contains doubled -% symbols at the higher positions. Could this principle -% be generalized? -% Yes, but first we need a clean footnote symbol list without -% doubled entries, example: -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\makeatletter -%\newcommand*{\fnsymbolsingle}[1]{% -% \ensuremath{% -% \ifcase#1% -% \or *% -% \or \dagger -% \or \ddagger -% \or \mathsection -% \or \mathparagraph -% \else -% \@ctrerr -% \fi -% }% -%} -%\makeatother -%\newalphalph{\fnsymbolmult}[mult]{\fnsymbolsingle}{} -%\renewcommand*{\thefootnote}{% -% \fnsymbolmult{\value{footnote}}% -%} -%\end{verbatim} -%\end{quote} -% The own definition of \cs{fnsymbolsingle} has the -% advantage that this list can easily modified. -% Otherwise you can use \cs{@fnsymbol} directly, -% because it uses the same first five symbols. -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\makeatletter -%\newalphalph{\fnsymbolmult}[mult]{\@fnsymbol}{5} -%\makeatother -%\renewcommand*{\thefootnote}{% -% \fnsymbolmult{\value{footnote}}% -%} -%\end{verbatim} -%\end{quote} -% \cs{fnsymbolmult} generates: -% \fnsymbolmult{1}~(1), \fnsymbolmult{2}~(2), \fnsymbolmult{3}~(3), -% \fnsymbolmult{4}~(4), \fnsymbolmult{5}~(5), \fnsymbolmult{6}~(6), -% \dots, \fnsymbolmult{16}~16, \fnsymbolmult{17}~17, \dots -% -% \bigskip -% The same method can also be used for the chapter problem -% in the first discussed use case: -%\begin{quote} -%\begin{verbatim} -%\usepackage{alphalph} -%\makeatletter -%\newalphalph{\AlphMult}[mult]{\@Alph}{26} -%\makeatother -%\renewcommand*{\chapter}{% -% \AlphMult{\value{chapter}}% -%} -%\end{verbatim} -%\end{quote} -% \cs{AlphMult} then generates AA, BB, CC, and DD for chapters 27--30. -% -% \subsection{Glossary} -% -% \begin{description} -% \item[Counter presentation command] is a macro that -% expects a \hologo{LaTeX} counter name as argument. -% Numbers cannot be used. Examples: -% \cs{arabic}, \cs{alph}, \cs{fnsymbol}. -% \item[Number presentation command] is a macro that -% expects a number as argument. A number is anything -% that \hologo{TeX} accepts as number including \cs{value}. -% Examples: \cs{alphalph}, \cs{AlphAlph}, \cs{alphalph@alph} -% -% However, \cs{alph} or \cs{fnsymbol} are not number -% presentation commands because they expect a counter -% name as argument. Happily \hologo{LaTeX} counter presentation -% commands internally uses number presentation commands -% with the same name, but prefixed by `@'. Thus -% \cs{@alph}, \cs{@fnsymbol} are number presentation commands. -% \item[Symbols provider] is a command that can be used -% to get a list of symbols. For example, \cs{@Alph} -% provides the 26 uppercase letters from `A' to `Z'. -% Basically a symbol provider is a number presentation -% command, usually with a limited range. -% \item[Number of symbols] is the number of the -% last symbol slot of a symbol provider. Thus \cs{@Alph} -% generates 26 symbols, \cs{@fnsymbol} provides 9 symbols. -% \end{description} -% -% \subsection{Package usage} -% -% The package \Package{alphalph} can be used with both \hologo{plainTeX} -% and \hologo{LaTeX}: -% \begin{description} -% \item[\hologo{plainTeX}:] |\input alphalph.sty| -% \item[\hologo{LaTeX2e}:] |\usepackage{alphalph}|\\ -% There aren't any options. -% \end{description} -% -% \subsection{User commands} -% -% \begin{declcs}{AlphAlph} \M{number}\\ -% \cs{alphalph} \M{number} -% \end{declcs} -% Both macros are number presentation commands that -% expects a number as argument. \hologo{LaTeX} counters -% are used with \cs{value}. -% -% The macros represents a number by letters. -% First single letters |A..Z| are used, then -% two letters |AA..ZZ|, three letters |AAA...ZZZ|, \dots -% follow. -% -% Macro \cs{AlphAlph} uses uppercase letters, -% \cs{alphalph} generates the lowercase variant. -% \begin{quote} -% \catcode`\|=12 -% \def\entry#1{ -% \texttt{#1} -% & \texttt{\AlphAlph{#1}} -% & \texttt{\alphalph{#1}} -% } -% \begin{tabular}{@{}l|l|l@{}} -% \meta{number} & \verb|\AlphAlph{|\meta{number}\verb|}| -% & \verb|\alphalph{|\meta{number}\verb|}|\\ -% \hline -% \entry{1}\\ -% \entry{2}\\ -% \entry{26}\\ -% \entry{27}\\ -% \entry{30}\\ -% \entry{2000}\\ -% \entry{3752127}\\ -% \entry{10786572}\\ -% \entry{2147483647}\\ -% \end{tabular} -% \end{quote} -% -% \begin{declcs}{newalphalph} -% \M{cmd} -% |[|\meta{method}|]| -% \M{symbols provider} -% \M{number of symbols} -% \end{declcs} -% Macro \cs{newalphalph} defines \meta{cmd} as new -% number presentation command. Like \cs{newcommand} an error -% is thrown, if macro \meta{cmd} already exists. -% -% The \meta{method} is one of |alph|, |wrap|, or |mult|. -% The default is |alph|. -% -% As symbol provider a number presentation command -% can be used, e.g. \cs{@fnsymbol}, \cs{@Alph}, or -% \cs{alphalph@alph}. -% -% The last argument is the number of symbols. -% If the argument is empty, then \cs{newalphalph} tries -% to find this number itself. \hologo{LaTeX}'s number presentation -% commands throw an error message, if the number is too large. -% This error message is put in a macro \cs{@ctrerr}. -% Thus \cs{newalphalph} calls the symbol provider and tests -% a number by typesetting it in a temporary box. The error -% macro \cs{@ctrerr} is catched, it proofs that the number -% is not supported. Also if the width of the result is zero -% the number is considered as unavailable. -% -% The empty argument is useful for potentially variable lists. -% However if the end cannot be detected, then the number of -% symbols must be given. This is also a lot faster. Therefore don't -% let the argument empty without reason. -% -% \subsection{Programmer commands} -% -% \begin{declcs}{alphalph@Alph} \M{number}\\ -% \cs{alphalph@alph} \M{number} -% \end{declcs} -% They are basically the same as \cs{@Alph} and \cs{@alph}. -% Some languages of package \xpackage{babel} redefine -% \hologo{LaTeX}'s macros to include some font setup that -% breaks expandibility. Therefore \cs{AlphAlph} and \cs{alphalph} -% are based on \cs{alphalph@Alph} and \cs{alphalph@alph} to get -% the letters. The behaviour of these symbol providers for numbers -% outside the range |1..26| is undefined. -% -% \subsection{Design principles} -% -% \subsubsection{Number presentation commands} -% -% All number presentation commands that this package defines -% (including \cs{alphalph} and \cs{AlphAlph}) have the following -% properties: -% \begin{itemize} -% \item They are fully expandable. This means that they can safely -% \begin{itemize} -% \item be written to a file, -% \item used in moving arguments (\hologo{LaTeX}: they are \emph{robust}), -% \item used in a \cmd{\csname}-\cmd{\endcsname} pair. -% \end{itemize} -% \item If the argument is zero or negative, the commands expand -% to nothing like \cmd{\romannumeral}. -% \item The argument is a \hologo{TeX} number. Anything that would be -% accepted by \cmd{\number} is a valid argument: -% \begin{itemize} -% \item explicite constants, -% \item macros that expand to a number, -% \item count registers, \hologo{LaTeX} counter can used -% via \cmd{\value}, e.\,g.:\\ -% |\alphalph{\value{page}}| -% \item \dots -% \end{itemize} -% \item \hologo{eTeX}'s numeric expressions are supported, if \hologo{eTeX} is -% available. Then \cs{numexpr} is applied to the argument. -% Package \cs{calc}'s expressions are not supported. -% That would violate the expandibility. -% \end{itemize} -% -% \subsubsection{General usability} -% -% \begin{description} -% \item[\hologo{TeX} format:] -% The package does not depend on \hologo{LaTeX}, it can also be used -% by \hologo{plainTeX}, for example. -% \item[\hologo{eTeX}:] \eTeX is supported, the macros are shorter and -% faster. But \eTeX's extensions are not requirements. -% Without \hologo{eTeX}, just the implementation changes. The properties -% remain unchanged. -% \end{description} -% -% \StopEventually{ -% } -% -% \section{Implementation} -% \subsection{Begin\texorpdfstring{ of package}{}} -% \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@alphalph.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{alphalph}{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@alphalph.sty\endcsname -\ProvidesPackage{alphalph}% - [2016/05/16 v2.5 Convert numbers to letters (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 AlPh@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\AlPh@AtEnd{% - \AlPh@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{33}{12}% ! -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{40}{12}% ( -\TMP@EnsureCode{41}{12}% ) -\TMP@EnsureCode{43}{12}% + -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{59}{12}% ; -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{96}{12}% ` -\TMP@EnsureCode{124}{12}% | -\edef\AlPh@AtEnd{\AlPh@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% \subsection{Package loading} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input infwarerr.sty\relax - \input intcalc.sty\relax -\else - \RequirePackage{infwarerr}[2007/09/09]% - \RequirePackage{intcalc}[2007/09/09]% -\fi -% \end{macrocode} -% -% \subsection{\hologo{eTeX} detection} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname numexpr\endcsname\relax - \catcode124=9 % '!': ignore - \catcode43=14 % '+': comment -\else - \catcode124=14 % '!': comment - \catcode43=9 % '+': ignore -\fi -% \end{macrocode} -% -% \subsection{Help macros} -% -% \begin{macro}{\AlPh@Error} -% \begin{macrocode} -\def\AlPh@Error#1{% - \begingroup - \escapechar=92 % backslash - \@PackageError{alphalph}{#1}\@ehc - \endgroup -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AlPh@IfDefinable} -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname @ifdefinable\endcsname\relax - \def\AlPh@IfDefinable#1#2{% - \ifcase\ifx#1\@undefined\else\ifx#1\relax\else1\fi\fi0 % - #2% - \else - \AlPh@Error{% - Command \string#1 already defined% - }% - \fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\else -% \end{macrocode} -% \begin{macro}{\AlPh@IfDefinable} -% \begin{macrocode} - \let\AlPh@IfDefinable\@ifdefinable -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\fi -% \end{macrocode} -% -% \begin{macro}{\@ReturnAfterElseFi} -% \begin{macro}{\@ReturnAfterFi} -% The following commands moves the `then' and `else' part respectively -% behind the |\if|-construct. This prevents a too deep |\if|-nesting -% and so a \hologo{TeX} capacity error because of a limited input stack size. -% I use this trick in several packages, so I don't prefix these internal -% commands in order not to have the same macros with different names. -% (It saves memory.) -% \begin{macrocode} -\long\def\@ReturnAfterElseFi#1\else#2\fi{\fi#1} -\long\def\@ReturnAfterFi#1\fi{\fi#1} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@gobblefour} -% \Hologo{LaTeX} defines commands for eating arguments. -% Define \cs{@gobblefour} if it is not defined (\hologo{plainTeX}). -% \begin{macrocode} -\expandafter\ifx\csname @gobblefour\endcsname\relax - \long\def\@gobblefour#1#2#3#4{}% -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{AlPh@IfOptArg} -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname kernel@ifnextchar\endcsname\relax - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname @ifnextchar\endcsname\relax - \def\AlPh@IfOptArg#1#2{% - \def\AlPh@TempA{#1}% - \def\AlPh@TempB{#2}% - \futurelet\AlPh@Token\AlPh@IfOptArgNext - }% - \let\AlPh@BracketLeft=[%] - \def\AlPh@IfOptArgNext{% - \ifx\AlPh@Token\AlPh@BracketLeft - \expandafter\AlPh@TempA - \else - \expandafter\AlPh@TempB - \fi - }% - \else - \def\AlPh@IfOptArg{\@ifnextchar[}%] - \fi -\else - \def\AlPh@IfOptArg{\kernel@ifnextchar[}%] -\fi -% \end{macrocode} -% \end{macro} -% -% \subsection{Symbol provider} -% -% \subsubsection{Alphabet} -% -% The output of \cs{alphalph} and \cs{AlphAlph} should be -% usable as part of command names (see \cs{@namedef}, \cs{csname}, \dots). -% Unhappily some languages of package \xpackage{babel} -% redefine \hologo{LaTeX}'s \cs{@alph} and \cs{@Alph} in a manner that -% they cannot be used in expandable context any more. -% Therefore package \xpackage{alphalph} provides its own -% commands. -% -% \begin{macro}{\alphalph@Alph} -% \begin{macro}{\alphalph@alph} -% The two commands \cmd{\AlPh@Alph} and \cmd{\AlPh@alph} convert a -% number into a letter (uppercase and lowercase respectivly). -% The character |@| is used as an error symbol, -% if the number isn't in the range of 1 until 26. -% Here we need no space after the number |#1|, because the error -% symbol |@| for the zero case stops scanning the number. -% This error symbol should not appear anywhere (except for bugs). -% \begin{macrocode} -\def\alphalph@Alph#1{% - \ifcase#1% - @% - \or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M% - \or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z% - \else - \AlPh@ctrerr - @% - \fi -} -\def\alphalph@alph#1{% - \ifcase#1% - @% - \or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m% - \or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z% - \else - \AlPh@ctrerr - @% - \fi -} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \begin{macro}{\AlPh@ctrerr} -% Macro \cs{AlPh@ctrerr} is used as hook for the algorithm -% to get the available number of symbols. -% \begin{macrocode} -\def\AlPh@ctrerr{} -% \end{macrocode} -% \end{macro} -% -% \subsection{Finding number of symbols} -% -% \begin{macro}{\AlPh@GetNumberOfSymbols} -% \noindent -% |#1|: symbols provider -% \begin{macrocode} -\def\AlPh@GetNumberOfSymbols#1{% - \AlPh@TestNumber1!{#1}% - \ifAlPh@Unavailable - \def\AlPh@Number{0}% - \AlPh@Error{No symbols found}% - \else - \def\AlPh@Number{1}% - \AlPh@ExpSearch2!{#1}% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\ifAlPh@Unavailable} -% \begin{macrocode} -\let\ifAlPh@Unavailable\iffalse -\def\AlPh@Unavailabletrue{% - \global\let\ifAlPh@Unavailable\iftrue -} -\def\AlPh@Unavailablefalse{% - \global\let\ifAlPh@Unavailable\iffalse -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@TestNumber} -% |#1|: number to be tested\\ -% |#2|: symbols provider -% \begin{macrocode} -\def\AlPh@TestNumber#1!#2{% - \AlPh@Unavailablefalse - \begingroup - \setbox0=\hbox{% - \begingroup % color - \let\@ctrerr\AlPh@Unavailabletrue - \let\AlPh@ctrerr\AlPh@Unavailabletrue - #2{#1}% - \endgroup - }% - \ifdim\wd0=0pt % - \AlPh@Unavailabletrue - \fi - \endgroup -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@ExpSearch} -% |#1|: number to be tested\\ -% |#2|: symbols provider -% \begin{macrocode} -\def\AlPh@ExpSearch#1!#2{% - \let\AlPh@Next\relax - \AlPh@TestNumber#1!{#2}% - \ifAlPh@Unavailable - \expandafter\AlPh@BinSearch\AlPh@Number!#1!{#2}% - \else - \def\AlPh@Number{#1}% - \ifnum#1>1073741823 % - \AlPh@TestNumber2147483647!{#2}% - \ifAlPh@Unavailable - \AlPh@BinSearch#1!2147483647!{#2}% - \else - \def\AlPh@Number{0}% - \AlPh@Error{% - Maximal symbol number not found% - }% - \fi - \else - \def\AlPh@Next{% - \expandafter\AlPh@ExpSearch\number\intcalcShl{#1}!{#2}% - }% - \fi - \fi - \AlPh@Next -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@BinSearch} -% |#1|: available number\\ -% |#2|: unavailable number, |#2| $>$ |#1|\\ -% |#3|: symbols provider -% \begin{macrocode} -\def\AlPh@BinSearch#1!#2!#3{% - \expandafter\AlPh@ProcessBinSearch - \number\intcalcShr{\intcalcAdd{#1}{#2}}!% - #1!#2!{#3}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@ProcessBinSearch} -% |#1|: number to be tested, |#2| $\leq$ |#1| $\leq$ |#3|\\ -% |#2|: available number\\ -% |#3|: unavailable number\\ -% |#4|: symbols provider -% \begin{macrocode} -\def\AlPh@ProcessBinSearch#1!#2!#3!#4{% - \let\AlPh@Next\relax - \ifnum#1>#2 % - \ifnum#1<#3 % - \AlPh@TestNumber#1!{#4}% - \ifAlPh@Unavailable - \def\AlPh@Next{% - \AlPh@BinSearch#2!#1!{#4}% - }% - \else - \def\AlPh@Next{% - \AlPh@BinSearch#1!#3!{#4}% - }% - \fi - \else - \def\AlPh@Number{#2}% - \fi - \else - \def\AlPh@Number{#2}% - \fi - \AlPh@Next -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Methods} -% -% The names of method macros start with \cs{AlPh@Method}. -% These macros do the main job in converting a number to -% its representation. -% A method command is called with three arguments. -% The first argument is the number of symbols. The -% second argument is the basic macro for converting -% a number with limited number range. The last parameter -% is the number that needs converting. -% -% \subsubsection{Common methods} -% -% \begin{macro}{\AlPh@CheckPositive} -% \noindent -% |#1|: number to be checked -% |#2|: continuation macro\\ -% |#3|: number of symbols (hidden here)\\ -% |#4|: symbol provider (hidden here) -% \begin{macrocode} -\def\AlPh@CheckPositive#1!#2{% - \ifnum#1<1 % - \expandafter\@gobblefour - \fi - #2{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Method `alph'} -% -% \begin{macro}{\AlPh@Method@alph} -% \noindent -% |#1|: number of symbols\\ -% |#2|: symbols provider\\ -% |#3|: number to be converted -% \begin{macrocode} -\def\AlPh@Method@alph#1#2#3{% - \expandafter\AlPh@CheckPositive -| \number#3!% -+ \the\numexpr#3!% - \AlPh@ProcessAlph - {#1}{#2}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@ProcessAlph} -% |#1|: current number\\ -% |#2|: number of symbols\\ -% |#3|: symbols provider -% \begin{macrocode} -\def\AlPh@ProcessAlph#1#2#3{% - \ifnum#1>#2 % - \@ReturnAfterElseFi{% - \expandafter\AlPh@StepAlph\number - \intcalcInc{% - \intcalcMod{\intcalcDec{#1}}{#2}% - }% - \expandafter!\number - \intcalcDiv{\intcalcDec{#1}}{#2}% - !{#2}{#3}% - }% - \else - \@ReturnAfterFi{% - #3{#1}% - }% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@StepAlph} -% |#1|: current last digit\\ -% |#2|: new current number\\ -% |#3|: number of symbols\\ -% |#4|: symbols provider -% \begin{macrocode} -\def\AlPh@StepAlph#1!#2!#3#4{% - \AlPh@ProcessAlph{#2}{#3}{#4}% - #4{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Method `wrap'} -% -% \begin{macro}{\AlPh@Method@wrap} -% \noindent -% |#1|: number of symbols\\ -% |#2|: symbols provider\\ -% |#3|: number to be converted -% \begin{macrocode} -\def\AlPh@Method@wrap#1#2#3{% - \expandafter\AlPh@CheckPositive -| \number#3!% -+ \the\numexpr#3!% - \AlPh@ProcessWrap - {#1}{#2}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AlPh@ProcessWrap} -% |#1|: number to be converted\\ -% |#2|: number of symbols\\ -% |#3|: symbols provider -% \begin{macrocode} -\def\AlPh@ProcessWrap#1#2#3{% - \ifnum#1>#2 % - \@ReturnAfterElseFi{% - \expandafter\AlPh@StepWrap\number - \intcalcInc{\intcalcMod{\intcalcDec{#1}}{#2}}% - !{#3}% - }% - \else - \@ReturnAfterFi{% - #3{#1}% - }% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@StepWrap} -% |#1|: final number\\ -% |#2|: symbols provider -% \begin{macrocode} -\def\AlPh@StepWrap#1!#2{% - #2{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Method `mult'} -% -% After the number of symbols is exhausted, -% repetitions of the symbol are used. -% \begin{gather*} -% x \Def \text{number to be converted}\\ -% n \Def \text{number of symbols}\\ -% r \Def \text{repetition length}\\ -% s \Def \text{symbol slot}\\ -% r = ((x - 1) \div n) + 1\\ -% s = ((x - 1) \mod n) + 1 -% \end{gather*} -% \begin{macro}{\AlPh@Method@mult} -% \noindent -% |#1|: number of symbols\\ -% |#2|: symbols provider\\ -% |#3|: number to be converted -% \begin{macrocode} -\def\AlPh@Method@mult#1#2#3{% - \expandafter\AlPh@CheckPositive -| \number#3!% -+ \the\numexpr#3!% - \AlPh@ProcessMult - {#1}{#2}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AlPh@ProcessMult} -% |#1|: number to be converted\\ -% |#2|: number of symbols\\ -% |#3|: symbols provider -% \begin{macrocode} -\def\AlPh@ProcessMult#1#2#3{% - \ifnum#1>#2 % - \@ReturnAfterElseFi{% - \expandafter\AlPh@StepMult\romannumeral - \intcalcInc{\intcalcDiv{\intcalcDec{#1}}{#2}}% - 000% - \expandafter!\number - \intcalcInc{\intcalcMod{\intcalcDec{#1}}{#2}}% - !{#3}% - }% - \else - \@ReturnAfterFi{% - #3{#1}% - }% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@StepMult} -% |#1#2|: repetitions coded as list of character `m'\\ -% |#3|: symbol slot\\ -% |#4|: symbols provider -% \begin{macrocode} -\def\AlPh@StepMult#1#2!#3!#4{% - \ifx\\#2\\% - \else - \@ReturnAfterFi{% - \AlPh@StepMult#2!#3!{#4}% - }% - \fi - #4{#3}% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{User interface} -% -% \begin{macro}{\newalphalph} -% Macro \cs{newalphalph} had three arguments in versions below 2.0. -% For the new method argument we use an optional argument an first -% position.\\ -% |#1|: cmd\\ -% |[#2]|: method name: |alph| (default), |wrap|, |mult|\\ % hash-ok -% |#3|: symbols provider\\ -% |#4|: number of symbols -% \begin{macrocode} -\AlPh@IfDefinable\newalphalph{% - \def\newalphalph#1{% - \AlPh@IfOptArg{% - \AlPh@newalphalph{#1}% - }{% - \AlPh@newalphalph{#1}[alph]% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@newalphalph} -% |#1|: cmd -% |#2|: method name\\ -% |#3|: symbols provider\\ -% |#4|: number of symbols -% \begin{macrocode} -\def\AlPh@newalphalph#1[#2]#3#4{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname AlPh@Method@#2\endcsname\relax - \AlPh@Error{% - Unknown method % -| `#2'% -+ `\detokenize{#2}'% - }% - \else - \ifx\\#4\\% - \AlPh@GetNumberOfSymbols{#3}% - \ifcase\AlPh@Number - \else - \begingroup - \escapechar=92 % backslash - \@PackageInfo{alphalph}{% - Number of symbols for \string#1 is \AlPh@Number - }% - \endgroup - \expandafter\AlPh@NewAlphAlph - \csname AlPh@Method@#2\expandafter\endcsname - \AlPh@Number!{#1}{#3}% - \fi - \else - \expandafter\AlPh@NewAlphAlph - \csname AlPh@Method@#2\expandafter\endcsname -| \number#4!% -+ \the\numexpr#4!% - {#1}{#3}% - \fi - \fi -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AlPh@NewAlphAlph} -% |#1|: method macro\\ -% |#2|: number of symbols\\ -% |#3|: cmd\\ -% |#4|: symbols provider -% \begin{macrocode} -\def\AlPh@NewAlphAlph#1#2!#3#4{% - \AlPh@IfDefinable#3{% - \ifnum#2>0 % - \def#3{#1{#2}{#4}}% - \else - \AlPh@Error{% - Definition of \string#3 failed,\MessageBreak - because number of symbols (#2) is not positive% - }% - \fi - }% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AlphAlph} -% \begin{macrocode} -\newalphalph\AlphAlph\alphalph@Alph{26} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\alphalph} -% \begin{macrocode} -\newalphalph\alphalph\alphalph@alph{26} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\AlPh@AtEnd% -% -% \end{macrocode} -% -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{alphalph}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/alphalph.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/alphalph.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 alphalph.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@{}} -% alphalph.sty & tex/generic/oberdiek/alphalph.sty\\ -% alphalph.pdf & doc/latex/oberdiek/alphalph.pdf\\ -% alphalph.dtx & source/latex/oberdiek/alphalph.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{alphalph.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 alphalph.dtx -%makeindex -s gind.ist alphalph.idx -%pdflatex alphalph.dtx -%makeindex -s gind.ist alphalph.idx -%pdflatex alphalph.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{1999/03/19 v0.1} -% \item -% The first version was built as a response to a -% \URL{\link{question}}^^A -% {https://groups.google.com/group/comp.text.tex/msg/17a74cd721641038}^^A -% of \NameEmail{Will Douglas}{william.douglas@wolfson.ox.ac.uk} -% and the -% \URL{\link{request}}^^A -% {https://groups.google.com/group/comp.text.tex/msg/8f9768825640315f}^^A -% of \NameEmail{Donald Arsenau}{asnd@reg.triumf.ca}, -% published in the newsgroup -% \href{news:comp.text.tex}{comp.text.tex}: -% \URL{``\link{Re: alph counters \textgreater\ 26}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/cec563eef8bf65d0} -% \item -% Copyright: LPPL (\CTAN{macros/latex/base/lppl.txt}) -% \end{Version} -% \begin{Version}{1999/04/12 v1.0} -% \item -% Documentation added in dtx format. -% \item -% \hologo{eTeX} support added. -% \end{Version} -% \begin{Version}{1999/04/13 v1.1} -% \item -% Minor documentation change. -% \item -% First CTAN release. -% \end{Version} -% \begin{Version}{1999/06/26 v1.2} -% \item -% First generic code about \cmd{\ProvidesPackage} improved. -% \item -% Documentation: Installation part revised. -% \end{Version} -% \begin{Version}{2006/02/20 v1.3} -% \item -% Reload check (for \hologo{plainTeX}) -% \item -% New DTX framework. -% \item -% LPPL 1.3 -% \end{Version} -% \begin{Version}{2006/05/30 v1.4} -% \item -% \cs{newalphalph} added. -% \end{Version} -% \begin{Version}{2007/04/11 v1.5} -% \item -% Line ends sanitized. -% \end{Version} -% \begin{Version}{2007/09/09 v2.0} -% \item -% New implementation that uses package \cs{intcalc}. -% This removes the dependency on \hologo{eTeX}. -% \item -% \cs{newalphalph} is extended to support new methods `wrap' and 'multi'. -% \item -% Documentation rewritten. -% \end{Version} -% \begin{Version}{2008/08/11 v2.1} -% \item -% Code is not changed. -% \item -% URLs updated from \texttt{www.dejanews.com} -% to \texttt{groups.google.com}. -% \end{Version} -% \begin{Version}{2010/03/01 v2.2} -% \item -% Compatibility with \hologo{iniTeX}. -% \end{Version} -% \begin{Version}{2010/04/18 v2.3} -% \item -% Documentation fixes (Martin M\"unch). -% \end{Version} -% \begin{Version}{2011/05/13 v2.4} -% \item -% Documentation fixes (Jim Diamond) and using package -% \xpackage{hologo} for the documentation. -% \item -% Catalogue file added. -% \end{Version} -% \begin{Version}{2016/05/16 v2.5} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/askinclude.dtx b/macros/latex/contrib/oberdiek/askinclude.dtx deleted file mode 100644 index 0fcab173eb..0000000000 --- a/macros/latex/contrib/oberdiek/askinclude.dtx +++ /dev/null @@ -1,1947 +0,0 @@ -% \iffalse meta-comment -% -% File: askinclude.dtx -% Version: 2018/11/01 v2.4 -% Info: Interactive asking of included files -% -% Copyright (C) -% 1991-1994 Pablo A. Straub -% 2007, 2008, 2011 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 askinclude.dtx -% and the derived files -% askinclude.sty, askinclude.pdf, askinclude.ins, askinclude.drv, -% askinclude.bib, askinclude-a.tex, askinclude-b.tex, -% askinclude-c.tex, askinclude-test1.tex, -% askinclude-test2.tex, askinclude-test3.tex, -% askinclude-test4.tex, askinclude-test5.tex, -% askinclude-test6.tex, askinclude-test7.tex, -% askinclude-test8.tex, askinclude-test9.tex, -% askinclude-test10.tex, askinclude-test11.tex, -% askinclude-test12.tex, askinclude-test13.tex, -% askinclude-test14.tex, askinclude-test15.tex, -% askinclude-test16.tex, askinclude-test17.tex, -% askinclude-test18.tex, askinclude-test19.tex, -% askinclude-test20.tex, askinclude-test21.tex, -% askinclude-test22.tex, askinclude-test23.tex, -% askinclude-test24.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/askinclude.dtx -% CTAN:macros/latex/contrib/oberdiek/askinclude.pdf -% -% Unpacking: -% (a) If askinclude.ins is present: -% tex askinclude.ins -% (b) Without askinclude.ins: -% tex askinclude.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{askinclude.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If askinclude.drv is present: -% latex askinclude.drv -% (b) Without askinclude.drv: -% latex askinclude.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 askinclude.dtx -% bibtex askinclude.aux -% makeindex -s gind.ist askinclude.idx -% pdflatex askinclude.dtx -% makeindex -s gind.ist askinclude.idx -% pdflatex askinclude.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/askinclude.sty -% TDS:doc/latex/oberdiek/askinclude.pdf -% TDS:source/latex/oberdiek/askinclude.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: askinclude 2018/11/01 v2.4 Interactive asking of included files} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: askinclude -Version: 2018/11/01 v2.4 - -Copyright (C) - 1991-1994 Pablo A. Straub - 2007, 2008, 2011 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 askinclude.dtx -and the derived files - askinclude.sty, askinclude.pdf, askinclude.ins, askinclude.drv, - askinclude.bib, askinclude-a.tex, askinclude-b.tex, - askinclude-c.tex, askinclude-test1.tex, - askinclude-test2.tex, askinclude-test3.tex, - askinclude-test4.tex, askinclude-test5.tex, - askinclude-test6.tex, askinclude-test7.tex, - askinclude-test8.tex, askinclude-test9.tex, - askinclude-test10.tex, askinclude-test11.tex, - askinclude-test12.tex, askinclude-test13.tex, - askinclude-test14.tex, askinclude-test15.tex, - askinclude-test16.tex, askinclude-test17.tex, - askinclude-test18.tex, askinclude-test19.tex, - askinclude-test20.tex, askinclude-test21.tex, - askinclude-test22.tex, askinclude-test23.tex, - askinclude-test24.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{askinclude.ins}{\from{askinclude.dtx}{install}}% - \file{askinclude.drv}{\from{askinclude.dtx}{driver}}% - \nopreamble - \nopostamble - \file{askinclude.bib}{\from{askinclude.dtx}{bib}}% - \usepreamble\defaultpreamble - \usepostamble\defaultpostamble - \usedir{tex/latex/oberdiek}% - \file{askinclude.sty}{\from{askinclude.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% - \file{askinclude-a.tex}{\from{askinclude.dtx}{a}}% - \file{askinclude-b.tex}{\from{askinclude.dtx}{b}}% - \file{askinclude-c.tex}{\from{askinclude.dtx}{c}}% -% \file{askinclude-test1.tex}{\from{askinclude.dtx}{test0,test1}}% -% \file{askinclude-test2.tex}{\from{askinclude.dtx}{test0,test2}}% -% \file{askinclude-test3.tex}{\from{askinclude.dtx}{test0,test3}}% -% \file{askinclude-test4.tex}{\from{askinclude.dtx}{test0,test4}}% -% \file{askinclude-test5.tex}{\from{askinclude.dtx}{test0,test5}}% -% \file{askinclude-test6.tex}{\from{askinclude.dtx}{test0,test6}}% -% \file{askinclude-test7.tex}{\from{askinclude.dtx}{test0,test7}}% -% \file{askinclude-test8.tex}{\from{askinclude.dtx}{test0,test8}}% -% \file{askinclude-test9.tex}{\from{askinclude.dtx}{test0,test9}}% -% \file{askinclude-test10.tex}{\from{askinclude.dtx}{test0,test10}}% -% \file{askinclude-test11.tex}{\from{askinclude.dtx}{test0,test11}}% -% \file{askinclude-test12.tex}{\from{askinclude.dtx}{test0,test12}}% -% \file{askinclude-test13.tex}{\from{askinclude.dtx}{test0,test13}}% -% \file{askinclude-test14.tex}{\from{askinclude.dtx}{test0,test14}}% -% \file{askinclude-test15.tex}{\from{askinclude.dtx}{test0,test15}}% -% \file{askinclude-test16.tex}{\from{askinclude.dtx}{test0,test16}}% -% \file{askinclude-test17.tex}{\from{askinclude.dtx}{test0,test17}}% -% \file{askinclude-test18.tex}{\from{askinclude.dtx}{test0,test18}}% -% \file{askinclude-test19.tex}{\from{askinclude.dtx}{test0,test19}}% -% \file{askinclude-test20.tex}{\from{askinclude.dtx}{test0,test20}}% -% \file{askinclude-test21.tex}{\from{askinclude.dtx}{test0,test21}}% -% \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}}% -} - -\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{* askinclude.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `askinclude.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*bib> -@online{texlive, - author={Fairbairns, Robin}, - title={[tex-live] licence on includeonly.sty}, - date={2007-10-13}, - url={https://www.tug.org/pipermail/tex-live/2007-October/014928.html}, - urldate={2011-12-02}, -} -@online{newsthread, - author={Vo{\ss}, Herbert}, - title={askinclude.sty}, - note={Thread in newsgroup {\xnewsgroup{comp.text.tex}}; - Message-ID: {\texttt{fev72m\$b35\$02\$2@news.t-online.com}}}, - date={2007-10-15}, - url={https://groups.google.com/group/comp.text.tex/browse_thread/thread/728a3e73c04c6789/349e31865c40d00c}, - urldate={2011-12-02}, -} -@manual{makematch, - author={Kastrup, David}, - title={makematch.sty: Pattern matching with wildcards}, - date={2007-02-23}, - version={1.7925}, - url={https://ctan.org/pkg/qstest}, - urldate={2011-12-02}, -} -@manual{excludeonly, - author={Luecking, Daniel H. and Arseneau, Donald}, - title={The excludeonly package}, - date={2003-03-14}, - url={https://ctan.org/pkg/excludeonly}, - urldate={2011-12-02}, -} -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{askinclude.drv}% - [2018/11/01 v2.4 Interactive asking of included files]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\usepackage{ifluatex} -\ifluatex -\else - \usepackage[T1]{fontenc}% - \usepackage{lmodern}% -\fi -\usepackage{csquotes} -\usepackage[ - backend=bibtex, - bibencoding=ascii, - alldates=iso,seconds=true, -]{biblatex}[2011/11/13] -\bibliography{oberdiek-source} -\bibliography{askinclude} -\begin{document} - \DocInput{askinclude.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{askinclude.drv} -% -% \title{The \xpackage{askinclude} package} -% \date{2018/11/01 v2.4} -% \author{ -% Pablo A. Straub\\[1ex] -% Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% -% \maketitle -% -% \begin{abstract} -% This package replaces \cs{includeonly} by an interactive user -% interface. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \subsection{User interface} -% -% The \cs{include} feature of \LaTeX\ allows the division of -% the text body in separate compilation units. It is page -% based and stores counter settings in additional auxiliary -% files. \cs{includeonly} limits the actually included files -% to the ones, listed in its argument. -% -% Example: -%\begin{quote} -%\begin{verbatim} -%\documentclass{report} -% -%\usepackage{askinclude} -% -% % Don't use \include in the preamble. -% % Instead \input can be used or make a package -% -%\begin{document} -%\include{title} -%\include{introduction} -%\include{summary} -%\include{index} -%\end{document} -%\end{verbatim} -%\end{quote} -% -% Package \xpackage{askinclude} adds an interactive user interface. -% The user is asked which files he want to include and sets -% \cs{includeonly} accordingly. -% -% The first time the package is used the question looks like: -%\begin{quote} -%\begin{verbatim} -%*********************************** -%*** Package askinclude Question *** -%*********************************** -% -%Previous answer (noregexp): -% [*] -% -%Regular expressions: -% --> [noregexp] disabled -% [makematch] enabled, using package `makematch' -% [pdfmatch] enabled, using pdfTeX's \pdfmatch -% -%Which files do you want to include? -% [foo,bar] comma separated file or pattern list -% [*] all files -% [-] no files -% [?] ask for each file -% [] use the previous answer -% -%\answer=chapter2,summary -%\end{verbatim} -%\end{quote} -% Square brackets are used as quotation symbols, -% they are not part of the answer. -% The answer by the user follows in the last line after |\answer=|. -% \begin{description} -% \def\Item[#1]{\item[{[\texttt{#1}]:}]} -% \Item[foo,bar] -% A comma separated file list (also one file only) is passed -% to macro \cs{includeonly} directly. If regular expression support -% is enabled, the entries in the list are interpreted as -% file name patterns that will be matched against the file names -% in \cs{include}, see \hyperref[sec:regexp]{section \ref*{sec:regexp}}. -% \Item[*] This is a shortcut for specifying \emph{all} files. -% \Item[-] This means \emph{none} of the files is included. -% \Item[?] The switches in single asking mode. -% The user will be asked at each \cs{include}. -% See section \hyperref[sec:single]{section \ref*{sec:single}}. -% \Item[] Just pressing return (empty string) uses the default -% answer, that was stored in the auxiliary file (\xfile{.aux}) -% of the previous \LaTeX run with package \xpackage{askinclude}. -% Without previous runs the default is [|*|] for all files. -% \Item[noregexp] Turns regular expression support off. -% \Item[makematch] Enables regular expression support -% package \xpackage{makematch} provides. -% \Item[pdfmatch] It is shown, if \pdfTeX~1.30 or later is used. -% It relies on an undocumented feature \cs{pdfmatch} that may -% change in future versions of \pdfTeX. -% \end{description} -% Package \xpackage{askinclude} remembers the files of \cs{include} -% in the auxiliary file and the given answer. they are -% presented at the next run -% at the start of the question: -%\begin{quote} -%\begin{verbatim} -%*********************************** -%*** Package askinclude Question *** -%*********************************** -% -%Files, found by previous run in \include: -% (-) title -% (-) introduction -% (-) chapter1 -% (+) chapter2 -% (-) chapter3 -% (+) summary -% -%Previous answer (noregexp): -% [chapter2,summary] -%... -%\end{verbatim} -%\end{quote} -% |(+)| and |(-)| marks files that were and were not included in -% the previous run. The file list and marks are not always correct. -% For example, if \cs{include} statements are added or removed. -% If the method of regular expression support is different, -% then the marks only reflects the mode of the previous answer. -% -% \subsection{Single asking mode} -% \label{sec:single} -% -% The special answer `|?|' trigger single asking mode, -% at the next \cs{include} the user is asked again: -%\begin{quote} -%\begin{verbatim} -%*********************************** -%*** Package askinclude Question *** -%*********************************** -% -%Include `title'? [y]es, [n]o, [A]ll, [N]one, [D]efault (n): -% -%\answer= -%\end{verbatim} -%\end{quote} -% Use the letter inside the square brackets as answer. -% An empty string uses the default answer, the letter in parentheses. -% The answers are: -% \begin{description} -% \def\Item[#1]{\item[{[\texttt{#1}]:}]} -% \Item[y] The file is included. -% \Item[n] The file is excluded. -% \Item[A] This file and all following files are included. -% \Item[N] This file and all following files are excluded. -% \Item[D] Use the default answer for this and all following files. -% \end{description} -% If the file is known from the previous run, then the -% default is `|y|' or `|n|' corresponding to the mark -% `|(+)|' or `|(-)|' in the list of previous files. -% Otherwise `|y|' is used as default. -% -% \subsection{Regular expressions} -% \label{sec:regexp} -% -% Three methods are available that can also set by package options: -% \begin{description} -% \def\Item[#1]{\item[\xoption{#1}:]} -% \Item[noregexp] Regular expression support is disabled. -% \Item[makematch] Use package \xpackage{makematch}. -% \Item[pdfmatch] Use \pdfTeX's \cs{pdfmatch} if available. -% \end{description} -% Without options the value remembered in the auxiliary file -% is used, otherwise the default is \xoption{noregexp}. -% -% \subsubsection{Method \xoption{makematch}} -% -% Package \xpackage{makematch} (part of \xpackage{qstest}), written -% by David Kastrup provides pattern matching based on wildcards: -% \begin{description} -% \item[{[\texttt{*}]}:] The star matches zero or more characters. -% Thus a lonely star machtes anything. -% \item[{[\texttt{!}]}:] The exclamation mark at the begin of a -% pattern negates it, thus the matching files are excluded. -% \end{description} -% The pattern list is evaluated for a file name from left to -% right. Always a file name must match the whole pattern. -% The file is included if it is matched by a pattern and -% not excluded afterwards. Examples: -% \begin{quote} -% \def\no{\textrm{$\emptyset$}} -% \begin{tabular}{>{\ttfamily}l|>{\ttfamily}l|>{\ttfamily}l} -% \textrm{Pattern list} & \textrm{File names} & \textrm{Result}\\ -% \hline -% foobar & foobar,dummy & foobar\\ -% foo* & foobar,xfoobar & foobar\\ -% \relax *foo* & xfoobar & xfoobar\\ -% f*b*r & foobar & foobar\\ -% \relax * & any & any\\ -% !foobar & foobar,other & other\\ -% !foo* & xfoobar & xfoobar\\ -% in*,!*dex & intro,index & intro\\ -% !index,in* & intro,index & intro,index\\ -% \relax *,!chap2 & chap1,chap2,chap3 & chap1,chap3\\ -% \end{tabular} -% \end{quote} -% The example in the last line shows, how the behaviour of package -% \xpackage{excludeonly} \cite{excludeonly} can be simulated. -% -% The documentation of package \xpackage{makematch} tells the -% the empty pattern does not match anything. But if you answer -% the question with an empty string the answer of the previous -% run is used. Also curly braces are not reliable because the -% can get stripped during the processing of the answer. -% Using a pair of empty curly braces or the comma for two empty -% patterns currently works, but this is specific for the current -% implementation and may change in future. But the special -% answer `-' is available. -% -% \subsubsection{Method \xoption{pdfmatch}} -% -% In \pdfTeX\ 1.30 the new primitive \cs{pdfmatch} was introduced. -% It is not documented yet, because it was not decided if it remains -% and which implementation of regular expressions should be used. -% Thus the situation may change in later versions of \pdfTeX. -% Currently (1.30 until 1.40) it uses a library for POSIX 1003.2 regular -% expressions, see manual page ``regex(7)''. -% -% If a pattern in the pattern list is invalid, the package prints -% a warning and removes the pattern from the list. Actually there -% are two warnings, the other warning is generated by \pdfTeX\ itself. -% -% In opposite to \xoption{makematch} the pattern only needs to -% match the specified part of the file name. -% For matching the whole name, the symbols `|^|' and `|$|' for -% begin and end of string must be included. -% -% Additionally an initial exclamation mark `|!|' implements the -% same logic as method \xoption{makematch}. The match result is -% inverted, the matched file excluded. -% -% Examples: -% \begin{quote} -% \def\no{\textrm{$\emptyset$}} -% \begin{tabular}{>{\ttfamily}l|>{\ttfamily}l|>{\ttfamily}l} -% \textrm{Pattern list} & \textrm{File names} & \textrm{Result}\\ -% \hline -% foobar & foobar,dummy & foobar\\ -% foo.* & foobar,xfoobar & foobar,xfoobar\\ -% |^|foo.* & foobar,xfoobar & foobar\\ -% foo|$| & foo,foobar & foo\\ -% fo?bar & fbar,fobar,foobar & fbar,fobar\\ -% fo+bar & fbar,fobar,foobar & fobar,foobar\\ -% fo*bar & fbar,fobar,foobar & fbar,fobar,foobar\\ -% chap3 & chap3,chap32 & chap1,chap3,chap32\\ -% chap[13] & chap1,chap2,chap3 & chap1,chap3\\ -% chap(1\string|3)|$| & chap1,chap3,chap33 & chap1,chap3\\ -% .* & any & any\\ -% !foobar & foobar,other & other\\ -% in.*,!dex & intro,index & intro\\ -% !index,in.* & intro,index & intro,index\\ -% .*,!chap2 & chap1,chap2,chap3 & chap1,chap3\\ -% .*,!bla & foo,bla,blabla & foo\\ -% .*,!|^|bla|$| & foo,bla,blabla & foo,blabla\\ -% \end{tabular} -% \end{quote} -% The example in the last line shows, how the behaviour of package -% \xpackage{excludeonly} \cite{excludeonly} can be simulated. -% As the third last line shows, that sometimes `|^|' and `|$|' can -% be omitted, but this will not work always, shown in the second -% last line. -% -% \subsection{History} -% -% Package \xpackage{askinclude} was invented by Pablo A. Straub in 1991 -% and maintained until 1994. -% ^^A Email address: pablo.straub \symbol{64} gmail.com -% -% In October 2007 it was removed from ``TeX Live'' because of -% the no-commercial license \cite{texlive}. Herbert Vo\ss\ initiated -% a search for the author in the newsgroup \xnewsgroup{comp.text.tex} -% \cite{newsthread} to ask him to change the license. -% -% It seems that the author could not be reached any more. -% Joseph Wright suggested a reimplementation that I (HO) have done -% as package \xpackage{askinc}. Soon it was enhanced by -% feature requests. -% -% Then Ulrike Fischer found email addresses of the original author -% and Jim Hefferon succeeded in contacting him. He allowed a change -% of the license to LPPL and the transfer of the maintainership -% to someone else. -% -% Thus I merged both packages as \xpackage{askinclude} in a new -% major version 2. The license is LPPL. -% -% \subsection{New features of version 2} -% -% \begin{itemize} -% \item License is now LPPL. -% \item A list of \cs{include} files that are detected by the previous -% run is printed before the question. -% \item If the special answer `|?|' is given, then the user is -% asked at each \cs{include}. -% \item Support for regular expressions. -% \item The remaining stuff in the \xfile{.aux} file does not -% cause errors, if the package is removed. -% \item The use of \cs{includeonly} before the package loading time -% is detected and respected by taking precedence. After the package -% is loaded, \cs{includeonly} is disabled and prints a warning. -% \end{itemize} -% -% \subsection{Compatibility to version 1} -% -% \begin{itemize} -% \item The user interface of version 1 with its special answers -% `|*|', `|-|', and `' remain unchanged, but it is extended by -% version 2 with the special answer `|?|' and support for -% regular expressions can be enabled. -% \item As reimplementation the internal macros have changed of course. -% \item \xfile{.aux} files that are written by version 1.x will work -% with version 2.x because \cs{@includeonly} is recognized. -% \item \LaTeX\ 2.09: The package works as \cs{documentstyle} option -% in compatibility mode of \LaTeXe. It is possible that it -% will not work in pure \LaTeX\ 2.09. -% \end{itemize} -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \subsection{Header and catcodes} -% -% \begin{macrocode} -%<*package> -\NeedsTeXFormat{LaTeX2e} -\begingroup\catcode61\catcode48\catcode32=10\relax% - \catcode13=5 % ^^M - \endlinechar=13 % - \catcode123=1 % { - \catcode125=2 % } - \catcode64=11 % @ - \def\x{\endgroup - \expandafter\edef\csname AskInc@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\AskInc@AtEnd{% - \AskInc@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{33}{12}% ! -\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{58}{12}% : -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{63}{12}% ? -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{96}{12}% ` -\edef\AskInc@AtEnd{\AskInc@AtEnd\noexpand\endinput} -\ProvidesPackage{askinclude}% - [2018/11/01 v2.4 Interactive asking of included files]% -% \end{macrocode} -% -% Luatex compat -% \begin{macrocode} -\ifx\pdfextension\@undefined\else - \protected\def\pdflastobj {\numexpr\pdffeedback lastobj\relax} - \protected\def\pdfnames {\pdfextension names } - \protected\def\pdfobj {\pdfextension obj } - \let\pdfoutput \outputmode -\fi -% \end{macrocode} -% -% \subsection{Delay action after preamble} -% -% \begin{macro}{\AskInc@AtBeginDocument} -% Some actions such as \xfile{.aux} file writing cannot be -% performed in the preamble. \cs{AtBeginDocument} delays -% such action until |\begin{document}|. However \cs{AtBeginDocument} -% must not be used after that time (\cs{@onlypreamble}). -% Thus \cs{AskInc@AtBeginDocument} uses \cs{AtBeginDocument} -% in the preamble and afterwards executes the code immediately. -% \begin{macrocode} -\AtBeginDocument{% - \let\AskInc@AtBeginDocument\@firstofone -} -\providecommand*{\AskInc@AtBeginDocument}{\AtBeginDocument} -% \end{macrocode} -% \end{macro} -% -% \subsection{Write entry in \xfile{.aux} file} -% -% \begin{macro}{\AskInc@WriteAux} -% The first argument is written to the main \xfile{.aux} file -% and the second argument is executed if writing was possible. -% Remember \cs{nofiles} prevents writing to auxiliary files. -% \begin{macrocode} -\def\AskInc@WriteAux#1#2{% - \AskInc@AtBeginDocument{% - \if@filesw - \immediate\write\@mainaux{#1}% - #2% - \fi - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Remember \cs{include} files} -% -% \begin{macro}{\AskInc@CharHash} -% \begin{macrocode} -\edef\AskInc@CharHash{\string#} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AskInc@WriteDefAddList} -% \begin{macrocode} -\def\AskInc@WriteDefAddList{% - \AskInc@WriteAux{% -% \end{macrocode} -% \begin{macro}{\AskInc@AddList} -% \begin{macrocode} - \string\providecommand*\string\AskInc@AddList[2]{% - \string\ifcase\string\ifx\AskInc@CharHash1\string\@undefined - \string\else - \string\ifx\AskInc@CharHash1\string\relax - \string\else - \string\ifx\AskInc@CharHash1\string\@empty - \string\else - 1% - \string\fi - \string\fi - \string\fi - 0 % - \string\gdef\AskInc@CharHash1{\AskInc@CharHash2}% - \string\else - \string\g@addto@macro\AskInc@CharHash1{,\AskInc@CharHash2}% - \string\fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - }{% - \global\let\AskInc@WriteDefAddList\relax - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@WriteDefAddFile} -% \begin{macrocode} -\def\AskInc@WriteDefAddFile{% - \AskInc@WriteDefAddList - \AskInc@WriteAux{% -% \end{macrocode} -% \begin{macro}{\AskInc@AddFile} -% \begin{macrocode} - \string\providecommand\string\AskInc@AddFile{% - \string\AskInc@AddList\string\AskInc@Files - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - }{% - \global\let\AskInc@WriteDefAddFile\relax - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@AddFile} -% \begin{macrocode} -\AtBeginDocument{% - \global\let\AskInc@AddFile\@gobble -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@WriteAddFile} -% \begin{macrocode} -\def\AskInc@WriteAddFile#1{% - \AskInc@WriteDefAddFile - \AskInc@WriteAux{% - \string\AskInc@AddFile{#1}% - }{}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@Files} -% \begin{macrocode} -\providecommand*{\AskInc@Files}{} -% \end{macrocode} -% \end{macro} -% -% \paragraph{Summary:} -% Now \cs{AskInc@Files} is always defined -% and either empty or contains a comma separated list of -% \cs{include} files of previous run. -% -% The \cs{include} files are remembered by using -% \cs{AskInc@WriteAddFile} at each \cs{include}. -% -% \subsection{Redefine \cs{include}} -% -% \begin{macro}{\AskInc@OrgInclude} -% \begin{macrocode} -\newcommand{\AskInc@OrgInclude}{} -\let\AskInc@OrgInclude\include -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@AskFile} -% \begin{macrocode} -\let\AskInc@AskFile\@gobble -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@MatchFile} -% \begin{macrocode} -\let\AskInc@MatchFile\@gobble -% \end{macrocode} -% \end{macro} -% \begin{macro}{\include} -% \begin{macrocode} -\renewcommand*{\include}[1]{% - \AskInc@WriteAddFile{#1}% - \AskInc@AskFile{#1}% - \AskInc@MatchFile{#1}% - \AskInc@OrgInclude{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Store answer and match method in \xfile{.aux} file} -% -% \begin{macrocode} -\AtEndOfPackage{% - \AtBeginDocument{% - \@ifundefined{AskInc@Answer}{}{% - \AskInc@WriteAux{% - \string\gdef\string\AskInc@Answer{\AskInc@Answer}% - }{}% - }% - \@ifundefined{AskInc@MatchMethod}{}{% - \AskInc@WriteAux{% - \string\gdef\string\AskInc@MatchMethod{\AskInc@MatchMethod}% - }{}% - }% - }% -} -% \end{macrocode} -% -% \subsection{Support for \cs{@includeonly}} -% -% \begin{macro}{\@includeonly} -% Macro \cs{@includeonly} is defined for compatiblity reasons only, -% if the \xfile{.aux} file was written by versions before 2 of package -% \xpackage{askinclude}. -% \begin{macrocode} -\providecommand*{\@includeonly}[1]{% - \gdef\AskInc@Answer{#1}% - \ifx\AskInc@Answer\@empty - \gdef\AskInc@Answer{-}% - \fi - \global\let\AskInc@MatchMethod\@empty -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Stop if \cs{includeonly} is active} -% -% If \cs{includeonly} is used before, the questions are skipped -% and the data in the main auxiliary file is preserved. -% \begin{macrocode} -\if@partsw - \PackageWarningNoLine{askinclude}{% - Previous \string\includeonly\space detected,\MessageBreak - therefore asking for files is suppressed% - }% -% \end{macrocode} -% Dummy options. -% \begin{macrocode} - \DeclareOption{makematch}{}% - \DeclareOption{pdfmatch}{}% - \DeclareOption{noregexp}{}% - \ProcessOptions*% -% \end{macrocode} -% Preserve \cs{AskInc@MatchFiles}. -% \begin{macrocode} - \@ifundefined{AskInc@MatchFiles}{% - }{% - \ifx\AskInc@MatchMethod\@empty - \else - \AskInc@WriteAux{% - \string\gdef\string\AskInc@MatchFiles{\AskInc@MatchFiles}% - }{}% - \fi - }% - \expandafter\AskInc@AtEnd -\fi% -% \end{macrocode} -% -% \subsection{\cs{includeonly}} -% -% \begin{macro}{\AskInc@OrgIncludeOnly} -% \begin{macrocode} -\newcommand{\AskInc@OrgIncludeOnly}{}% -\let\AskInc@OrgIncludeOnly\includeonly -% \end{macrocode} -% \end{macro} -% \begin{macro}{\includeonly} -% \begin{macrocode} -\renewcommand*{\includeonly}[1]{% - \PackageWarning{askinclude}{% - \string\includeonly\space is managed by package `askinclude',% - \MessageBreak - therefore it is ignored% - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Options} -% -% \begin{macro}{\AskInc@StringNoRegExp} -% \begin{macrocode} -\def\AskInc@StringNoRegExp{noregexp} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@StringMakeMatch} -% \begin{macrocode} -\def\AskInc@StringMakeMatch{makematch} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@StringPdfMatch} -% \begin{macrocode} -\def\AskInc@StringPdfMatch{pdfmatch} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\ifAskInc@PdfMatchAvailable} -% \begin{macrocode} -\newif\ifAskInc@PdfMatchAvailable -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdfmatch\endcsname\relax -\else - \AskInc@PdfMatchAvailabletrue -\fi -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\DeclareOption{makematch}{% - \let\AskInc@MatchOption\AskInc@StringMakeMatch -} -\ifAskInc@PdfMatchAvailable - \DeclareOption{pdfmatch}{% - \let\AskInc@MatchOption\AskInc@StringPdfMatch - }% -\else - \DeclareOption{pdfmatch}{% - \PackageWarningNoLine{askinclude}{% - Option `pdfmatch' is not available because\MessageBreak - your pdfTeX does not provide \string\pdfmatch - }% - }% -\fi -\DeclareOption{noregexp}{% - \let\AskInc@MatchOption\@empty -} -\ProcessOptions* -% \end{macrocode} -% -% \subsection{Strings} -% -% \begin{macro}{\AskInc@CharAsterisk} -% \begin{macrocode} -\def\AskInc@CharAsterisk{*} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharMinus} -% \begin{macrocode} -\def\AskInc@CharMinus{-} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharPlus} -% \begin{macrocode} -\def\AskInc@CharPlus{+} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharQuestion} -% \begin{macrocode} -\def\AskInc@CharQuestion{?} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharExclam} -% \begin{macrocode} -\def\AskInc@CharExclam{!} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharYes} -% \begin{macrocode} -\def\AskInc@CharYes{y} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharNo} -% \begin{macrocode} -\def\AskInc@CharNo{n} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharAll} -% \begin{macrocode} -\def\AskInc@CharAll{A} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharNone} -% \begin{macrocode} -\def\AskInc@CharNone{N} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CharDefault} -% \begin{macrocode} -\def\AskInc@CharDefault{D} -% \end{macrocode} -% \end{macro} -% -% \subsection{Set defaults} -% -% \begin{macro}{\AskInc@SanitizeAnswer} -% \begin{macrocode} -\def\AskInc@SanitizeAnswer#1#2{% - \begingroup - \escapechar=`\\% - \edef\[{\string\[}% - \edef\]{\string\]}% - \edef\({\string\(}% - \edef\){\string\)}% - \edef\*{\string\*}% - \edef\+{\string\+}% - \edef\?{\string\?}% - \edef\|{\string\|}% - \edef\^{\string\^}% - \edef\${\string\$}% - \edef\{{\string\{}% - \edef\}{\string\}}% - \edef\.{\string\.}% - \xdef#1{% - \expandafter\expandafter\expandafter\zap@space - \expandafter#2\space\@empty - }% - \endgroup -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\AtBeginDocument{% - \@ifundefined{AskInc@Answer}{% - \global\let\AskInc@Answer\AskInc@CharAsterisk - }{% - \AskInc@SanitizeAnswer\AskInc@Answer\AskInc@Answer - }% - \global\let\AskInc@PreviousAnswer\AskInc@Answer - \@ifundefined{AskInc@MatchMethod}{% - \global\let\AskInc@MatchMethod\@empty - }{}% - \global\let\AskInc@PreviousMatchMethod\AskInc@MatchMethod - \@ifundefined{AskInc@MatchOption}{% - \let\AskInc@MatchOption\AskInc@MatchMethod - }{}% - \ifx\AskInc@MatchOption\AskInc@StringPdfMatch - \ifAskInc@PdfMatchAvailable - \else - \let\AskInc@MatchOption\@empty - \fi - \fi - \@ifundefined{AskInc@MatchFiles}{% - \let\AskInc@MatchFiles\@empty - }{}% -} -% \end{macrocode} -% -% \subsection{Questions} -% -% \subsubsection{Generic question header} -% -% \begin{macro}{\AskInc@QuestionHeader} -% \begin{macrocode} -\def\AskInc@QuestionHeader{% - \typeout{}% - \typeout{***********************************}% - \typeout{*** Package askinclude Question ***}% - \typeout{***********************************}% - \typeout{}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Display files} -% -% \begin{macro}{\AskInc@TypeoutFiles} -% \begin{macrocode} -\def\AskInc@TypeoutFiles{% - \global\let\AskInc@PreviousMatches\@empty - \ifx\AskInc@Files\@empty - \else - \typeout{Files, found by previous run in \string\include:}% - \@for\AskInc@File:=\AskInc@Files\do{% - \ifx\AskInc@Answer\AskInc@CharAsterisk - \let\AskInc@Mark\AskInc@CharPlus - \else - \let\AskInc@Mark\AskInc@CharMinus - \ifx\AskInc@Answer\AskInc@CharMinus - \else - \ifx\AskInc@MatchMethod\@empty - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\@for\AskInc@Temp:=\AskInc@Answer}% - {\@for\AskInc@Temp:=\AskInc@MatchFiles}% - \do{% - \ifx\AskInc@File\AskInc@Temp - \let\AskInc@Mark\AskInc@CharPlus - \fi - }% - \fi - \fi - \typeout{ \@spaces(\AskInc@Mark) \AskInc@File}% - \ifx\AskInc@Mark\AskInc@CharPlus - \ifx\AskInc@PreviousMatches\@empty - \global\let\AskInc@PreviousMatches\AskInc@File - \else - \expandafter\g@addto@macro - \expandafter\AskInc@PreviousMatches{% - \expandafter,\AskInc@File - }% - \fi - \fi - }% - \typeout{}% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Previous answer} -% -% \begin{macro}{\AskInc@TypeoutPreviousAnswer} -% \begin{macrocode} -\def\AskInc@TypeoutPreviousAnswer{% - \typeout{% - Previous answer (% - \ifx\AskInc@MatchMethod\@empty - noregexp% - \else - \AskInc@MatchMethod - \fi - ):% - }% - \typeout{ \@spaces[\AskInc@Answer]}% - \typeout{}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Current regular expression support} -% -% \begin{macro}{\AskInc@TypeoutMatchMethod} -% \begin{macrocode} -\def\AskInc@TypeoutMatchMethod{% - \typeout{Regular expressions:}% - \AskInc@TypeoutMethod\@empty{noregexp}{% - \space disabled% - }% - \AskInc@TypeoutMethod\AskInc@StringMakeMatch{makematch}{% - enabled, using package `makematch'% - }% - \ifAskInc@PdfMatchAvailable - \AskInc@TypeoutMethod\AskInc@StringPdfMatch{pdfmatch}{% - \space enabled, using pdfTeX's \string\pdfmatch - }% - \fi - \typeout{}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@TypeoutMethod} -% \begin{macrocode} -\def\AskInc@TypeoutMethod#1#2#3{% - \typeout{% - \ifx#1\AskInc@MatchOption \space--> \else\@spaces\space\fi - [#2] #3% hash-ok - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Main question text} -% -% \begin{macro}{\AskInc@TypeoutMainQuestion} -% \begin{macrocode} -\def\AskInc@TypeoutMainQuestion{% - \typeout{Which files do you want to include?}% - \typeout{ \@spaces[foo,bar] \space\space - comma separated file or pattern list}% - \typeout{ \@spaces[*] \@spaces\@spaces all files}% - \typeout{ \@spaces[-] \@spaces\@spaces no files}% - \typeout{ \@spaces[?] \@spaces\@spaces ask for each file}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Main question} -% -% \begin{macro}{\AskInc@MainQuestion} -% \begin{macrocode} -\def\AskInc@MainQuestion{% - \AskInc@QuestionHeader - \AskInc@TypeoutFiles - \AskInc@TypeoutPreviousAnswer - \AskInc@TypeoutMatchMethod - \AskInc@TypeoutMainQuestion - \begingroup - \@makeother\*% - \@makeother\-% - \@makeother\?% - \@makeother\,% - \@makeother\!% - \@makeother\^% - \@makeother\$% - \@makeother\(% - \@makeother\)% - \@makeother\+% - \@makeother\[% - \@makeother\]% - \@makeother\\% - \@makeother\|% - \@makeother\:% - \@makeother\.% - \typein[\answer]% - { \@spaces[] \space\@spaces\@spaces use the previous answer}% - \typeout{}% - \AskInc@SanitizeAnswer\AskInc@@Answer\answer - \endgroup - \let\AskInc@Next\AskInc@MainQuestion - \ifx\AskInc@@Answer\AskInc@StringNoRegExp - \let\AskInc@MatchOption\@empty - \else - \ifx\AskInc@@Answer\AskInc@StringMakeMatch - \let\AskInc@MatchOption\AskInc@StringMakeMatch - \else - \ifx\AskInc@@Answer\AskInc@StringPdfMatch - \ifAskInc@PdfMatchAvailable - \let\AskInc@MatchOption\AskInc@StringPdfMatch - \else - \PackageWarning{askinclude}{% - Method `pdfmatch' is not available because\MessageBreak - your pdfTeX does not provide \string\pdfmatch - }% - \let\AskInc@MatchOption\@empty - \fi - \else - \ifx\AskInc@@Answer\@empty - \global\let\AskInc@@Answer\AskInc@Answer - \fi - \let\AskInc@Next\AskInc@MainAnswer - \fi - \fi - \fi - \AskInc@Next -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Evaluate answer of main question} -% -% \begin{macro}{\AskInc@MainAnswer} -% \begin{macrocode} -\def\AskInc@MainAnswer{% - \ifx\AskInc@@Answer\AskInc@CharQuestion - \global\let\AskInc@Answer\@empty - \global\let\AskInc@MatchMethod\@empty - \global\let\AskInc@AskFile\AskInc@DoAskFile - \AskInc@OrgIncludeOnly{}% - \else - \global\let\AskInc@Answer\AskInc@@Answer - \ifx\AskInc@@Answer\AskInc@CharAsterisk - \global\let\AskInc@MatchMethod\@empty - \else - \ifx\AskInc@@Answer\AskInc@CharMinus - \global\let\AskInc@MatchMethod\@empty - \AskInc@OrgIncludeOnly{}% - \else - \global\let\AskInc@MatchMethod\AskInc@MatchOption - \ifx\AskInc@MatchOption\@empty - \expandafter\AskInc@OrgIncludeOnly\expandafter{% - \AskInc@Answer - }% - \else - \AskInc@MatchInit - \AskInc@OrgIncludeOnly{}% - \fi - \fi - \fi - \fi - \let\AskInc@Include\AskInc@DoInclude -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AskInc@MatchInit} -% \begin{macrocode} -\def\AskInc@MatchInit{% - \RequirePackage{kvsetkeys}[2007/09/29]% - \expandafter\comma@normalize\expandafter{\AskInc@Answer}% - \global\let\AskInc@MatchList\comma@list -% \end{macrocode} -% \begin{macro}{\AskInc@MatchFile} -% \begin{macrocode} - \def\AskInc@MatchFile##1{% - \AskInc@DoMatch{##1}{% - \AskInc@WriteAddMatch{##1}% - \ifx\@partlist\@empty - \gdef\@partlist{##1}% - \else - \g@addto@macro\@partlist{,##1}% - \fi - }% - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - \ifx\AskInc@MatchMethod\AskInc@StringMakeMatch - \AskInc@MakeMatchInit - \else - \AskInc@PdfMatchInit - \fi - \let\AskInc@MatchInit\@undefined -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@MakeMatchInit} -% \begin{macrocode} -\def\AskInc@MakeMatchInit{% - \RequirePackage{makematch}% -% \end{macrocode} -% \begin{macro}{\AskInc@DoMatch} -% \begin{macrocode} - \def\AskInc@DoMatch##1{% - \def\AskInc@Temp{% - \MakeMatcher[,]\AskInc@Temp - }% - \expandafter\AskInc@Temp\expandafter{\AskInc@MatchList}% - \AskInc@Temp{{##1}}\@firstofone\@gobble - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - \let\AskInc@MakeMatchInit\@undefined -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@PdfMatchInit} -% \begin{macrocode} -\def\AskInc@PdfMatchInit{% -% \end{macrocode} -% \begin{macro}{\ifAskInc@Found} -% \begin{macrocode} - \newif\ifAskInc@Found -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@DoMatch} -% \begin{macrocode} - \def\AskInc@DoMatch##1{% - \AskInc@Foundfalse - \expandafter\comma@parse@normalized\expandafter - {\AskInc@MatchList}{\AskInc@CheckMatch{##1}}% - \ifAskInc@Found - \expandafter\@firstofone - \else - \expandafter\@gobble - \fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@CheckMatch} -% \begin{macrocode} - \def\AskInc@CheckMatch##1##2{% - \AskInc@@CheckMatch##2\@empty\@nil{##1}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@@CheckMatch} -% \begin{macrocode} - \def\AskInc@@CheckMatch##1##2\@nil##3{% - \def\AskInc@Temp{##1}% - \ifx\AskInc@Temp\AskInc@CharExclam - \ifcase\pdfmatch{##2}{##3}=1 % - \or - \AskInc@Foundfalse - \else - \AskInc@InvalidPattern{##2}{##1##2}% - \fi - \else - \ifcase\pdfmatch{##1##2}{##3} % - \or - \AskInc@Foundtrue - \else - \AskInc@InvalidPattern{##1##2}{##1##2}% - \fi - \fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@InvalidPattern} -% Prints a warning with the regular expression and -% removes it from the list to prevent further warnings -% for the same expression. -% \begin{macrocode} - \def\AskInc@InvalidPattern##1##2{% - \edef\AskInc@Temp{##1}% - \PackageWarningNoLine{askinclude}{% - Invalid pattern `\AskInc@Temp' for \string\pdfmatch - }% - \edef\AskInc@Temp{##2}% - \global\expandafter\let\expandafter\AskInc@MatchList - \expandafter\@empty - \expandafter\comma@parse@normalized\expandafter - {\AskInc@MatchList}\AskInc@FilterPattern - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@FilterPattern} -% \begin{macrocode} - \def\AskInc@FilterPattern##1{% - \edef\AskInc@Pattern{##1}% - \ifx\AskInc@Temp\AskInc@Pattern - \else - \ifx\AskInc@MatchList\@empty - \global\let\AskInc@MatchList\AskInc@Pattern - \else - \expandafter\g@addto@macro\expandafter\AskInc@MatchList{% - \expandafter,\AskInc@Pattern - }% - \fi - \fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - \let\AskInc@PdfMatchInit\@undefined -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AskInc@WriteDefAddMatch} -% \begin{macrocode} -\def\AskInc@WriteDefAddMatch{% - \AskInc@WriteDefAddList - \AskInc@WriteAux{% -% \end{macrocode} -% \begin{macro}{\AskInc@AddMatch} -% \begin{macrocode} - \string\providecommand\string\AskInc@AddMatch{% - \string\AskInc@AddList\string\AskInc@MatchFiles - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} - }{% - \global\let\AskInc@WriteDefAddMatch\relax - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@AddMatch} -% \begin{macrocode} -\AtBeginDocument{% - \global\let\AskInc@AddMatch\@gobble -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@WriteAddMatch} -% \begin{macrocode} -\def\AskInc@WriteAddMatch#1{% - \AskInc@WriteDefAddMatch - \AskInc@WriteAux{% - \string\AskInc@AddMatch{#1}% - }{}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AskInc@SaveAnswer} -% \begin{macrocode} -\def\AskInc@SaveAnswer{% - \AskInc@WriteAux{% - \string\gdef\string\AskInc@Answer{\AskInc@Answer}% - }{}% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Ask for each file} -% -% \begin{macro}{\AskInc@PreviousAnswer} -% \begin{macrocode} -\@ifundefined{AskInc@PreviousAnswer}{% - \let\AskInc@PreviousAnswer\AskInc@CharAsterisk -}{} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@PreviousMatchMethod} -% \begin{macrocode} -\@ifundefined{AskInc@PreviousMatchMethod}{% - \let\AskInc@PreviousMatchMethod\@empty -}{} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@DoAskFile} -% \begin{macrocode} -\def\AskInc@DoAskFile#1{% - \edef\AskInc@File{#1}% - \ifx\AskInc@PreviousAnswer\AskInc@CharAsterisk - \let\AskInc@Default\AskInc@CharYes - \else - \let\AskInc@Default\AskInc@CharNo - \ifx\AskInc@PreviousAnswer\AskInc@CharMinus - \else - \ifx\AskInc@PreviousMatchMethod\@empty - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\@for\AskInc@Temp:=\AskInc@PreviousAnswer}% - {\@for\AskInc@Temp:=\AskInc@MatchFiles}% - \do{% - \ifx\AskInc@Temp\AskInc@File - \let\AskInc@Default\AskInc@CharYes - \fi - }% - \fi - \ifx\AskInc@Default\AskInc@CharNo - \let\AskInc@Default\AskInc@CharYes - \@for\AskInc@Temp:=\AskInc@Files\do{% - \ifx\AskInc@Temp\AskInc@File - \let\AskInc@Default\AskInc@CharNo - \fi - }% - \fi - \fi - \let\AskInc@@QuestionHeader\AskInc@QuestionHeader - \AskInc@AskQuestion - \ifx\AskInc@AskResult\AskInc@CharYes - \ifx\AskInc@Answer\@empty - \gdef\AskInc@Answer{#1}% - \else - \g@addto@macro\AskInc@Answer{,#1}% - \fi - \AskInc@SaveAnswer - \let\@partlist\AskInc@Answer - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\AskInc@AskQuestion} -% \begin{macrocode} -\def\AskInc@AskQuestion{% - \let\AskInc@Temp\answer - \AskInc@@QuestionHeader - \let\AskInc@@QuestionHeader\relax - \typein[\answer]{% - Include `\AskInc@File'? [y]es, [n]o, [A]ll, [N]one, [D]efault % - (\AskInc@Default):% - }% - \typeout{}% - \let\AskInc@AskResult\answer - \let\answer\AskInc@Temp - \ifx\AskInc@AskResult\@empty - \let\AskInc@AskResult\AskInc@Default - \let\AskInc@Next\relax - \else - \ifx\AskInc@AskResult\AskInc@CharYes - \let\AskInc@Next\relax - \else - \ifx\AskInc@AskResult\AskInc@CharNo - \let\AskInc@Next\relax - \else - \ifx\AskInc@AskResult\AskInc@CharAll - \gdef\AskInc@AskQuestion{% - \let\AskInc@AskResult\AskInc@CharYes - }% - \else - \ifx\AskInc@AskResult\AskInc@CharNone - \gdef\AskInc@AskQuestion{% - \let\AskInc@AskResult\AskInc@CharNo - }% - \else - \ifx\AskInc@AskResult\AskInc@CharDefault - \gdef\AskInc@AskQuestion{% - \let\AskInc@AskResult\AskInc@Default - }% - \else - \PackageWarningNoLine{askinclude}{% - Invalid answer [\AskInc@AskResult].\MessageBreak - Answer must be one letter out of [ynAND]% - }% - \fi - \fi - \fi - \let\AskInc@Next\AskInc@AskQuestion - \fi - \fi - \fi - \AskInc@Next -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\AtBeginDocument{\AskInc@MainQuestion} -% \end{macrocode} -% -% \begin{macrocode} -\AskInc@AtEnd% -% -% \end{macrocode} -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{askinclude}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/askinclude.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/askinclude.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 askinclude.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@{}} -% askinclude.sty & tex/latex/oberdiek/askinclude.sty\\ -% askinclude.pdf & doc/latex/oberdiek/askinclude.pdf\\ -% askinclude.dtx & source/latex/oberdiek/askinclude.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{askinclude.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 askinclude.dtx -%bibtex askinclude.aux -%makeindex -s gind.ist askinclude.idx -%pdflatex askinclude.dtx -%makeindex -s gind.ist askinclude.idx -%pdflatex askinclude.dtx -%\end{verbatim} -% \end{quote} -% -% \section{Acknowledgement} -% -% \begin{description} -% \item[Tom Scavo] -% suggested saving the include file list -% from the previous run and a simplified user interface. -% \item[Joseph Wright] suggested questions for each \cs{include}. -% \end{description} -% -% \printbibliography[ -% heading=bibnumbered, -% ] -% -% \begin{History} - -% \begin{Version}{1991/11/05 v0.95} -% \item -% First beta-test version (asked two questions). -% \end{Version} -% \begin{Version}{1991/11/05 v0.99} -% \item -% Second beta-test version (asks one question; uses `|*|' and `|-|'). -% \end{Version} -% \begin{Version}{1991/11/07 v1.0} -% \item -% Changed prompts (sent to \xnewsgroup{comp.text.tex}): -% \URL{``\link{Interactive inclusion of files in LaTeX}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/34b770a7c277e79c} -% \end{Version} -% \begin{Version}{1991/12/13 v1.1} -% \item -% \textit{Unknown}. -% \end{Version} -% \begin{Version}{1994/11/02 v1.2e} -% \item -% Two small changes to run under LaTeX2e [RF]. -% \item -% Additional documentation [TRS]. -% \end{Version} -% \begin{Version}{2007/10/15 v1.0 (askinc)} -% \item -% Reimplementation, published as \xpackage{askinc} in -% newsgroup \xnewsgroup{comp.text.tex}:\\ -% \URL{``\link{Re: askinclude.sty}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/2d638b84a858fdc8} -% \item -% Listing of included files, collected from the previous run before -% the question. -% \item -% No error message by \xfile{.aux} file if package is removed. -% \end{Version} -% \begin{Version}{2007/10/23 v2.0} -% \item -% The next version of \xpackage{askinc} becomes -% version 2.0 of \xpackage{askinclude}. -% \item -% `|?|' added for questioning each file. -% \item -% \cs{includeonly} has precedence until package loading. -% Then it is disabled by a warning. -% \item -% Documentation rewritten/added. -% \item -% Tests added. -% \end{Version} -% \begin{Version}{2008/08/11 v2.1} -% \item -% Code is not changed. -% \item -% URLs updated. -% \end{Version} -% \begin{Version}{2011/12/02 v2.2} -% \item -% Bibliography rewritten for biblatex. -% \end{Version} -% \begin{Version}{2016/05/14 v2.3} -% \item -% Luatex compatibility -% \end{Version} -% \begin{Version}{2018/11/01 v2.4} -% \item -% Remove luatex85 package dependency -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput -% \begin{Version}{1991/11/05 v0.95} -% \item -% First beta-test version (asked two questions). -% \end{Version} -% \begin{Version}{1991/11/05 v0.99} -% \item -% Second beta-test version (asks one question; uses `|*|' and `|-|'). -% \end{Version} -% \begin{Version}{1991/11/07 v1.0} -% \item -% Changed prompts (sent to \xnewsgroup{comp.text.tex}): -% \URL{``\link{Interactive inclusion of files in LaTeX}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/34b770a7c277e79c} -% \end{Version} -% \begin{Version}{1991/12/13 v1.1} -% \item -% \textit{Unknown}. -% \end{Version} -% \begin{Version}{1994/11/02 v1.2e} -% \item -% Two small changes to run under LaTeX2e [RF]. -% \item -% Additional documentation [TRS]. -% \end{Version} -% \begin{Version}{2007/10/15 v1.0 (askinc)} -% \item -% Reimplementation, published as \xpackage{askinc} in -% newsgroup \xnewsgroup{comp.text.tex}:\\ -% \URL{``\link{Re: askinclude.sty}''}^^A -% {https://groups.google.com/group/comp.text.tex/msg/2d638b84a858fdc8} -% \item -% Listing of included files, collected from the previous run before -% the question. -% \item -% No error message by \xfile{.aux} file if package is removed. -% \end{Version} -% \begin{Version}{2007/10/23 v2.0} -% \item -% The next version of \xpackage{askinc} becomes -% version 2.0 of \xpackage{askinclude}. -% \item -% `|?|' added for questioning each file. -% \item -% \cs{includeonly} has precedence until package loading. -% Then it is disabled by a warning. -% \item -% Documentation rewritten/added. -% \item -% Tests added. -% \end{Version} -% \begin{Version}{2008/08/11 v2.1} -% \item -% Code is not changed. -% \item -% URLs updated. -% \end{Version} -% \begin{Version}{2011/12/02 v2.2} -% \item -% Bibliography rewritten for biblatex. -% \end{Version} -% \begin{Version}{2016/05/14 v2.3} -% \item -% Luatex compatibility -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/askinclude.pdf b/macros/latex/contrib/oberdiek/askinclude.pdf deleted file mode 100644 index 166088b282..0000000000 Binary files a/macros/latex/contrib/oberdiek/askinclude.pdf and /dev/null differ diff --git a/macros/latex/contrib/oberdiek/auxhook.pdf b/macros/latex/contrib/oberdiek/auxhook.pdf index c40cf1c4b9..a15cc6be14 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.pdf b/macros/latex/contrib/oberdiek/bigintcalc.pdf index fbcbd5f2f7..a1a19b5c49 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 deleted file mode 100644 index dbb7c1ba2a..0000000000 --- a/macros/latex/contrib/oberdiek/bitset.dtx +++ /dev/null @@ -1,2957 +0,0 @@ -% \iffalse meta-comment -% -% File: bitset.dtx -% Version: 2016/05/16 v1.2 -% Info: Handle bit-vector datatype -% -% Copyright (C) -% 2007, 2011 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 bitset.dtx -% and the derived files -% bitset.sty, bitset.pdf, bitset.ins, bitset.drv, bitset-test1.tex, -% bitset-test2.tex, bitset-test3.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/bitset.dtx -% CTAN:macros/latex/contrib/oberdiek/bitset.pdf -% -% Unpacking: -% (a) If bitset.ins is present: -% tex bitset.ins -% (b) Without bitset.ins: -% tex bitset.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{bitset.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If bitset.drv is present: -% latex bitset.drv -% (b) Without bitset.drv: -% latex bitset.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 bitset.dtx -% makeindex -s gind.ist bitset.idx -% pdflatex bitset.dtx -% makeindex -s gind.ist bitset.idx -% pdflatex bitset.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/bitset.sty -% TDS:doc/latex/oberdiek/bitset.pdf -% TDS:source/latex/oberdiek/bitset.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: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: bitset -Version: 2016/05/16 v1.2 - -Copyright (C) - 2007, 2011 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 bitset.dtx -and the derived files - bitset.sty, bitset.pdf, bitset.ins, bitset.drv, bitset-test1.tex, - bitset-test2.tex, bitset-test3.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{bitset.ins}{\from{bitset.dtx}{install}}% - \file{bitset.drv}{\from{bitset.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{bitset.sty}{\from{bitset.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \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}}% -} - -\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{* bitset.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `bitset.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{bitset.drv}% - [2016/05/16 v1.2 Handle bit-vector datatype (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\usepackage{amstext} -\usepackage{ifluatex} -\ifluatex -\else - \usepackage[T1]{fontenc}% - \usepackage{lmodern}% -\fi -\begin{document} - \DocInput{bitset.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{bitset.drv} -% -% \title{The \xpackage{bitset} 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 defines and implements the data type bit set, -% a vector of bits. The size of the vector may grow dynamically. -% Individual bits can be manipulated. -% \end{abstract} -% -% \tableofcontents -% -% \clearpage -% \section{Documentation} -% -% \subsection{Introduction} -% -% Annotations in the PDF format know entries whose values are -% integers. This numbers are interpreted as set of flags -% specifying properties. For example, annotation dictionaries -% can have a key |/F|. The bits of its integer value -% are interpreted the following way: -% \begin{quote} -% \begin{tabular}{@{}l|l@{}} -% Bit position & Property name\\ -% \hline -% 1 & Invisible\\ -% 2 & Hidden\\ -% 3 & Print\\ -% 4 & NoZoom\\ -% 5 & NoRotate\\ -% 6 & NoView\\ -% 7 & ReadOnly\\ -% \dots & \dots -% \end{tabular} -% \end{quote} -% Now, let's see how these values are set in package \xpackage{hyperref} -% before it uses this package (before v6.77a): -%\begin{quote} -%\begin{verbatim} -%\ifFld@hidden /F 6\else /F 4\fi -%\end{verbatim} -%\end{quote} -% Where are the other flags? The following example for key |/Ff| -% in a widget annotation -% supports at least three properties: -%\begin{quote} -%\begin{verbatim} -%\ifFld@multiline -% \ifFld@readonly /Ff 4097\else /Ff 4096\fi -%\else -% \ifFld@password -% \ifFld@readonly /Ff 8193\else /Ff 8192\fi -% \else -% \ifFld@readonly /Ff 1\fi -% \fi -%\fi -%\end{verbatim} -%\end{quote} -% But you see the point. It would be a nightmare to continue -% this way in supporting the missing flag settings. This kind -% of integers may have up to 32 bits. -% -% Therefore I wanted a data structure for setting and -% clearing individual bits. Also it should provide -% an export as decimal number. The snipsets above are -% executed in expansion contexts without \TeX's stomach -% commands. It would be convenient to have an expandable -% conversion from the data structure to the integer that -% gets written to the PDF file. -% -% This package \xpackage{bitset} implements such a data -% structure. The interface is quite close to Java's -% class |BitSet| in order not to learn to many interfaces -% for the same kind of data structure. -% -% \subsection{Glossary} -% -% \begin{description} -% \item[Bit set:] -% A bit set is a vector of bits or flags. -% The vector size is unlimited and -% grows dynamically. An undefined bit set is treated as bit -% set where all bits are cleared. -% -% Bit sets are addressed by name. A name should consists of -% letters or digits. Technically it must survive \cs{csname}, -% see \LaTeX's environment names for other names with such -% a constraint. Package \xpackage{babel}'s shorthands are -% not supported due to technical reasons. Shorthand support -% would break expandable operations. -% \item[Size:] -% A size of a bit set is the number of bits in use. -% It's the number of the highest index, incremented by one. -% Sizes are in the range |0| up to |2147483647|, the highest -% number supported by \TeX. -% \item[Index:] -% Bit positions in a bit set are addressed by an index number. -% The bit vector is zero based. The first and least significant -% bit is addressed by index |0| and the highest possible bit -% by |2147483646|. -% \item[Bit:] -% A bit is enoded as |0| for cleared/disabled or |1| for set/enabled. -% \end{description} -% -% \subsection{Design principles} -% -% \begin{description} -% \item[Name conventions:] -% To avoid conflicts with existing macro names, the operations -% are prefixed by the package name. -% \item[Zero based indexes:] The first bit is addressed by zero. -% (Convention of array indexing in C, Java, \dots) -% \item[Unlimited size:] -% There is no restriction on the size of a bit set other than -% usual memory limitations. \cs{bitsetSetDec} and \cs{bitsetGetDec} -% transparently switch to package \xpackage{bigintcalc} if the numbers -% get too large for \TeX's number limit. -% \item[Expandibility:] -% Any operation that does not change the bit set is expandable. -% And all operations that extract or calculate some result -% do this in exact two expansion steps. For example, -% a macro \cs{Macro} wants a bit set as decimal number. -% But the argument must be a plain number without macros. -% Thus you could prefix \cs{bitsetGetDec} with \cs{number}. -% However this won't work for bit sets with 31 or more bits -% because of \TeX's number limit of $2^{31}-1$. -% then just hit the operator with two \cs{expandafter}: -% \begin{quote} -% |\expandafter\expandafter\expandafter|\\ -% |\Macro\bitsetGetDec{foo}| -% \end{quote} -% |\bitsetGetDec| is hit first by the third \cs{expandafter} -% and then by the second one. -% \item[Format independence:] This package is written as \LaTeX\ package, -% but it does not depend on \LaTeX. It will also work for other formats -% such as \plainTeX. -% \item[Independence from \TeX\ engines:] -% Vanilla \TeX\ is all you need. Calculations are delegated to -% packages \xpackage{intcalc} and \xpackage{bigintcalc}. -% They don't need any special features, but they will switch -% to a little more efficient implementation if features such -% as \cs{numexpr} are available. -% \item[Numeric arguments:] Anything that is accepted by -% \cs{number}. If \eTeX\ is detected, also expressions -% for \cs{numexpr} are supported. The only exception so far -% is the number for \cs{bitsetSetDec}. The number might be too -% large for \cs{number} or \cs{numexpr}. -% \item[Error messages:] -% In expandable contexts, only a limited set of \TeX\ primitive -% commands work as expected. So called stomach commands behave -% like \cs{relax} and don't get expanded or executed. -% Unhappily also the error commands belong to this category. -% The expandable operations will throw an unknown control -% sequence instead to get \TeX's and user's attention. -% The name of these control sequences starts with -% \cs{BitSetError:} with the type of error after the colon. -% \end{description} -% -% \subsection{Operator overview} -% -% \begin{minipage}{\linewidth} -% \begin{description} -% \def\It#1#2{^^A -% \item[^^A -% {#1} ^^A -% \textmd{(\hyperref[{sec:#2}]{section \ref*{sec:#2}})}^^A -% ]^^A -% \mbox{}\\^^A -% } -% \def\op#1{^^A -% \cs{bitset}\texttt{\bfseries#1}^^A -% } -% \def\M#1{\meta{#1}} -% \def\Q{\hspace*{\fill}} -% \It{Miscellaneous}{misc} -% \op{Reset}\Q \M{BitSet}\\ -% \op{Let}\Q \M{BitSet A} \M{BitSet B} -% \It{Import}{import} -% \op{SetBin}, \op{SetOct}, \op{SetHex}\Q \M{BitSet} \M{Value}\\ -% \op{SetDec}\Q \M{BitSet} \M{Value} -% \It{Export\textsuperscript{a}}{export} -% \op{GetBin}, \op{GetOct}, \op{GetHex}\Q \M{BitSet} \M{MinSize}\\ -% \op{GetDec}\Q \M{BitSet} -% \It{Logical operators}{log} -% \op{And}, \op{AndNot}\Q \M{BitSet A} \M{BitSet B}\\ -% \op{Or}, \op{Xor}\Q \M{BitSet A} \M{BitSet B} -% \It{Shifting}{shift} -% \op{ShiftLeft}, \op{ShiftRight}\Q \M{BitSet} \M{ShiftAmount}\\ -% \It{Bit manipulation}{bitman} -% \op{Clear}, \op{Set}, \op{Flip}\Q \M{BitSet} \M{Index}\\ -% \op{SetValue}\Q \M{BitSet} \M{Index} \M{Value}\\ -% \op{ClearRange}, \op{SetRange}, \op{FlipRange}\\ -% \Q \M{BitSet} \M{IndexFrom} \M{IndexTo}\\ -% \op{SetValueRange}\Q \M{BitSet} \M{IndexFrom} \M{IndexTo} -% \It{Bit retrieval\textsuperscript{a}}{bitret} -% \op{Get}\Q \M{BitSet} \M{Index}\\ -% \op{NextClearBit}, \op{NextSetBit}\Q \M{BitSet} \M{Index}\\ -% \op{GetSetBitList}\Q \M{BitSet} -% \It{Bit set properties}{prop} -% \op{Size}, \op{Cardinality}\Q \M{BitSet} -% \It{Queries\textsuperscript{b}}{query} -% \op{IsDefined}, \op{IsEmpty}\Q \M{BitSet} \M{Then} \M{Else}\\ -% \op{Equals}, \op{Intersects}\Q \M{BitSet A} \M{BitSet B} \M{Then} \M{Else}\\ -% \op{Query}\Q \M{BitSet} \M{Index} \M{Then} \M{Else} -% \end{description} -% \footnotetext[1]{Macros are expandable, full expansion by two steps.} -% \footnotetext[2]{Macros are expandable.} -% \end{minipage} -% -% \subsection{Package loading} -% -% The package can be used as normal \LaTeX\ package: -%\begin{quote} -%|\usepackage{bitset}| -%\end{quote} -% Also \plainTeX\ is supported: -%\begin{quote} -%|\input bitset.sty\relax| -%\end{quote} -% -% \subsection{Operators} -% -% The following macros work on and with bit sets. -% A bit set \meta{BitSet} is represented by a name. -% The should consist of letters and digits. Technically -% it must survive \cs{csname}. It is the same constraint -% that must be satisfied by label or environment names -% in \LaTeX. -% -% However active characters that are shorthands -% of package \xpackage{babel} are not supported. -% Support for shorthands works by an assignment. -% But many operators -% such as \cs{bitsetGetDec} must be usable in expandable -% contexts. There assignments will not be executed in the -% best case or they will cause errors. -% -% The bits in a bit set are addressed by non-negative -% integers starting from zero. Thus negative index -% numbers cause an error message. Because index numbers -% are \TeX\ numbers. The largest index is 2147483647. -% But in practice memory limits and patience limits -% will be very likely reached much before. -% -% \subsubsection{Miscellaneous}\label{sec:misc} -% -% There isn't a separate operation for bit set creation. -% For simplicity an undefined bit set is treated as bit set -% with all bits cleared. -% -% \begin{declcs}{bitsetReset} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetReset} clears all bits. The result is an -% empty bit set. It may also be used as replacement for -% an operation ``new'', because an undefined bit set is defined -% afterwards. -% -% \begin{declcs}{bitsetLet} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% Macro \cs{bitsetLet} performs a simple assignment similar -% to \TeX's \cs{let}. After the operation \meta{BitSet A} has -% the same value as \meta{BitSet B}. If \meta{BitSet B} is -% undefined, then \meta{BitSet A} will be the empty bit set. -% -% Note: If \meta{BitSet A} exists, it will be overwritten. -% -% \subsubsection{Import}\label{sec:import} -% -% \begin{declcs}{bitsetSetBin} \M{BitSet} \M{BinaryNumber}\\ -% \cs{bitsetSetOct} \M{BitSet} \M{OctalNumber}\\ -% \cs{bitsetSetHex} \M{BitSet} \M{HexadecimalNumber} -% \end{declcs} -% The numbers are interpreted as bit vectors and the flags in -% the bit \meta{BitSet} set are set accordingly. -% These numeric arguments are the only arguments where -% spaces are allowed. Then the numbers are easier to read. -% -% \begin{declcs}{bitsetSetDec} \M{BitSet} \M{DecimalNumber} -% \end{declcs} -% Macro \cs{bitsetSetDec} uses \meta{DecimalNumber} to -% set the bit set \meta{BitSet}. -% The numeric argument must expand -% to a plain number consisting of decimal digits without -% command tokens or spaces. Internally this argument is -% expanded only. It cannot be passed to \cs{number} or -% \cs{numexpr}, because the number may be too large for them. -% However \cs{number} or |\the\numexpr| may be used -% explicitely. This also helps for unexpandable number -% command tokens or registers (\cs{z@}, \cs{@ne}, \cs{count@}, \dots). -% Also \LaTeX'\ \cs{value} needs prefixing: -% \begin{quote} -% |\bitsetSetDec{foo}{\number\value{bar}}| -% \end{quote} -% -% \subsubsection{Export}\label{sec:export} -% -% \begin{declcs}{bitsetGetBin} \M{BitSet} \M{MinSize}\\ -% \cs{bitsetGetOct} \M{BitSet} \M{MinSize}\\ -% \cs{bitsetGetHex} \M{BitSet} \M{MinSize} -% \end{declcs} -% These macros returns the bit set as binary, octal or hexadecimal -% number. If the bit size is smaller than \meta{MinSize} the gap is -% filled with leading zeros. -% Example: -% \begin{quote} -% |\bitsetReset{abc}|\\ -% |\bitsetSet{abc}{2}|\\ -% |\bitsetGetBin{abc}{8}| $\rightarrow$ |00000100|\\ -% |\bitsetSet{abc}{5}\bitsetSet{abc}{7}|\\ -% |\bitsetGetHex{abc}{16}| $\rightarrow$ |00A2| -% \end{quote} -% Macro \cs{bitsetGetHex} uses the uppercase letters |A| to |F|. -% The catcode of the letters is one of 11 (letter) or 12 (other). -% -% \begin{declcs}{bitsetGetDec} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetGetDec} returns the bit set \meta{BitSet} as -% decimal number. The returned number can be larger than -% \TeX's number limit of $2^{31}-1$. -% -% \subsubsection{Logical operators}\label{sec:log} -% -% \begin{declcs}{bitsetAnd} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} -% \mathbin{\text{and}} B \qquad (\forall\, \text{bits})$ -% -% \begin{declcs}{bitsetAndNot} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} -% \mathbin{\text{and}} (\text{not}\,B) \qquad (\forall\, \text{bits})$ -% -% \begin{declcs}{bitsetOr} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} -% \mathbin{\text{or}} B \qquad (\forall\, \text{bits})$ -% -% \begin{declcs}{bitsetXor} \M{BitSet A} \M{BitSet B} -% \end{declcs} -% $A_{\text{new}} \mathrel{\mathop{:}}= A_{\text{old}} -% \mathbin{\text{xor}} B \qquad (\forall\, \text{bits})$ -% -% \subsubsection{Shifting}\label{sec:shift} -% -% \begin{declcs}{bitsetShiftLeft} \M{BitSet} \M{ShiftAmount}\\ -% \cs{bitsetShiftRight} \M{BitSet} \M{ShiftAmount} -% \end{declcs} -% A left shift by one is a multiplication by two, thus left shifting -% moves the flags to higher positions. The new created low positions -% are filled by zeros. -% -% A right shift is the opposite, dividing by two, movint the bits -% to lower positions. The number will become smaller, the lowest -% bits are lost. -% -% If the \meta{ShiftAmount} is negative, it reverts the meaning of -% the shift operation. A left shift becomes a right shift. -% A \meta{ShiftAmount} of zero is ignored. -% -% \subsubsection{Bit manipulation}\label{sec:bitman} -% -% \begin{declcs}{bitsetClear} \M{BitSet} \M{Index}\\ -% \cs{bitsetSet} \M{BitSet} \M{Index}\\ -% \cs{bitsetFlip} \M{BitSet} \M{Index} -% \end{declcs} -% This macros manipulate a single bit in \meta{BitSet} addressed -% by \cs{Index}. Macro \cs{bitsetClear} disables the bit, -% \cs{bitsetSet} enables it and \cs{bitsetFlip} reverts the current -% setting of the bit. -% -% \begin{declcs}{bitsetSetValue} \M{BitSet} \M{Index} \M{Bit} -% \end{declcs} -% Macro \cs{bitsetSetValue} puts bit \meta{Bit} at position \meta{Index} -% in bit set \meta{BitSet}. \meta{Bit} must be a valid \TeX\ number -% equals to zero (disabled/cleared) or one (enabled/set). -% -% \subsubsection{Bit retrieval}\label{sec:bitret} -% -% \begin{declcs}{bitsetGet} \M{BitSet} \M{Index} -% \end{declcs} -% Macro \cs{bitsetGet} extracts the status of the bit at -% position \meta{Index} in bit set \meta{BitSet}. -% Digit |1| is returned if the bit is set/enabled. If the -% bit is cleared/disabled and in cases of an undefined bitset or -% an index number out of range the return value is |0|. -% -% \begin{declcs}{bitsetNextClearBit} \M{BitSet} \M{Index} -% \end{declcs} -% Starting at position \meta{Index} (inclusive) the bits -% are inspected. The first position without a set bit is returned. -% Possible results are decimal numbers: \meta{Index}, \meta{Index} + 1, -% \dots, ($\infty$) -% -% \begin{declcs}{bitsetNextSetBit} \M{BitSet} \M{Index} -% \end{declcs} -% Starting at position \meta{Index} (inclusive) the bits are -% inspected and the index position of the first found set bit -% is returned. If there isn't such a bit, then the result is -% |-1|. In summary possible results are decimal numbers: -% |-1|, \meta{Index}, \meta{Index} + 1, \dots, ($\infty$) -% -% \begin{declcs}{bitsetGetSetBitList} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetGetSetBitList} is an application for -% \cs{bitsetNextSetBit}. The set bits are iterated and -% returned as comma separated list of index positions -% in increasing order. The list is empty in case of -% an empty bit set. -% -% \subsubsection{Bit set properties}\label{sec:prop} -% -% \begin{declcs}{bitsetSize} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetSize} returns number of bits in use. -% It is the same as the index number of the highest set/enabled bit -% incremented by one. -% -% \begin{declcs}{bitsetCardinality} \M{BitSet} -% \end{declcs} -% Macro \cs{bitsetCardinality} counts the number of set/enabled bits. -% -% \subsubsection{Queries}\label{sec:query} -% -% Also the query procedures are expandable. They ask for a piece -% of information about a bit set and execute code depending -% on the answer. -% -% \begin{declcs}{bitsetIsDefined} \M{BitSet} \M{Then} \M{Else} -% \end{declcs} -% If the bit set with the name \meta{BitSet} exists the code -% given in \meta{Then} is executed, otherwise \meta{Else} is used. -% -% \begin{declcs}{bitsetIsEmpty} \M{BitSet} \M{Then} \M{Else} -% \end{declcs} -% If the bit set \meta{BitSet} exists and at least one bit -% is set/enabled, the code in \meta{Then} is executed, -% \meta{Else} otherwise. -% -% \begin{declcs}{bitsetEquals} \M{BitSet A} \M{BitSet B} \M{Then} \M{Else} -% \end{declcs} -% Both bit sets are equal if and only if either both are undefined -% or both are defined and represents the same bit values at the -% same positions. Thus this definition is reflexive, symmeric, -% and transitive, enough for an equivalent relation. -% -% \begin{declcs}{bitsetIntersects} \M{BitSet A} \M{BitSet B} \M{Then} \M{Else} -% \end{declcs} -% If and only if \meta{BitSet A} and \meta{BitSet B} have -% at least one bit at the same position that is set, then -% code part \meta{Then} is executed. -% -% \begin{declcs}{bitsetQuery} \M{BitSet} \M{Index} \M{Then} \M{Else} -% \end{declcs} -% It's just a wrapper for \cs{bitsetGet}. If the bit at position -% \meta{Index} is enabled, code \meta{Then} is called. -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% The internal format of a bit set is quite simple, a sequence -% of digits |0| and |1|. The least significant bit is left. -% A bit set without any flag set is encoded by |0|. Also -% undefined bit sets are treated that way. After the -% highest bit that is set there are no further zeroes. -% A regular expression of valid bit sets values: -% \begin{quote} -% |0|\string||[01]*1| -% \end{quote} -% -% \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@bitset.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{bitset}{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@bitset.sty\endcsname -\ProvidesPackage{bitset}% - [2016/05/16 v1.2 Handle bit-vector datatype (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 BitSet@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\BitSet@AtEnd{% - \BitSet@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{33}{12}% ! -\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{58}{11}% : (letter!) -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{63}{14}% ? (comment!) -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{96}{12}% ` -\edef\BitSet@AtEnd{\BitSet@AtEnd\noexpand\endinput} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname BitSet@TestMode\endcsname\relax -\else - \catcode63=9 % ? (ignore) -\fi -? \let\BitSet@@TestMode\BitSet@TestMode -% \end{macrocode} -% -% \subsection{Package loading} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \def\TMP@RequirePackage#1[#2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname ver@#1.sty\endcsname\relax - \input #1.sty\relax - \fi - }% - \TMP@RequirePackage{infwarerr}[2007/09/09]% - \TMP@RequirePackage{intcalc}[2007/09/27]% - \TMP@RequirePackage{bigintcalc}[2007/09/27]% -\else - \RequirePackage{infwarerr}[2007/09/09]% - \RequirePackage{intcalc}[2007/09/27]% - \RequirePackage{bigintcalc}[2007/09/27]% -\fi -% \end{macrocode} -% -% \subsection{Help macros} -% -% \subsubsection{Number constant} -% -% \begin{macro}{\BitSet@MaxSize} -% \begin{macrocode} -\def\BitSet@MaxSize{2147483647}% -% \end{macrocode} -% \end{macro} -% -% \subsubsection{General basic macros} -% -% \begin{macro}{\BitSet@Empty} -% \begin{macrocode} -\def\BitSet@Empty{} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FirstOfOne} -% \begin{macrocode} -\def\BitSet@FirstOfOne#1{#1} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Gobble} -% \begin{macrocode} -\def\BitSet@Gobble#1{} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FirstOfTwo} -% \begin{macrocode} -\def\BitSet@FirstOfTwo#1#2{#1} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SecondOfTwo} -% \begin{macrocode} -\def\BitSet@SecondOfTwo#1#2{#2} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@Space} -% \begin{macrocode} -\def\BitSet@Space{ } -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@ZapSpace} -% \begin{macrocode} -\def\BitSet@ZapSpace#1 #2{% - #1% - \ifx\BitSet@Empty#2% - \else - \expandafter\BitSet@ZapSpace - \fi - #2% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Tail recursion} -% -% \begin{macro}{\BitSet@Fi} -% \begin{macrocode} -\let\BitSet@Fi\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@AfterFi} -% \begin{macrocode} -\def\BitSet@AfterFi#1#2\BitSet@Fi{\fi#1} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@AfterFiFi} -% \begin{macrocode} -\def\BitSet@AfterFiFi#1#2\BitSet@Fi{\fi\fi#1}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@AfterFiFiFi} -% \begin{macrocode} -\def\BitSet@AfterFiFiFi#1#2\BitSet@Fi{\fi\fi\fi#1}% -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Check macros} -% -% \begin{macro}{\BitSet@IfUndefined} -% \begin{macrocode} -\def\BitSet@IfUndefined#1{% - \expandafter\ifx\csname BS@#1\endcsname\relax - \expandafter\BitSet@FirstOfTwo - \else - \expandafter\BitSet@SecondOfTwo - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@CheckIndex} -% |#1|: continuation code\\ -% |#2|: BitSet\\ -% |#3|: Index -% \begin{macrocode} -\def\BitSet@CheckIndex#1#2#3{% - \BitSet@IfUndefined{#2}{\bitsetReset{#2}}{}% - \expandafter\expandafter\expandafter\BitSet@@CheckIndex - \intcalcNum{#3}!% - {#2}{#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@CheckIndex} -% |#1|: plain Index\\ -% |#2|: BitSet\\ -% |#3|: continuation code -% \begin{macrocode} -\def\BitSet@@CheckIndex#1!#2#3{% - \ifnum#1<0 % - \BitSet@AfterFi{% - \@PackageError{bitset}{% - Invalid negative index (#1)% - }\@ehc - }% - \else - \BitSet@AfterFi{% - #3{#2}{#1}% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Miscellaneous}\label{src:misc} -% -% \begin{macro}{\bitsetReset} -% \begin{macrocode} -\def\bitsetReset#1{% - \expandafter\def\csname BS@#1\endcsname{0}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetLet} -% \begin{macrocode} -\def\bitsetLet#1#2{% - \BitSet@IfUndefined{#2}{% - \bitsetReset{#1}% - }{% - \expandafter\let\csname BS@#1\expandafter\endcsname - \csname BS@#2\endcsname - }% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Import}\label{src:import} -% -% \subsubsection{From binary number} -% -% \begin{macro}{\bitsetSetBin} -% \begin{macrocode} -\def\bitsetSetBin#1#2{% - \edef\BitSet@Temp{#2}% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@ZapSpace - \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty - }% - \edef\BitSet@Temp{% - \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty - }% - \ifx\BitSet@Temp\BitSet@Empty - \expandafter\let\csname BS@#1\endcsname\BitSet@Zero - \else - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\BitSet@Reverse\BitSet@Temp!% - }% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@KillZeros} -% \begin{macrocode} -\def\BitSet@KillZeros#1{% - \ifx#10% - \expandafter\BitSet@KillZeros - \else - #1% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Reverse} -% \begin{macrocode} -\def\BitSet@Reverse#1#2!{% - \ifx\\#2\\% - #1% - \else - \BitSet@AfterFi{% - \BitSet@Reverse#2!#1% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{From octal/hex number} -% -% \begin{macro}{\bitsetSetOct} -% \begin{macrocode} -\def\bitsetSetOct{% - \BitSet@SetOctHex\BitSet@FromFirstOct -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSetHex} -% \begin{macrocode} -\def\bitsetSetHex{% - \BitSet@SetOctHex\BitSet@FromFirstHex -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetOctHex} -% \begin{macrocode} -\def\BitSet@SetOctHex#1#2#3{% - \edef\BitSet@Temp{#3}% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@ZapSpace - \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty - }% - \edef\BitSet@Temp{% - \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty - }% - \ifx\BitSet@Temp\BitSet@Empty - \expandafter\let\csname BS@#2\endcsname\BitSet@Zero - \else - \edef\BitSet@Temp{% - \expandafter#1\BitSet@Temp!% - }% - \ifx\BitSet@Temp\BitSet@Empty - \expandafter\let\csname BS@#2\endcsname\BitSet@Zero - \else - \expandafter\edef\csname BS@#2\endcsname{% - \expandafter\BitSet@Reverse\BitSet@Temp!% - }% - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FromFirstOct} -% \begin{macrocode} -\def\BitSet@FromFirstOct#1{% - \ifx#1!% - \else - \ifcase#1 \BitSet@AfterFiFi\BitSet@FromFirstOct - \or 1% - \or 10% - \or 11% - \or 100% - \or 101% - \or 110% - \or 111% - \else \BitSetError:WrongOctalDigit% - \fi - \expandafter\BitSet@FromOct - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FromOct} -% \begin{macrocode} -\def\BitSet@FromOct#1{% - \ifx#1!% - \else - \ifcase#1 000% - \or 001% - \or 010% - \or 011% - \or 100% - \or 101% - \or 110% - \or 111% - \else \BitSetError:WrongOctalDigit% - \fi - \expandafter\BitSet@FromOct - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@FromFirstHex} -% \begin{macrocode} -\def\BitSet@FromFirstHex#1{% - \ifx#1!% - \else - \ifx#10% - \BitSet@AfterFiFi\BitSet@FromFirstHex - \fi - \expandafter\ifx\csname BitSet@Hex#1\endcsname\relax - \BitSetError:InvalidHexDigit% - \else - \expandafter\expandafter\expandafter\BitSet@KillZeros - \csname BitSet@Hex#1\endcsname - \fi - \expandafter\BitSet@FromHex - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@FromHex} -% \begin{macrocode} -\def\BitSet@FromHex#1{% - \ifx#1!% - \else - \expandafter\ifx\csname BitSet@Hex#1\endcsname\relax - \BitSetError:InvalidHexDigit% - \else - \csname BitSet@Hex#1\endcsname - \fi - \expandafter\BitSet@FromHex - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Hex[0..F]} -% \begin{macrocode} -\def\BitSet@Temp#1{% - \expandafter\def\csname BitSet@Hex#1\endcsname -} -\BitSet@Temp 0{0000}% -\BitSet@Temp 1{0001}% -\BitSet@Temp 2{0010}% -\BitSet@Temp 3{0011}% -\BitSet@Temp 4{0100}% -\BitSet@Temp 5{0101}% -\BitSet@Temp 6{0110}% -\BitSet@Temp 7{0111}% -\BitSet@Temp 8{1000}% -\BitSet@Temp 9{1001}% -\BitSet@Temp A{1010}% -\BitSet@Temp B{1011}% -\BitSet@Temp C{1100}% -\BitSet@Temp D{1101}% -\BitSet@Temp E{1110}% -\BitSet@Temp F{1111}% -\BitSet@Temp a{1010}% -\BitSet@Temp b{1011}% -\BitSet@Temp c{1100}% -\BitSet@Temp d{1101}% -\BitSet@Temp e{1110}% -\BitSet@Temp f{1111}% -% \end{macrocode} -% \end{macro} -% -% \subsubsection{From decimal number} -% -% \begin{macro}{\bitsetSetDec} -% \begin{macrocode} -\def\bitsetSetDec#1#2{% - \edef\BitSet@Temp{#2}% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@ZapSpace - \expandafter\BitSet@Temp\BitSet@Space\BitSet@Empty - }% - \edef\BitSet@Temp{% - \expandafter\BitSet@KillZeros\BitSet@Temp\BitSet@Empty - }% - \ifx\BitSet@Temp\BitSet@Empty - \expandafter\let\csname BS@#1\endcsname\BitSet@Zero - \else - \ifcase\bigintcalcSgn{\BitSet@Temp} % - \expandafter\let\csname BS@#1\endcsname\BitSet@Zero - \or - \ifnum\bigintcalcCmp\BitSet@Temp\BitSet@MaxSize>0 % - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\BitSet@SetDecBig\BitSet@Temp!% - }% - \else - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\BitSet@SetDec\BitSet@Temp!% - }% - \fi - \else - \@PackageError{bitset}{% - Bit sets cannot be negative% - }\@ehc - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetDecBig} -% \begin{macrocode} -\def\BitSet@SetDecBig#1#2#3#4#5#6#7#8#9!{% - \ifx\\#9\\% - \BitSet@SetDec#1#2#3#4#5#6#7#8!% - \else - \ifcase\BigIntCalcOdd#1#2#4#5#6#7#8#9! % - 0% - \or - 1% -? \else\BitSetError:ThisCannotHappen% - \fi - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@SetDecBig - \BigIntCalcShr#1#2#3#4#5#6#7#8#9!!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetDec} -% \begin{macrocode} -\def\BitSet@SetDec#1!{% - \ifcase#1 % - \or 1% - \else - \ifodd#1 % - 1% - \else - 0% - \fi - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@SetDec - \IntCalcShr#1!!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Export}\label{src:export} -% -% \subsubsection{To binary number} -% -% \begin{macro}{\bitsetGetBin} -% \begin{macrocode} -\def\bitsetGetBin#1#2{% - \romannumeral0% - \expandafter\expandafter\expandafter\BitSet@@GetBin - \intcalcNum{#2}!{#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetBin} -% \begin{macrocode} -\def\BitSet@@GetBin#1!#2{% - \BitSet@IfUndefined{#2}{% - \ifnum#1>1 % - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@Fill - \IntCalcDec#1!!0% - }% - \else - \BitSet@AfterFi{ 0}% - \BitSet@Fi - }{% - \expandafter\expandafter\expandafter\BitSet@NumBinRev - \expandafter\expandafter\expandafter1% - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!#1!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Fill} -% |#1|: number of leading digits |0|\\ -% |#2|: result -% \begin{macrocode} -\def\BitSet@Fill#1!{% - \ifnum#1>0 % - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@Fill - \IntCalcDec#1!!0% - }% - \else - \BitSet@AfterFi{ }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@NumBinRev} -% |#1|: bit counter (including |#2|)\\ -% |#2#3|: reverted number\\ -% |#4|: result\\ -% |#5|: min size -% \begin{macrocode} -\def\BitSet@NumBinRev#1!#2#3!{% - \ifx\\#3\\% - \BitSet@AfterFi{% - \BitSet@NumBinFill#1!#2% - }% - \else - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@NumBinRev - \IntCalcInc#1!!#3!#2% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@NumBinFill} -% \begin{macrocode} -\def\BitSet@NumBinFill#1!#2!#3!{% - \ifnum#3>#1 % - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@Fill - \IntCalcSub#3!#1!!#2% - }% - \else - \BitSet@AfterFi{ #2}% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{To octal/hexadecimal number} -% -% \begin{macro}{\bitsetGetOct} -% \begin{macrocode} -\def\bitsetGetOct#1#2{% - \romannumeral0% - \bitsetIsEmpty{#1}{% - \expandafter\expandafter\expandafter\BitSet@@GetOctHex - \intcalcNum{#2}!3!230% - }{% - \expandafter\expandafter\expandafter\BitSet@@GetOct - \expandafter\expandafter\expandafter1% - \expandafter\expandafter\expandafter!% - \expandafter\expandafter\expandafter!% - \csname BS@#1\endcsname00% - \BitSet@Empty\BitSet@Empty\BitSet@Empty!{#2}% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetGetHex} -% \begin{macrocode} -\def\bitsetGetHex#1#2{% - \romannumeral0% - \bitsetIsEmpty{#1}{% - \expandafter\expandafter\expandafter\BitSet@@GetOctHex - \intcalcNum{#2}!4!340% - }{% - \expandafter\expandafter\expandafter\BitSet@@GetHex - \expandafter\expandafter\expandafter1% - \expandafter\expandafter\expandafter!% - \expandafter\expandafter\expandafter!% - \csname BS@#1\endcsname000% - \BitSet@Empty\BitSet@Empty\BitSet@Empty\BitSet@Empty!{#2}% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetOct} -% |#1|: number of digits\\ -% |#2|: result\\ -% |#3#4#5|: bits -% \begin{macrocode} -\def\BitSet@@GetOct#1!#2!#3#4#5{% - \ifx#5\BitSet@Empty - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@GetOctHex - \IntCalcDec#1!!#2!23% - }% - \else - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@@GetOct - \number\IntCalcInc#1!\expandafter\expandafter\expandafter!% - \csname BitSet@Oct#5#4#3\endcsname#2!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Oct[000..111]} -% \begin{macrocode} -\def\BitSet@Temp#1#2#3#4{% - \expandafter\def\csname BitSet@Oct#1#2#3\endcsname{#4}% -} -\BitSet@Temp0000% -\BitSet@Temp0011% -\BitSet@Temp0102% -\BitSet@Temp0113% -\BitSet@Temp1004% -\BitSet@Temp1015% -\BitSet@Temp1106% -\BitSet@Temp1117% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetHex} -% |#1|: number of digits\\ -% |#2|: result\\ -% |#3#4#5#6|: bits -% \begin{macrocode} -\def\BitSet@@GetHex#1!#2!#3#4#5#6{% - \ifx#6\BitSet@Empty - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@GetOctHex - \IntCalcDec#1!!#2!34% - }% - \else - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@@GetHex - \number\IntCalcInc#1!\expandafter\expandafter\expandafter!% - \csname BitSet@Hex#6#5#4#3\endcsname#2!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Hex[0000..1111]} -% \begin{macrocode} -\def\BitSet@Temp#1#2#3#4#5{% - \expandafter\def\csname BitSet@Hex#1#2#3#4\endcsname{#5}% -} -\BitSet@Temp00000% -\BitSet@Temp00011% -\BitSet@Temp00102% -\BitSet@Temp00113% -\BitSet@Temp01004% -\BitSet@Temp01015% -\BitSet@Temp01106% -\BitSet@Temp01117% -\BitSet@Temp10008% -\BitSet@Temp10019% -\BitSet@Temp1010A% -\BitSet@Temp1011B% -\BitSet@Temp1100C% -\BitSet@Temp1101D% -\BitSet@Temp1110E% -\BitSet@Temp1111F% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@GetOctHex} -% Leading zeros $ (|#4| - |#1| * 3 + 2)/3 $ if $ |#4| > |#1| * 3$\\ -% |#1|: digit size\\ -% |#2|: result\\ -% |#3|: bits per digit - 1\\ -% |#4|: bits per digit -% |#5|: garbage\\ -% |#6|: min size -% \begin{macrocode} -\def\BitSet@GetOctHex#1!#2!#3#4#5!#6{% - \expandafter\BitSet@@GetOctHex - \number\intcalcNum{#6}\expandafter\expandafter\expandafter!% - \IntCalcMul#1!#4!!#3#4#2% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetOctHex} -% |#1|: plain min size\\ -% |#2|: digits * (bits per digit)\\ -% |#3|: bits per digit - 1\\ -% |#4|: bits per digit -% \begin{macrocode} -\def\BitSet@@GetOctHex#1!#2!#3#4{% - \ifnum#1>#2 % - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\expandafter - \expandafter\expandafter\expandafter\BitSet@Fill - \expandafter\IntCalcDiv\number - \expandafter\expandafter\expandafter\IntCalcAdd - \IntCalcSub#1!#2!!#3!!#4!!% - }% - \else - \BitSet@AfterFi{ }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{To decimal number} -% -% \begin{macro}{\bitsetGetDec} -% \begin{macrocode} -\def\bitsetGetDec#1{% - \romannumeral0% - \BitSet@IfUndefined{#1}{ 0}{% - \expandafter\expandafter\expandafter\BitSet@GetDec - \csname BS@#1\endcsname!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@GetDec} -% \begin{macrocode} -\def\BitSet@GetDec#1#2!{% - \ifx\\#2\\% - \BitSet@AfterFi{ #1}% - \else - \BitSet@AfterFi{% - \BitSet@@GetDec2!#1!#2!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetDec} -% |#1|: power of two\\ -% |#2|: result\\ -% |#3#4|: number -% \begin{macrocode} -\def\BitSet@@GetDec#1!#2!#3#4!{% - \ifx\\#4\\% - \ifx#31% - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Space - \IntCalcAdd#1!#2!% - }% - \else - \BitSet@AfterFiFi{ #2}% - \fi - \else - \ifx#31% - \BitSet@AfterFiFi{% - \csname BitSet@N#1% - \expandafter\expandafter\expandafter\endcsname - \IntCalcAdd#1!#2!!#4!% - }% - \else - \BitSet@AfterFiFi{% - \csname BitSet@N#1\endcsname#2!#4!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@N[1,2,4,...]} -% \begin{macrocode} -\def\BitSet@Temp#1#2{% - \expandafter\def\csname BitSet@N#1\endcsname{% - \BitSet@@GetDec#2!% - }% -} -\BitSet@Temp{1}{2} -\BitSet@Temp{2}{4} -\BitSet@Temp{4}{8} -\BitSet@Temp{8}{16} -\BitSet@Temp{16}{32} -\BitSet@Temp{32}{64} -\BitSet@Temp{64}{128} -\BitSet@Temp{128}{256} -\BitSet@Temp{256}{512} -\BitSet@Temp{512}{1024} -\BitSet@Temp{1024}{2048} -\BitSet@Temp{2048}{4096} -\BitSet@Temp{4096}{8192} -\BitSet@Temp{8192}{16384} -\BitSet@Temp{16384}{32768} -\BitSet@Temp{32768}{65536} -\BitSet@Temp{65536}{131072} -\BitSet@Temp{131072}{262144} -\BitSet@Temp{262144}{524288} -\BitSet@Temp{524288}{1048576} -\BitSet@Temp{1048576}{2097152} -\BitSet@Temp{2097152}{4194304} -\BitSet@Temp{4194304}{8388608} -\BitSet@Temp{8388608}{16777216} -\BitSet@Temp{16777216}{33554432} -\BitSet@Temp{33554432}{67108864} -\BitSet@Temp{67108864}{134217728} -\BitSet@Temp{134217728}{268435456} -\BitSet@Temp{268435456}{536870912} -\BitSet@Temp{536870912}{1073741824} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@N1073741824} -% \begin{macrocode} -\expandafter\def\csname BitSet@N1073741824\endcsname{% - \BitSet@GetDecBig2147483648!% -}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@GetDecBig} -% |#1|: current power of two\\ -% |#2|: result\\ -% |#3#4|: number -% \begin{macrocode} -\def\BitSet@GetDecBig#1!#2!#3#4!{% - \ifx\\#4\\% - \ifx#31% - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Space - \BigIntCalcAdd#1!#2!% - }% - \else - \BitSet@AfterFiFi{ #2}% - \fi - \else - \ifx#31% - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@@GetDecBig - \BigIntCalcAdd#1!#2!!#1!#4!% - }% - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@GetDecBig - \BigIntCalcShl#1!!#2!#4!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@GetDecBig} -% |#1|: result\\ -% |#2|: power of two\\ -% |#3#4|: number -% \begin{macrocode} -\def\BitSet@@GetDecBig#1!#2!{% - \expandafter\expandafter\expandafter\BitSet@GetDecBig - \BigIntCalcShl#2!!#1!% -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Logical operators}\label{src:log} -% -% \subsubsection{\cs{bitsetAnd}} -% -% \begin{macro}{\bitsetAnd} -% Decision table for \cs{bitsetAnd}: -% \begin{quote} -% \begin{tabular}{l|l|l|l|} -% & undef(B) & empty(B) & cardinality(B)$>$0\\ -% \hline -% undef(A) & A := empty & A := empty & A := empty\\ -% \hline -% empty(A) & & &\\ -% \hline -% cardinality(A)$>$0 & A := empty & A := empty & A \&= B\\ -% \hline -% \end{tabular} -% \end{quote} -% \begin{macrocode} -\def\bitsetAnd#1#2{% - \bitsetIsEmpty{#1}{% - \bitsetReset{#1}% - }{% - \bitsetIsEmpty{#2}{% - \bitsetReset{#1}% - }{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@And - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!% - }% - \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty - \bitsetReset{#1}% - \fi - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@And} -% \begin{macrocode} -\def\BitSet@And#1#2!#3#4!#5!{% - \ifx\\#2\\% - \ifnum#1#3=11 #51\fi - \else - \ifx\\#4\\% - \ifnum#1#3=11 #51\fi - \else - \ifnum#1#3=11 % - #51% - \BitSet@AfterFiFiFi{% - \BitSet@And#2!#4!!% - }% - \else - \BitSet@AfterFiFiFi{% - \BitSet@And#2!#4!#50!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetAndNot}} -% -% \begin{macro}{\bitsetAndNot} -% Decision table for \cs{bitsetAndNot}: -% \begin{quote} -% \begin{tabular}{l|l|l|l|} -% & undef(B) & empty(B) & cardinality(B)$>$0\\ -% \hline -% undef(A) & A := empty & A := empty & A := empty\\ -% \hline -% empty(A) & & &\\ -% \hline -% cardinality(A)$>$0 & & & A \&= !B\\ -% \hline -% \end{tabular} -% \end{quote} -% \begin{macrocode} -\def\bitsetAndNot#1#2{% - \bitsetIsEmpty{#1}{% - \bitsetReset{#1}% - }{% - \bitsetIsEmpty{#2}{% - }{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@AndNot - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!% - }% - \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty - \bitsetReset{#1}% - \fi - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@AndNot} -% \begin{macrocode} -\def\BitSet@AndNot#1#2!#3#4!#5!{% - \ifx\\#2\\% - \ifnum#1#3=10 #51\fi - \else - \ifx\\#4\\% - #5% - \ifnum#1#3=10 1\else 0\fi - #2% - \else - \ifnum#1#3=10 % - #51% - \BitSet@AfterFiFiFi{% - \BitSet@AndNot#2!#4!!% - }% - \else - \BitSet@AfterFiFiFi{% - \BitSet@AndNot#2!#4!#50!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetOr}} -% -% \begin{macro}{\bitsetOr} -% Decision table for \cs{bitsetOr}: -% \begin{quote} -% \begin{tabular}{l|l|l|l|} -% & undef(B) & empty(B) & cardinality(B)$>$0\\ -% \hline -% undef(A) & A := empty & A := empty & A := B\\ -% \hline -% empty(A) & & & A := B\\ -% \hline -% cardinality(A)$>$0 & & & A \string|= B\\ -% \hline -% \end{tabular} -% \end{quote} -% \begin{macrocode} -\def\bitsetOr#1#2{% - \bitsetIsEmpty{#2}{% - \BitSet@IfUndefined{#1}{\bitsetReset{#1}}{}% - }{% - \bitsetIsEmpty{#1}{% - \expandafter\let\csname BS@#1\expandafter\endcsname - \csname BS@#2\endcsname - }{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@Or - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!% - }% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Or} -% \begin{macrocode} -\def\BitSet@Or#1#2!#3#4!{% - \ifnum#1#3>0 1\else 0\fi - \ifx\\#2\\% - #4% - \else - \ifx\\#4\\% - #2% - \else - \BitSet@AfterFiFi{% - \BitSet@Or#2!#4!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetXor}} -% -% \begin{macro}{\bitsetXor} -% Decision table for \cs{bitsetXor}: -% \begin{quote} -% \begin{tabular}{l|l|l|l|} -% & undef(B) & empty(B) & cardinality(B)$>$0\\ -% \hline -% undef(A) & A := empty & A := empty & A := B\\ -% \hline -% empty(A) & & & A := B\\ -% \hline -% cardinality(A)$>$0 & & & A \string^= B\\ -% \hline -% \end{tabular} -% \end{quote} -% \begin{macrocode} -\def\bitsetXor#1#2{% - \bitsetIsEmpty{#2}{% - \BitSet@IfUndefined{#1}{\bitsetReset{#1}}{}% - }{% - \bitsetIsEmpty{#1}{% - \expandafter\let\csname BS@#1\expandafter\endcsname - \csname BS@#2\endcsname - }{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@Xor - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!% - }% - \expandafter\ifx\csname BS@#1\endcsname\BitSet@Empty - \bitsetReset{#1}% - \fi - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Xor} -% \begin{macrocode} -\def\BitSet@Xor#1#2!#3#4!#5!{% - \ifx\\#2\\% - \ifx#1#3% - \ifx\\#4\\% - \else - #50#4% - \fi - \else - #51#4% - \fi - \else - \ifx\\#4\\% - #5% - \ifx#1#30\else 1\fi - #2% - \else - \ifx#1#3% - \BitSet@AfterFiFiFi{% - \BitSet@Xor#2!#4!#50!% - }% - \else - #51% - \BitSet@AfterFiFiFi{% - \BitSet@Xor#2!#4!!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Shifting}\label{src:shift} -% -% \subsubsection{\cs{bitsetShiftLeft}} -% -% \begin{macro}{\bitsetShiftLeft} -% \begin{macrocode} -\def\bitsetShiftLeft#1#2{% - \BitSet@IfUndefined{#1}{% - \bitsetReset{#1}% - }{% - \bitsetIsEmpty{#1}{% - }{% - \expandafter\expandafter\expandafter\BitSet@ShiftLeft - \intcalcNum{#2}!{#1}% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@ShiftLeft} -% \begin{macrocode} -\def\BitSet@ShiftLeft#1!#2{% - \ifcase\intcalcSgn{#1} % - \or - \begingroup - \uccode`m=`0 % - \uppercase\expandafter{\expandafter\endgroup - \expandafter\edef\csname BS@#2\expandafter\endcsname - \expandafter{% - \romannumeral#1000\expandafter\BitSet@Space - \csname BS@#2\endcsname - }% - }% - \else - \expandafter\BitSet@ShiftRight\BitSet@Gobble#1!{#2}% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetShiftRight}} -% -% \begin{macro}{\bitsetShiftRight} -% \begin{macrocode} -\def\bitsetShiftRight#1#2{% - \BitSet@IfUndefined{#1}{% - \bitsetReset{#1}% - }{% - \bitsetIsEmpty{#1}{% - }{% - \expandafter\expandafter\expandafter\BitSet@ShiftRight - \intcalcNum{#2}!{#1}% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@ShiftRight} -% \begin{macrocode} -\def\BitSet@ShiftRight#1!#2{% - \ifcase\intcalcSgn{#1} % - \or - \expandafter\edef\csname BS@#2\endcsname{% - \expandafter\expandafter\expandafter\BitSet@Kill - \csname BS@#2\expandafter\endcsname\expandafter\BitSet@Empty - \expandafter=% - \expandafter{\expandafter}\expandafter{\expandafter}% - \romannumeral#1000!% - }% - \else - \expandafter\BitSet@ShiftLeft\BitSet@Gobble#1!{#2}% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Kill} -% \begin{macrocode} -\def\BitSet@Kill#1#2=#3#4#5{% - #3#4% - \ifx#5!% - \ifx#1\BitSet@Empty - 0% - \else - #1#2% - \fi - \else - \ifx#1\BitSet@Empty - 0% - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \BitSet@Kill#2=% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Bit manipulation}\label{src:bitman} -% -% \begin{macro}{\bitsetClear} -% \begin{macrocode} -\def\bitsetClear{% - \BitSet@CheckIndex\BitSet@Clear -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSet} -% \begin{macrocode} -\def\bitsetSet{% - \BitSet@CheckIndex\BitSet@Set -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetFlip} -% \begin{macrocode} -\def\bitsetFlip{% - \BitSet@CheckIndex\BitSet@Flip -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSetValue} -% \begin{macrocode} -\def\bitsetSetValue#1#2#3{% - \expandafter\expandafter\expandafter\BitSet@SetValue - \intcalcNum{#3}!{#1}{#2}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetValue} -% |#1|: plain value\\ -% |#2|: BitSet\\ -% |#3|: Index -% \begin{macrocode} -\def\BitSet@SetValue#1!{% - \BitSet@CheckIndex{% - \ifcase#1 % - \expandafter\BitSet@Clear - \or - \expandafter\BitSet@Set - \else - \BitSet@ErrorInvalidBitValue{#1}% - \expandafter\expandafter\expandafter\BitSet@Gobble - \expandafter\BitSet@Gobble - \fi - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@ErrorInvalidBitValue} -% |#1|: Wrong bit value -% \begin{macrocode} -\def\BitSet@ErrorInvalidBitValue#1{% - \@PackageError{bitset}{% - Invalid bit value (#1) not in range 0..1% - }\@ehc -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Clear operation} -% -% \begin{macro}{\BitSet@Clear} -% |#1|: BitSet\\ -% |#2|: plain and checked index -% \begin{macrocode} -\def\BitSet@Clear#1#2{% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@@Clear - \csname BS@#1\expandafter\endcsname - \expandafter\BitSet@Empty\expandafter=\expandafter!% - \romannumeral#2000!% - }% - \expandafter\let\csname BS@#1\expandafter\endcsname - \ifx\BitSet@Temp\BitSet@Empty - \BitSet@Zero - \else - \BitSet@Temp - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Clear} -% \begin{macrocode} -\def\BitSet@@Clear#1#2=#3!#4{% - \ifx#4!% - \ifx#1\BitSet@Empty - \else - \ifx\BitSet@Empty#2% - \else - #30#2% - \fi - \fi - \else - \ifx#1\BitSet@Empty - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \ifx#10% - \BitSet@AfterFiFiFi{% - \BitSet@@Clear#2=#30!% - }% - \else - #31% - \BitSet@AfterFiFiFi{% - \BitSet@@Clear#2=!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Set operation} -% -% \begin{macro}{\BitSet@Set} -% |#1|: BitSet\\ -% |#2|: plain and checked Index -% \begin{macrocode} -\def\BitSet@Set#1#2{% - \expandafter\edef\csname BS@#1\endcsname{% - \expandafter\expandafter\expandafter\BitSet@@Set - \csname BS@#1\expandafter\endcsname - \expandafter\BitSet@Empty\expandafter=% - \expandafter{\expandafter}\expandafter{\expandafter}% - \romannumeral#2000!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Set} -% \begin{macrocode} -\def\BitSet@@Set#1#2=#3#4#5{% - #3#4% - \ifx#5!% - 1#2% - \else - \ifx#1\BitSet@Empty - 0% - \BitSet@AfterFiFi\BitSet@@@Set - \else - #1% - \BitSet@@Set#2=% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@@Set} -% \begin{macrocode} -\def\BitSet@@@Set#1{% - \ifx#1!% - 1% - \else - 0% - \expandafter\BitSet@@@Set - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Flip operation} -% -% \begin{macro}{\BitSet@Flip} -% |#1|: BitSet\\ -% |#2|: plain and checked Index -% \begin{macrocode} -\def\BitSet@Flip#1#2{% - \edef\BitSet@Temp{% - \expandafter\expandafter\expandafter\BitSet@@Flip - \csname BS@#1\expandafter\endcsname - \expandafter\BitSet@Empty\expandafter=\expandafter!% - \romannumeral#2000!% - }% - \expandafter\let\csname BS@#1\expandafter\endcsname - \ifx\BitSet@Temp\BitSet@Empty - \BitSet@Zero - \else - \BitSet@Temp - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Flip} -% \begin{macrocode} -\def\BitSet@@Flip#1#2=#3!#4{% - \ifx#4!% - \ifx#11% - \ifx\BitSet@Empty#2% - \else - #30#2% - \fi - \else - #31#2% - \fi - \else - \ifx#1\BitSet@Empty - #30% - \BitSet@AfterFiFi\BitSet@@@Set - \else - \ifx#10% - \BitSet@AfterFiFiFi{% - \BitSet@@Flip#2=#30!% - }% - \else - #31% - \BitSet@AfterFiFiFi{% - \BitSet@@Flip#2=!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Range operators} -% -% \begin{macro}{\bitsetClearRange} -% \begin{macrocode} -\def\bitsetClearRange{% - \BitSet@Range\BitSet@Clear -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSetRange} -% \begin{macrocode} -\def\bitsetSetRange{% - \BitSet@Range\BitSet@Set -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetFlipRange} -% \begin{macrocode} -\def\bitsetFlipRange{% - \BitSet@Range\BitSet@Flip -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetSetValueRange} -% \begin{macrocode} -\def\bitsetSetValueRange#1#2#3#4{% - \expandafter\expandafter\expandafter\BitSet@SetValueRange - \intcalcNum{#4}!{#1}{#2}{#3}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SetValueRange} -% \begin{macrocode} -\def\BitSet@SetValueRange#1!#2#3#4{% - \ifcase#1 % - \BitSet@Range\BitSet@Clear{#2}{#3}{#4}% - \or - \BitSet@Range\BitSet@Set{#2}{#3}{#4}% - \else - \BitSet@ErrorInvalidBitValue{#1}% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@Range} -% |#1|: clear/set/flip macro\\ -% |#2|: BitSet\\ -% |#3|: Index from\\ -% |#4|: Index to -% \begin{macrocode} -\def\BitSet@Range#1#2#3#4{% - \edef\BitSet@Temp{% - \noexpand\BitSet@@Range\noexpand#1{#2}% - \intcalcNum{#3}!\intcalcNum{#4}!% - }% - \BitSet@Temp -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Range} -% |#1|: clear/set/flip macro\\ -% |#2|: BitSet\\ -% |#3|: Index from\\ -% |#4|: Index to -% \begin{macrocode} -\def\BitSet@@Range#1#2#3!#4!{% - \ifnum#3<0 % - \BitSet@NegativeIndex#1{#2}#3!#4!0!#4!% - \else - \ifnum#4<0 % - \BitSet@NegativeIndex#1{#2}#3!#4!#3!0!% - \else - \ifcase\intcalcCmp{#3}{#4} % - \or - \@PackageError{bitset}{% - Wrong index numbers in range [#3..#4]\MessageBreak% hash-ok - for clear/set/flip on bit set `#2'.\MessageBreak - The lower index exceeds the upper index.\MessageBreak - Canceling the operation as error recovery% - }\@ehc - \else - \BitSet@@@Range#3!#4!#1{#2}% - \fi - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@NegativeIndex} -% \begin{macrocode} -\def\BitSet@NegativeIndex#1#2#3!#4!#5!#6!{% - \@PackageError{bitset}{% - Negative index in range [#3..#4]\MessageBreak % hash-ok - for \string\bitset - \ifx#1\BitSet@Clear - Clear% - \else - \ifx#1\BitSet@Set - Set% - \else - Flip% - \fi - \fi - Range on bit set `#2'.\MessageBreak - Using [#5..#6] as error recovery% hash-ok - }\@ehc - \BitSet@@Range#1{#2}#5!#6!% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Range} -% \begin{macrocode} -\def\BitSet@@@Range#1!#2!#3#4{% - \ifnum#1<#2 % - #3{#4}{#1}% - \BitSet@AfterFi{% - \expandafter\expandafter\expandafter\BitSet@@@Range - \IntCalcInc#1!!#2!#3{#4}% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Bit retrieval}\label{src:bitret} -% -% \subsubsection{\cs{bitsetGet}} -% -% \begin{macro}{\bitsetGet} -% \begin{macrocode} -\def\bitsetGet#1#2{% - \number - \expandafter\expandafter\expandafter\BitSet@Get - \intcalcNum{#2}!{#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Get} -% |#1|: plain index\\ -% |#2|: BitSet -% \begin{macrocode} -\def\BitSet@Get#1!#2{% - \ifnum#1<0 % - \BitSet@AfterFi{% - 0 \BitSetError:NegativeIndex% - }% - \else - \BitSet@IfUndefined{#2}{0}{% - \expandafter\expandafter\expandafter\BitSet@@Get - \csname BS@#2\expandafter\endcsname - \expandafter!\expandafter=% - \expandafter{\expandafter}\expandafter{\expandafter}% - \romannumeral\intcalcNum{#1}000!% - }% - \expandafter\BitSet@Space - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@Get} -% \begin{macrocode} -\def\BitSet@@Get#1#2=#3#4#5{% - #3#4% - \ifx#5!% - \ifx#1!% - 0% - \else - #1% - \fi - \else - \ifx#1!% - 0% - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \BitSet@@Get#2=% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetNextClearBit}, \cs{bitsetNextSetBit}} -% -% \begin{macro}{\bitsetNextClearBit} -% \begin{macrocode} -\def\bitsetNextClearBit#1#2{% - \number - \expandafter\expandafter\expandafter\BitSet@NextClearBit - \intcalcNum{#2}!{#1} % -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@NextClearBit} -% |#1|: Index\\ -% |#2|: BitSet -% \begin{macrocode} -\def\BitSet@NextClearBit#1!#2{% - \ifnum#1<0 % - \BitSet@NextClearBit0!{#2}% - \BitSet@AfterFi{% - \expandafter\BitSet@Space - \expandafter\BitSetError:NegativeIndex\romannumeral0% - }% - \else - \bitsetIsEmpty{#2}{#1}{% - \expandafter\BitSet@Skip - \number#1\expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!!!!!!!!=% - {\BitSet@@NextClearBit#1!}% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@NextClearBit} -% |#1|: index for next bit in |#2|\\ -% |#2|: next bit -% \begin{macrocode} -\def\BitSet@@NextClearBit#1!#2{% - \ifx#2!% - #1% - \else - \ifx#20% - #1% - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@@NextClearBit - \IntCalcInc#1!!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetNextSetBit} -% \begin{macrocode} -\def\bitsetNextSetBit#1#2{% - \number - \expandafter\expandafter\expandafter\BitSet@NextSetBit - \intcalcNum{#2}!{#1} % -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@NextSetBit} -% |#1|: Index\\ -% |#2|: BitSet -% \begin{macrocode} -\def\BitSet@NextSetBit#1!#2{% - \ifnum#1<0 % - \BitSet@NextSetBit0!{#2}% - \BitSet@AfterFi{% - \expandafter\BitSet@Space - \expandafter\BitSetError:NegativeIndex\romannumeral0% - }% - \else - \bitsetIsEmpty{#2}{-1}{% - \expandafter\BitSet@Skip - \number#1\expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!!!!!!!!!=% - {\BitSet@@NextSetBit#1!}% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@@NextSetBit} -% |#1|: index for next bit in |#2|\\ -% |#2|: next bit -% \begin{macrocode} -\def\BitSet@@NextSetBit#1!#2{% - \ifx#2!% - -1% - \else - \ifx#21% - #1% - \BitSet@AfterFiFi\BitSet@Cleanup - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@@NextSetBit - \IntCalcInc#1!!% - }% - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Cleanup} -% \begin{macrocode} -\def\BitSet@Cleanup#1!{} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\BitSet@Skip} -% |#1|: number of bits to skip\\ -% |#2|: bits\\ -% |#3|: continuation code -% \begin{macrocode} -\def\BitSet@Skip#1!#2{% - \ifx#2!% - \BitSet@AfterFi{% - \BitSet@SkipContinue% - }% - \else - \ifcase#1 % - \BitSet@AfterFiFi{% - \BitSet@SkipContinue#2% - }% - \or - \BitSet@AfterFiFi\BitSet@SkipContinue - \or - \BitSet@AfterFiFi{% - \expandafter\BitSet@SkipContinue\BitSet@Gobble - }% - \else - \ifnum#1>8 % - \BitSet@AfterFiFiFi{% - \expandafter\BitSet@Skip - \number\IntCalcSub#1!8!\expandafter!% - \BitSet@GobbleSeven - }% - \else - \BitSet@AfterFiFiFi{% - \expandafter\expandafter\expandafter\BitSet@Skip - \IntCalcDec#1!!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@SkipContinue} -% |#1|: remaining bits\\ -% |#2|: continuation code -% \begin{macrocode} -\def\BitSet@SkipContinue#1!#2=#3{% - #3#1!% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@GobbleSeven} -% \begin{macrocode} -\def\BitSet@GobbleSeven#1#2#3#4#5#6#7{} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\cs{bitsetGetSetBitList}} -% -% \begin{macro}{\bitsetGetSetBitList} -% It's just a wrapper for \cs{bitsetNextSetBit}. -% \begin{macrocode} -\def\bitsetGetSetBitList#1{% - \romannumeral0% - \bitsetIsEmpty{#1}{ }{% - \expandafter\BitSet@GetSetBitList - \number\BitSet@NextSetBit0!{#1}!{#1}{}!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@GetSetBitList} -% |#1|: found index\\ -% |#2|: BitSet\\ -% |#3|: comma -% |#4|: result -% \begin{macrocode} -\def\BitSet@GetSetBitList#1!#2#3#4!{% - \ifnum#1<0 % - \BitSet@AfterFi{ #4}% - \else - \BitSet@AfterFi{% - \expandafter\BitSet@GetSetBitList\number - \expandafter\expandafter\expandafter\BitSet@NextSetBit - \IntCalcInc#1!!{#2}!{#2},#4#3#1!% - }% - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Bit set properties}\label{src:prop} -% -% \begin{macro}{\bitsetSize} -% \begin{macrocode} -\def\bitsetSize#1{% - \number - \BitSet@IfUndefined{#1}{0 }{% - \expandafter\expandafter\expandafter\BitSet@Size - \expandafter\expandafter\expandafter1% - \expandafter\expandafter\expandafter!% - \csname BS@#1\endcsname!0!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Size} -% |#1|: counter\\ -% |#2#3|: bits\\ -% |#4|: result -% \begin{macrocode} -\def\BitSet@Size#1!#2#3!#4!{% - \ifx#21% - \ifx\\#3\\% - \BitSet@AfterFiFi{#1 }% - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Size - \IntCalcInc#1!!#3!#1!% - }% - \fi - \else - \ifx\\#3\\% - \BitSet@AfterFiFi{#4 }% - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Size - \IntCalcInc#1!!#3!#4!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetCardinality} -% \begin{macrocode} -\def\bitsetCardinality#1{% - \number - \BitSet@IfUndefined{#1}{0 }{% - \expandafter\expandafter\expandafter\BitSet@Cardinality - \expandafter\expandafter\expandafter0% - \expandafter\expandafter\expandafter!% - \csname BS@#1\endcsname!% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Cardinality} -% |#1|: result\\ -% |#2#3|: bits -% \begin{macrocode} -\def\BitSet@Cardinality#1!#2#3!{% - \ifx#21% - \ifx\\#3\\% - \BitSet@AfterFiFi{\IntCalcInc#1! }% - \else - \BitSet@AfterFiFi{% - \expandafter\expandafter\expandafter\BitSet@Cardinality - \IntCalcInc#1!!#3!% - }% - \fi - \else - \ifx\\#3\\% - \BitSet@AfterFiFi{#1 }% - \else - \BitSet@AfterFiFi{% - \BitSet@Cardinality#1!#3!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Queries}\label{src:query} -% -% \begin{macro}{\bitsetIsDefined} -% \begin{macrocode} -\def\bitsetIsDefined#1{% - \BitSet@IfUndefined{#1}% - \BitSet@SecondOfTwo - \BitSet@FirstOfTwo -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\bitsetIsEmpty} -% \begin{macrocode} -\def\bitsetIsEmpty#1{% - \BitSet@IfUndefined{#1}\BitSet@FirstOfTwo{% - \expandafter\ifx\csname BS@#1\endcsname\BitSet@Zero - \expandafter\BitSet@FirstOfTwo - \else - \expandafter\BitSet@SecondOfTwo - \fi - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Zero} -% \begin{macrocode} -\def\BitSet@Zero{0} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetQuery} -% \begin{macrocode} -\def\bitsetQuery#1#2{% - \ifnum\bitsetGet{#1}{#2}=1 % - \expandafter\BitSet@FirstOfTwo - \else - \expandafter\BitSet@SecondOfTwo - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetEquals} -% \begin{macrocode} -\def\bitsetEquals#1#2{% - \BitSet@IfUndefined{#1}{% - \BitSet@IfUndefined{#2}\BitSet@FirstOfTwo\BitSet@SecondOfTwo - }{% - \BitSet@IfUndefined{#2}\BitSet@SecondOfTwo{% - \expandafter\ifx\csname BS@#1\expandafter\endcsname - \csname BS@#2\endcsname - \expandafter\BitSet@FirstOfTwo - \else - \expandafter\BitSet@SecondOfTwo - \fi - }% - }% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bitsetIntersects} -% \begin{macrocode} -\def\bitsetIntersects#1#2{% - \bitsetIsEmpty{#1}\BitSet@SecondOfTwo{% - \bitsetIsEmpty{#2}\BitSet@SecondOfTwo{% - \expandafter\expandafter\expandafter\BitSet@Intersects - \csname BS@#1\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter!% - \csname BS@#2\endcsname!% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\BitSet@Intersects} -% \begin{macrocode} -\def\BitSet@Intersects#1#2!#3#4!{% - \ifnum#1#3=11 % - \BitSet@AfterFi\BitSet@FirstOfTwo - \else - \ifx\\#2\\% - \BitSet@AfterFiFi\BitSet@SecondOfTwo - \else - \ifx\\#4\\% - \BitSet@AfterFiFiFi\BitSet@SecondOfTwo - \else - \BitSet@AfterFiFiFi{% - \BitSet@Intersects#2!#4!% - }% - \fi - \fi - \BitSet@Fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\BitSet@AtEnd% -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{bitset}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/bitset.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/bitset.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 bitset.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@{}} -% bitset.sty & tex/generic/oberdiek/bitset.sty\\ -% bitset.pdf & doc/latex/oberdiek/bitset.pdf\\ -% bitset.dtx & source/latex/oberdiek/bitset.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{bitset.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 bitset.dtx -%makeindex -s gind.ist bitset.idx -%pdflatex bitset.dtx -%makeindex -s gind.ist bitset.idx -%pdflatex bitset.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2007/09/28 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2011/01/30 v1.1} -% \item -% Already loaded package files are not input in \hologo{plainTeX}. -% \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/bmpsize.pdf b/macros/latex/contrib/oberdiek/bmpsize.pdf index d80f1cb3b8..e18c07f58d 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 deleted file mode 100644 index 439a7871e7..0000000000 --- a/macros/latex/contrib/oberdiek/catchfile.dtx +++ /dev/null @@ -1,777 +0,0 @@ -% \iffalse meta-comment -% -% File: catchfile.dtx -% Version: 2016/05/16 v1.7 -% Info: Catch the contents of a file -% -% Copyright (C) -% 2007, 2010, 2011 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 catchfile.dtx -% and the derived files -% catchfile.sty, catchfile.pdf, catchfile.ins, catchfile.drv, -% catchfile-test1.tex, catchfile-test2.tex, -% catchfile-test3.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/catchfile.dtx -% CTAN:macros/latex/contrib/oberdiek/catchfile.pdf -% -% Unpacking: -% (a) If catchfile.ins is present: -% tex catchfile.ins -% (b) Without catchfile.ins: -% tex catchfile.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{catchfile.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If catchfile.drv is present: -% latex catchfile.drv -% (b) Without catchfile.drv: -% latex catchfile.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 catchfile.dtx -% makeindex -s gind.ist catchfile.idx -% pdflatex catchfile.dtx -% makeindex -s gind.ist catchfile.idx -% pdflatex catchfile.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/catchfile.sty -% TDS:doc/latex/oberdiek/catchfile.pdf -% TDS:source/latex/oberdiek/catchfile.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: catchfile 2016/05/16 v1.7 Catch the contents of a file (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: catchfile -Version: 2016/05/16 v1.7 - -Copyright (C) - 2007, 2010, 2011 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 catchfile.dtx -and the derived files - catchfile.sty, catchfile.pdf, catchfile.ins, catchfile.drv, - catchfile-test1.tex, catchfile-test2.tex, - catchfile-test3.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{catchfile.ins}{\from{catchfile.dtx}{install}}% - \file{catchfile.drv}{\from{catchfile.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{catchfile.sty}{\from{catchfile.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{catchfile-test1.tex}{\from{catchfile.dtx}{test1}}% -% \file{catchfile-test2.tex}{\from{catchfile.dtx}{test2}}% -% \file{catchfile-test3.tex}{\from{catchfile.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{* catchfile.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `catchfile.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{catchfile.drv}% - [2016/05/16 v1.7 Catch the contents of a file (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{catchfile.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{catchfile.drv} -% -% \title{The \xpackage{catchfile} package} -% \date{2016/05/16 v1.7} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package catches the contents of a file and puts it in a macro. -% It requires \eTeX. Both \LaTeX\ and \plainTeX\ are supported. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% The package relies on \eTeX's \cs{everyeof}. Otherwise it -% aborts with an error message. -% -% \begin{declcs}{CatchFileDef} \M{cmd} \M{file name} \M{setup}\\ -% \cs{CatchFileEdef} \M{cmd} \M{file name} \M{setup} -% \end{declcs} -% Macro \meta{cmd} is defined with the contents -% of file \meta{file name}. -% \cs{CatchFileDef} uses \cs{def}, \cs{CatchFileEdef} \cs{edef} -% for the definition. -% Additional setup code for setting -% catcodes or treatment of line ends can be given in code -% \meta{setup}. See the test files for an example. -% -% \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@catchfile.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{catchfile}{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@catchfile.sty\endcsname -\ProvidesPackage{catchfile}% - [2016/05/16 v1.7 Catch the contents of a file (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 CatchFile@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\CatchFile@AtEnd{% - \CatchFile@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{39}{12}% ' -\TMP@EnsureCode{44}{12}% , -\TMP@EnsureCode{45}{12}% - -\TMP@EnsureCode{46}{12}% . -\TMP@EnsureCode{47}{12}% / -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{96}{12}% ` -\edef\CatchFile@AtEnd{\CatchFile@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% \subsection{Preparations} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \input infwarerr.sty\relax - \input ltxcmds.sty\relax -\else - \RequirePackage{infwarerr}[2007/09/09]% - \RequirePackage{ltxcmds}[2010/03/09]% -\fi -% \end{macrocode} -% -% Check for \eTeX's \cs{everyeof}. -% \begin{macrocode} -\begingroup - \escapechar=92\relax - \edef\TestString{\string\everyeof}% - \edef\TestMeaning{\meaning\everyeof}% - \ifx\TestString\TestMeaning - \else - \@PackageError{catchfile}{% - Cannot find e-TeX's \string\everyeof,\MessageBreak - package loading is aborted% - }\@ehd - \endgroup - \expandafter\CatchFile@AtEnd - \fi% -\endgroup -% \end{macrocode} -% -% \subsection{Looking for primitive \cs{input}} -% -% \begin{macro}{\CatchFile@Input} -% The package needs the expandable primitive \cs{input}. -% However there are formats that redefine it. For example, -% \LaTeX's \cs{input} is not expandable, but it stores -% the primitive in \cs{@@input}. The third possibility -% is \cs{pdfprimitive}, introduced in \pdfTeX\ 1.40.0. -% -% Thus we try to find the primitive and store it in -% \cs{CatchFile@Input}. If it is used, it must be expanded -% twice (because of the solution with \cs{pdfprimitive}). -% \begin{macrocode} -\begingroup - \def\Check#1#2#3#4\endgroup{% - \edef\TestString{\string#1}% - \edef\TestMeaning{\meaning#2}% - \ifx\TestString\TestMeaning - \endgroup - \let\CatchFile@Primitive#2% - \def\CatchFile@Input{\CatchFile@Primitive#3}% - \else - #4\endgroup - \fi - }% - \Check\input\input{}% - \Check\input\@@input{}% - \Check\pdfprimitive\pdfprimitive\input - \@PackageError{% - Cannot find primitive \string\input,\MessageBreak - package loading is aborted% - }\@ehd - \csname endgroup\endcsname - \CatchFile@AtEnd% -\endgroup -% \end{macrocode} -% \end{macro} -% -% \subsection{Input file check} -% -% \begin{macro}{\CatchFile@CheckFileExists} -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname IfFileExists\endcsname\relax - \input pdftexcmds.sty\relax - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname pdf@filesize\endcsname\relax - \def\CatchFile@CheckFileExists#1{% - \expandafter\ifx\csname @inputcheck\endcsname\relax - \csname newread\endcsname\@inputcheck - \fi - \openin\@inputcheck#1\relax - \expandafter\closein\expandafter\@inputcheck - \ifeof\@inputcheck - \let\CatchFile@File\relax - \else - \def\CatchFile@File{#1}% - \fi - }% - \else - \def\CatchFile@CheckFileExists#1{% - \expandafter\expandafter\expandafter\ifx - \expandafter\expandafter\expandafter\relax\pdf@filesize{#1}\relax - \let\CatchFile@File\relax - \else - \def\CatchFile@File{#1}% - \fi - }% - \fi -\else - \def\CatchFile@CheckFileExists#1{% - \IfFileExists{#1}{% - \expandafter\CatchFile@DefFile\@filef@und\@nil - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname @addtofilelist\endcsname\relax - \else - \@addtofilelist\CatchFile@File - \fi - }{% - \let\CatchFile@File\relax - }% - }% - \def\CatchFile@DefFile#1 \@nil{% - \def\CatchFile@File{#1}% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\CatchFile@NotFound} -% \begin{macrocode} -\def\CatchFile@NotFound#1#2{% - \def#1{}% - \@PackageError{catchfile}{% - File `#2' not found% - }\@ehc -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Catch file contents} -% -% \begin{macrocode} -\ltx@IfUndefined{RequirePackage}{% - \input etexcmds.sty\relax -}{% - \RequirePackage{etexcmds}[2010/01/28]% -} -% \end{macrocode} -% -% \begin{macro}{\CatchFileEdef} -% \begin{macrocode} -\long\def\CatchFileEdef#1#2#3{% - \CatchFile@CheckFileExists{#2}% - \ifx\CatchFile@File\relax - \CatchFile@NotFound{#1}{#2}% - \else - \begingroup - \everyeof{\noexpand}% - #3% - \xdef\CatchFile@Contents{\CatchFile@Input\CatchFile@File\space}% - \endgroup - \let#1\CatchFile@Contents - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\CatchFileDef} -% \begin{macrocode} -\long\def\CatchFileDef#1#2#3{% - \CatchFile@CheckFileExists{#2}% - \ifx\CatchFile@File\relax - \CatchFile@NotFound{#1}{#2}% - \else - \begingroup - \everyeof\expandafter{% - \CatchFile@EOF - \expandafter\CatchFile@Finish - \noexpand - }% - \ltx@ifundefined{etex@unexpanded}{% - \expandafter\long\expandafter\def\expandafter\CatchFile@Do - \expandafter##\expandafter1\CatchFile@EOF{% - \toks\ltx@zero{##1}% - \xdef\CatchFile@gtemp{\the\toks\ltx@zero}% - \def\CatchFile@Finish{% - \endgroup - \let#1\CatchFile@gtemp - \global\let\CatchFile@gtemp\ltx@undefined - }% - }% - }{% - \expandafter\long\expandafter\def\expandafter\CatchFile@Do - \expandafter##\expandafter1\CatchFile@EOF{% - \edef\CatchFile@Finish{% - \endgroup - \etex@unexpanded{% - \edef#1{\etex@unexpanded{##1}}% - }% - }% - }% - }% - #3\relax - \expandafter\expandafter\expandafter\CatchFile@Do - \CatchFile@Input\CatchFile@File\relax - \fi -} -% \end{macrocode} -% \cs{relax} after |#3| was added to make it more robust in -% case the user uses something like -%\begin{verbatim} -%\CatchFileDef{\content}{\jobname.tt}{\endlinechar=-1} -%\end{verbatim} -% that expands the following \cs{expandafter} after |#3| prematurely -% (contribution of Martin Scharrer). -% \end{macro} -% \begin{macro}{\CatchFile@EOF} -% If the file is read the catcode mappings are fixed. -% This means that the same character cannot occur -% inside the file with different catcodes. -% Thus we use as end of file marker the at sign -% twice with different catcodes. -% \begin{macrocode} -\begingroup - \lccode65=64 % lowercase('A') = '@' - \lccode66=64 % lowercase('B') = '@' - \catcode65=8 % catcode('A') = subscript - \catcode66=3 % catcode('B') = math shift -\lowercase{\endgroup - \def\CatchFile@EOF{AB}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\CatchFile@AtEnd% -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{catchfile}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/catchfile.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/catchfile.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 catchfile.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@{}} -% catchfile.sty & tex/generic/oberdiek/catchfile.sty\\ -% catchfile.pdf & doc/latex/oberdiek/catchfile.pdf\\ -% catchfile.dtx & source/latex/oberdiek/catchfile.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{catchfile.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 catchfile.dtx -%makeindex -s gind.ist catchfile.idx -%pdflatex catchfile.dtx -%makeindex -s gind.ist catchfile.idx -%pdflatex catchfile.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2007/05/30 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/09/09 v1.1} -% \item -% Catcode section rewritten. -% \end{Version} -% \begin{Version}{2007/11/11 v1.2} -% \item -% Use of package \xpackage{pdftexcmds} for \LuaTeX\ support. -% \end{Version} -% \begin{Version}{2010/03/01 v1.3} -% \item -% Fix for unknown \cs{@PackageErrorNoLine}. -% \end{Version} -% \begin{Version}{2010/04/08 v1.4} -% \item -% \cs{closein} also added if \cs{ifeof} is true. -% \end{Version} -% \begin{Version}{2010/04/28 v1.5} -% \item -% \cs{CatchFileDef}: Getting rid of warning `end of semi simple group -% entered at line \dots\ of -% a different file (Florent Chervet). -% \item -% \cs{CatchFileDef}: Fix for error `Illegal parameter number in -% definition of \dots' (HO) including improvement that uses -% \cs{unexpanded} if available (Florent Chervet). -% \end{Version} -% \begin{Version}{2011/03/01 v1.6} -% \item -% \cs{relax} added after the setup argument of -% \cs{CatchFileDef} to prevent premature file reading -% (Martin Scharrer). -% \end{Version} -% \begin{Version}{2016/05/16 v1.7} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/centernot.pdf b/macros/latex/contrib/oberdiek/centernot.pdf index abf3e1e0fd..e81a9f1694 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.pdf b/macros/latex/contrib/oberdiek/chemarr.pdf index 01afbeb6f0..172148fcee 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.pdf b/macros/latex/contrib/oberdiek/classlist.pdf index 00d23ad196..ecca7ecf83 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.pdf b/macros/latex/contrib/oberdiek/colonequals.pdf index 261d0c1251..e10037aed6 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.pdf b/macros/latex/contrib/oberdiek/dvipscol.pdf index b0299a1019..9bb4fbc40b 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.pdf b/macros/latex/contrib/oberdiek/engord.pdf index a62c06bbfb..8eeae27be3 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.pdf b/macros/latex/contrib/oberdiek/enparen.pdf index 1982d8e4d4..35289c7891 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.pdf b/macros/latex/contrib/oberdiek/eolgrab.pdf index aa92822406..821556a722 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.pdf b/macros/latex/contrib/oberdiek/etexcmds.pdf index ec6137b3f2..eb9473f910 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.pdf b/macros/latex/contrib/oberdiek/fibnum.pdf index d264ee2676..f8c79dad83 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.pdf b/macros/latex/contrib/oberdiek/flags.pdf index f565eb626e..9f83f6937e 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.pdf b/macros/latex/contrib/oberdiek/gettitlestring.pdf index 2e26d964f3..dfaf666d88 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/holtxdoc.dtx b/macros/latex/contrib/oberdiek/holtxdoc.dtx index 6c31061ccf..9ac40aa5ae 100644 --- a/macros/latex/contrib/oberdiek/holtxdoc.dtx +++ b/macros/latex/contrib/oberdiek/holtxdoc.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % % File: holtxdoc.dtx -% Version: 2019/11/12 v0.29 +% Version: 2019/12/09 v0.30 % Info: Private additional ltxdoc support % % Copyright (C) @@ -79,7 +79,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: holtxdoc 2019/11/12 v0.29 Private additional ltxdoc support (HO)} +\Msg{* Package: holtxdoc 2019/12/09 v0.30 Private additional ltxdoc support (HO)} \Msg{************************************************************************} \keepsilent @@ -91,7 +91,7 @@ This is a generated file. Project: holtxdoc -Version: 2019/11/12 v0.29 +Version: 2019/12/09 v0.30 Copyright (C) 1999-2012 Heiko Oberdiek @@ -152,7 +152,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{holtxdoc.drv}% - [2019/11/12 v0.29 Private additional ltxdoc support (HO)]% + [2019/12/09 v0.30 Private additional ltxdoc support (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2011/11/22] \begin{document} @@ -166,7 +166,7 @@ and the derived files % \GetFileInfo{holtxdoc.drv} % % \title{The \xpackage{holtxdoc} package} -% \date{2019/11/12 v0.29} +% \date{2019/12/09 v0.30} % \author{Heiko Oberdiek\thanks % {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} % @@ -207,7 +207,7 @@ and the derived files % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{holtxdoc}% - [2019/11/12 v0.29 Private additional ltxdoc support (HO)] + [2019/12/09 v0.30 Private additional ltxdoc support (HO)] % \end{macrocode} % % \begin{macrocode} @@ -217,7 +217,6 @@ and the derived files \RequirePackage{pdftexcmds}[2010/04/01] \RequirePackage{ltxcmds}[2010/03/09] \RequirePackage{hologo}[2011/11/22] -\RequirePackage{ifluatex}[2010/03/01] \RequirePackage{array} % \end{macrocode} % @@ -467,12 +466,12 @@ and the derived files \def\XeTeX{\hologo{XeTeX}} \def\XeLaTeX{\hologo{XeLaTeX}} \def\plainTeX{\hologo{plainTeX}} -\providecommand*{\teTeX}{te\TeX} -\providecommand*{\mikTeX}{mik\TeX} +\providecommand*{\teTeX}{\hologo{teTeX}} +\providecommand*{\mikTeX}{\hologo{MiKTeX}} \providecommand*{\MakeIndex}{\textsl{MakeIndex}} \providecommand*{\docstrip}{\textsf{docstrip}} -\providecommand*{\iniTeX}{\mbox{ini-\TeX}} -\providecommand*{\VTeX}{V\TeX} +\providecommand*{\iniTeX}{\hologo{iniTeX}} +\providecommand*{\VTeX}{\hologo{VTeX}} % \end{macrocode} % % \subsection{Setup} @@ -800,6 +799,12 @@ and the derived files % Add \verb|\bibpackage| (previously defined inline in some of the packages). % Adjust CTAN links. % \end{Version} +% \begin{Version}{2019/12/09 v0.30} +% \item +% Documentation updates. +% \item Don't use \xpackage{ifluatex} legacy package. +% \item use `\xpackage{hologo} definitions in more cases. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/macros/latex/contrib/oberdiek/holtxdoc.pdf b/macros/latex/contrib/oberdiek/holtxdoc.pdf index 42b2ff13a0..a21413b359 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.pdf b/macros/latex/contrib/oberdiek/hopatch.pdf index cca48d5b2f..8dc4c73267 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.pdf b/macros/latex/contrib/oberdiek/hycolor.pdf index 06d00f571b..b608d36b0e 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.pdf b/macros/latex/contrib/oberdiek/hypbmsec.pdf index edbb170567..74f70c400e 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.pdf b/macros/latex/contrib/oberdiek/hypcap.pdf index a8b46c2c1d..68c34af72f 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.pdf b/macros/latex/contrib/oberdiek/hypdestopt.pdf index 9d5bb19945..fa890946b1 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.pdf b/macros/latex/contrib/oberdiek/hypdoc.pdf index 3186a4365a..0ce0880828 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.pdf b/macros/latex/contrib/oberdiek/hypgotoe.pdf index abbdfcda07..28a110e643 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.pdf b/macros/latex/contrib/oberdiek/hyphsubst.pdf index b237a1f4d3..c158c7221e 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.pdf b/macros/latex/contrib/oberdiek/ifdraft.pdf index bdc21344bb..1f35b1f8c9 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.pdf b/macros/latex/contrib/oberdiek/iflang.pdf index 3315aec095..4ca258cfed 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/intcalc.pdf b/macros/latex/contrib/oberdiek/intcalc.pdf index 3173e157c4..7a28f6ffb1 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.pdf b/macros/latex/contrib/oberdiek/kvdefinekeys.pdf index 23422cb58e..810c2fbebc 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.pdf b/macros/latex/contrib/oberdiek/kvsetkeys.pdf index 06fcef8bc7..71e0f55877 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/listingsutf8.dtx b/macros/latex/contrib/oberdiek/listingsutf8.dtx deleted file mode 100644 index 4912923a88..0000000000 --- a/macros/latex/contrib/oberdiek/listingsutf8.dtx +++ /dev/null @@ -1,675 +0,0 @@ -% \iffalse meta-comment -% -% File: listingsutf8.dtx -% Version: 2016/05/16 v1.3 -% Info: Allow UTF-8 in listings input -% -% Copyright (C) -% 2007, 2011 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 listingsutf8.dtx -% and the derived files -% listingsutf8.sty, listingsutf8.pdf, listingsutf8.ins, listingsutf8.drv, -% listingsutf8-test1.tex, listingsutf8-test2.tex, -% listingsutf8-test3.tex, listingsutf8-test4.tex, -% listingsutf8-test5.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/listingsutf8.dtx -% CTAN:macros/latex/contrib/oberdiek/listingsutf8.pdf -% -% Unpacking: -% (a) If listingsutf8.ins is present: -% tex listingsutf8.ins -% (b) Without listingsutf8.ins: -% tex listingsutf8.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{listingsutf8.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If listingsutf8.drv is present: -% latex listingsutf8.drv -% (b) Without listingsutf8.drv: -% latex listingsutf8.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 listingsutf8.dtx -% makeindex -s gind.ist listingsutf8.idx -% pdflatex listingsutf8.dtx -% makeindex -s gind.ist listingsutf8.idx -% pdflatex listingsutf8.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/listingsutf8.sty -% TDS:doc/latex/oberdiek/listingsutf8.pdf -% TDS:source/latex/oberdiek/listingsutf8.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: listingsutf8 2016/05/16 v1.3 Allow UTF-8 in listings input (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: listingsutf8 -Version: 2016/05/16 v1.3 - -Copyright (C) - 2007, 2011 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 listingsutf8.dtx -and the derived files - listingsutf8.sty, listingsutf8.pdf, listingsutf8.ins, listingsutf8.drv, - listingsutf8-test1.tex, listingsutf8-test2.tex, - listingsutf8-test3.tex, listingsutf8-test4.tex, - listingsutf8-test5.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{listingsutf8.ins}{\from{listingsutf8.dtx}{install}}% - \file{listingsutf8.drv}{\from{listingsutf8.dtx}{driver}}% - \usedir{tex/latex/oberdiek}% - \file{listingsutf8.sty}{\from{listingsutf8.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{listingsutf8-test1.tex}{\from{listingsutf8.dtx}{test1}}% -% \file{listingsutf8-test2.tex}{\from{listingsutf8.dtx}{test2,utf8}}% -% \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}}% -} - -\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{* listingsutf8.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `listingsutf8.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{listingsutf8.drv}% - [2016/05/16 v1.3 Allow UTF-8 in listings input (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{listingsutf8.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{listingsutf8.drv} -% -% \title{The \xpackage{listingsutf8} package} -% \date{2016/05/16 v1.3} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% Package \xpackage{listings} does not support files with multi-byte -% encodings such as UTF-8. In case of \cs{lstinputlisting} a simple -% workaround is possible if an one-byte encoding exists that the file -% can be converted to. Also \eTeX\ and \pdfTeX\ regardless of its mode -% are required. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \subsection{User interface} -% -% Load this package after or instead of package \xpackage{listings} -% \cite{listings}. -% The package does not define own options and passes given options to -% package \xpackage{listings}. -% -% The syntax of package \xpackage{listings}' key \xoption{inputencoding} -% is extended: -% \begin{quote} -% |inputencoding=utf8/|\meta{one-byte-encoding}\\ -% Example: |inputencoding=utf8/latin1| -% \end{quote} -% That means the file is encoded in UTF-8 and can -% be converted to the given \meta{one-byte-encoding}. -% The available encodings for \meta{one-byte-encoding} are -% listed in section ``1.2 Supported encodings'' of -% package \xpackage{stringenc}'s documentation \cite{stringenc}. -% Of course, the encoding must encode its characters with -% one byte exactly. This excludes the unicode encodings -% (\xoption{utf8}, \xoption{utf16}, \dots). -% -% Only \cs{lstinputlisting} is supported by the syntax extension -% of key \xoption{inputencoding}. -% -% Internally package \xpackage{listingsutf8} reads the file as binary file -% via primitives of \pdfTeX\ (\cs{pdffiledump}). Then the file -% contents is converted as string using package \xpackage{stringenc} and -% finally the string is read as virtual file by \eTeX's \cs{scantokens}. -% -% \subsection{Future} -% -% Workarounds are not provided for -% \begin{itemize} -% \item \cs{lstinline} -% \item Environment |lstlisting|. -% \item Environments defined by \cs{lstnewenvironment}. -% \end{itemize} -% Perhaps someone will find time to extend package \xpackage{listings} -% with full native support for UTF-8. Then this package would become obsolete. -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \begin{macrocode} -%<*package> -% \end{macrocode} -% -% \subsection{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 lstU@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\lstU@AtEnd{% - \lstU@AtEnd - \catcode#1=\the\catcode#1\relax - }% - \catcode#1=#2\relax -} -\TMP@EnsureCode{10}{12}% ^^J -\TMP@EnsureCode{33}{12}% ! -\TMP@EnsureCode{36}{3}% $ -\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{58}{12}% : -\TMP@EnsureCode{60}{12}% < -\TMP@EnsureCode{62}{12}% > -\TMP@EnsureCode{91}{12}% [ -\TMP@EnsureCode{93}{12}% ] -\TMP@EnsureCode{94}{7}% ^ (superscript) -\TMP@EnsureCode{95}{8}% _ (subscript) -\TMP@EnsureCode{96}{12}% ` -\TMP@EnsureCode{124}{12}% | -\TMP@EnsureCode{126}{13}% ~ (active) -\edef\lstU@AtEnd{\lstU@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% Package identification. -% \begin{macrocode} -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{listingsutf8}% - [2016/05/16 v1.3 Allow UTF-8 in listings input (HO)] -% \end{macrocode} -% -% \subsection{Package options} -% -% Just pass options to package listings. -% -% \begin{macrocode} -\DeclareOption*{% - \PassOptionsToPackage\CurrentOption{listings}% -} -\ProcessOptions* -% \end{macrocode} -% Key \xoption{inputencoding} was introduced in version -% 2002/04/01 v1.0 of package \xpackage{listings}. -% \begin{macrocode} -\RequirePackage{listings}[2002/04/01] -% \end{macrocode} -% Ensure that \cs{inputencoding} is provided. -% \begin{macrocode} -\AtBeginDocument{% - \@ifundefined{inputencoding}{% - \RequirePackage{inputenc}% - }{}% -} -% \end{macrocode} -% -% \subsection{Check prerequisites} -% -% \begin{macrocode} -\RequirePackage{pdftexcmds}[2011/04/22] -% \end{macrocode} -% -% \begin{macrocode} -\def\lstU@temp#1#2{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #1\endcsname\relax - \PackageWarningNoLine{listingsutf8}{% - Package loading is aborted because of missing % - \@backslashchar#1.\MessageBreak - #2% - }% - \expandafter\lstU@AtEnd - \fi -} -\lstU@temp{scantokens}{It is provided by e-TeX}% -\lstU@temp{pdf@unescapehex}{It is provided by pdfTeX >= 1.30}% -\lstU@temp{pdf@filedump}{It is provided by pdfTeX >= 1.30}% -\lstU@temp{pdf@filesize}{It is provided by pdfTeX >= 1.30}% -% \end{macrocode} -% -% \begin{macrocode} -\RequirePackage{stringenc}[2010/03/01] -% \end{macrocode} -% -% \subsection{Add support for UTF-8} -% -% \begin{macro}{\iflstU@utfviii} -% \begin{macrocode} -\newif\iflstU@utfviii -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\lstU@inputenc} -% \begin{macrocode} -\def\lstU@inputenc#1{% - \expandafter\lstU@@inputenc#1utf8/utf8/\@nil -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\lstU@@inputenc} -\def\lstU@@inputenc#1utf8/#2utf8/#3\@nil{% - \ifx\\#1\\% - \lstU@utfviiitrue - \def\lst@inputenc{#2}% - \else - \lstU@utfviiifalse - \fi -} -% \begin{macrocode} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\lst@Key{inputencoding}\relax{% - \def\lst@inputenc{#1}% - \lstU@inputenc{#1}% -} -% \end{macrocode} -% -% \subsubsection{Conversion} -% -% \begin{macro}{\lstU@input} -% \begin{macrocode} -\def\lstU@input#1{% - \iflstU@utfviii - \edef\lstU@text{% - \pdf@unescapehex{% - \pdf@filedump{0}{\pdf@filesize{#1}}{#1}% - }% - }% - \lstU@CRLFtoLF\lstU@text - \StringEncodingConvert\lstU@text\lstU@text{utf8}\lst@inputenc - \def\lstU@temp{% - \scantokens\expandafter{\lstU@text}% - }% - \else - \def\lstU@temp{% - \input{#1}% - }% - \fi - \lstU@temp -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Convert CR/LF pairs to LF} -% -% \begin{macro}{\lstU@CRLFtoLF} -% \begin{macrocode} -\begingroup - \endlinechar=-1 % - \@makeother\^^J % - \@makeother\^^M % - \gdef\lstU@CRLFtoLF#1{% - \edef#1{% - \expandafter\lstU@CRLFtoLF@aux#1^^M^^J\@nil - }% - }% - \gdef\lstU@CRLFtoLF@aux#1^^M^^J#2\@nil{% - #1% - \ifx\relax#2\relax - \@car - \fi - ^^J% - \lstU@CRLFtoLF@aux#2\@nil - }% -\endgroup % -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Patch \cs{lst@InputListing}} -% -% \begin{macrocode} -\def\lstU@temp#1\def\lst@next#2#3\@nil{% - \def\lst@InputListing##1{% - #1% - \def\lst@next{\lstU@input{##1}}% - #3% - }% -} -\expandafter\lstU@temp\lst@InputListing{#1}\@nil -% \end{macrocode} -% -% \begin{macrocode} -\lstU@AtEnd% -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{listingsutf8}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/listingsutf8.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/listingsutf8.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 listingsutf8.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@{}} -% listingsutf8.sty & tex/latex/oberdiek/listingsutf8.sty\\ -% listingsutf8.pdf & doc/latex/oberdiek/listingsutf8.pdf\\ -% listingsutf8.dtx & source/latex/oberdiek/listingsutf8.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{listingsutf8.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 listingsutf8.dtx -%makeindex -s gind.ist listingsutf8.idx -%pdflatex listingsutf8.dtx -%makeindex -s gind.ist listingsutf8.idx -%pdflatex listingsutf8.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{thebibliography}{9} -% -% \bibitem{inputenc} -% Alan Jeffrey, Frank Mittelbach, -% \textit{inputenc.sty}, 2006/05/05 v1.1b. -% \CTANpkg{inputenc} -% -% \bibitem{listings} -% Carsten Heinz, Brooks Moses: -% \textit{The \xpackage{listings} package}; -% 2007/02/22;\\ -% \CTANpkg{listings}. -% -% \bibitem{stringenc} -% Heiko Oberdiek: -% \textit{The \xpackage{stringenc} package}; -% 2007/10/22;\\ -% \CTANpkg{stringenc}. -% -% \end{thebibliography} -% -% \begin{History} -% \begin{Version}{2007/10/22 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/11/11 v1.1} -% \item -% Use of package \xpackage{pdftexcmds}. -% \end{Version} -% \begin{Version}{2011/11/10 v1.2} -% \item -% DOS line ends CR/LF normalized to LF to avoid empty lines -% (Bug report of Thomas Benkert in de.comp.text.tex). -% \end{Version} -% \begin{Version}{2016/05/16 v1.3} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/listingsutf8.pdf b/macros/latex/contrib/oberdiek/listingsutf8.pdf deleted file mode 100644 index 3adbbf83f3..0000000000 Binary files a/macros/latex/contrib/oberdiek/listingsutf8.pdf and /dev/null differ diff --git a/macros/latex/contrib/oberdiek/ltxcmds.pdf b/macros/latex/contrib/oberdiek/ltxcmds.pdf index a6f5e44662..9efe9c4031 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/oberdiek-bundle.bib b/macros/latex/contrib/oberdiek/oberdiek-bundle.bib index 447fce6508..c08ab94024 100644 --- a/macros/latex/contrib/oberdiek/oberdiek-bundle.bib +++ b/macros/latex/contrib/oberdiek/oberdiek-bundle.bib @@ -5,20 +5,6 @@ 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:auxhook, title={The auxhook package}, author={Heiko Oberdiek}, @@ -33,13 +19,6 @@ 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}, @@ -47,13 +26,6 @@ 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}, @@ -236,13 +208,6 @@ 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}, @@ -355,13 +320,6 @@ 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}, diff --git a/macros/latex/contrib/oberdiek/oberdiek.ins b/macros/latex/contrib/oberdiek/oberdiek.ins index 304bd89a99..a0a0048ce0 100644 --- a/macros/latex/contrib/oberdiek/oberdiek.ins +++ b/macros/latex/contrib/oberdiek/oberdiek.ins @@ -1,5 +1,5 @@ % oberdiek.ins -% 2019/12/05 +% 2019/12/09 % % Copyright (C) % 1999, 2001, 2006 Heiko Oberdiek @@ -27,13 +27,9 @@ \input docstrip \batchinput{aliascnt.dtx} -\batchinput{alphalph.dtx} -\batchinput{askinclude.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} @@ -60,7 +56,6 @@ \batchinput{intcalc.dtx} \batchinput{kvdefinekeys.dtx} \batchinput{kvsetkeys.dtx} -\batchinput{listingsutf8.dtx} \batchinput{ltxcmds.dtx} \batchinput{pagegrid.dtx} \batchinput{pagesel.dtx} @@ -69,15 +64,12 @@ \batchinput{pdfcolparallel.dtx} \batchinput{pdfcolparcolumns.dtx} \batchinput{pdfcrypt.dtx} -\batchinput{pdfescape.dtx} \batchinput{pdfrender.dtx} -\batchinput{picture.dtx} \batchinput{protecteddef.dtx} \batchinput{refcount.dtx} \batchinput{resizegather.dtx} \batchinput{rotchiffre.dtx} \batchinput{scrindex.dtx} -\batchinput{selinput.dtx} \batchinput{setouterhbox.dtx} \batchinput{settobox.dtx} \batchinput{soulutf8.dtx} diff --git a/macros/latex/contrib/oberdiek/oberdiek.pdf b/macros/latex/contrib/oberdiek/oberdiek.pdf index d497116d51..c664986df5 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 2597af8c6f..676c3ab28c 100644 --- a/macros/latex/contrib/oberdiek/oberdiek.tex +++ b/macros/latex/contrib/oberdiek/oberdiek.tex @@ -10,7 +10,7 @@ \newcommand*{\Author}{Heiko Oberdiek} \newcommand*{\Email}{ho-tex at tug.org} -\newcommand*{\Date}{2019/12/05} +\newcommand*{\Date}{2019/12/09} % Copyright (C) 2006-2016 by % Heiko Oberdiek @@ -176,22 +176,14 @@ \begin{overview} \entry{aliascnt}{Alias counters}% [\entrysep] -\entry{alphalph}{Convert numbers to letters}% -[\entrysep] -\entry{askinclude}{Interactive asking of included files}% -[\entrysep] \entry{atveryend}{Hooks at the very end of document}% [\entrysep] \entry{auxhook}{Hooks for auxiliary files}% [\entrysep] \entry{bigintcalc}{Expandable calculations on big integers}% [\entrysep] -\entry{bitset}{Handle bit-vector datatype}% -[\entrysep] \entry{bmpsize}{Extract size/resolution from bitmap files}% [\entrysep] -\entry{catchfile}{Catch the contents of a file}% -[\entrysep] \entry{centernot}{Centers the not symbol horizontally}% [\entrysep] \entry{chemarr}{Arrows for chemical reactions}% @@ -244,8 +236,6 @@ [\entrysep] \entry{kvsetkeys}{Key value parser}% [\entrysep] -\entry{listingsutf8}{Allow UTF-8 in listings input}% -[\entrysep] \entry{ltxcmds}{\hologo{LaTeX} kernel commands for general use}% [\entrysep] \entry{pagegrid}{Print page grid in background}% @@ -262,12 +252,8 @@ [\entrysep] \entry{pdfcrypt}{Allows the setting of PDF encryption}% [\entrysep] -\entry{pdfescape}{Implements \hologo{pdfTeX}'s escape features}% -[\entrysep] \entry{pdfrender}{Access to some PDF graphics parameters}% [\entrysep] -\entry{picture}{Dimens for picture macros}% -[\entrysep] \entry{protecteddef}{Define protected commands}% [\entrysep] \entry{refcount}{Data extraction from label references}% @@ -314,24 +300,6 @@ share the same counter register and clear list. \end{abstract} \tocinclude{aliascnt} -\newpage -\subsection{\pkgsectformat{alphalph}} -\label{alphalph} -\begin{abstract} -The package provides methods to represent numbers with a limited -set of symbols. Both \hologo{LaTeX} and \hologo{plainTeX} are supported. -\end{abstract} -\tocinclude{alphalph} - -\newpage -\subsection{\pkgsectformat{askinclude}} -\label{askinclude} -\begin{abstract} -This package replaces \cs{includeonly} by an interactive user -interface. -\end{abstract} -\tocinclude{askinclude} - \newpage \subsection{\pkgsectformat{auxhook}} \label{auxhook} @@ -350,16 +318,6 @@ with big integers that can exceed \TeX's number limits. \end{abstract} \tocinclude{bigintcalc} -\newpage -\subsection{\pkgsectformat{bitset}} -\label{bitset} -\begin{abstract} -This package defines and implements the data type bit set, -a vector of bits. The size of the vector may grow dynamically. -Individual bits can be manipulated. -\end{abstract} -\tocinclude{bitset} - \newpage \subsection{\pkgsectformat{bmpsize}} \label{bmpsize} @@ -373,15 +331,6 @@ options \xoption{viewport}, \xoption{trim} and \xoption{clip}. \end{abstract} \tocinclude{bmpsize} -\newpage -\subsection{\pkgsectformat{catchfile}} -\label{catchfile} -\begin{abstract} -This package catches the contents of a file and puts it in a macro. -It requires \eTeX. Both \LaTeX\ and \plainTeX\ are supported. -\end{abstract} -\tocinclude{catchfile} - \newpage \subsection{\pkgsectformat{centernot}} \label{centernot} @@ -649,18 +598,6 @@ only one level of curly braces is removed from the values. \end{abstract} \tocinclude{kvsetkeys} -\newpage -\subsection{\pkgsectformat{listingsutf8}} -\label{listingsutf8} -\begin{abstract} -Package \xpackage{listings} does not support files with multi-byte -encodings such as UTF-8. In case of \cs{lstinputlisting} a simple -workaround is possible if an one-byte encoding exists that the file -can be converted to. Also \eTeX\ and \pdfTeX\ regardless of its mode -are required. -\end{abstract} -\tocinclude{listingsutf8} - \newpage \subsection{\pkgsectformat{ltxcmds}} \label{ltxcmds} @@ -738,16 +675,6 @@ for \VTeX\ and some older versions of \pdfTeX. \end{abstract} \tocinclude{pdfcrypt} -\newpage -\subsection{\pkgsectformat{pdfescape}} -\label{pdfescape} -\begin{abstract} -This package implements \pdfTeX's escape features -(\cs{pdfescapehex}, \cs{pdfunescapehex}, \cs{pdfescapename}, -\cs{pdfescapestring}) using \TeX\ or \eTeX. -\end{abstract} -\tocinclude{pdfescape} - \newpage \subsection{\pkgsectformat{pdfrender}} \label{pdfrender} @@ -759,17 +686,6 @@ provides an interface for setting these parameters. \tocinclude{pdfrender} -\newpage -\subsection{\pkgsectformat{picture}} -\label{picture} -\begin{abstract} -There are macro and environment arguments that expect numbers -that will internally be multiplicated with \cs{unitlength}. -This package extends the syntax of these arguments that -dimens with calculation support can be added for these arguments. -\end{abstract} -\tocinclude{picture} - \newpage \subsection{\pkgsectformat{protecteddef}} \label{protecteddef} @@ -828,15 +744,6 @@ is supported. Index preambles can be given either by means of package \end{abstract} \tocinclude{scrindex} -\newpage -\subsection{\pkgsectformat{selinput}} -\label{selinput} -\begin{abstract} -This package selects the input encoding by specifying between -input characters and their glyph names. -\end{abstract} -\tocinclude{selinput} - \newpage \subsection{\pkgsectformat{setouterhbox}} \label{setouterhbox} diff --git a/macros/latex/contrib/oberdiek/pagegrid.pdf b/macros/latex/contrib/oberdiek/pagegrid.pdf index df8217c5f5..cf9f9072ec 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.pdf b/macros/latex/contrib/oberdiek/pagesel.pdf index f1b6ff3f2b..a8ad281ae5 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.pdf b/macros/latex/contrib/oberdiek/pdfcol.pdf index b06d916ed8..758cccf4c2 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.pdf b/macros/latex/contrib/oberdiek/pdfcolfoot.pdf index d436446f13..c9c70c032c 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.pdf b/macros/latex/contrib/oberdiek/pdfcolparallel.pdf index f009b264e1..c93a4f537f 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.pdf b/macros/latex/contrib/oberdiek/pdfcolparcolumns.pdf index d011accb92..acc877258f 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.pdf b/macros/latex/contrib/oberdiek/pdfcrypt.pdf index f1a7bda7d7..922be507ea 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 deleted file mode 100644 index b405d7f7e1..0000000000 --- a/macros/latex/contrib/oberdiek/pdfescape.dtx +++ /dev/null @@ -1,1533 +0,0 @@ -% \iffalse meta-comment -% -% File: pdfescape.dtx -% Version: 2016/05/16 v1.14 -% Info: Implements pdfTeX's escape features -% -% Copyright (C) -% 2007, 2010, 2011 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 pdfescape.dtx -% and the derived files -% pdfescape.sty, pdfescape.pdf, pdfescape.ins, pdfescape.drv, -% pdfescape-test1.tex, pdfescape-test2.tex, -% pdfescape-test3.tex, pdfescape-test4.tex, -% pdfescape-test5.tex, pdfescape-test6.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/pdfescape.dtx -% CTAN:macros/latex/contrib/oberdiek/pdfescape.pdf -% -% Unpacking: -% (a) If pdfescape.ins is present: -% tex pdfescape.ins -% (b) Without pdfescape.ins: -% tex pdfescape.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{pdfescape.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If pdfescape.drv is present: -% latex pdfescape.drv -% (b) Without pdfescape.drv: -% latex pdfescape.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 pdfescape.dtx -% makeindex -s gind.ist pdfescape.idx -% pdflatex pdfescape.dtx -% makeindex -s gind.ist pdfescape.idx -% pdflatex pdfescape.dtx -% -% Installation: -% TDS:tex/generic/oberdiek/pdfescape.sty -% TDS:doc/latex/oberdiek/pdfescape.pdf -% TDS:source/latex/oberdiek/pdfescape.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: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: pdfescape -Version: 2016/05/16 v1.14 - -Copyright (C) - 2007, 2010, 2011 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 pdfescape.dtx -and the derived files - pdfescape.sty, pdfescape.pdf, pdfescape.ins, pdfescape.drv, - pdfescape-test1.tex, pdfescape-test2.tex, - pdfescape-test3.tex, pdfescape-test4.tex, - pdfescape-test5.tex, pdfescape-test6.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{pdfescape.ins}{\from{pdfescape.dtx}{install}}% - \file{pdfescape.drv}{\from{pdfescape.dtx}{driver}}% - \usedir{tex/generic/oberdiek}% - \file{pdfescape.sty}{\from{pdfescape.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{pdfescape-test1.tex}{\from{pdfescape.dtx}{test1}}% -% \file{pdfescape-test2.tex}{\from{pdfescape.dtx}{test2}}% -% \file{pdfescape-test3.tex}{\from{pdfescape.dtx}{test3}}% -% \file{pdfescape-test4.tex}{\from{pdfescape.dtx}{test4}}% -% \file{pdfescape-test5.tex}{\from{pdfescape.dtx}{test5}}% -% \file{pdfescape-test6.tex}{\from{pdfescape.dtx}{test6}}% -} - -\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{* pdfescape.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `pdfescape.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{pdfescape.drv}% - [2016/05/16 v1.14 Implements pdfTeX's escape features (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{pdfescape.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{pdfescape.drv} -% -% \title{The \xpackage{pdfescape} package} -% \date{2016/05/16 v1.14} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package implements \pdfTeX's escape features -% (\cs{pdfescapehex}, \cs{pdfunescapehex}, \cs{pdfescapename}, -% \cs{pdfescapestring}) using \TeX\ or \eTeX. -% \end{abstract} -% -% \tableofcontents -% -% \section{Documentation} -% -% \begin{declcs}{EdefEscapeHex} \M{cmd} \M{string}\\ -% \cs{EdefUnescapeHex} \M{cmd} \M{string}\\ -% \cs{EdefEscapeName} \M{cmd} \M{string}\\ -% \cs{EdefEscapeString} \M{cmd} \M{string} -% \end{declcs} -% These commands converts \meta{string} and stores the result -% in macro \meta{cmd}. The conversion result is the same -% as the conversion of the corresponding \pdfTeX's primitives. -% Note that the argument \meta{string} is expanded before -% the conversion. -% -% For example, if \pdfTeX\ \textgreater= 1.30 is present, -% then \cs{EdefEscapeHex} -% becomes to: -% \begin{quote} -%\begin{verbatim} -%\def\EdefEscapeHex#1#2{% -% \edef#1{\pdfescapehex{#2}}% -%} -%\end{verbatim} -% \end{quote} -% The package provides implementations for the case that \pdfTeX\ is -% not present (or too old). Even \eTeX\ can be missing, however it is -% used if it is detected. -% -% \paragraph{Babel.} -% The input strings may contain shorthand characters of package -% \xpackage{babel}. -% -% \subsection{Additional unescape macros} -% -% \begin{declcs}{EdefUnescapeName} \M{cmd} \M{string} -% \end{declcs} -% Sequences of a hash sign with two hexadecimal digits are -% converted to the corresponding character (PDF-1.2). -% A hash sign that is not followed by two hexadecimal digits -% is left unchanged. The catcodes in the result string follow -% TeX's conventions. The space has catcode 10 (space) and -% the other characters have catcode 12 (other). -% -% \begin{declcs}{EdefUnescapeString} \M{cmd} \M{string} -% \end{declcs} -% Macro \meta{cmd} stores the unescaped string in \meta{string}. -% All the rules for literal strings are implemented, see -% PDF specification. -% The catcodes in the result string follow TeX's conventions. -% -% \subsection{Sanitizing macro} -% -% \begin{declcs}{EdefSanitize} \M{cmd} \M{string} -% \end{declcs} -% Argument \meta{string} is expanded, converted to a string -% of tokens with catcode 12 (other) and space tokens, and -% stored in macro \meta{cmd}. -% -% \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@pdfescape.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{pdfescape}{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@pdfescape.sty\endcsname -\ProvidesPackage{pdfescape}% - [2016/05/16 v1.14 Implements pdfTeX's escape features (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 PE@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#3{% - \edef\PE@AtEnd{% - \PE@AtEnd - #1#2=\the#1#2\relax - }% - #1#2=#3\relax -} -\TMP@EnsureCode\catcode{0}{12}% ^^@ -\TMP@EnsureCode\catcode{34}{12}% " -\TMP@EnsureCode\catcode{36}{3}% $ -\TMP@EnsureCode\catcode{38}{4}% & -\TMP@EnsureCode\catcode{39}{12}% ' -\TMP@EnsureCode\catcode{42}{12}% * -\TMP@EnsureCode\catcode{45}{12}% - -\TMP@EnsureCode\catcode{46}{12}% . -\TMP@EnsureCode\catcode{47}{12}% / -\TMP@EnsureCode\catcode{60}{12}% < -\TMP@EnsureCode\catcode{62}{12}% > -\TMP@EnsureCode\catcode{91}{12}% [ -\TMP@EnsureCode\catcode{93}{12}% ] -\TMP@EnsureCode\catcode{94}{7}% ^ -\TMP@EnsureCode\catcode{96}{12}% ` -\TMP@EnsureCode\uccode{34}{0}% " -\TMP@EnsureCode\uccode{48}{0}% 0 -\TMP@EnsureCode\uccode{61}{0}% = -\edef\PE@AtEnd{\PE@AtEnd\noexpand\endinput} -% \end{macrocode} -% -% \subsection{Load package} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \def\TMP@RequirePackage#1[#2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname ver@#1.sty\endcsname\relax - \input #1.sty\relax - \fi - }% - \TMP@RequirePackage{ltxcmds}[2010/04/08]% -\else - \RequirePackage{ltxcmds}[2010/04/08]% -\fi -% \end{macrocode} -% -% \subsection{Sanitizing} -% -% \begin{macro}{\EdefSanitize} -% Macro \cs{EdefSanitize} takes |#2|, entirely converts -% it to token with catcode 12 (other) and stores the -% result in macro |#1|. -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname detokenize\endcsname\relax - \long\def\EdefSanitize#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \edef#1{#2}% - \PE@onelevel@sanitize#1% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{#1}% - }% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname @onelevel@sanitize\endcsname\relax - \def\PE@onelevel@sanitize#1{% - \edef#1{\expandafter\PE@strip@prefix\meaning#1}% - }% - \def\PE@strip@prefix#1>{}% - \else - \let\PE@onelevel@sanitize\@onelevel@sanitize - \fi -\else - \long\def\EdefSanitize#1#2{% - \begingroup - \csname @safe@activestrue\endcsname - \edef#1{#2}% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{% - \detokenize\expandafter{#1}% - }% - }% - \def\PE@onelevel@sanitize#1{% - \edef#1{\detokenize\expandafter{#1}}% - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@sanitize} -% Macro \cs{PE@sanitize} is only defined for -% compatibility with version 1.4. Its use is deprecated. -% \begin{macrocode} -\let\PE@sanitize\EdefSanitize -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Space characters} -% -% \begin{macro}{\PE@space@other} -% \begin{macrocode} -\begingroup - \catcode`\ =12\relax% -\def\x{\endgroup\def\PE@space@other{ }}\x\relax -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@space@space} -% \begin{macrocode} -\def\PE@space@space{ } -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Space normalization} -% -% \begin{macro}{\PE@SanitizeSpaceOther} -% \begin{macrocode} -\def\PE@SanitizeSpaceOther#1{% - \edef#1{\expandafter\PE@SpaceToOther#1 \relax}% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@SpaceToOther} -% \begin{macrocode} -\def\PE@SpaceToOther#1 #2\relax{% - #1% - \ifx\\#2\\% - \else - \PE@space@other - \ltx@ReturnAfterFi{% - \PE@SpaceToOther#2\relax - }% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{\cs{EdefUnescapeName}} -% -% \begin{macro}{\EdefUnescapeName} -% \begin{macrocode} -\def\EdefUnescapeName#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@UnescapeName#1% - \PE@onelevel@sanitize#1% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@UnescapeName} -% \begin{macrocode} -\begingroup - \catcode`\$=6 % hash - \catcode`\#=12 % other - \gdef\PE@UnescapeName$1{% - \begingroup - \PE@InitUccodeHexDigit - \def\PE@result{}% - \expandafter\PE@DeName$1#\relax\relax - \expandafter\endgroup - \expandafter\def\expandafter$1\expandafter{\PE@result}% - }% - \gdef\PE@DeName$1#$2$3{% - \ifx\relax$2% - \edef\PE@result{\PE@result$1}% - \let\PE@next\relax - \else - \ifx\relax$3% - % wrong escape sequence in input - \edef\PE@result{\PE@result$1#}% - \let\PE@next\relax - \else - \uppercase{% - \def\PE@testA{$2}% - \def\PE@testB{$3}% - }% - \ifcase\ifcase\expandafter\PE@TestUcHexDigit\PE@testA - \ifcase\expandafter\PE@TestUcHexDigit\PE@testB - \ltx@zero - \else - \ltx@one - \fi - \else - \ltx@one - \fi - \uccode\ltx@zero="\PE@testA\PE@testB\relax - \uppercase{% - \def\PE@temp{^^@}% - }% - \uccode\ltx@zero=\ltx@zero - \edef\PE@result{\PE@result$1\PE@temp}% - \let\PE@next\PE@DeName - \else - % wrong escape sequence in input - \edef\PE@result{\PE@result$1#}% - \def\PE@next{\PE@DeName$2$3}% - \fi - \fi - \fi - \PE@next - }% -\endgroup -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@InitUccodeHexDigit} -% \begin{macrocode} -\def\PE@InitUccodeHexDigit{% - \uccode`a=`A\relax - \uccode`b=`B\relax - \uccode`c=`C\relax - \uccode`d=`D\relax - \uccode`e=`E\relax - \uccode`f=`F\relax - \uccode`A=\ltx@zero - \uccode`B=\ltx@zero - \uccode`C=\ltx@zero - \uccode`D=\ltx@zero - \uccode`E=\ltx@zero - \uccode`F=\ltx@zero - \uccode`0=\ltx@zero - \uccode`1=\ltx@zero - \uccode`2=\ltx@zero - \uccode`3=\ltx@zero - \uccode`4=\ltx@zero - \uccode`5=\ltx@zero - \uccode`6=\ltx@zero - \uccode`7=\ltx@zero - \uccode`8=\ltx@zero - \uccode`9=\ltx@zero -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\PE@TestUcHexDigit} -% \begin{macrocode} -\def\PE@TestUcHexDigit#1{% - \ifnum`#1<48 % 0 - \ltx@one - \else - \ifnum`#1>70 % F - \ltx@one - \else - \ifnum`#1>57 % 9 - \ifnum`#1<65 % A - \ltx@one - \else - \ltx@zero - \fi - \else - \ltx@zero - \fi - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsection{\cs{EdefUnescapeString}} -% -% \begin{macro}{\EdefUnescapeString} -% \begin{macrocode} -\def\EdefUnescapeString#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@NormalizeLineEnd#1% - \PE@UnescapeString#1% - \PE@onelevel@sanitize#1% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\begingroup - \uccode`\8=10 % lf - \uccode`\9=13 % cr -\def\x#1#2{\endgroup -% \end{macrocode} -% \begin{macro}{\PE@NormalizeLineEnd} -% \begin{macrocode} - \def\PE@NormalizeLineEnd##1{% - \def\PE@result{}% - \expandafter\PE@@NormalizeLineEnd##1#2\relax - \let##1\PE@result - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@@NormalizeLineEnd} -% \begin{macrocode} - \def\PE@@NormalizeLineEnd##1#2##2{% - \ifx\relax##2% - \edef\PE@result{\PE@result##1}% - \let\PE@next\relax - \else - \edef\PE@result{\PE@result##1#1}% - \ifx#1##2% lf - \let\PE@next\PE@@NormalizeLineEnd - \else - \def\PE@next{\PE@@NormalizeLineEnd##2}% - \fi - \fi - \PE@next - }% -}% -\uppercase{% - \x 89% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\begingroup - \catcode`\|=0 % - \catcode`\\=12 % -% \end{macrocode} -% \begin{macro}{\PE@UnescapeString} -% \begin{macrocode} - |gdef|PE@UnescapeString#1{% - |begingroup - |def|PE@result{}% - |expandafter|PE@DeString#1\|relax - |expandafter|endgroup - |expandafter|def|expandafter#1|expandafter{|PE@result}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@DeString} -% \begin{macrocode} - |gdef|PE@DeString#1\#2{% - |ifx|relax#2% - |edef|PE@result{|PE@result#1}% - |let|PE@next|relax - |else - |if n#2% - |uccode|ltx@zero=10 % - |else|if r#2% - |uccode|ltx@zero=13 % - |else|if t#2% - |uccode|ltx@zero=9 % - |else|if b#2% - |uccode|ltx@zero=8 % - |else|if f#2% - |uccode|ltx@zero=12 % - |else - |uccode|ltx@zero=|ltx@zero - |fi|fi|fi|fi|fi - |ifnum|uccode|ltx@zero>|ltx@zero - |uppercase{% - |edef|PE@temp{^^@}% - }% - |edef|PE@result{|PE@result#1|PE@temp}% - |let|PE@next|PE@DeString - |else - |if\#2% backslash - |edef|PE@result{|PE@result#1}% - |let|PE@next|PE@CheckEndBackslash - |else - |ifnum`#2=10 % linefeed - |edef|PE@result{|PE@result#1}% - |let|PE@next|PE@DeString - |else - |ifcase|PE@TestOctDigit#2% - |edef|PE@result{|PE@result#1}% - |def|PE@next{|PE@OctI#2}% - |else - |edef|PE@result{|PE@result#1#2}% - |let|PE@next|PE@DeString - |fi - |fi - |fi - |fi - |fi - |PE@next - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@CheckEndBackslash} -% \begin{macrocode} - |gdef|PE@CheckEndBackslash#1{% - |ifx|relax#1% - |else - |edef|PE@result{|PE@result\}% - |expandafter|PE@DeString|expandafter#1% - |fi - }% -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -|endgroup -% \end{macrocode} -% \begin{macro}{\PE@TestOctDigit} -% \begin{macrocode} -\def\PE@TestOctDigit#1{% - \ifnum`#1<48 % 0 - \ltx@one - \else - \ifnum`#1>55 % 7 - \ltx@one - \else - \ltx@zero - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@OctI} -% \begin{macrocode} -\def\PE@OctI#1#2{% - \ifcase\PE@TestOctDigit#2% - \def\PE@next{\PE@OctII{#1#2}}% - \else - \def\PE@next{\PE@OctAll#1#2}% - \fi - \PE@next -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@OctII} -% \begin{macrocode} -\def\PE@OctII#1#2{% - \ifcase\PE@TestOctDigit#2% - \def\PE@next{\PE@OctIII#1#2}% - \else - \def\PE@next{\PE@OctAll{#1}#2}% - \fi - \PE@next -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\ltx@IfUndefined{numexpr}{% - \catcode`\$=9 % - \catcode`\&=14 % -}{% - \catcode`\$=14 % - \catcode`\&=9 % -} -% \end{macrocode} -% \begin{macro}{\PE@OctIII} -% \begin{macrocode} -\def\PE@OctIII#1#2#3{% - \ifnum#1<4 % - \def\PE@next{\PE@OctAll{#1#2#3}}% - \else -$ \count\ltx@cclv#1 % -$ \advance\count\ltx@cclv -4 % - \edef\PE@next{% - \noexpand\PE@OctAll{% -$ \the\count\ltx@cclv -& \the\numexpr#1-4\relax - #2#3% - }% - }% - \fi - \PE@next -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@OctAll} -% \begin{macrocode} -\def\PE@OctAll#1{% - \uccode\ltx@zero='#1\relax - \uppercase{% - \edef\PE@result{\PE@result^^@}% - }% - \PE@DeString -} -% \end{macrocode} -% \end{macro} -% -% \subsection{User macros (\pdfTeX\space analogues)} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname RequirePackage\endcsname\relax - \def\TMP@RequirePackage#1[#2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname ver@#1.sty\endcsname\relax - \input #1.sty\relax - \fi - }% - \TMP@RequirePackage{pdftexcmds}[2007/11/11]% -\else - \RequirePackage{pdftexcmds}[2007/11/11]% -\fi -% \end{macrocode} -% -% \begin{macrocode} -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname pdf@escapehex\endcsname\relax -% \end{macrocode} -% -% \begin{macro}{\EdefEscapeHex} -% \begin{macrocode} - \long\def\EdefEscapeHex#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@EscapeHex#1% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefUnescapeHex} -% \begin{macrocode} - \def\EdefUnescapeHex#1#2{% - \EdefSanitize#1{#2}% - \PE@UnescapeHex#1% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefEscapeName} -% \begin{macrocode} - \long\def\EdefEscapeName#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@EscapeName#1% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefEscapeString} -% \begin{macrocode} - \long\def\EdefEscapeString#1#2{% - \EdefSanitize#1{#2}% - \PE@SanitizeSpaceOther#1% - \PE@EscapeString#1% - }% -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\else -% \end{macrocode} -% -% \begin{macro}{\PE@edefbabel} -% Help macro that adds support for \xpackage{babel}'s shorthand -% characters. -% \begin{macrocode} - \long\def\PE@edefbabel#1#2#3{% - \begingroup - \csname @save@activestrue\endcsname - \edef#1{#2{#3}}% - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{#1}% - }% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\EdefEscapeHex} -% \begin{macrocode} - \long\def\EdefEscapeHex#1#2{% - \PE@edefbabel#1\pdf@escapehex{#2}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefUnescapeHex} -% \begin{macrocode} - \def\EdefUnescapeHex#1#2{% - \PE@edefbabel#1\pdf@unescapehex{#2}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefEscapeName} -% \begin{macrocode} - \long\def\EdefEscapeName#1#2{% - \PE@edefbabel#1\pdf@escapename{#2}% - }% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\EdefEscapeString} -% \begin{macrocode} - \long\def\EdefEscapeString#1#2{% - \PE@edefbabel#1\pdf@escapestring{#2}% - }% -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} - \expandafter\PE@AtEnd -\fi% -% \end{macrocode} -% -% \subsection{Help macros} -% -% \subsubsection{Characters} -% -% Special characters with catcode 12 (other) are created and -% stored in macros. -% \begin{macro}{\PE@hash} -% \begin{macrocode} -\edef\PE@hash{\string#} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@backslash} -% \begin{macrocode} -\begingroup - \escapechar=-1 % -\edef\x{\endgroup - \def\noexpand\PE@backslash{\string\\}% -} -\x -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Switch for \eTeX} -% -% \begin{macrocode} -\ltx@newif\ifPE@etex -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname numexpr\endcsname\relax -\else - \PE@etextrue -\fi -% \end{macrocode} -% -% \subsection{Conversions} -% -% \subsubsection{Conversion to hex string} -% -% \begin{macro}{\PE@EscapeHex} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeHex#1{% - \edef#1{\expandafter\PE@ToHex#1\relax}% - }% -\else - \def\PE@EscapeHex#1{% - \def\PE@result{}% - \expandafter\PE@ToHex#1\relax - \let#1\PE@result - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@ToHex} -% \begin{macrocode} -\def\PE@ToHex#1{% - \ifx\relax#1% - \else - \PE@HexChar{#1}% - \expandafter\PE@ToHex - \fi -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@HexChar} -% \begin{macrocode} -\ifPE@etex - \def\PE@HexChar#1{% - \PE@HexDigit{\numexpr\dimexpr.0625\dimexpr`#1sp\relax\relax\relax}% - \PE@HexDigit{% - \numexpr`#1-16*\dimexpr.0625\dimexpr`#1sp\relax\relax\relax - }% - }% -\else - \def\PE@HexChar#1{% - \dimen0=`#1sp% - \dimen2=.0625\dimen0 % - \advance\dimen0-16\dimen2 % - \edef\PE@result{% - \PE@result - \PE@HexDigit{\dimen2 }% - \PE@HexDigit{\dimen0 }% - }% - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@HexDigit} -% \begin{macrocode} -\def\PE@HexDigit#1{% - \expandafter\string - \ifcase#1% - 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or - A\or B\or C\or D\or E\or F% - \fi -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Character code to octal number} -% -% \begin{macro}{\PE@OctChar} -% \begin{macrocode} -\ifPE@etex - \def\PE@OctChar#1{% - \expandafter\PE@@OctChar - \the\numexpr\dimexpr.015625\dimexpr`#1sp\relax\relax - \expandafter\relax - \expandafter\relax - \the\numexpr\dimexpr.125\dimexpr`#1sp\relax\relax\relax - \relax - #1% - }% - \def\PE@@OctChar#1\relax#2\relax#3{% - \PE@backslash - #1% - \the\numexpr#2-8*#1\relax - \the\numexpr\dimexpr`#3sp\relax-8*#2\relax - }% -\else - \def\PE@OctChar#1{% - \dimen0=`#1sp% - \dimen2=.125\dimen0 % - \dimen4=.125\dimen2 % - \advance\dimen0-8\dimen2 % - \advance\dimen2-8\dimen4 % - \edef\PE@result{% - \PE@result - \PE@backslash - \number\dimen4 % - \number\dimen2 % - \number\dimen0 % - }% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Unpack hex string} -% -% \begin{macro}{\PE@UnescapeHex} -% \begin{macrocode} -\def\PE@UnescapeHex#1{% - \begingroup - \PE@InitUccodeHexDigit - \def\PE@result{}% - \expandafter\PE@DeHex#1\relax\relax - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{\PE@result}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@DeHex} -% \begin{macrocode} -\def\PE@DeHex#1#2{% - \ifx#2\relax - \ifx#1\relax - \let\PE@next\relax - \else - \uppercase{% - \def\PE@testA{#1}% - }% - \ifcase\expandafter\PE@TestUcHexDigit\PE@testA - \def\PE@next{% - \PE@DeHex#10\relax\relax - }% - \else - \let\PE@next\relax - \fi - \fi - \else - \uppercase{% - \def\PE@testA{#1}% - \def\PE@testB{#2}% - }% - \ifcase\expandafter\PE@TestUcHexDigit\PE@testA - \ifcase\expandafter\PE@TestUcHexDigit\PE@testB - \uccode\ltx@zero="\PE@testA\PE@testB\relax - \ifnum\uccode\ltx@zero=32 % - \let\PE@temp\PE@space@space - \else - \uppercase{% - \def\PE@temp{^^@}% - }% - \fi - \edef\PE@result{\PE@result\PE@temp}% - \let\PE@next\PE@DeHex - \else - % invalid input sequence - \def\PE@next{% - \PE@DeHex#1% - }% - \fi - \else - % invalid input sequence - \def\PE@next{\PE@DeHex#2}% - \fi - \fi - \PE@next -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Conversion to PDF name} -% -% \begin{macro}{\PE@EscapeName} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeName#1{% - \edef#1{\expandafter\PE@EscapeNameTokens#1\relax}% - }% -\else - \def\PE@EscapeName#1{% - \def\PE@result{}% - \expandafter\PE@EscapeNameTokens#1\relax - \let#1\PE@result - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@EscapeNameTokens} -% \begin{macrocode} -\def\PE@EscapeNameTokens#1{% - \ifx\relax#1% - \else - \ifnum`#1<33 % - \ifcase`#1 % - % drop illegal zero - \else - \PE@EscapeNameAdd\PE@hash - \PE@HexChar#1% - \fi - \else - \ifnum`#1>126 % - \PE@EscapeNameAdd\PE@hash - \PE@HexChar#1% - \else \ifnum`#1=35 \PE@EscapeNameHashChar 23% # - \else\ifnum`#1=37 \PE@EscapeNameHashChar 25% % - \else\ifnum`#1=40 \PE@EscapeNameHashChar 28% ( - \else\ifnum`#1=41 \PE@EscapeNameHashChar 29% ) - \else\ifnum`#1=47 \PE@EscapeNameHashChar 2F% / - \else\ifnum`#1=60 \PE@EscapeNameHashChar 3C% < - \else\ifnum`#1=62 \PE@EscapeNameHashChar 3E% > - \else\ifnum`#1=91 \PE@EscapeNameHashChar 5B% [ - \else\ifnum`#1=93 \PE@EscapeNameHashChar 5D% ] - \else\ifnum`#1=123 \PE@EscapeNameHashChar 7B% { - \else\ifnum`#1=125 \PE@EscapeNameHashChar 7D% } - \else - \PE@EscapeNameAdd{#1}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \fi - \fi - \expandafter\PE@EscapeNameTokens - \fi -}% -\def\PE@EscapeNameHashChar#1#2{% - \PE@EscapeNameAdd{\PE@hash\string#1\string#2}% -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@EscapeNameAdd} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeNameAdd#1{#1}% -\else - \def\PE@EscapeNameAdd#1{% - \edef\PE@result{% - \PE@result - #1% - }% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Conversion to PDF string} -% -% \begin{macro}{\PE@EscapeString} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeString#1{% - \edef#1{\expandafter\PE@EscapeStringTokens#1\relax}% - }% -\else - \def\PE@EscapeString#1{% - \begingroup - \def\PE@result{}% - \expandafter\PE@EscapeStringTokens#1\relax - \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{\PE@result}% - }% -\fi -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@EscapeStringTokens} -% \begin{macrocode} -\def\PE@EscapeStringTokens#1{% - \ifx\relax#1% - \else - \ifnum`#1<33 % - \PE@OctChar#1% - \else - \ifnum`#1>126 % - \PE@OctChar#1% - \else \ifnum`#1=40 \PE@EscapeStringAdd{\string\(}% ( - \else\ifnum`#1=41 \PE@EscapeStringAdd{\string\)}% ) - \else\ifnum`#1=92 \PE@EscapeStringAdd{\string\\}% \ - \else - \PE@EscapeStringAdd{#1}% - \fi\fi\fi - \fi - \fi - \expandafter\PE@EscapeStringTokens - \fi -}% -% \end{macrocode} -% \end{macro} -% \begin{macro}{\PE@EscapeStringAdd} -% \begin{macrocode} -\ifPE@etex - \def\PE@EscapeStringAdd#1{#1}% -\else - \def\PE@EscapeStringAdd#1{% - \edef\PE@result{% - \PE@result - #1% - }% - }% -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\PE@AtEnd% -% \end{macrocode} -% -% \begin{macrocode} -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{pdfescape}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/pdfescape.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/pdfescape.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 pdfescape.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@{}} -% pdfescape.sty & tex/generic/oberdiek/pdfescape.sty\\ -% pdfescape.pdf & doc/latex/oberdiek/pdfescape.pdf\\ -% pdfescape.dtx & source/latex/oberdiek/pdfescape.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{pdfescape.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 pdfescape.dtx -%makeindex -s gind.ist pdfescape.idx -%pdflatex pdfescape.dtx -%makeindex -s gind.ist pdfescape.idx -%pdflatex pdfescape.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2007/02/21 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/02/25 v1.1} -% \item -% Test files added. -% \item -% \cs{EdefUnescapeHex} supports lowercase letters. -% \item -% Fix: \verb|\EdefEscapeName{^^@}| -% \item -% Fix: \verb|\EdefEscapeName{\string#}| -% \item -% Fix for \cs{EdefUnescapeHex} in case of incomplete hex string. -% \item -% Fix: \cs{EdefUnescapeHex} generates space tokens with catcode -% 10 (space) in all cases. -% \item -% Fix: \cs{EdefEscapeHex} and \cs{EdefEscapeName} now generate -% tokens with catcode 12 (other) only. -% \end{Version} -% \begin{Version}{2007/03/20 v1.2} -% \item -% Fix: Wrong year in \cs{ProvidesPackage}. -% \end{Version} -% \begin{Version}{2007/04/11 v1.3} -% \item -% Line ends sanitized. -% \end{Version} -% \begin{Version}{2007/04/21 v1.4} -% \item -% \cs{EdefUnescapeName} and \cs{EdefUnescapeString} added. -% \end{Version} -% \begin{Version}{2007/08/27 v1.5} -% \item -% \cs{EdefSanitize} added (replaces \cs{PE@sanitize}). -% \end{Version} -% \begin{Version}{2007/09/09 v1.6} -% \item -% Fix in catcode setup. -% \end{Version} -% \begin{Version}{2007/10/27 v1.7} -% \item -% More efficient \cs{EdefSanitize}. -% \end{Version} -% \begin{Version}{2007/11/11 v1.8} -% \item -% Use of package \xpackage{pdftexcmds} for \hologo{LuaTeX} support. -% \end{Version} -% \begin{Version}{2010/03/01 v1.9} -% \item -% Compatibility with \hologo{iniTeX}. -% \end{Version} -% \begin{Version}{2010/11/12 v1.10} -% \item -% Use of package \xpackage{ltxcmds}. -% \item -% Fix for compatibility with \hologo{iniTeX}. -% \end{Version} -% \begin{Version}{2011/01/30 v1.11} -% \item -% Already loaded package files are not input in \hologo{plainTeX}. -% \end{Version} -% \begin{Version}{2011/04/04 v1.12} -% \item -% Further fixes for compatibility for \hologo{iniTeX}. -% \item -% Test file for \hologo{iniTeX} added. -% \end{Version} -% \begin{Version}{2011/11/25 v1.13} -% \item -% Higher order bit of octal sequences in \cs{EdefUnescapeString} -% ignored according to the PDF specification -% (Bug found by Bruno Le Floch). -% \end{Version} -% \begin{Version}{2016/05/16 v1.14} -% \item -% Documentation updates. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/pdfrender.pdf b/macros/latex/contrib/oberdiek/pdfrender.pdf index 7dbd6c2540..1f121b5bcc 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 deleted file mode 100644 index ba4121a603..0000000000 --- a/macros/latex/contrib/oberdiek/picture.dtx +++ /dev/null @@ -1,768 +0,0 @@ -% \iffalse meta-comment -% -% File: picture.dtx -% Version: 2016/05/16 v1.4 -% Info: Dimens for picture macros -% -% Copyright (C) -% 2006-2009 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 picture.dtx -% and the derived files -% picture.sty, picture.pdf, picture.ins, picture.drv, -% picture-example.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/picture.dtx -% CTAN:macros/latex/contrib/oberdiek/picture.pdf -% -% Unpacking: -% (a) If picture.ins is present: -% tex picture.ins -% (b) Without picture.ins: -% tex picture.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{picture.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If picture.drv is present: -% latex picture.drv -% (b) Without picture.drv: -% latex picture.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 picture.dtx -% makeindex -s gind.ist picture.idx -% pdflatex picture.dtx -% makeindex -s gind.ist picture.idx -% pdflatex picture.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/picture.sty -% TDS:doc/latex/oberdiek/picture.pdf -% TDS:doc/latex/oberdiek/picture-example.tex -% TDS:source/latex/oberdiek/picture.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: picture 2016/05/16 v1.4 Dimens for picture macros (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: picture -Version: 2016/05/16 v1.4 - -Copyright (C) - 2006-2009 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 picture.dtx -and the derived files - picture.sty, picture.pdf, picture.ins, picture.drv, - picture-example.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{picture.ins}{\from{picture.dtx}{install}}% - \file{picture.drv}{\from{picture.dtx}{driver}}% - \usedir{tex/latex/oberdiek}% - \file{picture.sty}{\from{picture.dtx}{package}}% - \usedir{doc/latex/oberdiek}% - \file{picture-example.tex}{\from{picture.dtx}{example}}% -} - -\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{* picture.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `picture.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{picture.drv}% - [2016/05/16 v1.4 Dimens for picture macros (HO)]% -\documentclass{ltxdoc} -\usepackage{holtxdoc}[2011/11/22] -\begin{document} - \DocInput{picture.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{picture.drv} -% -% \title{The \xpackage{picture} 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} -% There are macro and environment arguments that expect numbers -% that will internally be multiplicated with \cs{unitlength}. -% This package extends the syntax of these arguments that -% dimens with calculation support can be added for these arguments. -% \end{abstract} -% -% \tableofcontents -% -% \section{User interface} -% -% \subsection{Introduction} -% -% The environment |picture| and macros such as \cs{put}, \cs{line}, -% \cs{vector} and other macros have arguments that expect numbers -% that are used as factor for \cs{unitlength}. -% This package redefines such macros and adds code that detects -% whether such an argument is given as number or as length. -% In the latter case, the length is used directly without multiplying -% with \cs{unitlength}. -% -% \subsection{Options} -% -% Depending on the available features, also length expressions -% can be given. Option \xoption{calc} loads package \xpackage{calc}. -% Then expressions of these package may be used. -% Otherwise \xoption{etex} wraps the length argument inside -% \cs{dimexpr}\dots\cs{relax}, if \eTeX\ is available. Otherwise -% option \xoption{plain} uses plain assignments without calculation -% support. -% -% The default is \xoption{calc} if package \xpackage{calc} -% is loaded before package \xoption{picture}. If you specify -% option \xoption{calc} the loading of \xpackage{calc} is ensured. -% Otherwise package \xpackage{picture} looks whether \cs{dimexpr} -% is available and uses then option \xoption{etex} as default. -% If \eTeX\ also could not be found, then \xoption{plain} is used. -% -% \subsection{Example} -% -% \begin{macrocode} -%<*example> -\documentclass{article} - -\usepackage[calc]{picture} - -\begin{document} - -\setlength{\unitlength}{1pt} - -\begin{picture}(\widthof{Hello World}, 10mm) - \put(0, 0){\makebox(0,0)[lb]{Hello World}}% - \put(0, \heightof{Hello World} + \fboxsep){% - \line(1, 0){\widthof{Hello World}}% - }% - \put(\widthof{Hello World}, 10mm){% - \line(0, -1){10mm}% - }% -\end{picture} - -\end{document} -% -% \end{macrocode} -% -% \subsection{Supported packages} -% -% Packages \xpackage{pspicture} and \xpackage{pict2e} are supported, -% but they must be loaded before package \xpackage{picture}. -% -% New macros can be supported by \cs{picture@redefine}. -% The first argument is the macro which contains the arguments -% in its parameter text that you want to support by package \xpackage{picture}. -% The second argument contains the parameter text. Change \# to \& for -% the arguments in question. -% Examples (already used by package \xpackage{picture}): -% \begin{quote} -% |\picture@redefine\put{(&1,&2)}|\\ -% |\picture@redefine\line{(#1,#2)&3}| -% \end{quote} -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \subsection{Identification} -% -% \begin{macrocode} -%<*package> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{picture}% - [2016/05/16 v1.4 Dimens for picture macros (HO)]% -% \end{macrocode} -% -% \subsection{Options} -% -% \begin{macrocode} -\def\Pc@calcname{calc} -\def\Pc@etexname{etex} -\def\Pc@plainname{plain} -% \end{macrocode} -% \begin{macro}{\Pc@method} -% Macro \cs{Pc@method} stores the method to use for calculations. -% Check which features are available and set the default for \cs{Pc@method}. -% \begin{macrocode} -\@ifpackageloaded{calc}{% - \let\Pc@method\Pc@calcname -}{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname dimexpr\endcsname\relax - \let\Pc@method\Pc@plainname - \else - \let\Pc@method\Pc@etexname - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\DeclareOption{plain}{% - \let\Pc@method\Pc@plainname -} -\DeclareOption{etex}{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname dimexpr\endcsname\relax - \PackageError{picture}{% - e-TeX is not available% - }\@ehc - \else - \let\Pc@method\Pc@etexname - \fi -} -\DeclareOption{calc}{% - \let\Pc@method\Pc@calcname -} -\ProcessOptions* -\begingroup - \let\on@line\@empty - \PackageInfo{picture}{Calculation method: \Pc@method}% -\endgroup -% \end{macrocode} -% -% \subsection{Calculation method} -% -% \begin{macrocode} -\ifx\Pc@method\Pc@calcname - \RequirePackage{calc}% -\fi -% \end{macrocode} -% -% \subsubsection{Method \xoption{calc}} -% -% \begin{macrocode} -\ifx\Pc@method\Pc@calcname - \def\Pc@tokslength#1{% - \begingroup - \let\calc@error\Pc@calc@error - \setlength\dimen@{#1\unitlength}\Pc@next\Pc@nil{#1}% - }% - \let\PcOrg@calc@error\calc@error - \@ifpackagelater{calc}{2007/08/22}{% v4.3 - \def\Pc@calc@error#1{% - \expandafter\ifx\expandafter\unitlength\noexpand#1\relax - \def\calc@next##1!{% - \endgroup - \aftergroup\afterassignment - \aftergroup\Pc@next - }% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {% - \calc@next{#1}% - }{% - \PcOrg@calc@error{#1}% - }% - }% - }{% - \def\Pc@calc@error#1{% - \expandafter\ifx\expandafter\unitlength\noexpand#1\relax - \def\calc@next##1!{% - \endgroup - \aftergroup\afterassignment - \aftergroup\Pc@next - }% - \expandafter\@gobble - \else - \expandafter\@firstofone - \fi - {% - \PcOrg@calc@error{#1}% - }% - }% - }% -\fi -% \end{macrocode} -% -% \subsubsection{Method \xoption{etex}} -% -% \begin{macrocode} -\ifx\Pc@method\Pc@etexname - \def\Pc@tokslength#1{% - \begingroup - \afterassignment\Pc@next - \dimen@=\dimexpr#1\unitlength\Pc@nil{#1}% - }% -\fi -% \end{macrocode} -% -% \subsubsection{Method \xoption{plain}} -% -% \begin{macrocode} -\ifx\Pc@method\Pc@plainname - \def\Pc@tokslength#1{% - \begingroup - \afterassignment\Pc@next - \dimen@=#1\unitlength\Pc@nil{#1}% - }% -\fi -% \end{macrocode} -% -% \subsubsection{Help macros} -% -% \begin{macrocode} -\def\Pc@next#1\Pc@nil#2{% - \ifx\\#1\\% - \endgroup - \Pc@addtoks{{#2}}% - \else - \expandafter\endgroup - \expandafter\Pc@addtoks\expandafter{% - \expandafter{\the\dimen@\@gobble}% - }% - \fi -} -% \end{macrocode} -% \begin{macro}{\Pc@nil} -% \cs{Pc@nil} must not have the meaning of \cs{relax} because of -% \cs{dimexpr}. -% \begin{macrocode} -\let\Pc@nil\message -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Pc@addtoks} -% \begin{macrocode} -\def\Pc@addtoks#1{% - \toks@=\expandafter{\the\toks@#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Pc@init} -% \begin{macrocode} -\def\Pc@init#1{% - \begingroup - \toks@={#1}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Pc@finish} -% \begin{macrocode} -\def\Pc@finish#1{% - \expandafter\endgroup - \expandafter#1\the\toks@ -} -% \end{macrocode} -% \end{macro} -% -% \subsection{Redefinitions} -% -% \begin{macro}{\picture@redefine} -% \begin{tabular}[t]{@{}l@{ }l@{}} -% |#1|:& command name\\ -% |#2|:& parameter text, length parameter with \& instead of \# -% \end{tabular} -% \begin{macrocode} -\def\picture@redefine#1#2{% - \begingroup - \edef\reserved@a{% - \noexpand\noexpand - \expandafter\noexpand - \csname PcOrg@\expandafter\@gobble\string#1\endcsname - }% - \toks0{#1}% - \Pc@first#2&0% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Pc@first} -% \begin{macrocode} -\def\Pc@first#1&{% - \toks1={#1}% - \toks2={\Pc@init{#1}}% - \Pc@scanlength -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Pc@scanlength} -% |#1|: number of length parameter or zero -% \begin{macrocode} -\def\Pc@scanlength#1{% - \ifcase#1 % - \expandafter\Pc@last - \else - \toks1=\expandafter{\the\toks1 ###1}% - \toks2=\expandafter{\the\toks2 \Pc@tokslength{###1}}% - \expandafter\Pc@scannext - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Pc@scannext} -% \begin{macrocode} -\def\Pc@scannext#1&{% - \ifx\\#1\\% - \else - \toks1=\expandafter{\the\toks1 #1}% - \toks2=\expandafter{\the\toks2 \Pc@addtoks{#1}}% - \fi - \Pc@scanlength -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\Pc@last} -% \begin{macrocode} -\def\Pc@last{% - \edef\x{% - \endgroup - \let\reserved@a\the\toks0 % - \def\the\toks0 \the\toks1 {% - \the\toks2 % - \noexpand\Pc@finish\reserved@a - }% - }% - \x -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{\LaTeX\ base macros} -% -% \begin{macrocode} -\picture@redefine\@picture{(&1,&2)(&3,&4)} -\picture@redefine\put{(&1,&2)} -\picture@redefine\multiput{(&1,&2)} -\picture@redefine\@multiput{(&1,&2)} -\picture@redefine\line{(#1,#2)&3} -\picture@redefine\vector{(#1,#2)&3} -\picture@redefine\dashbox{&1(&2,&3)} -\picture@redefine\@circle{&1} -\picture@redefine\@dot{&1} -\picture@redefine\@bezier{#1(&2,&3)(&4,&5)(&6,&7)} -\picture@redefine\@imakepicbox{(&1,&2)} -% \end{macrocode} -% -% \subsubsection{Package \xpackage{pspicture}} -% -% Package \xpackage{pspicture} changes the signature of \cs{@oval} -% by adding an optional argument. -% \begin{macrocode} -\@ifpackageloaded{pspicture}{% - \picture@redefine\@oval{[&1](&2,&3)}% - \picture@redefine\Line{(&1,&2)}% - \picture@redefine\Curve{(&1,&2)}% - \picture@redefine\Vector{(&1,&2)}% -}{% - \picture@redefine\@oval{(&1,&2)}% -} -% \end{macrocode} -% -% \subsection{Check package loading order} -% -% \begin{macro}{\PC@checkpackage} -% \begin{macrocode} -\def\Pc@checkpackage#1{% - \@ifpackageloaded{#1}{% - }{% - \AtBeginDocument{% - \@ifpackageloaded{#1}{% - \PackageWarningNoLine{picture}{% - Package `#1' is loaded after `picture'.\MessageBreak - Load package `picture' afterwards to get full support% - \MessageBreak - of its additional syntax with length specifications% - }% - }{}% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\Pc@checkpackage{pict2e} -\Pc@checkpackage{pspicture} -% \end{macrocode} -% -% \begin{macrocode} -% -% \end{macrocode} -% -% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{picture}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/picture.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/picture.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 picture.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@{}} -% picture.sty & tex/latex/oberdiek/picture.sty\\ -% picture.pdf & doc/latex/oberdiek/picture.pdf\\ -% picture-example.tex & doc/latex/oberdiek/picture-example.tex\\ -% picture.dtx & source/latex/oberdiek/picture.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{picture.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 picture.dtx -%makeindex -s gind.ist picture.idx -%pdflatex picture.dtx -%makeindex -s gind.ist picture.idx -%pdflatex picture.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{History} -% \begin{Version}{2006/08/26 v1.0} -% \item -% First released version. (First start of the project was June/July 2002.) -% \end{Version} -% \begin{Version}{2007/04/11 v1.1} -% \item -% Line ends sanitized. -% \end{Version} -% \begin{Version}{2008/11/26 v1.2} -% \item -% Package \xpackage{pict2e} added to documentation section ``Supported -% packages''. -% \item -% Package order of supported packages is checked. -% \end{Version} -% \begin{Version}{2009/10/11 v1.3} -% \item -% Fix because of new version v4.3 of package \xpackage{calc}. -% \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/protecteddef.pdf b/macros/latex/contrib/oberdiek/protecteddef.pdf index a595477f2c..64cbbdcc0c 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.pdf b/macros/latex/contrib/oberdiek/refcount.pdf index 3f8b3f4aae..d2e118959e 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/resizegather.dtx b/macros/latex/contrib/oberdiek/resizegather.dtx index 596446de2c..4a07864917 100644 --- a/macros/latex/contrib/oberdiek/resizegather.dtx +++ b/macros/latex/contrib/oberdiek/resizegather.dtx @@ -159,7 +159,7 @@ and the derived files [2016/05/16 v1.3 Resize overly large equations (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2011/11/22] -\usepackage{ifluatex} +\usepackage{iftex}[2019/11/07] \ifluatex \else \usepackage[T1]{fontenc}% diff --git a/macros/latex/contrib/oberdiek/resizegather.pdf b/macros/latex/contrib/oberdiek/resizegather.pdf index 3ebed4c784..140e92db20 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.pdf b/macros/latex/contrib/oberdiek/rotchiffre.pdf index d80769cadb..6797d5b214 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.pdf b/macros/latex/contrib/oberdiek/scrindex.pdf index 85f1f5ce4f..b25becaf6e 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 deleted file mode 100644 index 97fc336c3c..0000000000 --- a/macros/latex/contrib/oberdiek/selinput.dtx +++ /dev/null @@ -1,853 +0,0 @@ -% \iffalse meta-comment -% -% File: selinput.dtx -% Version: 2016/05/17 v1.4 -% Info: Semi-automatic input encoding detection -% -% Copyright (C) -% 2007 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 selinput.dtx -% and the derived files -% selinput.sty, selinput.pdf, selinput.ins, selinput.drv, -% selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, -% selinput-test4.tex, selinput-test5.tex. -% -% Distribution: -% CTAN:macros/latex/contrib/oberdiek/selinput.dtx -% CTAN:macros/latex/contrib/oberdiek/selinput.pdf -% -% Unpacking: -% (a) If selinput.ins is present: -% tex selinput.ins -% (b) Without selinput.ins: -% tex selinput.dtx -% (c) If you insist on using LaTeX -% latex \let\install=y\input{selinput.dtx} -% (quote the arguments according to the demands of your shell) -% -% Documentation: -% (a) If selinput.drv is present: -% latex selinput.drv -% (b) Without selinput.drv: -% latex selinput.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 selinput.dtx -% makeindex -s gind.ist selinput.idx -% pdflatex selinput.dtx -% makeindex -s gind.ist selinput.idx -% pdflatex selinput.dtx -% -% Installation: -% TDS:tex/latex/oberdiek/selinput.sty -% TDS:doc/latex/oberdiek/selinput.pdf -% TDS:source/latex/oberdiek/selinput.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: selinput 2016/05/17 v1.4 Semi-automatic input encoding detection (HO)} -\Msg{************************************************************************} - -\keepsilent -\askforoverwritefalse - -\let\MetaPrefix\relax -\preamble - -This is a generated file. - -Project: selinput -Version: 2016/05/17 v1.4 - -Copyright (C) - 2007 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 selinput.dtx -and the derived files - selinput.sty, selinput.pdf, selinput.ins, selinput.drv, - selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, - selinput-test4.tex, selinput-test5.tex. - -\endpreamble -\let\MetaPrefix\DoubleperCent - -\generate{% - \file{selinput.ins}{\from{selinput.dtx}{install}}% - \file{selinput.drv}{\from{selinput.dtx}{driver}}% - \usedir{tex/latex/oberdiek}% - \file{selinput.sty}{\from{selinput.dtx}{package}}% -% \usedir{doc/latex/oberdiek/test}% -% \file{selinput-test1.tex}{\from{selinput.dtx}{test,test1}}% -% \file{selinput-test2.tex}{\from{selinput.dtx}{test,test2}}% -% \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}}% -} - -\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{* selinput.sty} -\Msg{*} -\Msg{* To produce the documentation run the file `selinput.drv'} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing!} -\Msg{*} -\Msg{************************************************************************} - -\endbatchfile -% -%<*ignore> -\fi -% -%<*driver> -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{selinput.drv}% - [2016/05/17 v1.4 Semi-automatic input encoding detection (HO)]% -\documentclass{ltxdoc} -\ifx\Umathcode\undefined -\usepackage[T1]{fontenc} -\fi -\usepackage{textcomp} -\usepackage{lmodern} -\usepackage{holtxdoc}[2011/11/22] -\usepackage{color} -\begin{document} - \DocInput{selinput.dtx}% -\end{document} -% -% \fi -% -% -% -% \GetFileInfo{selinput.drv} -% -% \title{The \xpackage{selinput} package} -% \date{2016/05/17 v1.4} -% \author{Heiko Oberdiek\thanks -% {Please report any issues at \url{https://github.com/ho-tex/oberdiek/issues}}} -% -% \maketitle -% -% \begin{abstract} -% This package selects the input encoding by specifying between -% input characters and their glyph names. -% \end{abstract} -% -% \tableofcontents -% -% \newcommand*{\EM}{\textcolor{blue}} -% \newcommand*{\ExampleText}{^^A -% Umlauts:\ \EM{\"A\"O\"U\"a\"o\"u\ss}^^A -% } -% -% \section{Documentation} -% -% \subsection{Introduction} -% -% \LaTeX\ supports the direct use of 8-bit characters by means -% of package \xpackage{inputenc}. However you must know -% and specify the encoding, e.g.: -% \begin{quote} -% \ttfamily -% |\documentclass{article}|\\ -% |\usepackage[|\EM{latin1}|]{inputenc}|\\ -% |% or \usepackage[|\EM{utf8}|]{inputenc}|\\ -% |% or \usepackage[|\EM{??}|]{inputenc}|\\ -% |\begin{document}|\\ -% | |\ExampleText\\ -% |\end{document}| -% \end{quote} -% -% If the document is transferred in an environment that -% uses a different encoding, then there are programs that -% convert the input characters. Examples for conversion -% of file \xfile{test.tex} -% from encoding latin1 (ISO-8859-1) to UTF-8: -% \begin{quote} -% \ttfamily -% |recode ISO-8859-1..UTF-8 test.tex|\\ -% |recode latin1..utf8 test.tex|\\ -% |iconv --from-code ISO-8859-1|\\ -% \hphantom{iconv}| --to-code UTF-8|\\ -% \hphantom{iconv}| --output testnew.tex|\\ -% \hphantom{iconv}| test.tex|\\ -% |iconv -f latin1 -t utf8 -o testnew.tex test.tex| -% \end{quote} -% However, the encoding name for package \xpackage{inputenc} -% must be changed: -% \begin{quote} -% |\usepackage[latin1]{inputenc}| $\rightarrow$ -% |\usepackage[utf8]{inputenc}|\kern-4pt\relax -% \end{quote} -% Of course, unless you are using some clever editor -% that knows package \xpackage{inputenc}, recodes -% the file and adjusts the option at the same time. -% But most editors can perhaps recode the file, but -% they let the option untouched. -% -% Therefore package \xpackage{selinput} chooses another way for -% specifying the input encoding. The encoding name is not needed -% at all. Some 8-bit characters are identified by their glyph -% name and the package chooses an appropriate encoding, example: -% \begin{quote} -% \ttfamily -% |\documentclass{article}|\\ -% |\usepackage{selinput}|\\ -% |\SelectInputMappings{|\\ -% | adieresis={|\EM{\"a}|}|,\\ -% | germandbls={|\EM{\ss}|}|,\\ -% | Euro={|\EM{\texteuro}|}|,\\ -% |}|\\ -% |\begin{document}|\\ -% | |\ExampleText\\ -% |\end{document}| -% \end{quote} -% -% \subsection{User interface} -% -% \begin{declcs}{SelectInputEncodingList} \M{encoding list} -% \end{declcs} -% \cs{SelectInputEncodingList} expects a comma separated list of -% encoding names. Example: -% \begin{quote} -% |\SelectInputEncodingList{utf8,ansinew,mac-roman}| -% \end{quote} -% The encodings of package \xpackage{inputenx} are used as default. -% -% \begin{declcs}{SelectInputMappings} \M{mapping pairs} -% \end{declcs} -% A mapping pair consists of a glyph name and its input -% character: -% \begin{quote} -% |\SelectInputMappings{|\\ -% | adieresis={|\EM{\"a}|}|,\\ -% | germandbls={|\EM{\ss}|}|,\\ -% | Euro={|\EM{\texteuro}|}|,\\ -% |}| -% \end{quote} -% The supported glyph names can be found in file \xfile{ix-name.def} -% of project \xpackage{inputenx} \cite{inputenx}. The names are -% basically taken from Adobe's glyphlists \cite{adobe:glyphlist,adobe:aglfn}. -% As many pairs are needed as necessary to identify the encoding. -% Example with insufficient pairs: -% \begin{quote} -% \ttfamily -% |\SelectInputEncodingSet{latin1,latin9}|\\ -% |\SelectInputMappings{|\\ -% | adieresis={|\EM{\"a}|}|,\\ -% | germandbls={|\EM{\ss}|}|,\\ -% |}|\\ -% \ExampleText| and Euro: |\EM{\textcurrency} (wrong) -% \end{quote} -% The first encoding \xoption{latin1} passes the constraints given -% by the mapping pairs. However the Euro symbol is not part of -% the encoding. Thus a mapping pair with the Euro symbol -% solves the problem. In fact the symbol alone already succeeds in selecting -% between \xoption{latin1} and \xoption{latin9}: -% \begin{quote} -% \ttfamily -% |\SelectInputEncodingSet{latin1,latin9}|\\ -% |\SelectInputMappings{|\\ -% | Euro={|\EM{\texteuro}|},|\\ -% |}|\\ -% \ExampleText| and Euro: |\EM{\texteuro} -% \end{quote} -% -% \subsection{Options} -% -% \begin{description} -% \item[\xoption{warning}:] -% The selected encoding is written -% by \cs{PackageInfo} into the \xfile{.log} file only. -% Option \xoption{warning} changes it to \cs{PackageWarning}. -% Then the selected encoding is shown on the terminal as well. -% \item[\xoption{ucs}:] -% The encoding file \xfile{utf8x} of package \cs{ucs} requires -% that the package itself is loaded before. -% If the package is not loaded, then the option \xoption{ucs} -% will load package \xpackage{ucs} if the detected encoding is -% UTF-8 (limited to the preamble, packages cannot be loaded later). -% \item[\xoption{utf8=\dots}:] -% The option allows to specify other encoding files -% for UTF-8 than \LaTeX's \xfile{utf8.def}. For example, -% |utf8=utf-8| will load \xfile{utf-8.def} instead. -% \end{description} -% -% \subsection{Encodings} -% -% Package \xpackage{stringenc} \cite{stringenc} -% is used for testing the encoding. Thus the encoding -% name must be known by this package. Then the found -% encoding is loaded by \cs{inputencoding} by package -% \xpackage{inputenc} or \cs{InputEncoding} if package -% \xpackage{inputenx} is loaded. -% -% The supported encodings are present in the encoding list, -% thus usually the encoding names do not matter. -% If the list is set by \cs{SelectInputEncodingList}, -% then you can use the names that work for package -% \xpackage{inputenc} and are known by package \xpackage{stringenc}, -% for example: \xoption{latin1}, \xoption{x-iso-8859-1}. Encoding -% file names of package \xpackage{inputenx} are prefixed with \xfile{x-}. -% The prefix can be dropped, if package \xpackage{inputenx} is loaded. -% -% \StopEventually{ -% } -% -% \section{Implementation} -% -% \begin{macrocode} -%<*package> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{selinput} - [2016/05/17 v1.4 Semi-automatic input encoding detection (HO)]% -% \end{macrocode} -% -% \begin{macrocode} -\RequirePackage{inputenc} -\RequirePackage{kvsetkeys}[2006/10/19] -\RequirePackage{stringenc}[2007/06/16] -\RequirePackage{kvoptions} -% \end{macrocode} -% \begin{macro}{\SelectInputEncodingList} -% \begin{macrocode} -\newcommand*{\SelectInputEncodingList}{% - \let\SIE@EncodingList\@empty - \kvsetkeys{SelInputEnc}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SelectInputMappings} -% \begin{macrocode} -\newcommand*{\SelectInputMappings}[1]{% - \SIE@LoadNameDefs - \let\SIE@StringUnicode\@empty - \let\SIE@StringDest\@empty - \kvsetkeys{SelInputMap}{#1}% - \ifx\\SIE@StringUnicode\SIE@StringDest\\% - \PackageError{selinput}{% - No mappings specified% - }\@ehc - \else - \EdefUnescapeHex\SIE@StringUnicode\SIE@StringUnicode - \let\SIE@Encoding\@empty - \@for\SIE@EncodingTest:=\SIE@EncodingList\do{% - \ifx\SIE@Encoding\@empty - \StringEncodingConvertTest\SIE@temp\SIE@StringUnicode - {utf16be}\SIE@EncodingTest{% - \ifx\SIE@temp\SIE@StringDest - \let\SIE@Encoding\SIE@EncodingTest - \fi - }{}% - \fi - }% - \ifx\SIE@Encoding\@empty - \StringEncodingConvertTest\SIE@temp\SIE@StringDest - {ascii}{utf16be}{% - \def\SIE@Encoding{ascii}% - \SIE@Info{selinput}{% - Matching encoding not found, but input characters% - \MessageBreak - are 7-bit (possibly editor replacements).% - \MessageBreak - Hence using ascii encoding% - }% - }{}% - \fi - \ifx\SIE@Encoding\@empty - \PackageError{selinput}{% - Cannot find a matching encoding% - }\@ehd - \else - \ifx\SIE@Encoding\SIE@EncodingUTFviii - \SIE@LoadUnicodePackage - \ifx\SIE@UseUTFviii\@empty - \else - \let\SIE@Encoding\SIE@UseUTFviii - \fi - \fi - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname InputEncoding\endcsname\relax - \inputencoding\SIE@Encoding - \else - \InputEncoding\SIE@Encoding - \fi - \SIE@Info{selinput}{Encoding `\SIE@Encoding' selected}% - \fi - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SIE@LoadNameDefs} -% \begin{macrocode} -\def\SIE@LoadNameDefs{% - \begingroup - \endlinechar=\m@ne - \catcode92=0 % backslash - \catcode123=1 % left curly brace/beginning of group - \catcode125=2 % right curly brace/end of group - \catcode37=14 % percent/comment character - \@makeother\[% - \@makeother\]% - \@makeother\.% - \@makeother\(% - \@makeother\)% - \@makeother\/% - \@makeother\-% - \let\InputenxName\SelectInputDefineMapping - \InputIfFileExists{ix-name.def}{}{% - \PackageError{selinput}{% - Missing `ix-name.def' (part of package `inputenx')% - }\@ehd - }% - \global\let\SIE@LoadNameDefs\relax - \endgroup -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SelectInputDefineMapping} -% \begin{macrocode} -\newcommand*{\SelectInputDefineMapping}[1]{% - \expandafter\gdef\csname SIE@@#1\endcsname -} -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\kv@set@family@handler{SelInputMap}{% - \@onelevel@sanitize\kv@key - \ifx\kv@value\relax - \PackageError{selinput}{% - Missing input character for `\kv@key'% - }\@ehc - \else - \@onelevel@sanitize\kv@value - \ifx\kv@value\@empty - \PackageError{selinput}{% - Input character got lost?\MessageBreak - Missing input character for `\kv@key'% - }\@ehc - \else - \@ifundefined{SIE@@\kv@key}{% - \PackageWarning{selinput}{% - Missing definition for `\kv@key'% - }% - }{% - \edef\SIE@StringDest{% - \SIE@StringDest - \kv@value - }% - \edef\SIE@StringUnicode{% - \SIE@StringUnicode - \csname SIE@@\kv@key\endcsname - }% - }% - \fi - \fi -} -% \end{macrocode} -% \begin{macrocode} -\kv@set@family@handler{SelInputEnc}{% - \@onelevel@sanitize\kv@key - \ifx\kv@value\relax - \ifx\SIE@EncodingList\@empty - \let\SIE@EncodingList\kv@key - \else - \edef\SIE@EncodingList{\SIE@EncodingList,\kv@key}% - \fi - \else - \@onelevel@sanitize\kv@value - \PackageError{selinput}{% - Illegal key value pair (\kv@key=\kv@value)\MessagBreak - in encoding list% - }\@ehc - \fi -} -% \end{macrocode} -% -% \begin{macro}{\SIE@LoadUnicodePackage} -% \begin{macrocode} -\def\SIE@LoadUnicodePackage{% - \@ifpackageloaded\SIE@UnicodePackage{}{% - \RequirePackage\SIE@UnicodePackage\relax - }% - \SIE@PatchUCS - \global\let\SIE@LoadUnicodePackage\relax -} -\let\SIE@show\show -\def\SIE@PatchUCS{% - \AtBeginDocument{% - \expandafter\ifx\csname ver@ucsencs.def\endcsname\relax - \else - \let\show\SIE@show - \fi - }% -} -\SIE@PatchUCS -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\AtBeginDocument{% - \let\SIE@LoadUnicodePackage\relax -} -% \end{macrocode} -% \begin{macro}{\SIE@EncodingUTFviii} -% \begin{macrocode} -\def\SIE@EncodingUTFviii{utf8} -\@onelevel@sanitize\SIE@EncodingUTFviii -% \end{macrocode} -% \end{macro} -% \begin{macro}{\SIE@EncodingUTFviiix} -% \begin{macrocode} -\def\SIE@EncodingUTFviiix{utf8x} -\@onelevel@sanitize\SIE@EncodingUTFviiix -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -\let\SIE@UnicodePackage\@empty -\let\SIE@UseUTFviii\@empty -\let\SIE@Info\PackageInfo -% \end{macrocode} -% \begin{macrocode} -\SetupKeyvalOptions{% - family=SelInput,% - prefix=SelInput@% -} -\define@key{SelInput}{utf8}{% - \def\SIE@UseUTFviii{#1}% - \@onelevel@sanitize\SIE@UseUTFviii -} -\DeclareBoolOption{ucs} -\DeclareVoidOption{warning}{% - \let\SIE@Info\PackageWarning -} -\ProcessKeyvalOptions{SelInput} -\ifSelInput@ucs - \def\SIE@UnicodePackage{ucs}% - \ifx\SIE@UseUTFviii\@empty - \let\SIE@UseUTFviii\SIE@EncodingUTFviiix - \fi -\else - \ifx\SIE@UseUTFviii\@empty - \@ifpackageloaded{ucs}{% - \let\SIE@UseUTFviii\SIE@EncodingUTFviiix - }{% - \let\SIE@UseUTFviii\SIE@EncodingUTFviii - }% - \fi -\fi -% \end{macrocode} -% -% \begin{macro}{\SIE@EncodingList} -% \begin{macrocode} -\edef\SIE@EncodingList{% - utf8,% - x-iso-8859-1,% - x-iso-8859-15,% - x-cp1252,% ansinew - x-mac-roman,% - x-iso-8859-2,% - x-iso-8859-3,% - x-iso-8859-4,% - x-iso-8859-5,% - x-iso-8859-6,% - x-iso-8859-7,% - x-iso-8859-8,% - x-iso-8859-9,% - x-iso-8859-10,% - x-iso-8859-11,% - x-iso-8859-13,% - x-iso-8859-14,% - x-iso-8859-15,% - x-mac-centeuro,% - x-mac-cyrillic,% - x-koi8-r,% - x-cp1250,% - x-cp1251,% - x-cp1257,% - x-cp437,% - x-cp850,% - x-cp852,% - x-cp855,% - x-cp858,% - x-cp865,% - x-cp866,% - x-nextstep,% - x-dec-mcs% -}% -\@onelevel@sanitize\SIE@EncodingList -% \end{macrocode} -% \end{macro} -% -% \begin{macrocode} -% -% \end{macrocode} -%% \section{Installation} -% -% \subsection{Download} -% -% \paragraph{Package.} This package is available on -% CTAN\footnote{\CTANpkg{selinput}}: -% \begin{description} -% \item[\CTAN{macros/latex/contrib/oberdiek/selinput.dtx}] The source file. -% \item[\CTAN{macros/latex/contrib/oberdiek/selinput.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 selinput.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@{}} -% selinput.sty & tex/latex/oberdiek/selinput.sty\\ -% selinput.pdf & doc/latex/oberdiek/selinput.pdf\\ -% selinput.dtx & source/latex/oberdiek/selinput.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{selinput.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 selinput.dtx -%makeindex -s gind.ist selinput.idx -%pdflatex selinput.dtx -%makeindex -s gind.ist selinput.idx -%pdflatex selinput.dtx -%\end{verbatim} -% \end{quote} -% -% \begin{thebibliography}{9} -% \bibitem{inputenx} -% Heiko Oberdiek: \textit{The \xpackage{inputenx} package}; -% 2007-04-11 v1.1; -% \CTANpkg{inputenx}. -% -% \bibitem{adobe:glyphlist} -% Adobe: \textit{Adobe Glyph List}; -% 2002-09-20 v2.0; -% \url{https://github.com/adobe-type-tools/agl-aglfn/blob/master/glyphlist.txt}. -% -% \bibitem{adobe:aglfn} -% Adobe: \textit{Adobe Glyph List For New Fonts}; -% 2005-11-18 v1.5; -% \url{https://github.com/adobe-type-tools/agl-aglfn/blob/master/aglfn.txt}. -% -% \bibitem{stringenc} -% Heiko Oberdiek: \textit{The \xpackage{stringenc} package}; -% 2007-06-16 v1.1; -% \CTANpkg{stringenc}. -% -% \end{thebibliography} -% -% \begin{History} -% \begin{Version}{2007/06/16 v1.0} -% \item -% First version. -% \end{Version} -% \begin{Version}{2007/06/20 v1.1} -% \item -% Requested date for package \xpackage{stringenc} fixed. -% \end{Version} -% \begin{Version}{2007/09/09 v1.2} -% \item -% Line end fixed. -% \end{Version} -% \begin{Version}{2016/05/16 v1.3} -% \item -% Documentation updates. -% \end{Version} -% \begin{Version}{2016/05/17 v1.4} -% \item -% Documentation updates: Avoid T1 encoding with Unicode \TeX. -% \end{Version} -% \end{History} -% -% \PrintIndex -% -% \Finale -\endinput diff --git a/macros/latex/contrib/oberdiek/setouterhbox.pdf b/macros/latex/contrib/oberdiek/setouterhbox.pdf index 12415ccf1c..0470b00a37 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.pdf b/macros/latex/contrib/oberdiek/settobox.pdf index 902aa99eee..117a435aa4 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.pdf b/macros/latex/contrib/oberdiek/soulutf8.pdf index 8eda2ea6bd..05b4fef252 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.pdf b/macros/latex/contrib/oberdiek/stackrel.pdf index c35d4499d3..88e47f65e6 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.pdf b/macros/latex/contrib/oberdiek/stampinclude.pdf index 5a657155a0..c3954d3d8e 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.pdf b/macros/latex/contrib/oberdiek/tabularht.pdf index 3e22dfc27c..212e19eaea 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.pdf b/macros/latex/contrib/oberdiek/tabularkv.pdf index a51f2c8af3..99ffc78cd9 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.pdf b/macros/latex/contrib/oberdiek/telprint.pdf index 02fdbe6584..a603248f11 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.pdf b/macros/latex/contrib/oberdiek/thepdfnumber.pdf index 328d5b543b..72c69e0657 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.pdf b/macros/latex/contrib/oberdiek/twoopt.pdf index b339767c13..55d9590d35 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.pdf b/macros/latex/contrib/oberdiek/uniquecounter.pdf index e8e07a91ca..722768852b 100644 Binary files a/macros/latex/contrib/oberdiek/uniquecounter.pdf and b/macros/latex/contrib/oberdiek/uniquecounter.pdf differ diff --git a/macros/latex/contrib/pdfescape/README.md b/macros/latex/contrib/pdfescape/README.md new file mode 100644 index 0000000000..7d2bbf5562 --- /dev/null +++ b/macros/latex/contrib/pdfescape/README.md @@ -0,0 +1,10 @@ +# pdfescape + +pdfescape package for LaTeX + + + +This package implements \pdfTeX's escape features +(\pdfescapehex, \pdfunescapehex, \pdfescapename, +\pdfescapestring) using TeX or eTeX. + diff --git a/macros/latex/contrib/pdfescape/pdfescape.dtx b/macros/latex/contrib/pdfescape/pdfescape.dtx new file mode 100644 index 0000000000..6666689d95 --- /dev/null +++ b/macros/latex/contrib/pdfescape/pdfescape.dtx @@ -0,0 +1,1530 @@ +% \iffalse meta-comment +% +% File: pdfescape.dtx +% Version: 2019/12/09 v1.15 +% Info: Implements pdfTeX's escape features +% +% Copyright (C) +% 2007, 2010, 2011 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/pdfescape/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/pdfescape/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 pdfescape.dtx +% and the derived files +% pdfescape.sty, pdfescape.pdf, pdfescape.ins, pdfescape.drv, +% pdfescape-test1.tex, pdfescape-test2.tex, +% pdfescape-test3.tex, pdfescape-test4.tex, +% pdfescape-test5.tex, pdfescape-test6.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/pdfescape/pdfescape.dtx +% CTAN:macros/latex/contrib/pdfescape/pdfescape.pdf +% +% Unpacking: +% (a) If pdfescape.ins is present: +% tex pdfescape.ins +% (b) Without pdfescape.ins: +% tex pdfescape.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{pdfescape.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If pdfescape.drv is present: +% latex pdfescape.drv +% (b) Without pdfescape.drv: +% latex pdfescape.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 pdfescape.dtx +% makeindex -s gind.ist pdfescape.idx +% pdflatex pdfescape.dtx +% makeindex -s gind.ist pdfescape.idx +% pdflatex pdfescape.dtx +% +% Installation: +% TDS:tex/generic/pdfescape/pdfescape.sty +% TDS:doc/latex/pdfescape/pdfescape.pdf +% TDS:source/latex/pdfescape/pdfescape.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: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: pdfescape +Version: 2019/12/09 v1.15 + +Copyright (C) + 2007, 2010, 2011 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/pdfescape/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 pdfescape.dtx +and the derived files + pdfescape.sty, pdfescape.pdf, pdfescape.ins, pdfescape.drv, + pdfescape-test1.tex, pdfescape-test2.tex, + pdfescape-test3.tex, pdfescape-test4.tex, + pdfescape-test5.tex, pdfescape-test6.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{pdfescape.ins}{\from{pdfescape.dtx}{install}}% + \file{pdfescape.drv}{\from{pdfescape.dtx}{driver}}% + \usedir{tex/generic/pdfescape}% + \file{pdfescape.sty}{\from{pdfescape.dtx}{package}}% +} + +\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{* pdfescape.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `pdfescape.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{pdfescape.drv}% + [2019/12/09 v1.15 Implements pdfTeX's escape features (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{pdfescape.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{pdfescape.drv} +% +% \title{The \xpackage{pdfescape} package} +% \date{2019/12/09 v1.15} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/pdfescape/issues}}} +% +% \maketitle +% +% \begin{abstract} +% This package implements \pdfTeX's escape features +% (\cs{pdfescapehex}, \cs{pdfunescapehex}, \cs{pdfescapename}, +% \cs{pdfescapestring}) using \TeX\ or \eTeX. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \begin{declcs}{EdefEscapeHex} \M{cmd} \M{string}\\ +% \cs{EdefUnescapeHex} \M{cmd} \M{string}\\ +% \cs{EdefEscapeName} \M{cmd} \M{string}\\ +% \cs{EdefEscapeString} \M{cmd} \M{string} +% \end{declcs} +% These commands converts \meta{string} and stores the result +% in macro \meta{cmd}. The conversion result is the same +% as the conversion of the corresponding \pdfTeX's primitives. +% Note that the argument \meta{string} is expanded before +% the conversion. +% +% For example, if \pdfTeX\ \textgreater= 1.30 is present, +% then \cs{EdefEscapeHex} +% becomes to: +% \begin{quote} +%\begin{verbatim} +%\def\EdefEscapeHex#1#2{% +% \edef#1{\pdfescapehex{#2}}% +%} +%\end{verbatim} +% \end{quote} +% The package provides implementations for the case that \pdfTeX\ is +% not present (or too old). Even \eTeX\ can be missing, however it is +% used if it is detected. +% +% \paragraph{Babel.} +% The input strings may contain shorthand characters of package +% \xpackage{babel}. +% +% \subsection{Additional unescape macros} +% +% \begin{declcs}{EdefUnescapeName} \M{cmd} \M{string} +% \end{declcs} +% Sequences of a hash sign with two hexadecimal digits are +% converted to the corresponding character (PDF-1.2). +% A hash sign that is not followed by two hexadecimal digits +% is left unchanged. The catcodes in the result string follow +% TeX's conventions. The space has catcode 10 (space) and +% the other characters have catcode 12 (other). +% +% \begin{declcs}{EdefUnescapeString} \M{cmd} \M{string} +% \end{declcs} +% Macro \meta{cmd} stores the unescaped string in \meta{string}. +% All the rules for literal strings are implemented, see +% PDF specification. +% The catcodes in the result string follow TeX's conventions. +% +% \subsection{Sanitizing macro} +% +% \begin{declcs}{EdefSanitize} \M{cmd} \M{string} +% \end{declcs} +% Argument \meta{string} is expanded, converted to a string +% of tokens with catcode 12 (other) and space tokens, and +% stored in macro \meta{cmd}. +% +% \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@pdfescape.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{pdfescape}{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@pdfescape.sty\endcsname +\ProvidesPackage{pdfescape}% + [2019/12/09 v1.15 Implements pdfTeX's escape features (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 PE@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#3{% + \edef\PE@AtEnd{% + \PE@AtEnd + #1#2=\the#1#2\relax + }% + #1#2=#3\relax +} +\TMP@EnsureCode\catcode{0}{12}% ^^@ +\TMP@EnsureCode\catcode{34}{12}% " +\TMP@EnsureCode\catcode{36}{3}% $ +\TMP@EnsureCode\catcode{38}{4}% & +\TMP@EnsureCode\catcode{39}{12}% ' +\TMP@EnsureCode\catcode{42}{12}% * +\TMP@EnsureCode\catcode{45}{12}% - +\TMP@EnsureCode\catcode{46}{12}% . +\TMP@EnsureCode\catcode{47}{12}% / +\TMP@EnsureCode\catcode{60}{12}% < +\TMP@EnsureCode\catcode{62}{12}% > +\TMP@EnsureCode\catcode{91}{12}% [ +\TMP@EnsureCode\catcode{93}{12}% ] +\TMP@EnsureCode\catcode{94}{7}% ^ +\TMP@EnsureCode\catcode{96}{12}% ` +\TMP@EnsureCode\uccode{34}{0}% " +\TMP@EnsureCode\uccode{48}{0}% 0 +\TMP@EnsureCode\uccode{61}{0}% = +\edef\PE@AtEnd{\PE@AtEnd\noexpand\endinput} +% \end{macrocode} +% +% \subsection{Load package} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \def\TMP@RequirePackage#1[#2]{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname ver@#1.sty\endcsname\relax + \input #1.sty\relax + \fi + }% + \TMP@RequirePackage{ltxcmds}[2010/04/08]% +\else + \RequirePackage{ltxcmds}[2010/04/08]% +\fi +% \end{macrocode} +% +% \subsection{Sanitizing} +% +% \begin{macro}{\EdefSanitize} +% Macro \cs{EdefSanitize} takes |#2|, entirely converts +% it to token with catcode 12 (other) and stores the +% result in macro |#1|. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname detokenize\endcsname\relax + \long\def\EdefSanitize#1#2{% + \begingroup + \csname @safe@activestrue\endcsname + \edef#1{#2}% + \PE@onelevel@sanitize#1% + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{#1}% + }% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname @onelevel@sanitize\endcsname\relax + \def\PE@onelevel@sanitize#1{% + \edef#1{\expandafter\PE@strip@prefix\meaning#1}% + }% + \def\PE@strip@prefix#1>{}% + \else + \let\PE@onelevel@sanitize\@onelevel@sanitize + \fi +\else + \long\def\EdefSanitize#1#2{% + \begingroup + \csname @safe@activestrue\endcsname + \edef#1{#2}% + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{% + \detokenize\expandafter{#1}% + }% + }% + \def\PE@onelevel@sanitize#1{% + \edef#1{\detokenize\expandafter{#1}}% + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@sanitize} +% Macro \cs{PE@sanitize} is only defined for +% compatibility with version 1.4. Its use is deprecated. +% \begin{macrocode} +\let\PE@sanitize\EdefSanitize +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Space characters} +% +% \begin{macro}{\PE@space@other} +% \begin{macrocode} +\begingroup + \catcode`\ =12\relax% +\def\x{\endgroup\def\PE@space@other{ }}\x\relax +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@space@space} +% \begin{macrocode} +\def\PE@space@space{ } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Space normalization} +% +% \begin{macro}{\PE@SanitizeSpaceOther} +% \begin{macrocode} +\def\PE@SanitizeSpaceOther#1{% + \edef#1{\expandafter\PE@SpaceToOther#1 \relax}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PE@SpaceToOther} +% \begin{macrocode} +\def\PE@SpaceToOther#1 #2\relax{% + #1% + \ifx\\#2\\% + \else + \PE@space@other + \ltx@ReturnAfterFi{% + \PE@SpaceToOther#2\relax + }% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{\cs{EdefUnescapeName}} +% +% \begin{macro}{\EdefUnescapeName} +% \begin{macrocode} +\def\EdefUnescapeName#1#2{% + \EdefSanitize#1{#2}% + \PE@SanitizeSpaceOther#1% + \PE@UnescapeName#1% + \PE@onelevel@sanitize#1% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PE@UnescapeName} +% \begin{macrocode} +\begingroup + \catcode`\$=6 % hash + \catcode`\#=12 % other + \gdef\PE@UnescapeName$1{% + \begingroup + \PE@InitUccodeHexDigit + \def\PE@result{}% + \expandafter\PE@DeName$1#\relax\relax + \expandafter\endgroup + \expandafter\def\expandafter$1\expandafter{\PE@result}% + }% + \gdef\PE@DeName$1#$2$3{% + \ifx\relax$2% + \edef\PE@result{\PE@result$1}% + \let\PE@next\relax + \else + \ifx\relax$3% + % wrong escape sequence in input + \edef\PE@result{\PE@result$1#}% + \let\PE@next\relax + \else + \uppercase{% + \def\PE@testA{$2}% + \def\PE@testB{$3}% + }% + \ifcase\ifcase\expandafter\PE@TestUcHexDigit\PE@testA + \ifcase\expandafter\PE@TestUcHexDigit\PE@testB + \ltx@zero + \else + \ltx@one + \fi + \else + \ltx@one + \fi + \uccode\ltx@zero="\PE@testA\PE@testB\relax + \uppercase{% + \def\PE@temp{^^@}% + }% + \uccode\ltx@zero=\ltx@zero + \edef\PE@result{\PE@result$1\PE@temp}% + \let\PE@next\PE@DeName + \else + % wrong escape sequence in input + \edef\PE@result{\PE@result$1#}% + \def\PE@next{\PE@DeName$2$3}% + \fi + \fi + \fi + \PE@next + }% +\endgroup +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PE@InitUccodeHexDigit} +% \begin{macrocode} +\def\PE@InitUccodeHexDigit{% + \uccode`a=`A\relax + \uccode`b=`B\relax + \uccode`c=`C\relax + \uccode`d=`D\relax + \uccode`e=`E\relax + \uccode`f=`F\relax + \uccode`A=\ltx@zero + \uccode`B=\ltx@zero + \uccode`C=\ltx@zero + \uccode`D=\ltx@zero + \uccode`E=\ltx@zero + \uccode`F=\ltx@zero + \uccode`0=\ltx@zero + \uccode`1=\ltx@zero + \uccode`2=\ltx@zero + \uccode`3=\ltx@zero + \uccode`4=\ltx@zero + \uccode`5=\ltx@zero + \uccode`6=\ltx@zero + \uccode`7=\ltx@zero + \uccode`8=\ltx@zero + \uccode`9=\ltx@zero +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PE@TestUcHexDigit} +% \begin{macrocode} +\def\PE@TestUcHexDigit#1{% + \ifnum`#1<48 % 0 + \ltx@one + \else + \ifnum`#1>70 % F + \ltx@one + \else + \ifnum`#1>57 % 9 + \ifnum`#1<65 % A + \ltx@one + \else + \ltx@zero + \fi + \else + \ltx@zero + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{\cs{EdefUnescapeString}} +% +% \begin{macro}{\EdefUnescapeString} +% \begin{macrocode} +\def\EdefUnescapeString#1#2{% + \EdefSanitize#1{#2}% + \PE@SanitizeSpaceOther#1% + \PE@NormalizeLineEnd#1% + \PE@UnescapeString#1% + \PE@onelevel@sanitize#1% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\begingroup + \uccode`\8=10 % lf + \uccode`\9=13 % cr +\def\x#1#2{\endgroup +% \end{macrocode} +% \begin{macro}{\PE@NormalizeLineEnd} +% \begin{macrocode} + \def\PE@NormalizeLineEnd##1{% + \def\PE@result{}% + \expandafter\PE@@NormalizeLineEnd##1#2\relax + \let##1\PE@result + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@@NormalizeLineEnd} +% \begin{macrocode} + \def\PE@@NormalizeLineEnd##1#2##2{% + \ifx\relax##2% + \edef\PE@result{\PE@result##1}% + \let\PE@next\relax + \else + \edef\PE@result{\PE@result##1#1}% + \ifx#1##2% lf + \let\PE@next\PE@@NormalizeLineEnd + \else + \def\PE@next{\PE@@NormalizeLineEnd##2}% + \fi + \fi + \PE@next + }% +}% +\uppercase{% + \x 89% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\begingroup + \catcode`\|=0 % + \catcode`\\=12 % +% \end{macrocode} +% \begin{macro}{\PE@UnescapeString} +% \begin{macrocode} + |gdef|PE@UnescapeString#1{% + |begingroup + |def|PE@result{}% + |expandafter|PE@DeString#1\|relax + |expandafter|endgroup + |expandafter|def|expandafter#1|expandafter{|PE@result}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@DeString} +% \begin{macrocode} + |gdef|PE@DeString#1\#2{% + |ifx|relax#2% + |edef|PE@result{|PE@result#1}% + |let|PE@next|relax + |else + |if n#2% + |uccode|ltx@zero=10 % + |else|if r#2% + |uccode|ltx@zero=13 % + |else|if t#2% + |uccode|ltx@zero=9 % + |else|if b#2% + |uccode|ltx@zero=8 % + |else|if f#2% + |uccode|ltx@zero=12 % + |else + |uccode|ltx@zero=|ltx@zero + |fi|fi|fi|fi|fi + |ifnum|uccode|ltx@zero>|ltx@zero + |uppercase{% + |edef|PE@temp{^^@}% + }% + |edef|PE@result{|PE@result#1|PE@temp}% + |let|PE@next|PE@DeString + |else + |if\#2% backslash + |edef|PE@result{|PE@result#1}% + |let|PE@next|PE@CheckEndBackslash + |else + |ifnum`#2=10 % linefeed + |edef|PE@result{|PE@result#1}% + |let|PE@next|PE@DeString + |else + |ifcase|PE@TestOctDigit#2% + |edef|PE@result{|PE@result#1}% + |def|PE@next{|PE@OctI#2}% + |else + |edef|PE@result{|PE@result#1#2}% + |let|PE@next|PE@DeString + |fi + |fi + |fi + |fi + |fi + |PE@next + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@CheckEndBackslash} +% \begin{macrocode} + |gdef|PE@CheckEndBackslash#1{% + |ifx|relax#1% + |else + |edef|PE@result{|PE@result\}% + |expandafter|PE@DeString|expandafter#1% + |fi + }% +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +|endgroup +% \end{macrocode} +% \begin{macro}{\PE@TestOctDigit} +% \begin{macrocode} +\def\PE@TestOctDigit#1{% + \ifnum`#1<48 % 0 + \ltx@one + \else + \ifnum`#1>55 % 7 + \ltx@one + \else + \ltx@zero + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@OctI} +% \begin{macrocode} +\def\PE@OctI#1#2{% + \ifcase\PE@TestOctDigit#2% + \def\PE@next{\PE@OctII{#1#2}}% + \else + \def\PE@next{\PE@OctAll#1#2}% + \fi + \PE@next +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@OctII} +% \begin{macrocode} +\def\PE@OctII#1#2{% + \ifcase\PE@TestOctDigit#2% + \def\PE@next{\PE@OctIII#1#2}% + \else + \def\PE@next{\PE@OctAll{#1}#2}% + \fi + \PE@next +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\ltx@IfUndefined{numexpr}{% + \catcode`\$=9 % + \catcode`\&=14 % +}{% + \catcode`\$=14 % + \catcode`\&=9 % +} +% \end{macrocode} +% \begin{macro}{\PE@OctIII} +% \begin{macrocode} +\def\PE@OctIII#1#2#3{% + \ifnum#1<4 % + \def\PE@next{\PE@OctAll{#1#2#3}}% + \else +$ \count\ltx@cclv#1 % +$ \advance\count\ltx@cclv -4 % + \edef\PE@next{% + \noexpand\PE@OctAll{% +$ \the\count\ltx@cclv +& \the\numexpr#1-4\relax + #2#3% + }% + }% + \fi + \PE@next +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@OctAll} +% \begin{macrocode} +\def\PE@OctAll#1{% + \uccode\ltx@zero='#1\relax + \uppercase{% + \edef\PE@result{\PE@result^^@}% + }% + \PE@DeString +} +% \end{macrocode} +% \end{macro} +% +% \subsection{User macros (\pdfTeX\space analogues)} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \def\TMP@RequirePackage#1[#2]{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname ver@#1.sty\endcsname\relax + \input #1.sty\relax + \fi + }% + \TMP@RequirePackage{pdftexcmds}[2007/11/11]% +\else + \RequirePackage{pdftexcmds}[2007/11/11]% +\fi +% \end{macrocode} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdf@escapehex\endcsname\relax +% \end{macrocode} +% +% \begin{macro}{\EdefEscapeHex} +% \begin{macrocode} + \long\def\EdefEscapeHex#1#2{% + \EdefSanitize#1{#2}% + \PE@SanitizeSpaceOther#1% + \PE@EscapeHex#1% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EdefUnescapeHex} +% \begin{macrocode} + \def\EdefUnescapeHex#1#2{% + \EdefSanitize#1{#2}% + \PE@UnescapeHex#1% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EdefEscapeName} +% \begin{macrocode} + \long\def\EdefEscapeName#1#2{% + \EdefSanitize#1{#2}% + \PE@SanitizeSpaceOther#1% + \PE@EscapeName#1% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EdefEscapeString} +% \begin{macrocode} + \long\def\EdefEscapeString#1#2{% + \EdefSanitize#1{#2}% + \PE@SanitizeSpaceOther#1% + \PE@EscapeString#1% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\else +% \end{macrocode} +% +% \begin{macro}{\PE@edefbabel} +% Help macro that adds support for \xpackage{babel}'s shorthand +% characters. +% \begin{macrocode} + \long\def\PE@edefbabel#1#2#3{% + \begingroup + \csname @save@activestrue\endcsname + \edef#1{#2{#3}}% + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{#1}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EdefEscapeHex} +% \begin{macrocode} + \long\def\EdefEscapeHex#1#2{% + \PE@edefbabel#1\pdf@escapehex{#2}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EdefUnescapeHex} +% \begin{macrocode} + \def\EdefUnescapeHex#1#2{% + \PE@edefbabel#1\pdf@unescapehex{#2}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EdefEscapeName} +% \begin{macrocode} + \long\def\EdefEscapeName#1#2{% + \PE@edefbabel#1\pdf@escapename{#2}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EdefEscapeString} +% \begin{macrocode} + \long\def\EdefEscapeString#1#2{% + \PE@edefbabel#1\pdf@escapestring{#2}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + \expandafter\PE@AtEnd +\fi% +% \end{macrocode} +% +% \subsection{Help macros} +% +% \subsubsection{Characters} +% +% Special characters with catcode 12 (other) are created and +% stored in macros. +% \begin{macro}{\PE@hash} +% \begin{macrocode} +\edef\PE@hash{\string#} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@backslash} +% \begin{macrocode} +\begingroup + \escapechar=-1 % +\edef\x{\endgroup + \def\noexpand\PE@backslash{\string\\}% +} +\x +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Switch for \eTeX} +% +% \begin{macrocode} +\ltx@newif\ifPE@etex +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname numexpr\endcsname\relax +\else + \PE@etextrue +\fi +% \end{macrocode} +% +% \subsection{Conversions} +% +% \subsubsection{Conversion to hex string} +% +% \begin{macro}{\PE@EscapeHex} +% \begin{macrocode} +\ifPE@etex + \def\PE@EscapeHex#1{% + \edef#1{\expandafter\PE@ToHex#1\relax}% + }% +\else + \def\PE@EscapeHex#1{% + \def\PE@result{}% + \expandafter\PE@ToHex#1\relax + \let#1\PE@result + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@ToHex} +% \begin{macrocode} +\def\PE@ToHex#1{% + \ifx\relax#1% + \else + \PE@HexChar{#1}% + \expandafter\PE@ToHex + \fi +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@HexChar} +% \begin{macrocode} +\ifPE@etex + \def\PE@HexChar#1{% + \PE@HexDigit{\numexpr\dimexpr.0625\dimexpr`#1sp\relax\relax\relax}% + \PE@HexDigit{% + \numexpr`#1-16*\dimexpr.0625\dimexpr`#1sp\relax\relax\relax + }% + }% +\else + \def\PE@HexChar#1{% + \dimen0=`#1sp% + \dimen2=.0625\dimen0 % + \advance\dimen0-16\dimen2 % + \edef\PE@result{% + \PE@result + \PE@HexDigit{\dimen2 }% + \PE@HexDigit{\dimen0 }% + }% + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@HexDigit} +% \begin{macrocode} +\def\PE@HexDigit#1{% + \expandafter\string + \ifcase#1% + 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or + A\or B\or C\or D\or E\or F% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Character code to octal number} +% +% \begin{macro}{\PE@OctChar} +% \begin{macrocode} +\ifPE@etex + \def\PE@OctChar#1{% + \expandafter\PE@@OctChar + \the\numexpr\dimexpr.015625\dimexpr`#1sp\relax\relax + \expandafter\relax + \expandafter\relax + \the\numexpr\dimexpr.125\dimexpr`#1sp\relax\relax\relax + \relax + #1% + }% + \def\PE@@OctChar#1\relax#2\relax#3{% + \PE@backslash + #1% + \the\numexpr#2-8*#1\relax + \the\numexpr\dimexpr`#3sp\relax-8*#2\relax + }% +\else + \def\PE@OctChar#1{% + \dimen0=`#1sp% + \dimen2=.125\dimen0 % + \dimen4=.125\dimen2 % + \advance\dimen0-8\dimen2 % + \advance\dimen2-8\dimen4 % + \edef\PE@result{% + \PE@result + \PE@backslash + \number\dimen4 % + \number\dimen2 % + \number\dimen0 % + }% + }% +\fi +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Unpack hex string} +% +% \begin{macro}{\PE@UnescapeHex} +% \begin{macrocode} +\def\PE@UnescapeHex#1{% + \begingroup + \PE@InitUccodeHexDigit + \def\PE@result{}% + \expandafter\PE@DeHex#1\relax\relax + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{\PE@result}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@DeHex} +% \begin{macrocode} +\def\PE@DeHex#1#2{% + \ifx#2\relax + \ifx#1\relax + \let\PE@next\relax + \else + \uppercase{% + \def\PE@testA{#1}% + }% + \ifcase\expandafter\PE@TestUcHexDigit\PE@testA + \def\PE@next{% + \PE@DeHex#10\relax\relax + }% + \else + \let\PE@next\relax + \fi + \fi + \else + \uppercase{% + \def\PE@testA{#1}% + \def\PE@testB{#2}% + }% + \ifcase\expandafter\PE@TestUcHexDigit\PE@testA + \ifcase\expandafter\PE@TestUcHexDigit\PE@testB + \uccode\ltx@zero="\PE@testA\PE@testB\relax + \ifnum\uccode\ltx@zero=32 % + \let\PE@temp\PE@space@space + \else + \uppercase{% + \def\PE@temp{^^@}% + }% + \fi + \edef\PE@result{\PE@result\PE@temp}% + \let\PE@next\PE@DeHex + \else + % invalid input sequence + \def\PE@next{% + \PE@DeHex#1% + }% + \fi + \else + % invalid input sequence + \def\PE@next{\PE@DeHex#2}% + \fi + \fi + \PE@next +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Conversion to PDF name} +% +% \begin{macro}{\PE@EscapeName} +% \begin{macrocode} +\ifPE@etex + \def\PE@EscapeName#1{% + \edef#1{\expandafter\PE@EscapeNameTokens#1\relax}% + }% +\else + \def\PE@EscapeName#1{% + \def\PE@result{}% + \expandafter\PE@EscapeNameTokens#1\relax + \let#1\PE@result + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@EscapeNameTokens} +% \begin{macrocode} +\def\PE@EscapeNameTokens#1{% + \ifx\relax#1% + \else + \ifnum`#1<33 % + \ifcase`#1 % + % drop illegal zero + \else + \PE@EscapeNameAdd\PE@hash + \PE@HexChar#1% + \fi + \else + \ifnum`#1>126 % + \PE@EscapeNameAdd\PE@hash + \PE@HexChar#1% + \else \ifnum`#1=35 \PE@EscapeNameHashChar 23% # + \else\ifnum`#1=37 \PE@EscapeNameHashChar 25% % + \else\ifnum`#1=40 \PE@EscapeNameHashChar 28% ( + \else\ifnum`#1=41 \PE@EscapeNameHashChar 29% ) + \else\ifnum`#1=47 \PE@EscapeNameHashChar 2F% / + \else\ifnum`#1=60 \PE@EscapeNameHashChar 3C% < + \else\ifnum`#1=62 \PE@EscapeNameHashChar 3E% > + \else\ifnum`#1=91 \PE@EscapeNameHashChar 5B% [ + \else\ifnum`#1=93 \PE@EscapeNameHashChar 5D% ] + \else\ifnum`#1=123 \PE@EscapeNameHashChar 7B% { + \else\ifnum`#1=125 \PE@EscapeNameHashChar 7D% } + \else + \PE@EscapeNameAdd{#1}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi + \fi + \expandafter\PE@EscapeNameTokens + \fi +}% +\def\PE@EscapeNameHashChar#1#2{% + \PE@EscapeNameAdd{\PE@hash\string#1\string#2}% +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@EscapeNameAdd} +% \begin{macrocode} +\ifPE@etex + \def\PE@EscapeNameAdd#1{#1}% +\else + \def\PE@EscapeNameAdd#1{% + \edef\PE@result{% + \PE@result + #1% + }% + }% +\fi +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Conversion to PDF string} +% +% \begin{macro}{\PE@EscapeString} +% \begin{macrocode} +\ifPE@etex + \def\PE@EscapeString#1{% + \edef#1{\expandafter\PE@EscapeStringTokens#1\relax}% + }% +\else + \def\PE@EscapeString#1{% + \begingroup + \def\PE@result{}% + \expandafter\PE@EscapeStringTokens#1\relax + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{\PE@result}% + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@EscapeStringTokens} +% \begin{macrocode} +\def\PE@EscapeStringTokens#1{% + \ifx\relax#1% + \else + \ifnum`#1<33 % + \PE@OctChar#1% + \else + \ifnum`#1>126 % + \PE@OctChar#1% + \else \ifnum`#1=40 \PE@EscapeStringAdd{\string\(}% ( + \else\ifnum`#1=41 \PE@EscapeStringAdd{\string\)}% ) + \else\ifnum`#1=92 \PE@EscapeStringAdd{\string\\}% \ + \else + \PE@EscapeStringAdd{#1}% + \fi\fi\fi + \fi + \fi + \expandafter\PE@EscapeStringTokens + \fi +}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PE@EscapeStringAdd} +% \begin{macrocode} +\ifPE@etex + \def\PE@EscapeStringAdd#1{#1}% +\else + \def\PE@EscapeStringAdd#1{% + \edef\PE@result{% + \PE@result + #1% + }% + }% +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\PE@AtEnd% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +%% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{pdfescape}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/pdfescape/pdfescape.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/pdfescape/pdfescape.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `pdfescape' +% 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/pdfescape.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{pdfescape.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip pdfescape.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 pdfescape.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@{}} +% pdfescape.sty & tex/generic/pdfescape/pdfescape.sty\\ +% pdfescape.pdf & doc/latex/pdfescape/pdfescape.pdf\\ +% pdfescape.dtx & source/latex/pdfescape/pdfescape.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{pdfescape.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 pdfescape.dtx +%makeindex -s gind.ist pdfescape.idx +%pdflatex pdfescape.dtx +%makeindex -s gind.ist pdfescape.idx +%pdflatex pdfescape.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/02/21 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2007/02/25 v1.1} +% \item +% Test files added. +% \item +% \cs{EdefUnescapeHex} supports lowercase letters. +% \item +% Fix: \verb|\EdefEscapeName{^^@}| +% \item +% Fix: \verb|\EdefEscapeName{\string#}| +% \item +% Fix for \cs{EdefUnescapeHex} in case of incomplete hex string. +% \item +% Fix: \cs{EdefUnescapeHex} generates space tokens with catcode +% 10 (space) in all cases. +% \item +% Fix: \cs{EdefEscapeHex} and \cs{EdefEscapeName} now generate +% tokens with catcode 12 (other) only. +% \end{Version} +% \begin{Version}{2007/03/20 v1.2} +% \item +% Fix: Wrong year in \cs{ProvidesPackage}. +% \end{Version} +% \begin{Version}{2007/04/11 v1.3} +% \item +% Line ends sanitized. +% \end{Version} +% \begin{Version}{2007/04/21 v1.4} +% \item +% \cs{EdefUnescapeName} and \cs{EdefUnescapeString} added. +% \end{Version} +% \begin{Version}{2007/08/27 v1.5} +% \item +% \cs{EdefSanitize} added (replaces \cs{PE@sanitize}). +% \end{Version} +% \begin{Version}{2007/09/09 v1.6} +% \item +% Fix in catcode setup. +% \end{Version} +% \begin{Version}{2007/10/27 v1.7} +% \item +% More efficient \cs{EdefSanitize}. +% \end{Version} +% \begin{Version}{2007/11/11 v1.8} +% \item +% Use of package \xpackage{pdftexcmds} for \hologo{LuaTeX} support. +% \end{Version} +% \begin{Version}{2010/03/01 v1.9} +% \item +% Compatibility with \hologo{iniTeX}. +% \end{Version} +% \begin{Version}{2010/11/12 v1.10} +% \item +% Use of package \xpackage{ltxcmds}. +% \item +% Fix for compatibility with \hologo{iniTeX}. +% \end{Version} +% \begin{Version}{2011/01/30 v1.11} +% \item +% Already loaded package files are not input in \hologo{plainTeX}. +% \end{Version} +% \begin{Version}{2011/04/04 v1.12} +% \item +% Further fixes for compatibility for \hologo{iniTeX}. +% \item +% Test file for \hologo{iniTeX} added. +% \end{Version} +% \begin{Version}{2011/11/25 v1.13} +% \item +% Higher order bit of octal sequences in \cs{EdefUnescapeString} +% ignored according to the PDF specification +% (Bug found by Bruno Le Floch). +% \end{Version} +% \begin{Version}{2016/05/16 v1.14} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/09 v1.15} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/pdfescape/pdfescape.pdf b/macros/latex/contrib/pdfescape/pdfescape.pdf new file mode 100644 index 0000000000..07fd595511 Binary files /dev/null and b/macros/latex/contrib/pdfescape/pdfescape.pdf differ diff --git a/macros/latex/contrib/picture/README.md b/macros/latex/contrib/picture/README.md new file mode 100644 index 0000000000..afbecb7f5b --- /dev/null +++ b/macros/latex/contrib/picture/README.md @@ -0,0 +1,11 @@ +# picture + +picture package for LaTeX + + +There are macro and environment arguments that expect numbers +that will internally be multiplicated with \unitlength. +This package extends the syntax of these arguments that +dimens with calculation support can be added for these arguments. + + diff --git a/macros/latex/contrib/picture/picture.dtx b/macros/latex/contrib/picture/picture.dtx new file mode 100644 index 0000000000..56cd8c8c47 --- /dev/null +++ b/macros/latex/contrib/picture/picture.dtx @@ -0,0 +1,772 @@ +% \iffalse meta-comment +% +% File: picture.dtx +% Version: 2019/12/09 v1.5 +% Info: Dimens for picture macros +% +% Copyright (C) +% 2006-2009 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/picture/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/picture/issues +% +% This work consists of the main source file picture.dtx +% and the derived files +% picture.sty, picture.pdf, picture.ins, picture.drv, +% picture-example.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/picture/picture.dtx +% CTAN:macros/latex/contrib/picture/picture.pdf +% +% Unpacking: +% (a) If picture.ins is present: +% tex picture.ins +% (b) Without picture.ins: +% tex picture.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{picture.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If picture.drv is present: +% latex picture.drv +% (b) Without picture.drv: +% latex picture.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 picture.dtx +% makeindex -s gind.ist picture.idx +% pdflatex picture.dtx +% makeindex -s gind.ist picture.idx +% pdflatex picture.dtx +% +% Installation: +% TDS:tex/latex/picture/picture.sty +% TDS:doc/latex/picture/picture.pdf +% TDS:doc/latex/picture/picture-example.tex +% TDS:source/latex/picture/picture.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: picture 2019/12/09 v1.5 Dimens for picture macros (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: picture +Version: 2019/12/09 v1.5 + +Copyright (C) + 2006-2009 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/picture/issues + + +This work consists of the main source file picture.dtx +and the derived files + picture.sty, picture.pdf, picture.ins, picture.drv, + picture-example.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{picture.ins}{\from{picture.dtx}{install}}% + \file{picture.drv}{\from{picture.dtx}{driver}}% + \usedir{tex/latex/picture}% + \file{picture.sty}{\from{picture.dtx}{package}}% + \usedir{doc/latex/picture}% + \file{picture-example.tex}{\from{picture.dtx}{example}}% +} + +\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{* picture.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `picture.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{picture.drv}% + [2019/12/09 v1.5 Dimens for picture macros (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{picture.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{picture.drv} +% +% \title{The \xpackage{picture} package} +% \date{2019/12/09 v1.5} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/picture/issues}}} +% +% \maketitle +% +% \begin{abstract} +% There are macro and environment arguments that expect numbers +% that will internally be multiplicated with \cs{unitlength}. +% This package extends the syntax of these arguments that +% dimens with calculation support can be added for these arguments. +% \end{abstract} +% +% \tableofcontents +% +% \section{User interface} +% +% \subsection{Introduction} +% +% The environment |picture| and macros such as \cs{put}, \cs{line}, +% \cs{vector} and other macros have arguments that expect numbers +% that are used as factor for \cs{unitlength}. +% This package redefines such macros and adds code that detects +% whether such an argument is given as number or as length. +% In the latter case, the length is used directly without multiplying +% with \cs{unitlength}. +% +% \subsection{Options} +% +% Depending on the available features, also length expressions +% can be given. Option \xoption{calc} loads package \xpackage{calc}. +% Then expressions of these package may be used. +% Otherwise \xoption{etex} wraps the length argument inside +% \cs{dimexpr}\dots\cs{relax}, if \eTeX\ is available. Otherwise +% option \xoption{plain} uses plain assignments without calculation +% support. +% +% The default is \xoption{calc} if package \xpackage{calc} +% is loaded before package \xoption{picture}. If you specify +% option \xoption{calc} the loading of \xpackage{calc} is ensured. +% Otherwise package \xpackage{picture} looks whether \cs{dimexpr} +% is available and uses then option \xoption{etex} as default. +% If \eTeX\ also could not be found, then \xoption{plain} is used. +% +% \subsection{Example} +% +% \begin{macrocode} +%<*example> +\documentclass{article} + +\usepackage[calc]{picture} + +\begin{document} + +\setlength{\unitlength}{1pt} + +\begin{picture}(\widthof{Hello World}, 10mm) + \put(0, 0){\makebox(0,0)[lb]{Hello World}}% + \put(0, \heightof{Hello World} + \fboxsep){% + \line(1, 0){\widthof{Hello World}}% + }% + \put(\widthof{Hello World}, 10mm){% + \line(0, -1){10mm}% + }% +\end{picture} + +\end{document} +% +% \end{macrocode} +% +% \subsection{Supported packages} +% +% Packages \xpackage{pspicture} and \xpackage{pict2e} are supported, +% but they must be loaded before package \xpackage{picture}. +% +% New macros can be supported by \cs{picture@redefine}. +% The first argument is the macro which contains the arguments +% in its parameter text that you want to support by package \xpackage{picture}. +% The second argument contains the parameter text. Change \# to \& for +% the arguments in question. +% Examples (already used by package \xpackage{picture}): +% \begin{quote} +% |\picture@redefine\put{(&1,&2)}|\\ +% |\picture@redefine\line{(#1,#2)&3}| +% \end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \subsection{Identification} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{picture}% + [2019/12/09 v1.5 Dimens for picture macros (HO)]% +% \end{macrocode} +% +% \subsection{Options} +% +% \begin{macrocode} +\def\Pc@calcname{calc} +\def\Pc@etexname{etex} +\def\Pc@plainname{plain} +% \end{macrocode} +% \begin{macro}{\Pc@method} +% Macro \cs{Pc@method} stores the method to use for calculations. +% Check which features are available and set the default for \cs{Pc@method}. +% \begin{macrocode} +\@ifpackageloaded{calc}{% + \let\Pc@method\Pc@calcname +}{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname dimexpr\endcsname\relax + \let\Pc@method\Pc@plainname + \else + \let\Pc@method\Pc@etexname + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\DeclareOption{plain}{% + \let\Pc@method\Pc@plainname +} +\DeclareOption{etex}{% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname dimexpr\endcsname\relax + \PackageError{picture}{% + e-TeX is not available% + }\@ehc + \else + \let\Pc@method\Pc@etexname + \fi +} +\DeclareOption{calc}{% + \let\Pc@method\Pc@calcname +} +\ProcessOptions* +\begingroup + \let\on@line\@empty + \PackageInfo{picture}{Calculation method: \Pc@method}% +\endgroup +% \end{macrocode} +% +% \subsection{Calculation method} +% +% \begin{macrocode} +\ifx\Pc@method\Pc@calcname + \RequirePackage{calc}% +\fi +% \end{macrocode} +% +% \subsubsection{Method \xoption{calc}} +% +% \begin{macrocode} +\ifx\Pc@method\Pc@calcname + \def\Pc@tokslength#1{% + \begingroup + \let\calc@error\Pc@calc@error + \setlength\dimen@{#1\unitlength}\Pc@next\Pc@nil{#1}% + }% + \let\PcOrg@calc@error\calc@error + \@ifpackagelater{calc}{2007/08/22}{% v4.3 + \def\Pc@calc@error#1{% + \expandafter\ifx\expandafter\unitlength\noexpand#1\relax + \def\calc@next##1!{% + \endgroup + \aftergroup\afterassignment + \aftergroup\Pc@next + }% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {% + \calc@next{#1}% + }{% + \PcOrg@calc@error{#1}% + }% + }% + }{% + \def\Pc@calc@error#1{% + \expandafter\ifx\expandafter\unitlength\noexpand#1\relax + \def\calc@next##1!{% + \endgroup + \aftergroup\afterassignment + \aftergroup\Pc@next + }% + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {% + \PcOrg@calc@error{#1}% + }% + }% + }% +\fi +% \end{macrocode} +% +% \subsubsection{Method \xoption{etex}} +% +% \begin{macrocode} +\ifx\Pc@method\Pc@etexname + \def\Pc@tokslength#1{% + \begingroup + \afterassignment\Pc@next + \dimen@=\dimexpr#1\unitlength\Pc@nil{#1}% + }% +\fi +% \end{macrocode} +% +% \subsubsection{Method \xoption{plain}} +% +% \begin{macrocode} +\ifx\Pc@method\Pc@plainname + \def\Pc@tokslength#1{% + \begingroup + \afterassignment\Pc@next + \dimen@=#1\unitlength\Pc@nil{#1}% + }% +\fi +% \end{macrocode} +% +% \subsubsection{Help macros} +% +% \begin{macrocode} +\def\Pc@next#1\Pc@nil#2{% + \ifx\\#1\\% + \endgroup + \Pc@addtoks{{#2}}% + \else + \expandafter\endgroup + \expandafter\Pc@addtoks\expandafter{% + \expandafter{\the\dimen@\@gobble}% + }% + \fi +} +% \end{macrocode} +% \begin{macro}{\Pc@nil} +% \cs{Pc@nil} must not have the meaning of \cs{relax} because of +% \cs{dimexpr}. +% \begin{macrocode} +\let\Pc@nil\message +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@addtoks} +% \begin{macrocode} +\def\Pc@addtoks#1{% + \toks@=\expandafter{\the\toks@#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@init} +% \begin{macrocode} +\def\Pc@init#1{% + \begingroup + \toks@={#1}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@finish} +% \begin{macrocode} +\def\Pc@finish#1{% + \expandafter\endgroup + \expandafter#1\the\toks@ +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Redefinitions} +% +% \begin{macro}{\picture@redefine} +% \begin{tabular}[t]{@{}l@{ }l@{}} +% |#1|:& command name\\ +% |#2|:& parameter text, length parameter with \& instead of \# +% \end{tabular} +% \begin{macrocode} +\def\picture@redefine#1#2{% + \begingroup + \edef\reserved@a{% + \noexpand\noexpand + \expandafter\noexpand + \csname PcOrg@\expandafter\@gobble\string#1\endcsname + }% + \toks0{#1}% + \Pc@first#2&0% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@first} +% \begin{macrocode} +\def\Pc@first#1&{% + \toks1={#1}% + \toks2={\Pc@init{#1}}% + \Pc@scanlength +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@scanlength} +% |#1|: number of length parameter or zero +% \begin{macrocode} +\def\Pc@scanlength#1{% + \ifcase#1 % + \expandafter\Pc@last + \else + \toks1=\expandafter{\the\toks1 ###1}% + \toks2=\expandafter{\the\toks2 \Pc@tokslength{###1}}% + \expandafter\Pc@scannext + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@scannext} +% \begin{macrocode} +\def\Pc@scannext#1&{% + \ifx\\#1\\% + \else + \toks1=\expandafter{\the\toks1 #1}% + \toks2=\expandafter{\the\toks2 \Pc@addtoks{#1}}% + \fi + \Pc@scanlength +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Pc@last} +% \begin{macrocode} +\def\Pc@last{% + \edef\x{% + \endgroup + \let\reserved@a\the\toks0 % + \def\the\toks0 \the\toks1 {% + \the\toks2 % + \noexpand\Pc@finish\reserved@a + }% + }% + \x +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\LaTeX\ base macros} +% +% \begin{macrocode} +\picture@redefine\@picture{(&1,&2)(&3,&4)} +\picture@redefine\put{(&1,&2)} +\picture@redefine\multiput{(&1,&2)} +\picture@redefine\@multiput{(&1,&2)} +\picture@redefine\line{(#1,#2)&3} +\picture@redefine\vector{(#1,#2)&3} +\picture@redefine\dashbox{&1(&2,&3)} +\picture@redefine\@circle{&1} +\picture@redefine\@dot{&1} +\picture@redefine\@bezier{#1(&2,&3)(&4,&5)(&6,&7)} +\picture@redefine\@imakepicbox{(&1,&2)} +% \end{macrocode} +% +% \subsubsection{Package \xpackage{pspicture}} +% +% Package \xpackage{pspicture} changes the signature of \cs{@oval} +% by adding an optional argument. +% \begin{macrocode} +\@ifpackageloaded{pspicture}{% + \picture@redefine\@oval{[&1](&2,&3)}% + \picture@redefine\Line{(&1,&2)}% + \picture@redefine\Curve{(&1,&2)}% + \picture@redefine\Vector{(&1,&2)}% +}{% + \picture@redefine\@oval{(&1,&2)}% +} +% \end{macrocode} +% +% \subsection{Check package loading order} +% +% \begin{macro}{\PC@checkpackage} +% \begin{macrocode} +\def\Pc@checkpackage#1{% + \@ifpackageloaded{#1}{% + }{% + \AtBeginDocument{% + \@ifpackageloaded{#1}{% + \PackageWarningNoLine{picture}{% + Package `#1' is loaded after `picture'.\MessageBreak + Load package `picture' afterwards to get full support% + \MessageBreak + of its additional syntax with length specifications% + }% + }{}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\Pc@checkpackage{pict2e} +\Pc@checkpackage{pspicture} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{picture}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/picture/picture.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/picture/picture.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `picture' +% 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/picture.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{picture.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip picture.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 picture.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@{}} +% picture.sty & tex/latex/picture/picture.sty\\ +% picture.pdf & doc/latex/picture/picture.pdf\\ +% picture-example.tex & doc/latex/picture/picture-example.tex\\ +% picture.dtx & source/latex/picture/picture.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{picture.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 picture.dtx +%makeindex -s gind.ist picture.idx +%pdflatex picture.dtx +%makeindex -s gind.ist picture.idx +%pdflatex picture.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2006/08/26 v1.0} +% \item +% First released version. (First start of the project was June/July 2002.) +% \end{Version} +% \begin{Version}{2007/04/11 v1.1} +% \item +% Line ends sanitized. +% \end{Version} +% \begin{Version}{2008/11/26 v1.2} +% \item +% Package \xpackage{pict2e} added to documentation section ``Supported +% packages''. +% \item +% Package order of supported packages is checked. +% \end{Version} +% \begin{Version}{2009/10/11 v1.3} +% \item +% Fix because of new version v4.3 of package \xpackage{calc}. +% \end{Version} +% \begin{Version}{2016/05/16 v1.4} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/09 v1.5} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/picture/picture.pdf b/macros/latex/contrib/picture/picture.pdf new file mode 100644 index 0000000000..7e500063e4 Binary files /dev/null and b/macros/latex/contrib/picture/picture.pdf differ diff --git a/macros/latex/contrib/selinput/README.md b/macros/latex/contrib/selinput/README.md new file mode 100644 index 0000000000..cf27d1d134 --- /dev/null +++ b/macros/latex/contrib/selinput/README.md @@ -0,0 +1,9 @@ +# selinput + +selinput package for LaTeX + + +This package selects the input encoding by specifying between +input characters and their glyph names. + + diff --git a/macros/latex/contrib/selinput/selinput.dtx b/macros/latex/contrib/selinput/selinput.dtx new file mode 100644 index 0000000000..80755bbc20 --- /dev/null +++ b/macros/latex/contrib/selinput/selinput.dtx @@ -0,0 +1,851 @@ +% \iffalse meta-comment +% +% File: selinput.dtx +% Version: 2019/12/09 v1.5 +% Info: Semi-automatic input encoding detection +% +% Copyright (C) +% 2007 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/selinput/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/selinput/issues +% +% This work consists of the main source file selinput.dtx +% and the derived files +% selinput.sty, selinput.pdf, selinput.ins, selinput.drv, +% selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, +% selinput-test4.tex, selinput-test5.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/selinput/selinput.dtx +% CTAN:macros/latex/contrib/selinput/selinput.pdf +% +% Unpacking: +% (a) If selinput.ins is present: +% tex selinput.ins +% (b) Without selinput.ins: +% tex selinput.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{selinput.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If selinput.drv is present: +% latex selinput.drv +% (b) Without selinput.drv: +% latex selinput.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 selinput.dtx +% makeindex -s gind.ist selinput.idx +% pdflatex selinput.dtx +% makeindex -s gind.ist selinput.idx +% pdflatex selinput.dtx +% +% Installation: +% TDS:tex/latex/selinput/selinput.sty +% TDS:doc/latex/selinput/selinput.pdf +% TDS:source/latex/selinput/selinput.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: selinput 2019/12/09 v1.5 Semi-automatic input encoding detection (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: selinput +Version: 2019/12/09 v1.5 + +Copyright (C) + 2007 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/selinput/issues + + +This work consists of the main source file selinput.dtx +and the derived files + selinput.sty, selinput.pdf, selinput.ins, selinput.drv, + selinput-test1.tex, selinput-test2.tex, selinput-test3.tex, + selinput-test4.tex, selinput-test5.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{selinput.ins}{\from{selinput.dtx}{install}}% + \file{selinput.drv}{\from{selinput.dtx}{driver}}% + \usedir{tex/latex/selinput}% + \file{selinput.sty}{\from{selinput.dtx}{package}}% +} + +\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{* selinput.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `selinput.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{selinput.drv}% + [2019/12/09 v1.5 Semi-automatic input encoding detection (HO)]% +\documentclass{ltxdoc} +\ifx\Umathcode\undefined +\usepackage[T1]{fontenc} +\fi +\usepackage{textcomp} +\usepackage{lmodern} +\usepackage{holtxdoc}[2011/11/22] +\usepackage{color} +\begin{document} + \DocInput{selinput.dtx}% +\end{document} +% +% \fi +% +% +% +% \GetFileInfo{selinput.drv} +% +% \title{The \xpackage{selinput} package} +% \date{2019/12/09 v1.5} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/selinput/issues}}} +% +% \maketitle +% +% \begin{abstract} +% This package selects the input encoding by specifying between +% input characters and their glyph names. +% \end{abstract} +% +% \tableofcontents +% +% \newcommand*{\EM}{\textcolor{blue}} +% \newcommand*{\ExampleText}{^^A +% Umlauts:\ \EM{\"A\"O\"U\"a\"o\"u\ss}^^A +% } +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% \LaTeX\ supports the direct use of 8-bit characters by means +% of package \xpackage{inputenc}. However you must know +% and specify the encoding, e.g.: +% \begin{quote} +% \ttfamily +% |\documentclass{article}|\\ +% |\usepackage[|\EM{latin1}|]{inputenc}|\\ +% |% or \usepackage[|\EM{utf8}|]{inputenc}|\\ +% |% or \usepackage[|\EM{??}|]{inputenc}|\\ +% |\begin{document}|\\ +% | |\ExampleText\\ +% |\end{document}| +% \end{quote} +% +% If the document is transferred in an environment that +% uses a different encoding, then there are programs that +% convert the input characters. Examples for conversion +% of file \xfile{test.tex} +% from encoding latin1 (ISO-8859-1) to UTF-8: +% \begin{quote} +% \ttfamily +% |recode ISO-8859-1..UTF-8 test.tex|\\ +% |recode latin1..utf8 test.tex|\\ +% |iconv --from-code ISO-8859-1|\\ +% \hphantom{iconv}| --to-code UTF-8|\\ +% \hphantom{iconv}| --output testnew.tex|\\ +% \hphantom{iconv}| test.tex|\\ +% |iconv -f latin1 -t utf8 -o testnew.tex test.tex| +% \end{quote} +% However, the encoding name for package \xpackage{inputenc} +% must be changed: +% \begin{quote} +% |\usepackage[latin1]{inputenc}| $\rightarrow$ +% |\usepackage[utf8]{inputenc}|\kern-4pt\relax +% \end{quote} +% Of course, unless you are using some clever editor +% that knows package \xpackage{inputenc}, recodes +% the file and adjusts the option at the same time. +% But most editors can perhaps recode the file, but +% they let the option untouched. +% +% Therefore package \xpackage{selinput} chooses another way for +% specifying the input encoding. The encoding name is not needed +% at all. Some 8-bit characters are identified by their glyph +% name and the package chooses an appropriate encoding, example: +% \begin{quote} +% \ttfamily +% |\documentclass{article}|\\ +% |\usepackage{selinput}|\\ +% |\SelectInputMappings{|\\ +% | adieresis={|\EM{\"a}|}|,\\ +% | germandbls={|\EM{\ss}|}|,\\ +% | Euro={|\EM{\texteuro}|}|,\\ +% |}|\\ +% |\begin{document}|\\ +% | |\ExampleText\\ +% |\end{document}| +% \end{quote} +% +% \subsection{User interface} +% +% \begin{declcs}{SelectInputEncodingList} \M{encoding list} +% \end{declcs} +% \cs{SelectInputEncodingList} expects a comma separated list of +% encoding names. Example: +% \begin{quote} +% |\SelectInputEncodingList{utf8,ansinew,mac-roman}| +% \end{quote} +% The encodings of package \xpackage{inputenx} are used as default. +% +% \begin{declcs}{SelectInputMappings} \M{mapping pairs} +% \end{declcs} +% A mapping pair consists of a glyph name and its input +% character: +% \begin{quote} +% |\SelectInputMappings{|\\ +% | adieresis={|\EM{\"a}|}|,\\ +% | germandbls={|\EM{\ss}|}|,\\ +% | Euro={|\EM{\texteuro}|}|,\\ +% |}| +% \end{quote} +% The supported glyph names can be found in file \xfile{ix-name.def} +% of project \xpackage{inputenx} \cite{inputenx}. The names are +% basically taken from Adobe's glyphlists \cite{adobe:glyphlist,adobe:aglfn}. +% As many pairs are needed as necessary to identify the encoding. +% Example with insufficient pairs: +% \begin{quote} +% \ttfamily +% |\SelectInputEncodingSet{latin1,latin9}|\\ +% |\SelectInputMappings{|\\ +% | adieresis={|\EM{\"a}|}|,\\ +% | germandbls={|\EM{\ss}|}|,\\ +% |}|\\ +% \ExampleText| and Euro: |\EM{\textcurrency} (wrong) +% \end{quote} +% The first encoding \xoption{latin1} passes the constraints given +% by the mapping pairs. However the Euro symbol is not part of +% the encoding. Thus a mapping pair with the Euro symbol +% solves the problem. In fact the symbol alone already succeeds in selecting +% between \xoption{latin1} and \xoption{latin9}: +% \begin{quote} +% \ttfamily +% |\SelectInputEncodingSet{latin1,latin9}|\\ +% |\SelectInputMappings{|\\ +% | Euro={|\EM{\texteuro}|},|\\ +% |}|\\ +% \ExampleText| and Euro: |\EM{\texteuro} +% \end{quote} +% +% \subsection{Options} +% +% \begin{description} +% \item[\xoption{warning}:] +% The selected encoding is written +% by \cs{PackageInfo} into the \xfile{.log} file only. +% Option \xoption{warning} changes it to \cs{PackageWarning}. +% Then the selected encoding is shown on the terminal as well. +% \item[\xoption{ucs}:] +% The encoding file \xfile{utf8x} of package \cs{ucs} requires +% that the package itself is loaded before. +% If the package is not loaded, then the option \xoption{ucs} +% will load package \xpackage{ucs} if the detected encoding is +% UTF-8 (limited to the preamble, packages cannot be loaded later). +% \item[\xoption{utf8=\dots}:] +% The option allows to specify other encoding files +% for UTF-8 than \LaTeX's \xfile{utf8.def}. For example, +% |utf8=utf-8| will load \xfile{utf-8.def} instead. +% \end{description} +% +% \subsection{Encodings} +% +% Package \xpackage{stringenc} \cite{stringenc} +% is used for testing the encoding. Thus the encoding +% name must be known by this package. Then the found +% encoding is loaded by \cs{inputencoding} by package +% \xpackage{inputenc} or \cs{InputEncoding} if package +% \xpackage{inputenx} is loaded. +% +% The supported encodings are present in the encoding list, +% thus usually the encoding names do not matter. +% If the list is set by \cs{SelectInputEncodingList}, +% then you can use the names that work for package +% \xpackage{inputenc} and are known by package \xpackage{stringenc}, +% for example: \xoption{latin1}, \xoption{x-iso-8859-1}. Encoding +% file names of package \xpackage{inputenx} are prefixed with \xfile{x-}. +% The prefix can be dropped, if package \xpackage{inputenx} is loaded. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{selinput} + [2019/12/09 v1.5 Semi-automatic input encoding detection (HO)]% +% \end{macrocode} +% +% \begin{macrocode} +\RequirePackage{inputenc} +\RequirePackage{kvsetkeys}[2006/10/19] +\RequirePackage{stringenc}[2007/06/16] +\RequirePackage{kvoptions} +% \end{macrocode} +% \begin{macro}{\SelectInputEncodingList} +% \begin{macrocode} +\newcommand*{\SelectInputEncodingList}{% + \let\SIE@EncodingList\@empty + \kvsetkeys{SelInputEnc}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\SelectInputMappings} +% \begin{macrocode} +\newcommand*{\SelectInputMappings}[1]{% + \SIE@LoadNameDefs + \let\SIE@StringUnicode\@empty + \let\SIE@StringDest\@empty + \kvsetkeys{SelInputMap}{#1}% + \ifx\\SIE@StringUnicode\SIE@StringDest\\% + \PackageError{selinput}{% + No mappings specified% + }\@ehc + \else + \EdefUnescapeHex\SIE@StringUnicode\SIE@StringUnicode + \let\SIE@Encoding\@empty + \@for\SIE@EncodingTest:=\SIE@EncodingList\do{% + \ifx\SIE@Encoding\@empty + \StringEncodingConvertTest\SIE@temp\SIE@StringUnicode + {utf16be}\SIE@EncodingTest{% + \ifx\SIE@temp\SIE@StringDest + \let\SIE@Encoding\SIE@EncodingTest + \fi + }{}% + \fi + }% + \ifx\SIE@Encoding\@empty + \StringEncodingConvertTest\SIE@temp\SIE@StringDest + {ascii}{utf16be}{% + \def\SIE@Encoding{ascii}% + \SIE@Info{selinput}{% + Matching encoding not found, but input characters% + \MessageBreak + are 7-bit (possibly editor replacements).% + \MessageBreak + Hence using ascii encoding% + }% + }{}% + \fi + \ifx\SIE@Encoding\@empty + \PackageError{selinput}{% + Cannot find a matching encoding% + }\@ehd + \else + \ifx\SIE@Encoding\SIE@EncodingUTFviii + \SIE@LoadUnicodePackage + \ifx\SIE@UseUTFviii\@empty + \else + \let\SIE@Encoding\SIE@UseUTFviii + \fi + \fi + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname InputEncoding\endcsname\relax + \inputencoding\SIE@Encoding + \else + \InputEncoding\SIE@Encoding + \fi + \SIE@Info{selinput}{Encoding `\SIE@Encoding' selected}% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\SIE@LoadNameDefs} +% \begin{macrocode} +\def\SIE@LoadNameDefs{% + \begingroup + \endlinechar=\m@ne + \catcode92=0 % backslash + \catcode123=1 % left curly brace/beginning of group + \catcode125=2 % right curly brace/end of group + \catcode37=14 % percent/comment character + \@makeother\[% + \@makeother\]% + \@makeother\.% + \@makeother\(% + \@makeother\)% + \@makeother\/% + \@makeother\-% + \let\InputenxName\SelectInputDefineMapping + \InputIfFileExists{ix-name.def}{}{% + \PackageError{selinput}{% + Missing `ix-name.def' (part of package `inputenx')% + }\@ehd + }% + \global\let\SIE@LoadNameDefs\relax + \endgroup +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\SelectInputDefineMapping} +% \begin{macrocode} +\newcommand*{\SelectInputDefineMapping}[1]{% + \expandafter\gdef\csname SIE@@#1\endcsname +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\kv@set@family@handler{SelInputMap}{% + \@onelevel@sanitize\kv@key + \ifx\kv@value\relax + \PackageError{selinput}{% + Missing input character for `\kv@key'% + }\@ehc + \else + \@onelevel@sanitize\kv@value + \ifx\kv@value\@empty + \PackageError{selinput}{% + Input character got lost?\MessageBreak + Missing input character for `\kv@key'% + }\@ehc + \else + \@ifundefined{SIE@@\kv@key}{% + \PackageWarning{selinput}{% + Missing definition for `\kv@key'% + }% + }{% + \edef\SIE@StringDest{% + \SIE@StringDest + \kv@value + }% + \edef\SIE@StringUnicode{% + \SIE@StringUnicode + \csname SIE@@\kv@key\endcsname + }% + }% + \fi + \fi +} +% \end{macrocode} +% \begin{macrocode} +\kv@set@family@handler{SelInputEnc}{% + \@onelevel@sanitize\kv@key + \ifx\kv@value\relax + \ifx\SIE@EncodingList\@empty + \let\SIE@EncodingList\kv@key + \else + \edef\SIE@EncodingList{\SIE@EncodingList,\kv@key}% + \fi + \else + \@onelevel@sanitize\kv@value + \PackageError{selinput}{% + Illegal key value pair (\kv@key=\kv@value)\MessagBreak + in encoding list% + }\@ehc + \fi +} +% \end{macrocode} +% +% \begin{macro}{\SIE@LoadUnicodePackage} +% \begin{macrocode} +\def\SIE@LoadUnicodePackage{% + \@ifpackageloaded\SIE@UnicodePackage{}{% + \RequirePackage\SIE@UnicodePackage\relax + }% + \SIE@PatchUCS + \global\let\SIE@LoadUnicodePackage\relax +} +\let\SIE@show\show +\def\SIE@PatchUCS{% + \AtBeginDocument{% + \expandafter\ifx\csname ver@ucsencs.def\endcsname\relax + \else + \let\show\SIE@show + \fi + }% +} +\SIE@PatchUCS +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\AtBeginDocument{% + \let\SIE@LoadUnicodePackage\relax +} +% \end{macrocode} +% \begin{macro}{\SIE@EncodingUTFviii} +% \begin{macrocode} +\def\SIE@EncodingUTFviii{utf8} +\@onelevel@sanitize\SIE@EncodingUTFviii +% \end{macrocode} +% \end{macro} +% \begin{macro}{\SIE@EncodingUTFviiix} +% \begin{macrocode} +\def\SIE@EncodingUTFviiix{utf8x} +\@onelevel@sanitize\SIE@EncodingUTFviiix +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\let\SIE@UnicodePackage\@empty +\let\SIE@UseUTFviii\@empty +\let\SIE@Info\PackageInfo +% \end{macrocode} +% \begin{macrocode} +\SetupKeyvalOptions{% + family=SelInput,% + prefix=SelInput@% +} +\define@key{SelInput}{utf8}{% + \def\SIE@UseUTFviii{#1}% + \@onelevel@sanitize\SIE@UseUTFviii +} +\DeclareBoolOption{ucs} +\DeclareVoidOption{warning}{% + \let\SIE@Info\PackageWarning +} +\ProcessKeyvalOptions{SelInput} +\ifSelInput@ucs + \def\SIE@UnicodePackage{ucs}% + \ifx\SIE@UseUTFviii\@empty + \let\SIE@UseUTFviii\SIE@EncodingUTFviiix + \fi +\else + \ifx\SIE@UseUTFviii\@empty + \@ifpackageloaded{ucs}{% + \let\SIE@UseUTFviii\SIE@EncodingUTFviiix + }{% + \let\SIE@UseUTFviii\SIE@EncodingUTFviii + }% + \fi +\fi +% \end{macrocode} +% +% \begin{macro}{\SIE@EncodingList} +% \begin{macrocode} +\edef\SIE@EncodingList{% + utf8,% + x-iso-8859-1,% + x-iso-8859-15,% + x-cp1252,% ansinew + x-mac-roman,% + x-iso-8859-2,% + x-iso-8859-3,% + x-iso-8859-4,% + x-iso-8859-5,% + x-iso-8859-6,% + x-iso-8859-7,% + x-iso-8859-8,% + x-iso-8859-9,% + x-iso-8859-10,% + x-iso-8859-11,% + x-iso-8859-13,% + x-iso-8859-14,% + x-iso-8859-15,% + x-mac-centeuro,% + x-mac-cyrillic,% + x-koi8-r,% + x-cp1250,% + x-cp1251,% + x-cp1257,% + x-cp437,% + x-cp850,% + x-cp852,% + x-cp855,% + x-cp858,% + x-cp865,% + x-cp866,% + x-nextstep,% + x-dec-mcs% +}% +\@onelevel@sanitize\SIE@EncodingList +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +%% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{selinput}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/selinput/selinput.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/selinput/selinput.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `selinput' +% 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/selinput.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{selinput.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip selinput.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 selinput.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@{}} +% selinput.sty & tex/latex/selinput/selinput.sty\\ +% selinput.pdf & doc/latex/selinput/selinput.pdf\\ +% selinput.dtx & source/latex/selinput/selinput.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{selinput.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 selinput.dtx +%makeindex -s gind.ist selinput.idx +%pdflatex selinput.dtx +%makeindex -s gind.ist selinput.idx +%pdflatex selinput.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{thebibliography}{9} +% \bibitem{inputenx} +% Heiko Oberdiek: \textit{The \xpackage{inputenx} package}; +% 2007-04-11 v1.1; +% \CTANpkg{inputenx}. +% +% \bibitem{adobe:glyphlist} +% Adobe: \textit{Adobe Glyph List}; +% 2002-09-20 v2.0; +% \url{https://github.com/adobe-type-tools/agl-aglfn/blob/master/glyphlist.txt}. +% +% \bibitem{adobe:aglfn} +% Adobe: \textit{Adobe Glyph List For New Fonts}; +% 2005-11-18 v1.5; +% \url{https://github.com/adobe-type-tools/agl-aglfn/blob/master/aglfn.txt}. +% +% \bibitem{stringenc} +% Heiko Oberdiek: \textit{The \xpackage{stringenc} package}; +% 2007-06-16 v1.1; +% \CTANpkg{stringenc}. +% +% \end{thebibliography} +% +% \begin{History} +% \begin{Version}{2007/06/16 v1.0} +% \item +% First version. +% \end{Version} +% \begin{Version}{2007/06/20 v1.1} +% \item +% Requested date for package \xpackage{stringenc} fixed. +% \end{Version} +% \begin{Version}{2007/09/09 v1.2} +% \item +% Line end fixed. +% \end{Version} +% \begin{Version}{2016/05/16 v1.3} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2016/05/17 v1.4} +% \item +% Documentation updates: Avoid T1 encoding with Unicode \TeX. +% \end{Version} +% \begin{Version}{2019/12/09 v1.5} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/macros/latex/contrib/selinput/selinput.pdf b/macros/latex/contrib/selinput/selinput.pdf new file mode 100644 index 0000000000..af1c9f731c Binary files /dev/null and b/macros/latex/contrib/selinput/selinput.pdf differ diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl index 4ec7e08724..9dca9bbeae 100644 --- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl @@ -19,7 +19,8 @@ $mirrors = { 'http://mirrors.geekpie.club/CTAN/' => 1, 'http://mirrors.hit.edu.cn/CTAN/' => 1, 'http://mirrors.sjtug.sjtu.edu.cn/ctan/' => 1, - 'http://mirrors.tuna.tsinghua.edu.cn/CTAN/' => 1 + 'http://mirrors.tuna.tsinghua.edu.cn/CTAN/' => 1, + 'http://mirrors.ustc.edu.cn/CTAN/' => 1 }, 'Hong Kong' => { 'https://mirror-hk.koddos.net/CTAN/' => 1 diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb index 7139a6ab0f..0f09f0c969 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb @@ -26,7 +26,7 @@ depend container_split_src_files/1 depend frozen/0 depend minrelease/2016 depend release/2019 -depend revision/53064 +depend revision/53072 name 00texlive.image category TLCore @@ -4103,7 +4103,7 @@ depend opt_w32_multi_user:1 name 00texlive.installer category TLCore -revision 53060 +revision 53066 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 @@ -24970,7 +24970,7 @@ catalogue-version 1.0 name babel category Package -revision 52794 +revision 53072 shortdesc Multilingual support for Plain TeX or LaTeX relocated 1 longdesc This package manages culturally-determined typographical (and @@ -24983,22 +24983,22 @@ longdesc has to be done for each language. Included is also a set of ini longdesc files for about 200 languages. Many language styles work with longdesc pdfLaTeX, as well as with XeLaTeX and LuaLaTeX, out of the box. longdesc A few even work with plain formats. -containersize 151820 -containerchecksum bd79873ead2004d5b04ca008133069e168d2a2776379535f991c5ebe53d6aa66546b3b1e660aee86d50416a0617a168bc8339946f43aa8eee70de9d954b4da6a -doccontainersize 715120 -doccontainerchecksum 697f0abde3ba8d793077e3af916a09d4160166c3e10dc395deab8a8e787b01c624da36325f8ea810b8276ba7c6e152fa778d26c97f0c3b48db37e4249aaea2e2 -docfiles size=179 +containersize 153836 +containerchecksum 76c3c2470a3cca6b8f55c663f581d0037e826c719fb27ad7bb659bb92eae1404108bf45e49a5483fb7b0f03954fe10b23ce932e36f544ec98e5b763261da69d4 +doccontainersize 726916 +doccontainerchecksum 44739bbba741d5559b194bf031702b434806600d782f17e40f313f183b450354cbc9dbd2a469738ec9229a4f42b523a6aa0f96a8d6beab82e3afeb178465b63f +docfiles size=182 RELOC/doc/latex/babel/README.md details="Readme" RELOC/doc/latex/babel/babel.pdf details="Package documentation" -srccontainersize 608012 -srccontainerchecksum b6458a3bcdb7e1691f8943f374b6dbe19b7034aa477df253f3fee3b906590093eeeb53a247a6744484d15bdad062fceed10e37f37d241baf70715bda8c48bc70 -srcfiles size=339 +srccontainersize 611124 +srccontainerchecksum 4c6039c52111201593526324b388e9a618689ecdcf72fb59483637440a5141fc8227f50f09220ef0452179c3300ae59d6314fd107ca25c14e2ad141bc68b1711 +srcfiles size=342 RELOC/source/latex/babel/babel.dtx RELOC/source/latex/babel/babel.ins RELOC/source/latex/babel/bbcompat.dtx RELOC/source/latex/babel/bbidxglo.dtx RELOC/source/latex/babel/locale.zip -runfiles size=838 +runfiles size=841 RELOC/makeindex/babel/bbglo.ist RELOC/makeindex/babel/bbind.ist RELOC/tex/generic/babel/UKenglish.sty @@ -25638,6 +25638,7 @@ runfiles size=838 RELOC/tex/generic/babel/spanish.sty RELOC/tex/generic/babel/swedish.sty RELOC/tex/generic/babel/switch.def + RELOC/tex/generic/babel/test-hyphen-post-wiki.tex RELOC/tex/generic/babel/turkish.sty RELOC/tex/generic/babel/txtbabel.def RELOC/tex/generic/babel/ukraineb.sty @@ -25649,10 +25650,10 @@ catalogue-also polyglossia catalogue-contact-bugs https://github.com/latex3/babel/issues catalogue-contact-repository https://github.com/latex3/babel catalogue-ctan /macros/latex/required/babel/base -catalogue-date 2019-11-14 14:37:37 +0100 +catalogue-date 2019-12-09 09:03:48 +0100 catalogue-license lppl1.3 catalogue-topics multilingual -catalogue-version 3.36 +catalogue-version 3.37 name babel-albanian category Package @@ -31074,16 +31075,16 @@ catalogue-version 0.1 name beebe category Package -revision 53060 +revision 53066 catalogue biblio shortdesc A collection of bibliographies relocated 1 longdesc A collection of BibTeX bibliographies on TeX-related topics longdesc (including, for example, spell-checking and SGML). Each longdesc includes a LaTeX wrapper file to typeset the bibliography. -containersize 822292 -containerchecksum 90b4c50bce29440f5fdc8532e2d88ac94234065445aab77aaeee3731934e65ad862bcd1502822f8dd449c6d1cda9e446cbdb3a4420bb6097124aaec1d05ef13f -runfiles size=2025 +containersize 822800 +containerchecksum 98aff3d1cbc89daccae6594c230b3e1e2bc4a59e9269204128cc06800b274732cee062f6778d8dacb3f2f058e7aef9bfee001e360496a4cce462ce9aba261c9b +runfiles size=2026 RELOC/bibtex/bib/beebe/epodd.bib RELOC/bibtex/bib/beebe/font.bib RELOC/bibtex/bib/beebe/printing-history.bib @@ -31162,7 +31163,7 @@ catalogue-version 1.6 name beilstein category Package -revision 46503 +revision 53069 shortdesc Support for submissions to the "Beilstein Journal of Nanotechnology" relocated 1 longdesc The package provides a LaTeX class file and a BibTeX style file @@ -31171,11 +31172,11 @@ longdesc ``Beilstein Journal of Nanotechnology''. Although the files can longdesc be used for any kind of document, they have only been designed longdesc and tested to be suitable for submissions to the Beilstein longdesc Journal of Nanotechnology. -containersize 13972 -containerchecksum b581df03b91834de1382b50dbcd1c4df25d8d3c1788889bb7057cebf3193fb664ef94f63b5c137f7ec5e3ce7a8d2d40fa3acf3a2640ba1e2b7b94daaf870841d -doccontainersize 698248 -doccontainerchecksum 00d281b248088fc0e31004bd4eced9a9eacba7f4260676318e13452e467d8e4587a8493a6444e709b76c18902ce766e35cda7ebf14595c277b59232a66e76e4b -docfiles size=186 +containersize 14044 +containerchecksum b164708fc19a8f9360e72ab4afc9506ae0817bee348f9f97b67cd6eafbd01accb17bed0ec4635fb82ffd28772ac7385e86ad68739cb9dc9372c2c4264a18a0a3 +doccontainersize 696516 +doccontainerchecksum 79db2292d4a5a07a9d3298c87dd43db8d343a10ebf5ab26581f086690702cabefc89ef5ef14c9f3b2b2aa2235be267f655f580ed0d3bd8df2cbb6625a0a84ca3 +docfiles size=185 RELOC/doc/latex/beilstein/BJNANO_Technical_Handbook.pdf RELOC/doc/latex/beilstein/CHANGELOG.md RELOC/doc/latex/beilstein/README.md details="Readme" @@ -31184,9 +31185,9 @@ docfiles size=186 RELOC/doc/latex/beilstein/figure1.pdf RELOC/doc/latex/beilstein/scheme1.pdf RELOC/doc/latex/beilstein/scheme2.pdf -srccontainersize 76764 -srccontainerchecksum fbaa3aeb41641adb0dcb559347b8eaf30adc79719d305d26f62bdbc2a80a913e4dcbb6507f7c2353687011a02fbf43f0fa49a67445844e4d37294b7ea4c3726f -srcfiles size=50 +srccontainersize 77364 +srccontainerchecksum 73327793675378812915491e8636204e8177d562610d2c6f0b3bacf3dd4ddb188dd367cf7403008a5d51f0bc73626a8a19f75d86abd6381d9b144f94c22f44b2 +srcfiles size=51 RELOC/source/latex/beilstein/beilstein.dtx RELOC/source/latex/beilstein/beilstein.ins RELOC/source/latex/beilstein/bjnano_logo.pdf @@ -31195,10 +31196,10 @@ runfiles size=17 RELOC/tex/latex/beilstein/beilstein.cls catalogue-contact-home https://www.beilstein-journals.org/bjnano/ catalogue-ctan /macros/latex/contrib/beilstein -catalogue-date 2018-01-30 22:19:12 +0100 +catalogue-date 2019-12-09 16:21:30 +0100 catalogue-license lppl1.3c catalogue-topics journalpub -catalogue-version 1.4 +catalogue-version 1.5 name belleek category Package @@ -73499,7 +73500,7 @@ catalogue-version 0.1 name cormorantgaramond category Package -revision 52505 +revision 53067 shortdesc Cormorant Garamond family of fonts relocated 1 longdesc This package provides LaTeX, pdfLaTeX, XeLaTeX and LuaLaTeX @@ -73508,115 +73509,115 @@ longdesc Christian Thalman of Catharsis Fonts. The family includes longdesc light, regular, medium, semi-bold, and bold weights, with longdesc italics. execute addMap CormorantGaramond.map -containersize 4336284 -containerchecksum dd94c5bcaafe9a2034885913ee5f78af51c287b6e625beeeac389dbd74d62be71f6f2f444ca2d854f5a208224e9be07348f3b962a7231ab2cfba62ec52af0db3 -doccontainersize 56160 -doccontainerchecksum b21672ef141375c235ce2b395f1ead9ac58b2d70691d4ecd6302e8fc404d177731cb6bfaf14aa612f2f262103107241025add602f16b9a7c85ef8f193bf1e0ae -docfiles size=17 +containersize 5582788 +containerchecksum 4a2cf66d4510557c37d5dc80739c88c47172bbb681d0651a7fbde4e0c196294839bdf9111429fecae0606d3f9dd34452622ced061e5f355ddc975af1818f4976 +doccontainersize 158020 +doccontainerchecksum 55835953df5f5485565483e6bfa5f255cf10f79fb19da6a800b625e16556a851ea981a848c33608f55df691f33284964b4fa8f5f4a2b477ede54aa78e4579862 +docfiles size=42 RELOC/doc/fonts/cormorantgaramond/OFL.txt RELOC/doc/fonts/cormorantgaramond/README details="Readme" RELOC/doc/fonts/cormorantgaramond/cormorantgaramond.pdf details="Font samples" RELOC/doc/fonts/cormorantgaramond/cormorantgaramond.tex -runfiles size=3861 - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_3icris.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_3urj7q.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_3vbv32.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_43yltf.enc +runfiles size=5259 + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_2ahxjn.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_2dmsey.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_2fszuh.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_2lk3hg.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_2woykf.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_33cvom.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_36gbzh.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_3yisgl.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_4fize4.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_4zdigg.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_554p77.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_6hdfic.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_6lx7yl.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_6cgyqp.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_7l65a5.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_7lhnpv.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_am2k4x.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_av2vwt.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ahqoow.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_baamnb.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_bkhmoh.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_bzm33o.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_cg54tf.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_brevmk.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_cavuvz.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ctw2ju.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_daxi6k.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_dddv5p.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_d6dwy7.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_edlrwy.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ehskq2.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_elwezr.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ezmsqi.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ffpzr6.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_fgdmu7.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ffyb57.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_fnl4sj.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_foxgxp.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_fqbaih.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ftv5gz.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_fvphkr.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_g7ehha.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_gfgzzm.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ggoxrw.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_govhzk.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_gqk2yc.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_gqwbbl.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_h2anjo.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_h3pyvr.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_hjezmg.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_hghaxu.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_hnmd4t.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ho7x2y.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_i34oju.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_i256wl.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_i4ztt6.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ijkaup.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_imua2m.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ira4mj.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ivrbey.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_j2hlib.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_j3d225.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_jg7lls.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_jjsoxq.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_jmc6fu.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_jsp4ta.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_jwbavo.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_jzrauo.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_k54atz.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_kzifr7.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_l2f73r.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_mlhtnn.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_mlvm5c.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_kssxfj.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_kwxzcp.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_lksf3x.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_mbw5ca.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_mq3pk7.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_nnemy2.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_myrl74.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_nniu67.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_nuykkd.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_nxkups.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_nxzswi.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_nz72va.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_o3cfq5.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_od3ly4.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_olzkph.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_oqfidh.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ot3bwa.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_p3eary.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ourxch.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_p2rbif.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_p2vmxo.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_p3liqf.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_p4fks4.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_p5fsj2.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_pipdsi.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_pjkms5.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ppb7ce.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_p75lhd.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ptyukg.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_q6iycd.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_qaa67y.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_qco72e.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_qnkxku.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_qrc2n2.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_rer7iq.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_rhddgm.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_rnb5y6.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_rohdbu.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ry5pl7.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_s4zbbx.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_sowbon.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_tbob4m.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_tnjfp2.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ton3vl.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_sq3ew7.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_txosmw.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_usix3v.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_uxvg3l.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_vdawiq.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_v7t4yx.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_vdpe4c.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_vnv5uk.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_vptg7z.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_vs5evg.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_vuc6nl.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_xdrmrd.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_w4zlgd.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_wqocre.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_wxr4jp.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_x3eqji.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_x4jcxc.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_xwhmgi.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_y6ew3p.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_yah5fp.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ycbsw5.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_ygpojz.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_yifvzr.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_yksu3h.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_yo6qap.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_yosq6z.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_yxys5l.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_zapu5s.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_zcfdr3.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_zni3vm.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_zvngta.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_zwpqa7.enc - RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_zwutdq.enc + RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_zl5xe4.enc RELOC/fonts/enc/dvips/cormorantgaramond/cgrm_zzgqip.enc RELOC/fonts/map/dvips/cormorantgaramond/CormorantGaramond.map RELOC/fonts/tfm/catharsis/cormorantgaramond/CormorantGaramond-Bold-inf-ly1.tfm @@ -74521,10 +74522,10 @@ runfiles size=3861 RELOC/tex/latex/cormorantgaramond/TS1CormorantGaramond-TLF.fd RELOC/tex/latex/cormorantgaramond/TS1CormorantGaramond-TOsF.fd catalogue-ctan /fonts/cormorantgaramond -catalogue-date 2019-10-21 22:27:49 +0200 +catalogue-date 2019-12-08 23:13:50 +0100 catalogue-license ofllppl catalogue-topics font font-body font-proportional font-serif font-ttf font-type1 font-supp font-t1enc -catalogue-version 3.00 +catalogue-version 3.601 name correctmathalign category Package @@ -102360,7 +102361,7 @@ catalogue-version 2.28 name epstopdf-pkg category Package -revision 52979 +revision 53070 shortdesc Call epstopdf "on the fly" relocated 1 longdesc The package adds support for EPS files in the graphicx package @@ -102368,16 +102369,16 @@ longdesc when running under pdfTeX. If an EPS graphic is detected, the longdesc package spawns a process to convert the EPS to PDF, using the longdesc script epstopdf. This of course requires that shell escape is longdesc enabled for the pdfTeX run. -containersize 4212 -containerchecksum de91aa2be6f3de0c2eb2de3eeb41439952b708d52a2a57ebbb30f272c9a32c937317024fbc21179ad9790b124dee94890dc608e4cbe73839ca6b00b0dbe88cc7 -doccontainersize 362176 -doccontainerchecksum 7a95fe00f56466ba287dd7595aacf03081d5df6037c5f6403081a0043b6846ade485285e2fbb7f5deefbcf6c484b3d696fca9dd7e0d6790760f84e1bdc1e4ca8 -docfiles size=91 +containersize 4200 +containerchecksum 92c2c7cbe4ad5c02a41522ef1d938d8ea1a9a30d0b7cd8a92b1fa4b9404690c00695a92ce951456460cae5c73f66fd2694fc63089ed05f8ea49a7ce9cb003dee +doccontainersize 353844 +doccontainerchecksum 7b641b38853600e893e336b1b5333acc22a01ef060ec0636b5fd54ec63f29e14633e1fbfd3e88e6a10792e7415889a6e41cefde19b7ac2d1a6112591bf69e8b4 +docfiles size=89 RELOC/doc/latex/epstopdf-pkg/README.md details="README" RELOC/doc/latex/epstopdf-pkg/epstopdf.pdf details="Package documentation" -srccontainersize 12492 -srccontainerchecksum b1dba3833bdb63ab02f5425d0683e74e99d8a3d5e4998be6ed05f6a55d3fdd90ff2672844f43307167220ec4071de87f1a8e21e3c31847863120c36f1cf291a4 -srcfiles size=15 +srccontainersize 11944 +srccontainerchecksum 13667a0d7ec0e7e7b82a374c35f05ef4f1b0083499eab02107b430c8a4ebe21904d0004ed33a9c807497f4ae06a2c830eb8bb26bfafb298d8cd6a10c7ab89adb +srcfiles size=14 RELOC/source/latex/epstopdf-pkg/epstopdf.drv RELOC/source/latex/epstopdf-pkg/epstopdf.dtx RELOC/source/latex/epstopdf-pkg/epstopdf.ins @@ -102388,10 +102389,10 @@ catalogue-also epstopdf catalogue-contact-bugs https://github.com/ho-tex/epstopdf/issues catalogue-contact-repository https://github.com/ho-tex/epstopdf catalogue-ctan /macros/latex/contrib/epstopdf-pkg -catalogue-date 2019-11-30 20:36:53 +0100 +catalogue-date 2019-12-09 15:17:07 +0100 catalogue-license lppl1.3 catalogue-topics graphics-epspdf callback -catalogue-version 2.9 +catalogue-version 2.10 name epstopdf.aarch64-linux category Package @@ -248003,7 +248004,7 @@ catalogue-version 1.0h name reledmac category Package -revision 52970 +revision 53071 shortdesc Typeset scholarly editions relocated 1 longdesc A package for typesetting scholarly critical editions, @@ -248012,10 +248013,10 @@ longdesc itself was a LaTeX port of the plain TeX EDMAC macros. The longdesc package supports indexing by page and by line numbers, and longdesc simple tabular- and array-style environments. The package is longdesc distributed with the related reledpar package. -containersize 52936 -containerchecksum 1853cdfada8861b5ca0553a68bbeda70ba6ccdf3b1a1a18724144c65319049dd12db8b0bb56738582ec679fcd2400126d102a2bad58b6b204d74ef91492144ac -doccontainersize 8551088 -doccontainerchecksum 7373a205ed90d407918d7c7ed631d8cb9c35c9676d15ee2501c1d6f0baedf4e780d9384a0a29b8efef476336f58582640098610ad615d68567ae6871973581bb +containersize 52912 +containerchecksum 8b183bdfa9920207b6aead8230423e5719a2643363b286b49dfa68becb043d9696496353900c2a349c97c0e126f8220b9f891807955f0b0c3c8ae99a4f9eeac6 +doccontainersize 8551380 +doccontainerchecksum d538b673a4e02d02836a41f5c507d939d68047962acc0a173ecbc10f681eec6c293e09df02c6f87d4db859f622b7ae94fae645effa43482658d3fe5959d80e1a docfiles size=2571 RELOC/doc/latex/reledmac/README details="Readme" RELOC/doc/latex/reledmac/doc-include/migrate-mac.dtx @@ -248120,8 +248121,8 @@ docfiles size=2571 RELOC/doc/latex/reledmac/migration.pdf RELOC/doc/latex/reledmac/reledmac.pdf details="Package documentation" RELOC/doc/latex/reledmac/reledpar.pdf -srccontainersize 203556 -srccontainerchecksum b307312555c1c180f68dc6907be2d2a84720b00fc31b572846dcd6453c29660884f437363c861f2b1ea8df74d4337c764a77dcfa0cdc6ed2705a2db6602d825f +srccontainersize 203624 +srccontainerchecksum 49e0760a1495db0aa0405f59648e13d02059aa35bea4f412200d34e7d265edb72bf59a94332c64e9301913bb9e7e52db5deebd98454a64fa77e9d4d13b9ab4e6 srcfiles size=288 RELOC/source/latex/reledmac/migration.dtx RELOC/source/latex/reledmac/reledmac.dtx @@ -248136,10 +248137,10 @@ catalogue-contact-bugs https://github.com/maieul/ledmac/issues/ catalogue-contact-repository https://github.com/maieul/ledmac/ catalogue-contact-support http://geekographie.maieul.net/146 catalogue-ctan /macros/latex/contrib/reledmac -catalogue-date 2019-11-28 21:59:49 +0100 +catalogue-date 2019-12-09 20:37:06 +0100 catalogue-license lppl1.3 catalogue-topics crit-ed -catalogue-version 2.32.2 +catalogue-version 2.32.3 name relenc category Package @@ -283800,15 +283801,15 @@ docfiles size=572 name texlive-docindex category TLCore -revision 53055 +revision 53066 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 109876 -containerchecksum 3dc8ffa5f6aa74fe57774791cd8c7363aa9f462c0101b8f35ddbd55aca5f300b131c765ed93fad47e505897413b899ef338f146069efbeea0bcf9935518b5480 -doccontainersize 156792 -doccontainerchecksum 8575661127af0ba225c529b19d76b4b82fdbd0c864162029815a63b81358b09bd0f56487e980f38169f61e0027f5097156df92dbfda6e17b3e1b476be4597736 +containerchecksum ccc831ff6b0a0ca3c724a66b2727605c1168a038c759cc93f6c2e3461cf801c412fa9fd828069e61111029cddeb40a092747bce40b3762fe1aec324de46c2159 +doccontainersize 156688 +doccontainerchecksum a833318e2950fccf05cf310583872100b243f3d1e94a75be3a6214abe5982ada273b36999364882f118a5b3223295582b1651a9a314c8212b8c21a9ba2627673 docfiles size=307 doc.html runfiles size=270 @@ -284025,17 +284026,17 @@ docfiles size=503 name texlive-scripts category TLCore -revision 53060 +revision 53066 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 85448 -containerchecksum 1d6c2f2ef4779eab4a6faef68c3ad472862371890544c6a21c444a2b02d933eaf2ea0f3de7dabe710dbb2228033fb07fd8893e09fd744ae79b0e133b78a3b641 +containersize 85460 +containerchecksum eb5965a7967f0ed226227c928d8bbe8bb76aae87e5e0f8666c33b728fa353faafb4a1bc5eee00453aca69b20a0eb0c5352d79901a8829a3ab0bfb26aae0ce8ea doccontainersize 51204 -doccontainerchecksum aca053d77f4b7c5ee2f6f136f70b4347072cb73a585fb78f6451cc1b4904df4595d22c0f84b66204ccdf00c54a8b46524bf8df8be0157ae17b44255c95804878 +doccontainerchecksum 848f2c90408ee9786dcad090f43e8ffe20402e72f8bb157fb65c15316d67b6417943ed16ba14938b22569a4feaafdfb711c9eebdc00d78c16dc99de700d1a9d8 docfiles size=20 texmf-dist/doc/man/man1/install-tl.1 texmf-dist/doc/man/man1/install-tl.man1.pdf @@ -315332,16 +315333,16 @@ catalogue-version 2.22 name xetexref category Package -revision 50244 +revision 53068 shortdesc Reference documentation of XeTeX relocated 1 longdesc The package comprises reference documentation for XeTeX longdesc detailing its extended features. containersize 472 -containerchecksum d7c7d2a404de1fd609f172dc0f8173cfb6a255a220700cb4d8659002e2793a01e43caa7bb483fa343a85a84ba545edd7e7c985b92045855285f1704eafb20df1 -doccontainersize 160552 -doccontainerchecksum 818383480f2e20d7e00a8ad77423e9326cdd130ec1d1dba0dcb536fd13e7e287b4e8a67460eb510ed786b3d1e7f65f92c1627cdec94860ba0622ee2b92c91974 -docfiles size=49 +containerchecksum 926ebf995dea04300dee8cc061361f7eac8efe08ffd3ada87be5b682e2c581d3c2965328ec7c93deab8d6bb9311a0cb27ff1a14a7332c407be713657a136959a +doccontainersize 157320 +doccontainerchecksum ad0700f1e1053abd8264f20ad04b7ade28cca6f5757e158f8ed031f493a966f5b62a197a34ba39ece7c3cb68d469334521a6325c2b4276dbfbc5c2519e13b33e +docfiles size=48 RELOC/doc/xetex/xetexref/README.txt details="Readme" RELOC/doc/xetex/xetexref/xetex-reference.pdf details="The document itself" RELOC/doc/xetex/xetexref/xetex-reference.tex @@ -315349,7 +315350,7 @@ catalogue-contact-bugs https://github.com/wspr/xetexref/issues catalogue-contact-repository https://github.com/wspr/xetexref/ catalogue-contact-support http://lists.tug.org/xetex catalogue-ctan /info/xetexref -catalogue-date 2019-03-05 08:57:15 +0100 +catalogue-date 2019-12-09 08:45:23 +0100 catalogue-license lppl1.3c catalogue-topics documentation xetex diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 index 922f0d2466..050dde25c9 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 @@ -1 +1 @@ -340a4c1f9e618680a4771f527b83ccc3 texlive.tlpdb +06cc2292bb0262e649f86014bab7c52f texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 index 55d21392c5..f4dc6ba472 100644 --- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 @@ -1 +1 @@ -d6b3fcd787f827947861fe6cbbf93ba069beae6408a1e972b6984a5b4242a683678fee67e5ebe30a611eb56c8af039ae69fd6a607a30c11ac99d26feb21e7ac9 texlive.tlpdb +dc9f1682eb075a03d67929eb7d9cd15a3ea1e5c4a0986cf5e153585386bd886b76167ce42a127391348f45c8433eeef9565017ef666c39269077c26263a60980 texlive.tlpdb diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc index cc73325a7e..40eb1d211a 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----- -iQEcBAEBCgAGBQJd7ZvOAAoJEEzhh34ZQ4xwzvkIAIvD+4iOMNJjrnouPQ/nAOci -m76NFGmPhpgp4apEU2LQCHWfApISsytTj40mjePA2NhJJ22n15MVcmKSFrQ6SOtB -l8RPhMEEP/g+kuIZWT/gDr+5q8tr+rYQbPuWjHtLy8WElAi4Rrg6mbRl/xtYxJQ+ -KJGH2RBjuHhOKn8nIekjot+VRWj3e0H03AgkkzO3FMUwVAiomNUS+UEgWH0phbV/ -180q+J/pVryW9pyJVSvQ/XCB5v/YO8DhNBBl04xNxgqZi7ldKcKTlK4GDq1iIvf3 -2sxjucpEyvBqhRO3qLS8Ke2+nZOUQ2fxOdnvXzrmSxMXHlhc/hqbolT8gkAI0Gc= -=s3Wv +iQEcBAEBCgAGBQJd7uz1AAoJEEzhh34ZQ4xw/EEH+QHRP5QbonJ3/fNMA7E4GjHm +ypEnkeSAf5lStxKlMnVDxOAmfRzXRmuYJBbchyOvBqI07G1AtSpZ8TM8NpZ1314M +unfVasG11iR5Es2iLnXywabEqaBkoydmjpwL/eIHhOEfccA9SvZa4n9zf7ZGUH0x +z9V/CihDQ7nwSfWGgNdzCg+DXqmvfJ5D+U84CbrbudbYTslL/7htw8vVEqrLdnrS +k9OaykzUY7CD2sVdazF80BcuCoMN8J4zmT5cmdLdXp9OUaPI37bOHo9vVQJyS32S +EWyt+FfWlYzdHcSnQPN8k+FbhHJmUR/HKkwWY9sffsVAA4F2XBZmveg27+9AgtQ= +=WHr2 -----END PGP SIGNATURE----- diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz index 173cc79271..84ff2a2910 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/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini index 2215549a67..25e1aaca88 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=1575926455 +date=1576012629 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=cf3073f1225c0f817d738385f2110b12 +lstdigest=85bd2dd680fdb05ce86de81efc5fec42 numpkg=3802 relstate=next -version=7282 +version=7283 diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini index 49cc6bf72d..e042c49145 100644 --- a/systems/win32/miktex/tm/packages/pr.ini +++ b/systems/win32/miktex/tm/packages/pr.ini @@ -2,9 +2,9 @@ [repository] -date=1575925906 +date=1576012303 lastupd=atenddvi biber-darwin-x86_64 biber-doc biber-linux-x86_64 biber-windows-x64 biber-windows-x86 biblatex cormorantgaramond csquotes curve2e economic elegantnote glossaries hologo mathcommand mcf2graph oberdiek pdflscape plex pmboxdraw -lstdigest=3a04b7f7d8557000755bb53ba10429f9 +lstdigest=bf41a0671ed901a5b2b5e3e39b991314 numpkg=3802 relstate=stable -version=7282 +version=7283 diff --git a/systems/win32/w32tex/ChangeLog b/systems/win32/w32tex/ChangeLog index 40222945de..20ee102228 100644 --- a/systems/win32/w32tex/ChangeLog +++ b/systems/win32/w32tex/ChangeLog @@ -1,5 +1,11 @@ W32TeX (x86 & x64) ChangeLog +[2019/12/09] +(01) biblatex-biber.tar.xz + Update biber.exe (2.14), and biblatex. +(02) win64/biblatex-biber-w64.tar.xz + Update biber.exe (2.14). + [2019/12/08] (01) dvitools-w32.tar.xz Update dvisvgm.exe (2.8.2). diff --git a/systems/win32/w32tex/TLW64/00README.TLW64 b/systems/win32/w32tex/TLW64/00README.TLW64 index be6b492428..08051d4232 100644 --- a/systems/win32/w32tex/TLW64/00README.TLW64 +++ b/systems/win32/w32tex/TLW64/00README.TLW64 @@ -2,7 +2,11 @@ In the following, $INSTALLDIR is $SELFAUTOPARENT in the TeX Live, -that is, the parent directory of "texmf-dist". +that is, the parent directory of "texmf-dist". Actually the +directory $INSTALLDIR is shown by a command: + + kpsewhich --var-value=SELFAUTOPARENT + (1) Expand the file tl-win64.zip in $INSTALLDIR, diff --git a/timestamp b/timestamp index 1e8afa5c6c..fed4802832 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-10-02-02 +2019-12-11-02-02 -- cgit v1.2.3