From 116405a01899ba783a14653896d02888e298fbb1 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 15 Dec 2007 00:23:34 +0000 Subject: oberdiek: luacolor1.0 luatex1.0 ... (14dec07) git-svn-id: svn://tug.org/texlive/trunk@5785 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf | Bin 164796 -> 164797 bytes Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf | Bin 139007 -> 139007 bytes Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf | Bin 219558 -> 219898 bytes .../texmf-dist/doc/latex/oberdiek/askinclude.pdf | Bin 616501 -> 616501 bytes Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf | Bin 213559 -> 213785 bytes Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf | Bin 130109 -> 130108 bytes .../texmf-dist/doc/latex/oberdiek/attachfile2.pdf | Bin 216208 -> 216208 bytes Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf | Bin 134584 -> 134585 bytes .../texmf-dist/doc/latex/oberdiek/bigintcalc.pdf | Bin 308288 -> 308596 bytes Master/texmf-dist/doc/latex/oberdiek/bitset.pdf | Bin 671504 -> 671859 bytes Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf | Bin 297551 -> 296887 bytes Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf | Bin 235143 -> 235141 bytes Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf | Bin 154112 -> 154332 bytes Master/texmf-dist/doc/latex/oberdiek/centernot.pdf | Bin 126097 -> 126097 bytes Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf | Bin 130717 -> 130717 bytes Master/texmf-dist/doc/latex/oberdiek/classlist.pdf | Bin 127081 -> 127082 bytes .../texmf-dist/doc/latex/oberdiek/colonequals.pdf | Bin 135848 -> 135848 bytes Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf | Bin 119357 -> 119357 bytes Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf | Bin 223045 -> 223344 bytes Master/texmf-dist/doc/latex/oberdiek/engord.pdf | Bin 157260 -> 157396 bytes Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf | Bin 175109 -> 175338 bytes Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf | Bin 144294 -> 148728 bytes Master/texmf-dist/doc/latex/oberdiek/flags.pdf | Bin 135730 -> 135730 bytes Master/texmf-dist/doc/latex/oberdiek/grfext.pdf | Bin 159185 -> 159406 bytes Master/texmf-dist/doc/latex/oberdiek/grffile.pdf | Bin 160230 -> 160230 bytes Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf | Bin 141775 -> 140648 bytes Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf | Bin 193957 -> 193957 bytes Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf | Bin 147134 -> 147133 bytes Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf | Bin 133317 -> 133317 bytes .../texmf-dist/doc/latex/oberdiek/hypdestopt.pdf | Bin 157766 -> 157766 bytes Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf | Bin 164786 -> 164788 bytes Master/texmf-dist/doc/latex/oberdiek/hypgotoe.pdf | Bin 139046 -> 139046 bytes Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf | Bin 122282 -> 122282 bytes Master/texmf-dist/doc/latex/oberdiek/iflang.pdf | Bin 178199 -> 178338 bytes Master/texmf-dist/doc/latex/oberdiek/ifluatex.pdf | Bin 0 -> 137801 bytes Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf | Bin 149825 -> 149973 bytes Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf | Bin 144247 -> 144511 bytes Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf | Bin 162317 -> 162537 bytes Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf | Bin 492087 -> 492087 bytes Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf | Bin 288501 -> 288844 bytes Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf | Bin 268454 -> 269252 bytes Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf | Bin 198613 -> 198778 bytes .../texmf-dist/doc/latex/oberdiek/listingsutf8.pdf | Bin 154110 -> 154111 bytes Master/texmf-dist/doc/latex/oberdiek/luacolor.pdf | Bin 0 -> 154103 bytes Master/texmf-dist/doc/latex/oberdiek/luatex.pdf | Bin 0 -> 205420 bytes Master/texmf-dist/doc/latex/oberdiek/magicnum.pdf | Bin 0 -> 161348 bytes Master/texmf-dist/doc/latex/oberdiek/magicnum.txt | 83 + .../texmf-dist/doc/latex/oberdiek/makerobust.pdf | Bin 124089 -> 124089 bytes Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf | Bin 744993 -> 786151 bytes Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf | Bin 160335 -> 160336 bytes Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf | Bin 160349 -> 165652 bytes .../texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf | Bin 143676 -> 143677 bytes Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf | Bin 161333 -> 161332 bytes .../doc/latex/oberdiek/pdfcolparallel.pdf | Bin 156824 -> 160121 bytes .../doc/latex/oberdiek/pdfcolparcolumns.pdf | Bin 150206 -> 150206 bytes Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf | Bin 164852 -> 164852 bytes Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf | Bin 218189 -> 218709 bytes Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf | Bin 156574 -> 156576 bytes .../texmf-dist/doc/latex/oberdiek/pdftexcmds.pdf | Bin 166880 -> 167805 bytes Master/texmf-dist/doc/latex/oberdiek/picture.pdf | Bin 142012 -> 142011 bytes Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf | Bin 182727 -> 182727 bytes Master/texmf-dist/doc/latex/oberdiek/refcount.pdf | Bin 135490 -> 135491 bytes Master/texmf-dist/doc/latex/oberdiek/selinput.pdf | Bin 545308 -> 545308 bytes .../texmf-dist/doc/latex/oberdiek/setouterhbox.pdf | Bin 177799 -> 178077 bytes Master/texmf-dist/doc/latex/oberdiek/settobox.pdf | Bin 143992 -> 143993 bytes Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf | Bin 221429 -> 221777 bytes Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf | Bin 131440 -> 131441 bytes Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf | Bin 413271 -> 413272 bytes Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf | Bin 169044 -> 169047 bytes Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf | Bin 119401 -> 119401 bytes Master/texmf-dist/doc/latex/oberdiek/telprint.pdf | Bin 153738 -> 153929 bytes .../doc/latex/oberdiek/test/alphalph-test1.tex | 5 +- .../doc/latex/oberdiek/test/atbegshi-test1.tex | 5 +- .../doc/latex/oberdiek/test/bigintcalc-test1.tex | 5 +- .../doc/latex/oberdiek/test/bitset-test1.tex | 5 +- .../doc/latex/oberdiek/test/catchfile-test1.tex | 5 +- .../doc/latex/oberdiek/test/embedfile-test1.tex | 5 +- .../doc/latex/oberdiek/test/engord-test1.tex | 5 +- .../doc/latex/oberdiek/test/epstopdf-test1.tex | 5 +- .../doc/latex/oberdiek/test/etexcmds-test1.tex | 5 +- .../doc/latex/oberdiek/test/etexcmds-test3.tex | 2 +- .../doc/latex/oberdiek/test/etexcmds-test4.tex | 2 +- .../doc/latex/oberdiek/test/grfext-test1.tex | 5 +- .../doc/latex/oberdiek/test/iflang-test1.tex | 5 +- .../doc/latex/oberdiek/test/ifluatex-test1.tex | 108 ++ .../doc/latex/oberdiek/test/ifpdf-test1.tex | 5 +- .../doc/latex/oberdiek/test/ifvtex-test1.tex | 5 +- .../doc/latex/oberdiek/test/infwarerr-test1.tex | 5 +- .../doc/latex/oberdiek/test/intcalc-test1.tex | 5 +- .../doc/latex/oberdiek/test/kvoptions-test1.tex | 5 +- .../doc/latex/oberdiek/test/kvsetkeys-test1.tex | 5 +- .../doc/latex/oberdiek/test/luacolor-test1.tex | 111 ++ .../doc/latex/oberdiek/test/luacolor-test2.tex | 42 + .../doc/latex/oberdiek/test/luacolor-test3.tex | 41 + .../doc/latex/oberdiek/test/luatex-test1.tex | 109 ++ .../doc/latex/oberdiek/test/luatex-test2.tex | 113 ++ .../doc/latex/oberdiek/test/luatex-test3.tex | 113 ++ .../doc/latex/oberdiek/test/luatex-test4.tex | 185 +++ .../doc/latex/oberdiek/test/luatex-test5.tex | 45 + .../doc/latex/oberdiek/test/magicnum-test1.tex | 109 ++ .../doc/latex/oberdiek/test/magicnum-test2.tex | 66 + .../doc/latex/oberdiek/test/magicnum-test3.tex | 62 + .../doc/latex/oberdiek/test/pdfcol-test1.tex | 7 +- .../doc/latex/oberdiek/test/pdfcol-test2.tex | 4 +- .../doc/latex/oberdiek/test/pdfcol-test3.tex | 4 +- .../doc/latex/oberdiek/test/pdfcol-test4.tex | 41 + .../latex/oberdiek/test/pdfcolparallel-test1.tex | 43 +- .../doc/latex/oberdiek/test/pdfescape-test1.tex | 5 +- .../doc/latex/oberdiek/test/setouterhbox-test1.tex | 5 +- .../doc/latex/oberdiek/test/soulutf8-test1.tex | 5 +- .../doc/latex/oberdiek/test/telprint-test1.tex | 5 +- .../texmf-dist/doc/latex/oberdiek/transparent.pdf | Bin 126894 -> 126894 bytes Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf | Bin 137949 -> 137950 bytes Master/texmf-dist/doc/latex/oberdiek/zref.pdf | Bin 293231 -> 293241 bytes Master/texmf-dist/scripts/oberdiek/luacolor.lua | 169 ++ Master/texmf-dist/scripts/oberdiek/magicnum.lua | 227 +++ .../scripts/oberdiek/oberdiek.luacolor.lua | 169 ++ .../scripts/oberdiek/oberdiek.luatex.lua | 48 + .../scripts/oberdiek/oberdiek.magicnum.lua | 227 +++ .../scripts/oberdiek/oberdiek.pdftexcmds.lua | 295 ++++ Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua | 295 ++++ .../texmf-dist/source/latex/oberdiek/alphalph.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/atbegshi.dtx | 7 +- .../source/latex/oberdiek/bigintcalc.dtx | 7 +- Master/texmf-dist/source/latex/oberdiek/bitset.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/bmpsize.dtx | 48 + .../texmf-dist/source/latex/oberdiek/catchfile.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/embedfile.dtx | 7 +- Master/texmf-dist/source/latex/oberdiek/engord.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/epstopdf.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/etexcmds.dtx | 84 +- Master/texmf-dist/source/latex/oberdiek/grfext.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/holtxdoc.dtx | 15 +- Master/texmf-dist/source/latex/oberdiek/iflang.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/ifluatex.dtx | 675 ++++++++ Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx | 23 +- Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/infwarerr.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/intcalc.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/kvoptions.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/kvsetkeys.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/luacolor.dtx | 963 +++++++++++ Master/texmf-dist/source/latex/oberdiek/luatex.dtx | 1756 ++++++++++++++++++++ .../texmf-dist/source/latex/oberdiek/magicnum.dtx | 1384 +++++++++++++++ .../texmf-dist/source/latex/oberdiek/oberdiek.ins | 6 +- .../texmf-dist/source/latex/oberdiek/oberdiek.tex | 66 +- Master/texmf-dist/source/latex/oberdiek/pdfcol.dtx | 90 +- .../source/latex/oberdiek/pdfcolparallel.dtx | 497 ++++-- .../texmf-dist/source/latex/oberdiek/pdfescape.dtx | 7 +- .../source/latex/oberdiek/pdftexcmds.dtx | 744 +++++---- .../source/latex/oberdiek/setouterhbox.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/soulutf8.dtx | 7 +- .../texmf-dist/source/latex/oberdiek/telprint.dtx | 7 +- Master/texmf-dist/source/latex/oberdiek/zref.dtx | 2 +- .../texmf-dist/tex/generic/oberdiek/etexcmds.sty | 40 +- .../texmf-dist/tex/generic/oberdiek/ifluatex.sty | 167 ++ Master/texmf-dist/tex/generic/oberdiek/ifpdf.sty | 4 +- .../tex/generic/oberdiek/luatex-loader.sty | 118 ++ Master/texmf-dist/tex/generic/oberdiek/luatex.sty | 419 +++++ .../texmf-dist/tex/generic/oberdiek/magicnum.sty | 286 ++++ Master/texmf-dist/tex/generic/oberdiek/pdfcol.sty | 26 +- .../texmf-dist/tex/generic/oberdiek/pdftexcmds.sty | 372 +---- Master/texmf-dist/tex/latex/oberdiek/holtxdoc.sty | 3 +- Master/texmf-dist/tex/latex/oberdiek/luacolor.sty | 153 ++ .../tex/latex/oberdiek/pdfcolparallel.sty | 341 ++-- Master/texmf-dist/tex/latex/oberdiek/zref-base.sty | 2 +- 166 files changed, 10123 insertions(+), 1119 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/oberdiek/ifluatex.pdf create mode 100644 Master/texmf-dist/doc/latex/oberdiek/luacolor.pdf create mode 100644 Master/texmf-dist/doc/latex/oberdiek/luatex.pdf create mode 100644 Master/texmf-dist/doc/latex/oberdiek/magicnum.pdf create mode 100644 Master/texmf-dist/doc/latex/oberdiek/magicnum.txt create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/ifluatex-test1.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test1.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test2.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test3.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/luatex-test1.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/luatex-test2.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/luatex-test3.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/luatex-test4.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/luatex-test5.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test1.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test2.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test3.tex create mode 100644 Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test4.tex create mode 100644 Master/texmf-dist/scripts/oberdiek/luacolor.lua create mode 100644 Master/texmf-dist/scripts/oberdiek/magicnum.lua create mode 100644 Master/texmf-dist/scripts/oberdiek/oberdiek.luacolor.lua create mode 100644 Master/texmf-dist/scripts/oberdiek/oberdiek.luatex.lua create mode 100644 Master/texmf-dist/scripts/oberdiek/oberdiek.magicnum.lua create mode 100644 Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua create mode 100644 Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua create mode 100644 Master/texmf-dist/source/latex/oberdiek/ifluatex.dtx create mode 100644 Master/texmf-dist/source/latex/oberdiek/luacolor.dtx create mode 100644 Master/texmf-dist/source/latex/oberdiek/luatex.dtx create mode 100644 Master/texmf-dist/source/latex/oberdiek/magicnum.dtx create mode 100644 Master/texmf-dist/tex/generic/oberdiek/ifluatex.sty create mode 100644 Master/texmf-dist/tex/generic/oberdiek/luatex-loader.sty create mode 100644 Master/texmf-dist/tex/generic/oberdiek/luatex.sty create mode 100644 Master/texmf-dist/tex/generic/oberdiek/magicnum.sty create mode 100644 Master/texmf-dist/tex/latex/oberdiek/luacolor.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf b/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf index 925257e6fa6..475b976e517 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf and b/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf b/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf index cf5d1530006..bcffc6fdeec 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf and b/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf b/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf index afc2cacdbfa..2f58e65ef8b 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf and b/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/askinclude.pdf b/Master/texmf-dist/doc/latex/oberdiek/askinclude.pdf index cf3d1eb73c9..b3a6af264c1 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/askinclude.pdf and b/Master/texmf-dist/doc/latex/oberdiek/askinclude.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf b/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf index b2073732686..8e67d187b2a 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf and b/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf b/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf index 41307e71ba4..d3bc5fbdcea 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf and b/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf b/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf index b75f0e13df3..a4fcfb4c57f 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf and b/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf b/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf index db642a78d93..aced3fdda39 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf and b/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf index 1fcb5046b51..11b9a540e4a 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf and b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf b/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf index f6b56b36a4c..477591c6342 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf and b/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf b/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf index 73dd5a7e54c..5fc83d250ab 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf and b/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf b/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf index 27eab47f765..d258551644d 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf and b/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf b/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf index cca0c41a8be..5760503c2ce 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf and b/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf b/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf index 4a3e3eac009..ef472ca83ba 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf and b/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf b/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf index 96bdd17466c..2aedbb8e677 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf and b/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf b/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf index 85e081358c5..ee9126347ae 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf and b/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf b/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf index 222eb5baf28..0f769f7f3d7 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf and b/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf b/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf index f43a330f0df..ce8a354b1a5 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf and b/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf b/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf index 85a82b0fb33..c8a7834c9f1 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf and b/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/engord.pdf b/Master/texmf-dist/doc/latex/oberdiek/engord.pdf index 962c7e61aa0..02e4200e15e 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/engord.pdf and b/Master/texmf-dist/doc/latex/oberdiek/engord.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf b/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf index db46fb73047..b7f8999e24f 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf and b/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf b/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf index a7c2071c129..1ba9905341b 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf and b/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/flags.pdf b/Master/texmf-dist/doc/latex/oberdiek/flags.pdf index 0e1dfe13862..ae3e98bb2f8 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/flags.pdf and b/Master/texmf-dist/doc/latex/oberdiek/flags.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf b/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf index a3f06f8b998..b0f451e8793 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf and b/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf b/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf index 0c30fe44cdf..474899f1b51 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf and b/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf b/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf index 3091a808ae4..c0e128bbc26 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf and b/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf b/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf index ab7fc82a096..feab29b2aa3 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf and b/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf index 6546217c62d..ecd90fc299b 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf and b/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf index dfee2bcbc52..9474272c0b6 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf and b/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf index afef2197187..b424e119f5f 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf and b/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf index fcd5c8bd284..5ebed11ab5d 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf and b/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/hypgotoe.pdf b/Master/texmf-dist/doc/latex/oberdiek/hypgotoe.pdf index eb8c37513fa..70038f34596 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/hypgotoe.pdf and b/Master/texmf-dist/doc/latex/oberdiek/hypgotoe.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf b/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf index 93044a7ba23..72d7b0c4636 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf and b/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf b/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf index df82e88803e..b8009f4b7ef 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf and b/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/ifluatex.pdf b/Master/texmf-dist/doc/latex/oberdiek/ifluatex.pdf new file mode 100644 index 00000000000..b086747f822 Binary files /dev/null and b/Master/texmf-dist/doc/latex/oberdiek/ifluatex.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf b/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf index 2af34b820e4..50d5374b26c 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf and b/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf b/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf index fe3a7eeb9bb..cc39b00fa35 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf and b/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf b/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf index 6dfa855f5df..9f69424c491 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf and b/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf b/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf index 4f37da110e0..7723d96d23b 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf and b/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf b/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf index 892b6d7180c..c436daf9c00 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf and b/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf b/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf index 7d26d40ad05..16eb8acb9e3 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf and b/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf index 485558eff08..7ac7ff53e68 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf and b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/listingsutf8.pdf b/Master/texmf-dist/doc/latex/oberdiek/listingsutf8.pdf index feba8e09855..2ba5f8426ef 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/listingsutf8.pdf and b/Master/texmf-dist/doc/latex/oberdiek/listingsutf8.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/luacolor.pdf b/Master/texmf-dist/doc/latex/oberdiek/luacolor.pdf new file mode 100644 index 00000000000..d89a33a4cf1 Binary files /dev/null and b/Master/texmf-dist/doc/latex/oberdiek/luacolor.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/luatex.pdf b/Master/texmf-dist/doc/latex/oberdiek/luatex.pdf new file mode 100644 index 00000000000..895d6780c9e Binary files /dev/null and b/Master/texmf-dist/doc/latex/oberdiek/luatex.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/magicnum.pdf b/Master/texmf-dist/doc/latex/oberdiek/magicnum.pdf new file mode 100644 index 00000000000..22ea1271b71 Binary files /dev/null and b/Master/texmf-dist/doc/latex/oberdiek/magicnum.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/magicnum.txt b/Master/texmf-dist/doc/latex/oberdiek/magicnum.txt new file mode 100644 index 00000000000..f3e89d5a6f1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/magicnum.txt @@ -0,0 +1,83 @@ +tex.catcode + escape = 0 + begingroup = 1 + endgroup = 2 + math = 3 + align = 4 + eol = 5 + parameter = 6 + superscript = 7 + subscript = 8 + ignore = 9 + space = 10 + letter = 11 + other = 12 + active = 13 + comment = 14 + invalid = 15 +etex.grouptype + bottomlevel = 0 + simple = 1 + hbox = 2 + adjustedhbox = 3 + vbox = 4 + align = 5 + noalign = 6 + output = 8 + math = 9 + disc = 10 + insert = 11 + vcenter = 12 + mathchoice = 13 + semisimple = 14 + mathshift = 15 + mathleft = 16 +etex.iftype + none = 0 + char = 1 + cat = 2 + num = 3 + dim = 4 + odd = 5 + vmode = 6 + hmode = 7 + mmode = 8 + inner = 9 + void = 10 + hbox = 11 + vbox = 12 + x = 13 + eof = 14 + true = 15 + false = 16 + case = 17 + defined = 18 + csname = 19 + fontchar = 20 +etex.nodetype + none = -1 + char = 0 + hlist = 1 + vlist = 2 + rule = 3 + ins = 4 + mark = 5 + adjust = 6 + ligature = 7 + disc = 8 + whatsit = 9 + math = 10 + glue = 11 + kern = 12 + penalty = 13 + unset = 14 + maths = 15 +etex.interactionmode + batch = 0 + nonstop = 1 + scroll = 2 + errorstop = 3 +luatex.pdfliteral.mode + setorigin = 0 + page = 1 + direct = 2 diff --git a/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf b/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf index d474f82dde1..5f349f92d83 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf and b/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf b/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf index dd4fcbe13e1..a4a9dab0d8b 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf and b/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf b/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf index 1205bf39596..7abc36331df 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf index 6e3274ea1e5..2ba1f69a69d 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf index 63cd8c4c653..bad95dfa696 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf index a0495a74874..9cd0dd6e32d 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf index 0bb2c6ab27d..5b9eaf9ca4d 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf index f19d82ec485..ec6666bee2b 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf index b6fc8e9388c..bee0bcc7934 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf index 268aa7d00bb..1d27b58319e 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf index 67960ba996c..17d467fdcc7 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pdftexcmds.pdf b/Master/texmf-dist/doc/latex/oberdiek/pdftexcmds.pdf index 2baf85ef14a..ac661b741d9 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pdftexcmds.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pdftexcmds.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/picture.pdf b/Master/texmf-dist/doc/latex/oberdiek/picture.pdf index c99a4216aaa..ddab1d07165 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/picture.pdf and b/Master/texmf-dist/doc/latex/oberdiek/picture.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf b/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf index bc9bc58189a..f3da662c362 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf and b/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf b/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf index 9b02bd3d692..66a9210174a 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf and b/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf b/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf index d28c9a4a742..646fd049ef5 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf and b/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf b/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf index 17e5a3a9935..1fa31e9905d 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf and b/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf b/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf index 6eea3b335fb..0cd25e3b8b2 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf and b/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf b/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf index dfe7dc0628c..e56c2e94d5f 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf and b/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf b/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf index b56e1da2098..17368cdb12c 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf and b/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf b/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf index de25512e043..d3a1b212eee 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf and b/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf b/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf index 1578abe782b..174c82e8b16 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf and b/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf b/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf index 6f738bcb25e..1686336c713 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf and b/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf b/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf index ffe888e1b6a..90a9e569e9f 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf and b/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/alphalph-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/alphalph-test1.tex index 7f83416ca5f..d1fcfdbf51a 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/alphalph-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/alphalph-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input alphalph.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input alphalph.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/atbegshi-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/atbegshi-test1.tex index 3be6c2a4d2d..a906e1bdcce 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/atbegshi-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/atbegshi-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input atbegshi.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input atbegshi.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/bigintcalc-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/bigintcalc-test1.tex index f4b9042515a..564711e5bdb 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/bigintcalc-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/bigintcalc-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input bigintcalc.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input bigintcalc.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/bitset-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/bitset-test1.tex index 97a7ee7a12f..fb25bb63349 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/bitset-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/bitset-test1.tex @@ -79,6 +79,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input bitset.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -94,7 +97,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input bitset.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/catchfile-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/catchfile-test1.tex index 3b2f5cacc76..b3f662f0bf1 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/catchfile-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/catchfile-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input catchfile.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input catchfile.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/embedfile-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/embedfile-test1.tex index 54335f9d3d6..12c6e2da225 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/embedfile-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/embedfile-test1.tex @@ -81,6 +81,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input embedfile.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -96,7 +99,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input embedfile.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/engord-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/engord-test1.tex index 45c060a46a2..c8b9ec89ae8 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/engord-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/engord-test1.tex @@ -79,6 +79,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input engord.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -94,7 +97,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input engord.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/epstopdf-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/epstopdf-test1.tex index 1e26bd568ec..2a710f66f60 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/epstopdf-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/epstopdf-test1.tex @@ -84,6 +84,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input epstopdf.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -99,7 +102,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input epstopdf.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test1.tex index 8e321f0e4f2..2f8fe7d3061 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input etexcmds.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input etexcmds.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test3.tex index da5c70f24ba..90e72f0ba57 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test3.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test3.tex @@ -29,7 +29,7 @@ %% etexcmds-test4.tex. %% \NeedsTeXFormat{LaTeX2e} -\ProvidesFile{etexcmds-test3.tex}[2007/09/09 v1.1 Test file for LaTeX] +\ProvidesFile{etexcmds-test3.tex}[2007/12/12 v1.2 Test file for LaTeX] \RequirePackage{etexcmds} \makeatletter \edef\x{\string\unexpanded} diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test4.tex b/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test4.tex index d17a4c7dd95..f153e7c21f9 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test4.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test4.tex @@ -29,7 +29,7 @@ %% etexcmds-test4.tex. %% \NeedsTeXFormat{LaTeX2e} -\ProvidesFile{etexcmds-test4.tex}[2007/09/09 v1.1 Test file for LaTeX] +\ProvidesFile{etexcmds-test4.tex}[2007/12/12 v1.2 Test file for LaTeX] \documentclass{article} \usepackage{m-pictex} \usepackage{m-ch-de} diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/grfext-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/grfext-test1.tex index 85d352c16dd..0f2d43b50ab 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/grfext-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/grfext-test1.tex @@ -81,6 +81,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input grfext.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -96,7 +99,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input grfext.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/iflang-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/iflang-test1.tex index 0e9afb21e81..34d2e78bee6 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/iflang-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/iflang-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input iflang.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input iflang.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/ifluatex-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/ifluatex-test1.tex new file mode 100644 index 00000000000..5d2d8bad778 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/ifluatex-test1.tex @@ -0,0 +1,108 @@ +%% +%% This is file `ifluatex-test1.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ifluatex.dtx (with options: `test1') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file ifluatex.dtx +%% and the derived files +%% ifluatex.sty, ifluatex.pdf, ifluatex.ins, ifluatex.drv, +%% ifluatex-test1.tex. +%% +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input ifluatex.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +\endinput +%% +%% End of file `ifluatex-test1.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/ifpdf-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/ifpdf-test1.tex index 94ce070fa4c..355893f58ac 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/ifpdf-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/ifpdf-test1.tex @@ -79,6 +79,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input ifpdf.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -94,7 +97,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input ifpdf.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/ifvtex-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/ifvtex-test1.tex index 2016ed34572..9df8425c2ec 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/ifvtex-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/ifvtex-test1.tex @@ -79,6 +79,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input ifvtex.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -94,7 +97,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input ifvtex.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/infwarerr-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/infwarerr-test1.tex index 6612ecd10df..81e32bee1f4 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/infwarerr-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/infwarerr-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input infwarerr.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input infwarerr.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/intcalc-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/intcalc-test1.tex index 0f4b47ca98c..42b3dc61729 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/intcalc-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/intcalc-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input intcalc.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input intcalc.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/kvoptions-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/kvoptions-test1.tex index 414683d972d..c18454cc244 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/kvoptions-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/kvoptions-test1.tex @@ -85,6 +85,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input kvoptions.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -100,7 +103,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input kvoptions.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/kvsetkeys-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/kvsetkeys-test1.tex index 1f618abb728..aae1114002b 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/kvsetkeys-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/kvsetkeys-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input kvsetkeys.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input kvsetkeys.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test1.tex new file mode 100644 index 00000000000..d1681263612 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test1.tex @@ -0,0 +1,111 @@ +%% +%% This is file `luacolor-test1.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luacolor.dtx (with options: `test1') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luacolor.dtx +%% and the derived files +%% luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv, +%% luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex, +%% oberdiek.luacolor.lua, luacolor.lua. +%% +\documentclass{article} +\usepackage{color} +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input luacolor.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +\endinput +%% +%% End of file `luacolor-test1.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test2.tex new file mode 100644 index 00000000000..88b86550565 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test2.tex @@ -0,0 +1,42 @@ +%% +%% This is file `luacolor-test2.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luacolor.dtx (with options: `test2') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luacolor.dtx +%% and the derived files +%% luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv, +%% luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex, +%% oberdiek.luacolor.lua, luacolor.lua. +%% +\NeedsTeXFormat{LaTeX2e} +\ifcsname driver\endcsname + \expandafter\PassOptionsToPackage\expandafter{\driver}{color}% + \pdfoutput=0 % +\fi +\documentclass{minimal} +\usepackage{luacolor}[2007/12/12] +\csname @@end\endcsname +\end +\endinput +%% +%% End of file `luacolor-test2.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test3.tex new file mode 100644 index 00000000000..417a8d65508 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test3.tex @@ -0,0 +1,41 @@ +%% +%% This is file `luacolor-test3.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luacolor.dtx (with options: `test3') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luacolor.dtx +%% and the derived files +%% luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv, +%% luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex, +%% oberdiek.luacolor.lua, luacolor.lua. +%% +\NeedsTeXFormat{LaTeX2e} +\documentclass{minimal} +\usepackage{luacolor}[2007/12/12] +\usepackage{qstest} +\IncludeTests{*} +\LogTests{log}{*}{*} +\makeatletter +\@@end +\endinput +%% +%% End of file `luacolor-test3.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test1.tex new file mode 100644 index 00000000000..adb7c389d13 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test1.tex @@ -0,0 +1,109 @@ +%% +%% This is file `luatex-test1.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luatex.dtx (with options: `test1') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luatex.dtx +%% and the derived files +%% luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +%% luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +%% luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +%% +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input luatex.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +\endinput +%% +%% End of file `luatex-test1.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test2.tex new file mode 100644 index 00000000000..bd79d91b274 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test2.tex @@ -0,0 +1,113 @@ +%% +%% This is file `luatex-test2.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luatex.dtx (with options: `test1,test2') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luatex.dtx +%% and the derived files +%% luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +%% luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +%% luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +%% +\documentclass{article} +\def\LoadCommand{% + \RequirePackage{luatex}[2007/12/12]% +} +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input luatex.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +\endinput +%% +%% End of file `luatex-test2.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test3.tex new file mode 100644 index 00000000000..f7247488715 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test3.tex @@ -0,0 +1,113 @@ +%% +%% This is file `luatex-test3.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luatex.dtx (with options: `test1,test3') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luatex.dtx +%% and the derived files +%% luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +%% luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +%% luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +%% +\documentclass{article} +\def\LoadCommand{% + \RequirePackage{luatex-loader}[2007/12/12]% +} +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input luatex.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +\endinput +%% +%% End of file `luatex-test3.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test4.tex b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test4.tex new file mode 100644 index 00000000000..46af65dcc47 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test4.tex @@ -0,0 +1,185 @@ +%% +%% This is file `luatex-test4.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luatex.dtx (with options: `test4') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luatex.dtx +%% and the derived files +%% luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +%% luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +%% luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +%% +\NeedsTeXFormat{LaTeX2e} +\count0=0 % +\chardef\TestLaTeX=1000 % +\chardef\TestMax=300 % +\loop + \count\numexpr\TestLaTeX+\count0\relax=\catcode\count0 % +\ifnum\count0<\TestMax + \advance\count0 by 1 % +\repeat +\documentclass{minimal} +\usepackage{luatex}[2007/12/12] +\usepackage{qstest} +\IncludeTests{*} +\LogTests{log}{*}{*} +\makeatletter +\def\Check#1{% + \Expect*{\the\count@=\the\catcode\count@}% + *{\the\count@=#1}% +} +\newcount\scratch +\def\Test#1#2{% + \begin{qstest}{CatcodeTable#1}{CatcodeTable#1}% + \catcodetable\csname CatcodeTable#1\endcsname + \count@=\z@ + \loop + \scratch=#2\relax + \Expect*{\the\count@=\the\catcode\count@}% + *{\the\count@=\the\scratch}% + \ifnum\count@<\TestMax + \advance\count@\@ne + \repeat + \end{qstest}% +} +\Test{LaTeX}{\the\count\numexpr\TestLaTeX+\count@} +\Test{String}{\ifnum\count@=32 10\else 12\fi} +\Test{Other}{12} +\initcatcodetable99 % +\Test{IniTeX}{% + 0\relax + \begingroup + \catcodetable99 % + \global\scratch=\the\catcode\count@ + \endgroup +} +\begin{qstest}{CatcodeTableNumStack}{CatcodeTableNumStack} + \def\TestStack#1{% + \Expect*{\LuT@NumStack}{#1}% + }% + \TestStack{0}% + \PushCatcodeTableNumStack + \TestStack{{0}0}% + \@firstofone{% + \begingroup + \initcatcodetable12 % + \catcodetable12 % + \PushCatcodeTableNumStack + \TestStack{{12}{0}0}% + \PopCatcodeTableNumStack + \TestStack{{0}0}% + \PopCatcodeTableNumStack + \TestStack{0}% + \def\TestWarning{Missing empty stack warning}% + \def\@PackageWarning#1#2{\def\TestWarning{empty stack}}% + \PopCatcodeTableNumStack + \TestStack{0}% + \Expect*{\TestWarning}{empty stack}% + \endgroup + }% +\end{qstest} +\begin{qstest}{CatcodeTableStack}{CatcodeTableStack} + \def\TestStack#1{% + \Expect*{\the\CatcodeTableStack}{#1}% + }% + \TestStack{0}% + \IncCatcodeTableStack + \TestStack{2}% + \IncCatcodeTableStack + \TestStack{4}% + \begingroup + \IncCatcodeTableStack + \TestStack{6}% + \endgroup + \TestStack{6}% + \begingroup + \DecCatcodeTableStack + \TestStack{4}% + \endgroup + \TestStack{4}% + \DecCatcodeTableStack + \TestStack{2}% + \DecCatcodeTableStack + \TestStack{0}% + \begingroup + \def\TestError{Missing error}% + \def\@PackageError#1#2#3{% + \def\TestError{Empty stack}% + }% + \DecCatcodeTableStack + \TestStack{0}% + \Expect*{\TestError}{Empty stack}% + \endgroup +\end{qstest} +\begin{qstest}{CatcodeRegime}{CatcodeRegime} + \def\TestStacks#1#2#3{% + \Expect*{\the\catcodetable}{#1}% + \Expect*{\the\CatcodeTableStack}{#2}% + \Expect*{\LuT@NumStack}{#3}% + }% + \TestStacks{0}{0}{0}% + \catcode`\|=7 % + \BeginCatcodeRegime\CatcodeTableLaTeX + \TestStacks{2}{2}{{0}0}% + \Expect*{\the\catcode`\|}{12}% + \EndCatcodeRegime + \TestStacks{0}{0}{0}% + \Expect*{\the\catcode`\|}{7}% +\end{qstest} +\begin{qstest}{Attributes}{Attributes} + \newattribute\TestAttr + \Expect*{\meaning\TestAttr}% + *{\string\attribute\number\allocationnumber}% + \Expect*{\the\allocationnumber}{0}% + \begingroup + \newattribute\TestAttr + \Expect*{\the\allocationnumber}{1}% + \endgroup + \Expect*{\the\allocationnumber}{0}% + \Expect*{\meaning\TestAttr}*{\string\attribute1}% + \Expect*{\the\TestAttr}{-1}% + \def\Test#1{% + \setattribute\TestAttr{#1}% + \Expect*{\the\TestAttr}{#1}% + }% + \Test{0}% + \Test{1}% + \Test{-1}% + \Test{123}% + \unsetattribute\TestAttr + \Expect*{\the\TestAttr}{-1}% + \begingroup + \Expect*{\the\TestAttr}{-1}% + \Test{1234}% + \endgroup + \Expect*{\the\TestAttr}{-1}% +\end{qstest} +\begin{qstest}{LuaState}{LuaState} + \newluastate\TestLuaState + \Expect*{\number\TestLuaState}{1}% + \newluastate\TestLuaState + \Expect*{\number\TestLuaState}{2}% +\end{qstest} +\@@end +\endinput +%% +%% End of file `luatex-test4.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test5.tex b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test5.tex new file mode 100644 index 00000000000..4bfba407c42 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/luatex-test5.tex @@ -0,0 +1,45 @@ +%% +%% This is file `luatex-test5.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luatex.dtx (with options: `test5') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luatex.dtx +%% and the derived files +%% luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +%% luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +%% luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +%% +\input luatex.sty\relax +\newluastate\TestLuaState +\newattribute\TestAttr +\setattribute\TestAttr{10} +\unsetattribute\TestAttr +\newcatcodetable\TestCTa +\begingroup + \SetCatcodeRange{`A}{`Z}{12}% +\endgroup +\BeginCatcodeRegime\CatcodeTableLaTeX +\EndCatcodeRegime +\end +\endinput +%% +%% End of file `luatex-test5.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test1.tex new file mode 100644 index 00000000000..772f4870727 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test1.tex @@ -0,0 +1,109 @@ +%% +%% This is file `magicnum-test1.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% magicnum.dtx (with options: `test1') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file magicnum.dtx +%% and the derived files +%% magicnum.sty, magicnum.pdf, magicnum.ins, magicnum.drv, magicnum.txt, +%% magicnum-test1.tex, magicnum-test2.tex, magicnum-test3.tex, +%% magicnum.lua, oberdiek.magicnum.lua. +%% +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input magicnum.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +\endinput +%% +%% End of file `magicnum-test1.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test2.tex new file mode 100644 index 00000000000..fbd4e97f88c --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test2.tex @@ -0,0 +1,66 @@ +%% +%% This is file `magicnum-test2.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% magicnum.dtx (with options: `testplain,testdata') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file magicnum.dtx +%% and the derived files +%% magicnum.sty, magicnum.pdf, magicnum.ins, magicnum.drv, magicnum.txt, +%% magicnum-test1.tex, magicnum-test2.tex, magicnum-test3.tex, +%% magicnum.lua, oberdiek.magicnum.lua. +%% +\input magicnum.sty\relax +\def\Test#1#2{% + \edef\result{\magicnum{#1}}% + \edef\expect{#2}% + \edef\expect{\expandafter\stripprefix\meaning\expect}% + \ifx\result\expect + \else + \errmessage{% + Failed: [#1] % hash-ok + returns [\result] instead of [\expect]% + }% + \fi +} +\def\stripprefix#1->{} +\Test{tex.catcode.escape}{0} +\Test{tex.catcode.invalid}{15} +\Test{tex.catcode.unknown}{} +\Test{tex.catcode.0}{escape} +\Test{tex.catcode.15}{invalid} +\Test{etex.iftype.true}{15} +\Test{etex.iftype.false}{16} +\Test{etex.iftype.15}{true} +\Test{etex.iftype.16}{false} +\Test{etex.nodetype.none}{-1} +\Test{etex.nodetype.-1}{none} +\Test{luatex.pdfliteral.mode.direct}{2} +\Test{luatex.pdfliteral.mode.1}{page} +\Test{}{} +\Test{unknown}{} +\Test{unknown.foo.bar}{} +\Test{unknown.foo.4}{} +\csname @@end\endcsname +\end +\endinput +%% +%% End of file `magicnum-test2.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test3.tex new file mode 100644 index 00000000000..e1bfcc2e586 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test3.tex @@ -0,0 +1,62 @@ +%% +%% This is file `magicnum-test3.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% magicnum.dtx (with options: `testlatex,testdata') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file magicnum.dtx +%% and the derived files +%% magicnum.sty, magicnum.pdf, magicnum.ins, magicnum.drv, magicnum.txt, +%% magicnum-test1.tex, magicnum-test2.tex, magicnum-test3.tex, +%% magicnum.lua, oberdiek.magicnum.lua. +%% +\NeedsTeXFormat{LaTeX2e} +\documentclass{minimal} +\usepackage{magicnum}[2007/12/12] +\usepackage{qstest} +\IncludeTests{*} +\LogTests{log}{*}{*} +\newcommand*{\Test}[2]{% + \Expect*{\magicnum{#1}}{#2}% +} +\begin{qstest}{magicnum}{magicnum} +\Test{tex.catcode.escape}{0} +\Test{tex.catcode.invalid}{15} +\Test{tex.catcode.unknown}{} +\Test{tex.catcode.0}{escape} +\Test{tex.catcode.15}{invalid} +\Test{etex.iftype.true}{15} +\Test{etex.iftype.false}{16} +\Test{etex.iftype.15}{true} +\Test{etex.iftype.16}{false} +\Test{etex.nodetype.none}{-1} +\Test{etex.nodetype.-1}{none} +\Test{luatex.pdfliteral.mode.direct}{2} +\Test{luatex.pdfliteral.mode.1}{page} +\Test{}{} +\Test{unknown}{} +\Test{unknown.foo.bar}{} +\Test{unknown.foo.4}{} +\end{qstest} +\csname @@end\endcsname +\endinput +%% +%% End of file `magicnum-test3.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test1.tex index 7e0626f6182..e081e53537e 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test1.tex @@ -25,7 +25,7 @@ %% This work consists of the main source file pdfcol.dtx %% and the derived files %% pdfcol.sty, pdfcol.pdf, pdfcol.ins, pdfcol.drv, pdfcol-test1.tex, -%% pdfcol-test2.tex, pdfcol-test3.tex. +%% pdfcol-test2.tex, pdfcol-test3.tex, pdfcol-test4.tex. %% \catcode`\{=1 % \catcode`\}=2 % @@ -79,6 +79,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input pdfcol.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -94,7 +97,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input pdfcol.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test2.tex b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test2.tex index 50f3aee43ef..0d7842c8f94 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test2.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test2.tex @@ -25,12 +25,12 @@ %% This work consists of the main source file pdfcol.dtx %% and the derived files %% pdfcol.sty, pdfcol.pdf, pdfcol.ins, pdfcol.drv, pdfcol-test1.tex, -%% pdfcol-test2.tex, pdfcol-test3.tex. +%% pdfcol-test2.tex, pdfcol-test3.tex, pdfcol-test4.tex. %% \NeedsTeXFormat{LaTeX2e} \nofiles \documentclass{article} -\usepackage{pdfcol}[2007/09/09] +\usepackage{pdfcol}[2007/12/12] \usepackage{qstest} \IncludeTests{*} \LogTests{log}{*}{*} diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test3.tex index af3507dac6d..c4e66faba6a 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test3.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test3.tex @@ -25,12 +25,12 @@ %% This work consists of the main source file pdfcol.dtx %% and the derived files %% pdfcol.sty, pdfcol.pdf, pdfcol.ins, pdfcol.drv, pdfcol-test1.tex, -%% pdfcol-test2.tex, pdfcol-test3.tex. +%% pdfcol-test2.tex, pdfcol-test3.tex, pdfcol-test4.tex. %% \NeedsTeXFormat{LaTeX2e} \nofiles \documentclass{article} -\usepackage{pdfcol}[2007/09/09] +\usepackage{pdfcol}[2007/12/12] \usepackage{qstest} \IncludeTests{*} \LogTests{log}{*}{*} diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test4.tex b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test4.tex new file mode 100644 index 00000000000..b8b5957a614 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test4.tex @@ -0,0 +1,41 @@ +%% +%% This is file `pdfcol-test4.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pdfcol.dtx (with options: `test4') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file pdfcol.dtx +%% and the derived files +%% pdfcol.sty, pdfcol.pdf, pdfcol.ins, pdfcol.drv, pdfcol-test1.tex, +%% pdfcol-test2.tex, pdfcol-test3.tex, pdfcol-test4.tex. +%% +\NeedsTeXFormat{LaTeX2e} +\documentclass{article} +\usepackage{luacolor} +\usepackage{pdfcol} +\makeatletter +\ifpdfcolAvailable + \@latex@error{Detection of package luacolor failed}% +\fi +\csname @@end\endcsname +\endinput +%% +%% End of file `pdfcol-test4.tex'. diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcolparallel-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcolparallel-test1.tex index 321a5207798..aa29da93e1e 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/pdfcolparallel-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/pdfcolparallel-test1.tex @@ -36,7 +36,7 @@ } \documentclass{article} \usepackage{xcolor} -\usepackage{pdfcolparallel}[2007/09/09] +\usepackage{pdfcolparallel}[2007/12/12] \begin{document} \color{green}% @@ -54,8 +54,37 @@ Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% }% }% + \ParallelPar + \ParallelLText{% + Default % + \color{red}% + Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % + Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% + }% + \ParallelRText{% + Default % + \color{blue}% + Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % + Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% + }% + \ParallelPar + \ParallelLText{% + \begin{enumerate}% + \item left text, left text, left text, left text, % + left text, left text, left text, left text,% + \item left text, left text, left text, left text, % + left text, left text, left text, left text.% + \end{enumerate}% + }% + \ParallelRText{% + \begin{enumerate}% + \item right text, right text, right text, right text, % + right text, right text, right text, right text.% + \item right text, right text, right text, right text, % + right text, right text, right text, right text.% + \end{enumerate}% + }% \end{Parallel}% - Green% \begin{Parallel}[p]{\textwidth}{\textwidth}% \ParallelLText{% \textcolor{red}{% @@ -63,6 +92,8 @@ Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % Foo bar bla bla bla.% }% + \par + Und noch ein Absatz.% }% \ParallelRText{% \textcolor{blue}{% @@ -72,6 +103,14 @@ }% }% \end{Parallel}% + \begin{Parallel}[p]{\textwidth}{\textwidth}% + \ParallelLText{% + \rule{1pt}{.98\textheight}\Huge g% + }% + \ParallelRText{% + \rule{1pt}{.98\textheight}y% + }% + \end{Parallel}% Green% \end{document} \endinput diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/pdfescape-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/pdfescape-test1.tex index d89151ecf3a..7fe39de0dcd 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/pdfescape-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/pdfescape-test1.tex @@ -81,6 +81,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input pdfescape.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -96,7 +99,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input pdfescape.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/setouterhbox-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/setouterhbox-test1.tex index abd7f84aaa1..0df1a200597 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/setouterhbox-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/setouterhbox-test1.tex @@ -81,6 +81,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input setouterhbox.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -96,7 +99,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input setouterhbox.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/soulutf8-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/soulutf8-test1.tex index 9329266361d..99b8418d540 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/soulutf8-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/soulutf8-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input soulutf8.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input soulutf8.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/test/telprint-test1.tex b/Master/texmf-dist/doc/latex/oberdiek/test/telprint-test1.tex index fe61e8726c6..294fb5be7f8 100644 --- a/Master/texmf-dist/doc/latex/oberdiek/test/telprint-test1.tex +++ b/Master/texmf-dist/doc/latex/oberdiek/test/telprint-test1.tex @@ -80,6 +80,9 @@ \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input telprint.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -95,7 +98,7 @@ \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input telprint.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf b/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf index 43d1499fe20..b9c4cc496d7 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf and b/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf b/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf index 3c86dddcfc2..bfcd2c3b9f3 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf and b/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf differ diff --git a/Master/texmf-dist/doc/latex/oberdiek/zref.pdf b/Master/texmf-dist/doc/latex/oberdiek/zref.pdf index 2223f121fbe..d012cccc844 100644 Binary files a/Master/texmf-dist/doc/latex/oberdiek/zref.pdf and b/Master/texmf-dist/doc/latex/oberdiek/zref.pdf differ diff --git a/Master/texmf-dist/scripts/oberdiek/luacolor.lua b/Master/texmf-dist/scripts/oberdiek/luacolor.lua new file mode 100644 index 00000000000..332a78a8299 --- /dev/null +++ b/Master/texmf-dist/scripts/oberdiek/luacolor.lua @@ -0,0 +1,169 @@ +-- +-- This is file `luacolor.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- luacolor.dtx (with options: `lua') +-- +-- This is a generated file. +-- +-- Copyright (C) 2007 by Heiko Oberdiek +-- +-- This work may be distributed and/or modified under the +-- conditions of the LaTeX Project Public License, either +-- version 1.3 of this license or (at your option) any later +-- version. The latest version of this license is in +-- http://www.latex-project.org/lppl.txt +-- and version 1.3 or later is part of all distributions of +-- LaTeX version 2005/12/01 or later. +-- +-- This work has the LPPL maintenance status "maintained". +-- +-- This Current Maintainer of this work is Heiko Oberdiek. +-- +-- This work consists of the main source file luacolor.dtx +-- and the derived files +-- luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv, +-- luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex, +-- oberdiek.luacolor.lua, luacolor.lua. +-- +module("oberdiek.luacolor", package.seeall) +local ifpdf +if tonumber(tex.pdfoutput) > 0 then + ifpdf = true +else + ifpdf = false +end +local prefix +local prefixes = { + dvips = "color ", + dvipdfm = "pdf:sc ", + truetex = "textcolor:", + pctexps = "ps::", +} +local patterns = { + ["^color "] = "dvips", + ["^pdf: *begincolor "] = "dvipdfm", + ["^pdf: *bcolor "] = "dvipdfm", + ["^pdf: *bc "] = "dvipdfm", + ["^pdf: *setcolor "] = "dvipdfm", + ["^pdf: *scolor "] = "dvipdfm", + ["^pdf: *sc "] = "dvipdfm", + ["^textcolor:"] = "truetex", + ["^ps::"] = "pctexps", +} +local function info(msg, term) + local target = "log" + if term then + target = "term and log" + end + texio.write_nl(target, "Package luacolor info: " .. msg .. ".") + texio.write_nl(target, "") +end +function dvidetect() + local v = tex.box[0] + assert(v.id == node.id("hlist")) + for v in node.traverse_id(node.id("whatsit"), v.list) do + if v and v.subtype == 3 then -- special + local data = v.data + for pattern, driver in pairs(patterns) do + if string.find(data, pattern) then + prefix = prefixes[driver] + tex.write(driver) + return + end + end + info("\\special{" .. data .. "}", true) + return + end + end + info("Missing \\special", true) +end +local map = { + n = 0, +} +function get(color) + local n = map[color] + if not n then + n = map.n + 1 + map.n = n + map[n] = color + map[color] = n + end + tex.write("" .. n) +end +local attribute +function setattribute(attr) + attribute = attr +end +function process(box) + local color = "" + local list = tex.getbox(box) + traverse(list, color) +end +local LIST = 1 +local COLOR = 2 +local type = { + [node.id("hlist")] = LIST, + [node.id("vlist")] = LIST, + [node.id("rule")] = COLOR, + [node.id("glyph")] = COLOR, + [node.id("disc")] = COLOR, +} +local subtype = { + [3] = COLOR, -- special + [8] = COLOR, -- pdf_literal +} +local mode = 2 -- luatex.pdfliteral.direct +local WHATSIT = node.id("whatsit") +local SPECIAL = 3 +local PDFLITERAL = 8 +function traverse(list, color) + if not list then + return color + end + if type[list.id] ~= LIST then + texio.write_nl("!!! Error: Wrong list type: " .. node.type(list.id)) + return color + end + local head = list.list + for n in node.traverse(head) do + local type = type[n.id] + if type == LIST then + color = traverse(n, color) + elseif type == COLOR + or (type == WHATSIT + and subtype[n.subtype]) then + local v = node.has_attribute(n, attribute) + if v then + local newColor = map[v] + if newColor ~= color then + color = newColor + local newNode + if ifpdf then + newNode = node.new(WHATSIT, PDFLITERAL) + newNode.mode = mode + newNode.data = color + else + newNode = node.new(WHATSIT, SPECIAL) + newNode.data = prefix .. color + end + if head == n then + newNode.next = head + local old_prev = head.prev + head.prev = newNode + head = newNode + head.prev = old_prev + else + head = node.insert_before(head, n, newNode) + end + end + end + end + end + list.list = head + return color +end +-- +-- End of File `luacolor.lua'. diff --git a/Master/texmf-dist/scripts/oberdiek/magicnum.lua b/Master/texmf-dist/scripts/oberdiek/magicnum.lua new file mode 100644 index 00000000000..87f9ee1f22f --- /dev/null +++ b/Master/texmf-dist/scripts/oberdiek/magicnum.lua @@ -0,0 +1,227 @@ +-- +-- This is file `magicnum.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- magicnum.dtx (with options: `lua') +-- +-- This is a generated file. +-- +-- Copyright (C) 2007 by Heiko Oberdiek +-- +-- This work may be distributed and/or modified under the +-- conditions of the LaTeX Project Public License, either +-- version 1.3 of this license or (at your option) any later +-- version. The latest version of this license is in +-- http://www.latex-project.org/lppl.txt +-- and version 1.3 or later is part of all distributions of +-- LaTeX version 2005/12/01 or later. +-- +-- This work has the LPPL maintenance status "maintained". +-- +-- This Current Maintainer of this work is Heiko Oberdiek. +-- +-- This work consists of the main source file magicnum.dtx +-- and the derived files +-- magicnum.sty, magicnum.pdf, magicnum.ins, magicnum.drv, magicnum.txt, +-- magicnum-test1.tex, magicnum-test2.tex, magicnum-test3.tex, +-- magicnum.lua, oberdiek.magicnum.lua. +-- +module("oberdiek.magicnum", package.seeall) +local data = { + ["tex.catcode"] = { + [0] = "escape", + [1] = "begingroup", + [2] = "endgroup", + [3] = "math", + [4] = "align", + [5] = "eol", + [6] = "parameter", + [7] = "superscript", + [8] = "subscript", + [9] = "ignore", + [10] = "space", + [11] = "letter", + [12] = "other", + [13] = "active", + [14] = "comment", + [15] = "invalid", + ["active"] = 13, + ["align"] = 4, + ["begingroup"] = 1, + ["comment"] = 14, + ["endgroup"] = 2, + ["eol"] = 5, + ["escape"] = 0, + ["ignore"] = 9, + ["invalid"] = 15, + ["letter"] = 11, + ["math"] = 3, + ["other"] = 12, + ["parameter"] = 6, + ["space"] = 10, + ["subscript"] = 8, + ["superscript"] = 7 + }, + ["etex.grouptype"] = { + [0] = "bottomlevel", + [1] = "simple", + [2] = "hbox", + [3] = "adjustedhbox", + [4] = "vbox", + [5] = "align", + [6] = "noalign", + [8] = "output", + [9] = "math", + [10] = "disc", + [11] = "insert", + [12] = "vcenter", + [13] = "mathchoice", + [14] = "semisimple", + [15] = "mathshift", + [16] = "mathleft", + ["adjustedhbox"] = 3, + ["align"] = 5, + ["bottomlevel"] = 0, + ["disc"] = 10, + ["hbox"] = 2, + ["insert"] = 11, + ["math"] = 9, + ["mathchoice"] = 13, + ["mathleft"] = 16, + ["mathshift"] = 15, + ["noalign"] = 6, + ["output"] = 8, + ["semisimple"] = 14, + ["simple"] = 1, + ["vbox"] = 4, + ["vcenter"] = 12 + }, + ["etex.iftype"] = { + [0] = "none", + [1] = "char", + [2] = "cat", + [3] = "num", + [4] = "dim", + [5] = "odd", + [6] = "vmode", + [7] = "hmode", + [8] = "mmode", + [9] = "inner", + [10] = "void", + [11] = "hbox", + [12] = "vbox", + [13] = "x", + [14] = "eof", + [15] = "true", + [16] = "false", + [17] = "case", + [18] = "defined", + [19] = "csname", + [20] = "fontchar", + ["case"] = 17, + ["cat"] = 2, + ["char"] = 1, + ["csname"] = 19, + ["defined"] = 18, + ["dim"] = 4, + ["eof"] = 14, + ["false"] = 16, + ["fontchar"] = 20, + ["hbox"] = 11, + ["hmode"] = 7, + ["inner"] = 9, + ["mmode"] = 8, + ["none"] = 0, + ["num"] = 3, + ["odd"] = 5, + ["true"] = 15, + ["vbox"] = 12, + ["vmode"] = 6, + ["void"] = 10, + ["x"] = 13 + }, + ["etex.nodetype"] = { + [-1] = "none", + [0] = "char", + [1] = "hlist", + [2] = "vlist", + [3] = "rule", + [4] = "ins", + [5] = "mark", + [6] = "adjust", + [7] = "ligature", + [8] = "disc", + [9] = "whatsit", + [10] = "math", + [11] = "glue", + [12] = "kern", + [13] = "penalty", + [14] = "unset", + [15] = "maths", + ["adjust"] = 6, + ["char"] = 0, + ["disc"] = 8, + ["glue"] = 11, + ["hlist"] = 1, + ["ins"] = 4, + ["kern"] = 12, + ["ligature"] = 7, + ["mark"] = 5, + ["math"] = 10, + ["maths"] = 15, + ["none"] = -1, + ["penalty"] = 13, + ["rule"] = 3, + ["unset"] = 14, + ["vlist"] = 2, + ["whatsit"] = 9 + }, + ["etex.interactionmode"] = { + [0] = "batch", + [1] = "nonstop", + [2] = "scroll", + [3] = "errorstop", + ["batch"] = 0, + ["errorstop"] = 3, + ["nonstop"] = 1, + ["scroll"] = 2 + }, + ["luatex.pdfliteral.mode"] = { + [0] = "setorigin", + [1] = "page", + [2] = "direct", + ["direct"] = 2, + ["page"] = 1, + ["setorigin"] = 0 + } +} +function get(name, catcodetable) + local startpos, endpos, category, entry = + string.find(name, "^(%a[%a%d%.]*)%.(-?[%a%d]+)$") + if not entry then + return + end + local node = data[category] + if not node then + return + end + local num = tonumber(entry) + local value + if num then + value = node[num] + if not value then + return + end + else + value = node[entry] + if not value then + return + end + value = "" .. value + end + tex.print(catcodetable, value) +end +-- +-- End of File `magicnum.lua'. diff --git a/Master/texmf-dist/scripts/oberdiek/oberdiek.luacolor.lua b/Master/texmf-dist/scripts/oberdiek/oberdiek.luacolor.lua new file mode 100644 index 00000000000..1d6bcda1acb --- /dev/null +++ b/Master/texmf-dist/scripts/oberdiek/oberdiek.luacolor.lua @@ -0,0 +1,169 @@ +-- +-- This is file `oberdiek.luacolor.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- luacolor.dtx (with options: `lua') +-- +-- This is a generated file. +-- +-- Copyright (C) 2007 by Heiko Oberdiek +-- +-- This work may be distributed and/or modified under the +-- conditions of the LaTeX Project Public License, either +-- version 1.3 of this license or (at your option) any later +-- version. The latest version of this license is in +-- http://www.latex-project.org/lppl.txt +-- and version 1.3 or later is part of all distributions of +-- LaTeX version 2005/12/01 or later. +-- +-- This work has the LPPL maintenance status "maintained". +-- +-- This Current Maintainer of this work is Heiko Oberdiek. +-- +-- This work consists of the main source file luacolor.dtx +-- and the derived files +-- luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv, +-- luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex, +-- oberdiek.luacolor.lua, luacolor.lua. +-- +module("oberdiek.luacolor", package.seeall) +local ifpdf +if tonumber(tex.pdfoutput) > 0 then + ifpdf = true +else + ifpdf = false +end +local prefix +local prefixes = { + dvips = "color ", + dvipdfm = "pdf:sc ", + truetex = "textcolor:", + pctexps = "ps::", +} +local patterns = { + ["^color "] = "dvips", + ["^pdf: *begincolor "] = "dvipdfm", + ["^pdf: *bcolor "] = "dvipdfm", + ["^pdf: *bc "] = "dvipdfm", + ["^pdf: *setcolor "] = "dvipdfm", + ["^pdf: *scolor "] = "dvipdfm", + ["^pdf: *sc "] = "dvipdfm", + ["^textcolor:"] = "truetex", + ["^ps::"] = "pctexps", +} +local function info(msg, term) + local target = "log" + if term then + target = "term and log" + end + texio.write_nl(target, "Package luacolor info: " .. msg .. ".") + texio.write_nl(target, "") +end +function dvidetect() + local v = tex.box[0] + assert(v.id == node.id("hlist")) + for v in node.traverse_id(node.id("whatsit"), v.list) do + if v and v.subtype == 3 then -- special + local data = v.data + for pattern, driver in pairs(patterns) do + if string.find(data, pattern) then + prefix = prefixes[driver] + tex.write(driver) + return + end + end + info("\\special{" .. data .. "}", true) + return + end + end + info("Missing \\special", true) +end +local map = { + n = 0, +} +function get(color) + local n = map[color] + if not n then + n = map.n + 1 + map.n = n + map[n] = color + map[color] = n + end + tex.write("" .. n) +end +local attribute +function setattribute(attr) + attribute = attr +end +function process(box) + local color = "" + local list = tex.getbox(box) + traverse(list, color) +end +local LIST = 1 +local COLOR = 2 +local type = { + [node.id("hlist")] = LIST, + [node.id("vlist")] = LIST, + [node.id("rule")] = COLOR, + [node.id("glyph")] = COLOR, + [node.id("disc")] = COLOR, +} +local subtype = { + [3] = COLOR, -- special + [8] = COLOR, -- pdf_literal +} +local mode = 2 -- luatex.pdfliteral.direct +local WHATSIT = node.id("whatsit") +local SPECIAL = 3 +local PDFLITERAL = 8 +function traverse(list, color) + if not list then + return color + end + if type[list.id] ~= LIST then + texio.write_nl("!!! Error: Wrong list type: " .. node.type(list.id)) + return color + end + local head = list.list + for n in node.traverse(head) do + local type = type[n.id] + if type == LIST then + color = traverse(n, color) + elseif type == COLOR + or (type == WHATSIT + and subtype[n.subtype]) then + local v = node.has_attribute(n, attribute) + if v then + local newColor = map[v] + if newColor ~= color then + color = newColor + local newNode + if ifpdf then + newNode = node.new(WHATSIT, PDFLITERAL) + newNode.mode = mode + newNode.data = color + else + newNode = node.new(WHATSIT, SPECIAL) + newNode.data = prefix .. color + end + if head == n then + newNode.next = head + local old_prev = head.prev + head.prev = newNode + head = newNode + head.prev = old_prev + else + head = node.insert_before(head, n, newNode) + end + end + end + end + end + list.list = head + return color +end +-- +-- End of File `oberdiek.luacolor.lua'. diff --git a/Master/texmf-dist/scripts/oberdiek/oberdiek.luatex.lua b/Master/texmf-dist/scripts/oberdiek/oberdiek.luatex.lua new file mode 100644 index 00000000000..6044e22bbe6 --- /dev/null +++ b/Master/texmf-dist/scripts/oberdiek/oberdiek.luatex.lua @@ -0,0 +1,48 @@ +-- +-- This is file `oberdiek.luatex.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- luatex.dtx (with options: `lua') +-- +-- This is a generated file. +-- +-- Copyright (C) 2007 by Heiko Oberdiek +-- +-- This work may be distributed and/or modified under the +-- conditions of the LaTeX Project Public License, either +-- version 1.3 of this license or (at your option) any later +-- version. The latest version of this license is in +-- http://www.latex-project.org/lppl.txt +-- and version 1.3 or later is part of all distributions of +-- LaTeX version 2005/12/01 or later. +-- +-- This work has the LPPL maintenance status "maintained". +-- +-- This Current Maintainer of this work is Heiko Oberdiek. +-- +-- This work consists of the main source file luatex.dtx +-- and the derived files +-- luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +-- luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +-- luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +-- +module("oberdiek.luatex", package.seeall) +function kpse_module_loader(module) + local script = module .. ".lua" + local file = kpse.find_file(script, "texmfscripts") + if file then + local loader, error = loadfile(file) + if loader then + texio.write_nl("(" .. file .. ")") + return loader + end + return "\n\t[oberdiek.luatex.kpse_module_loader] Loading error:\n\t" + .. error + end + return "\n\t[oberdiek.luatex.kpse_module_loader] Search failed" +end +table.insert(package.loaders, kpse_module_loader) +-- +-- End of File `oberdiek.luatex.lua'. diff --git a/Master/texmf-dist/scripts/oberdiek/oberdiek.magicnum.lua b/Master/texmf-dist/scripts/oberdiek/oberdiek.magicnum.lua new file mode 100644 index 00000000000..130538094a0 --- /dev/null +++ b/Master/texmf-dist/scripts/oberdiek/oberdiek.magicnum.lua @@ -0,0 +1,227 @@ +-- +-- This is file `oberdiek.magicnum.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- magicnum.dtx (with options: `lua') +-- +-- This is a generated file. +-- +-- Copyright (C) 2007 by Heiko Oberdiek +-- +-- This work may be distributed and/or modified under the +-- conditions of the LaTeX Project Public License, either +-- version 1.3 of this license or (at your option) any later +-- version. The latest version of this license is in +-- http://www.latex-project.org/lppl.txt +-- and version 1.3 or later is part of all distributions of +-- LaTeX version 2005/12/01 or later. +-- +-- This work has the LPPL maintenance status "maintained". +-- +-- This Current Maintainer of this work is Heiko Oberdiek. +-- +-- This work consists of the main source file magicnum.dtx +-- and the derived files +-- magicnum.sty, magicnum.pdf, magicnum.ins, magicnum.drv, magicnum.txt, +-- magicnum-test1.tex, magicnum-test2.tex, magicnum-test3.tex, +-- magicnum.lua, oberdiek.magicnum.lua. +-- +module("oberdiek.magicnum", package.seeall) +local data = { + ["tex.catcode"] = { + [0] = "escape", + [1] = "begingroup", + [2] = "endgroup", + [3] = "math", + [4] = "align", + [5] = "eol", + [6] = "parameter", + [7] = "superscript", + [8] = "subscript", + [9] = "ignore", + [10] = "space", + [11] = "letter", + [12] = "other", + [13] = "active", + [14] = "comment", + [15] = "invalid", + ["active"] = 13, + ["align"] = 4, + ["begingroup"] = 1, + ["comment"] = 14, + ["endgroup"] = 2, + ["eol"] = 5, + ["escape"] = 0, + ["ignore"] = 9, + ["invalid"] = 15, + ["letter"] = 11, + ["math"] = 3, + ["other"] = 12, + ["parameter"] = 6, + ["space"] = 10, + ["subscript"] = 8, + ["superscript"] = 7 + }, + ["etex.grouptype"] = { + [0] = "bottomlevel", + [1] = "simple", + [2] = "hbox", + [3] = "adjustedhbox", + [4] = "vbox", + [5] = "align", + [6] = "noalign", + [8] = "output", + [9] = "math", + [10] = "disc", + [11] = "insert", + [12] = "vcenter", + [13] = "mathchoice", + [14] = "semisimple", + [15] = "mathshift", + [16] = "mathleft", + ["adjustedhbox"] = 3, + ["align"] = 5, + ["bottomlevel"] = 0, + ["disc"] = 10, + ["hbox"] = 2, + ["insert"] = 11, + ["math"] = 9, + ["mathchoice"] = 13, + ["mathleft"] = 16, + ["mathshift"] = 15, + ["noalign"] = 6, + ["output"] = 8, + ["semisimple"] = 14, + ["simple"] = 1, + ["vbox"] = 4, + ["vcenter"] = 12 + }, + ["etex.iftype"] = { + [0] = "none", + [1] = "char", + [2] = "cat", + [3] = "num", + [4] = "dim", + [5] = "odd", + [6] = "vmode", + [7] = "hmode", + [8] = "mmode", + [9] = "inner", + [10] = "void", + [11] = "hbox", + [12] = "vbox", + [13] = "x", + [14] = "eof", + [15] = "true", + [16] = "false", + [17] = "case", + [18] = "defined", + [19] = "csname", + [20] = "fontchar", + ["case"] = 17, + ["cat"] = 2, + ["char"] = 1, + ["csname"] = 19, + ["defined"] = 18, + ["dim"] = 4, + ["eof"] = 14, + ["false"] = 16, + ["fontchar"] = 20, + ["hbox"] = 11, + ["hmode"] = 7, + ["inner"] = 9, + ["mmode"] = 8, + ["none"] = 0, + ["num"] = 3, + ["odd"] = 5, + ["true"] = 15, + ["vbox"] = 12, + ["vmode"] = 6, + ["void"] = 10, + ["x"] = 13 + }, + ["etex.nodetype"] = { + [-1] = "none", + [0] = "char", + [1] = "hlist", + [2] = "vlist", + [3] = "rule", + [4] = "ins", + [5] = "mark", + [6] = "adjust", + [7] = "ligature", + [8] = "disc", + [9] = "whatsit", + [10] = "math", + [11] = "glue", + [12] = "kern", + [13] = "penalty", + [14] = "unset", + [15] = "maths", + ["adjust"] = 6, + ["char"] = 0, + ["disc"] = 8, + ["glue"] = 11, + ["hlist"] = 1, + ["ins"] = 4, + ["kern"] = 12, + ["ligature"] = 7, + ["mark"] = 5, + ["math"] = 10, + ["maths"] = 15, + ["none"] = -1, + ["penalty"] = 13, + ["rule"] = 3, + ["unset"] = 14, + ["vlist"] = 2, + ["whatsit"] = 9 + }, + ["etex.interactionmode"] = { + [0] = "batch", + [1] = "nonstop", + [2] = "scroll", + [3] = "errorstop", + ["batch"] = 0, + ["errorstop"] = 3, + ["nonstop"] = 1, + ["scroll"] = 2 + }, + ["luatex.pdfliteral.mode"] = { + [0] = "setorigin", + [1] = "page", + [2] = "direct", + ["direct"] = 2, + ["page"] = 1, + ["setorigin"] = 0 + } +} +function get(name, catcodetable) + local startpos, endpos, category, entry = + string.find(name, "^(%a[%a%d%.]*)%.(-?[%a%d]+)$") + if not entry then + return + end + local node = data[category] + if not node then + return + end + local num = tonumber(entry) + local value + if num then + value = node[num] + if not value then + return + end + else + value = node[entry] + if not value then + return + end + value = "" .. value + end + tex.print(catcodetable, value) +end +-- +-- End of File `oberdiek.magicnum.lua'. diff --git a/Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua b/Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua new file mode 100644 index 00000000000..00e488fcd24 --- /dev/null +++ b/Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua @@ -0,0 +1,295 @@ +-- +-- This is file `oberdiek.pdftexcmds.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- pdftexcmds.dtx (with options: `lua') +-- +-- This is a generated file. +-- +-- Copyright (C) 2007 by Heiko Oberdiek +-- +-- This work may be distributed and/or modified under the +-- conditions of the LaTeX Project Public License, either +-- version 1.3 of this license or (at your option) any later +-- version. The latest version of this license is in +-- http://www.latex-project.org/lppl.txt +-- and version 1.3 or later is part of all distributions of +-- LaTeX version 2005/12/01 or later. +-- +-- This work has the LPPL maintenance status "maintained". +-- +-- This Current Maintainer of this work is Heiko Oberdiek. +-- +-- This work consists of the main source file pdftexcmds.dtx +-- and the derived files +-- pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv, +-- oberdiek.pdftexcmds.lua, pdftexcmds.lua. +-- +module("oberdiek.pdftexcmds", package.seeall) +local systemexitstatus +function strcmp(A, B) + if A == B then + tex.write("0") + elseif A < B then + tex.write("-1") + else + tex.write("1") + end +end +local function utf8_to_byte(str) + local i = 0 + local n = string.len(str) + local t = {} + while i < n do + i = i + 1 + local a = string.byte(str, i) + if a < 128 then + table.insert(t, string.char(a)) + else + if a >= 192 and i < n then + i = i + 1 + local b = string.byte(str, i) + if b < 128 or b >= 192 then + i = i - 1 + elseif a == 194 then + table.insert(t, string.char(b)) + elseif a == 195 then + table.insert(t, string.char(b + 64)) + end + end + end + end + return table.concat(t) +end +function escapehex(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + return string.format("%02X", string.byte(ch)) + end + ))) +end +function unescapehex(str, mode) + local a = 0 + local first = true + local result = {} + for i = 1, string.len(str), 1 do + local ch = string.byte(str, i) + if ch >= 48 and ch <= 57 then + ch = ch - 48 + elseif ch >= 65 and ch <= 70 then + ch = ch - 55 + elseif ch >= 97 and ch <= 102 then + ch = ch - 87 + else + ch = nil + end + if ch then + if first then + a = ch * 16 + first = false + else + table.insert(result, a + ch) + first = true + end + end + end + if not first then + table.insert(result, a) + end + if mode == "byte" then + local utf8 = {} + for i, a in ipairs(result) do + if a < 128 then + table.insert(utf8, a) + else + if a < 192 then + table.insert(utf8, 194) + a = a - 128 + else + table.insert(utf8, 195) + a = a - 192 + end + table.insert(utf8, a + 128) + end + end + result = utf8 + end + tex.settoks(toks, string.char(unpack(result))) +end +function escapestring(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + local b = string.byte(ch) + if b < 33 or b > 126 then + return string.format("\\%.3o", b) + end + if b == 40 or b == 41 or b == 92 then + return "\\" .. ch + end + return nil + end + ))) +end +function escapename(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + local b = string.byte(ch) + if b == 0 then + return "" + end + if b <= 32 or b >= 127 + or b == 35 or b == 37 or b == 40 or b == 41 + or b == 47 or b == 60 or b == 62 or b == 91 + or b == 93 or b == 123 or b == 125 then + return string.format("#%.2X", b) + else + return nil + end + end + ))) +end +function filesize(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local size = lfs.attributes(foundfile, "size") + if size then + tex.write(size) + end + end +end +function filemoddate(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local date = lfs.attributes(foundfile, "modification") + if date then + local d = os.date("*t", date) + if d.sec >= 60 then + d.sec = 59 + end + local u = os.date("!*t", date) + local off = 60 * (d.hour - u.hour) + d.min - u.min + if d.year ~= u.year then + if d.year > u.year then + off = off + 1440 + else + off = off - 1440 + end + elseif d.yday ~= u.yday then + if d.yday > u.yday then + off = off + 1440 + else + off = off - 1440 + end + end + local timezone + if off == 0 then + timezone = "Z" + else + local hours = math.floor(off / 60) + local mins = math.abs(off - hours * 60) + timezone = string.format("%+03d'%02d'", hours, mins) + end + tex.write(string.format("D:%04d%02d%02d%02d%02d%02d%s", + d.year, d.month, d.day, d.hour, d.min, d.sec, timezone)) + end + end +end +function filedump(offset, length, filename) + length = tonumber(length) + if length and length > 0 then + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + offset = tonumber(offset) + if not offset then + offset = 0 + end + local filehandle = io.open(foundfile, "r") + if filehandle then + if offset > 0 then + filehandle:seek("set", offset) + end + local dump = filehandle:read(length) + escapehex(dump) + end + end + end +end +function mdfivesum(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + escapehex(md5.sum(str)) +end +function filemdfivesum(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local filehandle = io.open(foundfile, "r") + if filehandle then + local contents = filehandle:read("*a") + escapehex(md5.sum(contents)) + end + end +end +function shellescape() + if os.execute then + tex.write("1") + else + tex.write("0") + end +end +function system(cmdline) + systemexitstatus = nil + texio.write_nl("log", "system(" .. cmdline .. ") ") + if os.execute then + texio.write("log", "executed.") + systemexitstatus = os.execute(cmdline) + else + texio.write("log", "disabled.") + end +end +function lastsystemstatus() + local result = tonumber(systemexitstatus) + if result then + local x = math.floor(result / 256) + tex.write(result - 256 * math.floor(result / 256)) + end +end +function lastsystemexit() + local result = tonumber(systemexitstatus) + if result then + tex.write(math.floor(result / 256)) + end +end +function pipe(cmdline) + local result + systemexitstatus = nil + texio.write_nl("log", "pipe(" .. cmdline ..") ") + if io.popen then + texio.write("log", "executed.") + local handle = io.popen(cmdline, "r") + if handle then + result = handle:read("*a") + handle:close() + end + else + texio.write("log", "disabled.") + end + if result then + tex.settoks(toks, result) + else + tex.settoks(toks, "") + end +end +-- +-- End of File `oberdiek.pdftexcmds.lua'. diff --git a/Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua b/Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua new file mode 100644 index 00000000000..0c4c1475e8b --- /dev/null +++ b/Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua @@ -0,0 +1,295 @@ +-- +-- This is file `pdftexcmds.lua', +-- generated with the docstrip utility. +-- +-- The original source files were: +-- +-- pdftexcmds.dtx (with options: `lua') +-- +-- This is a generated file. +-- +-- Copyright (C) 2007 by Heiko Oberdiek +-- +-- This work may be distributed and/or modified under the +-- conditions of the LaTeX Project Public License, either +-- version 1.3 of this license or (at your option) any later +-- version. The latest version of this license is in +-- http://www.latex-project.org/lppl.txt +-- and version 1.3 or later is part of all distributions of +-- LaTeX version 2005/12/01 or later. +-- +-- This work has the LPPL maintenance status "maintained". +-- +-- This Current Maintainer of this work is Heiko Oberdiek. +-- +-- This work consists of the main source file pdftexcmds.dtx +-- and the derived files +-- pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv, +-- oberdiek.pdftexcmds.lua, pdftexcmds.lua. +-- +module("oberdiek.pdftexcmds", package.seeall) +local systemexitstatus +function strcmp(A, B) + if A == B then + tex.write("0") + elseif A < B then + tex.write("-1") + else + tex.write("1") + end +end +local function utf8_to_byte(str) + local i = 0 + local n = string.len(str) + local t = {} + while i < n do + i = i + 1 + local a = string.byte(str, i) + if a < 128 then + table.insert(t, string.char(a)) + else + if a >= 192 and i < n then + i = i + 1 + local b = string.byte(str, i) + if b < 128 or b >= 192 then + i = i - 1 + elseif a == 194 then + table.insert(t, string.char(b)) + elseif a == 195 then + table.insert(t, string.char(b + 64)) + end + end + end + end + return table.concat(t) +end +function escapehex(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + return string.format("%02X", string.byte(ch)) + end + ))) +end +function unescapehex(str, mode) + local a = 0 + local first = true + local result = {} + for i = 1, string.len(str), 1 do + local ch = string.byte(str, i) + if ch >= 48 and ch <= 57 then + ch = ch - 48 + elseif ch >= 65 and ch <= 70 then + ch = ch - 55 + elseif ch >= 97 and ch <= 102 then + ch = ch - 87 + else + ch = nil + end + if ch then + if first then + a = ch * 16 + first = false + else + table.insert(result, a + ch) + first = true + end + end + end + if not first then + table.insert(result, a) + end + if mode == "byte" then + local utf8 = {} + for i, a in ipairs(result) do + if a < 128 then + table.insert(utf8, a) + else + if a < 192 then + table.insert(utf8, 194) + a = a - 128 + else + table.insert(utf8, 195) + a = a - 192 + end + table.insert(utf8, a + 128) + end + end + result = utf8 + end + tex.settoks(toks, string.char(unpack(result))) +end +function escapestring(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + local b = string.byte(ch) + if b < 33 or b > 126 then + return string.format("\\%.3o", b) + end + if b == 40 or b == 41 or b == 92 then + return "\\" .. ch + end + return nil + end + ))) +end +function escapename(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + local b = string.byte(ch) + if b == 0 then + return "" + end + if b <= 32 or b >= 127 + or b == 35 or b == 37 or b == 40 or b == 41 + or b == 47 or b == 60 or b == 62 or b == 91 + or b == 93 or b == 123 or b == 125 then + return string.format("#%.2X", b) + else + return nil + end + end + ))) +end +function filesize(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local size = lfs.attributes(foundfile, "size") + if size then + tex.write(size) + end + end +end +function filemoddate(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local date = lfs.attributes(foundfile, "modification") + if date then + local d = os.date("*t", date) + if d.sec >= 60 then + d.sec = 59 + end + local u = os.date("!*t", date) + local off = 60 * (d.hour - u.hour) + d.min - u.min + if d.year ~= u.year then + if d.year > u.year then + off = off + 1440 + else + off = off - 1440 + end + elseif d.yday ~= u.yday then + if d.yday > u.yday then + off = off + 1440 + else + off = off - 1440 + end + end + local timezone + if off == 0 then + timezone = "Z" + else + local hours = math.floor(off / 60) + local mins = math.abs(off - hours * 60) + timezone = string.format("%+03d'%02d'", hours, mins) + end + tex.write(string.format("D:%04d%02d%02d%02d%02d%02d%s", + d.year, d.month, d.day, d.hour, d.min, d.sec, timezone)) + end + end +end +function filedump(offset, length, filename) + length = tonumber(length) + if length and length > 0 then + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + offset = tonumber(offset) + if not offset then + offset = 0 + end + local filehandle = io.open(foundfile, "r") + if filehandle then + if offset > 0 then + filehandle:seek("set", offset) + end + local dump = filehandle:read(length) + escapehex(dump) + end + end + end +end +function mdfivesum(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + escapehex(md5.sum(str)) +end +function filemdfivesum(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local filehandle = io.open(foundfile, "r") + if filehandle then + local contents = filehandle:read("*a") + escapehex(md5.sum(contents)) + end + end +end +function shellescape() + if os.execute then + tex.write("1") + else + tex.write("0") + end +end +function system(cmdline) + systemexitstatus = nil + texio.write_nl("log", "system(" .. cmdline .. ") ") + if os.execute then + texio.write("log", "executed.") + systemexitstatus = os.execute(cmdline) + else + texio.write("log", "disabled.") + end +end +function lastsystemstatus() + local result = tonumber(systemexitstatus) + if result then + local x = math.floor(result / 256) + tex.write(result - 256 * math.floor(result / 256)) + end +end +function lastsystemexit() + local result = tonumber(systemexitstatus) + if result then + tex.write(math.floor(result / 256)) + end +end +function pipe(cmdline) + local result + systemexitstatus = nil + texio.write_nl("log", "pipe(" .. cmdline ..") ") + if io.popen then + texio.write("log", "executed.") + local handle = io.popen(cmdline, "r") + if handle then + result = handle:read("*a") + handle:close() + end + else + texio.write("log", "disabled.") + end + if result then + tex.settoks(toks, result) + else + tex.settoks(toks, "") + end +end +-- +-- End of File `pdftexcmds.lua'. diff --git a/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx b/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx index bc4e8c9b18a..fcf5f6dd486 100644 --- a/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/alphalph.dtx @@ -178,7 +178,7 @@ and the derived files % % \fi % -% \CheckSum{1125} +% \CheckSum{1134} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -1318,6 +1318,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input alphalph.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -1333,7 +1336,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input alphalph.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx b/Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx index dd38c201ff3..716626cb4cf 100644 --- a/Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx @@ -155,7 +155,7 @@ and the derived files % % \fi % -% \CheckSum{1373} +% \CheckSum{1382} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -1551,6 +1551,9 @@ X \endgroup \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input atbegshi.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -1566,7 +1569,7 @@ X \endgroup \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input atbegshi.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/bigintcalc.dtx b/Master/texmf-dist/source/latex/oberdiek/bigintcalc.dtx index ac70855fd7d..d3444c94adc 100644 --- a/Master/texmf-dist/source/latex/oberdiek/bigintcalc.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/bigintcalc.dtx @@ -187,7 +187,7 @@ and the derived files % % \fi % -% \CheckSum{3620} +% \CheckSum{3629} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -3402,6 +3402,9 @@ $ \BIC@Temp 9{18\or27\or36\or45\or54\or63\or72\or81}% \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input bigintcalc.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -3417,7 +3420,7 @@ $ \BIC@Temp 9{18\or27\or36\or45\or54\or63\or72\or81}% \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input bigintcalc.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/bitset.dtx b/Master/texmf-dist/source/latex/oberdiek/bitset.dtx index 64d95ca58be..e616f51c0eb 100644 --- a/Master/texmf-dist/source/latex/oberdiek/bitset.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/bitset.dtx @@ -153,7 +153,7 @@ and the derived files % % \fi % -% \CheckSum{3409} +% \CheckSum{3418} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -2801,6 +2801,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input bitset.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -2816,7 +2819,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input bitset.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/bmpsize.dtx b/Master/texmf-dist/source/latex/oberdiek/bmpsize.dtx index 982ef023778..bec2b5f7379 100644 --- a/Master/texmf-dist/source/latex/oberdiek/bmpsize.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/bmpsize.dtx @@ -795,7 +795,9 @@ and the derived files % % \subsubsection{png} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin png %big-endian @@ -831,7 +833,9 @@ and the derived files %repeat %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@png} % \begin{macrocode} %<*base> @@ -903,7 +907,9 @@ and the derived files % % \subsubsection{jpg} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin jpg % @@ -1087,7 +1093,9 @@ and the derived files %repeat %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@jpg} % \begin{macrocode} %<*base> @@ -1403,7 +1411,9 @@ and the derived files % % \subsubsection{bmp} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin bmp %little-endian @@ -1442,7 +1452,9 @@ and the derived files %assign {100cm} -> $unit %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@bmp} % \begin{macrocode} %<*base> @@ -1504,7 +1516,9 @@ and the derived files % % \subsubsection{gif} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin gif %little-endian @@ -1528,7 +1542,9 @@ and the derived files %ok %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@gif} % \begin{macrocode} %<*base> @@ -1569,7 +1585,9 @@ and the derived files % % \subsubsection{tiff} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin tiff %% defaults @@ -1655,7 +1673,9 @@ and the derived files %repeat %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@tiff} % \begin{macrocode} %<*base> @@ -1795,7 +1815,9 @@ and the derived files % % \subsubsection{pnm} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin pnm %assign {0} -> $offset @@ -1879,7 +1901,9 @@ and the derived files %ok %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@pnm} % \begin{macrocode} %<*base> @@ -2033,7 +2057,9 @@ and the derived files % % \subsubsection{pam} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin pam %read 3 0 @@ -2172,7 +2198,9 @@ and the derived files %repeat %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@pam} % \begin{macrocode} %<*base> @@ -2402,7 +2430,9 @@ and the derived files % % \subsubsection{xpm} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin xpm %read 9 0 @@ -2504,7 +2534,9 @@ and the derived files %ok %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@xpm} % \begin{macrocode} %<*base> @@ -2700,7 +2732,9 @@ and the derived files % % \subsubsection{tga} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin tga %little-endian @@ -2743,7 +2777,9 @@ and the derived files %fi %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@tga} % \begin{macrocode} %<*base> @@ -2821,7 +2857,9 @@ and the derived files % % \subsubsection{pcx} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin pcx %little-endian @@ -2846,7 +2884,9 @@ and the derived files %assign {72.27pt} -> $unit %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@pcx} % \begin{macrocode} %<*base> @@ -2895,7 +2935,9 @@ and the derived files % % \subsubsection{msp} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin msp %little-endian @@ -2922,7 +2964,9 @@ and the derived files %% num 2 % height_prn %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@msp} % \begin{macrocode} %<*base> @@ -2968,7 +3012,9 @@ and the derived files % % \subsubsection{sgi} % +%\iffalse %<*ignore> +%\fi %\begin{verbatim} %begin sgi %big-endian @@ -2984,7 +3030,9 @@ and the derived files %ok %end %\end{verbatim} +%\iffalse % +%\fi % \begin{macro}{\bmpsize@read@sgi} % \begin{macrocode} %<*base> diff --git a/Master/texmf-dist/source/latex/oberdiek/catchfile.dtx b/Master/texmf-dist/source/latex/oberdiek/catchfile.dtx index c4a7b89b8f2..47cdf873bbc 100644 --- a/Master/texmf-dist/source/latex/oberdiek/catchfile.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/catchfile.dtx @@ -152,7 +152,7 @@ and the derived files % % \fi % -% \CheckSum{575} +% \CheckSum{584} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -570,6 +570,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input catchfile.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -585,7 +588,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input catchfile.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx index 587e58d57ab..e13ea9182a6 100644 --- a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx @@ -161,7 +161,7 @@ and the derived files % % \fi % -% \CheckSum{1382} +% \CheckSum{1391} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -1741,6 +1741,9 @@ You need Acrobat Reader 8 or higher. \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input embedfile.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -1756,7 +1759,7 @@ You need Acrobat Reader 8 or higher. \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input embedfile.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/engord.dtx b/Master/texmf-dist/source/latex/oberdiek/engord.dtx index 01be8d8a050..740338d1f8b 100644 --- a/Master/texmf-dist/source/latex/oberdiek/engord.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/engord.dtx @@ -146,7 +146,7 @@ and the derived files % % \fi % -% \CheckSum{459} +% \CheckSum{468} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -666,6 +666,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input engord.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -681,7 +684,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input engord.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx b/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx index 09d191305ab..c6fd3016703 100644 --- a/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx @@ -148,7 +148,7 @@ and the derived files % % \fi % -% \CheckSum{607} +% \CheckSum{616} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -855,6 +855,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input epstopdf.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -870,7 +873,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input epstopdf.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx b/Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx index 6f8076e1e62..e92e8e8d680 100644 --- a/Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx @@ -72,7 +72,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: etexcmds 2007/09/09 v1.1 Prefix for e-TeX command names (HO)} +\Msg{* Package: etexcmds 2007/12/12 v1.2 Prefix for e-TeX command names (HO)} \Msg{************************************************************************} \keepsilent @@ -145,7 +145,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{etexcmds.drv}% - [2007/09/09 v1.1 Prefix for e-TeX command names (HO)]% + [2007/12/12 v1.2 Prefix for e-TeX command names (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2007/11/11] \begin{document} @@ -154,7 +154,7 @@ and the derived files % % \fi % -% \CheckSum{405} +% \CheckSum{479} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -175,7 +175,7 @@ and the derived files % \GetFileInfo{etexcmds.drv} % % \title{The \xpackage{etexcmds} package} -% \date{2007/09/09 v1.1} +% \date{2007/12/12 v1.2} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -191,6 +191,8 @@ and the derived files % % \section{Documentation} % +% \subsection{\cs{unexpanded}} +% % \begin{declcs}{etex@unexpanded} % \end{declcs} % New primitive commands are introduced in \eTeX. Unhappily @@ -210,6 +212,13 @@ and the derived files % primitive \cs{unexpanded} has been found and \cs{etex@unexpanded} % is available. % +% \subsection{\cs{expanded}} +% +% Probably \cs{expanded} will be added in \pdfTeX\ 1.50.4 and +% \LuaTeX. Again Con\TeX t defines this as macro. +% Therefore version 1.2 of this packages also provides +% \cs{etex@expanded} and \cs{ifetex@unexpanded}. +% % \StopEventually{ % } % @@ -283,7 +292,7 @@ and the derived files \fi \expandafter\x\csname ver@etexcmds.sty\endcsname \ProvidesPackage{etexcmds}% - [2007/09/09 v1.1 Prefix for e-TeX command names (HO)] + [2007/12/12 v1.2 Prefix for e-TeX command names (HO)] % \end{macrocode} % % \subsection{Catcodes} @@ -317,6 +326,11 @@ and the derived files \TMP@EnsureCode{46}{12}% . \TMP@EnsureCode{47}{12}% / \TMP@EnsureCode{61}{12}% = +\edef\etexcmds@AtEnd{% + \etexcmds@AtEnd + \escapechar\the\escapechar\relax +} +\escapechar=92 % backslash % \end{macrocode} % % \subsection{Load package \xpackage{infwarerr}} @@ -341,7 +355,6 @@ and the derived files % \begin{macro}{\etex@unexpanded} % \begin{macrocode} \begingroup -\escapechar=92 % backslash \edef\x{\string\unexpanded}% \edef\y{\meaning\unexpanded}% \ifx\x\y @@ -375,6 +388,50 @@ and the derived files % \end{macrocode} % \end{macro} % +% \subsection{\cs{expanded}} +% +% \begin{macro}{\ifetex@expanded} +% \begin{macrocode} +\newif\ifetex@expanded +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\etex@expanded} +% \begin{macrocode} +\begingroup +\edef\x{\string\expanded}% +\edef\y{\meaning\expanded}% +\ifx\x\y + \endgroup + \let\etex@expanded\expanded + \etex@expandedtrue +\else + \edef\y{\meaning\normalexpanded}% + \ifx\x\y + \endgroup + \let\etex@expanded\normalexpanded + \etex@expandedtrue + \else + \edef\y{\meaning\@@expanded}% + \ifx\y + \endgroup + \let\etex@expanded\@@expanded + \etex@expandedtrue + \else + \endgroup + \@PackageInfoNoLine{etexcmds}{% + Could not find \string\expanded.\MessageBreak + That can mean that you are not using pdfTeX 1.50 or\MessageBreak + that some package has redefined \string\expanded.\MessageBreak + In the latter case, load this package earlier% + }% + \etex@expandedfalse + \fi + \fi +\fi +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} \etexcmds@AtEnd % @@ -440,6 +497,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input etexcmds.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -455,7 +515,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input etexcmds.sty\relax + \LoadCommand \RestoreCatcodes } \Test @@ -486,7 +546,7 @@ and the derived files % \begin{macrocode} %<*test3> \NeedsTeXFormat{LaTeX2e} -\ProvidesFile{etexcmds-test3.tex}[2007/09/09 v1.1 Test file for LaTeX] +\ProvidesFile{etexcmds-test3.tex}[2007/12/12 v1.2 Test file for LaTeX] \RequirePackage{etexcmds} \makeatletter \edef\x{\string\unexpanded} @@ -502,7 +562,7 @@ and the derived files % \begin{macrocode} %<*test4> \NeedsTeXFormat{LaTeX2e} -\ProvidesFile{etexcmds-test4.tex}[2007/09/09 v1.1 Test file for LaTeX] +\ProvidesFile{etexcmds-test4.tex}[2007/12/12 v1.2 Test file for LaTeX] \documentclass{article} \usepackage{m-pictex} \usepackage{m-ch-de} @@ -710,7 +770,7 @@ and the derived files % \end{quote} % % \begin{History} -% \begin{Version}{2007/04/26 v1.0} +% \begin{Version}{2007/05/06 v1.0} % \item % First version. % \end{Version} @@ -720,6 +780,10 @@ and the derived files % \item % Catcode section rewritten. % \end{Version} +% \begin{Version}{2007/12/12 v1.2} +% \item +% \cs{etex@expanded} added. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/grfext.dtx b/Master/texmf-dist/source/latex/oberdiek/grfext.dtx index 6fb6da7452c..d44d5c36959 100644 --- a/Master/texmf-dist/source/latex/oberdiek/grfext.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/grfext.dtx @@ -148,7 +148,7 @@ and the derived files % % \fi % -% \CheckSum{621} +% \CheckSum{630} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -625,6 +625,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input grfext.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -640,7 +643,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input grfext.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx b/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx index 0c1018578b5..f19fcf142d8 100644 --- a/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx @@ -66,7 +66,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: holtxdoc 2007/11/11 v0.9 Private additional ltxdoc support (HO)} +\Msg{* Package: holtxdoc 2007/12/12 v0.10 Private additional ltxdoc support (HO)} \Msg{************************************************************************} \keepsilent @@ -132,7 +132,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{holtxdoc.drv}% - [2007/11/11 v0.9 Private additional ltxdoc support (HO)]% + [2007/12/12 v0.10 Private additional ltxdoc support (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2007/11/11] \begin{document} @@ -141,7 +141,7 @@ and the derived files % % \fi % -% \CheckSum{270} +% \CheckSum{274} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -162,7 +162,7 @@ and the derived files % \GetFileInfo{holtxdoc.drv} % % \title{The \xpackage{holtxdoc} package} -% \date{2007/11/11 v0.9} +% \date{2007/12/12 v0.10} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -202,7 +202,7 @@ and the derived files % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{holtxdoc}% - [2007/11/11 v0.9 Private additional ltxdoc support (HO)] + [2007/12/12 v0.10 Private additional ltxdoc support (HO)] % \end{macrocode} % % \begin{macrocode} @@ -382,6 +382,7 @@ and the derived files \providecommand*{\MakeIndex}{\textsl{MakeIndex}} \providecommand*{\docstrip}{\textsf{docstrip}} \providecommand*{\plainTeX}{\mbox{plain-\TeX}} +\providecommand*{\iniTeX}{\mbox{ini-\TeX}} \providecommand*{\VTeX}{V\TeX} % \end{macrocode} % @@ -627,6 +628,10 @@ and the derived files % \item % \cs{LuaTeX} added. % \end{Version} +% \begin{Version}{2007/12/12 v0.10} +% \item +% \cs{iniTeX} added. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/iflang.dtx b/Master/texmf-dist/source/latex/oberdiek/iflang.dtx index 7b16eb5ad7f..65d6ce131e5 100644 --- a/Master/texmf-dist/source/latex/oberdiek/iflang.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/iflang.dtx @@ -156,7 +156,7 @@ and the derived files % % \fi % -% \CheckSum{820} +% \CheckSum{829} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -689,6 +689,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input iflang.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -704,7 +707,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input iflang.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/ifluatex.dtx b/Master/texmf-dist/source/latex/oberdiek/ifluatex.dtx new file mode 100644 index 00000000000..62f38a6f835 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/ifluatex.dtx @@ -0,0 +1,675 @@ +% \iffalse meta-comment +% +% Copyright (C) 2007 by Heiko Oberdiek +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% This Current Maintainer of this work is Heiko Oberdiek. +% +% This work consists of the main source file ifluatex.dtx +% and the derived files +% ifluatex.sty, ifluatex.pdf, ifluatex.ins, ifluatex.drv, +% ifluatex-test1.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/ifluatex.dtx +% CTAN:macros/latex/contrib/oberdiek/ifluatex.pdf +% +% Unpacking: +% (a) If ifluatex.ins is present: +% tex ifluatex.ins +% (b) Without ifluatex.ins: +% tex ifluatex.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{ifluatex.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If ifluatex.drv is present: +% latex ifluatex.drv +% (b) Without ifluatex.drv: +% latex ifluatex.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 ifluatex.dtx +% makeindex -s gind.ist ifluatex.idx +% pdflatex ifluatex.dtx +% makeindex -s gind.ist ifluatex.idx +% pdflatex ifluatex.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/ifluatex.sty +% TDS:doc/latex/oberdiek/ifluatex.pdf +% TDS:doc/latex/oberdiek/test/ifluatex-test1.tex +% TDS:source/latex/oberdiek/ifluatex.dtx +% +%<*ignore> +\begingroup + \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: ifluatex 2007/12/12 v1.0 Provides the ifluatex switch (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Copyright (C) 2007 by Heiko Oberdiek + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3 of this license or (at your option) any later +version. The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +This Current Maintainer of this work is Heiko Oberdiek. + +This work consists of the main source file ifluatex.dtx +and the derived files + ifluatex.sty, ifluatex.pdf, ifluatex.ins, ifluatex.drv, + ifluatex-test1.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{ifluatex.ins}{\from{ifluatex.dtx}{install}}% + \file{ifluatex.drv}{\from{ifluatex.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{ifluatex.sty}{\from{ifluatex.dtx}{package}}% + \usedir{doc/latex/oberdiek/test}% + \file{ifluatex-test1.tex}{\from{ifluatex.dtx}{test1}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* ifluatex.sty} +\Msg{*} +\Msg{* And install the following script file:} +\Msg{*} +\Msg{* } +\Msg{*} +\Msg{* To produce the documentation run the file `ifluatex.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{ifluatex.drv}% + [2007/12/12 v1.0 Provides the ifluatex switch (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2007/11/11] +\begin{document} + \DocInput{ifluatex.dtx}% +\end{document} +% +% \fi +% +% \CheckSum{363} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{ifluatex.drv} +% +% \title{The \xpackage{ifluatex} package} +% \date{2007/12/12 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package looks for \LuaTeX\ regardless of its mode +% and provides the switch \cs{ifluatex}. +% It works with \plainTeX\ or \LaTeX. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% The package \xpackage{ifluatex} can be used with both \plainTeX\ +% and \LaTeX: +% \begin{description} +% \item[\plainTeX:] |\input ifluatex.sty| +% \item[\LaTeXe:] |\usepackage{ifluatex}| +% \end{description} +% +% \DescribeMacro{\ifluatex} +% The package provides the switch \cs{ifluatex}: +% \begin{quote} +% |\ifluatex|\\ +% \hspace{1.5em}\LuaTeX\ is running\\ +% |\else|\\ +% \hspace{1.5em}Without \LuaTeX\\ +% |\fi| +% \end{quote} +% +% If you want to detect the mode (DVI or PDF), then use package +% \xpackage{ifpdf}. \LuaTeX\ has inherited \cs{pdfoutput} from \pdfTeX. +% +% \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 + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@ifluatex.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \catcode35 6 % # + \catcode123 1 % { + \catcode125 2 % } + \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{ifluatex}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \catcode35 6 % # + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode47 12 % / + \catcode58 12 % : + \catcode64 11 % @ + \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\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@ifluatex.sty\endcsname +\ProvidesPackage{ifluatex}% + [2007/12/12 v1.0 Provides the ifluatex switch (HO)] +% \end{macrocode} +% +% \subsection{Catcodes} +% +% \begin{macrocode} +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname ifluatex@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\ifluatex@AtEnd{% + \ifluatex@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{10}{12}% ^^J +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{58}{12}% : +\TMP@EnsureCode{61}{12}% = +\TMP@EnsureCode{94}{7}% ^ +% \end{macrocode} +% +% \subsection{Check for previously defined \cs{ifluatex}} +% +% \begin{macrocode} +\begingroup + \expandafter\ifx\csname ifluatex\endcsname\relax + \else + \edef\i/{\expandafter\string\csname ifluatex\endcsname}% + \expandafter\ifx\csname PackageError\endcsname\relax + \def\x#1#2{% + \edef\z{#2}% + \expandafter\errhelp\expandafter{\z}% + \errmessage{Package ifluatex Error: #1}% + }% + \def\y{^^J}% + \newlinechar=10 % + \else + \def\x#1#2{% + \PackageError{ifluatex}{#1}{#2}% + }% + \def\y{\MessageBreak}% + \fi + \x{Name clash, \i/ is already defined}{% + Incompatible versions of \i/ can cause problems,\y + therefore package loading is aborted.% + }% + \endgroup + \ifluatex@AtEnd + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% +% \subsection{\cs{ifluatex}} +% +% \begin{macro}{\ifluatex} +% Create and set the switch. \cs{newif} initializes the +% switch with \cs{iffalse}. +% \begin{macrocode} +\newif\ifluatex +% \end{macrocode} +% Test \cs{pdfoutput}. Is it defined and different from +% \cs{relax}? Someone could have used \LaTeX\ internal +% \cs{@ifundefined}, or something else involving. +% Notice, \cs{csname} is executed inside a group for the test +% to cancel the side effect of \cs{csname}. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname luatexversion\endcsname\relax +\else + \luatextrue +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Protocol entry} +% +% Log comment: +% \begin{macrocode} +\begingroup + \expandafter\ifx\csname PackageInfo\endcsname\relax + \def\x#1#2{% + \immediate\write-1{Package #1 Info: #2.}% + }% + \else + \let\x\PackageInfo + \expandafter\let\csname on@line\endcsname\empty + \fi + \x{ifluatex}{LuaTeX \ifluatex\else not \fi detected}% +\endgroup +% \end{macrocode} +% \begin{macrocode} +\ifluatex@AtEnd +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{Test} +% +% \subsection{Catcode checks for loading} +% +% \begin{macrocode} +%<*test1> +% \end{macrocode} +% \begin{macrocode} +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input ifluatex.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/ifluatex.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/ifluatex.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[\CTAN{macros/latex/contrib/oberdiek/oberdiek-tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTAN{tds/tds.pdf}). 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} +% +% \paragraph{Script installation.} +% Check the directory \xfile{TDS:scripts/oberdiek/} for +% scripts that need further installation steps. +% Package \xpackage{attachfile2} comes with the Perl script +% \xfile{pdfatfi.pl} that should be installed in such a way +% that it can be called as \texttt{pdfatfi}. +% Example (linux): +% \begin{quote} +% |chmod +x scripts/oberdiek/pdfatfi.pl|\\ +% |cp scripts/oberdiek/pdfatfi.pl /usr/local/bin/| +% \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 ifluatex.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@{}} +% ifluatex.sty & tex/generic/oberdiek/ifluatex.sty\\ +% ifluatex.pdf & doc/latex/oberdiek/ifluatex.pdf\\ +% test/ifluatex-test1.tex & doc/latex/oberdiek/test/ifluatex-test1.tex\\ +% ifluatex.dtx & source/latex/oberdiek/ifluatex.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 +% (\teTeX, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \teTeX\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Attached source.} +% +% The PDF documentation on CTAN also includes the +% \xfile{.dtx} source file. It can be extracted by +% AcrobatReader 6 or higher. Another option is \textsf{pdftk}, +% e.g. unpack the file into the current directory: +% \begin{quote} +% \verb|pdftk ifluatex.pdf unpack_files output .| +% \end{quote} +% +% \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{ifluatex.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 ifluatex.dtx +%makeindex -s gind.ist ifluatex.idx +%pdflatex ifluatex.dtx +%makeindex -s gind.ist ifluatex.idx +%pdflatex ifluatex.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/12/12 v1.0} +% \item +% First public version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx b/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx index 8cfb7a0f949..19b26013a14 100644 --- a/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx @@ -68,7 +68,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: ifpdf 2007/09/09 v1.5 Provides the ifpdf switch (HO)} +\Msg{* Package: ifpdf 2007/12/12 v1.6 Provides the ifpdf switch (HO)} \Msg{************************************************************************} \keepsilent @@ -137,7 +137,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ifpdf.drv}% - [2007/09/09 v1.5 Provides the ifpdf switch (HO)]% + [2007/12/12 v1.6 Provides the ifpdf switch (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2007/11/11] \begin{document} @@ -146,7 +146,7 @@ and the derived files % % \fi % -% \CheckSum{361} +% \CheckSum{368} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -167,7 +167,7 @@ and the derived files % \GetFileInfo{ifpdf.drv} % % \title{The \xpackage{ifpdf} package} -% \date{2007/09/09 v1.5} +% \date{2007/12/12 v1.6} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -240,7 +240,7 @@ and the derived files % and \LaTeX: % \begin{description} % \item[\plainTeX:] |\input ifpdf.sty| -% \item[\LaTeXe:] |\usepackage{ifpdf}|\\ +% \item[\LaTeXe:] |\usepackage{ifpdf}| % \end{description} % % \DescribeMacro{\ifpdf} @@ -381,7 +381,7 @@ and the derived files \fi \expandafter\x\csname ver@ifpdf.sty\endcsname \ProvidesPackage{ifpdf}% - [2007/09/09 v1.5 Provides the ifpdf switch (HO)] + [2007/12/12 v1.6 Provides the ifpdf switch (HO)] % \end{macrocode} % % \subsection{Catcodes} @@ -411,7 +411,6 @@ and the derived files \catcode#1 #2\relax } \TMP@EnsureCode{10}{12}% ^^J -\TMP@EnsureCode{39}{12}% ' \TMP@EnsureCode{44}{12}% , \TMP@EnsureCode{45}{12}% - \TMP@EnsureCode{46}{12}% . @@ -420,7 +419,6 @@ and the derived files \TMP@EnsureCode{60}{12}% < \TMP@EnsureCode{61}{12}% = \TMP@EnsureCode{94}{7}% ^ -\TMP@EnsureCode{96}{12}% ` % \end{macrocode} % % \subsection{Check for previously defined \cs{ifpdf}} @@ -566,6 +564,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input ifpdf.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -581,7 +582,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input ifpdf.sty\relax + \LoadCommand \RestoreCatcodes } \Test @@ -814,6 +815,10 @@ and the derived files % \item % Catcode settings added. % \end{Version} +% \begin{Version}{2007/12/12 v1.6} +% \item +% Minor update. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx b/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx index ea7ad725a54..71fd978da31 100644 --- a/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx @@ -146,7 +146,7 @@ and the derived files % % \fi % -% \CheckSum{430} +% \CheckSum{439} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -513,6 +513,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input ifvtex.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -528,7 +531,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input ifvtex.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/infwarerr.dtx b/Master/texmf-dist/source/latex/oberdiek/infwarerr.dtx index f4a8769c4e5..f315d13d88f 100644 --- a/Master/texmf-dist/source/latex/oberdiek/infwarerr.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/infwarerr.dtx @@ -152,7 +152,7 @@ and the derived files % % \fi % -% \CheckSum{782} +% \CheckSum{791} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -692,6 +692,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input infwarerr.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -707,7 +710,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input infwarerr.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/intcalc.dtx b/Master/texmf-dist/source/latex/oberdiek/intcalc.dtx index fb84183f530..d81f7749def 100644 --- a/Master/texmf-dist/source/latex/oberdiek/intcalc.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/intcalc.dtx @@ -188,7 +188,7 @@ and the derived files % % \fi % -% \CheckSum{3135} +% \CheckSum{3144} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -3134,6 +3134,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input intcalc.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -3149,7 +3152,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input intcalc.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx b/Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx index 5e42e7bbe0c..17009ed9a94 100644 --- a/Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx @@ -157,7 +157,7 @@ and the derived files % % \fi % -% \CheckSum{1978} +% \CheckSum{1987} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -2470,6 +2470,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input kvoptions.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -2485,7 +2488,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input kvoptions.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx b/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx index 931d33b1527..284af240ab3 100644 --- a/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx @@ -155,7 +155,7 @@ and the derived files % % \fi % -% \CheckSum{1100} +% \CheckSum{1109} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -1094,6 +1094,9 @@ $ \expandafter\ifx\csname KV@#1@#2@default\endcsname\relax \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input kvsetkeys.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -1109,7 +1112,7 @@ $ \expandafter\ifx\csname KV@#1@#2@default\endcsname\relax \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input kvsetkeys.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/luacolor.dtx b/Master/texmf-dist/source/latex/oberdiek/luacolor.dtx new file mode 100644 index 00000000000..dddd9b459a7 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/luacolor.dtx @@ -0,0 +1,963 @@ +% \iffalse meta-comment +% +% Copyright (C) 2007 by Heiko Oberdiek +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% This Current Maintainer of this work is Heiko Oberdiek. +% +% This work consists of the main source file luacolor.dtx +% and the derived files +% luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv, +% luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex, +% oberdiek.luacolor.lua, luacolor.lua. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/luacolor.dtx +% CTAN:macros/latex/contrib/oberdiek/luacolor.pdf +% +% Unpacking: +% (a) If luacolor.ins is present: +% tex luacolor.ins +% (b) Without luacolor.ins: +% tex luacolor.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{luacolor.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If luacolor.drv is present: +% latex luacolor.drv +% (b) Without luacolor.drv: +% latex luacolor.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 luacolor.dtx +% makeindex -s gind.ist luacolor.idx +% pdflatex luacolor.dtx +% makeindex -s gind.ist luacolor.idx +% pdflatex luacolor.dtx +% +% Installation: +% TDS:tex/latex/oberdiek/luacolor.sty +% TDS:scripts/oberdiek/oberdiek.luacolor.lua +% TDS:scripts/oberdiek/luacolor.lua +% TDS:doc/latex/oberdiek/luacolor.pdf +% TDS:doc/latex/oberdiek/test/luacolor-test1.tex +% TDS:doc/latex/oberdiek/test/luacolor-test2.tex +% TDS:doc/latex/oberdiek/test/luacolor-test3.tex +% TDS:source/latex/oberdiek/luacolor.dtx +% +%<*ignore> +\begingroup + \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: luacolor 2007/12/12 v1.0 Coloring based on LuaTeX's node attributes (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Copyright (C) 2007 by Heiko Oberdiek + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3 of this license or (at your option) any later +version. The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +This Current Maintainer of this work is Heiko Oberdiek. + +This work consists of the main source file luacolor.dtx +and the derived files + luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv, + luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex, + oberdiek.luacolor.lua, luacolor.lua. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{luacolor.ins}{\from{luacolor.dtx}{install}}% + \file{luacolor.drv}{\from{luacolor.dtx}{driver}}% + \usedir{tex/latex/oberdiek}% + \file{luacolor.sty}{\from{luacolor.dtx}{package}}% + \usedir{doc/latex/oberdiek/test}% + \file{luacolor-test1.tex}{\from{luacolor.dtx}{test1}}% + \file{luacolor-test2.tex}{\from{luacolor.dtx}{test2}}% + \file{luacolor-test3.tex}{\from{luacolor.dtx}{test3}}% +} +\def\MetaPrefix{-- } +\def\defaultpostamble{% + \MetaPrefix^^J% + \MetaPrefix\space End of File `\outFileName'.% +} +\def\currentpostamble{\defaultpostamble}% +\generate{% + \usedir{scripts/oberdiek}% + \file{oberdiek.luacolor.lua}{\from{luacolor.dtx}{lua}}% + \file{luacolor.lua}{\from{luacolor.dtx}{lua}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* luacolor.sty} +\Msg{*} +\Msg{* And install the following script files:} +\Msg{*} +\Msg{* oberdiek.luacolor.lua, luacolor.lua} +\Msg{*} +\Msg{* To produce the documentation run the file `luacolor.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{luacolor.drv}% + [2007/12/12 v1.0 Coloring based on LuaTeX's node attributes (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2007/11/11] +\usepackage{paralist} +\begin{document} + \DocInput{luacolor.dtx}% +\end{document} +% +% \fi +% +% \CheckSum{333} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{luacolor.drv} +% +% \title{The \xpackage{luacolor} package} +% \date{2007/12/12 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% Package \xpackage{luacolor} implements color support based +% on \LuaTeX's node attributes. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% This package uses a \LuaTeX's attribute register to +% to annotate nodes with color information. +% If a color is set, then the attribute register +% is set to this color and all nodes created in its scope +% (current group) are annotated with this attribute. +% Now the color property behaves much the same way +% as the font property. +% +% \subsection{Usage} +% +% Package \xpackage{color} is loaded automatically by this +% package \xpackage{luacolor}. If you need a special driver +% option or you prefer package \xpackage{xcolor}, then load +% it before package \xpackage{luacolor}, for example: +% \begin{quote} +% |\usepackage[dvipdfmx]{xcolor}| +% \end{quote} +% The package \xpackage{luacolor} is loaded without options: +% \begin{quote} +% |\usepackage{luacolor}| +% \end{quote} +% It is able to detect PDF mode and DVI drivers are +% differentiated by its color specials. Therefore the +% package do need driver options. +% +% Then it redefines the color setting commands to set +% attributes instead of whatsits for color. +% +% At last the attribute annotations of the nodes in the +% output box must be analyzed to insert the necessary color whatsits. +% Currently \LuaTeX\ lacks an appropriate callback function. +% Therefore package \xpackage{atbegshi} is used to get control +% before a box is shipped out. +% +% \begin{declcs}{luacolorProcessBox} \M{box} +% \end{declcs} +% Macro \cs{luacolorProcessBox} processes the box \meta{box} +% in the previously described manner. It is automatically +% called for pages, but not for XForm objects. +% Before passing a box to \cs{pdfxform}, call \cs{luacolorProcessBox} +% first. +% +% \StopEventually{ +% } +% +% \section{Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{Catcodes and identification} +% +% \begin{macrocode} +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname LuaCol@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\LuaCol@AtEnd{% + \LuaCol@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{34}{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{60}{12}% < +\TMP@EnsureCode{61}{12}% = +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{95}{12}% _ (other!) +\TMP@EnsureCode{96}{12}% ` +\edef\LuaCol@AtEnd{% + \LuaCol@AtEnd + \noexpand\endinput +} +% \end{macrocode} +% +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{luacolor}% + [2007/12/12 v1.0 Coloring based on LuaTeX's node attributes (HO)] +% \end{macrocode} +% +% \subsection{Check for \LuaTeX} +% +% Without \LuaTeX\ there is no point in using this package. +% \begin{macrocode} +\RequirePackage{infwarerr}[2007/09/09]% +\RequirePackage{ifluatex}[2007/12/12]% +\RequirePackage{color} +% \end{macrocode} +% \begin{macrocode} +\ifluatex + \RequirePackage{luatex}[2007/12/12]% +\else + \@PackageError{luacolor}{% + This package may only be run using LuaTeX% + }\@ehc + \expandafter\LuaCol@AtEnd +\fi +% \end{macrocode} +% +% \subsection{Check for disabled colors} +% +% \begin{macrocode} +\ifcolors@ +\else + \@PackageWarningNoLine{luacolor}{% + Colors are disabled by option `monochrome'% + }% + \expandafter\LuaCol@AtEnd +\fi +% \end{macrocode} +% +% \subsection{Find driver} +% +% \begin{macrocode} +\directlua0{% + require("oberdiek.luacolor")% +} +\RequirePackage{ifpdf}[2007/09/09] +\ifpdf +\else + \begingroup + \def\current@color{}% + \def\reset@color{}% + \setbox\z@=\hbox{% + \begingroup + \set@color + \endgroup + }% + \edef\reserved@a{% + \directlua0{% + oberdiek.luacolor.dvidetect()% + }% + }% + \ifx\reserved@a\@empty + \@PackageError{luacolor}{% + DVI driver detection failed because of\MessageBreak + unrecognized color \string\special + }\@ehc + \endgroup + \expandafter\expandafter\expandafter\LuaCol@AtEnd + \else + \@PackageInfoNoLine{luacolor}{% + Type of color \string\special: \reserved@a + }% + \fi + \endgroup +\fi +% \end{macrocode} +% +% \subsection{Attribute setting} +% +% \begin{macro}{\LuaCol@Attribute} +% \begin{macrocode} +\newattribute\LuaCol@Attribute +\directlua0{% + oberdiek.luacolor.setattribute(\number\allocationnumber)% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\set@color} +% \begin{macrocode} +\protected\def\set@color{% + \setattribute\LuaCol@Attribute{% + \directlua0{% + oberdiek.luacolor.get("\luaescapestring{\current@color}")% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\reset@color} +% \begin{macrocode} +\def\reset@color{} +% \end{macrocode} +% \end{macro} +% +% \subsection{Whatsit insertion} +% +% \begin{macro}{\luacolorProcessBox} +% \begin{macrocode} +\def\luacolorProcessBox#1{% + \directlua0{% + oberdiek.luacolor.process(\number#1)% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\RequirePackage{atbegshi}[2007/09/09] +\AtBeginShipout{% + \luacolorProcessBox\AtBeginShipoutBox +} +% \end{macrocode} +% +% Set default color. +% \begin{macrocode} +\set@color +% \end{macrocode} +% +% \begin{macrocode} +\LuaCol@AtEnd +% +% \end{macrocode} +% +% \subsection{Lua module} +% +% \begin{macrocode} +%<*lua> +% \end{macrocode} +% Box zero contains a \cs{hbox} with the color \cs{special}. +% That is analyzed to get the prefix for the color setting +% \cs{special}. +% \begin{macrocode} +module("oberdiek.luacolor", package.seeall) +% \end{macrocode} +% +% \subsubsection{Driver detection} +% +% \begin{macrocode} +local ifpdf +if tonumber(tex.pdfoutput) > 0 then + ifpdf = true +else + ifpdf = false +end +local prefix +local prefixes = { + dvips = "color ", + dvipdfm = "pdf:sc ", + truetex = "textcolor:", + pctexps = "ps::", +} +local patterns = { + ["^color "] = "dvips", + ["^pdf: *begincolor "] = "dvipdfm", + ["^pdf: *bcolor "] = "dvipdfm", + ["^pdf: *bc "] = "dvipdfm", + ["^pdf: *setcolor "] = "dvipdfm", + ["^pdf: *scolor "] = "dvipdfm", + ["^pdf: *sc "] = "dvipdfm", + ["^textcolor:"] = "truetex", + ["^ps::"] = "pctexps", +} +% \end{macrocode} +% \begin{macrocode} +local function info(msg, term) + local target = "log" + if term then + target = "term and log" + end + texio.write_nl(target, "Package luacolor info: " .. msg .. ".") + texio.write_nl(target, "") +end +% \end{macrocode} +% \begin{macrocode} +function dvidetect() + local v = tex.box[0] + assert(v.id == node.id("hlist")) + for v in node.traverse_id(node.id("whatsit"), v.list) do + if v and v.subtype == 3 then -- special + local data = v.data + for pattern, driver in pairs(patterns) do + if string.find(data, pattern) then + prefix = prefixes[driver] + tex.write(driver) + return + end + end + info("\\special{" .. data .. "}", true) + return + end + end + info("Missing \\special", true) +end +% \end{macrocode} +% +% \subsubsection{Color strings} +% +% \begin{macrocode} +local map = { + n = 0, +} +function get(color) + local n = map[color] + if not n then + n = map.n + 1 + map.n = n + map[n] = color + map[color] = n + end + tex.write("" .. n) +end +% \end{macrocode} +% +% \subsubsection{Attribute register} +% +% \begin{macrocode} +local attribute +function setattribute(attr) + attribute = attr +end +% \end{macrocode} +% +% \subsubsection{Whatsit insertion} +% +% \begin{macrocode} +function process(box) + local color = "" + local list = tex.getbox(box) + traverse(list, color) +end +% \end{macrocode} +% \begin{macrocode} +local LIST = 1 +local COLOR = 2 +local type = { + [node.id("hlist")] = LIST, + [node.id("vlist")] = LIST, + [node.id("rule")] = COLOR, + [node.id("glyph")] = COLOR, + [node.id("disc")] = COLOR, +} +local subtype = { + [3] = COLOR, -- special + [8] = COLOR, -- pdf_literal +} +local mode = 2 -- luatex.pdfliteral.direct +local WHATSIT = node.id("whatsit") +local SPECIAL = 3 +local PDFLITERAL = 8 +% \end{macrocode} +% \begin{macrocode} +function traverse(list, color) + if not list then + return color + end + if type[list.id] ~= LIST then + texio.write_nl("!!! Error: Wrong list type: " .. node.type(list.id)) + return color + end +%texio.write_nl("traverse: " .. node.type(list.id)) + local head = list.list + for n in node.traverse(head) do +%texio.write_nl(" node: " .. node.type(n.id)) + local type = type[n.id] + if type == LIST then + color = traverse(n, color) + elseif type == COLOR + or (type == WHATSIT + and subtype[n.subtype]) then + local v = node.has_attribute(n, attribute) + if v then + local newColor = map[v] + if newColor ~= color then + color = newColor + local newNode + if ifpdf then + newNode = node.new(WHATSIT, PDFLITERAL) + newNode.mode = mode + newNode.data = color + else + newNode = node.new(WHATSIT, SPECIAL) + newNode.data = prefix .. color + end + if head == n then + newNode.next = head + local old_prev = head.prev + head.prev = newNode + head = newNode + head.prev = old_prev + else + head = node.insert_before(head, n, newNode) + end + end + end + end + end + list.list = head + return color +end +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{Test} +% +% \begin{macrocode} +%<*test1> +\documentclass{article} +\usepackage{color} +% +% \end{macrocode} +% \subsection{Catcode checks for loading} +% +% \begin{macrocode} +%<*test1> +% \end{macrocode} +% \begin{macrocode} +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input luacolor.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{Driver detection} +% +% \begin{macrocode} +%<*test2> +\NeedsTeXFormat{LaTeX2e} +\ifcsname driver\endcsname + \expandafter\PassOptionsToPackage\expandafter{\driver}{color}% + \pdfoutput=0 % +\fi +\documentclass{minimal} +\usepackage{luacolor}[2007/12/12] +\csname @@end\endcsname +\end +% +% \end{macrocode} +% +% \begin{macrocode} +%<*test3> +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% \begin{macrocode} +\documentclass{minimal} +\usepackage{luacolor}[2007/12/12] +\usepackage{qstest} +\IncludeTests{*} +\LogTests{log}{*}{*} +\makeatletter +% \end{macrocode} +% \begin{macrocode} +\@@end +% +% \end{macrocode} +% +% \subsection{Short test for \plainTeX} +% +% \begin{macrocode} +%<*test4> +\input luacolor.sty\relax +\newluastate\TestLuaState +\newattribute\TestAttr +\setattribute\TestAttr{10} +\unsetattribute\TestAttr +\newcatcodetable\TestCTa +\begingroup + \SetCatcodeRange{`A}{`Z}{12}% +\endgroup +\BeginCatcodeRegime\__CT__LaTeX +\EndCatcodeRegime +\end +% +% \end{macrocode} +% +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/luacolor.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/luacolor.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[\CTAN{macros/latex/contrib/oberdiek/oberdiek-tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTAN{tds/tds.pdf}). 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} +% +% \paragraph{Script installation.} +% Check the directory \xfile{TDS:scripts/oberdiek/} for +% scripts that need further installation steps. +% Package \xpackage{attachfile2} comes with the Perl script +% \xfile{pdfatfi.pl} that should be installed in such a way +% that it can be called as \texttt{pdfatfi}. +% Example (linux): +% \begin{quote} +% |chmod +x scripts/oberdiek/pdfatfi.pl|\\ +% |cp scripts/oberdiek/pdfatfi.pl /usr/local/bin/| +% \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 luacolor.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@{}} +% luacolor.sty & tex/latex/oberdiek/luacolor.sty\\ +% oberdiek.luacolor.lua & scripts/oberdiek/oberdiek.luacolor.lua\\ +% luacolor.lua & scripts/oberdiek/luacolor.lua\\ +% luacolor.pdf & doc/latex/oberdiek/luacolor.pdf\\ +% test/luacolor-test1.tex & doc/latex/oberdiek/test/luacolor-test1.tex\\ +% test/luacolor-test2.tex & doc/latex/oberdiek/test/luacolor-test2.tex\\ +% test/luacolor-test3.tex & doc/latex/oberdiek/test/luacolor-test3.tex\\ +% luacolor.dtx & source/latex/oberdiek/luacolor.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 +% (\teTeX, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \teTeX\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Attached source.} +% +% The PDF documentation on CTAN also includes the +% \xfile{.dtx} source file. It can be extracted by +% AcrobatReader 6 or higher. Another option is \textsf{pdftk}, +% e.g. unpack the file into the current directory: +% \begin{quote} +% \verb|pdftk luacolor.pdf unpack_files output .| +% \end{quote} +% +% \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{luacolor.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 luacolor.dtx +%makeindex -s gind.ist luacolor.idx +%pdflatex luacolor.dtx +%makeindex -s gind.ist luacolor.idx +%pdflatex luacolor.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/12/12 v1.0} +% \item +% First public version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/luatex.dtx b/Master/texmf-dist/source/latex/oberdiek/luatex.dtx new file mode 100644 index 00000000000..407daceb30a --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/luatex.dtx @@ -0,0 +1,1756 @@ +% \iffalse meta-comment +% +% Copyright (C) 2007 by Heiko Oberdiek +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% This Current Maintainer of this work is Heiko Oberdiek. +% +% This work consists of the main source file luatex.dtx +% and the derived files +% luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +% luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +% luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/luatex.dtx +% CTAN:macros/latex/contrib/oberdiek/luatex.pdf +% +% Unpacking: +% (a) If luatex.ins is present: +% tex luatex.ins +% (b) Without luatex.ins: +% tex luatex.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{luatex.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If luatex.drv is present: +% latex luatex.drv +% (b) Without luatex.drv: +% latex luatex.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 luatex.dtx +% makeindex -s gind.ist luatex.idx +% pdflatex luatex.dtx +% makeindex -s gind.ist luatex.idx +% pdflatex luatex.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/luatex.sty +% TDS:tex/generic/oberdiek/luatex-loader.sty +% TDS:scripts/oberdiek/oberdiek.luatex.lua +% TDS:doc/latex/oberdiek/luatex.pdf +% TDS:doc/latex/oberdiek/test/luatex-test1.tex +% TDS:doc/latex/oberdiek/test/luatex-test2.tex +% TDS:doc/latex/oberdiek/test/luatex-test3.tex +% TDS:doc/latex/oberdiek/test/luatex-test4.tex +% TDS:doc/latex/oberdiek/test/luatex-test5.tex +% TDS:source/latex/oberdiek/luatex.dtx +% +%<*ignore> +\begingroup + \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: luatex 2007/12/12 v0.1 LuaTeX basic definition package (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Copyright (C) 2007 by Heiko Oberdiek + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3 of this license or (at your option) any later +version. The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +This Current Maintainer of this work is Heiko Oberdiek. + +This work consists of the main source file luatex.dtx +and the derived files + luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, + luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, + luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{luatex.ins}{\from{luatex.dtx}{install}}% + \file{luatex.drv}{\from{luatex.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{luatex.sty}{\from{luatex.dtx}{package}}% + \file{luatex-loader.sty}{\from{luatex.dtx}{loader}}% + \usedir{doc/latex/oberdiek/test}% + \file{luatex-test1.tex}{\from{luatex.dtx}{test1}}% + \file{luatex-test2.tex}{\from{luatex.dtx}{test1,test2}}% + \file{luatex-test3.tex}{\from{luatex.dtx}{test1,test3}}% + \file{luatex-test4.tex}{\from{luatex.dtx}{test4}}% + \file{luatex-test5.tex}{\from{luatex.dtx}{test5}}% +} +\def\MetaPrefix{-- } +\def\defaultpostamble{% + \MetaPrefix^^J% + \MetaPrefix\space End of File `\outFileName'.% +} +\def\currentpostamble{\defaultpostamble}% +\generate{% + \usedir{scripts/oberdiek}% + \file{oberdiek.luatex.lua}{\from{luatex.dtx}{lua}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* luatex.sty, luatex-loader.sty} +\Msg{*} +\Msg{* And install the following script file:} +\Msg{*} +\Msg{* oberdiek.luatex.lua} +\Msg{*} +\Msg{* To produce the documentation run the file `luatex.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{luatex.drv}% + [2007/12/12 v0.1 LuaTeX basic definition package (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2007/11/11] +\usepackage{paralist} +\begin{document} + \DocInput{luatex.dtx}% +\end{document} +% +% \fi +% +% \CheckSum{1201} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{luatex.drv} +% +% \title{The \xpackage{luatex} package} +% \date{2007/12/12 v0.1} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This package manages the new and extended features and resources +% that \LuaTeX\ provides. Examples are attributes and catcode +% tables. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \subsection{Introduction} +% +% \TeX\ provides global resources such as registers. +% But it does not provide an interface for managing these resources. +% For example, two packages want to use a counter register. +% If they take the same register +% number, then the use of both packages will conflict and they cannot +% be used together. +% Therefore formats such as \plainTeX\ or \LaTeX\ implement +% an allocation scheme for registers. A package reserves with +% \cs{newcount} an unused register number for its own exclusive use. +% +% Nowadays \TeX\ is not alone anymore: \eTeX, \pdfTeX\ and other +% compilers for \TeX\ are developed that extend and add new +% features and resources. +% +% Now \LuaTeX\ has reached beta state. It inherits most of +% \pdfTeX's features including \eTeX. Also it implements +% new concepts such as attributes or catcode tables. +% +% \subsubsection{\LaTeX} +% +% \LaTeXe\ is frozen and therefore refuses to even notice +% the new \TeX\ variants. Not even the old \eTeX\ is supported +% by its kernel. At least there is a third party package \xpackage{etex} +% that manages the new \eTeX\ resources. +% +% This package tries to do the same for \LuaTeX\ and starts to +% support at least a few of the new features. +% +% \subsubsection{\plainTeX} +% +% \LaTeX\ has inherited its resource handling from \plainTeX. +% The interface is basically the same: \cs{newcount}, \dots +% Therefore this package tries to follow this tradition by +% providing compatibility to \plainTeX. It can be loaded +% with \plainTeX\ and defines at least some of the +% features that this packages provides for \LaTeX. +% +% \subsection{Register allocation} +% +% \subsubsection{Register with 16 bit} +% +% Because \LuaTeX\ is a super set of \eTeX\ regarding registers, +% the register allocation scheme should not conflict with +% package \xpackage{etex}. Therefore this package is loaded +% to inherit its allocation scheme. The only change is currently +% that the limit is increased to 65536 registers for the following +% register classes: +% \begin{compactitem} +% \item count +% \item dimen +% \item skip +% \item muskip +% \item marks +% \item toks +% \item box +% \end{compactitem} +% This affects the number of global and local registers. +% Because it is done in a package and not in the kernel, +% it is possible that someone loads package \xpackage{etex} +% before uses the local allocation variants. This will prevent +% the extension for this register class. If more registers are +% needed, just load package \xpackage{luatex} earlier. +% +% \subsubsection{Insertions} +% +% Insertions need four registers \cs{count}, \cs{dimen}, \cs{skip}, +% and \cs{box} with the same number. Usually they are allocated +% downwards from 254, 253, \dots Also \cs{newcount}, \cs{newdimen}, \dots +% fill up these register numbers from below before switching to +% higher register numbers by package \xpackage{etex}. +% When this occurs, no insertions can be allocated anymore. +% +% Therefore \cs{newcount}, \cs{newdimen}, \cs{newskip}, and +% \cs{newbox} are replaced by their global variants (\cs{globcount}, \dots) +% that use the higher numbers immediately, leaving the room for insertions. +% There should not be an efficiency penalty because \LuaTeX\ stores +% the registers of a class in the same Lua table unlike \eTeX, where +% registers below 256 are stored in an array and higher numbers +% are put in a tree structure. +% +% \subsection{Lua states} +% +% \begin{declcs}{newluastate} \M{cmd} +% \end{declcs} +% Macro \cs{newluastate} reserves a new Lua state and stores +% the number in \cs{cmd}. +% +% \subsection{Attributes} +% +% Nodes can have custom attributes in \LuaTeX. These attributes +% are organized by a new register class. As the other registers +% up to $2^16$ attributes are supported. An attribute value +% can be negative that means the attribute is not set. Otherwise +% \TeX's range of non-negative integers up to $2^31$ are available. +% +% \begin{declcs}{newattribute} \M{cmd} +% \end{declcs} +% Macro \cs{newattribute} defines command \meta{cmd} using \cs{attributedef} +% using an new attribute number. The new attribute is initially unset. +% +% \begin{declcs}{setattribute} \M{cmd} \M{value} +% \end{declcs} +% Macro \cs{setattribute} locally sets attribute command \meta{cmd} +% to the number \meta{value}. Valid values range from $-1$ until $2^31$ +% (the upper limit is the same as for other \TeX\ integer numbers). +% +% \begin{declcs}{unsetattribute} \M{cmd} +% \end{declcs} +% Macro \cs{unsettattribute} clears the attribute command \meta{cmd}. +% +% \subsection{Catcode tables} +% +% \LuaTeX\ introduces catcode tables as new feature, see documentation. +% There is need for discussion, how to deal best: +% \begin{itemize} +% \item \cs{initcatcodetable} and \cs{setcatcodetable} act globally. +% \item \cs{catcodetable} causes an error if used with an uninitialized +% catcode table. +% \item Large catcode table numbers should be avoided because of +% performance breakdown. +% \item Use case \LaTeX\ package: +% The package must not be surprised by changed catcodes and +% must not surprise by changing catcodes accidently. +% Catcode tables could offer a solution. At the begin +% a catcode regime with standard catcodes is established +% and the old one is restored afterwards. +% \item Use case: \LuaTeX's |tex.print| might be used with +% a catcode table number, for example a table where all +% entries have catcode ``other''. +% \item Readonly catcode tables. +% \item Is there is a need for local allocations? +% (Package \xpackage{etex}'s \cs{loc} variants are not used in +% \TeX\ Live 2007.) +% \end{itemize} +% +% \subsubsection{Interface proposal} +% +% The idea: \cs{newcatcodetable} allocates odd numbered catcode +% tables. Even numbered tables are managed as stack. +% Also some catcode tables are defined. These must not be +% changed. +% +% \begin{declcs}{newcatcodetable} \M{cmd} +% \end{declcs} +% Macro \cs{newcatcodetable} reserves a new catcode table and +% remembers its number in \meta{cmd}. The catcode table is +% initialized with \iniTeX's catcodes. +% +% \begin{declcs}{CatcodeTableIniTeX}\\ +% \cs{CatcodeTableString}\\ +% \cs{CatcodeTableOther}\\ +% \cs{CatcodeTableLaTeX}\\ +% \end{declcs} +% These are catcode tables and must not be changed. +% \cs{CatcodeTableIniTeX} contains the catcode settings of \iniTeX. +% \cs{CatcodeTableString} follows \TeX's convention of +% \cs{string}, \cs{meaning} and friends. The space gets catcode +% 10 (space), the other characters have catcode 12 (other). +% In \cs{CatcodeTableOther} all entries have catcode 12 (other). +% \cs{CatcodeTableLaTeX} contains the setting of a pure \LaTeX\ format +% (`at' is other). +% +% \begin{declcs}{CatcodeTableStack}\\ +% \cs{IncCatcodeTableStack}\\ +% \cs{DecCatcodeTableStack} +% \end{declcs} +% \cs{CatcodeTableStack} is the stack pointer. Initially +% it is catcode table zero. \cs{IncCatcodeTableStack} and +% \cs{DecCatcodeTableStack} increments and decrements the +% stack pointer. Currently \cs{IncCatcodeTableStack} does not +% initialize a new catcode table. Both increment and decrement +% operations do not set a catcode table. +% +% \begin{declcs}{PushCatcodeTableNumStack}\\ +% \cs{PopCatcodeTableNumStack} +% \end{declcs} +% It can be handy to have a global stack for catcode table +% numbers to deal with the global assignment property of +% \cs{initcatcodetable} and \cs{savecatcodetable}. +% \cs{PushCatcodeTableNumStack} pushes the current catcode table +% on the stack. +% \cs{PopCatcodeTableNumStack} pops the topmost number off the number +% stack to set the current catcode table. Catcode table zero is +% used in case of an empty stack. +% +% \begin{declcs}{BeginCatcodeRegime} \M{catcodetable}\\ +% \cs{EndCatcodeRegime} +% \end{declcs} +% \cs{BeginCatcodeRegime} remembers the current catcode table number. +% Then it creates and uses a fresh catcode table on the stack +% that is initialized by \meta{catcodetable}: +% \begin{quote}\ttfamily +% \cs{PushCatcodeTableNumStack}\\ +% \cs{catcodetable}\meta{catcodetable}|| +% \cs{IncCatcodeTableStack}\\ +% \cs{savecatcodetable}\cs{CatcodeTableStack}\\ +% \cs{catcodetable}\cs{CatcodeTableStack} +% \end{quote} +% \cs{EndCatcodeRegime} drops the catcode table, created by +% \cs{BeginCatcodeRegime} and sets the catcode table that was +% active before: +% \begin{quote} +% \cs{DecCatcodeTableStack}\\ +% \cs{PopCatcodeTableNumStack} +% \end{quote} +% These macros solve the use case, described earlier for a \LaTeX\ package: +% \begin{quote} +% |% package foobar.sty|\\ +% |\BeginCatcodeRegime\CatcodeTableLaTeX|\\ +% |\makeatletter|\\ +% |% ... package contents ...|\\ +% |\EndCatcodeRegime|\\ +% |% end of package| +% \end{quote} +% If the package wants to change catcodes after its loading, +% \cs{AtBeginDocument} or \cs{AtEndOfPackage} can be used. +% +% \begin{declcs}{SetCatcodeRange} \M{from} \M{to} \M{catcode} +% \end{declcs} +% The catcodes of characters in range from \meta{from} +% to inclusive \meta{to} are set to \meta{catcode}. +% +% \subsection{Lua module loading} +% +% Currently \LuaTeX\ (version 0.20) does not support Lua script +% files inside \xfile{TDS:scripts//}, because Lua's mechanism +% for module loading does not use the \textsf{kpathsea} library. +% Therefore this packages appends a kpse loader to the list of +% Lua's module loaders. It finds the module \meta{module} by +% \begin{quote} +% \ttfamily |kpse.find_file("|\meta{module}|.lua", "texmfscripts")| +% \end{quote} +% Unhappily \textsf{kpathsea} does not support directory components +% in a file name. Therefore the Lua convention is not followed to +% replace dots in the module name by the directory separator. +% +% Example: +% A Lua script of a package \xpackage{foobar} wants the following +% modules: +% \begin{quote} +% |require("foobar.hello.world")|\\ +% |require("org.somewhere.xyz")| +% \end{quote} +% Then they can be find in: +% \begin{quote} +% |TDS:scripts/foobar/foobar.hello.world.lua|\\ +% |TDS:scripts/foobar/org.somewhere.xyz.lua| +% \end{quote} +% I would have preferred the following locations, following lua conventions, +% e.\,g.: +% \begin{quote} +% |TDS:scripts/foobar/hello/world.lua|\\ +% |TDS:scripts/foobar/org/somewhere/xyz.lua| +% \end{quote} +% But I do not know, how to achieve this in a reliable way using +% \textsf{kpathsea}. +% +% \subsubsection{Package \xpackage{luatex-loader}} +% +% If someone do not need or want package \xpackage{luatex} but +% it's extension for module loading, then he can use +% package \xpackage{luatex-loader}. Both \plainTeX\ and \LaTeX\ are +% supported. +% +% \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 + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@luatex.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \catcode35 6 % # + \catcode123 1 % { + \catcode125 2 % } + \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{luatex}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \catcode35 6 % # + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode47 12 % / + \catcode58 12 % : + \catcode64 11 % @ + \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\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@luatex.sty\endcsname +\ProvidesPackage{luatex}% + [2007/12/12 v0.1 LuaTeX basic definition package (HO)] +% \end{macrocode} +% +% \subsection{Catcodes} +% +% \begin{macrocode} +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname LuT@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\LuT@AtEnd{% + \LuT@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{10}{12}% ^^J +\TMP@EnsureCode{34}{12}% " +\TMP@EnsureCode{36}{3}% $ +\TMP@EnsureCode{39}{12}% ' +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{43}{12}% + +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{61}{12}% = +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{95}{12}% _ (other!) +\TMP@EnsureCode{96}{12}% ` +% \end{macrocode} +% +% \subsection{Check for \LuaTeX} +% +% Without \LuaTeX\ there is no point in using this package. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax + \input ifluatex.sty\relax +\else + \RequirePackage{infwarerr}[2007/09/09]% + \RequirePackage{ifluatex}[2007/12/12]% +\fi +% \end{macrocode} +% \begin{macrocode} +\ifluatex +\else + \@PackageError{luatex}{% + This package may only be run using LuaTeX% + }\@ehc + \LuT@AtEnd + \expandafter\endinput +\fi +% \end{macrocode} +% +% \subsection{Inherit support for \eTeX} +% +% Package \xpackage{etex} is not compatible for \plainTeX. +% But it could be present if a format is used that is based +% on \xfile{etex.src}. Therefore we only load the package +% in case of \LaTeX\ and tests its presence independently +% of the format by looking for \cs{et@xins}. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax +\else + \RequirePackage{etex}[1998/03/26]% +\fi +% \end{macrocode} +% +% \subsection{Adaption of \eTeX's register allocation} +% +% \eTeX has increased the number of \TeX\ registers +% from $2^8$ (256) to $2^{15}$ (32768) for a register class. +% \LuaTeX\ extends the limit further to $2^16$ (65536). +% The allocation scheme of package \xpackage{etex} is not +% changed. But this can be subject for discussion. +% +% If a register class hasn't registered any local registers +% yet, then the limit can safely be pushed to 65536. +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname et@xins\endcsname\relax + \@PackageWarningNoLine{luatex}{% + Support for eTeX is not loaded (etex.src)% + }% +\else + \def\LuT@temp#1{% + \ifnum\count27#1=32768 % + \count27#1=65536 % + \fi + }% + \LuT@temp0% + \LuT@temp1% + \LuT@temp2% + \LuT@temp3% + \LuT@temp4% + \LuT@temp5% + \LuT@temp6% +% \end{macrocode} +% +% \eTeX\ uses an array for the first 256 registers and then a tree +% structure. \LuaTeX\ stores all registers of a class in one Lua table. +% There shouldn't be large performance differences. +% This allows starting immediately in the extended +% area, leaving room for insertions. +% \begin{macrocode} + \let\newcount\globcount + \let\newdimen\globdimen + \let\newskip\globskip + \let\newbox\globbox +\fi +% \end{macrocode} +% +% \subsection{\plainTeX\ compatibility} +% +% \begin{macro}{\@empty} +% \begin{macrocode} +\expandafter\ifx\csname @empty\endcsname\relax + \def\@empty{}% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@gobble} +% \begin{macrocode} +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@firstofone} +% \begin{macrocode} +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@firstoftwo} +% \begin{macrocode} +\expandafter\ifx\csname @firstoftwo\endcsname\relax + \long\def\@firstoftwo#1#2{#1}% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@car} +% \begin{macrocode} +\expandafter\ifx\csname @car\endcsname\relax + \def\@car#1#2\@nil{#1}% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@cdr} +% \begin{macrocode} +\expandafter\ifx\csname @cdr\endcsname\relax + \def\@cdr#1#2\@nil{#2}% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ifstar} +% \begin{macrocode} +\expandafter\ifx\csname @ifstar\endcsname\relax + \def\@ifstar#1{% + \@ifnextchar*{\@firstoftwo{#1}}% + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ifnextchar} +% \begin{macrocode} + \long\def\@ifnextchar#1#2#3{% + \let\reserved@d=#1% + \def\reserved@a{#2}% + \def\reserved@b{#3}% + \futurelet\@let@token\@ifnch + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ifnch} +% \begin{macrocode} + \def\@ifnch{% + \ifx\@let@token\@sptoken + \let\reserved@c\@xifnch + \else + \ifx\@let@token\reserved@d + \let\reserved@c\reserved@a + \else + \let\reserved@c\reserved@b + \fi + \fi + \reserved@c + }% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@sptoken} +% \begin{macrocode} + \let\LuT@temp\:% + \def\:{\let\@sptoken= }% + \: % explicit space +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@xifnch} +% \begin{macrocode} + \def\:{\@xifnch}% + \expandafter\def\: {% + \futurelet\@let@token\@ifnch + }% + \let\:\LuT@temp +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@tempcnta} +% \begin{macrocode} +\expandafter\ifx\csname @tempcnta\endcsname\relax + \csname newcount\endcsname\@tempcnta +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@tempcntb} +% \begin{macrocode} +\expandafter\ifx\csname @tempcntb\endcsname\relax + \csname newcount\endcsname\@tempcntb +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LuT@newcommand} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname newcommand\endcsname\relax + \def\LuT@newcommand#1[#2]#3{% + \ifx#1\@undefined + \let#1\relax + \else + \ifx#1\relax + \else + \@PackageError{luatex}{% + \string#1 is already defined.\MessageBreak + Redefinition is skipped% + }\@ehc + \fi + \fi + \ifx#1\relax + \ifcase#2 % + \def#1{#3}% + \or + \def#1##1{#3}% + \or + \def#1##1##2{#3}% + \or + \def#1##1##2##3{#3}% + \or + \@INTERNAL@ERROR + \fi + \fi + }% +\else + \def\LuT@newcommand{\newcommand*}% +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Lua states} +% +% \begin{macro}{\LuT@AllocLuaState} +% \begin{macrocode} +\newcount\LuT@AllocLuaState +\LuT@AllocLuaState=\z@ +% \end{macrocode} +% \end{macro} +% \begin{macro}{\newluastate} +% \begin{macrocode} +\LuT@newcommand\newluastate[1]{% + \ifnum\LuT@AllocLuaState<65535 % + \global\advance\LuT@AllocLuaState\@ne + \allocationnumber\LuT@AllocLuaState + \global\chardef#1=\allocationnumber + \wlog{\string#1=\string\luastate\the\allocationnumber}% + \else + \errmessage{No room for a new \string\luastate}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% \subsection{Attributes} +% +% \subsubsection{Allocation} +% +% \begin{macro}{\LuT@AllocAttribute} +% \begin{macrocode} +\newcount\LuT@AllocAttribute +\LuT@AllocAttribute=\m@ne +% \end{macrocode} +% \end{macro} +% \begin{macro}{\newattribute} +% \begin{macrocode} +\LuT@newcommand\newattribute[1]{% + \ifnum\LuT@AllocAttribute<65535 % + \global\advance\LuT@AllocAttribute\@ne + \allocationnumber\LuT@AllocAttribute + \global\attributedef#1=\allocationnumber + \unsetattribute{#1}% + \wlog{\string#1=\string\attribute\the\allocationnumber}% + \else + \errmessage{No room for a new \string\attribute}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Interface} +% +% \begin{macro}{\setattribute} +% \begin{macrocode} +\LuT@newcommand\setattribute[2]{% + #1=\numexpr#2\relax +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\unsetattribute} +% \begin{macrocode} +\LuT@newcommand\unsetattribute[1]{% + #1=\m@ne +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Catcode tables} +% +% \subsubsection{Allocation} +% +% \begin{macro}{\LuT@AllocCatcodeTable} +% \begin{macrocode} +\newcount\LuT@AllocCatcodeTable +\LuT@AllocCatcodeTable=\m@ne +\newcount\CatcodeTableStack +\CatcodeTableStack=\z@ +% \end{macrocode} +% \end{macro} +% \begin{macro}{\newcatcodetable} +% \begin{macrocode} +\LuT@newcommand\newcatcodetable[1]{% + \ifnum\LuT@AllocCatcodeTable<1114110 % 0x10FFFF is maximal \chardef + % or < 268435455 % 2^28 - 1 + \global\advance\LuT@AllocCatcodeTable by\tw@ + \allocationnumber=\LuT@AllocCatcodeTable + \global\chardef#1=\allocationnumber + \wlog{% + \string#1=\string\catcodetable\the\allocationnumber + }% + \else + \errmessage{No room for a new \string\catcodetable}% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\IncCatcodeTableStack} +% \begin{macrocode} +\LuT@newcommand\IncCatcodeTableStack[0]{% + \ifnum\CatcodeTableStack<268435454 % + \global\advance\CatcodeTableStack by\tw@ + \else + \@PackageError{luatex}{% + Catcode table stack overflow% + }\@ehd + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DecCatcodeTableStack} +% \begin{macrocode} +\LuT@newcommand\DecCatcodeTableStack[0]{% + \ifnum\CatcodeTableStack>\z@ + \global\advance\CatcodeTableStack by-2 % + \else + \@PackageError{luatex}{% + Catcode table stack is empty% + }\@ehd + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\cs{SetCatcodeRange}} +% +% \begin{macro}{\SetCatcodeRange} +% \begin{macrocode} +\LuT@newcommand\SetCatcodeRange[3]{% + \edef\LuT@temp{% + \noexpand\@tempcnta=\the\@tempcnta + \noexpand\@tempcntb=\the\@tempcntb + \noexpand\count@=\the\count@ + \relax + }% + \@tempcnta=\numexpr#1\relax + \@tempcntb=\numexpr#2\relax + \count@=\numexpr#3\relax + \loop + \unless\ifnum\@tempcnta>\@tempcntb + \catcode\@tempcnta=\count@ + \advance\@tempcnta by \@ne + \repeat + \LuT@temp +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Predefined catcode tables} +% +% \begin{macrocode} +\newcatcodetable\CatcodeTableIniTeX +\newcatcodetable\CatcodeTableString +\newcatcodetable\CatcodeTableOther +\newcatcodetable\CatcodeTableLaTeX +% \end{macrocode} +% +% \begin{macrocode} +\initcatcodetable\CatcodeTableIniTeX +\begingroup + \def\@makeother#1{\catcode#1=12\relax}% + \@firstofone{% + \catcodetable\CatcodeTableIniTeX + \begingroup + \SetCatcodeRange{0}{8}{15}% + \catcode9=10 % tab + \catcode11=15 % + \catcode12=13 % form feed + \SetCatcodeRange{14}{31}{15}% + \catcode35=6 % hash + \catcode36=3 % dollar + \catcode38=4 % ampersand + \catcode94=7 % circumflex + \catcode95=8 % underscore + \catcode123=1 % brace left + \catcode125=2 % brace right + \catcode126=13 % tilde + \catcode127=15 % + \savecatcodetable\CatcodeTableLaTeX + \endgroup + \@makeother{0}% nul + \@makeother{13}% carriage return + \@makeother{37}% percent + \@makeother{92}% backslash + \@makeother{127}% + \SetCatcodeRange{65}{90}{12}% A-Z + \SetCatcodeRange{97}{122}{12}% a-z + \savecatcodetable\CatcodeTableString + \@makeother{32}% space + \savecatcodetable\CatcodeTableOther + \endgroup +}% +% \end{macrocode} +% +% \subsubsection{Number stack} +% +% \begin{macro}{\LuT@NumStackEmpty} +% A special empty stack value because of \cs{@cdr}'s brace removal. +% \begin{macrocode} +\def\LuT@NumStackEmpty{0} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\LuT@NumStack} +% \begin{macrocode} +\let\LuT@NumStack\LuT@NumStackEmpty +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PushCatcodeTableNumStack} +% \begin{macrocode} +\LuT@newcommand\PushCatcodeTableNumStack[0]{% + \xdef\LuT@NumStack{% + {\the\catcodetable}\LuT@NumStack + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\PopCatcodeTableNumStack} +% \begin{macrocode} +\LuT@newcommand\PopCatcodeTableNumStack[0]{% + \ifx\LuT@NumStack\LuT@NumStackEmpty + \@PackageWarning{luatex}{Empty catcode table number stack}% + \catcodetable\z@ + \else + \catcodetable=\expandafter\@car\LuT@NumStack\@nil\relax + \xdef\LuT@NumStack{% + \expandafter\@cdr\LuT@NumStack\@nil + }% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Catcode regime macros} +% +% \begin{macro}{\BeginCatcodeRegime} +% \begin{macrocode} +\LuT@newcommand\BeginCatcodeRegime[1]{% + \PushCatcodeTableNumStack + \catcodetable=\numexpr#1\relax + \IncCatcodeTableStack + \savecatcodetable\CatcodeTableStack + \catcodetable\CatcodeTableStack +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EndCatcodeRegime} +% \begin{macrocode} +\LuT@newcommand\EndCatcodeRegime[0]{% + \DecCatcodeTableStack + \PopCatcodeTableNumStack +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Lua module loader} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input luatex-loader.sty\relax +\else + \RequirePackage{luatex-loader}[2007/12/12]% +\fi +% \end{macrocode} +% \begin{macrocode} +\LuT@AtEnd +% +% \end{macrocode} +% +% \begin{macrocode} +%<*loader> +% \end{macrocode} +% +% Reload check, especially if the package is not used with \LaTeX. +% \begin{macrocode} +\begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@luatex-loader.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \catcode35 6 % # + \catcode123 1 % { + \catcode125 2 % } + \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{luatex-loader}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \catcode35 6 % # + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode47 12 % / + \catcode58 12 % : + \catcode64 11 % @ + \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\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@luatex-loader.sty\endcsname +\ProvidesPackage{luatex-loader}% + [2007/12/12 v0.1 Lua module loader (HO)] +% \end{macrocode} + +% \begin{macrocode} +\begingroup + \catcode10 12 % ^^J + \catcode34 12 % " + \catcode39 12 % ' + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode46 12 % . + \catcode61 12 % = + \catcode95 12 % _ (other!) + \catcode96 12 % ` + \endlinechar=10 % + \directlua0{% + do + local script = "oberdiek.luatex.lua" + local file = kpse.find_file(script, "texmfscripts") + if file then + texio.write_nl("(" .. file .. ")") + dofile(file) + else + error("File `" .. script .. "' not found") + end + end + }% +\endgroup% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{Lua script} +% +% Currently \LuaTeX\ does not use KPSE when searching for module +% files. The following Lua script implements a workaround. +% It extends |package.loader| by another search method. +% Modules are found by the module name with extension \xext{.lua} +% similar to +% \begin{quote} +% \ttfamily |kpsewhich --format=texmfscripts| \meta{module}|.lua| +% \end{quote} +% Unhappily \textsf{kpsewhich} does not support directory components +% in the file name. Therefore a module |a.b.c| cannot be installed +% as \xfile{a/b/c.lua}. The script must be named \xfile{a.b.c.lua}. +% \begin{macrocode} +%<*lua> +% \end{macrocode} +% \begin{macrocode} +module("oberdiek.luatex", package.seeall) +% \end{macrocode} +% \begin{macrocode} +function kpse_module_loader(module) + local script = module .. ".lua" + local file = kpse.find_file(script, "texmfscripts") + if file then + local loader, error = loadfile(file) + if loader then + texio.write_nl("(" .. file .. ")") + return loader + end + return "\n\t[oberdiek.luatex.kpse_module_loader] Loading error:\n\t" + .. error + end + return "\n\t[oberdiek.luatex.kpse_module_loader] Search failed" +end +table.insert(package.loaders, kpse_module_loader) +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{Test} +% +% \begin{macrocode} +%<*test2> +\documentclass{article} +\def\LoadCommand{% + \RequirePackage{luatex}[2007/12/12]% +} +% +% \end{macrocode} +% \begin{macrocode} +%<*test3> +\documentclass{article} +\def\LoadCommand{% + \RequirePackage{luatex-loader}[2007/12/12]% +} +% +% \end{macrocode} +% \subsection{Catcode checks for loading} +% +% \begin{macrocode} +%<*test1> +% \end{macrocode} +% \begin{macrocode} +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input luatex.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{Catcode tables} +% +% \subsubsection{Predefined catcode tables} +% +% \begin{macrocode} +%<*test4> +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% Remember \LaTeX's initial catcodes in count registers +% starting at \cs{TestLaTeX}. +% \begin{macrocode} +\count0=0 % +\chardef\TestLaTeX=1000 % +\chardef\TestMax=300 % +\loop + \count\numexpr\TestLaTeX+\count0\relax=\catcode\count0 % +\ifnum\count0<\TestMax + \advance\count0 by 1 % +\repeat +\documentclass{minimal} +\usepackage{luatex}[2007/12/12] +\usepackage{qstest} +\IncludeTests{*} +\LogTests{log}{*}{*} +\makeatletter +\def\Check#1{% + \Expect*{\the\count@=\the\catcode\count@}% + *{\the\count@=#1}% +} +\newcount\scratch +\def\Test#1#2{% + \begin{qstest}{CatcodeTable#1}{CatcodeTable#1}% + \catcodetable\csname CatcodeTable#1\endcsname + \count@=\z@ + \loop + \scratch=#2\relax + \Expect*{\the\count@=\the\catcode\count@}% + *{\the\count@=\the\scratch}% + \ifnum\count@<\TestMax + \advance\count@\@ne + \repeat + \end{qstest}% +} +\Test{LaTeX}{\the\count\numexpr\TestLaTeX+\count@} +\Test{String}{\ifnum\count@=32 10\else 12\fi} +\Test{Other}{12} +\initcatcodetable99 % +\Test{IniTeX}{% + 0\relax + \begingroup + \catcodetable99 % + \global\scratch=\the\catcode\count@ + \endgroup +} +% \end{macrocode} +% +% \subsubsection{Catcode table number stack} +% +% \begin{macrocode} +\begin{qstest}{CatcodeTableNumStack}{CatcodeTableNumStack} + \def\TestStack#1{% + \Expect*{\LuT@NumStack}{#1}% + }% + \TestStack{0}% + \PushCatcodeTableNumStack + \TestStack{{0}0}% + \@firstofone{% + \begingroup + \initcatcodetable12 % + \catcodetable12 % + \PushCatcodeTableNumStack + \TestStack{{12}{0}0}% + \PopCatcodeTableNumStack + \TestStack{{0}0}% + \PopCatcodeTableNumStack + \TestStack{0}% + \def\TestWarning{Missing empty stack warning}% + \def\@PackageWarning#1#2{\def\TestWarning{empty stack}}% + \PopCatcodeTableNumStack + \TestStack{0}% + \Expect*{\TestWarning}{empty stack}% + \endgroup + }% +\end{qstest} +% \end{macrocode} +% +% \subsubsection{Catcode table stack} +% +% \begin{macrocode} +\begin{qstest}{CatcodeTableStack}{CatcodeTableStack} + \def\TestStack#1{% + \Expect*{\the\CatcodeTableStack}{#1}% + }% + \TestStack{0}% + \IncCatcodeTableStack + \TestStack{2}% + \IncCatcodeTableStack + \TestStack{4}% + \begingroup + \IncCatcodeTableStack + \TestStack{6}% + \endgroup + \TestStack{6}% + \begingroup + \DecCatcodeTableStack + \TestStack{4}% + \endgroup + \TestStack{4}% + \DecCatcodeTableStack + \TestStack{2}% + \DecCatcodeTableStack + \TestStack{0}% + \begingroup + \def\TestError{Missing error}% + \def\@PackageError#1#2#3{% + \def\TestError{Empty stack}% + }% + \DecCatcodeTableStack + \TestStack{0}% + \Expect*{\TestError}{Empty stack}% + \endgroup +\end{qstest} +% \end{macrocode} +% +% \subsubsection{Catcode regime macros} +% +% \begin{macrocode} +\begin{qstest}{CatcodeRegime}{CatcodeRegime} + \def\TestStacks#1#2#3{% + \Expect*{\the\catcodetable}{#1}% + \Expect*{\the\CatcodeTableStack}{#2}% + \Expect*{\LuT@NumStack}{#3}% + }% + \TestStacks{0}{0}{0}% + \catcode`\|=7 % + \BeginCatcodeRegime\CatcodeTableLaTeX + \TestStacks{2}{2}{{0}0}% + \Expect*{\the\catcode`\|}{12}% + \EndCatcodeRegime + \TestStacks{0}{0}{0}% + \Expect*{\the\catcode`\|}{7}% +\end{qstest} +% \end{macrocode} +% +% \subsection{Attribute allocation} +% +% \begin{macrocode} +\begin{qstest}{Attributes}{Attributes} + \newattribute\TestAttr + \Expect*{\meaning\TestAttr}% + *{\string\attribute\number\allocationnumber}% + \Expect*{\the\allocationnumber}{0}% + \begingroup + \newattribute\TestAttr + \Expect*{\the\allocationnumber}{1}% + \endgroup + \Expect*{\the\allocationnumber}{0}% + \Expect*{\meaning\TestAttr}*{\string\attribute1}% + \Expect*{\the\TestAttr}{-1}% + \def\Test#1{% + \setattribute\TestAttr{#1}% + \Expect*{\the\TestAttr}{#1}% + }% + \Test{0}% + \Test{1}% + \Test{-1}% + \Test{123}% + \unsetattribute\TestAttr + \Expect*{\the\TestAttr}{-1}% + \begingroup + \Expect*{\the\TestAttr}{-1}% + \Test{1234}% + \endgroup + \Expect*{\the\TestAttr}{-1}% +\end{qstest} +% \end{macrocode} +% +% \subsection{Lua states} +% +% \begin{macrocode} +\begin{qstest}{LuaState}{LuaState} + \newluastate\TestLuaState + \Expect*{\number\TestLuaState}{1}% + \newluastate\TestLuaState + \Expect*{\number\TestLuaState}{2}% +\end{qstest} +% \end{macrocode} +% +% \begin{macrocode} +\@@end +% +% \end{macrocode} +% +% \subsection{Short test for \plainTeX} +% +% \begin{macrocode} +%<*test5> +\input luatex.sty\relax +\newluastate\TestLuaState +\newattribute\TestAttr +\setattribute\TestAttr{10} +\unsetattribute\TestAttr +\newcatcodetable\TestCTa +\begingroup + \SetCatcodeRange{`A}{`Z}{12}% +\endgroup +\BeginCatcodeRegime\CatcodeTableLaTeX +\EndCatcodeRegime +\end +% +% \end{macrocode} +% +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/luatex.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/luatex.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[\CTAN{macros/latex/contrib/oberdiek/oberdiek-tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTAN{tds/tds.pdf}). 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} +% +% \paragraph{Script installation.} +% Check the directory \xfile{TDS:scripts/oberdiek/} for +% scripts that need further installation steps. +% Package \xpackage{attachfile2} comes with the Perl script +% \xfile{pdfatfi.pl} that should be installed in such a way +% that it can be called as \texttt{pdfatfi}. +% Example (linux): +% \begin{quote} +% |chmod +x scripts/oberdiek/pdfatfi.pl|\\ +% |cp scripts/oberdiek/pdfatfi.pl /usr/local/bin/| +% \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 luatex.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@{}} +% luatex.sty & tex/generic/oberdiek/luatex.sty\\ +% luatex-loader.sty & tex/generic/oberdiek/luatex-loader.sty\\ +% oberdiek.luatex.lua & scripts/oberdiek/oberdiek.luatex.lua\\ +% luatex.pdf & doc/latex/oberdiek/luatex.pdf\\ +% test/luatex-test1.tex & doc/latex/oberdiek/test/luatex-test1.tex\\ +% test/luatex-test2.tex & doc/latex/oberdiek/test/luatex-test2.tex\\ +% test/luatex-test3.tex & doc/latex/oberdiek/test/luatex-test3.tex\\ +% test/luatex-test4.tex & doc/latex/oberdiek/test/luatex-test4.tex\\ +% test/luatex-test5.tex & doc/latex/oberdiek/test/luatex-test5.tex\\ +% luatex.dtx & source/latex/oberdiek/luatex.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 +% (\teTeX, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \teTeX\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Attached source.} +% +% The PDF documentation on CTAN also includes the +% \xfile{.dtx} source file. It can be extracted by +% AcrobatReader 6 or higher. Another option is \textsf{pdftk}, +% e.g. unpack the file into the current directory: +% \begin{quote} +% \verb|pdftk luatex.pdf unpack_files output .| +% \end{quote} +% +% \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{luatex.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 luatex.dtx +%makeindex -s gind.ist luatex.idx +%pdflatex luatex.dtx +%makeindex -s gind.ist luatex.idx +%pdflatex luatex.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/12/12 v0.1} +% \item +% First public version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/magicnum.dtx b/Master/texmf-dist/source/latex/oberdiek/magicnum.dtx new file mode 100644 index 00000000000..2a5f275a087 --- /dev/null +++ b/Master/texmf-dist/source/latex/oberdiek/magicnum.dtx @@ -0,0 +1,1384 @@ +% \iffalse meta-comment +% +% Copyright (C) 2007 by Heiko Oberdiek +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% This Current Maintainer of this work is Heiko Oberdiek. +% +% This work consists of the main source file magicnum.dtx +% and the derived files +% magicnum.sty, magicnum.pdf, magicnum.ins, magicnum.drv, magicnum.txt, +% magicnum-test1.tex, magicnum-test2.tex, magicnum-test3.tex, +% magicnum.lua, oberdiek.magicnum.lua. +% +% Distribution: +% CTAN:macros/latex/contrib/oberdiek/magicnum.dtx +% CTAN:macros/latex/contrib/oberdiek/magicnum.pdf +% +% Unpacking: +% (a) If magicnum.ins is present: +% tex magicnum.ins +% (b) Without magicnum.ins: +% tex magicnum.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{magicnum.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If magicnum.drv is present: +% latex magicnum.drv +% (b) Without magicnum.drv: +% latex magicnum.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 magicnum.dtx +% makeindex -s gind.ist magicnum.idx +% pdflatex magicnum.dtx +% makeindex -s gind.ist magicnum.idx +% pdflatex magicnum.dtx +% +% Installation: +% TDS:tex/generic/oberdiek/magicnum.sty +% TDS:scripts/oberdiek/magicnum.lua +% TDS:scripts/oberdiek/oberdiek.magicnum.lua +% TDS:doc/latex/oberdiek/magicnum.pdf +% TDS:doc/latex/oberdiek/magicnum.txt +% TDS:doc/latex/oberdiek/test/magicnum-test1.tex +% TDS:doc/latex/oberdiek/test/magicnum-test2.tex +% TDS:doc/latex/oberdiek/test/magicnum-test3.tex +% TDS:source/latex/oberdiek/magicnum.dtx +% +%<*ignore> +\begingroup + \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: magicnum 2007/12/12 v1.0 Magic numbers (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Copyright (C) 2007 by Heiko Oberdiek + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3 of this license or (at your option) any later +version. The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +This Current Maintainer of this work is Heiko Oberdiek. + +This work consists of the main source file magicnum.dtx +and the derived files + magicnum.sty, magicnum.pdf, magicnum.ins, magicnum.drv, magicnum.txt, + magicnum-test1.tex, magicnum-test2.tex, magicnum-test3.tex, + magicnum.lua, oberdiek.magicnum.lua. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{magicnum.ins}{\from{magicnum.dtx}{install}}% + \file{magicnum.drv}{\from{magicnum.dtx}{driver}}% + \usedir{tex/generic/oberdiek}% + \file{magicnum.sty}{\from{magicnum.dtx}{package}}% + \usedir{doc/latex/oberdiek/test}% + \file{magicnum-test1.tex}{\from{magicnum.dtx}{test1}}% + \file{magicnum-test2.tex}{\from{magicnum.dtx}{testplain,testdata}}% + \file{magicnum-test3.tex}{\from{magicnum.dtx}{testlatex,testdata}}% + \nopreamble + \nopostamble + \usedir{doc/latex/oberdiek}% + \file{magicnum.txt}{\from{magicnum.dtx}{data}}% +} +\def\MetaPrefix{-- } +\def\defaultpostamble{% + \MetaPrefix^^J% + \MetaPrefix\space End of File `\outFileName'.% +} +\def\currentpostamble{\defaultpostamble}% +\generate{% + \usedir{scripts/oberdiek}% + \file{magicnum.lua}{\from{magicnum.dtx}{lua}}% + \file{oberdiek.magicnum.lua}{\from{magicnum.dtx}{lua}}% +} + +\obeyspaces +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* magicnum.sty} +\Msg{*} +\Msg{* And install the following script files:} +\Msg{*} +\Msg{* magicnum.lua, oberdiek.magicnum.lua} +\Msg{*} +\Msg{* To produce the documentation run the file `magicnum.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{magicnum.drv}% + [2007/12/12 v1.0 Magic numbers (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2007/11/11] +\usepackage{array} +\begin{document} + \DocInput{magicnum.dtx}% +\end{document} +% +% \fi +% +% \CheckSum{576} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{magicnum.drv} +% +% \title{The \xpackage{magicnum} package} +% \date{2007/12/12 v1.0} +% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} +% +% \maketitle +% +% \begin{abstract} +% This packages allows to access magic numbers by a hierarchical +% name system. +% \end{abstract} +% +% \tableofcontents +% +% \hypersetup{bookmarksopenlevel=2} +% \section{Documentation} +% +% \subsection{Introduction} +% +% Especially since \eTeX\ there are many integer values +% with special meanings, such as catcodes, group types, \dots +% Package \xpackage{etex}, enabled by options, defines +% macros in the user namespace for these values. +% +% This package goes another approach for storing the names and values. +% \begin{itemize} +% \item If \LuaTeX\ is available, they +% are stored in Lua tables. +% \item Without \LuaTeX\ they are remembered using internal +% macros. +% \end{itemize} +% +% \subsection{User interface} +% +% The integer values and names are organized in a hierarchical +% scheme of categories with the property names as leaves. +% Example: \eTeX's \cs{currentgrouplevel} reports |2| for a +% group caused by \cs{hbox}. This package has choosen to organize +% the group types in a main category |etex| and its subcategory +% |grouptype|: +% \begin{quote} +% |etex.grouptype.hbox| = |2| +% \end{quote} +% The property name |hbox| in category |etex.grouptype| has value |2|. +% Dots are used to separate components. +% +% If you want to have the value, the access key is constructed by +% the category with all its components and the property name. +% For the opposite the value is used instead of the property name. +% +% Values are always integers (including negative numbers). +% +% \subsubsection{\cs{magicnum}} +% +% \begin{declcs}{magicnum} \M{access key} +% \end{declcs} +% Macro \cs{magicnum} expects an access key as argument and +% expands to the requested data. The macro is always expandable. +% In case of errors the expansion result is empty. +% +% The same macro is also used for getting a property name. +% In this case the property name part in the access key is +% replaced by the value. +% +% The catcodes +% of the resulting numbers and strings follow \TeX's tradition of +% \cs{string}, \cs{meaning}, \dots: The space has catcode 10 +% (|tex.catcode.space|) and the other characters have catcode +% 12 (|tex.catcode.other|). +% +% Examples: +% \begin{quote} +% |\magicnum{etex.grouptype.hbox}| $\Rightarrow$ |2|\\ +% |\magicnum{tex.catcode.14}| $\Rightarrow$ |comment|\\ +% |\magicnum{tex.catcode.undefined}| $\Rightarrow$ $\emptyset$ +% \end{quote} +% +% \subsubsection{Properties} +% +% \begin{itemize} +% \item The components of a category are either subcategories or +% key value pairs, but not both. +% \item The full specified property names are unique and thus +% has one integer value exactly. +% \item Also the values inside a category are unique. +% This condition is a prerequisite for the reverse mapping +% of \cs{magicnum}. +% \item All names start with a letter. Only letters or digits +% may follow. +% \end{itemize} +% +% \subsection{Data} +% +% \subsubsection{\texorpdfstring{Category }{}\texttt{tex.catcode}} +% +% \begin{quote} +% \begin{tabular}{@{}>{\ttfamily}l>{\ttfamily}l@{}} +% tex.catcode.escape & 0\\ +% tex.catcode.begingroup & 1\\ +% tex.catcode.endgroup & 2\\ +% tex.catcode.math & 3\\ +% tex.catcode.align & 4\\ +% tex.catcode.eol & 5\\ +% tex.catcode.parameter & 6\\ +% tex.catcode.superscript & 7\\ +% tex.catcode.subscript & 8\\ +% tex.catcode.ignore & 9\\ +% tex.catcode.space & 10\\ +% tex.catcode.letter & 11\\ +% tex.catcode.other & 12\\ +% tex.catcode.active & 13\\ +% tex.catcode.comment & 14\\ +% tex.catcode.invalid & 15\\ +% \end{tabular} +% \end{quote} +% +% \subsubsection{\texorpdfstring{Category }{}\texttt{etex.grouptype}} +% +% \begin{quote} +% \begin{tabular}{@{}>{\ttfamily}l>{\ttfamily}l@{}} +% etex.grouptype.bottomlevel & 0\\ +% etex.grouptype.simple & 1\\ +% etex.grouptype.hbox & 2\\ +% etex.grouptype.adjustedhbox & 3\\ +% etex.grouptype.vbox & 4\\ +% etex.grouptype.align & 5\\ +% etex.grouptype.noalign & 6\\ +% etex.grouptype.output & 8\\ +% etex.grouptype.math & 9\\ +% etex.grouptype.disc & 10\\ +% etex.grouptype.insert & 11\\ +% etex.grouptype.vcenter & 12\\ +% etex.grouptype.mathchoice & 13\\ +% etex.grouptype.semisimple & 14\\ +% etex.grouptype.mathshift & 15\\ +% etex.grouptype.mathleft & 16\\ +% \end{tabular} +% \end{quote} +% +% \subsubsection{\texorpdfstring{Category }{}\texttt{etex.iftype}} +% +% \begin{quote} +% \begin{tabular}{@{}>{\ttfamily}l>{\ttfamily}l@{}} +% etex.iftype.none & 0\\ +% etex.iftype.char & 1\\ +% etex.iftype.cat & 2\\ +% etex.iftype.num & 3\\ +% etex.iftype.dim & 4\\ +% etex.iftype.odd & 5\\ +% etex.iftype.vmode & 6\\ +% etex.iftype.hmode & 7\\ +% etex.iftype.mmode & 8\\ +% etex.iftype.inner & 9\\ +% etex.iftype.void & 10\\ +% etex.iftype.hbox & 11\\ +% etex.iftype.vbox & 12\\ +% etex.iftype.x & 13\\ +% etex.iftype.eof & 14\\ +% etex.iftype.true & 15\\ +% etex.iftype.false & 16\\ +% etex.iftype.case & 17\\ +% etex.iftype.defined & 18\\ +% etex.iftype.csname & 19\\ +% etex.iftype.fontchar & 20\\ +% \end{tabular} +% \end{quote} +% +% \subsubsection{\texorpdfstring{Category }{}\texttt{etex.nodetype}} +% +% \begin{quote} +% \begin{tabular}{@{}>{\ttfamily}l>{\ttfamily}l@{}} +% etex.nodetype.none & -1\\ +% etex.nodetype.char & 0\\ +% etex.nodetype.hlist & 1\\ +% etex.nodetype.vlist & 2\\ +% etex.nodetype.rule & 3\\ +% etex.nodetype.ins & 4\\ +% etex.nodetype.mark & 5\\ +% etex.nodetype.adjust & 6\\ +% etex.nodetype.ligature & 7\\ +% etex.nodetype.disc & 8\\ +% etex.nodetype.whatsit & 9\\ +% etex.nodetype.math & 10\\ +% etex.nodetype.glue & 11\\ +% etex.nodetype.kern & 12\\ +% etex.nodetype.penalty & 13\\ +% etex.nodetype.unset & 14\\ +% etex.nodetype.maths & 15\\ +% \end{tabular} +% \end{quote} +% +% \subsubsection{\texorpdfstring{Category }{}\texttt{etex.interactionmode}} +% +% \begin{quote} +% \begin{tabular}{@{}>{\ttfamily}l>{\ttfamily}l@{}} +% etex.interactionmode.batch & 0\\ +% etex.interactionmode.nonstop & 1\\ +% etex.interactionmode.scroll & 2\\ +% etex.interactionmode.errorstop & 3\\ +% \end{tabular} +% \end{quote} +% +% \subsubsection{\texorpdfstring{Category }{}\texttt{luatex.pdfliteral.mode}} +% +% \begin{quote} +% \begin{tabular}{@{}>{\ttfamily}l>{\ttfamily}l@{}} +% luatex.pdfliteral.mode.setorigin & 0\\ +% luatex.pdfliteral.mode.page & 1\\ +% luatex.pdfliteral.mode.direct & 2\\ +% \end{tabular} +% \end{quote} +% +% +% \hypersetup{bookmarksopenlevel=1} +% +% \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 + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@magicnum.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \catcode35 6 % # + \catcode123 1 % { + \catcode125 2 % } + \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{magicnum}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +% \end{macrocode} +% Package identification: +% \begin{macrocode} +\begingroup + \catcode35 6 % # + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode47 12 % / + \catcode58 12 % : + \catcode64 11 % @ + \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\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@magicnum.sty\endcsname +\ProvidesPackage{magicnum}% + [2007/12/12 v1.0 Magic numbers (HO)] +% \end{macrocode} +% +% \subsection{Catcodes} +% +% \begin{macrocode} +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname magicnum@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\magicnum@AtEnd{% + \magicnum@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{34}{12}% " +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{62}{12}% > +% \end{macrocode} +% +% \subsection{Check for previous definition} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname newcommand\endcsname\relax + \expandafter\ifx\csname magicnum\endcsname\relax + \else + \input infwarerr.sty\relax + \@PackageErrorNoLine{magicnum}{% + \string\magicnum\space is already defined% + }\@ehc + \fi +\else + \newcommand*{\magicnum}{}% +\fi +% \end{macrocode} +% +% \subsection{Without \LuaTeX} +% +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname luatexversion\endcsname\relax +% \end{macrocode} +% +% \begin{macro}{\magicnum} +% \begin{macrocode} + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname ifcsname\endcsname\relax + \def\magicnum#1{% + \expandafter\ifx\csname MG@#1\endcsname\relax + \else + \csname MG@#1\endcsname + \fi + }% + \else + \begingroup + \edef\x{\endgroup + \def\noexpand\magicnum##1{% + \expandafter\noexpand\csname + ifcsname\endcsname MG@##1\noexpand\endcsname + \noexpand\csname MG@##1% + \noexpand\expandafter\noexpand\endcsname + \expandafter\noexpand\csname fi\endcsname + }% + }% + \x + \fi +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\else +% \end{macrocode} +% +% \subsection{With \LuaTeX} +% +% \begin{macrocode} + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname RequirePackage\endcsname\relax + \input luatex.sty\relax + \else + \RequirePackage{luatex}[2007/12/12]% + \fi +% \end{macrocode} +% \begin{macro}{\magicnum} +% \begin{macrocode} + \def\magicnum#1{% + \directlua0{% + require("oberdiek.magicnum")% + oberdiek.magicnum.get(% + "\luaescapestring{#1}",\number\CatcodeTableString + )% + }% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + \magicnum@AtEnd + \expandafter\endinput +\fi +% +% \end{macrocode} +% +% \subsection{Data} +% +% \subsubsection{Plain data} +% +% \begin{macrocode} +%<*data> +tex.catcode + escape = 0 + begingroup = 1 + endgroup = 2 + math = 3 + align = 4 + eol = 5 + parameter = 6 + superscript = 7 + subscript = 8 + ignore = 9 + space = 10 + letter = 11 + other = 12 + active = 13 + comment = 14 + invalid = 15 +etex.grouptype + bottomlevel = 0 + simple = 1 + hbox = 2 + adjustedhbox = 3 + vbox = 4 + align = 5 + noalign = 6 + output = 8 + math = 9 + disc = 10 + insert = 11 + vcenter = 12 + mathchoice = 13 + semisimple = 14 + mathshift = 15 + mathleft = 16 +etex.iftype + none = 0 + char = 1 + cat = 2 + num = 3 + dim = 4 + odd = 5 + vmode = 6 + hmode = 7 + mmode = 8 + inner = 9 + void = 10 + hbox = 11 + vbox = 12 + x = 13 + eof = 14 + true = 15 + false = 16 + case = 17 + defined = 18 + csname = 19 + fontchar = 20 +etex.nodetype + none = -1 + char = 0 + hlist = 1 + vlist = 2 + rule = 3 + ins = 4 + mark = 5 + adjust = 6 + ligature = 7 + disc = 8 + whatsit = 9 + math = 10 + glue = 11 + kern = 12 + penalty = 13 + unset = 14 + maths = 15 +etex.interactionmode + batch = 0 + nonstop = 1 + scroll = 2 + errorstop = 3 +luatex.pdfliteral.mode + setorigin = 0 + page = 1 + direct = 2 +% +% \end{macrocode} +% +% \subsubsection{Data for \TeX} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% \begin{macro}{\magicnum@add} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname detokenize\endcsname\relax + \def\magicnum@add#1#2#3{% + \expandafter\magicnum@@add + \csname MG@#1.#2\expandafter\endcsname + \csname MG@#1.#3\endcsname + {#3}{#2}% + }% + \def\magicnum@@add#1#2#3#4{% + \def#1{#3}% + \def#2{#4}% + \edef#1{% + \expandafter\strip@prefix\meaning#1% + }% + \edef#2{% + \expandafter\strip@prefix\meaning#2% + }% + }% + \expandafter\ifx\csname strip@prefix\endcsname\relax + \def\strip@prefix#1->{}% + \fi +\else + \def\magicnum@add#1#2#3{% + \expandafter\edef\csname MG@#1.#2\endcsname{% + \detokenize{#3}% + }% + \expandafter\edef\csname MG@#1.#3\endcsname{% + \detokenize{#2}% + }% + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\magicnum@add{tex.catcode}{escape}{0} +\magicnum@add{tex.catcode}{begingroup}{1} +\magicnum@add{tex.catcode}{endgroup}{2} +\magicnum@add{tex.catcode}{math}{3} +\magicnum@add{tex.catcode}{align}{4} +\magicnum@add{tex.catcode}{eol}{5} +\magicnum@add{tex.catcode}{parameter}{6} +\magicnum@add{tex.catcode}{superscript}{7} +\magicnum@add{tex.catcode}{subscript}{8} +\magicnum@add{tex.catcode}{ignore}{9} +\magicnum@add{tex.catcode}{space}{10} +\magicnum@add{tex.catcode}{letter}{11} +\magicnum@add{tex.catcode}{other}{12} +\magicnum@add{tex.catcode}{active}{13} +\magicnum@add{tex.catcode}{comment}{14} +\magicnum@add{tex.catcode}{invalid}{15} +\magicnum@add{etex.grouptype}{bottomlevel}{0} +\magicnum@add{etex.grouptype}{simple}{1} +\magicnum@add{etex.grouptype}{hbox}{2} +\magicnum@add{etex.grouptype}{adjustedhbox}{3} +\magicnum@add{etex.grouptype}{vbox}{4} +\magicnum@add{etex.grouptype}{align}{5} +\magicnum@add{etex.grouptype}{noalign}{6} +\magicnum@add{etex.grouptype}{output}{8} +\magicnum@add{etex.grouptype}{math}{9} +\magicnum@add{etex.grouptype}{disc}{10} +\magicnum@add{etex.grouptype}{insert}{11} +\magicnum@add{etex.grouptype}{vcenter}{12} +\magicnum@add{etex.grouptype}{mathchoice}{13} +\magicnum@add{etex.grouptype}{semisimple}{14} +\magicnum@add{etex.grouptype}{mathshift}{15} +\magicnum@add{etex.grouptype}{mathleft}{16} +\magicnum@add{etex.iftype}{none}{0} +\magicnum@add{etex.iftype}{char}{1} +\magicnum@add{etex.iftype}{cat}{2} +\magicnum@add{etex.iftype}{num}{3} +\magicnum@add{etex.iftype}{dim}{4} +\magicnum@add{etex.iftype}{odd}{5} +\magicnum@add{etex.iftype}{vmode}{6} +\magicnum@add{etex.iftype}{hmode}{7} +\magicnum@add{etex.iftype}{mmode}{8} +\magicnum@add{etex.iftype}{inner}{9} +\magicnum@add{etex.iftype}{void}{10} +\magicnum@add{etex.iftype}{hbox}{11} +\magicnum@add{etex.iftype}{vbox}{12} +\magicnum@add{etex.iftype}{x}{13} +\magicnum@add{etex.iftype}{eof}{14} +\magicnum@add{etex.iftype}{true}{15} +\magicnum@add{etex.iftype}{false}{16} +\magicnum@add{etex.iftype}{case}{17} +\magicnum@add{etex.iftype}{defined}{18} +\magicnum@add{etex.iftype}{csname}{19} +\magicnum@add{etex.iftype}{fontchar}{20} +\magicnum@add{etex.nodetype}{none}{-1} +\magicnum@add{etex.nodetype}{char}{0} +\magicnum@add{etex.nodetype}{hlist}{1} +\magicnum@add{etex.nodetype}{vlist}{2} +\magicnum@add{etex.nodetype}{rule}{3} +\magicnum@add{etex.nodetype}{ins}{4} +\magicnum@add{etex.nodetype}{mark}{5} +\magicnum@add{etex.nodetype}{adjust}{6} +\magicnum@add{etex.nodetype}{ligature}{7} +\magicnum@add{etex.nodetype}{disc}{8} +\magicnum@add{etex.nodetype}{whatsit}{9} +\magicnum@add{etex.nodetype}{math}{10} +\magicnum@add{etex.nodetype}{glue}{11} +\magicnum@add{etex.nodetype}{kern}{12} +\magicnum@add{etex.nodetype}{penalty}{13} +\magicnum@add{etex.nodetype}{unset}{14} +\magicnum@add{etex.nodetype}{maths}{15} +\magicnum@add{etex.interactionmode}{batch}{0} +\magicnum@add{etex.interactionmode}{nonstop}{1} +\magicnum@add{etex.interactionmode}{scroll}{2} +\magicnum@add{etex.interactionmode}{errorstop}{3} +\magicnum@add{luatex.pdfliteral.mode}{setorigin}{0} +\magicnum@add{luatex.pdfliteral.mode}{page}{1} +\magicnum@add{luatex.pdfliteral.mode}{direct}{2} +% \end{macrocode} +% \begin{macrocode} +\magicnum@AtEnd +% +% \end{macrocode} +% +% \subsubsection{Lua module} +% +% \begin{macrocode} +%<*lua> +% \end{macrocode} +% \begin{macrocode} +module("oberdiek.magicnum", package.seeall) +% \end{macrocode} +% \begin{macrocode} +local data = { + ["tex.catcode"] = { + [0] = "escape", + [1] = "begingroup", + [2] = "endgroup", + [3] = "math", + [4] = "align", + [5] = "eol", + [6] = "parameter", + [7] = "superscript", + [8] = "subscript", + [9] = "ignore", + [10] = "space", + [11] = "letter", + [12] = "other", + [13] = "active", + [14] = "comment", + [15] = "invalid", + ["active"] = 13, + ["align"] = 4, + ["begingroup"] = 1, + ["comment"] = 14, + ["endgroup"] = 2, + ["eol"] = 5, + ["escape"] = 0, + ["ignore"] = 9, + ["invalid"] = 15, + ["letter"] = 11, + ["math"] = 3, + ["other"] = 12, + ["parameter"] = 6, + ["space"] = 10, + ["subscript"] = 8, + ["superscript"] = 7 + }, + ["etex.grouptype"] = { + [0] = "bottomlevel", + [1] = "simple", + [2] = "hbox", + [3] = "adjustedhbox", + [4] = "vbox", + [5] = "align", + [6] = "noalign", + [8] = "output", + [9] = "math", + [10] = "disc", + [11] = "insert", + [12] = "vcenter", + [13] = "mathchoice", + [14] = "semisimple", + [15] = "mathshift", + [16] = "mathleft", + ["adjustedhbox"] = 3, + ["align"] = 5, + ["bottomlevel"] = 0, + ["disc"] = 10, + ["hbox"] = 2, + ["insert"] = 11, + ["math"] = 9, + ["mathchoice"] = 13, + ["mathleft"] = 16, + ["mathshift"] = 15, + ["noalign"] = 6, + ["output"] = 8, + ["semisimple"] = 14, + ["simple"] = 1, + ["vbox"] = 4, + ["vcenter"] = 12 + }, + ["etex.iftype"] = { + [0] = "none", + [1] = "char", + [2] = "cat", + [3] = "num", + [4] = "dim", + [5] = "odd", + [6] = "vmode", + [7] = "hmode", + [8] = "mmode", + [9] = "inner", + [10] = "void", + [11] = "hbox", + [12] = "vbox", + [13] = "x", + [14] = "eof", + [15] = "true", + [16] = "false", + [17] = "case", + [18] = "defined", + [19] = "csname", + [20] = "fontchar", + ["case"] = 17, + ["cat"] = 2, + ["char"] = 1, + ["csname"] = 19, + ["defined"] = 18, + ["dim"] = 4, + ["eof"] = 14, + ["false"] = 16, + ["fontchar"] = 20, + ["hbox"] = 11, + ["hmode"] = 7, + ["inner"] = 9, + ["mmode"] = 8, + ["none"] = 0, + ["num"] = 3, + ["odd"] = 5, + ["true"] = 15, + ["vbox"] = 12, + ["vmode"] = 6, + ["void"] = 10, + ["x"] = 13 + }, + ["etex.nodetype"] = { + [-1] = "none", + [0] = "char", + [1] = "hlist", + [2] = "vlist", + [3] = "rule", + [4] = "ins", + [5] = "mark", + [6] = "adjust", + [7] = "ligature", + [8] = "disc", + [9] = "whatsit", + [10] = "math", + [11] = "glue", + [12] = "kern", + [13] = "penalty", + [14] = "unset", + [15] = "maths", + ["adjust"] = 6, + ["char"] = 0, + ["disc"] = 8, + ["glue"] = 11, + ["hlist"] = 1, + ["ins"] = 4, + ["kern"] = 12, + ["ligature"] = 7, + ["mark"] = 5, + ["math"] = 10, + ["maths"] = 15, + ["none"] = -1, + ["penalty"] = 13, + ["rule"] = 3, + ["unset"] = 14, + ["vlist"] = 2, + ["whatsit"] = 9 + }, + ["etex.interactionmode"] = { + [0] = "batch", + [1] = "nonstop", + [2] = "scroll", + [3] = "errorstop", + ["batch"] = 0, + ["errorstop"] = 3, + ["nonstop"] = 1, + ["scroll"] = 2 + }, + ["luatex.pdfliteral.mode"] = { + [0] = "setorigin", + [1] = "page", + [2] = "direct", + ["direct"] = 2, + ["page"] = 1, + ["setorigin"] = 0 + } +} +% \end{macrocode} +% \begin{macrocode} +function get(name, catcodetable) + local startpos, endpos, category, entry = + string.find(name, "^(%a[%a%d%.]*)%.(-?[%a%d]+)$") + if not entry then + return + end + local node = data[category] + if not node then + return + end + local num = tonumber(entry) + local value + if num then + value = node[num] + if not value then + return + end + else + value = node[entry] + if not value then + return + end + value = "" .. value + end + tex.print(catcodetable, value) +end +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{Test} +% +% \subsection{Catcode checks for loading} +% +% \begin{macrocode} +%<*test1> +% \end{macrocode} +% \begin{macrocode} +\catcode`\{=1 % +\catcode`\}=2 % +\catcode`\#=6 % +\catcode`\@=11 % +\expandafter\ifx\csname count@\endcsname\relax + \countdef\count@=255 % +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname loop\endcsname\relax + \expandafter\@firstofone +\else + \expandafter\@gobble +\fi +{% + \def\loop#1\repeat{% + \def\body{#1}% + \iterate + }% + \def\iterate{% + \body + \let\next\iterate + \else + \let\next\relax + \fi + \next + }% + \let\repeat=\fi +}% +\def\RestoreCatcodes{} +\count@=0 % +\loop + \edef\RestoreCatcodes{% + \RestoreCatcodes + \catcode\the\count@=\the\catcode\count@\relax + }% +\ifnum\count@<255 % + \advance\count@ 1 % +\repeat + +\def\RangeCatcodeInvalid#1#2{% + \count@=#1\relax + \loop + \catcode\count@=15 % + \ifnum\count@<#2\relax + \advance\count@ 1 % + \repeat +} +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input magicnum.sty\relax}% +\fi +\def\Test{% + \RangeCatcodeInvalid{0}{47}% + \RangeCatcodeInvalid{58}{64}% + \RangeCatcodeInvalid{91}{96}% + \RangeCatcodeInvalid{123}{255}% + \catcode`\@=12 % + \catcode`\\=0 % + \catcode`\{=1 % + \catcode`\}=2 % + \catcode`\#=6 % + \catcode`\[=12 % + \catcode`\]=12 % + \catcode`\%=14 % + \catcode`\ =10 % + \catcode13=5 % + \LoadCommand + \RestoreCatcodes +} +\Test +\csname @@end\endcsname +\end +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% +% \subsection{Test data} +% +% \begin{macrocode} +%<*testplain> +\input magicnum.sty\relax +\def\Test#1#2{% + \edef\result{\magicnum{#1}}% + \edef\expect{#2}% + \edef\expect{\expandafter\stripprefix\meaning\expect}% + \ifx\result\expect + \else + \errmessage{% + Failed: [#1] % hash-ok + returns [\result] instead of [\expect]% + }% + \fi +} +\def\stripprefix#1->{} +% +% \end{macrocode} +% \begin{macrocode} +%<*testlatex> +\NeedsTeXFormat{LaTeX2e} +\documentclass{minimal} +\usepackage{magicnum}[2007/12/12] +\usepackage{qstest} +\IncludeTests{*} +\LogTests{log}{*}{*} +\newcommand*{\Test}[2]{% + \Expect*{\magicnum{#1}}{#2}% +} +\begin{qstest}{magicnum}{magicnum} +% +% \end{macrocode} +% \begin{macrocode} +%<*testdata> +\Test{tex.catcode.escape}{0} +\Test{tex.catcode.invalid}{15} +\Test{tex.catcode.unknown}{} +\Test{tex.catcode.0}{escape} +\Test{tex.catcode.15}{invalid} +\Test{etex.iftype.true}{15} +\Test{etex.iftype.false}{16} +\Test{etex.iftype.15}{true} +\Test{etex.iftype.16}{false} +\Test{etex.nodetype.none}{-1} +\Test{etex.nodetype.-1}{none} +\Test{luatex.pdfliteral.mode.direct}{2} +\Test{luatex.pdfliteral.mode.1}{page} +\Test{}{} +\Test{unknown}{} +\Test{unknown.foo.bar}{} +\Test{unknown.foo.4}{} +% +% \end{macrocode} +% \begin{macrocode} +%<*testplain> +\csname @@end\endcsname +\end +% +%<*testlatex> +\end{qstest} +\csname @@end\endcsname +% +% \end{macrocode} +% +% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/oberdiek/magicnum.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/oberdiek/magicnum.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[\CTAN{macros/latex/contrib/oberdiek/oberdiek-tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTAN{tds/tds.pdf}). 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} +% +% \paragraph{Script installation.} +% Check the directory \xfile{TDS:scripts/oberdiek/} for +% scripts that need further installation steps. +% Package \xpackage{attachfile2} comes with the Perl script +% \xfile{pdfatfi.pl} that should be installed in such a way +% that it can be called as \texttt{pdfatfi}. +% Example (linux): +% \begin{quote} +% |chmod +x scripts/oberdiek/pdfatfi.pl|\\ +% |cp scripts/oberdiek/pdfatfi.pl /usr/local/bin/| +% \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 magicnum.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@{}} +% magicnum.sty & tex/generic/oberdiek/magicnum.sty\\ +% magicnum.lua & scripts/oberdiek/magicnum.lua\\ +% oberdiek.magicnum.lua & scripts/oberdiek/oberdiek.magicnum.lua\\ +% magicnum.pdf & doc/latex/oberdiek/magicnum.pdf\\ +% magicnum.txt & doc/latex/oberdiek/magicnum.txt\\ +% test/magicnum-test1.tex & doc/latex/oberdiek/test/magicnum-test1.tex\\ +% test/magicnum-test2.tex & doc/latex/oberdiek/test/magicnum-test2.tex\\ +% test/magicnum-test3.tex & doc/latex/oberdiek/test/magicnum-test3.tex\\ +% magicnum.dtx & source/latex/oberdiek/magicnum.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 +% (\teTeX, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \teTeX\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Attached source.} +% +% The PDF documentation on CTAN also includes the +% \xfile{.dtx} source file. It can be extracted by +% AcrobatReader 6 or higher. Another option is \textsf{pdftk}, +% e.g. unpack the file into the current directory: +% \begin{quote} +% \verb|pdftk magicnum.pdf unpack_files output .| +% \end{quote} +% +% \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{magicnum.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 magicnum.dtx +%makeindex -s gind.ist magicnum.idx +%pdflatex magicnum.dtx +%makeindex -s gind.ist magicnum.idx +%pdflatex magicnum.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2007/12/12 v1.0} +% \item +% First public version. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins index 0c84c3a5cc1..2cc786de1e1 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins @@ -1,5 +1,5 @@ % oberdiek.ins -% 2007/11/25 +% 2007/12/13 % % Copyright (C) 1999, 2001, 2006 by % Heiko Oberdiek @@ -56,6 +56,7 @@ \batchinput{hypgotoe.dtx} \batchinput{ifdraft.dtx} \batchinput{iflang.dtx} +\batchinput{ifluatex.dtx} \batchinput{ifpdf.dtx} \batchinput{ifvtex.dtx} \batchinput{infwarerr.dtx} @@ -64,6 +65,9 @@ \batchinput{kvoptions.dtx} \batchinput{kvsetkeys.dtx} \batchinput{listingsutf8.dtx} +\batchinput{luacolor.dtx} +\batchinput{luatex.dtx} +\batchinput{magicnum.dtx} \batchinput{makerobust.dtx} \batchinput{pagesel.dtx} \batchinput{pdfcol.dtx} diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex index 9512daff59a..971b4333630 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex @@ -6,7 +6,7 @@ \newcommand*{\Subject}{CTAN:\CTANdir} \newcommand*{\Author}{Heiko Oberdiek} \newcommand*{\Email}{oberdiek@uni-freiburg.de} -\newcommand*{\Date}{2007/11/25} +\newcommand*{\Date}{2007/12/13} % Copyright (C) 2006 by % Heiko Oberdiek @@ -201,7 +201,7 @@ [\entrysep] \entry{epstopdf}{2007/11/11}{1.6}{Conversion with epstopdf on the fly}% [\entrysep] -\entry{etexcmds}{2007/09/09}{1.1}{Prefix for e-TeX command names}% +\entry{etexcmds}{2007/12/12}{1.2}{Prefix for e-TeX command names}% [\entrysep] \entry{flags}{2007/09/30}{0.4}{Flag setting in bit fields}% [\entrysep] @@ -209,7 +209,7 @@ [\entrysep] \entry{grffile}{2007/11/24}{1.7}{Extended file name support for graphics}% [\entrysep] -\entry{holtxdoc}{2007/11/11}{0.9}{Private additional ltxdoc support}% +\entry{holtxdoc}{2007/12/12}{0.10}{Private additional ltxdoc support}% [\entrysep] \entry{hycolor}{2007/04/11}{1.1}{Code for color options of hyperref/bookmark}% [\entrysep] @@ -227,7 +227,9 @@ [\entrysep] \entry{iflang}{2007/11/11}{1.5}{Language checks}% [\entrysep] -\entry{ifpdf}{2007/09/09}{1.5}{Provides the ifpdf switch}% +\entry{ifluatex}{2007/12/12}{1.0}{Provides the ifluatex switch}% +[\entrysep] +\entry{ifpdf}{2007/12/12}{1.6}{Provides the ifpdf switch}% [\entrysep] \entry{ifvtex}{2007/09/09}{1.3}{Switches for detecting VTeX and its modes}% [\entrysep] @@ -243,17 +245,23 @@ [\entrysep] \entry{listingsutf8}{2007/11/11}{1.1}{Adding support for UTF-8 to listings}% [\entrysep] +\entry{luacolor}{2007/12/12}{1.0}{Coloring based on LuaTeX's node attributes}% +[\entrysep] +\entry{luatex}{2007/12/12}{0.1}{LuaTeX basic definition package}% +[\entrysep] +\entry{magicnum}{2007/12/12}{1.0}{Magic numbers}% +[\entrysep] \entry{makerobust}{2006/03/18}{1.0}{Making a macro robust}% [\entrysep] \entry{pagesel}{2007/04/12}{1.7}{Selecting shipout output pages}% [\entrysep] -\entry{pdfcol}{2007/09/09}{1.0}{Maintaining additional color stacks for pdfTeX}% +\entry{pdfcol}{2007/12/12}{1.2}{Maintaining additional color stacks for pdfTeX}% [\entrysep] \entry{pdfcolfoot}{2007/09/09}{1.1}{pdfTeX's color stack for footnotes}% [\entrysep] \entry{pdfcolmk}{2007/04/11}{1.1}{PDFtex COLor MarK}% [\entrysep] -\entry{pdfcolparallel}{2007/09/09}{1.0}{Color stacks support for parallel}% +\entry{pdfcolparallel}{2007/12/12}{1.1}{Fixed parallel with color stacks support}% [\entrysep] \entry{pdfcolparcolumns}{2007/09/09}{1.1}{Color stacks support for parcolumns}% [\entrysep] @@ -263,7 +271,7 @@ [\entrysep] \entry{pdflscape}{2007/10/21}{0.9}{Landscape pages in PDF}% [\entrysep] -\entry{pdftexcmds}{2007/11/12}{0.2}{LuaTeX support for pdfTeX utility functions}% +\entry{pdftexcmds}{2007/12/12}{0.3}{LuaTeX support for pdfTeX utility functions}% [\entrysep] \entry{picture}{2007/04/11}{1.1}{Dimens for picture macros}% [\entrysep] @@ -651,6 +659,16 @@ based on macro \cs{languagename} or hyphenation patterns. \end{abstract} \tocinclude{iflang} +\newpage +\subsection{\pkgsectformat{ifluatex}} +\label{ifluatex} +\begin{abstract} +This package looks for \LuaTeX\ regardless of its mode +and provides the switch \cs{ifluatex}. +It works with \plainTeX\ or \LaTeX. +\end{abstract} +\tocinclude{ifluatex} + \newpage \subsection{\pkgsectformat{ifpdf}} \label{ifpdf} @@ -734,6 +752,34 @@ are required. \end{abstract} \tocinclude{listingsutf8} +\newpage +\subsection{\pkgsectformat{luacolor}} +\label{luacolor} +\begin{abstract} +Package \xpackage{luacolor} implements color support based +on \LuaTeX's node attributes. +\end{abstract} +\tocinclude{luacolor} + +\newpage +\subsection{\pkgsectformat{luatex}} +\label{luatex} +\begin{abstract} +This package manages the new and extended features and resources +that \LuaTeX\ provides. Examples are attributes and catcode +tables. +\end{abstract} +\tocinclude{luatex} + +\newpage +\subsection{\pkgsectformat{magicnum}} +\label{magicnum} +\begin{abstract} +This packages allows to access magic numbers by a hierarchical +name system. +\end{abstract} +\tocinclude{magicnum} + \newpage \subsection{\pkgsectformat{makerobust}} \label{makerobust} @@ -786,9 +832,9 @@ stack of \pdfTeX. \subsection{\pkgsectformat{pdfcolparallel}} \label{pdfcolparallel} \begin{abstract} -Since version 1.40 \pdfTeX\ supports several color stacks. -This package uses them to fix color problems in -package \xpackage{parallel}. +This packages fixes bugs in \xpackage{parallel} and +improves color support by using several color stacks +that are provided by \pdfTeX\ since version 1.40. \end{abstract} \tocinclude{pdfcolparallel} diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfcol.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfcol.dtx index 90ad5d5dd49..59bd8fc1ba3 100644 --- a/Master/texmf-dist/source/latex/oberdiek/pdfcol.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/pdfcol.dtx @@ -17,7 +17,7 @@ % This work consists of the main source file pdfcol.dtx % and the derived files % pdfcol.sty, pdfcol.pdf, pdfcol.ins, pdfcol.drv, pdfcol-test1.tex, -% pdfcol-test2.tex, pdfcol-test3.tex. +% pdfcol-test2.tex, pdfcol-test3.tex, pdfcol-test4.tex. % % Distribution: % CTAN:macros/latex/contrib/oberdiek/pdfcol.dtx @@ -55,6 +55,7 @@ % TDS:doc/latex/oberdiek/test/pdfcol-test1.tex % TDS:doc/latex/oberdiek/test/pdfcol-test2.tex % TDS:doc/latex/oberdiek/test/pdfcol-test3.tex +% TDS:doc/latex/oberdiek/test/pdfcol-test4.tex % TDS:source/latex/oberdiek/pdfcol.dtx % %<*ignore> @@ -70,7 +71,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: pdfcol 2007/09/09 v1.0 Maintaining additional color stacks for pdfTeX (HO)} +\Msg{* Package: pdfcol 2007/12/12 v1.2 Maintaining additional color stacks for pdfTeX (HO)} \Msg{************************************************************************} \keepsilent @@ -98,7 +99,7 @@ This Current Maintainer of this work is Heiko Oberdiek. This work consists of the main source file pdfcol.dtx and the derived files pdfcol.sty, pdfcol.pdf, pdfcol.ins, pdfcol.drv, pdfcol-test1.tex, - pdfcol-test2.tex, pdfcol-test3.tex. + pdfcol-test2.tex, pdfcol-test3.tex, pdfcol-test4.tex. \endpreamble \let\MetaPrefix\DoubleperCent @@ -112,6 +113,7 @@ and the derived files \file{pdfcol-test1.tex}{\from{pdfcol.dtx}{test1}}% \file{pdfcol-test2.tex}{\from{pdfcol.dtx}{test2}}% \file{pdfcol-test3.tex}{\from{pdfcol.dtx}{test3}}% + \file{pdfcol-test4.tex}{\from{pdfcol.dtx}{test4}}% } \obeyspaces @@ -141,7 +143,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{pdfcol.drv}% - [2007/09/09 v1.0 Maintaining additional color stacks for pdfTeX (HO)]% + [2007/12/12 v1.2 Maintaining additional color stacks for pdfTeX (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2007/11/11] \begin{document} @@ -150,7 +152,7 @@ and the derived files % % \fi % -% \CheckSum{589} +% \CheckSum{640} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -171,7 +173,7 @@ and the derived files % \GetFileInfo{pdfcol.drv} % % \title{The \xpackage{pdfcol} package} -% \date{2007/09/09 v1.0} +% \date{2007/12/12 v1.2} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -260,6 +262,11 @@ and the derived files % of package \xpackage{color} (or \xpackage{xcolor}) now uses the % new color stack with name \meta{name}. % +% \begin{declcs}{pdfcolSetCurrentColor} +% \end{declcs} +% Macro \cs{pdfcolSetCurrentColor} replaces the topmost +% entry of the stack by the current color (\cs{current@color}). +% % \begin{declcs}{pdfcolSetCurrent} \M{name} % \end{declcs} % Macro \cs{pdfcolSetCurrent} sets the color that is read in @@ -339,7 +346,7 @@ and the derived files \fi \expandafter\x\csname ver@pdfcol.sty\endcsname \ProvidesPackage{pdfcol}% - [2007/09/09 v1.0 Maintaining additional color stacks for pdfTeX (HO)] + [2007/12/12 v1.2 Maintaining additional color stacks for pdfTeX (HO)] % \end{macrocode} % % \subsection{Catcodes} @@ -401,12 +408,24 @@ and the derived files % \end{macrocode} % \end{macro} % +% \subsubsection{Check package \xpackage{luacolor}} +% +% \begin{macrocode} +\newif\ifPDFCOL@luacolor +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname ver@luacolor.sty\endcsname\relax + \PDFCOL@luacolorfalse +\else + \PDFCOL@luacolortrue +\fi +% \end{macrocode} +% % \subsubsection{Check PDF mode} % % \begin{macrocode} \PDFCOL@RequirePackage{infwarerr}[2007/09/09] \PDFCOL@RequirePackage{ifpdf}[2007/09/09] -\ifpdf +\ifcase\ifpdf\ifPDFCOL@luacolor 1\fi\else 1\fi0 % \def\PDFCOL@Message{% \@PackageWarningNoLine{pdfcol}% }% @@ -416,7 +435,12 @@ and the derived files \@PackageInfoNoLine{pdfcol}% }% \PDFCOL@Message{% - Interface disabled because of missing PDF mode of pdfTeX% + Interface disabled because of % + \ifPDFCOL@luacolor + package `luacolor'% + \else + missing PDF mode of pdfTeX% + \fi }% \fi % \end{macrocode} @@ -567,6 +591,14 @@ and the derived files % \end{macrocode} % \end{macro} % +% \begin{macro}{\pdfcolSetCurrentColor} +% \begin{macrocode} + \def\pdfcolSetCurrentColor{% + \pdfcolorstack\@pdfcolorstack set{\current@color}% + }% +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\pdfcolSetCurrent} % \begin{macrocode} \def\pdfcolSetCurrent#1{% @@ -650,6 +682,14 @@ and the derived files % \end{macrocode} % \end{macro} % +% \begin{macro}{\pdfcolSetCurrentColor} +% \begin{macrocode} + \def\pdfcolSetCurrentColor{% + \PDFCOL@Disabled + }% +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\pdfcolSetCurrent} % \begin{macrocode} \def\pdfcolSetCurrent#1{% @@ -729,6 +769,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input pdfcol.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -744,7 +787,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input pdfcol.sty\relax + \LoadCommand \RestoreCatcodes } \Test @@ -762,7 +805,7 @@ and the derived files \NeedsTeXFormat{LaTeX2e} \nofiles \documentclass{article} -\usepackage{pdfcol}[2007/09/09] +\usepackage{pdfcol}[2007/12/12] \usepackage{qstest} \IncludeTests{*} \LogTests{log}{*}{*} @@ -801,6 +844,22 @@ and the derived files % % \end{macrocode} % +% \subsection{Detection of package \xpackage{luacolor}} +% +% \begin{macrocode} +%<*test4> +\NeedsTeXFormat{LaTeX2e} +\documentclass{article} +\usepackage{luacolor} +\usepackage{pdfcol} +\makeatletter +\ifpdfcolAvailable + \@latex@error{Detection of package luacolor failed}% +\fi +\csname @@end\endcsname +% +% \end{macrocode} +% % \section{Installation} % % \subsection{Download} @@ -865,6 +924,7 @@ and the derived files % test/pdfcol-test1.tex & doc/latex/oberdiek/test/pdfcol-test1.tex\\ % test/pdfcol-test2.tex & doc/latex/oberdiek/test/pdfcol-test2.tex\\ % test/pdfcol-test3.tex & doc/latex/oberdiek/test/pdfcol-test3.tex\\ +% test/pdfcol-test4.tex & doc/latex/oberdiek/test/pdfcol-test4.tex\\ % pdfcol.dtx & source/latex/oberdiek/pdfcol.dtx\\ % \end{tabular}^^A % }^^A @@ -990,6 +1050,14 @@ and the derived files % \item % First version. % \end{Version} +% \begin{Version}{2007/12/09 v1.1} +% \item +% \cs{pdfcolSetCurrentColor} added. +% \end{Version} +% \begin{Version}{2007/12/12 v1.2} +% \item +% Detection for package \xpackage{luacolor} added. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfcolparallel.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfcolparallel.dtx index 25c6a72da3a..7d5897c6e09 100644 --- a/Master/texmf-dist/source/latex/oberdiek/pdfcolparallel.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/pdfcolparallel.dtx @@ -68,7 +68,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: pdfcolparallel 2007/09/09 v1.0 Color stacks support for parallel (HO)} +\Msg{* Package: pdfcolparallel 2007/12/12 v1.1 Fixed parallel with color stacks support (HO)} \Msg{************************************************************************} \keepsilent @@ -137,7 +137,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{pdfcolparallel.drv}% - [2007/09/09 v1.0 Color stacks support for parallel (HO)]% + [2007/12/12 v1.1 Fixed parallel with color stacks support (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2007/11/11] \begin{document} @@ -146,7 +146,7 @@ and the derived files % % \fi % -% \CheckSum{582} +% \CheckSum{714} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -167,15 +167,15 @@ and the derived files % \GetFileInfo{pdfcolparallel.drv} % % \title{The \xpackage{pdfcolparallel} package} -% \date{2007/09/09 v1.0} +% \date{2007/12/12 v1.1} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle % % \begin{abstract} -% Since version 1.40 \pdfTeX\ supports several color stacks. -% This package uses them to fix color problems in -% package \xpackage{parallel}. +% This packages fixes bugs in \xpackage{parallel} and +% improves color support by using several color stacks +% that are provided by \pdfTeX\ since version 1.40. % \end{abstract} % % \tableofcontents @@ -186,9 +186,10 @@ and the derived files % |\usepackage{pdfcolparallel}| % \end{quote} % The package \xpackage{pdfcolparallel} loads package \xpackage{parallel} -% \cite{parallel}. If color stacks are available then the -% macros of \xpackage{parallel} are patched to add support -% for color stacks. +% \cite{parallel} and redefines some macros to fix bugs. +% +% If color stacks are available then package \xpackage{parallel} +% is further patched to support them. % % \subsection{Future} % @@ -207,12 +208,10 @@ and the derived files %<*package> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pdfcolparallel}% - [2007/09/09 v1.0 Color stacks support for parallel (HO)]% + [2007/12/12 v1.1 Fixed parallel with color stacks support (HO)]% % \end{macrocode} % -% \subsection{Load packages} -% -% \subsubsection{Package \xpackage{parallel}} +% \subsection{Load and fix package \xpackage{parallel}} % % Package \xpackage{parallel} is loaded. Before options of package % \xpackage{pdfcolparallel} are passed to package \xpackage{parallel}. @@ -224,52 +223,52 @@ and the derived files \RequirePackage{parallel}[2003/04/13] % \end{macrocode} % -% \subsubsection{Package \xpackage{pdfcol}} -% -% \begin{macrocode} -\RequirePackage{pdfcol}[2007/09/09] -\ifpdfcolAvailable -\else - \PackageInfo{pdfcolparallel}{% - Loading aborted, because color stacks are not available% - }% - \expandafter\endinput -\fi -% \end{macrocode} -% -% \subsubsection{Package \xpackage{infwarerr}} -% % \begin{macrocode} \RequirePackage{infwarerr}[2007/09/09] % \end{macrocode} % -% \subsection{Color stack macros} -% +% \begin{macro}{\pcp@ColorPatch} % \begin{macrocode} -\pdfcolInitStack{pcp@Left} -\pdfcolInitStack{pcp@Right} -% \end{macrocode} -% \begin{macro}{\pcp@SwitchStack} -% \begin{macrocode} -\def\pcp@SwitchStack#1{% - \pdfcolSwitchStack{pcp@#1}% -} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname currentgrouplevel\endcsname\relax + \def\pcp@ColorPatch{}% +\else + \def\pcp@ColorPatch{% + \@ifundefined{set@color}{% + \gdef\pcp@ColorPatch{}% + }{% + \gdef\pcp@ColorPatch{% + \gdef\pcp@ColorResets{}% + \bgroup + \aftergroup\pcp@ColorResets + \aftergroup\egroup + \let\pcp@OrgSetColor\set@color + \let\set@color\pcp@SetColor + \edef\pcp@GroupLevel{\the\currentgrouplevel}% + }% + }% + \pcp@ColorPatch + }% % \end{macrocode} % \end{macro} -% \begin{macro}{\pcp@SetCurrent} +% \begin{macro}{\pcp@SetColor} % \begin{macrocode} -\def\pcp@SetCurrent#1{% - \ifx\\#1\\% - \pdfcolSetCurrent{}% - \else - \pdfcolSetCurrent{pcp@#1}% - \fi -} + \def\pcp@SetColor{% + \ifnum\pcp@GroupLevel=\currentgrouplevel + \let\pcp@OrgAfterGroup\aftergroup + \def\aftergroup{% + \g@addto@macro\pcp@ColorResets + }% + \pcp@OrgSetColor + \let\aftergroup\pcp@OrgAfterGroup + \else + \pcp@OrgSetColor + \fi + }% +\fi % \end{macrocode} % \end{macro} % -% \subsection{Redefinitions} -% % \begin{macro}{\pcp@CmdCheckRedef} % \begin{macrocode} \def\pcp@CmdCheckRedef#1{% @@ -296,6 +295,13 @@ and the derived files % \end{macrocode} % \end{macro} % +% \begin{macrocode} +\def\pcp@SwitchStack#1#2{} +% \end{macrocode} +% \begin{macrocode} +\def\pcp@SetCurrent#1{} +% \end{macrocode} +% % \begin{macro}{\ParallelLText} % \begin{macrocode} \pcp@CmdCheckRedef\ParallelLText{% @@ -314,14 +320,17 @@ and the derived files }{% \everypar{}% \@restorepar + \@nobreakfalse \begingroup \hbadness=3000 % \let\footnote=\ParallelLFootnote \ParallelWhichBox=0 % \global\setbox\ParallelLBox=\vbox\bgroup \hsize=\ParallelLWidth - \pcp@SwitchStack{Left}% + \linewidth=\ParallelLWidth + \pcp@SwitchStack{Left}\ParallelLBox \aftergroup\ParallelAfterText + \pcp@ColorPatch \begingroup \afterassignment\ParallelCheckOpenBrace \let\x=% @@ -351,6 +360,7 @@ and the derived files }{% \everypar{}% \@restorepar + \@nobreakfalse \begingroup \hbadness=3000 % \ifnum\ParallelFNMode=\@ne @@ -361,8 +371,10 @@ and the derived files \ParallelWhichBox=\@ne \global\setbox\ParallelRBox=\vbox\bgroup \hsize=\ParallelRWidth - \pcp@SwitchStack{Right}% + \linewidth=\ParallelRWidth + \pcp@SwitchStack{Right}\ParallelRBox \aftergroup\ParallelAfterText + \pcp@ColorPatch \begingroup \afterassignment\ParallelCheckOpenBrace \let\x=% @@ -370,6 +382,204 @@ and the derived files % \end{macrocode} % \end{macro} % +% \begin{macro}{\ParallelParTwoPages} +% \begin{macrocode} +\pcp@CmdCheckRedef\ParallelParTwoPages{% + \ifnum\ParallelBoolVar=\@ne + \par + \begingroup + \global\ParallelWhichBox=\@ne + \newpage + \vbadness=10000 % + \vfuzz=3ex % + \splittopskip=\z@skip + \loop% + \ifnum\ParallelBoolVar=\@ne% + \ifnum\ParallelWhichBox=\@ne + \ifvoid\ParallelLBox + \mbox{} % + \newpage + \else + \global\ParallelWhichBox=\z@ + \fi + \else + \ifvoid\ParallelRBox + \mbox{} % + \newpage + \else + \global\ParallelWhichBox=\@ne + \fi + \fi + \ifnum\ParallelWhichBox=\z@ + \ifodd\thepage + \mbox{} % + \newpage + \fi + \hbox to\textwidth{% + \vbox{\vsplit\ParallelLBox to.98\textheight}% + }% + \else + \ifodd\thepage\relax + \else + \mbox{} % + \newpage + \fi + \hbox to\textwidth{% + \vbox{\vsplit\ParallelRBox to.98\textheight}% + }% + \fi + \vspace*{\fill}% + \newpage + \fi + \ifvoid\ParallelLBox + \ifvoid\ParallelRBox + \global\ParallelBoolVar=\z@ + \fi + \fi + \ifnum\ParallelBoolVar=\@ne + \repeat + \par + \endgroup + \fi +}{% +% \end{macrocode} +% Additional fixes: +% \begin{itemize} +% \item Unnecessary white space removed. +% \item |\ifodd\thepage| changed to |\ifodd\value{page}|. +% \end{itemize} +% \begin{macrocode} + \ifnum\ParallelBoolVar=\@ne + \par + \begingroup + \global\ParallelWhichBox=\@ne + \newpage + \vbadness=10000 % + \vfuzz=3ex % + \splittopskip=\z@skip + \loop% + \ifnum\ParallelBoolVar=\@ne% + \ifnum\ParallelWhichBox=\@ne + \ifvoid\ParallelLBox + \mbox{}% + \newpage + \else + \global\ParallelWhichBox=\z@ + \fi + \else + \ifvoid\ParallelRBox + \null + \newpage + \else + \global\ParallelWhichBox=\@ne + \fi + \fi + \ifnum\ParallelWhichBox=\z@ + \ifodd\value{page}% + \null + \newpage + \fi + \hbox to\textwidth{% + \pcp@SetCurrent{Left}% + \setbox\z@=\vsplit\ParallelLBox to.98\textheight + \vbox to.98\textheight{% + \@texttop + \unvbox\z@ + \@textbottom + }% + }% + \else + \ifodd\value{page}% + \else + \mbox{}% + \newpage + \fi + \hbox to\textwidth{% + \pcp@SetCurrent{Right}% + \setbox\z@=\vsplit\ParallelRBox to.98\textheight + \vbox to.98\textheight{% + \@texttop + \unvbox\z@ + \@textbottom + }% + }% + \fi + \vspace*{\fill}% + \newpage + \fi + \ifvoid\ParallelLBox + \ifvoid\ParallelRBox + \global\ParallelBoolVar=\z@ + \fi + \fi + \ifnum\ParallelBoolVar=\@ne + \repeat + \par + \endgroup + \pcp@SetCurrent{}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Color stack support} +% +% \begin{macrocode} +\RequirePackage{pdfcol}[2007/12/12] +\ifpdfcolAvailable +\else + \PackageInfo{pdfcolparallel}{% + Loading aborted, because color stacks are not available% + }% + \expandafter\endinput +\fi +% \end{macrocode} +% +% \begin{macrocode} +\pdfcolInitStack{pcp@Left} +\pdfcolInitStack{pcp@Right} +% \end{macrocode} +% \begin{macro}{\pcp@Box} +% \begin{macrocode} +\newbox\pcp@Box +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pcp@SwitchStack} +% \begin{macrocode} +\def\pcp@SwitchStack#1#2{% + \pdfcolSwitchStack{pcp@#1}% + \global\setbox\pcp@Box=\vbox to 0pt{% + \pdfcolSetCurrentColor + }% + \aftergroup\pcp@FixBox + \aftergroup#2% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pcp@FixBox} +% \begin{macrocode} +\def\pcp@FixBox#1{% + \global\setbox#1=\vbox{% + \unvbox\pcp@Box + \unvbox#1% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\pcp@SetCurrent} +% \begin{macrocode} +\def\pcp@SetCurrent#1{% + \ifx\\#1\\% + \pdfcolSetCurrent{}% + \else + \pdfcolSetCurrent{pcp@#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Redefinitions} +% % \begin{macro}{\ParallelParOnePage} % \begin{macrocode} \pcp@CmdCheckRedef\ParallelParOnePage{% @@ -497,136 +707,6 @@ and the derived files % \end{macrocode} % \end{macro} % -% \begin{macro}{\ParallelParTwoPages} -% \begin{macrocode} -\pcp@CmdCheckRedef\ParallelParTwoPages{% - \ifnum\ParallelBoolVar=\@ne - \par - \begingroup - \global\ParallelWhichBox=\@ne - \newpage - \vbadness=10000 % - \vfuzz=3ex % - \splittopskip=\z@skip - \loop% - \ifnum\ParallelBoolVar=\@ne% - \ifnum\ParallelWhichBox=\@ne - \ifvoid\ParallelLBox - \mbox{} % - \newpage - \else - \global\ParallelWhichBox=\z@ - \fi - \else - \ifvoid\ParallelRBox - \mbox{} % - \newpage - \else - \global\ParallelWhichBox=\@ne - \fi - \fi - \ifnum\ParallelWhichBox=\z@ - \ifodd\thepage - \mbox{} % - \newpage - \fi - \hbox to\textwidth{% - \vbox{\vsplit\ParallelLBox to.98\textheight}% - }% - \else - \ifodd\thepage\relax - \else - \mbox{} % - \newpage - \fi - \hbox to\textwidth{% - \vbox{\vsplit\ParallelRBox to.98\textheight}% - }% - \fi - \vspace*{\fill}% - \newpage - \fi - \ifvoid\ParallelLBox - \ifvoid\ParallelRBox - \global\ParallelBoolVar=\z@ - \fi - \fi - \ifnum\ParallelBoolVar=\@ne - \repeat - \par - \endgroup - \fi -}{% -% \end{macrocode} -% Additional fixes: -% \begin{itemize} -% \item Unnecessary white space removed. -% \item |\ifodd\thepage| changed to |\ifodd\value{page}|. -% \end{itemize} -% \begin{macrocode} - \ifnum\ParallelBoolVar=\@ne - \par - \begingroup - \global\ParallelWhichBox=\@ne - \newpage - \vbadness=10000 % - \vfuzz=3ex % - \splittopskip=\z@skip - \loop% - \ifnum\ParallelBoolVar=\@ne% - \ifnum\ParallelWhichBox=\@ne - \ifvoid\ParallelLBox - \mbox{}% - \newpage - \else - \global\ParallelWhichBox=\z@ - \fi - \else - \ifvoid\ParallelRBox - \mbox{}% - \newpage - \else - \global\ParallelWhichBox=\@ne - \fi - \fi - \ifnum\ParallelWhichBox=\z@ - \ifodd\value{page}% - \mbox{}% - \newpage - \fi - \hbox to\textwidth{% - \pcp@SetCurrent{Left}% - \vbox{\vsplit\ParallelLBox to.98\textheight}% - }% - \else - \ifodd\value{page}% - \else - \mbox{}% - \newpage - \fi - \hbox to\textwidth{% - \pcp@SetCurrent{Right}% - \vbox{\vsplit\ParallelRBox to.98\textheight}% - }% - \fi - \vspace*{\fill}% - \newpage - \fi - \ifvoid\ParallelLBox - \ifvoid\ParallelRBox - \global\ParallelBoolVar=\z@ - \fi - \fi - \ifnum\ParallelBoolVar=\@ne - \repeat - \par - \endgroup - \pcp@SetCurrent{}% - \fi -} -% \end{macrocode} -% \end{macro} -% % \begin{macrocode} % % \end{macrocode} @@ -646,7 +726,7 @@ and the derived files } \documentclass{article} \usepackage{xcolor} -\usepackage{pdfcolparallel}[2007/09/09] +\usepackage{pdfcolparallel}[2007/12/12] \begin{document} \color{green}% @@ -664,8 +744,37 @@ and the derived files Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% }% }% + \ParallelPar + \ParallelLText{% + Default % + \color{red}% + Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % + Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% + }% + \ParallelRText{% + Default % + \color{blue}% + Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % + Ein Absatz, der sich ueber zwei Zeilen erstrecken soll.% + }% + \ParallelPar + \ParallelLText{% + \begin{enumerate}% + \item left text, left text, left text, left text, % + left text, left text, left text, left text,% + \item left text, left text, left text, left text, % + left text, left text, left text, left text.% + \end{enumerate}% + }% + \ParallelRText{% + \begin{enumerate}% + \item right text, right text, right text, right text, % + right text, right text, right text, right text.% + \item right text, right text, right text, right text, % + right text, right text, right text, right text.% + \end{enumerate}% + }% \end{Parallel}% - Green% \begin{Parallel}[p]{\textwidth}{\textwidth}% \ParallelLText{% \textcolor{red}{% @@ -673,6 +782,8 @@ and the derived files Ein Absatz, der sich ueber zwei Zeilen erstrecken soll. % Foo bar bla bla bla.% }% + \par + Und noch ein Absatz.% }% \ParallelRText{% \textcolor{blue}{% @@ -682,6 +793,14 @@ and the derived files }% }% \end{Parallel}% + \begin{Parallel}[p]{\textwidth}{\textwidth}% + \ParallelLText{% + \rule{1pt}{.98\textheight}\Huge g% + }% + \ParallelRText{% + \rule{1pt}{.98\textheight}y% + }% + \end{Parallel}% Green% \end{document} % @@ -888,6 +1007,18 @@ and the derived files % \item % First version. % \end{Version} +% \begin{Version}{2007/12/12 v1.1} +% \item +% Adds patch for setting \cs{linewidth} to fix bug +% in package \xpackage{parallel}. +% \item +% Package \xpackage{parallel} is also fixed if color +% stacks are not available. +% \item +% Bug fix, switched stacks now initialized with current color. +% \item +% Fix for package \xpackage{parallel}: \cs{raggedbottom} is respected. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx index 7e44032655b..7f3d854f646 100644 --- a/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx @@ -158,7 +158,7 @@ and the derived files % % \fi % -% \CheckSum{1979} +% \CheckSum{1988} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -1261,6 +1261,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input pdfescape.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -1276,7 +1279,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input pdfescape.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/pdftexcmds.dtx b/Master/texmf-dist/source/latex/oberdiek/pdftexcmds.dtx index fef4d00deaa..35052537843 100644 --- a/Master/texmf-dist/source/latex/oberdiek/pdftexcmds.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/pdftexcmds.dtx @@ -16,7 +16,8 @@ % % This work consists of the main source file pdftexcmds.dtx % and the derived files -% pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv. +% pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv, +% oberdiek.pdftexcmds.lua, pdftexcmds.lua. % % Distribution: % CTAN:macros/latex/contrib/oberdiek/pdftexcmds.dtx @@ -50,6 +51,8 @@ % % Installation: % TDS:tex/generic/oberdiek/pdftexcmds.sty +% TDS:scripts/oberdiek/oberdiek.pdftexcmds.lua +% TDS:scripts/oberdiek/pdftexcmds.lua % TDS:doc/latex/oberdiek/pdftexcmds.pdf % TDS:source/latex/oberdiek/pdftexcmds.dtx % @@ -66,7 +69,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: pdftexcmds 2007/11/12 v0.2 LuaTeX support for pdfTeX utility functions (HO)} +\Msg{* Package: pdftexcmds 2007/12/12 v0.3 LuaTeX support for pdfTeX utility functions (HO)} \Msg{************************************************************************} \keepsilent @@ -93,7 +96,8 @@ This Current Maintainer of this work is Heiko Oberdiek. This work consists of the main source file pdftexcmds.dtx and the derived files - pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv. + pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv, + oberdiek.pdftexcmds.lua, pdftexcmds.lua. \endpreamble \let\MetaPrefix\DoubleperCent @@ -104,6 +108,17 @@ and the derived files \usedir{tex/generic/oberdiek}% \file{pdftexcmds.sty}{\from{pdftexcmds.dtx}{package}}% } +\def\MetaPrefix{-- } +\def\defaultpostamble{% + \MetaPrefix^^J% + \MetaPrefix\space End of File `\outFileName'.% +} +\def\currentpostamble{\defaultpostamble}% +\generate{% + \usedir{scripts/oberdiek}% + \file{oberdiek.pdftexcmds.lua}{\from{pdftexcmds.dtx}{lua}}% + \file{pdftexcmds.lua}{\from{pdftexcmds.dtx}{lua}}% +} \obeyspaces \Msg{************************************************************************} @@ -113,9 +128,9 @@ and the derived files \Msg{*} \Msg{* pdftexcmds.sty} \Msg{*} -\Msg{* And install the following script file:} +\Msg{* And install the following script files:} \Msg{*} -\Msg{* } +\Msg{* oberdiek.pdftexcmds.lua, pdftexcmds.lua} \Msg{*} \Msg{* To produce the documentation run the file `pdftexcmds.drv'} \Msg{* through LaTeX.} @@ -132,7 +147,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{pdftexcmds.drv}% - [2007/11/12 v0.2 LuaTeX support for pdfTeX utility functions (HO)]% + [2007/12/12 v0.3 LuaTeX support for pdfTeX utility functions (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2007/11/11] \usepackage{paralist} @@ -142,7 +157,7 @@ and the derived files % % \fi % -% \CheckSum{561} +% \CheckSum{552} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -163,7 +178,7 @@ and the derived files % \GetFileInfo{pdftexcmds.drv} % % \title{The \xpackage{pdftexcmds} package} -% \date{2007/11/12 v0.2} +% \date{2007/12/12 v0.3} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -397,7 +412,7 @@ and the derived files \fi \expandafter\x\csname ver@pdftexcmds.sty\endcsname \ProvidesPackage{pdftexcmds}% - [2007/11/12 v0.2 LuaTeX support for pdfTeX utility functions (HO)] + [2007/12/12 v0.3 LuaTeX support for pdfTeX utility functions (HO)] % \end{macrocode} % % \subsection{Catcodes} @@ -426,6 +441,7 @@ and the derived files }% \catcode#1 #2\relax } +\TMP@EnsureCode{10}{12}% ^^J \TMP@EnsureCode{33}{12}% ! \TMP@EnsureCode{34}{12}% " \TMP@EnsureCode{39}{12}% ' @@ -441,6 +457,7 @@ and the derived files \TMP@EnsureCode{60}{12}% < \TMP@EnsureCode{61}{12}% = \TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{94}{7}% ^ (superscript) \TMP@EnsureCode{95}{12}% _ (other) \TMP@EnsureCode{126}{12}% ~ (other) % \end{macrocode} @@ -518,13 +535,21 @@ and the derived files \fi % \end{macrocode} % -% \subsection{Lua functions} +% \subsection{Load module} % -% \begin{macro}{\pdftexcmds@luastate} % \begin{macrocode} -\chardef\pdftexcmds@luastate=0 % +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input luatex-loader.sty\relax +\else + \RequirePackage{luatex-loader}[2007/12/12]% +\fi +\directlua0{% + require("oberdiek.pdftexcmds")% +} % \end{macrocode} -% \end{macro} +% +% \subsection{Lua functions} % % \begin{macro}{\pdftexcmds@toks} % \begin{macrocode} @@ -537,309 +562,11 @@ and the derived files % \end{macrocode} % \end{macro} % -% \begin{macrocode} -\begingroup - \escapechar=92 % - \edef\\{\string\\}% - \catcode35=12 % # - \catcode37=12\relax - \directlua\pdftexcmds@luastate{ - pdftexcmds = {} - function pdftexcmds.strcmp(A, B) - if A == B then - tex.write("0") - elseif A < B then - tex.write("-1") - else - tex.write("1") - end - end - function pdftexcmds.utf8_to_byte(str) - local i = 0 - local n = string.len(str) - local t = {} - while i < n do - i = i + 1 - local a = string.byte(str, i) - if a < 128 then - table.insert(t, string.char(a)) - else - if a >= 192 and i < n then - i = i + 1 - local b = string.byte(str, i) - if b < 128 or b >= 192 then - i = i - 1 - elseif a == 194 then - table.insert(t, string.char(b)) - elseif a == 195 then - table.insert(t, string.char(b + 64)) - end - end - end - end - return table.concat(t) - end - function pdftexcmds.escapehex(str, mode) - if mode == "byte" then - str = pdftexcmds.utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - return string.format("%02X", string.byte(ch)) - end - ))) - end -% \end{macrocode} -% See procedure |unescapehex| in file \xfile{utils.c} of \pdfTeX. -% Caution: |tex.write| ignores leading spaces. -% \begin{macrocode} - function pdftexcmds.unescapehex(str, mode) - local a = 0 - local first = true - local result = {} - for i = 1, string.len(str), 1 do - local ch = string.byte(str, i) - if ch >= 48 and ch <= 57 then - ch = ch - 48 - elseif ch >= 65 and ch <= 70 then - ch = ch - 55 - elseif ch >= 97 and ch <= 102 then - ch = ch - 87 - else - ch = nil - end - if ch then - if first then - a = ch * 16 - first = false - else - table.insert(result, a + ch) - first = true - end - end - end - if not first then - table.insert(result, a) - end - if mode == "byte" then - local utf8 = {} - for i, a in ipairs(result) do - if a < 128 then - table.insert(utf8, a) - else - if a < 192 then - table.insert(utf8, 194) - a = a - 128 - else - table.insert(utf8, 195) - a = a - 192 - end - table.insert(utf8, a + 128) - end - end - result = utf8 - end - tex.settoks(pdftexcmds.toks, string.char(unpack(result))) - end -% \end{macrocode} -% See procedure |escapestring| in file \xfile{utils.c} of \pdfTeX. -% \begin{macrocode} - function pdftexcmds.escapestring(str, mode) - if mode == "byte" then - str = pdftexcmds.utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - local b = string.byte(ch) - if b < 33 or b > 126 then - return string.format("\\%.3o", b) - end - if b == 40 or b == 41 or b == 92 then - return "\\" .. ch - end -% \end{macrocode} -% Lua 5.1 returns the match in case of return value |nil|. -% \begin{macrocode} - return nil - end - ))) - end -% \end{macrocode} -% See procedure |escapename| in file \xfile{utils.c} of \pdfTeX. -% \begin{macrocode} - function pdftexcmds.escapename(str, mode) - if mode == "byte" then - str = pdftexcmds.utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - local b = string.byte(ch) - if b == 0 then -% \end{macrocode} -% In Lua 5.0 |nil| could be used for the empty string, -% But |nil| returns the match in Lua 5.1, thus we use -% the empty string explicitly. -% \begin{macrocode} - return "" - end - if b <= 32 or b >= 127 - or b == 35 or b == 37 or b == 40 or b == 41 - or b == 47 or b == 60 or b == 62 or b == 91 - or b == 93 or b == 123 or b == 125 then - return string.format("#%.2X", b) - else -% \end{macrocode} -% Lua 5.1 returns the match in case of return value |nil|. -% \begin{macrocode} - return nil - end - end - ))) - end - function pdftexcmds.filesize(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local size = lfs.attributes(foundfile, "size") - if size then - tex.write(size) - end - end - end -% \end{macrocode} -% See procedure |makepdftime| in file \xfile{utils.c} of \pdfTeX. -% \begin{macrocode} - function pdftexcmds.filemoddate(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local date = lfs.attributes(foundfile, "modification") - if date then - local d = os.date("*t", date) - if d.sec >= 60 then - d.sec = 59 - end - local u = os.date("!*t", date) - local off = 60 * (d.hour - u.hour) + d.min - u.min - if d.year ~= u.year then - if d.year > u.year then - off = off + 1440 - else - off = off - 1440 - end - elseif d.yday ~= u.yday then - if d.yday > u.yday then - off = off + 1440 - else - off = off - 1440 - end - end - local timezone - if off == 0 then - timezone = "Z" - else - local hours = math.floor(off / 60) - local mins = math.abs(off - hours * 60) - timezone = string.format("%+03d'%02d'", hours, mins) - end - tex.write(string.format("D:%04d%02d%02d%02d%02d%02d%s", - d.year, d.month, d.day, d.hour, d.min, d.sec, timezone)) - end - end - end - function pdftexcmds.filedump(offset, length, filename) - length = tonumber(length) - if length and length > 0 then - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - offset = tonumber(offset) - if not offset then - offset = 0 - end - local filehandle = io.open(foundfile, "r") - if filehandle then - if offset > 0 then - filehandle:seek("set", offset) - end - local dump = filehandle:read(length) - pdftexcmds.escapehex(dump) - end - end - end - end - function pdftexcmds.mdfivesum(str, mode) - if mode == "byte" then - str = pdftexcmds.utf8_to_byte(str) - end - pdftexcmds.escapehex(md5.sum(str)) - end - function pdftexcmds.filemdfivesum(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local filehandle = io.open(foundfile, "r") - if filehandle then - local contents = filehandle:read("*a") - pdftexcmds.escapehex(md5.sum(contents)) - end - end - end - function pdftexcmds.shellescape() - if os.execute then - tex.write("1") - else - tex.write("0") - end - end - function pdftexcmds.system(cmdline) - pdftexcmds.systemexitstatus = nil - texio.write_nl("log", "system(" .. cmdline .. ") ") - if os.execute then - texio.write("log", "executed.") - pdftexcmds.systemexitstatus = os.execute(cmdline) - else - texio.write("log", "disabled.") - end - end - function pdftexcmds.lastsystemstatus() - local result = tonumber(pdftexcmds.systemexitstatus) - if result then - local x = math.floor(result / 256) - tex.write(result - 256 * math.floor(result / 256)) - end - end - function pdftexcmds.lastsystemexit() - local result = tonumber(pdftexcmds.systemexitstatus) - if result then - tex.write(math.floor(result / 256)) - end - end - function pdftexcmds.pipe(cmdline) - local result - pdftexcmds.systemexitstatus = nil - texio.write_nl("log", "pipe(" .. cmdline ..") ") - if io.popen then - texio.write("log", "executed.") - local handle = io.popen(cmdline, "r") - if handle then - result = handle:read("*a") - handle:close() - end - else - texio.write("log", "disabled.") - end - if result then - tex.settoks(pdftexcmds.toks, result) - else - tex.settoks(pdftexcmds.toks, "") - end - end - } -\endgroup -% \end{macrocode} -% % \begin{macro}{\pdf@strcmp} % \begin{macrocode} \long\def\pdf@strcmp#1#2{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.strcmp("\luaescapestring{#1}",% + \directlua0{% + oberdiek.pdftexcmds.strcmp("\luaescapestring{#1}",% "\luaescapestring{#2}")% }% }% @@ -848,8 +575,8 @@ and the derived files % \begin{macro}{\pdf@escapehex} % \begin{macrocode} \long\def\pdf@escapehex#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapehex("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.escapehex("\luaescapestring{#1}", "byte")% }% }% % \end{macrocode} @@ -857,8 +584,8 @@ and the derived files % \begin{macro}{\pdf@escapehexnative} % \begin{macrocode} \long\def\pdf@escapehexnative#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapehex("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.escapehex("\luaescapestring{#1}")% }% }% % \end{macrocode} @@ -867,9 +594,9 @@ and the derived files % \begin{macrocode} \def\pdf@unescapehex#1{% \the\expandafter\pdftexcmds@toks - \directlua\pdftexcmds@luastate{% - pdftexcmds.toks="pdftexcmds@toks"% - pdftexcmds.unescapehex("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.toks="pdftexcmds@toks"% + oberdiek.pdftexcmds.unescapehex("\luaescapestring{#1}", "byte")% }% }% % \end{macrocode} @@ -878,9 +605,9 @@ and the derived files % \begin{macrocode} \def\pdf@unescapehexnative#1{% \the\expandafter\pdftexcmds@toks - \directlua\pdftexcmds@luastate{% - pdftexcmds.toks="pdftexcmds@toks"% - pdftexcmds.unescapehex("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.toks="pdftexcmds@toks"% + oberdiek.pdftexcmds.unescapehex("\luaescapestring{#1}")% }% }% % \end{macrocode} @@ -888,8 +615,8 @@ and the derived files % \begin{macro}{\pdf@escapestring} % \begin{macrocode} \long\def\pdf@escapestring#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapestring("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.escapestring("\luaescapestring{#1}", "byte")% }% } % \end{macrocode} @@ -897,8 +624,8 @@ and the derived files % \begin{macro}{\pdf@escapename} % \begin{macrocode} \long\def\pdf@escapename#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapename("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.escapename("\luaescapestring{#1}", "byte")% }% } % \end{macrocode} @@ -906,8 +633,8 @@ and the derived files % \begin{macro}{\pdf@escapenamenative} % \begin{macrocode} \long\def\pdf@escapenamenative#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapename("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.escapename("\luaescapestring{#1}")% }% } % \end{macrocode} @@ -915,8 +642,8 @@ and the derived files % \begin{macro}{\pdf@filesize} % \begin{macrocode} \def\pdf@filesize#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.filesize("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.filesize("\luaescapestring{#1}")% }% } % \end{macrocode} @@ -924,8 +651,8 @@ and the derived files % \begin{macro}{\pdf@filemoddate} % \begin{macrocode} \def\pdf@filemoddate#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.filemoddate("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.filemoddate("\luaescapestring{#1}")% }% } % \end{macrocode} @@ -933,8 +660,8 @@ and the derived files % \begin{macro}{\pdf@filedump} % \begin{macrocode} \def\pdf@filedump#1#2#3{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.filedump("\luaescapestring{\number#1}",% + \directlua0{% + oberdiek.pdftexcmds.filedump("\luaescapestring{\number#1}",% "\luaescapestring{\number#2}",% "\luaescapestring{#3}")% }% @@ -944,8 +671,8 @@ and the derived files % \begin{macro}{\pdf@mdfivesum} % \begin{macrocode} \long\def\pdf@mdfivesum#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.mdfivesum("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.mdfivesum("\luaescapestring{#1}", "byte")% }% }% % \end{macrocode} @@ -953,8 +680,8 @@ and the derived files % \begin{macro}{\pdf@mdfivesumnative} % \begin{macrocode} \long\def\pdf@mdfivesumnative#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.mdfivesum("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.mdfivesum("\luaescapestring{#1}")% }% }% % \end{macrocode} @@ -962,8 +689,8 @@ and the derived files % \begin{macro}{\pdf@filemdfivesum} % \begin{macrocode} \def\pdf@filemdfivesum#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.filemdfivesum("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.filemdfivesum("\luaescapestring{#1}")% }% }% % \end{macrocode} @@ -972,8 +699,8 @@ and the derived files % \begin{macro}{\pdf@shellescape} % \begin{macrocode} \def\pdf@shellescape{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.shellescape()% + \directlua0{% + oberdiek.pdftexcmds.shellescape()% }% } % \end{macrocode} @@ -982,8 +709,8 @@ and the derived files % \begin{macro}{\pdf@system} % \begin{macrocode} \def\pdf@system#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.system("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.system("\luaescapestring{#1}")% }% } % \end{macrocode} @@ -992,8 +719,8 @@ and the derived files % \begin{macro}{\pdf@lastsystemstatus} % \begin{macrocode} \def\pdf@lastsystemstatus{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.lastsystemstatus()% + \directlua0{% + oberdiek.pdftexcmds.lastsystemstatus()% }% } % \end{macrocode} @@ -1001,8 +728,8 @@ and the derived files % \begin{macro}{\pdf@lastsystemexit} % \begin{macrocode} \def\pdf@lastsystemexit{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.lastsystemexit()% + \directlua0{% + oberdiek.pdftexcmds.lastsystemexit()% }% } % \end{macrocode} @@ -1012,7 +739,7 @@ and the derived files % Check availability of |io.popen| first. % \begin{macrocode} \ifnum0% - \directlua\pdftexcmds@luastate{% + \directlua0{% if io.popen then % tex.write("1")% end% @@ -1020,9 +747,9 @@ and the derived files =1 % \def\pdf@pipe#1{% \the\expandafter\pdftexcmds@toks - \directlua\pdftexcmds@luastate{% - pdftexcmds.toks="pdftexcmds@toks"% - pdftexcmds.pipe("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.toks="pdftexcmds@toks"% + oberdiek.pdftexcmds.pipe("\luaescapestring{#1}")% }% }% \fi @@ -1034,6 +761,306 @@ and the derived files % % \end{macrocode} % +% \subsection{Lua module} +% +% \begin{macrocode} +%<*lua> +% \end{macrocode} +% +% \begin{macrocode} +module("oberdiek.pdftexcmds", package.seeall) +local systemexitstatus +function strcmp(A, B) + if A == B then + tex.write("0") + elseif A < B then + tex.write("-1") + else + tex.write("1") + end +end +local function utf8_to_byte(str) + local i = 0 + local n = string.len(str) + local t = {} + while i < n do + i = i + 1 + local a = string.byte(str, i) + if a < 128 then + table.insert(t, string.char(a)) + else + if a >= 192 and i < n then + i = i + 1 + local b = string.byte(str, i) + if b < 128 or b >= 192 then + i = i - 1 + elseif a == 194 then + table.insert(t, string.char(b)) + elseif a == 195 then + table.insert(t, string.char(b + 64)) + end + end + end + end + return table.concat(t) +end +function escapehex(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + return string.format("%02X", string.byte(ch)) + end + ))) +end +% \end{macrocode} +% See procedure |unescapehex| in file \xfile{utils.c} of \pdfTeX. +% Caution: |tex.write| ignores leading spaces. +% \begin{macrocode} +function unescapehex(str, mode) + local a = 0 + local first = true + local result = {} + for i = 1, string.len(str), 1 do + local ch = string.byte(str, i) + if ch >= 48 and ch <= 57 then + ch = ch - 48 + elseif ch >= 65 and ch <= 70 then + ch = ch - 55 + elseif ch >= 97 and ch <= 102 then + ch = ch - 87 + else + ch = nil + end + if ch then + if first then + a = ch * 16 + first = false + else + table.insert(result, a + ch) + first = true + end + end + end + if not first then + table.insert(result, a) + end + if mode == "byte" then + local utf8 = {} + for i, a in ipairs(result) do + if a < 128 then + table.insert(utf8, a) + else + if a < 192 then + table.insert(utf8, 194) + a = a - 128 + else + table.insert(utf8, 195) + a = a - 192 + end + table.insert(utf8, a + 128) + end + end + result = utf8 + end + tex.settoks(toks, string.char(unpack(result))) +end +% \end{macrocode} +% See procedure |escapestring| in file \xfile{utils.c} of \pdfTeX. +% \begin{macrocode} +function escapestring(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + local b = string.byte(ch) + if b < 33 or b > 126 then + return string.format("\\%.3o", b) + end + if b == 40 or b == 41 or b == 92 then + return "\\" .. ch + end +% \end{macrocode} +% Lua 5.1 returns the match in case of return value |nil|. +% \begin{macrocode} + return nil + end + ))) +end +% \end{macrocode} +% See procedure |escapename| in file \xfile{utils.c} of \pdfTeX. +% \begin{macrocode} +function escapename(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + tex.write((string.gsub(str, ".", + function (ch) + local b = string.byte(ch) + if b == 0 then +% \end{macrocode} +% In Lua 5.0 |nil| could be used for the empty string, +% But |nil| returns the match in Lua 5.1, thus we use +% the empty string explicitly. +% \begin{macrocode} + return "" + end + if b <= 32 or b >= 127 + or b == 35 or b == 37 or b == 40 or b == 41 + or b == 47 or b == 60 or b == 62 or b == 91 + or b == 93 or b == 123 or b == 125 then + return string.format("#%.2X", b) + else +% \end{macrocode} +% Lua 5.1 returns the match in case of return value |nil|. +% \begin{macrocode} + return nil + end + end + ))) +end +function filesize(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local size = lfs.attributes(foundfile, "size") + if size then + tex.write(size) + end + end +end +% \end{macrocode} +% See procedure |makepdftime| in file \xfile{utils.c} of \pdfTeX. +% \begin{macrocode} +function filemoddate(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local date = lfs.attributes(foundfile, "modification") + if date then + local d = os.date("*t", date) + if d.sec >= 60 then + d.sec = 59 + end + local u = os.date("!*t", date) + local off = 60 * (d.hour - u.hour) + d.min - u.min + if d.year ~= u.year then + if d.year > u.year then + off = off + 1440 + else + off = off - 1440 + end + elseif d.yday ~= u.yday then + if d.yday > u.yday then + off = off + 1440 + else + off = off - 1440 + end + end + local timezone + if off == 0 then + timezone = "Z" + else + local hours = math.floor(off / 60) + local mins = math.abs(off - hours * 60) + timezone = string.format("%+03d'%02d'", hours, mins) + end + tex.write(string.format("D:%04d%02d%02d%02d%02d%02d%s", + d.year, d.month, d.day, d.hour, d.min, d.sec, timezone)) + end + end +end +function filedump(offset, length, filename) + length = tonumber(length) + if length and length > 0 then + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + offset = tonumber(offset) + if not offset then + offset = 0 + end + local filehandle = io.open(foundfile, "r") + if filehandle then + if offset > 0 then + filehandle:seek("set", offset) + end + local dump = filehandle:read(length) + escapehex(dump) + end + end + end +end +function mdfivesum(str, mode) + if mode == "byte" then + str = utf8_to_byte(str) + end + escapehex(md5.sum(str)) +end +function filemdfivesum(filename) + local foundfile = kpse.find_file(filename, "tex", true) + if foundfile then + local filehandle = io.open(foundfile, "r") + if filehandle then + local contents = filehandle:read("*a") + escapehex(md5.sum(contents)) + end + end +end +function shellescape() + if os.execute then + tex.write("1") + else + tex.write("0") + end +end +function system(cmdline) + systemexitstatus = nil + texio.write_nl("log", "system(" .. cmdline .. ") ") + if os.execute then + texio.write("log", "executed.") + systemexitstatus = os.execute(cmdline) + else + texio.write("log", "disabled.") + end +end +function lastsystemstatus() + local result = tonumber(systemexitstatus) + if result then + local x = math.floor(result / 256) + tex.write(result - 256 * math.floor(result / 256)) + end +end +function lastsystemexit() + local result = tonumber(systemexitstatus) + if result then + tex.write(math.floor(result / 256)) + end +end +function pipe(cmdline) + local result + systemexitstatus = nil + texio.write_nl("log", "pipe(" .. cmdline ..") ") + if io.popen then + texio.write("log", "executed.") + local handle = io.popen(cmdline, "r") + if handle then + result = handle:read("*a") + handle:close() + end + else + texio.write("log", "disabled.") + end + if result then + tex.settoks(toks, result) + else + tex.settoks(toks, "") + end +end +% \end{macrocode} +% \begin{macrocode} +% +% \end{macrocode} +% % \section{Test} % % \subsection{Catcode checks for loading} @@ -1094,6 +1121,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input pdftexcmds.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -1109,7 +1139,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input pdftexcmds.sty\relax + \LoadCommand \RestoreCatcodes } \Test @@ -1180,6 +1210,8 @@ and the derived files % \def\t{^^A % \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} % pdftexcmds.sty & tex/generic/oberdiek/pdftexcmds.sty\\ +% oberdiek.pdftexcmds.lua & scripts/oberdiek/oberdiek.pdftexcmds.lua\\ +% pdftexcmds.lua & scripts/oberdiek/pdftexcmds.lua\\ % pdftexcmds.pdf & doc/latex/oberdiek/pdftexcmds.pdf\\ % pdftexcmds.dtx & source/latex/oberdiek/pdftexcmds.dtx\\ % \end{tabular}^^A @@ -1310,6 +1342,10 @@ and the derived files % \item % Short description fixed. % \end{Version} +% \begin{Version}{2007/12/12 v0.3} +% \item +% Organization of Lua code as module. +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx b/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx index 8ad65cec1fe..c8247c8524f 100644 --- a/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx @@ -155,7 +155,7 @@ and the derived files % % \fi % -% \CheckSum{551} +% \CheckSum{560} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -802,6 +802,9 @@ E \egroup \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input setouterhbox.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -817,7 +820,7 @@ E \egroup \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input setouterhbox.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/soulutf8.dtx b/Master/texmf-dist/source/latex/oberdiek/soulutf8.dtx index 5df48d67b60..be6fb6f94b3 100644 --- a/Master/texmf-dist/source/latex/oberdiek/soulutf8.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/soulutf8.dtx @@ -156,7 +156,7 @@ and the derived files % % \fi % -% \CheckSum{1911} +% \CheckSum{1920} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -1140,6 +1140,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input soulutf8.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -1155,7 +1158,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input soulutf8.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/telprint.dtx b/Master/texmf-dist/source/latex/oberdiek/telprint.dtx index 3c2bdf0c2bd..212b64540e2 100644 --- a/Master/texmf-dist/source/latex/oberdiek/telprint.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/telprint.dtx @@ -149,7 +149,7 @@ and the derived files % % \fi % -% \CheckSum{512} +% \CheckSum{521} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -642,6 +642,9 @@ and the derived files \advance\count@ 1 % \repeat } +\expandafter\ifx\csname LoadCommand\endcsname\relax + \def\LoadCommand{\input telprint.sty\relax}% +\fi \def\Test{% \RangeCatcodeInvalid{0}{47}% \RangeCatcodeInvalid{58}{64}% @@ -657,7 +660,7 @@ and the derived files \catcode`\%=14 % \catcode`\ =10 % \catcode13=5 % - \input telprint.sty\relax + \LoadCommand \RestoreCatcodes } \Test diff --git a/Master/texmf-dist/source/latex/oberdiek/zref.dtx b/Master/texmf-dist/source/latex/oberdiek/zref.dtx index 075aa53caa5..4b3aed6c9fa 100644 --- a/Master/texmf-dist/source/latex/oberdiek/zref.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/zref.dtx @@ -1320,7 +1320,7 @@ the height difference of the two baselines is % \end{macrocode} % % \begin{macrocode} -\RequirePackage{etexcmds} +\RequirePackage{etexcmds}[2007/09/09] \ifetex@unexpanded \else \ZREF@ErrorNoLine{% diff --git a/Master/texmf-dist/tex/generic/oberdiek/etexcmds.sty b/Master/texmf-dist/tex/generic/oberdiek/etexcmds.sty index 0389fbc2ccb..b8c5d1f6c07 100644 --- a/Master/texmf-dist/tex/generic/oberdiek/etexcmds.sty +++ b/Master/texmf-dist/tex/generic/oberdiek/etexcmds.sty @@ -86,7 +86,7 @@ \fi \expandafter\x\csname ver@etexcmds.sty\endcsname \ProvidesPackage{etexcmds}% - [2007/09/09 v1.1 Prefix for e-TeX command names (HO)] + [2007/12/12 v1.2 Prefix for e-TeX command names (HO)] \begingroup \catcode123 1 % { \catcode125 2 % } @@ -115,6 +115,11 @@ \TMP@EnsureCode{46}{12}% . \TMP@EnsureCode{47}{12}% / \TMP@EnsureCode{61}{12}% = +\edef\etexcmds@AtEnd{% + \etexcmds@AtEnd + \escapechar\the\escapechar\relax +} +\escapechar=92 % backslash \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname RequirePackage\endcsname\relax \input infwarerr.sty\relax @@ -123,7 +128,6 @@ \fi \newif\ifetex@unexpanded \begingroup -\escapechar=92 % backslash \edef\x{\string\unexpanded}% \edef\y{\meaning\unexpanded}% \ifx\x\y @@ -154,6 +158,38 @@ \fi \fi \fi +\newif\ifetex@expanded +\begingroup +\edef\x{\string\expanded}% +\edef\y{\meaning\expanded}% +\ifx\x\y + \endgroup + \let\etex@expanded\expanded + \etex@expandedtrue +\else + \edef\y{\meaning\normalexpanded}% + \ifx\x\y + \endgroup + \let\etex@expanded\normalexpanded + \etex@expandedtrue + \else + \edef\y{\meaning\@@expanded}% + \ifx\y + \endgroup + \let\etex@expanded\@@expanded + \etex@expandedtrue + \else + \endgroup + \@PackageInfoNoLine{etexcmds}{% + Could not find \string\expanded.\MessageBreak + That can mean that you are not using pdfTeX 1.50 or\MessageBreak + that some package has redefined \string\expanded.\MessageBreak + In the latter case, load this package earlier% + }% + \etex@expandedfalse + \fi + \fi +\fi \etexcmds@AtEnd \endinput %% diff --git a/Master/texmf-dist/tex/generic/oberdiek/ifluatex.sty b/Master/texmf-dist/tex/generic/oberdiek/ifluatex.sty new file mode 100644 index 00000000000..7272b7eeaa7 --- /dev/null +++ b/Master/texmf-dist/tex/generic/oberdiek/ifluatex.sty @@ -0,0 +1,167 @@ +%% +%% This is file `ifluatex.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ifluatex.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file ifluatex.dtx +%% and the derived files +%% ifluatex.sty, ifluatex.pdf, ifluatex.ins, ifluatex.drv, +%% ifluatex-test1.tex. +%% +\begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@ifluatex.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \catcode35 6 % # + \catcode123 1 % { + \catcode125 2 % } + \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{ifluatex}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +\begingroup + \catcode35 6 % # + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode47 12 % / + \catcode58 12 % : + \catcode64 11 % @ + \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\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@ifluatex.sty\endcsname +\ProvidesPackage{ifluatex}% + [2007/12/12 v1.0 Provides the ifluatex switch (HO)] +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname ifluatex@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\ifluatex@AtEnd{% + \ifluatex@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{10}{12}% ^^J +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{58}{12}% : +\TMP@EnsureCode{61}{12}% = +\TMP@EnsureCode{94}{7}% ^ +\begingroup + \expandafter\ifx\csname ifluatex\endcsname\relax + \else + \edef\i/{\expandafter\string\csname ifluatex\endcsname}% + \expandafter\ifx\csname PackageError\endcsname\relax + \def\x#1#2{% + \edef\z{#2}% + \expandafter\errhelp\expandafter{\z}% + \errmessage{Package ifluatex Error: #1}% + }% + \def\y{^^J}% + \newlinechar=10 % + \else + \def\x#1#2{% + \PackageError{ifluatex}{#1}{#2}% + }% + \def\y{\MessageBreak}% + \fi + \x{Name clash, \i/ is already defined}{% + Incompatible versions of \i/ can cause problems,\y + therefore package loading is aborted.% + }% + \endgroup + \ifluatex@AtEnd + \expandafter\endinput + \fi +\endgroup +\newif\ifluatex +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname luatexversion\endcsname\relax +\else + \luatextrue +\fi +\begingroup + \expandafter\ifx\csname PackageInfo\endcsname\relax + \def\x#1#2{% + \immediate\write-1{Package #1 Info: #2.}% + }% + \else + \let\x\PackageInfo + \expandafter\let\csname on@line\endcsname\empty + \fi + \x{ifluatex}{LuaTeX \ifluatex\else not \fi detected}% +\endgroup +\ifluatex@AtEnd +\endinput +%% +%% End of file `ifluatex.sty'. diff --git a/Master/texmf-dist/tex/generic/oberdiek/ifpdf.sty b/Master/texmf-dist/tex/generic/oberdiek/ifpdf.sty index 1d1e3965afc..b94902260bc 100644 --- a/Master/texmf-dist/tex/generic/oberdiek/ifpdf.sty +++ b/Master/texmf-dist/tex/generic/oberdiek/ifpdf.sty @@ -85,7 +85,7 @@ \fi \expandafter\x\csname ver@ifpdf.sty\endcsname \ProvidesPackage{ifpdf}% - [2007/09/09 v1.5 Provides the ifpdf switch (HO)] + [2007/12/12 v1.6 Provides the ifpdf switch (HO)] \begingroup \catcode123 1 % { \catcode125 2 % } @@ -110,7 +110,6 @@ \catcode#1 #2\relax } \TMP@EnsureCode{10}{12}% ^^J -\TMP@EnsureCode{39}{12}% ' \TMP@EnsureCode{44}{12}% , \TMP@EnsureCode{45}{12}% - \TMP@EnsureCode{46}{12}% . @@ -119,7 +118,6 @@ \TMP@EnsureCode{60}{12}% < \TMP@EnsureCode{61}{12}% = \TMP@EnsureCode{94}{7}% ^ -\TMP@EnsureCode{96}{12}% ` \begingroup \expandafter\ifx\csname ifpdf\endcsname\relax \else diff --git a/Master/texmf-dist/tex/generic/oberdiek/luatex-loader.sty b/Master/texmf-dist/tex/generic/oberdiek/luatex-loader.sty new file mode 100644 index 00000000000..52d39a888aa --- /dev/null +++ b/Master/texmf-dist/tex/generic/oberdiek/luatex-loader.sty @@ -0,0 +1,118 @@ +%% +%% This is file `luatex-loader.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luatex.dtx (with options: `loader') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luatex.dtx +%% and the derived files +%% luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +%% luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +%% luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +%% +\begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@luatex-loader.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \catcode35 6 % # + \catcode123 1 % { + \catcode125 2 % } + \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{luatex-loader}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +\begingroup + \catcode35 6 % # + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode47 12 % / + \catcode58 12 % : + \catcode64 11 % @ + \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\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@luatex-loader.sty\endcsname +\ProvidesPackage{luatex-loader}% + [2007/12/12 v0.1 Lua module loader (HO)] + +\begingroup + \catcode10 12 % ^^J + \catcode34 12 % " + \catcode39 12 % ' + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode46 12 % . + \catcode61 12 % = + \catcode95 12 % _ (other!) + \catcode96 12 % ` + \endlinechar=10 % + \directlua0{% + do + local script = "oberdiek.luatex.lua" + local file = kpse.find_file(script, "texmfscripts") + if file then + texio.write_nl("(" .. file .. ")") + dofile(file) + else + error("File `" .. script .. "' not found") + end + end + }% +\endgroup% +\endinput +%% +%% End of file `luatex-loader.sty'. diff --git a/Master/texmf-dist/tex/generic/oberdiek/luatex.sty b/Master/texmf-dist/tex/generic/oberdiek/luatex.sty new file mode 100644 index 00000000000..649b32dcd1a --- /dev/null +++ b/Master/texmf-dist/tex/generic/oberdiek/luatex.sty @@ -0,0 +1,419 @@ +%% +%% This is file `luatex.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luatex.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luatex.dtx +%% and the derived files +%% luatex.sty, luatex.pdf, luatex.ins, luatex.drv, luatex-loader.sty, +%% luatex-test1.tex, luatex-test2.tex, luatex-test3.tex, +%% luatex-test4.tex, luatex-test5.tex, oberdiek.luatex.lua. +%% +\begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@luatex.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \catcode35 6 % # + \catcode123 1 % { + \catcode125 2 % } + \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{luatex}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +\begingroup + \catcode35 6 % # + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode47 12 % / + \catcode58 12 % : + \catcode64 11 % @ + \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\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@luatex.sty\endcsname +\ProvidesPackage{luatex}% + [2007/12/12 v0.1 LuaTeX basic definition package (HO)] +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname LuT@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\LuT@AtEnd{% + \LuT@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{10}{12}% ^^J +\TMP@EnsureCode{34}{12}% " +\TMP@EnsureCode{36}{3}% $ +\TMP@EnsureCode{39}{12}% ' +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{43}{12}% + +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{61}{12}% = +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{95}{12}% _ (other!) +\TMP@EnsureCode{96}{12}% ` +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input infwarerr.sty\relax + \input ifluatex.sty\relax +\else + \RequirePackage{infwarerr}[2007/09/09]% + \RequirePackage{ifluatex}[2007/12/12]% +\fi +\ifluatex +\else + \@PackageError{luatex}{% + This package may only be run using LuaTeX% + }\@ehc + \LuT@AtEnd + \expandafter\endinput +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax +\else + \RequirePackage{etex}[1998/03/26]% +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname et@xins\endcsname\relax + \@PackageWarningNoLine{luatex}{% + Support for eTeX is not loaded (etex.src)% + }% +\else + \def\LuT@temp#1{% + \ifnum\count27#1=32768 % + \count27#1=65536 % + \fi + }% + \LuT@temp0% + \LuT@temp1% + \LuT@temp2% + \LuT@temp3% + \LuT@temp4% + \LuT@temp5% + \LuT@temp6% + \let\newcount\globcount + \let\newdimen\globdimen + \let\newskip\globskip + \let\newbox\globbox +\fi +\expandafter\ifx\csname @empty\endcsname\relax + \def\@empty{}% +\fi +\expandafter\ifx\csname @gobble\endcsname\relax + \long\def\@gobble#1{}% +\fi +\expandafter\ifx\csname @firstofone\endcsname\relax + \long\def\@firstofone#1{#1}% +\fi +\expandafter\ifx\csname @firstoftwo\endcsname\relax + \long\def\@firstoftwo#1#2{#1}% +\fi +\expandafter\ifx\csname @car\endcsname\relax + \def\@car#1#2\@nil{#1}% +\fi +\expandafter\ifx\csname @cdr\endcsname\relax + \def\@cdr#1#2\@nil{#2}% +\fi +\expandafter\ifx\csname @ifstar\endcsname\relax + \def\@ifstar#1{% + \@ifnextchar*{\@firstoftwo{#1}}% + }% + \long\def\@ifnextchar#1#2#3{% + \let\reserved@d=#1% + \def\reserved@a{#2}% + \def\reserved@b{#3}% + \futurelet\@let@token\@ifnch + }% + \def\@ifnch{% + \ifx\@let@token\@sptoken + \let\reserved@c\@xifnch + \else + \ifx\@let@token\reserved@d + \let\reserved@c\reserved@a + \else + \let\reserved@c\reserved@b + \fi + \fi + \reserved@c + }% + \let\LuT@temp\:% + \def\:{\let\@sptoken= }% + \: % explicit space + \def\:{\@xifnch}% + \expandafter\def\: {% + \futurelet\@let@token\@ifnch + }% + \let\:\LuT@temp +\fi +\expandafter\ifx\csname @tempcnta\endcsname\relax + \csname newcount\endcsname\@tempcnta +\fi +\expandafter\ifx\csname @tempcntb\endcsname\relax + \csname newcount\endcsname\@tempcntb +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname newcommand\endcsname\relax + \def\LuT@newcommand#1[#2]#3{% + \ifx#1\@undefined + \let#1\relax + \else + \ifx#1\relax + \else + \@PackageError{luatex}{% + \string#1 is already defined.\MessageBreak + Redefinition is skipped% + }\@ehc + \fi + \fi + \ifx#1\relax + \ifcase#2 % + \def#1{#3}% + \or + \def#1##1{#3}% + \or + \def#1##1##2{#3}% + \or + \def#1##1##2##3{#3}% + \or + \@INTERNAL@ERROR + \fi + \fi + }% +\else + \def\LuT@newcommand{\newcommand*}% +\fi +\newcount\LuT@AllocLuaState +\LuT@AllocLuaState=\z@ +\LuT@newcommand\newluastate[1]{% + \ifnum\LuT@AllocLuaState<65535 % + \global\advance\LuT@AllocLuaState\@ne + \allocationnumber\LuT@AllocLuaState + \global\chardef#1=\allocationnumber + \wlog{\string#1=\string\luastate\the\allocationnumber}% + \else + \errmessage{No room for a new \string\luastate}% + \fi +} +\newcount\LuT@AllocAttribute +\LuT@AllocAttribute=\m@ne +\LuT@newcommand\newattribute[1]{% + \ifnum\LuT@AllocAttribute<65535 % + \global\advance\LuT@AllocAttribute\@ne + \allocationnumber\LuT@AllocAttribute + \global\attributedef#1=\allocationnumber + \unsetattribute{#1}% + \wlog{\string#1=\string\attribute\the\allocationnumber}% + \else + \errmessage{No room for a new \string\attribute}% + \fi +} +\LuT@newcommand\setattribute[2]{% + #1=\numexpr#2\relax +} +\LuT@newcommand\unsetattribute[1]{% + #1=\m@ne +} +\newcount\LuT@AllocCatcodeTable +\LuT@AllocCatcodeTable=\m@ne +\newcount\CatcodeTableStack +\CatcodeTableStack=\z@ +\LuT@newcommand\newcatcodetable[1]{% + \ifnum\LuT@AllocCatcodeTable<1114110 % 0x10FFFF is maximal \chardef + % or < 268435455 % 2^28 - 1 + \global\advance\LuT@AllocCatcodeTable by\tw@ + \allocationnumber=\LuT@AllocCatcodeTable + \global\chardef#1=\allocationnumber + \wlog{% + \string#1=\string\catcodetable\the\allocationnumber + }% + \else + \errmessage{No room for a new \string\catcodetable}% + \fi +}% +\LuT@newcommand\IncCatcodeTableStack[0]{% + \ifnum\CatcodeTableStack<268435454 % + \global\advance\CatcodeTableStack by\tw@ + \else + \@PackageError{luatex}{% + Catcode table stack overflow% + }\@ehd + \fi +} +\LuT@newcommand\DecCatcodeTableStack[0]{% + \ifnum\CatcodeTableStack>\z@ + \global\advance\CatcodeTableStack by-2 % + \else + \@PackageError{luatex}{% + Catcode table stack is empty% + }\@ehd + \fi +} +\LuT@newcommand\SetCatcodeRange[3]{% + \edef\LuT@temp{% + \noexpand\@tempcnta=\the\@tempcnta + \noexpand\@tempcntb=\the\@tempcntb + \noexpand\count@=\the\count@ + \relax + }% + \@tempcnta=\numexpr#1\relax + \@tempcntb=\numexpr#2\relax + \count@=\numexpr#3\relax + \loop + \unless\ifnum\@tempcnta>\@tempcntb + \catcode\@tempcnta=\count@ + \advance\@tempcnta by \@ne + \repeat + \LuT@temp +} +\newcatcodetable\CatcodeTableIniTeX +\newcatcodetable\CatcodeTableString +\newcatcodetable\CatcodeTableOther +\newcatcodetable\CatcodeTableLaTeX +\initcatcodetable\CatcodeTableIniTeX +\begingroup + \def\@makeother#1{\catcode#1=12\relax}% + \@firstofone{% + \catcodetable\CatcodeTableIniTeX + \begingroup + \SetCatcodeRange{0}{8}{15}% + \catcode9=10 % tab + \catcode11=15 % + \catcode12=13 % form feed + \SetCatcodeRange{14}{31}{15}% + \catcode35=6 % hash + \catcode36=3 % dollar + \catcode38=4 % ampersand + \catcode94=7 % circumflex + \catcode95=8 % underscore + \catcode123=1 % brace left + \catcode125=2 % brace right + \catcode126=13 % tilde + \catcode127=15 % + \savecatcodetable\CatcodeTableLaTeX + \endgroup + \@makeother{0}% nul + \@makeother{13}% carriage return + \@makeother{37}% percent + \@makeother{92}% backslash + \@makeother{127}% + \SetCatcodeRange{65}{90}{12}% A-Z + \SetCatcodeRange{97}{122}{12}% a-z + \savecatcodetable\CatcodeTableString + \@makeother{32}% space + \savecatcodetable\CatcodeTableOther + \endgroup +}% +\def\LuT@NumStackEmpty{0} +\let\LuT@NumStack\LuT@NumStackEmpty +\LuT@newcommand\PushCatcodeTableNumStack[0]{% + \xdef\LuT@NumStack{% + {\the\catcodetable}\LuT@NumStack + }% +} +\LuT@newcommand\PopCatcodeTableNumStack[0]{% + \ifx\LuT@NumStack\LuT@NumStackEmpty + \@PackageWarning{luatex}{Empty catcode table number stack}% + \catcodetable\z@ + \else + \catcodetable=\expandafter\@car\LuT@NumStack\@nil\relax + \xdef\LuT@NumStack{% + \expandafter\@cdr\LuT@NumStack\@nil + }% + \fi +} +\LuT@newcommand\BeginCatcodeRegime[1]{% + \PushCatcodeTableNumStack + \catcodetable=\numexpr#1\relax + \IncCatcodeTableStack + \savecatcodetable\CatcodeTableStack + \catcodetable\CatcodeTableStack +} +\LuT@newcommand\EndCatcodeRegime[0]{% + \DecCatcodeTableStack + \PopCatcodeTableNumStack +} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input luatex-loader.sty\relax +\else + \RequirePackage{luatex-loader}[2007/12/12]% +\fi +\LuT@AtEnd +\endinput +%% +%% End of file `luatex.sty'. diff --git a/Master/texmf-dist/tex/generic/oberdiek/magicnum.sty b/Master/texmf-dist/tex/generic/oberdiek/magicnum.sty new file mode 100644 index 00000000000..5262b191af6 --- /dev/null +++ b/Master/texmf-dist/tex/generic/oberdiek/magicnum.sty @@ -0,0 +1,286 @@ +%% +%% This is file `magicnum.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% magicnum.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file magicnum.dtx +%% and the derived files +%% magicnum.sty, magicnum.pdf, magicnum.ins, magicnum.drv, magicnum.txt, +%% magicnum-test1.tex, magicnum-test2.tex, magicnum-test3.tex, +%% magicnum.lua, oberdiek.magicnum.lua. +%% +\begingroup + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode58 12 % : + \catcode64 11 % @ + \expandafter\let\expandafter\x\csname ver@magicnum.sty\endcsname + \ifcase 0% + \ifx\x\relax % plain + \else + \ifx\x\empty % LaTeX + \else + 1% + \fi + \fi + \else + \catcode35 6 % # + \catcode123 1 % { + \catcode125 2 % } + \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{magicnum}{The package is already loaded}% + \endgroup + \expandafter\endinput + \fi +\endgroup +\begingroup + \catcode35 6 % # + \catcode40 12 % ( + \catcode41 12 % ) + \catcode44 12 % , + \catcode45 12 % - + \catcode46 12 % . + \catcode47 12 % / + \catcode58 12 % : + \catcode64 11 % @ + \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\relax + \xdef#1{#3}% + \fi + }% + \fi +\expandafter\x\csname ver@magicnum.sty\endcsname +\ProvidesPackage{magicnum}% + [2007/12/12 v1.0 Magic numbers (HO)] +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname magicnum@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\magicnum@AtEnd{% + \magicnum@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{34}{12}% " +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{45}{12}% - +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{62}{12}% > +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname newcommand\endcsname\relax + \expandafter\ifx\csname magicnum\endcsname\relax + \else + \input infwarerr.sty\relax + \@PackageErrorNoLine{magicnum}{% + \string\magicnum\space is already defined% + }\@ehc + \fi +\else + \newcommand*{\magicnum}{}% +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname luatexversion\endcsname\relax + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname ifcsname\endcsname\relax + \def\magicnum#1{% + \expandafter\ifx\csname MG@#1\endcsname\relax + \else + \csname MG@#1\endcsname + \fi + }% + \else + \begingroup + \edef\x{\endgroup + \def\noexpand\magicnum##1{% + \expandafter\noexpand\csname + ifcsname\endcsname MG@##1\noexpand\endcsname + \noexpand\csname MG@##1% + \noexpand\expandafter\noexpand\endcsname + \expandafter\noexpand\csname fi\endcsname + }% + }% + \x + \fi +\else + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname RequirePackage\endcsname\relax + \input luatex.sty\relax + \else + \RequirePackage{luatex}[2007/12/12]% + \fi + \def\magicnum#1{% + \directlua0{% + require("oberdiek.magicnum")% + oberdiek.magicnum.get(% + "\luaescapestring{#1}",\number\CatcodeTableString + )% + }% + }% + \magicnum@AtEnd + \expandafter\endinput +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname detokenize\endcsname\relax + \def\magicnum@add#1#2#3{% + \expandafter\magicnum@@add + \csname MG@#1.#2\expandafter\endcsname + \csname MG@#1.#3\endcsname + {#3}{#2}% + }% + \def\magicnum@@add#1#2#3#4{% + \def#1{#3}% + \def#2{#4}% + \edef#1{% + \expandafter\strip@prefix\meaning#1% + }% + \edef#2{% + \expandafter\strip@prefix\meaning#2% + }% + }% + \expandafter\ifx\csname strip@prefix\endcsname\relax + \def\strip@prefix#1->{}% + \fi +\else + \def\magicnum@add#1#2#3{% + \expandafter\edef\csname MG@#1.#2\endcsname{% + \detokenize{#3}% + }% + \expandafter\edef\csname MG@#1.#3\endcsname{% + \detokenize{#2}% + }% + }% +\fi +\magicnum@add{tex.catcode}{escape}{0} +\magicnum@add{tex.catcode}{begingroup}{1} +\magicnum@add{tex.catcode}{endgroup}{2} +\magicnum@add{tex.catcode}{math}{3} +\magicnum@add{tex.catcode}{align}{4} +\magicnum@add{tex.catcode}{eol}{5} +\magicnum@add{tex.catcode}{parameter}{6} +\magicnum@add{tex.catcode}{superscript}{7} +\magicnum@add{tex.catcode}{subscript}{8} +\magicnum@add{tex.catcode}{ignore}{9} +\magicnum@add{tex.catcode}{space}{10} +\magicnum@add{tex.catcode}{letter}{11} +\magicnum@add{tex.catcode}{other}{12} +\magicnum@add{tex.catcode}{active}{13} +\magicnum@add{tex.catcode}{comment}{14} +\magicnum@add{tex.catcode}{invalid}{15} +\magicnum@add{etex.grouptype}{bottomlevel}{0} +\magicnum@add{etex.grouptype}{simple}{1} +\magicnum@add{etex.grouptype}{hbox}{2} +\magicnum@add{etex.grouptype}{adjustedhbox}{3} +\magicnum@add{etex.grouptype}{vbox}{4} +\magicnum@add{etex.grouptype}{align}{5} +\magicnum@add{etex.grouptype}{noalign}{6} +\magicnum@add{etex.grouptype}{output}{8} +\magicnum@add{etex.grouptype}{math}{9} +\magicnum@add{etex.grouptype}{disc}{10} +\magicnum@add{etex.grouptype}{insert}{11} +\magicnum@add{etex.grouptype}{vcenter}{12} +\magicnum@add{etex.grouptype}{mathchoice}{13} +\magicnum@add{etex.grouptype}{semisimple}{14} +\magicnum@add{etex.grouptype}{mathshift}{15} +\magicnum@add{etex.grouptype}{mathleft}{16} +\magicnum@add{etex.iftype}{none}{0} +\magicnum@add{etex.iftype}{char}{1} +\magicnum@add{etex.iftype}{cat}{2} +\magicnum@add{etex.iftype}{num}{3} +\magicnum@add{etex.iftype}{dim}{4} +\magicnum@add{etex.iftype}{odd}{5} +\magicnum@add{etex.iftype}{vmode}{6} +\magicnum@add{etex.iftype}{hmode}{7} +\magicnum@add{etex.iftype}{mmode}{8} +\magicnum@add{etex.iftype}{inner}{9} +\magicnum@add{etex.iftype}{void}{10} +\magicnum@add{etex.iftype}{hbox}{11} +\magicnum@add{etex.iftype}{vbox}{12} +\magicnum@add{etex.iftype}{x}{13} +\magicnum@add{etex.iftype}{eof}{14} +\magicnum@add{etex.iftype}{true}{15} +\magicnum@add{etex.iftype}{false}{16} +\magicnum@add{etex.iftype}{case}{17} +\magicnum@add{etex.iftype}{defined}{18} +\magicnum@add{etex.iftype}{csname}{19} +\magicnum@add{etex.iftype}{fontchar}{20} +\magicnum@add{etex.nodetype}{none}{-1} +\magicnum@add{etex.nodetype}{char}{0} +\magicnum@add{etex.nodetype}{hlist}{1} +\magicnum@add{etex.nodetype}{vlist}{2} +\magicnum@add{etex.nodetype}{rule}{3} +\magicnum@add{etex.nodetype}{ins}{4} +\magicnum@add{etex.nodetype}{mark}{5} +\magicnum@add{etex.nodetype}{adjust}{6} +\magicnum@add{etex.nodetype}{ligature}{7} +\magicnum@add{etex.nodetype}{disc}{8} +\magicnum@add{etex.nodetype}{whatsit}{9} +\magicnum@add{etex.nodetype}{math}{10} +\magicnum@add{etex.nodetype}{glue}{11} +\magicnum@add{etex.nodetype}{kern}{12} +\magicnum@add{etex.nodetype}{penalty}{13} +\magicnum@add{etex.nodetype}{unset}{14} +\magicnum@add{etex.nodetype}{maths}{15} +\magicnum@add{etex.interactionmode}{batch}{0} +\magicnum@add{etex.interactionmode}{nonstop}{1} +\magicnum@add{etex.interactionmode}{scroll}{2} +\magicnum@add{etex.interactionmode}{errorstop}{3} +\magicnum@add{luatex.pdfliteral.mode}{setorigin}{0} +\magicnum@add{luatex.pdfliteral.mode}{page}{1} +\magicnum@add{luatex.pdfliteral.mode}{direct}{2} +\magicnum@AtEnd +\endinput +%% +%% End of file `magicnum.sty'. diff --git a/Master/texmf-dist/tex/generic/oberdiek/pdfcol.sty b/Master/texmf-dist/tex/generic/oberdiek/pdfcol.sty index b73c5aa53f4..cf5175c5b01 100644 --- a/Master/texmf-dist/tex/generic/oberdiek/pdfcol.sty +++ b/Master/texmf-dist/tex/generic/oberdiek/pdfcol.sty @@ -25,7 +25,7 @@ %% This work consists of the main source file pdfcol.dtx %% and the derived files %% pdfcol.sty, pdfcol.pdf, pdfcol.ins, pdfcol.drv, pdfcol-test1.tex, -%% pdfcol-test2.tex, pdfcol-test3.tex. +%% pdfcol-test2.tex, pdfcol-test3.tex, pdfcol-test4.tex. %% \begingroup \catcode44 12 % , @@ -85,7 +85,7 @@ \fi \expandafter\x\csname ver@pdfcol.sty\endcsname \ProvidesPackage{pdfcol}% - [2007/09/09 v1.0 Maintaining additional color stacks for pdfTeX (HO)] + [2007/12/12 v1.2 Maintaining additional color stacks for pdfTeX (HO)] \begingroup \catcode123 1 % { \catcode125 2 % } @@ -128,9 +128,16 @@ \RequirePackage{#1}[{#2}]% }% \fi +\newif\ifPDFCOL@luacolor +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname ver@luacolor.sty\endcsname\relax + \PDFCOL@luacolorfalse +\else + \PDFCOL@luacolortrue +\fi \PDFCOL@RequirePackage{infwarerr}[2007/09/09] \PDFCOL@RequirePackage{ifpdf}[2007/09/09] -\ifpdf +\ifcase\ifpdf\ifPDFCOL@luacolor 1\fi\else 1\fi0 % \def\PDFCOL@Message{% \@PackageWarningNoLine{pdfcol}% }% @@ -140,7 +147,12 @@ \@PackageInfoNoLine{pdfcol}% }% \PDFCOL@Message{% - Interface disabled because of missing PDF mode of pdfTeX% + Interface disabled because of % + \ifPDFCOL@luacolor + package `luacolor'% + \else + missing PDF mode of pdfTeX% + \fi }% \fi \ifpdfcolAvailable @@ -230,6 +242,9 @@ \pdfcol@ErrorNoStack{#1}% }% }% + \def\pdfcolSetCurrentColor{% + \pdfcolorstack\@pdfcolorstack set{\current@color}% + }% \def\pdfcolSetCurrent#1{% \ifx\\#1\\% \pdfcolorstack\@pdfcolorstack current\relax @@ -273,6 +288,9 @@ \def\pdfcolSwitchStack#1{% \PDFCOL@Disabled }% + \def\pdfcolSetCurrentColor{% + \PDFCOL@Disabled + }% \def\pdfcolSetCurrent#1{% \PDFCOL@Disabled }% diff --git a/Master/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty b/Master/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty index f9a16b5bc2e..6ff76866446 100644 --- a/Master/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +++ b/Master/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty @@ -24,7 +24,8 @@ %% %% This work consists of the main source file pdftexcmds.dtx %% and the derived files -%% pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv. +%% pdftexcmds.sty, pdftexcmds.pdf, pdftexcmds.ins, pdftexcmds.drv, +%% oberdiek.pdftexcmds.lua, pdftexcmds.lua. %% \begingroup \catcode44 12 % , @@ -84,7 +85,7 @@ \fi \expandafter\x\csname ver@pdftexcmds.sty\endcsname \ProvidesPackage{pdftexcmds}% - [2007/11/12 v0.2 LuaTeX support for pdfTeX utility functions (HO)] + [2007/12/12 v0.3 LuaTeX support for pdfTeX utility functions (HO)] \begingroup \catcode123 1 % { \catcode125 2 % } @@ -108,6 +109,7 @@ }% \catcode#1 #2\relax } +\TMP@EnsureCode{10}{12}% ^^J \TMP@EnsureCode{33}{12}% ! \TMP@EnsureCode{34}{12}% " \TMP@EnsureCode{39}{12}% ' @@ -123,6 +125,7 @@ \TMP@EnsureCode{60}{12}% < \TMP@EnsureCode{61}{12}% = \TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{94}{7}% ^ (superscript) \TMP@EnsureCode{95}{12}% _ (other) \TMP@EnsureCode{126}{12}% ~ (other) \begingroup\expandafter\expandafter\expandafter\endgroup @@ -188,383 +191,120 @@ \pdftexcmds@AtEnd \expandafter\endinput \fi -\chardef\pdftexcmds@luastate=0 % +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname RequirePackage\endcsname\relax + \input luatex-loader.sty\relax +\else + \RequirePackage{luatex-loader}[2007/12/12]% +\fi +\directlua0{% + require("oberdiek.pdftexcmds")% +} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname newtoks\endcsname\relax \toksdef\pdftexcmds@toks=0 % \else \csname newtoks\endcsname\pdftexcmds@toks \fi -\begingroup - \escapechar=92 % - \edef\\{\string\\}% - \catcode35=12 % # - \catcode37=12\relax - \directlua\pdftexcmds@luastate{ - pdftexcmds = {} - function pdftexcmds.strcmp(A, B) - if A == B then - tex.write("0") - elseif A < B then - tex.write("-1") - else - tex.write("1") - end - end - function pdftexcmds.utf8_to_byte(str) - local i = 0 - local n = string.len(str) - local t = {} - while i < n do - i = i + 1 - local a = string.byte(str, i) - if a < 128 then - table.insert(t, string.char(a)) - else - if a >= 192 and i < n then - i = i + 1 - local b = string.byte(str, i) - if b < 128 or b >= 192 then - i = i - 1 - elseif a == 194 then - table.insert(t, string.char(b)) - elseif a == 195 then - table.insert(t, string.char(b + 64)) - end - end - end - end - return table.concat(t) - end - function pdftexcmds.escapehex(str, mode) - if mode == "byte" then - str = pdftexcmds.utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - return string.format("%02X", string.byte(ch)) - end - ))) - end - function pdftexcmds.unescapehex(str, mode) - local a = 0 - local first = true - local result = {} - for i = 1, string.len(str), 1 do - local ch = string.byte(str, i) - if ch >= 48 and ch <= 57 then - ch = ch - 48 - elseif ch >= 65 and ch <= 70 then - ch = ch - 55 - elseif ch >= 97 and ch <= 102 then - ch = ch - 87 - else - ch = nil - end - if ch then - if first then - a = ch * 16 - first = false - else - table.insert(result, a + ch) - first = true - end - end - end - if not first then - table.insert(result, a) - end - if mode == "byte" then - local utf8 = {} - for i, a in ipairs(result) do - if a < 128 then - table.insert(utf8, a) - else - if a < 192 then - table.insert(utf8, 194) - a = a - 128 - else - table.insert(utf8, 195) - a = a - 192 - end - table.insert(utf8, a + 128) - end - end - result = utf8 - end - tex.settoks(pdftexcmds.toks, string.char(unpack(result))) - end - function pdftexcmds.escapestring(str, mode) - if mode == "byte" then - str = pdftexcmds.utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - local b = string.byte(ch) - if b < 33 or b > 126 then - return string.format("\\%.3o", b) - end - if b == 40 or b == 41 or b == 92 then - return "\\" .. ch - end - return nil - end - ))) - end - function pdftexcmds.escapename(str, mode) - if mode == "byte" then - str = pdftexcmds.utf8_to_byte(str) - end - tex.write((string.gsub(str, ".", - function (ch) - local b = string.byte(ch) - if b == 0 then - return "" - end - if b <= 32 or b >= 127 - or b == 35 or b == 37 or b == 40 or b == 41 - or b == 47 or b == 60 or b == 62 or b == 91 - or b == 93 or b == 123 or b == 125 then - return string.format("#%.2X", b) - else - return nil - end - end - ))) - end - function pdftexcmds.filesize(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local size = lfs.attributes(foundfile, "size") - if size then - tex.write(size) - end - end - end - function pdftexcmds.filemoddate(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local date = lfs.attributes(foundfile, "modification") - if date then - local d = os.date("*t", date) - if d.sec >= 60 then - d.sec = 59 - end - local u = os.date("!*t", date) - local off = 60 * (d.hour - u.hour) + d.min - u.min - if d.year ~= u.year then - if d.year > u.year then - off = off + 1440 - else - off = off - 1440 - end - elseif d.yday ~= u.yday then - if d.yday > u.yday then - off = off + 1440 - else - off = off - 1440 - end - end - local timezone - if off == 0 then - timezone = "Z" - else - local hours = math.floor(off / 60) - local mins = math.abs(off - hours * 60) - timezone = string.format("%+03d'%02d'", hours, mins) - end - tex.write(string.format("D:%04d%02d%02d%02d%02d%02d%s", - d.year, d.month, d.day, d.hour, d.min, d.sec, timezone)) - end - end - end - function pdftexcmds.filedump(offset, length, filename) - length = tonumber(length) - if length and length > 0 then - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - offset = tonumber(offset) - if not offset then - offset = 0 - end - local filehandle = io.open(foundfile, "r") - if filehandle then - if offset > 0 then - filehandle:seek("set", offset) - end - local dump = filehandle:read(length) - pdftexcmds.escapehex(dump) - end - end - end - end - function pdftexcmds.mdfivesum(str, mode) - if mode == "byte" then - str = pdftexcmds.utf8_to_byte(str) - end - pdftexcmds.escapehex(md5.sum(str)) - end - function pdftexcmds.filemdfivesum(filename) - local foundfile = kpse.find_file(filename, "tex", true) - if foundfile then - local filehandle = io.open(foundfile, "r") - if filehandle then - local contents = filehandle:read("*a") - pdftexcmds.escapehex(md5.sum(contents)) - end - end - end - function pdftexcmds.shellescape() - if os.execute then - tex.write("1") - else - tex.write("0") - end - end - function pdftexcmds.system(cmdline) - pdftexcmds.systemexitstatus = nil - texio.write_nl("log", "system(" .. cmdline .. ") ") - if os.execute then - texio.write("log", "executed.") - pdftexcmds.systemexitstatus = os.execute(cmdline) - else - texio.write("log", "disabled.") - end - end - function pdftexcmds.lastsystemstatus() - local result = tonumber(pdftexcmds.systemexitstatus) - if result then - local x = math.floor(result / 256) - tex.write(result - 256 * math.floor(result / 256)) - end - end - function pdftexcmds.lastsystemexit() - local result = tonumber(pdftexcmds.systemexitstatus) - if result then - tex.write(math.floor(result / 256)) - end - end - function pdftexcmds.pipe(cmdline) - local result - pdftexcmds.systemexitstatus = nil - texio.write_nl("log", "pipe(" .. cmdline ..") ") - if io.popen then - texio.write("log", "executed.") - local handle = io.popen(cmdline, "r") - if handle then - result = handle:read("*a") - handle:close() - end - else - texio.write("log", "disabled.") - end - if result then - tex.settoks(pdftexcmds.toks, result) - else - tex.settoks(pdftexcmds.toks, "") - end - end - } -\endgroup \long\def\pdf@strcmp#1#2{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.strcmp("\luaescapestring{#1}",% + \directlua0{% + oberdiek.pdftexcmds.strcmp("\luaescapestring{#1}",% "\luaescapestring{#2}")% }% }% \long\def\pdf@escapehex#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapehex("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.escapehex("\luaescapestring{#1}", "byte")% }% }% \long\def\pdf@escapehexnative#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapehex("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.escapehex("\luaescapestring{#1}")% }% }% \def\pdf@unescapehex#1{% \the\expandafter\pdftexcmds@toks - \directlua\pdftexcmds@luastate{% - pdftexcmds.toks="pdftexcmds@toks"% - pdftexcmds.unescapehex("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.toks="pdftexcmds@toks"% + oberdiek.pdftexcmds.unescapehex("\luaescapestring{#1}", "byte")% }% }% \def\pdf@unescapehexnative#1{% \the\expandafter\pdftexcmds@toks - \directlua\pdftexcmds@luastate{% - pdftexcmds.toks="pdftexcmds@toks"% - pdftexcmds.unescapehex("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.toks="pdftexcmds@toks"% + oberdiek.pdftexcmds.unescapehex("\luaescapestring{#1}")% }% }% \long\def\pdf@escapestring#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapestring("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.escapestring("\luaescapestring{#1}", "byte")% }% } \long\def\pdf@escapename#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapename("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.escapename("\luaescapestring{#1}", "byte")% }% } \long\def\pdf@escapenamenative#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.escapename("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.escapename("\luaescapestring{#1}")% }% } \def\pdf@filesize#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.filesize("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.filesize("\luaescapestring{#1}")% }% } \def\pdf@filemoddate#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.filemoddate("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.filemoddate("\luaescapestring{#1}")% }% } \def\pdf@filedump#1#2#3{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.filedump("\luaescapestring{\number#1}",% + \directlua0{% + oberdiek.pdftexcmds.filedump("\luaescapestring{\number#1}",% "\luaescapestring{\number#2}",% "\luaescapestring{#3}")% }% }% \long\def\pdf@mdfivesum#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.mdfivesum("\luaescapestring{#1}", "byte")% + \directlua0{% + oberdiek.pdftexcmds.mdfivesum("\luaescapestring{#1}", "byte")% }% }% \long\def\pdf@mdfivesumnative#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.mdfivesum("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.mdfivesum("\luaescapestring{#1}")% }% }% \def\pdf@filemdfivesum#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.filemdfivesum("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.filemdfivesum("\luaescapestring{#1}")% }% }% \def\pdf@shellescape{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.shellescape()% + \directlua0{% + oberdiek.pdftexcmds.shellescape()% }% } \def\pdf@system#1{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.system("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.system("\luaescapestring{#1}")% }% } \def\pdf@lastsystemstatus{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.lastsystemstatus()% + \directlua0{% + oberdiek.pdftexcmds.lastsystemstatus()% }% } \def\pdf@lastsystemexit{% - \directlua\pdftexcmds@luastate{% - pdftexcmds.lastsystemexit()% + \directlua0{% + oberdiek.pdftexcmds.lastsystemexit()% }% } \ifnum0% - \directlua\pdftexcmds@luastate{% + \directlua0{% if io.popen then % tex.write("1")% end% @@ -572,9 +312,9 @@ =1 % \def\pdf@pipe#1{% \the\expandafter\pdftexcmds@toks - \directlua\pdftexcmds@luastate{% - pdftexcmds.toks="pdftexcmds@toks"% - pdftexcmds.pipe("\luaescapestring{#1}")% + \directlua0{% + oberdiek.pdftexcmds.toks="pdftexcmds@toks"% + oberdiek.pdftexcmds.pipe("\luaescapestring{#1}")% }% }% \fi diff --git a/Master/texmf-dist/tex/latex/oberdiek/holtxdoc.sty b/Master/texmf-dist/tex/latex/oberdiek/holtxdoc.sty index b8acb55ee3e..0d0869190f3 100644 --- a/Master/texmf-dist/tex/latex/oberdiek/holtxdoc.sty +++ b/Master/texmf-dist/tex/latex/oberdiek/holtxdoc.sty @@ -28,7 +28,7 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{holtxdoc}% - [2007/11/11 v0.9 Private additional ltxdoc support (HO)] + [2007/12/12 v0.10 Private additional ltxdoc support (HO)] \RequirePackage[numbered]{hypdoc} \RequirePackage{array} \def\hld@info#1{% @@ -161,6 +161,7 @@ \providecommand*{\MakeIndex}{\textsl{MakeIndex}} \providecommand*{\docstrip}{\textsf{docstrip}} \providecommand*{\plainTeX}{\mbox{plain-\TeX}} +\providecommand*{\iniTeX}{\mbox{ini-\TeX}} \providecommand*{\VTeX}{V\TeX} \CodelineIndex \EnableCrossrefs diff --git a/Master/texmf-dist/tex/latex/oberdiek/luacolor.sty b/Master/texmf-dist/tex/latex/oberdiek/luacolor.sty new file mode 100644 index 00000000000..8054ff37dbb --- /dev/null +++ b/Master/texmf-dist/tex/latex/oberdiek/luacolor.sty @@ -0,0 +1,153 @@ +%% +%% This is file `luacolor.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luacolor.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file luacolor.dtx +%% and the derived files +%% luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv, +%% luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex, +%% oberdiek.luacolor.lua, luacolor.lua. +%% +\begingroup + \catcode123 1 % { + \catcode125 2 % } + \def\x{\endgroup + \expandafter\edef\csname LuaCol@AtEnd\endcsname{% + \catcode35 \the\catcode35\relax + \catcode64 \the\catcode64\relax + \catcode123 \the\catcode123\relax + \catcode125 \the\catcode125\relax + }% + }% +\x +\catcode35 6 % # +\catcode64 11 % @ +\catcode123 1 % { +\catcode125 2 % } +\def\TMP@EnsureCode#1#2{% + \edef\LuaCol@AtEnd{% + \LuaCol@AtEnd + \catcode#1 \the\catcode#1\relax + }% + \catcode#1 #2\relax +} +\TMP@EnsureCode{34}{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{60}{12}% < +\TMP@EnsureCode{61}{12}% = +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{95}{12}% _ (other!) +\TMP@EnsureCode{96}{12}% ` +\edef\LuaCol@AtEnd{% + \LuaCol@AtEnd + \noexpand\endinput +} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{luacolor}% + [2007/12/12 v1.0 Coloring based on LuaTeX's node attributes (HO)] +\RequirePackage{infwarerr}[2007/09/09]% +\RequirePackage{ifluatex}[2007/12/12]% +\RequirePackage{color} +\ifluatex + \RequirePackage{luatex}[2007/12/12]% +\else + \@PackageError{luacolor}{% + This package may only be run using LuaTeX% + }\@ehc + \expandafter\LuaCol@AtEnd +\fi +\ifcolors@ +\else + \@PackageWarningNoLine{luacolor}{% + Colors are disabled by option `monochrome'% + }% + \expandafter\LuaCol@AtEnd +\fi +\directlua0{% + require("oberdiek.luacolor")% +} +\RequirePackage{ifpdf}[2007/09/09] +\ifpdf +\else + \begingroup + \def\current@color{}% + \def\reset@color{}% + \setbox\z@=\hbox{% + \begingroup + \set@color + \endgroup + }% + \edef\reserved@a{% + \directlua0{% + oberdiek.luacolor.dvidetect()% + }% + }% + \ifx\reserved@a\@empty + \@PackageError{luacolor}{% + DVI driver detection failed because of\MessageBreak + unrecognized color \string\special + }\@ehc + \endgroup + \expandafter\expandafter\expandafter\LuaCol@AtEnd + \else + \@PackageInfoNoLine{luacolor}{% + Type of color \string\special: \reserved@a + }% + \fi + \endgroup +\fi +\newattribute\LuaCol@Attribute +\directlua0{% + oberdiek.luacolor.setattribute(\number\allocationnumber)% +} +\protected\def\set@color{% + \setattribute\LuaCol@Attribute{% + \directlua0{% + oberdiek.luacolor.get("\luaescapestring{\current@color}")% + }% + }% +} +\def\reset@color{} +\def\luacolorProcessBox#1{% + \directlua0{% + oberdiek.luacolor.process(\number#1)% + }% +} +\RequirePackage{atbegshi}[2007/09/09] +\AtBeginShipout{% + \luacolorProcessBox\AtBeginShipoutBox +} +\set@color +\LuaCol@AtEnd +\endinput +%% +%% End of file `luacolor.sty'. diff --git a/Master/texmf-dist/tex/latex/oberdiek/pdfcolparallel.sty b/Master/texmf-dist/tex/latex/oberdiek/pdfcolparallel.sty index 78816fe980a..6ec6d181f7e 100644 --- a/Master/texmf-dist/tex/latex/oberdiek/pdfcolparallel.sty +++ b/Master/texmf-dist/tex/latex/oberdiek/pdfcolparallel.sty @@ -29,33 +29,46 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pdfcolparallel}% - [2007/09/09 v1.0 Color stacks support for parallel (HO)]% + [2007/12/12 v1.1 Fixed parallel with color stacks support (HO)]% \DeclareOption*{% \PassoptionsToPackage{\CurrentOption}{parallel}% } \ProcessOptions\relax \RequirePackage{parallel}[2003/04/13] -\RequirePackage{pdfcol}[2007/09/09] -\ifpdfcolAvailable +\RequirePackage{infwarerr}[2007/09/09] +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname currentgrouplevel\endcsname\relax + \def\pcp@ColorPatch{}% \else - \PackageInfo{pdfcolparallel}{% - Loading aborted, because color stacks are not available% + \def\pcp@ColorPatch{% + \@ifundefined{set@color}{% + \gdef\pcp@ColorPatch{}% + }{% + \gdef\pcp@ColorPatch{% + \gdef\pcp@ColorResets{}% + \bgroup + \aftergroup\pcp@ColorResets + \aftergroup\egroup + \let\pcp@OrgSetColor\set@color + \let\set@color\pcp@SetColor + \edef\pcp@GroupLevel{\the\currentgrouplevel}% + }% + }% + \pcp@ColorPatch + }% + \def\pcp@SetColor{% + \ifnum\pcp@GroupLevel=\currentgrouplevel + \let\pcp@OrgAfterGroup\aftergroup + \def\aftergroup{% + \g@addto@macro\pcp@ColorResets + }% + \pcp@OrgSetColor + \let\aftergroup\pcp@OrgAfterGroup + \else + \pcp@OrgSetColor + \fi }% - \expandafter\endinput \fi -\RequirePackage{infwarerr}[2007/09/09] -\pdfcolInitStack{pcp@Left} -\pdfcolInitStack{pcp@Right} -\def\pcp@SwitchStack#1{% - \pdfcolSwitchStack{pcp@#1}% -} -\def\pcp@SetCurrent#1{% - \ifx\\#1\\% - \pdfcolSetCurrent{}% - \else - \pdfcolSetCurrent{pcp@#1}% - \fi -} \def\pcp@CmdCheckRedef#1{% \begingroup \def\pcp@cmd{#1}% @@ -77,6 +90,8 @@ \expandafter\endgroup \expandafter\def\pcp@cmd } +\def\pcp@SwitchStack#1#2{} +\def\pcp@SetCurrent#1{} \pcp@CmdCheckRedef\ParallelLText{% \everypar{}% \@restorepar @@ -93,14 +108,17 @@ }{% \everypar{}% \@restorepar + \@nobreakfalse \begingroup \hbadness=3000 % \let\footnote=\ParallelLFootnote \ParallelWhichBox=0 % \global\setbox\ParallelLBox=\vbox\bgroup \hsize=\ParallelLWidth - \pcp@SwitchStack{Left}% + \linewidth=\ParallelLWidth + \pcp@SwitchStack{Left}\ParallelLBox \aftergroup\ParallelAfterText + \pcp@ColorPatch \begingroup \afterassignment\ParallelCheckOpenBrace \let\x=% @@ -125,6 +143,7 @@ }{% \everypar{}% \@restorepar + \@nobreakfalse \begingroup \hbadness=3000 % \ifnum\ParallelFNMode=\@ne @@ -135,12 +154,174 @@ \ParallelWhichBox=\@ne \global\setbox\ParallelRBox=\vbox\bgroup \hsize=\ParallelRWidth - \pcp@SwitchStack{Right}% + \linewidth=\ParallelRWidth + \pcp@SwitchStack{Right}\ParallelRBox \aftergroup\ParallelAfterText + \pcp@ColorPatch \begingroup \afterassignment\ParallelCheckOpenBrace \let\x=% } +\pcp@CmdCheckRedef\ParallelParTwoPages{% + \ifnum\ParallelBoolVar=\@ne + \par + \begingroup + \global\ParallelWhichBox=\@ne + \newpage + \vbadness=10000 % + \vfuzz=3ex % + \splittopskip=\z@skip + \loop% + \ifnum\ParallelBoolVar=\@ne% + \ifnum\ParallelWhichBox=\@ne + \ifvoid\ParallelLBox + \mbox{} % + \newpage + \else + \global\ParallelWhichBox=\z@ + \fi + \else + \ifvoid\ParallelRBox + \mbox{} % + \newpage + \else + \global\ParallelWhichBox=\@ne + \fi + \fi + \ifnum\ParallelWhichBox=\z@ + \ifodd\thepage + \mbox{} % + \newpage + \fi + \hbox to\textwidth{% + \vbox{\vsplit\ParallelLBox to.98\textheight}% + }% + \else + \ifodd\thepage\relax + \else + \mbox{} % + \newpage + \fi + \hbox to\textwidth{% + \vbox{\vsplit\ParallelRBox to.98\textheight}% + }% + \fi + \vspace*{\fill}% + \newpage + \fi + \ifvoid\ParallelLBox + \ifvoid\ParallelRBox + \global\ParallelBoolVar=\z@ + \fi + \fi + \ifnum\ParallelBoolVar=\@ne + \repeat + \par + \endgroup + \fi +}{% + \ifnum\ParallelBoolVar=\@ne + \par + \begingroup + \global\ParallelWhichBox=\@ne + \newpage + \vbadness=10000 % + \vfuzz=3ex % + \splittopskip=\z@skip + \loop% + \ifnum\ParallelBoolVar=\@ne% + \ifnum\ParallelWhichBox=\@ne + \ifvoid\ParallelLBox + \mbox{}% + \newpage + \else + \global\ParallelWhichBox=\z@ + \fi + \else + \ifvoid\ParallelRBox + \null + \newpage + \else + \global\ParallelWhichBox=\@ne + \fi + \fi + \ifnum\ParallelWhichBox=\z@ + \ifodd\value{page}% + \null + \newpage + \fi + \hbox to\textwidth{% + \pcp@SetCurrent{Left}% + \setbox\z@=\vsplit\ParallelLBox to.98\textheight + \vbox to.98\textheight{% + \@texttop + \unvbox\z@ + \@textbottom + }% + }% + \else + \ifodd\value{page}% + \else + \mbox{}% + \newpage + \fi + \hbox to\textwidth{% + \pcp@SetCurrent{Right}% + \setbox\z@=\vsplit\ParallelRBox to.98\textheight + \vbox to.98\textheight{% + \@texttop + \unvbox\z@ + \@textbottom + }% + }% + \fi + \vspace*{\fill}% + \newpage + \fi + \ifvoid\ParallelLBox + \ifvoid\ParallelRBox + \global\ParallelBoolVar=\z@ + \fi + \fi + \ifnum\ParallelBoolVar=\@ne + \repeat + \par + \endgroup + \pcp@SetCurrent{}% + \fi +} +\RequirePackage{pdfcol}[2007/12/12] +\ifpdfcolAvailable +\else + \PackageInfo{pdfcolparallel}{% + Loading aborted, because color stacks are not available% + }% + \expandafter\endinput +\fi +\pdfcolInitStack{pcp@Left} +\pdfcolInitStack{pcp@Right} +\newbox\pcp@Box +\def\pcp@SwitchStack#1#2{% + \pdfcolSwitchStack{pcp@#1}% + \global\setbox\pcp@Box=\vbox to 0pt{% + \pdfcolSetCurrentColor + }% + \aftergroup\pcp@FixBox + \aftergroup#2% +} +\def\pcp@FixBox#1{% + \global\setbox#1=\vbox{% + \unvbox\pcp@Box + \unvbox#1% + }% +} +\def\pcp@SetCurrent#1{% + \ifx\\#1\\% + \pdfcolSetCurrent{}% + \else + \pdfcolSetCurrent{pcp@#1}% + \fi +} \pcp@CmdCheckRedef\ParallelParOnePage{% \ifnum\ParallelBoolVar=\@ne \par @@ -263,124 +444,6 @@ \pcp@SetCurrent{}% \fi } -\pcp@CmdCheckRedef\ParallelParTwoPages{% - \ifnum\ParallelBoolVar=\@ne - \par - \begingroup - \global\ParallelWhichBox=\@ne - \newpage - \vbadness=10000 % - \vfuzz=3ex % - \splittopskip=\z@skip - \loop% - \ifnum\ParallelBoolVar=\@ne% - \ifnum\ParallelWhichBox=\@ne - \ifvoid\ParallelLBox - \mbox{} % - \newpage - \else - \global\ParallelWhichBox=\z@ - \fi - \else - \ifvoid\ParallelRBox - \mbox{} % - \newpage - \else - \global\ParallelWhichBox=\@ne - \fi - \fi - \ifnum\ParallelWhichBox=\z@ - \ifodd\thepage - \mbox{} % - \newpage - \fi - \hbox to\textwidth{% - \vbox{\vsplit\ParallelLBox to.98\textheight}% - }% - \else - \ifodd\thepage\relax - \else - \mbox{} % - \newpage - \fi - \hbox to\textwidth{% - \vbox{\vsplit\ParallelRBox to.98\textheight}% - }% - \fi - \vspace*{\fill}% - \newpage - \fi - \ifvoid\ParallelLBox - \ifvoid\ParallelRBox - \global\ParallelBoolVar=\z@ - \fi - \fi - \ifnum\ParallelBoolVar=\@ne - \repeat - \par - \endgroup - \fi -}{% - \ifnum\ParallelBoolVar=\@ne - \par - \begingroup - \global\ParallelWhichBox=\@ne - \newpage - \vbadness=10000 % - \vfuzz=3ex % - \splittopskip=\z@skip - \loop% - \ifnum\ParallelBoolVar=\@ne% - \ifnum\ParallelWhichBox=\@ne - \ifvoid\ParallelLBox - \mbox{}% - \newpage - \else - \global\ParallelWhichBox=\z@ - \fi - \else - \ifvoid\ParallelRBox - \mbox{}% - \newpage - \else - \global\ParallelWhichBox=\@ne - \fi - \fi - \ifnum\ParallelWhichBox=\z@ - \ifodd\value{page}% - \mbox{}% - \newpage - \fi - \hbox to\textwidth{% - \pcp@SetCurrent{Left}% - \vbox{\vsplit\ParallelLBox to.98\textheight}% - }% - \else - \ifodd\value{page}% - \else - \mbox{}% - \newpage - \fi - \hbox to\textwidth{% - \pcp@SetCurrent{Right}% - \vbox{\vsplit\ParallelRBox to.98\textheight}% - }% - \fi - \vspace*{\fill}% - \newpage - \fi - \ifvoid\ParallelLBox - \ifvoid\ParallelRBox - \global\ParallelBoolVar=\z@ - \fi - \fi - \ifnum\ParallelBoolVar=\@ne - \repeat - \par - \endgroup - \pcp@SetCurrent{}% - \fi -} \endinput %% %% End of file `pdfcolparallel.sty'. diff --git a/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty b/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty index 6716c6b8f7d..25ab2ff28ec 100644 --- a/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty +++ b/Master/texmf-dist/tex/latex/oberdiek/zref-base.sty @@ -64,7 +64,7 @@ \endinput }{}% \endgroup -\RequirePackage{etexcmds} +\RequirePackage{etexcmds}[2007/09/09] \ifetex@unexpanded \else \ZREF@ErrorNoLine{% -- cgit v1.2.3