summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-12-15 00:23:34 +0000
committerKarl Berry <karl@freefriends.org>2007-12-15 00:23:34 +0000
commit116405a01899ba783a14653896d02888e298fbb1 (patch)
treea18817a449117e864d52b1cf21f5be0eac3ed7cb /Master/texmf-dist
parent61cc3ba9dfd27cde051a486dad06940dfff0e699 (diff)
oberdiek: luacolor1.0 luatex1.0 ... (14dec07)
git-svn-id: svn://tug.org/texlive/trunk@5785 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/accsupp.pdfbin164796 -> 164797 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdfbin139007 -> 139007 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/alphalph.pdfbin219558 -> 219898 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/askinclude.pdfbin616501 -> 616501 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdfbin213559 -> 213785 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdfbin130109 -> 130108 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdfbin216208 -> 216208 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/auxhook.pdfbin134584 -> 134585 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdfbin308288 -> 308596 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bitset.pdfbin671504 -> 671859 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdfbin297551 -> 296887 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/bookmark.pdfbin235143 -> 235141 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/catchfile.pdfbin154112 -> 154332 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/centernot.pdfbin126097 -> 126097 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/chemarr.pdfbin130717 -> 130717 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/classlist.pdfbin127081 -> 127082 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/colonequals.pdfbin135848 -> 135848 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdfbin119357 -> 119357 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/embedfile.pdfbin223045 -> 223344 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/engord.pdfbin157260 -> 157396 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdfbin175109 -> 175338 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdfbin144294 -> 148728 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/flags.pdfbin135730 -> 135730 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/grfext.pdfbin159185 -> 159406 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/grffile.pdfbin160230 -> 160230 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdfbin141775 -> 140648 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hycolor.pdfbin193957 -> 193957 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdfbin147134 -> 147133 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypcap.pdfbin133317 -> 133317 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdfbin157766 -> 157766 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdfbin164786 -> 164788 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/hypgotoe.pdfbin139046 -> 139046 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdfbin122282 -> 122282 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/iflang.pdfbin178199 -> 178338 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/ifluatex.pdfbin0 -> 137801 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdfbin149825 -> 149973 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdfbin144247 -> 144511 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdfbin162317 -> 162537 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/inputenx.pdfbin492087 -> 492087 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/intcalc.pdfbin288501 -> 288844 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdfbin268454 -> 269252 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdfbin198613 -> 198778 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/listingsutf8.pdfbin154110 -> 154111 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/luacolor.pdfbin0 -> 154103 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/luatex.pdfbin0 -> 205420 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/magicnum.pdfbin0 -> 161348 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/magicnum.txt83
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/makerobust.pdfbin124089 -> 124089 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdfbin744993 -> 786151 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pagesel.pdfbin160335 -> 160336 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdfbin160349 -> 165652 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdfbin143676 -> 143677 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdfbin161333 -> 161332 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdfbin156824 -> 160121 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdfbin150206 -> 150206 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdfbin164852 -> 164852 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdfbin218189 -> 218709 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdfbin156574 -> 156576 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pdftexcmds.pdfbin166880 -> 167805 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/picture.pdfbin142012 -> 142011 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdfbin182727 -> 182727 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/refcount.pdfbin135490 -> 135491 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/selinput.pdfbin545308 -> 545308 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdfbin177799 -> 178077 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/settobox.pdfbin143992 -> 143993 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdfbin221429 -> 221777 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/stackrel.pdfbin131440 -> 131441 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/stringenc.pdfbin413271 -> 413272 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/tabularht.pdfbin169044 -> 169047 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdfbin119401 -> 119401 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/telprint.pdfbin153738 -> 153929 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/alphalph-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/atbegshi-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/bigintcalc-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/bitset-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/catchfile-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/embedfile-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/engord-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/epstopdf-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/etexcmds-test4.tex2
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/grfext-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/iflang-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/ifluatex-test1.tex108
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/ifpdf-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/ifvtex-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/infwarerr-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/intcalc-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/kvoptions-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/kvsetkeys-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test1.tex111
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test2.tex42
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/luacolor-test3.tex41
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/luatex-test1.tex109
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/luatex-test2.tex113
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/luatex-test3.tex113
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/luatex-test4.tex185
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/luatex-test5.tex45
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test1.tex109
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test2.tex66
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/magicnum-test3.tex62
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test1.tex7
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test2.tex4
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test3.tex4
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/pdfcol-test4.tex41
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/pdfcolparallel-test1.tex43
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/pdfescape-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/setouterhbox-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/soulutf8-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/test/telprint-test1.tex5
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/transparent.pdfbin126894 -> 126894 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/twoopt.pdfbin137949 -> 137950 bytes
-rw-r--r--Master/texmf-dist/doc/latex/oberdiek/zref.pdfbin293231 -> 293241 bytes
-rw-r--r--Master/texmf-dist/scripts/oberdiek/luacolor.lua169
-rw-r--r--Master/texmf-dist/scripts/oberdiek/magicnum.lua227
-rw-r--r--Master/texmf-dist/scripts/oberdiek/oberdiek.luacolor.lua169
-rw-r--r--Master/texmf-dist/scripts/oberdiek/oberdiek.luatex.lua48
-rw-r--r--Master/texmf-dist/scripts/oberdiek/oberdiek.magicnum.lua227
-rw-r--r--Master/texmf-dist/scripts/oberdiek/oberdiek.pdftexcmds.lua295
-rw-r--r--Master/texmf-dist/scripts/oberdiek/pdftexcmds.lua295
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/alphalph.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/atbegshi.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/bigintcalc.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/bitset.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/bmpsize.dtx48
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/catchfile.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/embedfile.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/engord.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/etexcmds.dtx84
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/grfext.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/holtxdoc.dtx15
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/iflang.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/ifluatex.dtx675
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx23
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/ifvtex.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/infwarerr.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/intcalc.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/kvoptions.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/kvsetkeys.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/luacolor.dtx963
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/luatex.dtx1756
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/magicnum.dtx1384
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/oberdiek.ins6
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/oberdiek.tex66
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/pdfcol.dtx90
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/pdfcolparallel.dtx497
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/pdftexcmds.dtx744
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/setouterhbox.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/soulutf8.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/telprint.dtx7
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/zref.dtx2
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/etexcmds.sty40
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/ifluatex.sty167
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/ifpdf.sty4
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/luatex-loader.sty118
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/luatex.sty419
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/magicnum.sty286
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/pdfcol.sty26
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty372
-rw-r--r--Master/texmf-dist/tex/latex/oberdiek/holtxdoc.sty3
-rw-r--r--Master/texmf-dist/tex/latex/oberdiek/luacolor.sty153
-rw-r--r--Master/texmf-dist/tex/latex/oberdiek/pdfcolparallel.sty341
-rw-r--r--Master/texmf-dist/tex/latex/oberdiek/zref-base.sty2
166 files changed, 10123 insertions, 1119 deletions
diff --git a/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf b/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf
index 925257e6fa6..475b976e517 100644
--- a/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/accsupp.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/aliascnt.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/alphalph.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/askinclude.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/askinclude.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/atbegshi.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/atenddvi.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/attachfile2.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/auxhook.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/bigintcalc.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/bitset.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/bmpsize.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/bookmark.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/catchfile.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/centernot.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/chemarr.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/classlist.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/colonequals.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/dvipscol.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/embedfile.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/engord.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/engord.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/epstopdf.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/etexcmds.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/flags.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/flags.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/grfext.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/grffile.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/holtxdoc.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hycolor.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypbmsec.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypcap.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypdestopt.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypdoc.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/hypgotoe.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/hypgotoe.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/ifdraft.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/iflang.pdf
Binary files 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
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/ifluatex.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/ifpdf.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/ifvtex.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/infwarerr.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/inputenx.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/intcalc.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvoptions.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/kvsetkeys.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/listingsutf8.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/listingsutf8.pdf
Binary files 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
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/luacolor.pdf
Binary files 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
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/luatex.pdf
Binary files 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
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/oberdiek/magicnum.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/makerobust.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/oberdiek.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pagesel.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcol.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcolfoot.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcolmk.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparallel.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcolparcolumns.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfcrypt.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdfescape.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdflscape.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pdftexcmds.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pdftexcmds.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/picture.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/picture.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/pmboxdraw.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/refcount.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/selinput.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/setouterhbox.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/settobox.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/soulutf8.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/stackrel.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/stringenc.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/tabularht.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/tabularkv.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/telprint.pdf
Binary files 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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
--- a/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/transparent.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/twoopt.pdf
Binary files 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
--- a/Master/texmf-dist/doc/latex/oberdiek/zref.pdf
+++ b/Master/texmf-dist/doc/latex/oberdiek/zref.pdf
Binary files 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 <oberdiek@uni-freiburg.de>
+--
+-- 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 <oberdiek@uni-freiburg.de>
+--
+-- 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 <oberdiek@uni-freiburg.de>
+--
+-- 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 <oberdiek@uni-freiburg.de>
+--
+-- 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 <oberdiek@uni-freiburg.de>
+--
+-- 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 <oberdiek@uni-freiburg.de>
+--
+-- 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 <oberdiek@uni-freiburg.de>
+--
+-- 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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</ignore>
+%\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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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
%</package>
@@ -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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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 <oberdiek@uni-freiburg.de>
+%
+% 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
+%</ignore>
+%<*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 <oberdiek@uni-freiburg.de>
+
+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
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*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}
+%</driver>
+% \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}
+%</package>
+% \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}
+%</test1>
+% \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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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 <oberdiek@uni-freiburg.de>
+%
+% 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
+%</ignore>
+%<*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 <oberdiek@uni-freiburg.de>
+
+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
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*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}
+%</driver>
+% \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
+%</package>
+% \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
+%<debug>texio.write_nl("traverse: " .. node.type(list.id))
+ local head = list.list
+ for n in node.traverse(head) do
+%<debug>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}
+%</lua>
+% \end{macrocode}
+%
+% \section{Test}
+%
+% \begin{macrocode}
+%<*test1>
+\documentclass{article}
+\usepackage{color}
+%</test1>
+% \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}
+%</test1>
+% \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
+%</test2>
+% \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
+%</test3>
+% \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
+%</test4>
+% \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 <oberdiek@uni-freiburg.de>
+%
+% 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
+%</ignore>
+%<*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 <oberdiek@uni-freiburg.de>
+
+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
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*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}
+%</driver>
+% \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
+%</package>
+% \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}
+%</loader>
+% \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}
+%</lua>
+% \end{macrocode}
+%
+% \section{Test}
+%
+% \begin{macrocode}
+%<*test2>
+\documentclass{article}
+\def\LoadCommand{%
+ \RequirePackage{luatex}[2007/12/12]%
+}
+%</test2>
+% \end{macrocode}
+% \begin{macrocode}
+%<*test3>
+\documentclass{article}
+\def\LoadCommand{%
+ \RequirePackage{luatex-loader}[2007/12/12]%
+}
+%</test3>
+% \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}
+%</test1>
+% \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
+%</test4>
+% \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
+%</test5>
+% \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 <oberdiek@uni-freiburg.de>
+%
+% 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
+%</ignore>
+%<*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 <oberdiek@uni-freiburg.de>
+
+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
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*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}
+%</driver>
+% \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
+%</package>
+% \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
+%</data>
+% \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
+%</package>
+% \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}
+%</lua>
+% \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}
+%</test1>
+% \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->{}
+%</testplain>
+% \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}
+%</testlatex>
+% \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}{}
+%</testdata>
+% \end{macrocode}
+% \begin{macrocode}
+%<*testplain>
+\csname @@end\endcsname
+\end
+%</testplain>
+%<*testlatex>
+\end{qstest}
+\csname @@end\endcsname
+%</testlatex>
+% \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 <oberdiek@uni-freiburg.de>
@@ -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 <oberdiek@uni-freiburg.de>
@@ -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]
@@ -652,6 +660,16 @@ based on macro \cs{languagename} or hyphenation patterns.
\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}
\begin{abstract}
@@ -735,6 +753,34 @@ are required.
\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}
\begin{abstract}
@@ -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
%</driver>
% \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
%</test2|test3>
% \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
+%</test4>
+% \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
%</driver>
% \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}
%</package>
% \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}
%</test1>
@@ -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
%</driver>
% \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
%</driver>
% \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
%</package>
% \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}
+%</lua>
+% \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
%</driver>
% \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
%</driver>
% \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
%</driver>
% \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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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 <oberdiek@uni-freiburg.de>
+%%
+%% 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{%