summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FILES.byname770
-rw-r--r--FILES.byname.gzbin2461661 -> 2466490 bytes
-rw-r--r--FILES.last07days710
-rw-r--r--biblio/ctan-bibdata/biblatex-ctan/ctan.bbx21
-rw-r--r--biblio/ctan-bibdata/ctan.bib1077
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3593366 -> 3617632 bytes
-rw-r--r--fonts/cooperhewitt/README69
-rw-r--r--fonts/cooperhewitt/doc/OFL.txt45
-rw-r--r--fonts/cooperhewitt/doc/cooperhewitt-samples.pdfbin0 -> 23234 bytes
-rw-r--r--fonts/cooperhewitt/doc/cooperhewitt-samples.tex31
-rw-r--r--fonts/cooperhewitt/enc/cphwt_4je6jj.enc63
-rw-r--r--fonts/cooperhewitt/enc/cphwt_kvtx4d.enc63
-rw-r--r--fonts/cooperhewitt/enc/cphwt_psuovm.enc63
-rw-r--r--fonts/cooperhewitt/enc/cphwt_r6y6f6.enc63
-rw-r--r--fonts/cooperhewitt/enc/cphwt_sz67he.enc63
-rw-r--r--fonts/cooperhewitt/enc/cphwt_tjvrzf.enc63
-rw-r--r--fonts/cooperhewitt/enc/cphwt_vrwj46.enc63
-rw-r--r--fonts/cooperhewitt/latex/CooperHewitt.sty121
-rw-r--r--fonts/cooperhewitt/latex/LY1CpHwt-Sup.fd214
-rw-r--r--fonts/cooperhewitt/latex/LY1CpHwt-TLF.fd214
-rw-r--r--fonts/cooperhewitt/latex/OT1CpHwt-Sup.fd214
-rw-r--r--fonts/cooperhewitt/latex/OT1CpHwt-TLF.fd214
-rw-r--r--fonts/cooperhewitt/latex/T1CpHwt-Sup.fd214
-rw-r--r--fonts/cooperhewitt/latex/T1CpHwt-TLF.fd214
-rw-r--r--fonts/cooperhewitt/latex/TS1CpHwt-TLF.fd214
-rw-r--r--fonts/cooperhewitt/map/CooperHewitt.map100
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-Bold.otfbin0 -> 89976 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-BoldItalic.otfbin0 -> 92092 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-Book.otfbin0 -> 89696 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-BookItalic.otfbin0 -> 92352 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-Heavy.otfbin0 -> 89652 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-HeavyItalic.otfbin0 -> 92056 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-Light.otfbin0 -> 89336 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-LightItalic.otfbin0 -> 92308 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-Medium.otfbin0 -> 89836 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-MediumItalic.otfbin0 -> 92244 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-Semibold.otfbin0 -> 90296 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-SemiboldItalic.otfbin0 -> 92384 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-Thin.otfbin0 -> 88996 bytes
-rw-r--r--fonts/cooperhewitt/opentype/CooperHewitt-ThinItalic.otfbin0 -> 89256 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1--base.tfmbin0 -> 1600 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1.tfmbin0 -> 1604 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ot1.tfmbin0 -> 1104 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1--base.tfmbin0 -> 1604 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1.tfmbin0 -> 1612 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1--base.tfmbin0 -> 1600 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1.tfmbin0 -> 10592 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1--base.tfmbin0 -> 1100 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1.tfmbin0 -> 5508 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1--base.tfmbin0 -> 1600 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1.tfmbin0 -> 16596 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1--base.tfmbin0 -> 1264 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1.tfmbin0 -> 1284 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1--base.tfmbin0 -> 1720 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1.tfmbin0 -> 1724 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ot1.tfmbin0 -> 1212 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1--base.tfmbin0 -> 1716 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1.tfmbin0 -> 1724 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1--base.tfmbin0 -> 1704 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1.tfmbin0 -> 10696 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1--base.tfmbin0 -> 1184 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1.tfmbin0 -> 5592 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1--base.tfmbin0 -> 1688 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1.tfmbin0 -> 16684 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1--base.tfmbin0 -> 1300 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1.tfmbin0 -> 1320 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1--base.tfmbin0 -> 1592 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1.tfmbin0 -> 1596 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-sup-ot1.tfmbin0 -> 1104 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1--base.tfmbin0 -> 1600 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1.tfmbin0 -> 1608 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1--base.tfmbin0 -> 1592 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1.tfmbin0 -> 10584 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1--base.tfmbin0 -> 1100 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1.tfmbin0 -> 5508 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1--base.tfmbin0 -> 1596 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1.tfmbin0 -> 16592 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1--base.tfmbin0 -> 1260 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1.tfmbin0 -> 1280 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1--base.tfmbin0 -> 1684 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1.tfmbin0 -> 1688 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ot1.tfmbin0 -> 1196 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1--base.tfmbin0 -> 1684 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1.tfmbin0 -> 1692 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1--base.tfmbin0 -> 1664 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1.tfmbin0 -> 10656 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1--base.tfmbin0 -> 1164 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1.tfmbin0 -> 5572 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1--base.tfmbin0 -> 1652 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1.tfmbin0 -> 16648 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1--base.tfmbin0 -> 1280 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1.tfmbin0 -> 1300 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1--base.tfmbin0 -> 1500 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1.tfmbin0 -> 1504 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ot1.tfmbin0 -> 1032 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1--base.tfmbin0 -> 1516 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1.tfmbin0 -> 1524 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1--base.tfmbin0 -> 1504 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1.tfmbin0 -> 10492 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1--base.tfmbin0 -> 1032 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1.tfmbin0 -> 5436 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1--base.tfmbin0 -> 1516 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1.tfmbin0 -> 16512 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1--base.tfmbin0 -> 1256 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1.tfmbin0 -> 1272 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1--base.tfmbin0 -> 1640 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1.tfmbin0 -> 1644 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ot1.tfmbin0 -> 1156 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1--base.tfmbin0 -> 1644 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1.tfmbin0 -> 1652 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1--base.tfmbin0 -> 1628 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1.tfmbin0 -> 10616 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1--base.tfmbin0 -> 1128 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1.tfmbin0 -> 5532 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1--base.tfmbin0 -> 1624 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1.tfmbin0 -> 16620 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1--base.tfmbin0 -> 1304 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1.tfmbin0 -> 1320 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1--base.tfmbin0 -> 1484 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1.tfmbin0 -> 1488 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-sup-ot1.tfmbin0 -> 1024 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1--base.tfmbin0 -> 1476 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1.tfmbin0 -> 1484 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1--base.tfmbin0 -> 1484 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1.tfmbin0 -> 10472 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1--base.tfmbin0 -> 1020 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1.tfmbin0 -> 5428 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1--base.tfmbin0 -> 1472 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1.tfmbin0 -> 16472 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1--base.tfmbin0 -> 1244 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1.tfmbin0 -> 1264 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1--base.tfmbin0 -> 1576 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1.tfmbin0 -> 1580 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ot1.tfmbin0 -> 1104 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1--base.tfmbin0 -> 1568 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1.tfmbin0 -> 1576 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1--base.tfmbin0 -> 1552 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1.tfmbin0 -> 10540 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1--base.tfmbin0 -> 1072 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1.tfmbin0 -> 5480 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1--base.tfmbin0 -> 1536 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1.tfmbin0 -> 16536 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1--base.tfmbin0 -> 1260 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1.tfmbin0 -> 1280 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1--base.tfmbin0 -> 1596 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1.tfmbin0 -> 1600 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ot1.tfmbin0 -> 1108 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1--base.tfmbin0 -> 1592 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1.tfmbin0 -> 1600 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1--base.tfmbin0 -> 1596 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1.tfmbin0 -> 10588 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1--base.tfmbin0 -> 1104 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1.tfmbin0 -> 5512 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1--base.tfmbin0 -> 1588 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1.tfmbin0 -> 16584 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1--base.tfmbin0 -> 1260 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1.tfmbin0 -> 1280 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1--base.tfmbin0 -> 1708 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1.tfmbin0 -> 1712 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ot1.tfmbin0 -> 1212 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1--base.tfmbin0 -> 1708 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1.tfmbin0 -> 1716 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1--base.tfmbin0 -> 1676 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1.tfmbin0 -> 10668 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1--base.tfmbin0 -> 1168 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1.tfmbin0 -> 5576 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1--base.tfmbin0 -> 1664 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1.tfmbin0 -> 16660 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1--base.tfmbin0 -> 1284 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1.tfmbin0 -> 1304 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1--base.tfmbin0 -> 1604 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1.tfmbin0 -> 1608 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ot1.tfmbin0 -> 1112 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1--base.tfmbin0 -> 1612 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1.tfmbin0 -> 1620 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1--base.tfmbin0 -> 1604 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1.tfmbin0 -> 10596 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1--base.tfmbin0 -> 1108 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1.tfmbin0 -> 5516 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1--base.tfmbin0 -> 1608 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1.tfmbin0 -> 16604 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1--base.tfmbin0 -> 1260 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1.tfmbin0 -> 1280 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1--base.tfmbin0 -> 1732 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1.tfmbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ot1.tfmbin0 -> 1224 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1--base.tfmbin0 -> 1724 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1.tfmbin0 -> 1732 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1--base.tfmbin0 -> 1704 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1.tfmbin0 -> 10696 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1--base.tfmbin0 -> 1188 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1.tfmbin0 -> 5596 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1--base.tfmbin0 -> 1688 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1.tfmbin0 -> 16684 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1--base.tfmbin0 -> 1284 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1.tfmbin0 -> 1304 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1--base.tfmbin0 -> 1524 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1.tfmbin0 -> 1528 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ot1.tfmbin0 -> 1072 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1--base.tfmbin0 -> 1516 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1.tfmbin0 -> 1524 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1--base.tfmbin0 -> 1524 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1.tfmbin0 -> 10516 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1--base.tfmbin0 -> 1068 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1.tfmbin0 -> 5476 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1--base.tfmbin0 -> 1512 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1.tfmbin0 -> 16512 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1--base.tfmbin0 -> 1252 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1.tfmbin0 -> 1276 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1--base.tfmbin0 -> 1624 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1.tfmbin0 -> 1628 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ot1.tfmbin0 -> 1144 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1--base.tfmbin0 -> 1616 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1.tfmbin0 -> 1624 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1--base.tfmbin0 -> 1600 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1.tfmbin0 -> 10592 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1--base.tfmbin0 -> 1112 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1.tfmbin0 -> 5520 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1--base.tfmbin0 -> 1584 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1.tfmbin0 -> 16584 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1--base.tfmbin0 -> 1264 bytes
-rw-r--r--fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1.tfmbin0 -> 1288 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-Bold.pfbbin0 -> 46394 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-BoldItalic.pfbbin0 -> 49061 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-Book.pfbbin0 -> 45623 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-BookItalic.pfbbin0 -> 48713 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-Heavy.pfbbin0 -> 45193 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-HeavyItalic.pfbbin0 -> 48265 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-Light.pfbbin0 -> 45768 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-LightItalic.pfbbin0 -> 48220 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-Medium.pfbbin0 -> 45804 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-MediumItalic.pfbbin0 -> 48592 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-Semibold.pfbbin0 -> 47003 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-SemiboldItalic.pfbbin0 -> 48911 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-Thin.pfbbin0 -> 45547 bytes
-rw-r--r--fonts/cooperhewitt/type1/CpHwt-ThinItalic.pfbbin0 -> 47393 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Bold-sup-ly1.vfbin0 -> 1644 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Bold-sup-t1.vfbin0 -> 1688 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ly1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ot1.vfbin0 -> 1340 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Bold-tlf-t1.vfbin0 -> 1732 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ts1.vfbin0 -> 488 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-ly1.vfbin0 -> 1652 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-t1.vfbin0 -> 1696 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ly1.vfbin0 -> 1740 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ot1.vfbin0 -> 1344 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-t1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ts1.vfbin0 -> 496 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Book-sup-ly1.vfbin0 -> 1644 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Book-sup-t1.vfbin0 -> 1688 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Book-tlf-ly1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Book-tlf-ot1.vfbin0 -> 1340 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Book-tlf-t1.vfbin0 -> 1732 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Book-tlf-ts1.vfbin0 -> 488 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-ly1.vfbin0 -> 1652 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-t1.vfbin0 -> 1696 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ly1.vfbin0 -> 1740 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ot1.vfbin0 -> 1344 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-t1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ts1.vfbin0 -> 496 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Heavy-sup-ly1.vfbin0 -> 1644 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Heavy-sup-t1.vfbin0 -> 1688 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ly1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ot1.vfbin0 -> 1340 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-t1.vfbin0 -> 1732 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ts1.vfbin0 -> 492 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-ly1.vfbin0 -> 1652 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-t1.vfbin0 -> 1696 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ly1.vfbin0 -> 1744 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ot1.vfbin0 -> 1348 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-t1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ts1.vfbin0 -> 496 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Light-sup-ly1.vfbin0 -> 1644 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Light-sup-t1.vfbin0 -> 1688 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Light-tlf-ly1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Light-tlf-ot1.vfbin0 -> 1340 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Light-tlf-t1.vfbin0 -> 1732 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Light-tlf-ts1.vfbin0 -> 492 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-ly1.vfbin0 -> 1652 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-t1.vfbin0 -> 1696 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ly1.vfbin0 -> 1744 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ot1.vfbin0 -> 1348 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-t1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ts1.vfbin0 -> 496 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Medium-sup-ly1.vfbin0 -> 1648 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Medium-sup-t1.vfbin0 -> 1692 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ly1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ot1.vfbin0 -> 1340 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Medium-tlf-t1.vfbin0 -> 1732 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ts1.vfbin0 -> 492 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-ly1.vfbin0 -> 1652 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-t1.vfbin0 -> 1696 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ly1.vfbin0 -> 1744 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ot1.vfbin0 -> 1348 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-t1.vfbin0 -> 1740 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ts1.vfbin0 -> 496 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Semibold-sup-ly1.vfbin0 -> 1648 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Semibold-sup-t1.vfbin0 -> 1692 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ly1.vfbin0 -> 1740 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ot1.vfbin0 -> 1344 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-t1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ts1.vfbin0 -> 492 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-ly1.vfbin0 -> 1656 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-t1.vfbin0 -> 1700 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ly1.vfbin0 -> 1744 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ot1.vfbin0 -> 1348 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-t1.vfbin0 -> 1740 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ts1.vfbin0 -> 500 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Thin-sup-ly1.vfbin0 -> 1644 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Thin-sup-t1.vfbin0 -> 1688 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ly1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ot1.vfbin0 -> 1340 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Thin-tlf-t1.vfbin0 -> 1732 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ts1.vfbin0 -> 488 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-ly1.vfbin0 -> 1652 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-t1.vfbin0 -> 1696 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ly1.vfbin0 -> 1740 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ot1.vfbin0 -> 1344 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-t1.vfbin0 -> 1736 bytes
-rw-r--r--fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ts1.vfbin0 -> 496 bytes
-rw-r--r--macros/latex/contrib/docshots/DEPENDS.txt2
-rw-r--r--macros/latex/contrib/docshots/docshots.dtx93
-rw-r--r--macros/latex/contrib/docshots/docshots.pdfbin334497 -> 336674 bytes
-rw-r--r--macros/latex/contrib/ifoddpage/DEPENDS.txt1
-rw-r--r--macros/latex/contrib/ifoddpage/README.txt (renamed from macros/latex/contrib/ifoddpage/README)10
-rw-r--r--macros/latex/contrib/ifoddpage/ifoddpage.dtx47
-rw-r--r--macros/latex/contrib/ifoddpage/ifoddpage.pdfbin133988 -> 144874 bytes
-rw-r--r--macros/latex/contrib/mfirstuc/CHANGES52
-rw-r--r--macros/latex/contrib/mfirstuc/README14
-rw-r--r--macros/latex/contrib/mfirstuc/mfirstuc-code.pdfbin266637 -> 352549 bytes
-rw-r--r--macros/latex/contrib/mfirstuc/mfirstuc-manual.html3101
-rw-r--r--macros/latex/contrib/mfirstuc/mfirstuc-manual.pdfbin301928 -> 294879 bytes
-rw-r--r--macros/latex/contrib/mfirstuc/mfirstuc-manual.tex2495
-rw-r--r--macros/latex/contrib/mfirstuc/mfirstuc.dtx1484
-rw-r--r--macros/latex/contrib/mfirstuc/mfirstuc.ins10
-rw-r--r--macros/latex/contrib/mfirstuc/sample-mfirstuc.pdfbin121084 -> 122108 bytes
-rw-r--r--macros/latex/contrib/mfirstuc/sample-mfirstuc.tex292
-rw-r--r--support/chktex/ChkTeX.c91
-rw-r--r--support/chktex/ChkTeX.h24
-rw-r--r--support/chktex/ChkTeX.pdfbin0 -> 409006 bytes
-rw-r--r--support/chktex/ChkTeX.tex.in127
-rw-r--r--support/chktex/FindErrs.c317
-rw-r--r--support/chktex/FindErrs.h12
-rwxr-xr-xsupport/chktex/MakeChkTeXRC.pl71
-rw-r--r--support/chktex/Makefile.in32
-rw-r--r--support/chktex/NEWS42
-rw-r--r--support/chktex/OpSys.c88
-rw-r--r--support/chktex/OpSys.h34
-rw-r--r--support/chktex/Resource.c263
-rw-r--r--support/chktex/Resource.h6
-rw-r--r--support/chktex/Test.nore.out108
-rw-r--r--support/chktex/Test.pcre.out111
-rw-r--r--support/chktex/Test.posix-ere.out93
-rw-r--r--support/chktex/Test.tex81
-rw-r--r--support/chktex/Utility.c53
-rw-r--r--support/chktex/Utility.h8
-rw-r--r--support/chktex/aclocal.m46
-rw-r--r--support/chktex/chktexrc802
-rw-r--r--support/chktex/chktexrc.in989
-rw-r--r--support/chktex/config.h.in12
-rwxr-xr-xsupport/chktex/configure4039
-rw-r--r--support/chktex/configure.ac (renamed from support/chktex/configure.in)10
-rw-r--r--support/chktex/input/file8
-rwxr-xr-xsupport/chktex/install-sh174
-rw-r--r--support/chktex/m4/ax_append_flag.m450
-rw-r--r--support/chktex/m4/ax_cflags_strict_prototypes.m4153
-rw-r--r--support/chktex/m4/ax_require_defined.m437
-rw-r--r--support/chktex/tests/main.expected27
-rw-r--r--support/chktex/tests/main.tex14
-rwxr-xr-xsupport/chktex/tests/run-tests.sh137
-rw-r--r--support/chktex/tests/sub1/file.tex8
-rw-r--r--support/chktex/tests/sub1/subsub/subsubfile.tex2
-rw-r--r--support/chktex/tests/sub2/file1.tex7
-rw-r--r--support/chktex/tests/sub2/file2.tex2
-rw-r--r--support/sty2dtx/README.txt (renamed from support/sty2dtx/README)15
-rw-r--r--support/sty2dtx/sty2dtx.154
-rw-r--r--support/sty2dtx/sty2dtx.pdfbin140340 -> 156538 bytes
-rwxr-xr-xsupport/sty2dtx/sty2dtx.pl35
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl1
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb631
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2418984 -> 2421460 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini8
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini8
-rw-r--r--timestamp2
387 files changed, 14072 insertions, 7222 deletions
diff --git a/FILES.byname b/FILES.byname
index b629664964..e5bd2944cb 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2035,12 +2035,12 @@
2022/09/23 | 1673 | biblio/citation-style-language/README.md
2022/09/23 | 11958 | biblio/citation-style-language/vancouver.csl
2022/09/23 | 591448 | biblio/citation-style-language.zip
-2022/10/08 | 1476 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2022/10/18 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2022/10/17 | 2603471 | biblio/ctan-bibdata/ctan.bib
-2022/10/17 | 3595046 | biblio/ctan-bibdata/ctan.pdf
+2022/10/18 | 2738615 | biblio/ctan-bibdata/ctan.bib
+2022/10/18 | 3592997 | biblio/ctan-bibdata/ctan.pdf
2022/10/08 | 1415 | biblio/ctan-bibdata/README
-2022/10/17 | 3982059 | biblio/ctan-bibdata.zip
+2022/10/18 | 3984099 | biblio/ctan-bibdata.zip
2022/02/06 | 3110 | biblio/pbibtex/pbibtex-base/cpp.awk
2022/02/06 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2022/02/06 | 22422 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -5414,7 +5414,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2022/10/17 | 118173 | FILES.last07days
+2022/10/18 | 129715 | FILES.last07days
2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs
2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf
2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf
@@ -26580,6 +26580,321 @@
1999/03/18 | 1512 | fonts/concrete/tfm/ccslc9.tfm
1999/03/18 | 1488 | fonts/concrete/tfm/ccti10.tfm
2005/05/20 | 35092 | fonts/concrete.zip
+2022/10/18 | 23234 | fonts/cooperhewitt/doc/cooperhewitt-samples.pdf
+2022/10/18 | 427 | fonts/cooperhewitt/doc/cooperhewitt-samples.tex
+2022/10/18 | 4422 | fonts/cooperhewitt/doc/OFL.txt
+2022/10/18 | 2874 | fonts/cooperhewitt/enc/cphwt_4je6jj.enc
+2022/10/18 | 3210 | fonts/cooperhewitt/enc/cphwt_kvtx4d.enc
+2022/10/18 | 2835 | fonts/cooperhewitt/enc/cphwt_psuovm.enc
+2022/10/18 | 2964 | fonts/cooperhewitt/enc/cphwt_r6y6f6.enc
+2022/10/18 | 2919 | fonts/cooperhewitt/enc/cphwt_sz67he.enc
+2022/10/18 | 2792 | fonts/cooperhewitt/enc/cphwt_tjvrzf.enc
+2022/10/18 | 2917 | fonts/cooperhewitt/enc/cphwt_vrwj46.enc
+2022/10/18 | 3359 | fonts/cooperhewitt/latex/CooperHewitt.sty
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/LY1CpHwt-Sup.fd
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/LY1CpHwt-TLF.fd
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/OT1CpHwt-Sup.fd
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/OT1CpHwt-TLF.fd
+2022/10/18 | 4420 | fonts/cooperhewitt/latex/T1CpHwt-Sup.fd
+2022/10/18 | 4420 | fonts/cooperhewitt/latex/T1CpHwt-TLF.fd
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/TS1CpHwt-TLF.fd
+2022/10/18 | 13036 | fonts/cooperhewitt/map/CooperHewitt.map
+2022/10/18 | 92092 | fonts/cooperhewitt/opentype/CooperHewitt-BoldItalic.otf
+2022/10/18 | 89976 | fonts/cooperhewitt/opentype/CooperHewitt-Bold.otf
+2022/10/18 | 92352 | fonts/cooperhewitt/opentype/CooperHewitt-BookItalic.otf
+2022/10/18 | 89696 | fonts/cooperhewitt/opentype/CooperHewitt-Book.otf
+2022/10/18 | 92056 | fonts/cooperhewitt/opentype/CooperHewitt-HeavyItalic.otf
+2022/10/18 | 89652 | fonts/cooperhewitt/opentype/CooperHewitt-Heavy.otf
+2022/10/18 | 92308 | fonts/cooperhewitt/opentype/CooperHewitt-LightItalic.otf
+2022/10/18 | 89336 | fonts/cooperhewitt/opentype/CooperHewitt-Light.otf
+2022/10/18 | 92244 | fonts/cooperhewitt/opentype/CooperHewitt-MediumItalic.otf
+2022/10/18 | 89836 | fonts/cooperhewitt/opentype/CooperHewitt-Medium.otf
+2022/10/18 | 92384 | fonts/cooperhewitt/opentype/CooperHewitt-SemiboldItalic.otf
+2022/10/18 | 90296 | fonts/cooperhewitt/opentype/CooperHewitt-Semibold.otf
+2022/10/18 | 89256 | fonts/cooperhewitt/opentype/CooperHewitt-ThinItalic.otf
+2022/10/18 | 88996 | fonts/cooperhewitt/opentype/CooperHewitt-Thin.otf
+2022/10/18 | 2286 | fonts/cooperhewitt/README
+2022/10/18 | 1720 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1--base.tfm
+2022/10/18 | 1724 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1.tfm
+2022/10/18 | 1212 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ot1.tfm
+2022/10/18 | 1716 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1--base.tfm
+2022/10/18 | 1724 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1.tfm
+2022/10/18 | 1704 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1--base.tfm
+2022/10/18 | 10696 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1.tfm
+2022/10/18 | 1184 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1--base.tfm
+2022/10/18 | 5592 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1.tfm
+2022/10/18 | 1688 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1--base.tfm
+2022/10/18 | 16684 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1.tfm
+2022/10/18 | 1300 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1--base.tfm
+2022/10/18 | 1320 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1--base.tfm
+2022/10/18 | 1604 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1.tfm
+2022/10/18 | 1104 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ot1.tfm
+2022/10/18 | 1604 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1--base.tfm
+2022/10/18 | 1612 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1--base.tfm
+2022/10/18 | 10592 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1.tfm
+2022/10/18 | 1100 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1--base.tfm
+2022/10/18 | 5508 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1--base.tfm
+2022/10/18 | 16596 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1.tfm
+2022/10/18 | 1264 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1--base.tfm
+2022/10/18 | 1284 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1.tfm
+2022/10/18 | 1684 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1--base.tfm
+2022/10/18 | 1688 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1.tfm
+2022/10/18 | 1196 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ot1.tfm
+2022/10/18 | 1684 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1--base.tfm
+2022/10/18 | 1692 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1.tfm
+2022/10/18 | 1664 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1--base.tfm
+2022/10/18 | 10656 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1.tfm
+2022/10/18 | 1164 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1--base.tfm
+2022/10/18 | 5572 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1.tfm
+2022/10/18 | 1652 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1--base.tfm
+2022/10/18 | 16648 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1--base.tfm
+2022/10/18 | 1300 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1.tfm
+2022/10/18 | 1592 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1--base.tfm
+2022/10/18 | 1596 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1.tfm
+2022/10/18 | 1104 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-ot1.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1--base.tfm
+2022/10/18 | 1608 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1.tfm
+2022/10/18 | 1592 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1--base.tfm
+2022/10/18 | 10584 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1.tfm
+2022/10/18 | 1100 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1--base.tfm
+2022/10/18 | 5508 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1.tfm
+2022/10/18 | 1596 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1--base.tfm
+2022/10/18 | 16592 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1.tfm
+2022/10/18 | 1260 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1--base.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1.tfm
+2022/10/18 | 1640 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1--base.tfm
+2022/10/18 | 1644 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1.tfm
+2022/10/18 | 1156 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ot1.tfm
+2022/10/18 | 1644 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1--base.tfm
+2022/10/18 | 1652 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1.tfm
+2022/10/18 | 1628 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1--base.tfm
+2022/10/18 | 10616 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1.tfm
+2022/10/18 | 1128 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1--base.tfm
+2022/10/18 | 5532 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1.tfm
+2022/10/18 | 1624 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1--base.tfm
+2022/10/18 | 16620 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1.tfm
+2022/10/18 | 1304 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1--base.tfm
+2022/10/18 | 1320 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1.tfm
+2022/10/18 | 1500 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1--base.tfm
+2022/10/18 | 1504 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1.tfm
+2022/10/18 | 1032 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ot1.tfm
+2022/10/18 | 1516 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1--base.tfm
+2022/10/18 | 1524 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1.tfm
+2022/10/18 | 1504 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1--base.tfm
+2022/10/18 | 10492 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1.tfm
+2022/10/18 | 1032 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1--base.tfm
+2022/10/18 | 5436 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1.tfm
+2022/10/18 | 1516 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1--base.tfm
+2022/10/18 | 16512 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1.tfm
+2022/10/18 | 1256 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1--base.tfm
+2022/10/18 | 1272 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1.tfm
+2022/10/18 | 1576 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1--base.tfm
+2022/10/18 | 1580 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1.tfm
+2022/10/18 | 1104 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ot1.tfm
+2022/10/18 | 1568 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1--base.tfm
+2022/10/18 | 1576 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1.tfm
+2022/10/18 | 1552 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1--base.tfm
+2022/10/18 | 10540 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1.tfm
+2022/10/18 | 1072 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1--base.tfm
+2022/10/18 | 5480 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1.tfm
+2022/10/18 | 1536 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1--base.tfm
+2022/10/18 | 16536 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1.tfm
+2022/10/18 | 1260 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1--base.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1.tfm
+2022/10/18 | 1484 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1--base.tfm
+2022/10/18 | 1488 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1.tfm
+2022/10/18 | 1024 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-ot1.tfm
+2022/10/18 | 1476 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1--base.tfm
+2022/10/18 | 1484 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1.tfm
+2022/10/18 | 1484 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1--base.tfm
+2022/10/18 | 10472 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1.tfm
+2022/10/18 | 1020 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1--base.tfm
+2022/10/18 | 5428 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1.tfm
+2022/10/18 | 1472 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1--base.tfm
+2022/10/18 | 16472 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1.tfm
+2022/10/18 | 1244 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1--base.tfm
+2022/10/18 | 1264 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1.tfm
+2022/10/18 | 1708 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1--base.tfm
+2022/10/18 | 1712 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1.tfm
+2022/10/18 | 1212 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ot1.tfm
+2022/10/18 | 1708 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1--base.tfm
+2022/10/18 | 1716 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1.tfm
+2022/10/18 | 1676 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1--base.tfm
+2022/10/18 | 10668 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1.tfm
+2022/10/18 | 1168 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1--base.tfm
+2022/10/18 | 5576 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1.tfm
+2022/10/18 | 1664 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1--base.tfm
+2022/10/18 | 16660 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1.tfm
+2022/10/18 | 1284 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1--base.tfm
+2022/10/18 | 1304 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1.tfm
+2022/10/18 | 1596 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1--base.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1.tfm
+2022/10/18 | 1108 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ot1.tfm
+2022/10/18 | 1592 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1--base.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1.tfm
+2022/10/18 | 1596 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1--base.tfm
+2022/10/18 | 10588 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1.tfm
+2022/10/18 | 1104 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1--base.tfm
+2022/10/18 | 5512 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1.tfm
+2022/10/18 | 1588 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1--base.tfm
+2022/10/18 | 16584 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1.tfm
+2022/10/18 | 1260 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1--base.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1.tfm
+2022/10/18 | 1732 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1--base.tfm
+2022/10/18 | 1736 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1.tfm
+2022/10/18 | 1224 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ot1.tfm
+2022/10/18 | 1724 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1--base.tfm
+2022/10/18 | 1732 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1.tfm
+2022/10/18 | 1704 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1--base.tfm
+2022/10/18 | 10696 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1.tfm
+2022/10/18 | 1188 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1--base.tfm
+2022/10/18 | 5596 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1.tfm
+2022/10/18 | 1688 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1--base.tfm
+2022/10/18 | 16684 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1.tfm
+2022/10/18 | 1284 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1--base.tfm
+2022/10/18 | 1304 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1.tfm
+2022/10/18 | 1604 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1--base.tfm
+2022/10/18 | 1608 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1.tfm
+2022/10/18 | 1112 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ot1.tfm
+2022/10/18 | 1612 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1--base.tfm
+2022/10/18 | 1620 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1.tfm
+2022/10/18 | 1604 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1--base.tfm
+2022/10/18 | 10596 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1.tfm
+2022/10/18 | 1108 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1--base.tfm
+2022/10/18 | 5516 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1.tfm
+2022/10/18 | 1608 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1--base.tfm
+2022/10/18 | 16604 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1.tfm
+2022/10/18 | 1260 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1--base.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1.tfm
+2022/10/18 | 1624 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1--base.tfm
+2022/10/18 | 1628 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1.tfm
+2022/10/18 | 1144 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ot1.tfm
+2022/10/18 | 1616 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1--base.tfm
+2022/10/18 | 1624 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1--base.tfm
+2022/10/18 | 10592 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1.tfm
+2022/10/18 | 1112 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1--base.tfm
+2022/10/18 | 5520 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1.tfm
+2022/10/18 | 1584 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1--base.tfm
+2022/10/18 | 16584 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1.tfm
+2022/10/18 | 1264 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1--base.tfm
+2022/10/18 | 1288 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1.tfm
+2022/10/18 | 1524 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1--base.tfm
+2022/10/18 | 1528 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1.tfm
+2022/10/18 | 1072 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ot1.tfm
+2022/10/18 | 1516 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1--base.tfm
+2022/10/18 | 1524 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1.tfm
+2022/10/18 | 1524 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1--base.tfm
+2022/10/18 | 10516 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1.tfm
+2022/10/18 | 1068 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1--base.tfm
+2022/10/18 | 5476 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1.tfm
+2022/10/18 | 1512 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1--base.tfm
+2022/10/18 | 16512 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1.tfm
+2022/10/18 | 1252 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1--base.tfm
+2022/10/18 | 1276 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1.tfm
+2022/10/18 | 49061 | fonts/cooperhewitt/type1/CpHwt-BoldItalic.pfb
+2022/10/18 | 46394 | fonts/cooperhewitt/type1/CpHwt-Bold.pfb
+2022/10/18 | 48713 | fonts/cooperhewitt/type1/CpHwt-BookItalic.pfb
+2022/10/18 | 45623 | fonts/cooperhewitt/type1/CpHwt-Book.pfb
+2022/10/18 | 48265 | fonts/cooperhewitt/type1/CpHwt-HeavyItalic.pfb
+2022/10/18 | 45193 | fonts/cooperhewitt/type1/CpHwt-Heavy.pfb
+2022/10/18 | 48220 | fonts/cooperhewitt/type1/CpHwt-LightItalic.pfb
+2022/10/18 | 45768 | fonts/cooperhewitt/type1/CpHwt-Light.pfb
+2022/10/18 | 48592 | fonts/cooperhewitt/type1/CpHwt-MediumItalic.pfb
+2022/10/18 | 45804 | fonts/cooperhewitt/type1/CpHwt-Medium.pfb
+2022/10/18 | 48911 | fonts/cooperhewitt/type1/CpHwt-SemiboldItalic.pfb
+2022/10/18 | 47003 | fonts/cooperhewitt/type1/CpHwt-Semibold.pfb
+2022/10/18 | 47393 | fonts/cooperhewitt/type1/CpHwt-ThinItalic.pfb
+2022/10/18 | 45547 | fonts/cooperhewitt/type1/CpHwt-Thin.pfb
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-ly1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-t1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ly1.vf
+2022/10/18 | 1344 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ot1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-t1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ts1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Bold-sup-ly1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Bold-sup-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ly1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ot1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Bold-tlf-t1.vf
+2022/10/18 | 488 | fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ts1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-ly1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-t1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ly1.vf
+2022/10/18 | 1344 | fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ot1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-t1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ts1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Book-sup-ly1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Book-sup-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Book-tlf-ly1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Book-tlf-ot1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Book-tlf-t1.vf
+2022/10/18 | 488 | fonts/cooperhewitt/vf/CpHwt-Book-tlf-ts1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-ly1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-t1.vf
+2022/10/18 | 1744 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ly1.vf
+2022/10/18 | 1348 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ot1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-t1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ts1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Heavy-sup-ly1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Heavy-sup-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ly1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ot1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-t1.vf
+2022/10/18 | 492 | fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ts1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-ly1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-t1.vf
+2022/10/18 | 1744 | fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ly1.vf
+2022/10/18 | 1348 | fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ot1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-t1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ts1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Light-sup-ly1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Light-sup-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Light-tlf-ly1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Light-tlf-ot1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Light-tlf-t1.vf
+2022/10/18 | 492 | fonts/cooperhewitt/vf/CpHwt-Light-tlf-ts1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-ly1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-t1.vf
+2022/10/18 | 1744 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ly1.vf
+2022/10/18 | 1348 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ot1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-t1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ts1.vf
+2022/10/18 | 1648 | fonts/cooperhewitt/vf/CpHwt-Medium-sup-ly1.vf
+2022/10/18 | 1692 | fonts/cooperhewitt/vf/CpHwt-Medium-sup-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ly1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ot1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Medium-tlf-t1.vf
+2022/10/18 | 492 | fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ts1.vf
+2022/10/18 | 1656 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-ly1.vf
+2022/10/18 | 1700 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-t1.vf
+2022/10/18 | 1744 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ly1.vf
+2022/10/18 | 1348 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ot1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-t1.vf
+2022/10/18 | 500 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ts1.vf
+2022/10/18 | 1648 | fonts/cooperhewitt/vf/CpHwt-Semibold-sup-ly1.vf
+2022/10/18 | 1692 | fonts/cooperhewitt/vf/CpHwt-Semibold-sup-t1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ly1.vf
+2022/10/18 | 1344 | fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ot1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-t1.vf
+2022/10/18 | 492 | fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ts1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-ly1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-t1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ly1.vf
+2022/10/18 | 1344 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ot1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-t1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ts1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Thin-sup-ly1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Thin-sup-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ly1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ot1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Thin-tlf-t1.vf
+2022/10/18 | 488 | fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ts1.vf
+2022/10/18 | 1743963 | fonts/cooperhewitt.zip
2019/12/11 | 153427 | fonts/cormorantgaramond/doc/cormorantgaramond.pdf
2019/12/11 | 1000 | fonts/cormorantgaramond/doc/cormorantgaramond.tex
2022/09/15 | 4413 | fonts/cormorantgaramond/doc/OFL.txt
@@ -189200,6 +189515,7 @@
2019/06/24 | 1223758 | install/fonts/comfortaa.tds.zip
2020/04/26 | 1498480 | install/fonts/comicneue.tds.zip
2013/12/19 | 329529 | install/fonts/comicsans.tds.zip
+2022/10/18 | 1771321 | install/fonts/cooperhewitt.tds.zip
2022/09/16 | 9133494 | install/fonts/cormorantgaramond.tds.zip
2022/09/30 | 5269694 | install/fonts/crimsonpro.tds.zip
2022/09/30 | 1688859 | install/fonts/crimson.tds.zip
@@ -189507,7 +189823,6 @@
2009/04/05 | 198256 | install/macros/latex/contrib/IEEEconf.tds.zip
2018/04/16 | 41342 | install/macros/latex/contrib/ifmtarg.tds.zip
2011/06/27 | 237481 | install/macros/latex/contrib/ifnextok.tds.zip
-2016/04/23 | 140462 | install/macros/latex/contrib/ifoddpage.tds.zip
2017/10/13 | 159470 | install/macros/latex/contrib/ifplatform.tds.zip
2016/10/15 | 542116 | install/macros/latex/contrib/imakeidx.tds.zip
2019/03/04 | 176811 | install/macros/latex/contrib/impnattypo.tds.zip
@@ -189554,7 +189869,7 @@
2022/08/04 | 7385937 | install/macros/latex/contrib/media9.tds.zip
2022/07/29 | 3655356 | install/macros/latex/contrib/memoir.tds.zip
2020/08/06 | 24409080 | install/macros/latex/contrib/mercatormap.tds.zip
-2021/10/15 | 722347 | install/macros/latex/contrib/mfirstuc.tds.zip
+2022/10/18 | 815562 | install/macros/latex/contrib/mfirstuc.tds.zip
2022/06/23 | 3038638 | install/macros/latex/contrib/microtype.tds.zip
2016/07/03 | 499067 | install/macros/latex/contrib/milog.tds.zip
2013/06/21 | 285067 | install/macros/latex/contrib/minibox.tds.zip
@@ -214227,13 +214542,13 @@
2012/03/22 | 988 | macros/latex/contrib/docmute/docmute.sty
2012/03/22 | 350 | macros/latex/contrib/docmute/README
2012/03/22 | 150730 | macros/latex/contrib/docmute.zip
-2022/10/17 | 74 | macros/latex/contrib/docshots/DEPENDS.txt
-2022/10/17 | 16888 | macros/latex/contrib/docshots/docshots.dtx
-2022/10/17 | 2634 | macros/latex/contrib/docshots/docshots.ins
-2022/10/17 | 334497 | macros/latex/contrib/docshots/docshots.pdf
-2022/10/17 | 1083 | macros/latex/contrib/docshots/LICENSE.txt
-2022/10/17 | 1298 | macros/latex/contrib/docshots/README.md
-2022/10/17 | 335351 | macros/latex/contrib/docshots.zip
+2022/10/18 | 99 | macros/latex/contrib/docshots/DEPENDS.txt
+2022/10/18 | 18575 | macros/latex/contrib/docshots/docshots.dtx
+2022/10/18 | 2634 | macros/latex/contrib/docshots/docshots.ins
+2022/10/18 | 336674 | macros/latex/contrib/docshots/docshots.pdf
+2022/10/18 | 1083 | macros/latex/contrib/docshots/LICENSE.txt
+2022/10/18 | 1298 | macros/latex/contrib/docshots/README.md
+2022/10/18 | 337775 | macros/latex/contrib/docshots.zip
2014/06/27 | 39453 | macros/latex/contrib/doctools/doctools.dtx
2014/06/27 | 1134 | macros/latex/contrib/doctools/doctools.ins
2014/06/27 | 605871 | macros/latex/contrib/doctools/doctools.pdf
@@ -219999,11 +220314,12 @@
2011/06/27 | 16686 | macros/latex/contrib/ifnextok/testIfNT.pdf
2011/06/26 | 16686 | macros/latex/contrib/ifnextok/testINT.pdf
2011/06/27 | 250047 | macros/latex/contrib/ifnextok.zip
-2016/04/23 | 10806 | macros/latex/contrib/ifoddpage/ifoddpage.dtx
-2016/04/23 | 172 | macros/latex/contrib/ifoddpage/ifoddpage.ins
-2016/04/23 | 133988 | macros/latex/contrib/ifoddpage/ifoddpage.pdf
-2016/04/23 | 1023 | macros/latex/contrib/ifoddpage/README
-2016/04/23 | 137868 | macros/latex/contrib/ifoddpage.zip
+2022/10/18 | 58 | macros/latex/contrib/ifoddpage/DEPENDS.txt
+2022/10/18 | 12550 | macros/latex/contrib/ifoddpage/ifoddpage.dtx
+2022/10/18 | 172 | macros/latex/contrib/ifoddpage/ifoddpage.ins
+2022/10/18 | 144874 | macros/latex/contrib/ifoddpage/ifoddpage.pdf
+2022/10/18 | 1098 | macros/latex/contrib/ifoddpage/README.txt
+2022/10/18 | 148155 | macros/latex/contrib/ifoddpage.zip
2017/10/13 | 14345 | macros/latex/contrib/ifplatform/ifplatform.dtx
2017/10/13 | 1693 | macros/latex/contrib/ifplatform/ifplatform.ins
2017/10/13 | 151398 | macros/latex/contrib/ifplatform/ifplatform.pdf
@@ -223266,17 +223582,16 @@
1996/09/01 | 91 | macros/latex/contrib/mff/test.bat
1996/09/01 | 287 | macros/latex/contrib/mff/test.tex
2007/07/21 | 231956 | macros/latex/contrib/mff.zip
-2021/10/15 | 2101 | macros/latex/contrib/mfirstuc/CHANGES
-2021/10/15 | 266637 | macros/latex/contrib/mfirstuc/mfirstuc-code.pdf
-2021/10/15 | 39846 | macros/latex/contrib/mfirstuc/mfirstuc.dtx
-2021/10/15 | 1267 | macros/latex/contrib/mfirstuc/mfirstuc.ins
-2021/10/15 | 80414 | macros/latex/contrib/mfirstuc/mfirstuc-manual.html
-2021/10/15 | 301928 | macros/latex/contrib/mfirstuc/mfirstuc-manual.pdf
-2021/10/15 | 27833 | macros/latex/contrib/mfirstuc/mfirstuc-manual.tex
-2021/10/15 | 1321 | macros/latex/contrib/mfirstuc/README
-2021/10/15 | 121084 | macros/latex/contrib/mfirstuc/sample-mfirstuc.pdf
-2021/10/15 | 7811 | macros/latex/contrib/mfirstuc/sample-mfirstuc.tex
-2021/10/15 | 714224 | macros/latex/contrib/mfirstuc.zip
+2022/10/18 | 3826 | macros/latex/contrib/mfirstuc/CHANGES
+2022/10/18 | 352549 | macros/latex/contrib/mfirstuc/mfirstuc-code.pdf
+2022/10/18 | 63972 | macros/latex/contrib/mfirstuc/mfirstuc.dtx
+2022/10/18 | 1432 | macros/latex/contrib/mfirstuc/mfirstuc.ins
+2022/10/18 | 225676 | macros/latex/contrib/mfirstuc/mfirstuc-manual.html
+2022/10/18 | 294879 | macros/latex/contrib/mfirstuc/mfirstuc-manual.pdf
+2022/10/18 | 62430 | macros/latex/contrib/mfirstuc/mfirstuc-manual.tex
+2022/10/18 | 1452 | macros/latex/contrib/mfirstuc/README
+2022/10/18 | 122108 | macros/latex/contrib/mfirstuc/sample-mfirstuc.pdf
+2022/10/18 | 800756 | macros/latex/contrib/mfirstuc.zip
1999/03/18 | 883 | macros/latex/contrib/mflogo/CATALOGUE
1999/03/18 | 2432 | macros/latex/contrib/mflogo/Makefile
1999/03/18 | 15309 | macros/latex/contrib/mflogo/mflogo.dtx
@@ -272354,47 +272669,59 @@
2019/11/05 | 1424 | support/chklref/release.sh
2019/11/05 | 6 | support/chklref/VERSION
2019/11/05 | 310066 | support/chklref.zip
-2016/09/10 | 752 | support/chktex/aclocal.m4
-2008/07/16 | 1126 | support/chktex/autogen.sh
-2012/05/15 | 3154 | support/chktex/chktex.1
-2016/02/02 | 29165 | support/chktex/ChkTeX.c
-2016/09/10 | 10823 | support/chktex/ChkTeX.h
-2016/02/03 | 23700 | support/chktex/chktexrc
-2016/02/03 | 73990 | support/chktex/ChkTeX.tex.in
-2003/06/14 | 194 | support/chktex/ChkTeX.texrc
-2012/06/10 | 1313 | support/chktex/chkweb
-2006/11/01 | 2904 | support/chktex/chkweb.1
-2013/03/30 | 4350 | support/chktex/config.h.in
-2016/09/10 | 175454 | support/chktex/configure
-2016/09/10 | 5556 | support/chktex/configure.in
-2008/09/04 | 18883 | support/chktex/COPYING
-2008/09/04 | 3013 | support/chktex/deweb.1
-2015/09/24 | 2876 | support/chktex/deweb.in
-2016/09/10 | 60597 | support/chktex/FindErrs.c
-2016/02/02 | 6368 | support/chktex/FindErrs.h
-2003/05/03 | 60 | support/chktex/input.tex
-2016/09/10 | 14675 | support/chktex/install-sh
-2008/09/04 | 975 | support/chktex/lacheck
-2008/07/16 | 6881 | support/chktex/m4/ax_cflags_strict_prototypes.m4
-2003/05/03 | 3908 | support/chktex/m4/vl_prog_cc_warnings.m4
-2016/09/10 | 8867 | support/chktex/Makefile.in
-2008/09/04 | 254 | support/chktex/MakeHTML.pl
-2016/09/10 | 8102 | support/chktex/NEWS
-2012/10/27 | 11670 | support/chktex/OpSys.c
-2010/12/18 | 6178 | support/chktex/OpSys.h
-2012/05/29 | 1021 | support/chktex/README
-2012/10/27 | 14679 | support/chktex/Resource.c
-2014/05/10 | 2509 | support/chktex/Resource.h
-2008/08/14 | 815 | support/chktex/rmeheader.in
-2016/09/10 | 10 | support/chktex/stamp-h.in
-2016/02/02 | 25754 | support/chktex/Test.nore.out
-2016/02/02 | 26223 | support/chktex/Test.pcre.out
-2016/02/02 | 26222 | support/chktex/Test.posix-ere.out
-2015/12/08 | 5421 | support/chktex/Test.tex
-2004/04/03 | 249 | support/chktex/types.h
-2016/09/10 | 20168 | support/chktex/Utility.c
-2012/10/27 | 5042 | support/chktex/Utility.h
-2016/09/10 | 177347 | support/chktex.zip
+2022/10/18 | 828 | support/chktex/aclocal.m4
+2022/10/18 | 1126 | support/chktex/autogen.sh
+2022/10/18 | 3154 | support/chktex/chktex.1
+2022/10/18 | 31008 | support/chktex/ChkTeX.c
+2022/10/18 | 10953 | support/chktex/ChkTeX.h
+2022/10/18 | 409006 | support/chktex/ChkTeX.pdf
+2022/10/18 | 31376 | support/chktex/chktexrc.in
+2022/10/18 | 76529 | support/chktex/ChkTeX.tex.in
+2022/10/18 | 194 | support/chktex/ChkTeX.texrc
+2022/10/18 | 1313 | support/chktex/chkweb
+2022/10/18 | 2904 | support/chktex/chkweb.1
+2022/10/18 | 4495 | support/chktex/config.h.in
+2022/10/18 | 193216 | support/chktex/configure
+2022/10/18 | 5573 | support/chktex/configure.ac
+2022/10/18 | 18883 | support/chktex/COPYING
+2022/10/18 | 3013 | support/chktex/deweb.1
+2022/10/18 | 2876 | support/chktex/deweb.in
+2022/10/18 | 66845 | support/chktex/FindErrs.c
+2022/10/18 | 6643 | support/chktex/FindErrs.h
+2022/10/18 | 307 | support/chktex/input/file
+2022/10/18 | 60 | support/chktex/input.tex
+2022/10/18 | 15358 | support/chktex/install-sh
+2022/10/18 | 975 | support/chktex/lacheck
+2022/10/18 | 1552 | support/chktex/m4/ax_append_flag.m4
+2022/10/18 | 3566 | support/chktex/m4/ax_cflags_strict_prototypes.m4
+2022/10/18 | 1218 | support/chktex/m4/ax_require_defined.m4
+2022/10/18 | 3908 | support/chktex/m4/vl_prog_cc_warnings.m4
+2022/10/18 | 1506 | support/chktex/MakeChkTeXRC.pl
+2022/10/18 | 9370 | support/chktex/Makefile.in
+2022/10/18 | 254 | support/chktex/MakeHTML.pl
+2022/10/18 | 10683 | support/chktex/NEWS
+2022/10/18 | 13898 | support/chktex/OpSys.c
+2022/10/18 | 7033 | support/chktex/OpSys.h
+2022/10/18 | 1021 | support/chktex/README
+2022/10/18 | 15347 | support/chktex/Resource.c
+2022/10/18 | 2604 | support/chktex/Resource.h
+2022/10/18 | 815 | support/chktex/rmeheader.in
+2022/10/18 | 10 | support/chktex/stamp-h.in
+2022/10/18 | 28879 | support/chktex/Test.nore.out
+2022/10/18 | 30180 | support/chktex/Test.pcre.out
+2022/10/18 | 29116 | support/chktex/Test.posix-ere.out
+2022/10/18 | 629 | support/chktex/tests/main.expected
+2022/10/18 | 177 | support/chktex/tests/main.tex
+2022/10/18 | 3478 | support/chktex/tests/run-tests.sh
+2022/10/18 | 75 | support/chktex/tests/sub1/file.tex
+2022/10/18 | 28 | support/chktex/tests/sub1/subsub/subsubfile.tex
+2022/10/18 | 90 | support/chktex/tests/sub2/file1.tex
+2022/10/18 | 27 | support/chktex/tests/sub2/file2.tex
+2022/10/18 | 7066 | support/chktex/Test.tex
+2022/10/18 | 249 | support/chktex/types.h
+2022/10/18 | 21274 | support/chktex/Utility.c
+2022/10/18 | 4879 | support/chktex/Utility.h
+2022/10/18 | 594607 | support/chktex.zip
2020/05/20 | 69146 | support/classpack/classpack.dtx
2020/05/20 | 2206 | support/classpack/classpack.ins
2020/05/20 | 148774 | support/classpack/classpack.pdf
@@ -276866,11 +277193,11 @@
2015/10/25 | 4167 | support/srcredact/twain2-uppercase.tex
2015/05/28 | 4060 | support/srcredact/twain-edited.tex
2015/10/25 | 729747 | support/srcredact.zip
-2012/11/07 | 5256 | support/sty2dtx/README
-2012/11/07 | 11190 | support/sty2dtx/sty2dtx.1
-2012/11/07 | 140340 | support/sty2dtx/sty2dtx.pdf
-2012/11/07 | 30595 | support/sty2dtx/sty2dtx.pl
-2012/11/07 | 154381 | support/sty2dtx.zip
+2022/10/18 | 5431 | support/sty2dtx/README.txt
+2022/10/18 | 11531 | support/sty2dtx/sty2dtx.1
+2022/10/18 | 156538 | support/sty2dtx/sty2dtx.pdf
+2022/10/18 | 30802 | support/sty2dtx/sty2dtx.pl
+2022/10/18 | 168168 | support/sty2dtx.zip
2010/02/16 | 722 | support/style_showcase/build_web_page.sh
2010/02/14 | 3266 | support/style_showcase/math.text
2010/02/14 | 316 | support/style_showcase/plain.text
@@ -277603,7 +277930,7 @@
2021/05/03 | 629 | support/TeX4ht/doc/README
2020/08/24 | 358454 | support/TeX4ht/doc/TeX4ht-doc.tex
2021/05/11 | 262 | support/TeX4ht/README
-2022/10/11 | 203664 | support/TeX4ht/source/ChangeLog
+2022/10/17 | 204029 | support/TeX4ht/source/ChangeLog
2021/05/03 | 1375 | support/TeX4ht/source/checklog.lua
2021/05/03 | 1189 | support/TeX4ht/source/common-code.tex
2021/05/03 | 2727 | support/TeX4ht/source/common-info.tex
@@ -277615,7 +277942,7 @@
2021/05/03 | 1121 | support/TeX4ht/source/README
2021/05/03 | 1744 | support/TeX4ht/source/t1fontmake.lua
2021/05/03 | 297 | support/TeX4ht/source/t1fontsample.tex
-2022/10/04 | 1133410 | support/TeX4ht/source/tex4ht-4ht.tex
+2022/10/17 | 1133473 | support/TeX4ht/source/tex4ht-4ht.tex
2021/05/03 | 7127 | support/TeX4ht/source/tex4ht-auto-script.tex
2021/05/16 | 1539 | support/TeX4ht/source/tex4ht-bibtex2.tex
2022/06/05 | 21307 | support/TeX4ht/source/tex4ht-cond4ht.tex
@@ -277657,7 +277984,7 @@
2021/05/03 | 22748 | support/TeX4ht/source/tex4ht-jsmath.tex
2021/05/03 | 104631 | support/TeX4ht/source/tex4ht-jsml.tex
2021/05/03 | 90707 | support/TeX4ht/source/tex4ht-jsml-xtpipes.tex
-2022/10/07 | 6126 | support/TeX4ht/source/tex4ht-mathjax.tex
+2022/10/17 | 6171 | support/TeX4ht/source/tex4ht-mathjax.tex
2021/05/03 | 102444 | support/TeX4ht/source/tex4ht-mathltx.tex
2022/10/05 | 145166 | support/TeX4ht/source/tex4ht-mathml.tex
2021/05/03 | 8860 | support/TeX4ht/source/tex4ht-mathplayer.tex
@@ -279435,7 +279762,6 @@
2015/04/26 | 2061 | systems/doc/aleph/News
2006/01/09 | 197 | systems/doc/aleph/readme.txt
2019/06/21 | 1297 | systems/doc/aleph.zip
-2019/01/04 | 355998 | systems/doc/chktex/ChkTeX.pdf
2020/06/21 | 267377 | systems/doc/dvipdfmx/dvipdfmx.pdf
2015/03/30 | 179950 | systems/doc/dvipdfmx/dvipdfmx-special.pdf
2015/03/30 | 28136 | systems/doc/dvipdfmx/dvipdfmx-special.tex
@@ -281603,9 +281929,9 @@
2022/05/18 | 312532 | systems/texlive/tlnet/archive/adjmulticol.doc.r63320.tar.xz
2022/05/18 | 3080 | systems/texlive/tlnet/archive/adjmulticol.r63320.tar.xz
2022/05/18 | 7400 | systems/texlive/tlnet/archive/adjmulticol.source.r63320.tar.xz
-2020/09/08 | 719424 | systems/texlive/tlnet/archive/adjustbox.doc.r56291.tar.xz
-2020/09/08 | 13596 | systems/texlive/tlnet/archive/adjustbox.r56291.tar.xz
-2020/09/08 | 49556 | systems/texlive/tlnet/archive/adjustbox.source.r56291.tar.xz
+2022/10/18 | 739224 | systems/texlive/tlnet/archive/adjustbox.doc.r64731.tar.xz
+2022/10/18 | 13600 | systems/texlive/tlnet/archive/adjustbox.r64731.tar.xz
+2022/10/18 | 49568 | systems/texlive/tlnet/archive/adjustbox.source.r64731.tar.xz
2019/08/01 | 2169892 | systems/texlive/tlnet/archive/adobemapping.r51787.tar.xz
2019/02/28 | 690600 | systems/texlive/tlnet/archive/adrconv.doc.r46817.tar.xz
2019/02/28 | 2812 | systems/texlive/tlnet/archive/adrconv.r46817.tar.xz
@@ -282880,9 +283206,9 @@
2019/02/28 | 362388 | systems/texlive/tlnet/archive/bitelist.doc.r25779.tar.xz
2019/02/28 | 5352 | systems/texlive/tlnet/archive/bitelist.r25779.tar.xz
2019/02/28 | 6228 | systems/texlive/tlnet/archive/bitelist.source.r25779.tar.xz
-2022/10/05 | 953148 | systems/texlive/tlnet/archive/bithesis.doc.r64619.tar.xz
-2022/10/05 | 20580 | systems/texlive/tlnet/archive/bithesis.r64619.tar.xz
-2022/10/05 | 37960 | systems/texlive/tlnet/archive/bithesis.source.r64619.tar.xz
+2022/10/18 | 959396 | systems/texlive/tlnet/archive/bithesis.doc.r64727.tar.xz
+2022/10/18 | 21036 | systems/texlive/tlnet/archive/bithesis.r64727.tar.xz
+2022/10/18 | 38396 | systems/texlive/tlnet/archive/bithesis.source.r64727.tar.xz
2019/02/28 | 175700 | systems/texlive/tlnet/archive/bitpattern.doc.r39073.tar.xz
2019/02/28 | 2156 | systems/texlive/tlnet/archive/bitpattern.r39073.tar.xz
2019/02/28 | 6764 | systems/texlive/tlnet/archive/bitpattern.source.r39073.tar.xz
@@ -283732,14 +284058,14 @@
2020/09/08 | 221632 | systems/texlive/tlnet/archive/collcell.doc.r56291.tar.xz
2020/09/08 | 2252 | systems/texlive/tlnet/archive/collcell.r56291.tar.xz
2020/09/08 | 7536 | systems/texlive/tlnet/archive/collcell.source.r56291.tar.xz
-2020/09/08 | 270912 | systems/texlive/tlnet/archive/collectbox.doc.r56291.tar.xz
-2020/09/08 | 2876 | systems/texlive/tlnet/archive/collectbox.r56291.tar.xz
-2020/09/08 | 8064 | systems/texlive/tlnet/archive/collectbox.source.r56291.tar.xz
+2022/10/18 | 165956 | systems/texlive/tlnet/archive/collectbox.doc.r64730.tar.xz
+2022/10/18 | 2864 | systems/texlive/tlnet/archive/collectbox.r64730.tar.xz
+2022/10/18 | 8096 | systems/texlive/tlnet/archive/collectbox.source.r64730.tar.xz
2021/05/11 | 624 | systems/texlive/tlnet/archive/collection-basic.r59159.tar.xz
2022/08/24 | 1276 | systems/texlive/tlnet/archive/collection-bibtexextra.r64180.tar.xz
2022/09/20 | 964 | systems/texlive/tlnet/archive/collection-binextra.r64447.tar.xz
2020/03/04 | 596 | systems/texlive/tlnet/archive/collection-context.r54074.tar.xz
-2022/10/16 | 1984 | systems/texlive/tlnet/archive/collection-fontsextra.r64712.tar.xz
+2022/10/18 | 1988 | systems/texlive/tlnet/archive/collection-fontsextra.r64734.tar.xz
2020/03/04 | 560 | systems/texlive/tlnet/archive/collection-fontsrecommended.r54074.tar.xz
2021/12/03 | 536 | systems/texlive/tlnet/archive/collection-fontutils.r61207.tar.xz
2022/02/27 | 584 | systems/texlive/tlnet/archive/collection-formatsextra.r62226.tar.xz
@@ -284722,9 +285048,9 @@
2019/02/28 | 3156 | systems/texlive/tlnet/archive/docmute.source.r25741.tar.xz
2019/02/28 | 1508 | systems/texlive/tlnet/archive/doc-pictex.doc.r24927.tar.xz
2019/02/28 | 468 | systems/texlive/tlnet/archive/doc-pictex.r24927.tar.xz
-2022/10/17 | 289040 | systems/texlive/tlnet/archive/docshots.doc.r64722.tar.xz
-2022/10/17 | 2236 | systems/texlive/tlnet/archive/docshots.r64722.tar.xz
-2022/10/17 | 4376 | systems/texlive/tlnet/archive/docshots.source.r64722.tar.xz
+2022/10/18 | 328996 | systems/texlive/tlnet/archive/docshots.doc.r64729.tar.xz
+2022/10/18 | 2420 | systems/texlive/tlnet/archive/docshots.r64729.tar.xz
+2022/10/18 | 6004 | systems/texlive/tlnet/archive/docshots.source.r64729.tar.xz
2021/12/31 | 260928 | systems/texlive/tlnet/archive/docsurvey.doc.r61447.tar.xz
2021/12/31 | 548 | systems/texlive/tlnet/archive/docsurvey.r61447.tar.xz
2019/02/28 | 603152 | systems/texlive/tlnet/archive/doctools.doc.r34474.tar.xz
@@ -286241,9 +286567,9 @@
2019/02/28 | 41296 | systems/texlive/tlnet/archive/frederika2016.r42157.tar.xz
2019/02/28 | 142332 | systems/texlive/tlnet/archive/frege.doc.r27417.tar.xz
2019/02/28 | 4528 | systems/texlive/tlnet/archive/frege.r27417.tar.xz
-2020/11/04 | 478856 | systems/texlive/tlnet/archive/frenchmath.doc.r56847.tar.xz
-2020/11/04 | 1872 | systems/texlive/tlnet/archive/frenchmath.r56847.tar.xz
-2020/11/04 | 8276 | systems/texlive/tlnet/archive/frenchmath.source.r56847.tar.xz
+2022/10/18 | 480560 | systems/texlive/tlnet/archive/frenchmath.doc.r64728.tar.xz
+2022/10/18 | 1972 | systems/texlive/tlnet/archive/frenchmath.r64728.tar.xz
+2022/10/18 | 8412 | systems/texlive/tlnet/archive/frenchmath.source.r64728.tar.xz
2020/10/20 | 191432 | systems/texlive/tlnet/archive/frimurer.doc.r56704.tar.xz
2020/10/20 | 15456 | systems/texlive/tlnet/archive/frimurer.r56704.tar.xz
2020/10/20 | 4184 | systems/texlive/tlnet/archive/frimurer.source.r56704.tar.xz
@@ -291282,8 +291608,8 @@
2022/07/07 | 5492 | systems/texlive/tlnet/archive/pst-magneticfield.r63821.tar.xz
2019/05/03 | 20207432 | systems/texlive/tlnet/archive/pst-marble.doc.r50925.tar.xz
2019/05/03 | 8560 | systems/texlive/tlnet/archive/pst-marble.r50925.tar.xz
-2019/02/28 | 176140 | systems/texlive/tlnet/archive/pst-math.doc.r49425.tar.xz
-2019/02/28 | 5172 | systems/texlive/tlnet/archive/pst-math.r49425.tar.xz
+2022/10/18 | 172288 | systems/texlive/tlnet/archive/pst-math.doc.r64732.tar.xz
+2022/10/18 | 5196 | systems/texlive/tlnet/archive/pst-math.r64732.tar.xz
2021/09/15 | 6784012 | systems/texlive/tlnet/archive/pst-mirror.doc.r60506.tar.xz
2021/09/15 | 12192 | systems/texlive/tlnet/archive/pst-mirror.r60506.tar.xz
2021/09/04 | 8296868 | systems/texlive/tlnet/archive/pst-moire.doc.r60411.tar.xz
@@ -291982,6 +292308,8 @@
2020/03/09 | 424 | systems/texlive/tlnet/archive/scheme-minimal.r54191.tar.xz
2020/03/09 | 636 | systems/texlive/tlnet/archive/scheme-small.r54191.tar.xz
2021/06/27 | 732 | systems/texlive/tlnet/archive/scheme-tetex.r59715.tar.xz
+2022/10/18 | 485732 | systems/texlive/tlnet/archive/schola-otf.doc.r64734.tar.xz
+2022/10/18 | 2340 | systems/texlive/tlnet/archive/schola-otf.r64734.tar.xz
2022/02/02 | 341700 | systems/texlive/tlnet/archive/scholax.doc.r61836.tar.xz
2022/02/02 | 1884328 | systems/texlive/tlnet/archive/scholax.r61836.tar.xz
2022/01/24 | 905936 | systems/texlive/tlnet/archive/schooldocs.doc.r61719.tar.xz
@@ -292875,8 +293203,8 @@
2019/02/28 | 75500 | systems/texlive/tlnet/archive/termcal.doc.r22514.tar.xz
2019/02/28 | 2616 | systems/texlive/tlnet/archive/termcal.r22514.tar.xz
2019/02/28 | 7624 | systems/texlive/tlnet/archive/termcal.source.r22514.tar.xz
-2022/10/16 | 246408 | systems/texlive/tlnet/archive/termes-otf.doc.r64712.tar.xz
-2022/10/16 | 2260 | systems/texlive/tlnet/archive/termes-otf.r64712.tar.xz
+2022/10/18 | 464160 | systems/texlive/tlnet/archive/termes-otf.doc.r64733.tar.xz
+2022/10/18 | 2320 | systems/texlive/tlnet/archive/termes-otf.r64733.tar.xz
2019/02/28 | 160640 | systems/texlive/tlnet/archive/termlist.doc.r18923.tar.xz
2019/02/28 | 1232 | systems/texlive/tlnet/archive/termlist.r18923.tar.xz
2019/02/28 | 4356 | systems/texlive/tlnet/archive/termlist.source.r18923.tar.xz
@@ -292919,14 +293247,14 @@
2022/02/27 | 108804 | systems/texlive/tlnet/archive/tex4ht.amd64-freebsd.r62206.tar.xz
2022/02/27 | 87364 | systems/texlive/tlnet/archive/tex4ht.amd64-netbsd.r62220.tar.xz
2022/04/21 | 69948 | systems/texlive/tlnet/archive/tex4ht.armhf-linux.r63092.tar.xz
-2022/10/12 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r64682.tar.xz
+2022/10/18 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r64735.tar.xz
2022/03/01 | 58328 | systems/texlive/tlnet/archive/tex4ht.i386-cygwin.r62282.tar.xz
2022/02/27 | 93760 | systems/texlive/tlnet/archive/tex4ht.i386-freebsd.r62206.tar.xz
2022/02/27 | 91280 | systems/texlive/tlnet/archive/tex4ht.i386-linux.r62210.tar.xz
2022/02/27 | 76200 | systems/texlive/tlnet/archive/tex4ht.i386-netbsd.r62220.tar.xz
2022/02/27 | 83964 | systems/texlive/tlnet/archive/tex4ht.i386-solaris.r62206.tar.xz
-2022/10/12 | 944748 | systems/texlive/tlnet/archive/tex4ht.r64682.tar.xz
-2022/10/12 | 1269348 | systems/texlive/tlnet/archive/tex4ht.source.r64682.tar.xz
+2022/10/18 | 944756 | systems/texlive/tlnet/archive/tex4ht.r64735.tar.xz
+2022/10/18 | 1273956 | systems/texlive/tlnet/archive/tex4ht.source.r64735.tar.xz
2022/02/28 | 184748 | systems/texlive/tlnet/archive/tex4ht.universal-darwin.r62258.tar.xz
2022/02/27 | 57768 | systems/texlive/tlnet/archive/tex4ht.win32.r62199.tar.xz
2022/03/01 | 58016 | systems/texlive/tlnet/archive/tex4ht.x86_64-cygwin.r62279.tar.xz
@@ -293180,7 +293508,7 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2022/10/17 | 422176 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64720.tar.xz
+2022/10/18 | 422228 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64726.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz
2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz
@@ -293204,7 +293532,7 @@
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2022/10/17 | 113664 | systems/texlive/tlnet/archive/texlive-scripts.r64720.tar.xz
+2022/10/18 | 113688 | systems/texlive/tlnet/archive/texlive-scripts.r64726.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2022/04/19 | 36296 | systems/texlive/tlnet/archive/texlive-scripts.win32.r63068.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -295051,16 +295379,16 @@
2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz
2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz
2022/07/17 | 124404 | systems/texlive/tlnet/install-tl
-2022/10/17 | 5834586 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/10/17 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/10/17 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/10/18 | 5834383 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/10/18 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/10/18 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat
-2022/10/17 | 20436274 | systems/texlive/tlnet/install-tl-windows.exe
-2022/10/17 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/10/17 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/10/17 | 25518508 | systems/texlive/tlnet/install-tl.zip
-2022/10/17 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/10/17 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/10/18 | 20435689 | systems/texlive/tlnet/install-tl-windows.exe
+2022/10/18 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/10/18 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/10/18 | 25518522 | systems/texlive/tlnet/install-tl.zip
+2022/10/18 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/10/18 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2022/04/03 | 1229 | systems/texlive/tlnet/README.md
2022/04/03 | 0 | systems/texlive/tlnet/TEXLIVE_2022
2022/02/28 | 7791 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -295070,7 +295398,7 @@
2022/02/28 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
2022/10/09 | 49938 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2022/10/16 | 7119 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2022/10/17 | 7174 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/10/13 | 225403 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt
@@ -295113,12 +295441,12 @@
2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2022/10/17 | 17700266 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2022/10/17 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/10/18 | 17701296 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/10/18 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2022/04/18 | 86658 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2022/10/17 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/10/17 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/10/17 | 2419960 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/10/18 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/10/18 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/10/18 | 2418984 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2022/09/14 | 58922 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2022/10/04 | 42404 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -300518,7 +300846,7 @@
2020/10/03 | 318630 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2022/10/17 | 668430 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/10/18 | 668430 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -302250,9 +302578,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2022/07/26 | 39695 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2022/10/15 | 43540 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/10/17 | 299852 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/10/17 | 1507755 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/10/17 | 1384985 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/10/18 | 299827 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/10/18 | 1507985 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/10/18 | 1386130 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2022/07/26 | 13519 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2022/10/15 | 14426 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
@@ -302501,102 +302829,102 @@
2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma
2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma
2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2022/10/17 | 668584 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/10/17 | 57317 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/10/17 | 1161750 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/10/17 | 31587 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/10/17 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/10/17 | 65129 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2022/10/17 | 95467 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2022/10/17 | 77211 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/10/17 | 31562 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2022/10/17 | 394143 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2022/10/17 | 37051 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/10/17 | 57505 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/10/17 | 270467 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/10/17 | 196213 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2022/10/17 | 103247 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2022/10/17 | 24212 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/10/17 | 481894 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/10/17 | 52036 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/10/17 | 325979 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/10/17 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/10/17 | 135465 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/10/17 | 1458152 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/10/17 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/10/17 | 48851 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2022/10/17 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/10/17 | 63240 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/10/17 | 155432 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2022/10/17 | 79065 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/10/17 | 81449 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2022/10/17 | 295945 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2022/10/17 | 25118 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2022/10/17 | 112878 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2022/10/17 | 73264 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2022/10/17 | 115580 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/10/17 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/10/17 | 565081 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2022/10/17 | 247206 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
-2022/10/17 | 169678 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/10/17 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/10/17 | 18382 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/10/17 | 30571 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/10/17 | 682216 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/10/17 | 599104 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2022/10/17 | 527569 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/10/17 | 103598 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/10/17 | 2023133 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/10/17 | 74100 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/10/17 | 32074 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/10/17 | 8826 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2022/10/17 | 209139 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/10/17 | 286685 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/10/17 | 104922 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/10/17 | 140012 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/10/17 | 325483 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/10/17 | 181725 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/10/17 | 55319 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2022/10/17 | 35231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2022/10/17 | 43617 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/10/17 | 48038 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/10/17 | 52370 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/10/17 | 213847 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/10/17 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2022/10/17 | 824996 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2022/10/17 | 203421 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/10/17 | 245151 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/10/17 | 88483 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/10/17 | 1323745 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/10/17 | 23951 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2022/10/17 | 37508 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/10/17 | 72977 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2022/10/17 | 58634 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/10/17 | 769652 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
-2022/10/17 | 1503054 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/10/17 | 52627 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/10/17 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/10/17 | 27464 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/10/17 | 18510 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/10/17 | 70939 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2022/10/17 | 173177 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/10/17 | 68146 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2022/10/17 | 107437 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2022/10/17 | 2821670 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2022/10/17 | 62360 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2022/10/17 | 41191 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/10/17 | 33861 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2022/10/17 | 73686 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/10/17 | 352464 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/10/17 | 57502 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/10/17 | 630433 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2022/10/17 | 43528 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/10/17 | 299867 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/10/17 | 1508565 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/10/17 | 1386695 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/10/17 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/10/18 | 668584 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/10/18 | 57317 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/10/18 | 1161750 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/10/18 | 31585 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/10/18 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/10/18 | 65130 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/10/18 | 95469 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/10/18 | 77211 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/10/18 | 31562 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/10/18 | 394142 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/10/18 | 37050 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/10/18 | 57505 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/10/18 | 270466 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/10/18 | 196213 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/10/18 | 103246 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/10/18 | 24212 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/10/18 | 481895 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/10/18 | 52036 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/10/18 | 325978 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/10/18 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/10/18 | 135465 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/10/18 | 1458153 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/10/18 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/10/18 | 48851 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/10/18 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/10/18 | 63240 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/10/18 | 155432 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/10/18 | 79063 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/10/18 | 81449 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/10/18 | 295943 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/10/18 | 25118 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/10/18 | 112879 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/10/18 | 73261 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/10/18 | 115580 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/10/18 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/10/18 | 565081 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/10/18 | 247205 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
+2022/10/18 | 169677 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/10/18 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/10/18 | 18382 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/10/18 | 30570 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/10/18 | 682213 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/10/18 | 599104 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/10/18 | 527569 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/10/18 | 103598 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/10/18 | 2023132 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/10/18 | 74099 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/10/18 | 32073 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/10/18 | 8825 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/10/18 | 209138 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/10/18 | 286684 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/10/18 | 104920 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/10/18 | 140014 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/10/18 | 325483 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/10/18 | 181723 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/10/18 | 55318 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/10/18 | 35229 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/10/18 | 43617 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/10/18 | 48037 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/10/18 | 52369 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/10/18 | 213846 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/10/18 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/10/18 | 824994 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/10/18 | 203420 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/10/18 | 245151 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/10/18 | 88484 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/10/18 | 1323745 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/10/18 | 23950 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/10/18 | 37507 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/10/18 | 72979 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/10/18 | 58633 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/10/18 | 769650 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/10/18 | 1503053 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/10/18 | 52627 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/10/18 | 63801 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/10/18 | 27464 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/10/18 | 18510 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/10/18 | 70938 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/10/18 | 173176 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/10/18 | 68146 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/10/18 | 107437 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/10/18 | 2821672 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/10/18 | 62360 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/10/18 | 41191 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/10/18 | 33863 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/10/18 | 73687 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/10/18 | 352463 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/10/18 | 57501 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/10/18 | 630431 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/10/18 | 43528 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/10/18 | 299911 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/10/18 | 1507793 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/10/18 | 1385746 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/10/18 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma
-2022/10/17 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/10/18 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini
2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma
2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma
2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
@@ -303113,7 +303441,7 @@
2022/02/22 | 6917 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma
-2022/10/17 | 959 | systems/win32/miktex/tm/packages/pr.ini
+2022/10/18 | 959 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -305099,7 +305427,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2022/10/18 | 186 | timestamp
+2022/10/19 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2022/02/28 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index ac092d2714..a1461d1ba2 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 0d31f50cfc..8a72fb20a9 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,16 +1,555 @@
+2022/10/18 | 99 | macros/latex/contrib/docshots/DEPENDS.txt
+2022/10/18 | 975 | support/chktex/lacheck
+2022/10/18 | 959 | systems/win32/miktex/tm/packages/pr.ini
+2022/10/18 | 959396 | systems/texlive/tlnet/archive/bithesis.doc.r64727.tar.xz
+2022/10/18 | 95469 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/10/18 | 944756 | systems/texlive/tlnet/archive/tex4ht.r64735.tar.xz
+2022/10/18 | 9370 | support/chktex/Makefile.in
+2022/10/18 | 92384 | fonts/cooperhewitt/opentype/CooperHewitt-SemiboldItalic.otf
+2022/10/18 | 92352 | fonts/cooperhewitt/opentype/CooperHewitt-BookItalic.otf
+2022/10/18 | 92308 | fonts/cooperhewitt/opentype/CooperHewitt-LightItalic.otf
+2022/10/18 | 92244 | fonts/cooperhewitt/opentype/CooperHewitt-MediumItalic.otf
+2022/10/18 | 92092 | fonts/cooperhewitt/opentype/CooperHewitt-BoldItalic.otf
+2022/10/18 | 92056 | fonts/cooperhewitt/opentype/CooperHewitt-HeavyItalic.otf
+2022/10/18 | 90 | support/chktex/tests/sub2/file1.tex
+2022/10/18 | 90296 | fonts/cooperhewitt/opentype/CooperHewitt-Semibold.otf
+2022/10/18 | 89976 | fonts/cooperhewitt/opentype/CooperHewitt-Bold.otf
+2022/10/18 | 89836 | fonts/cooperhewitt/opentype/CooperHewitt-Medium.otf
+2022/10/18 | 89696 | fonts/cooperhewitt/opentype/CooperHewitt-Book.otf
+2022/10/18 | 89652 | fonts/cooperhewitt/opentype/CooperHewitt-Heavy.otf
+2022/10/18 | 89336 | fonts/cooperhewitt/opentype/CooperHewitt-Light.otf
+2022/10/18 | 89256 | fonts/cooperhewitt/opentype/CooperHewitt-ThinItalic.otf
+2022/10/18 | 88996 | fonts/cooperhewitt/opentype/CooperHewitt-Thin.otf
+2022/10/18 | 88484 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/10/18 | 8825 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/10/18 | 8412 | systems/texlive/tlnet/archive/frenchmath.source.r64728.tar.xz
+2022/10/18 | 828 | support/chktex/aclocal.m4
+2022/10/18 | 824994 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/10/18 | 815 | support/chktex/rmeheader.in
+2022/10/18 | 815562 | install/macros/latex/contrib/mfirstuc.tds.zip
+2022/10/18 | 81449 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/10/18 | 8096 | systems/texlive/tlnet/archive/collectbox.source.r64730.tar.xz
+2022/10/18 | 800756 | macros/latex/contrib/mfirstuc.zip
+2022/10/18 | 79063 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/10/18 | 77211 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/10/18 | 769650 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/10/18 | 76529 | support/chktex/ChkTeX.tex.in
+2022/10/18 | 75 | support/chktex/tests/sub1/file.tex
+2022/10/18 | 74099 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/10/18 | 739224 | systems/texlive/tlnet/archive/adjustbox.doc.r64731.tar.xz
+2022/10/18 | 73687 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/10/18 | 73261 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/10/18 | 72979 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/10/18 | 70938 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/10/18 | 7066 | support/chktex/Test.tex
+2022/10/18 | 7033 | support/chktex/OpSys.h
+2022/10/18 | 682213 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/10/18 | 68146 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/10/18 | 668584 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/10/18 | 66845 | support/chktex/FindErrs.c
+2022/10/18 | 668430 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/10/18 | 6643 | support/chktex/FindErrs.h
+2022/10/18 | 65130 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/10/18 | 63972 | macros/latex/contrib/mfirstuc/mfirstuc.dtx
+2022/10/18 | 63801 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/10/18 | 63240 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/10/18 | 630431 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/10/18 | 629 | support/chktex/tests/main.expected
+2022/10/18 | 62430 | macros/latex/contrib/mfirstuc/mfirstuc-manual.tex
+2022/10/18 | 62360 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/10/18 | 60 | support/chktex/input.tex
+2022/10/18 | 6004 | systems/texlive/tlnet/archive/docshots.source.r64729.tar.xz
+2022/10/18 | 599104 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/10/18 | 594607 | support/chktex.zip
+2022/10/18 | 58 | macros/latex/contrib/ifoddpage/DEPENDS.txt
+2022/10/18 | 58633 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/10/18 | 5834383 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/10/18 | 57505 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/10/18 | 57501 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/10/18 | 57317 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/10/18 | 565081 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/10/18 | 5596 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1.tfm
+2022/10/18 | 5592 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1.tfm
+2022/10/18 | 5576 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1.tfm
+2022/10/18 | 5573 | support/chktex/configure.ac
+2022/10/18 | 5572 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1.tfm
+2022/10/18 | 5532 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1.tfm
+2022/10/18 | 55318 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/10/18 | 5520 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1.tfm
+2022/10/18 | 5516 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1.tfm
+2022/10/18 | 5512 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1.tfm
+2022/10/18 | 5508 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1.tfm
+2022/10/18 | 5508 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1.tfm
+2022/10/18 | 5480 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1.tfm
+2022/10/18 | 5476 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1.tfm
+2022/10/18 | 5436 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1.tfm
+2022/10/18 | 5431 | support/sty2dtx/README.txt
+2022/10/18 | 5428 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1.tfm
+2022/10/18 | 527569 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/10/18 | 52627 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/10/18 | 52369 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/10/18 | 52036 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/10/18 | 5196 | systems/texlive/tlnet/archive/pst-math.r64732.tar.xz
+2022/10/18 | 500 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ts1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ts1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ts1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ts1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ts1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ts1.vf
+2022/10/18 | 496 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ts1.vf
+2022/10/18 | 49568 | systems/texlive/tlnet/archive/adjustbox.source.r64731.tar.xz
+2022/10/18 | 492 | fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ts1.vf
+2022/10/18 | 492 | fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ts1.vf
+2022/10/18 | 492 | fonts/cooperhewitt/vf/CpHwt-Light-tlf-ts1.vf
+2022/10/18 | 492 | fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ts1.vf
+2022/10/18 | 49061 | fonts/cooperhewitt/type1/CpHwt-BoldItalic.pfb
+2022/10/18 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/10/18 | 48911 | fonts/cooperhewitt/type1/CpHwt-SemiboldItalic.pfb
+2022/10/18 | 488 | fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ts1.vf
+2022/10/18 | 488 | fonts/cooperhewitt/vf/CpHwt-Book-tlf-ts1.vf
+2022/10/18 | 488 | fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ts1.vf
+2022/10/18 | 48851 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/10/18 | 4879 | support/chktex/Utility.h
+2022/10/18 | 48713 | fonts/cooperhewitt/type1/CpHwt-BookItalic.pfb
+2022/10/18 | 48592 | fonts/cooperhewitt/type1/CpHwt-MediumItalic.pfb
+2022/10/18 | 485732 | systems/texlive/tlnet/archive/schola-otf.doc.r64734.tar.xz
+2022/10/18 | 48265 | fonts/cooperhewitt/type1/CpHwt-HeavyItalic.pfb
+2022/10/18 | 48220 | fonts/cooperhewitt/type1/CpHwt-LightItalic.pfb
+2022/10/18 | 481895 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/10/18 | 480560 | systems/texlive/tlnet/archive/frenchmath.doc.r64728.tar.xz
+2022/10/18 | 48037 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/10/18 | 47393 | fonts/cooperhewitt/type1/CpHwt-ThinItalic.pfb
+2022/10/18 | 47003 | fonts/cooperhewitt/type1/CpHwt-Semibold.pfb
+2022/10/18 | 464160 | systems/texlive/tlnet/archive/termes-otf.doc.r64733.tar.xz
+2022/10/18 | 46394 | fonts/cooperhewitt/type1/CpHwt-Bold.pfb
+2022/10/18 | 45804 | fonts/cooperhewitt/type1/CpHwt-Medium.pfb
+2022/10/18 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/10/18 | 45768 | fonts/cooperhewitt/type1/CpHwt-Light.pfb
+2022/10/18 | 45623 | fonts/cooperhewitt/type1/CpHwt-Book.pfb
+2022/10/18 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/10/18 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/10/18 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/10/18 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/10/18 | 45547 | fonts/cooperhewitt/type1/CpHwt-Thin.pfb
+2022/10/18 | 45193 | fonts/cooperhewitt/type1/CpHwt-Heavy.pfb
+2022/10/18 | 4495 | support/chktex/config.h.in
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/TS1CpHwt-TLF.fd
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/OT1CpHwt-TLF.fd
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/OT1CpHwt-Sup.fd
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/LY1CpHwt-TLF.fd
+2022/10/18 | 4479 | fonts/cooperhewitt/latex/LY1CpHwt-Sup.fd
+2022/10/18 | 4422 | fonts/cooperhewitt/doc/OFL.txt
+2022/10/18 | 4420 | fonts/cooperhewitt/latex/T1CpHwt-TLF.fd
+2022/10/18 | 4420 | fonts/cooperhewitt/latex/T1CpHwt-Sup.fd
+2022/10/18 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/10/18 | 43617 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/10/18 | 43528 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/10/18 | 427 | fonts/cooperhewitt/doc/cooperhewitt-samples.tex
+2022/10/18 | 422228 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64726.tar.xz
+2022/10/18 | 41191 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/10/18 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/10/18 | 409006 | support/chktex/ChkTeX.pdf
+2022/10/18 | 3984099 | biblio/ctan-bibdata.zip
+2022/10/18 | 394142 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/10/18 | 3908 | support/chktex/m4/vl_prog_cc_warnings.m4
+2022/10/18 | 38396 | systems/texlive/tlnet/archive/bithesis.source.r64727.tar.xz
+2022/10/18 | 3826 | macros/latex/contrib/mfirstuc/CHANGES
+2022/10/18 | 37507 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/10/18 | 37050 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/10/18 | 3592997 | biblio/ctan-bibdata/ctan.pdf
+2022/10/18 | 3566 | support/chktex/m4/ax_cflags_strict_prototypes.m4
+2022/10/18 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/10/18 | 352549 | macros/latex/contrib/mfirstuc/mfirstuc-code.pdf
+2022/10/18 | 352463 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/10/18 | 35229 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/10/18 | 3478 | support/chktex/tests/run-tests.sh
+2022/10/18 | 33863 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/10/18 | 337775 | macros/latex/contrib/docshots.zip
+2022/10/18 | 336674 | macros/latex/contrib/docshots/docshots.pdf
+2022/10/18 | 3359 | fonts/cooperhewitt/latex/CooperHewitt.sty
+2022/10/18 | 328996 | systems/texlive/tlnet/archive/docshots.doc.r64729.tar.xz
+2022/10/18 | 325978 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/10/18 | 325483 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/10/18 | 3210 | fonts/cooperhewitt/enc/cphwt_kvtx4d.enc
+2022/10/18 | 32073 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/10/18 | 31585 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/10/18 | 31562 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/10/18 | 3154 | support/chktex/chktex.1
+2022/10/18 | 31376 | support/chktex/chktexrc.in
+2022/10/18 | 31008 | support/chktex/ChkTeX.c
+2022/10/18 | 30802 | support/sty2dtx/sty2dtx.pl
+2022/10/18 | 307 | support/chktex/input/file
+2022/10/18 | 30570 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/10/18 | 30180 | support/chktex/Test.pcre.out
+2022/10/18 | 3013 | support/chktex/deweb.1
+2022/10/18 | 299911 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/10/18 | 299827 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/10/18 | 2964 | fonts/cooperhewitt/enc/cphwt_r6y6f6.enc
+2022/10/18 | 295943 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/10/18 | 294879 | macros/latex/contrib/mfirstuc/mfirstuc-manual.pdf
+2022/10/18 | 2919 | fonts/cooperhewitt/enc/cphwt_sz67he.enc
+2022/10/18 | 2917 | fonts/cooperhewitt/enc/cphwt_vrwj46.enc
+2022/10/18 | 29116 | support/chktex/Test.posix-ere.out
+2022/10/18 | 2904 | support/chktex/chkweb.1
+2022/10/18 | 28 | support/chktex/tests/sub1/subsub/subsubfile.tex
+2022/10/18 | 28879 | support/chktex/Test.nore.out
+2022/10/18 | 2876 | support/chktex/deweb.in
+2022/10/18 | 2874 | fonts/cooperhewitt/enc/cphwt_4je6jj.enc
+2022/10/18 | 286684 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/10/18 | 2864 | systems/texlive/tlnet/archive/collectbox.r64730.tar.xz
+2022/10/18 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/10/18 | 2835 | fonts/cooperhewitt/enc/cphwt_psuovm.enc
+2022/10/18 | 2821672 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/10/18 | 27 | support/chktex/tests/sub2/file2.tex
+2022/10/18 | 2792 | fonts/cooperhewitt/enc/cphwt_tjvrzf.enc
+2022/10/18 | 27464 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/10/18 | 2738615 | biblio/ctan-bibdata/ctan.bib
+2022/10/18 | 270466 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/10/18 | 2634 | macros/latex/contrib/docshots/docshots.ins
+2022/10/18 | 2604 | support/chktex/Resource.h
+2022/10/18 | 25518522 | systems/texlive/tlnet/install-tl.zip
+2022/10/18 | 254 | support/chktex/MakeHTML.pl
+2022/10/18 | 25118 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/10/18 | 249 | support/chktex/types.h
+2022/10/18 | 247205 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
+2022/10/18 | 245151 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/10/18 | 24212 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/10/18 | 2420 | systems/texlive/tlnet/archive/docshots.r64729.tar.xz
+2022/10/18 | 2418984 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/10/18 | 23950 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/10/18 | 2340 | systems/texlive/tlnet/archive/schola-otf.r64734.tar.xz
+2022/10/18 | 23234 | fonts/cooperhewitt/doc/cooperhewitt-samples.pdf
+2022/10/18 | 2320 | systems/texlive/tlnet/archive/termes-otf.r64733.tar.xz
+2022/10/18 | 2286 | fonts/cooperhewitt/README
+2022/10/18 | 225676 | macros/latex/contrib/mfirstuc/mfirstuc-manual.html
+2022/10/18 | 213846 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/10/18 | 21274 | support/chktex/Utility.c
+2022/10/18 | 21036 | systems/texlive/tlnet/archive/bithesis.r64727.tar.xz
+2022/10/18 | 209138 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/10/18 | 20435689 | systems/texlive/tlnet/install-tl-windows.exe
+2022/10/18 | 203420 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/10/18 | 2023132 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/10/18 | 1988 | systems/texlive/tlnet/archive/collection-fontsextra.r64734.tar.xz
+2022/10/18 | 1972 | systems/texlive/tlnet/archive/frenchmath.r64728.tar.xz
+2022/10/18 | 196213 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/10/18 | 194 | support/chktex/ChkTeX.texrc
+2022/10/18 | 193216 | support/chktex/configure
+2022/10/18 | 18883 | support/chktex/COPYING
+2022/10/18 | 18575 | macros/latex/contrib/docshots/docshots.dtx
+2022/10/18 | 18510 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/10/18 | 18382 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/10/18 | 181723 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/10/18 | 177 | support/chktex/tests/main.tex
+2022/10/18 | 1771321 | install/fonts/cooperhewitt.tds.zip
+2022/10/18 | 17701296 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/10/18 | 1744 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ly1.vf
+2022/10/18 | 1744 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ly1.vf
+2022/10/18 | 1744 | fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ly1.vf
+2022/10/18 | 1744 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ly1.vf
+2022/10/18 | 1743963 | fonts/cooperhewitt.zip
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ly1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ly1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-t1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-t1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ly1.vf
+2022/10/18 | 1740 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ly1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ly1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ly1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Light-tlf-ly1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ly1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Book-tlf-ly1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ly1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-t1.vf
+2022/10/18 | 1736 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1.tfm
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Thin-tlf-t1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Medium-tlf-t1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Light-tlf-t1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-t1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Book-tlf-t1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/vf/CpHwt-Bold-tlf-t1.vf
+2022/10/18 | 1732 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1.tfm
+2022/10/18 | 1732 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1--base.tfm
+2022/10/18 | 173176 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/10/18 | 172 | macros/latex/contrib/ifoddpage/ifoddpage.ins
+2022/10/18 | 1724 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1--base.tfm
+2022/10/18 | 1724 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1.tfm
+2022/10/18 | 1724 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1.tfm
+2022/10/18 | 172288 | systems/texlive/tlnet/archive/pst-math.doc.r64732.tar.xz
+2022/10/18 | 1720 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1--base.tfm
+2022/10/18 | 1716 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1.tfm
+2022/10/18 | 1716 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1--base.tfm
+2022/10/18 | 1712 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1.tfm
+2022/10/18 | 1708 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1--base.tfm
+2022/10/18 | 1708 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1--base.tfm
+2022/10/18 | 1704 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1--base.tfm
+2022/10/18 | 1704 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1--base.tfm
+2022/10/18 | 1700 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-t1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-t1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-t1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-t1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-t1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-t1.vf
+2022/10/18 | 1696 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-t1.vf
+2022/10/18 | 169677 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/10/18 | 1692 | fonts/cooperhewitt/vf/CpHwt-Semibold-sup-t1.vf
+2022/10/18 | 1692 | fonts/cooperhewitt/vf/CpHwt-Medium-sup-t1.vf
+2022/10/18 | 1692 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1.tfm
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Thin-sup-t1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Light-sup-t1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Heavy-sup-t1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Book-sup-t1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/vf/CpHwt-Bold-sup-t1.vf
+2022/10/18 | 1688 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1--base.tfm
+2022/10/18 | 1688 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1.tfm
+2022/10/18 | 1688 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1--base.tfm
+2022/10/18 | 1684 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1--base.tfm
+2022/10/18 | 1684 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1--base.tfm
+2022/10/18 | 168168 | support/sty2dtx.zip
+2022/10/18 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2022/10/18 | 1676 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1--base.tfm
+2022/10/18 | 16684 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1.tfm
+2022/10/18 | 16684 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1.tfm
+2022/10/18 | 16660 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1.tfm
+2022/10/18 | 1664 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1--base.tfm
+2022/10/18 | 1664 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1--base.tfm
+2022/10/18 | 16648 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1.tfm
+2022/10/18 | 16620 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1.tfm
+2022/10/18 | 16604 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1.tfm
+2022/10/18 | 16596 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1.tfm
+2022/10/18 | 165956 | systems/texlive/tlnet/archive/collectbox.doc.r64730.tar.xz
+2022/10/18 | 16592 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1.tfm
+2022/10/18 | 16584 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1.tfm
+2022/10/18 | 16584 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1.tfm
+2022/10/18 | 1656 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-ly1.vf
+2022/10/18 | 16536 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1.tfm
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-ly1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-ly1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-ly1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-ly1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-ly1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-ly1.vf
+2022/10/18 | 1652 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1.tfm
+2022/10/18 | 1652 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1--base.tfm
+2022/10/18 | 16512 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1.tfm
+2022/10/18 | 16512 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1.tfm
+2022/10/18 | 1648 | fonts/cooperhewitt/vf/CpHwt-Semibold-sup-ly1.vf
+2022/10/18 | 1648 | fonts/cooperhewitt/vf/CpHwt-Medium-sup-ly1.vf
+2022/10/18 | 16472 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1.tfm
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Thin-sup-ly1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Light-sup-ly1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Heavy-sup-ly1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Book-sup-ly1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/vf/CpHwt-Bold-sup-ly1.vf
+2022/10/18 | 1644 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1--base.tfm
+2022/10/18 | 1644 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1.tfm
+2022/10/18 | 1640 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1--base.tfm
+2022/10/18 | 1628 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1.tfm
+2022/10/18 | 1628 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1--base.tfm
+2022/10/18 | 1624 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1.tfm
+2022/10/18 | 1624 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1--base.tfm
+2022/10/18 | 1624 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1--base.tfm
+2022/10/18 | 1620 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1.tfm
+2022/10/18 | 1616 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1--base.tfm
+2022/10/18 | 1612 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1--base.tfm
+2022/10/18 | 1612 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1.tfm
+2022/10/18 | 1608 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1--base.tfm
+2022/10/18 | 1608 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1.tfm
+2022/10/18 | 1608 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1.tfm
+2022/10/18 | 1604 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1--base.tfm
+2022/10/18 | 1604 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1--base.tfm
+2022/10/18 | 1604 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1--base.tfm
+2022/10/18 | 1604 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1--base.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1--base.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1--base.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1--base.tfm
+2022/10/18 | 1600 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1--base.tfm
+2022/10/18 | 1596 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1--base.tfm
+2022/10/18 | 1596 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1--base.tfm
+2022/10/18 | 1596 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1--base.tfm
+2022/10/18 | 1596 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1.tfm
+2022/10/18 | 1592 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1--base.tfm
+2022/10/18 | 1592 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1--base.tfm
+2022/10/18 | 1592 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1--base.tfm
+2022/10/18 | 1588 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1--base.tfm
+2022/10/18 | 1584 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1--base.tfm
+2022/10/18 | 1580 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1.tfm
+2022/10/18 | 1576 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1.tfm
+2022/10/18 | 1576 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1--base.tfm
+2022/10/18 | 1568 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1--base.tfm
+2022/10/18 | 156538 | support/sty2dtx/sty2dtx.pdf
+2022/10/18 | 155432 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/10/18 | 1552 | support/chktex/m4/ax_append_flag.m4
+2022/10/18 | 1552 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1--base.tfm
+2022/10/18 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/10/18 | 1536 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1--base.tfm
+2022/10/18 | 15358 | support/chktex/install-sh
+2022/10/18 | 15347 | support/chktex/Resource.c
+2022/10/18 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/10/18 | 1528 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1.tfm
+2022/10/18 | 1524 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1--base.tfm
+2022/10/18 | 1524 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1.tfm
+2022/10/18 | 1524 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1--base.tfm
+2022/10/18 | 1524 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1.tfm
+2022/10/18 | 1516 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1--base.tfm
+2022/10/18 | 1516 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1--base.tfm
+2022/10/18 | 1516 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1--base.tfm
+2022/10/18 | 1512 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1--base.tfm
+2022/10/18 | 1507985 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/10/18 | 1507793 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/10/18 | 1506 | support/chktex/MakeChkTeXRC.pl
+2022/10/18 | 1504 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1--base.tfm
+2022/10/18 | 1504 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1.tfm
+2022/10/18 | 1503053 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/10/18 | 1500 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1--base.tfm
+2022/10/18 | 1488 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1.tfm
+2022/10/18 | 1484 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1--base.tfm
+2022/10/18 | 1484 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1.tfm
+2022/10/18 | 1484 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1--base.tfm
+2022/10/18 | 148155 | macros/latex/contrib/ifoddpage.zip
+2022/10/18 | 1476 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1--base.tfm
+2022/10/18 | 1472 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1--base.tfm
+2022/10/18 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/10/18 | 1458153 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/10/18 | 1452 | macros/latex/contrib/mfirstuc/README
+2022/10/18 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/10/18 | 144874 | macros/latex/contrib/ifoddpage/ifoddpage.pdf
+2022/10/18 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/10/18 | 1432 | macros/latex/contrib/mfirstuc/mfirstuc.ins
+2022/10/18 | 140014 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/10/18 | 13898 | support/chktex/OpSys.c
+2022/10/18 | 1386130 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/10/18 | 1385746 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/10/18 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r64735.tar.xz
+2022/10/18 | 13600 | systems/texlive/tlnet/archive/adjustbox.r64731.tar.xz
+2022/10/18 | 135465 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/10/18 | 1348 | fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ot1.vf
+2022/10/18 | 1348 | fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ot1.vf
+2022/10/18 | 1348 | fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ot1.vf
+2022/10/18 | 1348 | fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ot1.vf
+2022/10/18 | 1344 | fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ot1.vf
+2022/10/18 | 1344 | fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ot1.vf
+2022/10/18 | 1344 | fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ot1.vf
+2022/10/18 | 1344 | fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ot1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ot1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ot1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Light-tlf-ot1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ot1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Book-tlf-ot1.vf
+2022/10/18 | 1340 | fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ot1.vf
+2022/10/18 | 1323745 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/10/18 | 1320 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1.tfm
+2022/10/18 | 1320 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1.tfm
+2022/10/18 | 1313 | support/chktex/chkweb
+2022/10/18 | 1304 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1.tfm
+2022/10/18 | 1304 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1.tfm
+2022/10/18 | 1304 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1--base.tfm
+2022/10/18 | 13036 | fonts/cooperhewitt/map/CooperHewitt.map
+2022/10/18 | 1300 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1.tfm
+2022/10/18 | 1300 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1--base.tfm
+2022/10/18 | 1298 | macros/latex/contrib/docshots/README.md
+2022/10/18 | 1288 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1.tfm
+2022/10/18 | 1284 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1--base.tfm
+2022/10/18 | 1284 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1--base.tfm
+2022/10/18 | 1284 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1.tfm
+2022/10/18 | 1280 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1--base.tfm
+2022/10/18 | 1276 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1.tfm
+2022/10/18 | 1273956 | systems/texlive/tlnet/archive/tex4ht.source.r64735.tar.xz
+2022/10/18 | 1272 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1.tfm
+2022/10/18 | 1264 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1--base.tfm
+2022/10/18 | 1264 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1.tfm
+2022/10/18 | 1264 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1--base.tfm
+2022/10/18 | 1260 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1--base.tfm
+2022/10/18 | 1260 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1--base.tfm
+2022/10/18 | 1260 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1--base.tfm
+2022/10/18 | 1260 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1--base.tfm
+2022/10/18 | 1256 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1--base.tfm
+2022/10/18 | 12550 | macros/latex/contrib/ifoddpage/ifoddpage.dtx
+2022/10/18 | 1252 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1--base.tfm
+2022/10/18 | 1244 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1--base.tfm
+2022/10/18 | 1224 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ot1.tfm
+2022/10/18 | 122108 | macros/latex/contrib/mfirstuc/sample-mfirstuc.pdf
+2022/10/18 | 1218 | support/chktex/m4/ax_require_defined.m4
+2022/10/18 | 1212 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ot1.tfm
+2022/10/18 | 1212 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ot1.tfm
+2022/10/18 | 1196 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ot1.tfm
+2022/10/18 | 1188 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1--base.tfm
+2022/10/18 | 1184 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1--base.tfm
+2022/10/18 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/10/18 | 1168 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1--base.tfm
+2022/10/18 | 1164 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1--base.tfm
+2022/10/18 | 1161750 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/10/18 | 1156 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ot1.tfm
+2022/10/18 | 115580 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/10/18 | 11531 | support/sty2dtx/sty2dtx.1
+2022/10/18 | 1144 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ot1.tfm
+2022/10/18 | 113688 | systems/texlive/tlnet/archive/texlive-scripts.r64726.tar.xz
+2022/10/18 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/10/18 | 1128 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1--base.tfm
+2022/10/18 | 112879 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/10/18 | 1126 | support/chktex/autogen.sh
+2022/10/18 | 1112 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1--base.tfm
+2022/10/18 | 1112 | fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ot1.tfm
+2022/10/18 | 1108 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1--base.tfm
+2022/10/18 | 1108 | fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ot1.tfm
+2022/10/18 | 1104 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1--base.tfm
+2022/10/18 | 1104 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ot1.tfm
+2022/10/18 | 1104 | fonts/cooperhewitt/tfm/CpHwt-Book-sup-ot1.tfm
+2022/10/18 | 1104 | fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ot1.tfm
+2022/10/18 | 1100 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1--base.tfm
+2022/10/18 | 1100 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1--base.tfm
+2022/10/18 | 10 | support/chktex/stamp-h.in
+2022/10/18 | 1098 | macros/latex/contrib/ifoddpage/README.txt
+2022/10/18 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/10/18 | 10953 | support/chktex/ChkTeX.h
+2022/10/18 | 1083 | macros/latex/contrib/docshots/LICENSE.txt
+2022/10/18 | 107437 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/10/18 | 1072 | fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ot1.tfm
+2022/10/18 | 1072 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1--base.tfm
+2022/10/18 | 10696 | fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1.tfm
+2022/10/18 | 10696 | fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1.tfm
+2022/10/18 | 1068 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1--base.tfm
+2022/10/18 | 10683 | support/chktex/NEWS
+2022/10/18 | 10668 | fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1.tfm
+2022/10/18 | 10656 | fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1.tfm
+2022/10/18 | 10616 | fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1.tfm
+2022/10/18 | 10596 | fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1.tfm
+2022/10/18 | 10592 | fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1.tfm
+2022/10/18 | 10592 | fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1.tfm
+2022/10/18 | 10588 | fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1.tfm
+2022/10/18 | 10584 | fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1.tfm
+2022/10/18 | 10540 | fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1.tfm
+2022/10/18 | 10516 | fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1.tfm
+2022/10/18 | 10492 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1.tfm
+2022/10/18 | 104920 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/10/18 | 10472 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1.tfm
+2022/10/18 | 103598 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/10/18 | 1032 | fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1--base.tfm
+2022/10/18 | 1032 | fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ot1.tfm
+2022/10/18 | 103246 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/10/18 | 1024 | fonts/cooperhewitt/tfm/CpHwt-Light-sup-ot1.tfm
+2022/10/18 | 1021 | support/chktex/README
+2022/10/18 | 1020 | fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1--base.tfm
2022/10/17 | 99391 | macros/latex/contrib/glossaries/samples/sampleAcrDesc.pdf
2022/10/17 | 975276 | macros/unicodetex/latex/bithesis/bithesis.pdf
2022/10/17 | 969 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example030.tex
2022/10/17 | 968 | macros/latex/contrib/proflycee/doc/cap.csv
-2022/10/17 | 959 | systems/win32/miktex/tm/packages/pr.ini
-2022/10/17 | 95467 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
2022/10/17 | 945 | macros/latex/contrib/collectbox/README.txt
2022/10/17 | 9443 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example008.png
2022/10/17 | 930967 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
2022/10/17 | 9066 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example030.png
2022/10/17 | 8856 | macros/latex/contrib/glossaries/samples/samplexdy3.tex
-2022/10/17 | 88483 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/10/17 | 8826 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
2022/10/17 | 87965 | macros/latex/contrib/glossaries/samples/sample-custom-acronym.pdf
2022/10/17 | 8774 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example007.png
2022/10/17 | 873 | macros/latex/contrib/glossaries/samples/sample-dual.tex
@@ -18,82 +557,52 @@
2022/10/17 | 86116 | macros/latex/contrib/glossaries/samples/sampleaccsupp.pdf
2022/10/17 | 83536 | systems/texlive/tlnet/archive/lutabulartools.doc.r64724.tar.xz
2022/10/17 | 827620 | macros/latex/contrib/adjustbox.zip
-2022/10/17 | 824996 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2022/10/17 | 8172 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example002.png
-2022/10/17 | 81449 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
2022/10/17 | 80852 | macros/latex/contrib/adjustbox/trimclip.dtx
2022/10/17 | 7938 | macros/latex/contrib/glossaries/makeglossaries.1
2022/10/17 | 7935 | macros/latex/contrib/glossaries/samples/sampleEqPg.tex
-2022/10/17 | 79065 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
2022/10/17 | 785 | macros/latex/contrib/glossaries/samples/sample4col.tex
-2022/10/17 | 77211 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
2022/10/17 | 7702 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example005.png
2022/10/17 | 7702 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example004.png
2022/10/17 | 7702 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example003.png
-2022/10/17 | 769652 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
2022/10/17 | 758 | graphics/pstricks/contrib/pst-math/tex/pst-math.tex
2022/10/17 | 7587 | macros/latex/contrib/glossaries/makeglossaries-lite.1
-2022/10/17 | 74 | macros/latex/contrib/docshots/DEPENDS.txt
-2022/10/17 | 74100 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
2022/10/17 | 736 | macros/latex/contrib/proflycee/doc/perroquet.csv
-2022/10/17 | 73686 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/10/17 | 73264 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
2022/10/17 | 73171 | macros/latex/contrib/glossaries/samples/samplexdy2.pdf
-2022/10/17 | 72977 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
2022/10/17 | 724 | graphics/pstricks/contrib/pst-math/Changes
2022/10/17 | 720 | systems/texlive/tlnet/archive/collection-langeuropean.r64723.tar.xz
2022/10/17 | 718 | macros/latex/contrib/glossaries/samples/sample-entryfmt.tex
+2022/10/17 | 7174 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/10/17 | 716 | macros/latex/contrib/glossaries/samples/sample-FnDesc.tex
2022/10/17 | 71576 | macros/latex/contrib/glossaries/samples/sample-noidxapp.pdf
-2022/10/17 | 70939 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
2022/10/17 | 706 | macros/latex/contrib/glossaries/samples/database2.tex
2022/10/17 | 69919 | macros/latex/contrib/glossaries/samples/sampleSec.pdf
2022/10/17 | 68914 | macros/latex/contrib/glossaries/samples/sampleAcr.pdf
2022/10/17 | 6850 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example006.png
-2022/10/17 | 682216 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/10/17 | 68146 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2022/10/17 | 671 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example025.png
2022/10/17 | 6712 | systems/texlive/tlnet/archive/lutabulartools.r64724.tar.xz
-2022/10/17 | 668584 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/10/17 | 668430 | systems/win32/miktex/tm/packages/files.csv.lzma
2022/10/17 | 65 | macros/latex/contrib/glossaries/DEPENDS.txt
-2022/10/17 | 65129 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
2022/10/17 | 6434 | macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.tex
2022/10/17 | 64302 | macros/latex/contrib/glossaries/samples/sampletree.pdf
2022/10/17 | 63848 | macros/latex/contrib/glossaries/samples/sample-FnDesc.pdf
-2022/10/17 | 63802 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
2022/10/17 | 6358 | macros/latex/contrib/glossaries/samples/sampleEq.tex
-2022/10/17 | 63240 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/10/17 | 630433 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
2022/10/17 | 62536 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example008.pdf
-2022/10/17 | 62360 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
2022/10/17 | 621 | macros/latex/contrib/glossaries/samples/sample-ignored.tex
+2022/10/17 | 6171 | support/TeX4ht/source/tex4ht-mathjax.tex
2022/10/17 | 615 | macros/latex/contrib/glossaries/samples/mwe-acr-desc.tex
2022/10/17 | 6142 | macros/latex/contrib/glossaries/samples/sample.tex
2022/10/17 | 60867 | macros/latex/contrib/glossaries/samples/sample-crossref.pdf
-2022/10/17 | 599104 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
2022/10/17 | 590 | macros/latex/contrib/glossaries/samples/sampleDB.tex
-2022/10/17 | 58634 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/10/17 | 5834586 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/10/17 | 57505 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/10/17 | 57502 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
2022/10/17 | 57372 | macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.pdf
-2022/10/17 | 57317 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/10/17 | 565081 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
2022/10/17 | 56061 | macros/latex/contrib/glossaries/samples/sample-dot-abbr.pdf
2022/10/17 | 553 | macros/latex/contrib/glossaries/samples/sample-si.tex
-2022/10/17 | 55319 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
2022/10/17 | 551 | macros/latex/contrib/glossaries/samples/mwe-acr.tex
2022/10/17 | 54893 | macros/latex/contrib/glossaries/samples/sample-font-abbr.pdf
2022/10/17 | 54101 | macros/latex/contrib/glossaries/makeglossaries
2022/10/17 | 5385 | macros/latex/contrib/glossaries/samples/sample-custom-acronym.tex
2022/10/17 | 536 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example024.tex
2022/10/17 | 529 | macros/latex/contrib/proflycee/doc/testscript.py
-2022/10/17 | 527569 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/10/17 | 52627 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/10/17 | 52370 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
2022/10/17 | 52292 | macros/latex/contrib/glossaries/samples/minimalgls.pdf
-2022/10/17 | 52036 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
2022/10/17 | 5148 | macros/latex/contrib/glossaries/samples/sample-inline.tex
2022/10/17 | 51302 | macros/latex/contrib/glossaries/samples/sampleDB.pdf
2022/10/17 | 50963 | macros/latex/contrib/glossaries/samples/sampleDesc.pdf
@@ -101,14 +610,10 @@
2022/10/17 | 505739 | fonts/schola-otf/doc/schola-otf-doc.pdf
2022/10/17 | 49998 | macros/latex/contrib/glossaries/samples/samplePeople.pdf
2022/10/17 | 4965728 | macros/latex/contrib/glossaries/glossaries-user.pdf
-2022/10/17 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2022/10/17 | 48851 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2022/10/17 | 48818 | macros/latex/contrib/glossaries/samples/sample-prefix.pdf
2022/10/17 | 486532 | fonts/schola-otf.zip
2022/10/17 | 485 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example023.tex
2022/10/17 | 485750 | fonts/termes-otf/doc/termes-otf-doc.pdf
-2022/10/17 | 481894 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/10/17 | 48038 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
2022/10/17 | 479 | macros/latex/contrib/glossaries/samples/mwe-gls.tex
2022/10/17 | 47779 | macros/latex/contrib/glossaries/samples/sampleutf8.pdf
2022/10/17 | 4692 | systems/texlive/tlnet/archive/huaz.r64723.tar.xz
@@ -117,45 +622,29 @@
2022/10/17 | 465427 | fonts/termes-otf.zip
2022/10/17 | 4642622 | macros/latex/contrib/glossaries/glossaries-user.html
2022/10/17 | 45914 | macros/latex/contrib/glossaries/samples/sample-index.pdf
-2022/10/17 | 45795 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/10/17 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/10/17 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2022/10/17 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/10/17 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2022/10/17 | 45043 | macros/latex/contrib/glossaries/samples/sample-nomathhyper.pdf
2022/10/17 | 44614 | macros/latex/contrib/glossaries/samples/sample-numberlist.pdf
2022/10/17 | 44185 | macros/latex/contrib/mismath/mismath.dtx
-2022/10/17 | 43889 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/10/17 | 4376 | systems/texlive/tlnet/archive/docshots.source.r64722.tar.xz
2022/10/17 | 436 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example022.tex
-2022/10/17 | 43617 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/10/17 | 43528 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
2022/10/17 | 43160 | systems/texlive/tlnet/archive/eplain.r64721.tar.xz
2022/10/17 | 42398 | macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.pdf
-2022/10/17 | 422176 | systems/texlive/tlnet/archive/texlive-scripts.doc.r64720.tar.xz
2022/10/17 | 41705 | macros/latex/contrib/glossaries/samples/sample-langdict.pdf
2022/10/17 | 41702 | macros/latex/contrib/glossaries/samples/sample-newkeys.pdf
2022/10/17 | 4124 | macros/latex/contrib/glossaries/INSTALL
-2022/10/17 | 41191 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/10/17 | 41180 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2022/10/17 | 40462 | macros/latex/contrib/glossaries/samples/mwe-acr-desc.pdf
2022/10/17 | 40166 | macros/latex/contrib/glossaries/samples/sample-storage-abbr.pdf
2022/10/17 | 400 | fonts/schola-otf/README.md
2022/10/17 | 39 | fonts/schola-otf/Changes
-2022/10/17 | 3982059 | biblio/ctan-bibdata.zip
2022/10/17 | 39704 | macros/latex/contrib/glossaries/samples/sampleacronyms.pdf
-2022/10/17 | 394143 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
2022/10/17 | 39338 | macros/latex/contrib/glossaries/samples/sample-entrycount.pdf
2022/10/17 | 393152 | macros/latex/contrib/adjustbox/adjustbox.pdf
2022/10/17 | 38960 | macros/latex/contrib/glossaries/samples/sample-dual.pdf
2022/10/17 | 385141 | macros/latex/contrib/glossaries/glossariesbegin.pdf
-2022/10/17 | 37508 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
2022/10/17 | 374081 | macros/latex/contrib/mismath.zip
2022/10/17 | 37407 | macros/latex/contrib/glossaries/samples/sample-entryfmt.pdf
2022/10/17 | 3724 | macros/latex/contrib/glossaries/samples/sampleCustomAcr.tex
2022/10/17 | 3720 | macros/unicodetex/latex/bithesis/bithesis.ins
2022/10/17 | 37155 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example007.pdf
-2022/10/17 | 37051 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
2022/10/17 | 3683 | macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.tex
2022/10/17 | 36694 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example002.pdf
2022/10/17 | 36443 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example005.pdf
@@ -165,68 +654,37 @@
2022/10/17 | 36154 | macros/latex/contrib/glossaries/samples/mwe-acr.pdf
2022/10/17 | 3608 | macros/latex/contrib/glossaries/README.md
2022/10/17 | 360639 | macros/latex/contrib/mismath/mismath.pdf
-2022/10/17 | 3595046 | biblio/ctan-bibdata/ctan.pdf
2022/10/17 | 3566 | macros/latex/contrib/glossaries/samples/sample-storage-abbr.tex
2022/10/17 | 35660 | macros/latex/contrib/glossaries/glossary2glossaries.tex
-2022/10/17 | 35264 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
2022/10/17 | 3525 | macros/latex/contrib/glossaries/samples/sample-noidxapp.tex
-2022/10/17 | 352464 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/10/17 | 35231 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
2022/10/17 | 34318 | macros/latex/contrib/glossaries/samples/sample-ignored.pdf
-2022/10/17 | 33861 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
2022/10/17 | 336017 | macros/latex/contrib/glossaries/glossariesbegin.html
-2022/10/17 | 335351 | macros/latex/contrib/docshots.zip
-2022/10/17 | 334497 | macros/latex/contrib/docshots/docshots.pdf
2022/10/17 | 32 | macros/latex/contrib/proflycee/doc/basique.csv
2022/10/17 | 328 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example025.tex
2022/10/17 | 328068 | systems/texlive/tlnet/archive/huaz.doc.r64723.tar.xz
-2022/10/17 | 325979 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/10/17 | 325483 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
2022/10/17 | 32447 | macros/latex/contrib/glossaries/samples/mwe-gls.pdf
2022/10/17 | 32352 | macros/latex/contrib/collectbox/collectbox.dtx
-2022/10/17 | 32074 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/10/17 | 31587 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/10/17 | 31562 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2022/10/17 | 30571 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/10/17 | 299867 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/10/17 | 299852 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
2022/10/17 | 2989 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example001.png
-2022/10/17 | 295945 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
2022/10/17 | 2902 | macros/latex/contrib/glossaries/makeglossaries-lite.pod
-2022/10/17 | 289040 | systems/texlive/tlnet/archive/docshots.doc.r64722.tar.xz
2022/10/17 | 287948 | systems/texlive/tlnet/archive/eplain.source.r64721.tar.xz
-2022/10/17 | 286685 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
2022/10/17 | 28661 | macros/latex/contrib/glossaries/samples/samplexdy-mc.xdy
2022/10/17 | 2852 | graphics/pstricks/contrib/pst-math/latex/pst-math.sty
-2022/10/17 | 28510 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
2022/10/17 | 2846 | macros/latex/contrib/glossaries/samples/minimalgls.tex
2022/10/17 | 2838 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example023.png
2022/10/17 | 2825 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example024.png
-2022/10/17 | 2821670 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
2022/10/17 | 28091 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example030.pdf
2022/10/17 | 2773 | macros/latex/contrib/glossaries/samples/sampleSort.tex
2022/10/17 | 2750 | macros/latex/contrib/glossaries/samples/sampleAcr.tex
-2022/10/17 | 27464 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/10/17 | 270467 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
2022/10/17 | 2651420 | systems/win32/miktex/setup/windows-x64/miktexsetup-5.2.0+b8f430f-x64.zip
2022/10/17 | 26489 | fonts/termes-otf/doc/termes-otf-doc.tex
2022/10/17 | 2643 | macros/unicodetex/latex/bithesis/contributing-zh.md
-2022/10/17 | 2634 | macros/latex/contrib/docshots/docshots.ins
-2022/10/17 | 2603471 | biblio/ctan-bibdata/ctan.bib
2022/10/17 | 26024 | fonts/schola-otf/doc/schola-otf-doc.tex
-2022/10/17 | 25518508 | systems/texlive/tlnet/install-tl.zip
2022/10/17 | 2544 | macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.tex
2022/10/17 | 25391880 | systems/win32/miktex/setup/windows-x64/setup-5.3.1+b8f430f-x64.exe
2022/10/17 | 253736 | macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.pdf
-2022/10/17 | 25118 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
2022/10/17 | 2509 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example022.png
-2022/10/17 | 247206 | systems/win32/miktex/tm/packages/next/miktex-hitex-bin-x64.tar.lzma
-2022/10/17 | 245151 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
2022/10/17 | 2442 | macros/latex/contrib/glossaries/samples/sampleAcrDesc.tex
-2022/10/17 | 24212 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/10/17 | 2419960 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2022/10/17 | 2410 | macros/latex/contrib/glossaries/samples/sampleNtn.tex
-2022/10/17 | 23951 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
2022/10/17 | 23904 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example001.pdf
2022/10/17 | 2363 | macros/latex/contrib/glossaries/samples/sampleaccsupp.tex
2022/10/17 | 23392 | macros/latex/contrib/glossaries/samples/sample-si.pdf
@@ -237,43 +695,30 @@
2022/10/17 | 226479 | macros/latex/contrib/gensymb.zip
2022/10/17 | 225437 | macros/latex/contrib/adjustbox/trimclip.pdf
2022/10/17 | 2237746 | macros/latex/contrib/glossaries/glossaries-code.pdf
-2022/10/17 | 2236 | systems/texlive/tlnet/archive/docshots.r64722.tar.xz
2022/10/17 | 219979 | macros/latex/contrib/gensymb/gensymb.pdf
2022/10/17 | 2190 | macros/latex/contrib/glossaries/samples/sample-dot-abbr.tex
2022/10/17 | 214739 | macros/latex/contrib/adjustbox/adjustbox.dtx
-2022/10/17 | 213847 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
2022/10/17 | 2099 | macros/latex/contrib/glossaries/samples/sampletree.tex
-2022/10/17 | 209139 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/10/17 | 20436274 | systems/texlive/tlnet/install-tl-windows.exe
-2022/10/17 | 203421 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/10/17 | 2023133 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/10/17 | 204029 | support/TeX4ht/source/ChangeLog
2022/10/17 | 19 | macros/latex/contrib/collectbox/DEPENDS.txt
2022/10/17 | 1993 | macros/unicodetex/latex/bithesis/README.md
2022/10/17 | 1987 | macros/latex/contrib/mismath/mismath.ins
2022/10/17 | 1969 | macros/latex/contrib/glossaries/samples/sampleSec.tex
-2022/10/17 | 196213 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
2022/10/17 | 1929 | macros/latex/contrib/glossaries/samples/samplexdy2.tex
2022/10/17 | 190 | fonts/termes-otf/Changes
2022/10/17 | 190704 | macros/latex/contrib/glossaries/samples/samplexdy3.pdf
2022/10/17 | 185984 | graphics/pstricks/contrib/pst-math.zip
-2022/10/17 | 18510 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
2022/10/17 | 185080 | macros/unicodetex/latex/bithesis/bithesis.dtx
-2022/10/17 | 18382 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
2022/10/17 | 1825013 | macros/latex/contrib/glossaries/glossaries.dtx
2022/10/17 | 181791 | macros/latex/contrib/glossaries/samples/sampleEqPg.pdf
-2022/10/17 | 181725 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
2022/10/17 | 179272 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
2022/10/17 | 1784 | macros/latex/contrib/adjustbox/README.txt
2022/10/17 | 17777 | macros/latex/contrib/glossaries/samples/samplexdy-mc207.xdy
-2022/10/17 | 17700266 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2022/10/17 | 1757 | macros/latex/contrib/glossaries/samples/README-samples
2022/10/17 | 1753 | macros/latex/contrib/glossaries/samples/sample-newkeys.tex
2022/10/17 | 1751 | macros/latex/contrib/glossaries/samples/sample-font-abbr.tex
2022/10/17 | 173586 | macros/latex/contrib/collectbox.zip
-2022/10/17 | 173177 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
2022/10/17 | 17081 | macros/latex/contrib/adjustbox/adjcalc.dtx
-2022/10/17 | 169678 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/10/17 | 16888 | macros/latex/contrib/docshots/docshots.dtx
2022/10/17 | 1686 | macros/latex/contrib/glossaries/samples/sample-index.tex
2022/10/17 | 16860 | macros/latex/contrib/gensymb/gensymb.dtx
2022/10/17 | 167771 | macros/latex/contrib/glossaries/samples/sampleEq.pdf
@@ -283,37 +728,21 @@
2022/10/17 | 160559 | macros/latex/contrib/glossaries/samples/sampleCustomAcr.pdf
2022/10/17 | 158227 | macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.pdf
2022/10/17 | 157855 | macros/latex/contrib/glossaries/samples/sample-inline.pdf
-2022/10/17 | 155432 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2022/10/17 | 1545 | macros/latex/contrib/glossaries/samples/samplePeople.tex
-2022/10/17 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/10/17 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
2022/10/17 | 1508 | macros/latex/contrib/glossaries/samples/sample-crossref.tex
2022/10/17 | 1508 | macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.tex
2022/10/17 | 15087 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example022.pdf
-2022/10/17 | 1508565 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/10/17 | 1507755 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/10/17 | 1503054 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
2022/10/17 | 1500 | macros/latex/contrib/glossaries/samples/sample-langdict.tex
2022/10/17 | 1498 | macros/latex/contrib/glossaries/samples/sampleutf8.tex
2022/10/17 | 1496393 | systems/win32/miktex/tm/packages/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/10/17 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/10/17 | 1458152 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/10/17 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/10/17 | 14434 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2022/10/17 | 144016 | macros/latex/contrib/glossaries/samples/samplexdy.pdf
2022/10/17 | 14263 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example024.pdf
2022/10/17 | 14255 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example023.pdf
2022/10/17 | 140991 | macros/latex/contrib/glossaries/glossary2glossaries.pdf
-2022/10/17 | 140012 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/10/17 | 1386695 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/10/17 | 1384985 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2022/10/17 | 1376 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example002.tex
2022/10/17 | 1361742 | macros/latex/contrib/glossaries/glossaries-user.tex
-2022/10/17 | 135465 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
2022/10/17 | 13469 | macros/latex/contrib/glossaries/makeglossaries-lite.lua
-2022/10/17 | 1323745 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
2022/10/17 | 13027850 | install/macros/latex/contrib/glossaries.tds.zip
-2022/10/17 | 1298 | macros/latex/contrib/docshots/README.md
2022/10/17 | 127985 | macros/latex/contrib/glossaries/samples/sample.pdf
2022/10/17 | 12733347 | macros/latex/contrib/glossaries.zip
2022/10/17 | 1272 | macros/latex/contrib/adjustbox/adjustbox.ins
@@ -324,30 +753,19 @@
2022/10/17 | 1198 | macros/latex/contrib/glossaries/samples/sampleacronyms.tex
2022/10/17 | 118342 | macros/latex/contrib/glossaries/glossariesbegin.tex
2022/10/17 | 1180 | macros/latex/contrib/glossaries/samples/sample-entrycount.tex
-2022/10/17 | 1172 | systems/win32/miktex/tm/packages/next/pr.ini
-2022/10/17 | 1161750 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/10/17 | 115580 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/10/17 | 113664 | systems/texlive/tlnet/archive/texlive-scripts.r64720.tar.xz
-2022/10/17 | 112979 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/10/17 | 112878 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/10/17 | 1133473 | support/TeX4ht/source/tex4ht-4ht.tex
2022/10/17 | 11162 | fonts/schola-otf/latex/schola-otf.sty
2022/10/17 | 11144 | fonts/termes-otf/latex/termes-otf.sty
-2022/10/17 | 109651 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
2022/10/17 | 108845 | macros/latex/contrib/proflycee/tex/ProfLycee.sty
2022/10/17 | 1084 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example006.tex
-2022/10/17 | 1083 | macros/latex/contrib/docshots/LICENSE.txt
2022/10/17 | 1079070 | macros/latex/contrib/proflycee.zip
-2022/10/17 | 107437 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
2022/10/17 | 1071 | macros/latex/contrib/glossaries/samples/sample-nomathhyper.tex
2022/10/17 | 1071 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example008.tex
2022/10/17 | 105898 | macros/latex/contrib/glossaries/samples/sampleNtn.pdf
-2022/10/17 | 104922 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
2022/10/17 | 1048 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example005.tex
2022/10/17 | 1048452 | systems/texlive/tlnet/archive/eplain.doc.r64721.tar.xz
2022/10/17 | 1046 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example004.tex
2022/10/17 | 1036 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example007.tex
-2022/10/17 | 103598 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/10/17 | 103247 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
2022/10/17 | 102907 | macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.pdf
2022/10/17 | 1024 | macros/latex/contrib/glossaries/glossaries-user-examples/glossaries-user-example001.tex
2022/10/17 | 101 | macros/latex/contrib/adjustbox/DEPENDS.txt
@@ -367,7 +785,6 @@
2022/10/16 | 775348 | macros/eplain/doc/eplain.pdf
2022/10/16 | 725721 | macros/eplain/doc/eplain.html
2022/10/16 | 724 | systems/texlive/tlnet/archive/nlctdoc.doc.r64708.tar.xz
-2022/10/16 | 7119 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/10/16 | 688 | macros/latex/contrib/huaz/README
2022/10/16 | 6788 | systems/texlive/tlnet/archive/collection-latexextra.r64716.tar.xz
2022/10/16 | 657 | macros/eplain/doc/AUTHORS
@@ -391,20 +808,17 @@
2022/10/16 | 2692476 | systems/texlive/tlnet/archive/simpleicons.r64711.tar.xz
2022/10/16 | 258094 | macros/eplain/source/eplain-source-3.13.zip
2022/10/16 | 2493 | macros/eplain/doc/util/trimsee
-2022/10/16 | 246408 | systems/texlive/tlnet/archive/termes-otf.doc.r64712.tar.xz
2022/10/16 | 24487 | macros/eplain/tex/arrow.tex
2022/10/16 | 23920 | systems/texlive/tlnet/archive/nlctdoc.r64708.tar.xz
2022/10/16 | 2349112 | systems/texlive/tlnet/archive/circuit-macros.doc.r64713.tar.xz
2022/10/16 | 2332 | systems/texlive/tlnet/archive/pagella-otf.r64705.tar.xz
2022/10/16 | 22710 | macros/latex/contrib/frenchmath/frenchmath.dtx
-2022/10/16 | 2260 | systems/texlive/tlnet/archive/termes-otf.r64712.tar.xz
2022/10/16 | 21927176 | systems/texlive/tlnet/archive/pst-fractal.doc.r64714.tar.xz
2022/10/16 | 21740 | macros/latex/contrib/huaz/huaz.tex
2022/10/16 | 2173 | macros/eplain/doc/demo/lscommnt.tex
2022/10/16 | 2168 | systems/texlive/tlnet/archive/iexec.r64707.tar.xz
2022/10/16 | 20294 | macros/latex/contrib/huaz/huaz.sty
2022/10/16 | 1996 | macros/latex/contrib/frenchmath/frenchmath.ins
-2022/10/16 | 1984 | systems/texlive/tlnet/archive/collection-fontsextra.r64712.tar.xz
2022/10/16 | 1976784 | systems/texlive/tlnet/archive/simpleicons.doc.r64711.tar.xz
2022/10/16 | 187986 | macros/eplain/source/xeplain.tex
2022/10/16 | 186 | macros/eplain/tex/eplain.aux
@@ -1377,7 +1791,6 @@
2022/10/12 | 9601 | macros/latex/contrib/koma-script/MANIFEST.md
2022/10/12 | 9589 | macros/latex/contrib/koma-script/doc/common-dictum-en.tex
2022/10/12 | 95730 | macros/latex/contrib/koma-script/doc/scrbase-de.tex
-2022/10/12 | 944748 | systems/texlive/tlnet/archive/tex4ht.r64682.tar.xz
2022/10/12 | 94362 | macros/latex/contrib/koma-script/scrlayer-scrpage.dtx
2022/10/12 | 9387 | macros/latex/contrib/koma-script/doc/common-fontsize-de.tex
2022/10/12 | 93786 | macros/latex/contrib/koma-script/doc/scrlayer-de.tex
@@ -1608,14 +2021,12 @@
2022/10/12 | 1371 | macros/latex/contrib/koma-script/doc/scrguide-de.tex
2022/10/12 | 13715 | macros/latex/contrib/koma-script/doc/scrwfile-de.tex
2022/10/12 | 13641706 | macros/latex/contrib/profcollege.zip
-2022/10/12 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r64682.tar.xz
2022/10/12 | 135452 | macros/latex/contrib/koma-script/doc/scrlayer-notecolumn-example-en.pdf
2022/10/12 | 13393 | macros/latex/contrib/koma-script/doc/scrlttr2-examples.dtx
2022/10/12 | 13221 | macros/latex/contrib/koma-script/scrdoc.cls
2022/10/12 | 13210 | macros/latex/contrib/koma-script/doc/scrdate-en.tex
2022/10/12 | 13094 | macros/latex/contrib/koma-script/doc/scrdate-de.tex
2022/10/12 | 129092 | macros/latex/contrib/koma-script/doc/tocbasic-en.tex
-2022/10/12 | 1269348 | systems/texlive/tlnet/archive/tex4ht.source.r64682.tar.xz
2022/10/12 | 12457 | macros/latex/contrib/koma-script/doc/scrwfile-en.tex
2022/10/12 | 12409 | macros/latex/contrib/koma-script/scrkernel-pseudolengths.dtx
2022/10/12 | 12139 | macros/latex/contrib/koma-script/doc/common-parmarkup-de.tex
@@ -1632,30 +2043,3 @@
2022/10/12 | 101157 | macros/latex/contrib/koma-script/doc/scrbookreportarticle-experts-de.tex
2022/10/12 | 101021 | macros/latex/contrib/koma-script/doc/typearea-de.tex
2022/10/12 | 10005 | macros/latex/contrib/koma-script/scrlfile.dtx
-2022/10/11 | 87 | graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTableManual.ist
-2022/10/11 | 698872 | systems/texlive/tlnet/archive/japanese-mathformulas.doc.r64678.tar.xz
-2022/10/11 | 6329162 | graphics/pgf/contrib/pgf-periodictable.zip
-2022/10/11 | 489892 | systems/texlive/tlnet/archive/tikz-ext.doc.r64670.tar.xz
-2022/10/11 | 448 | systems/texlive/tlnet/archive/mcf2graph.r64671.tar.xz
-2022/10/11 | 44332 | systems/texlive/tlnet/archive/exam-n.source.r64674.tar.xz
-2022/10/11 | 429124 | systems/texlive/tlnet/archive/exam-n.doc.r64674.tar.xz
-2022/10/11 | 38588 | systems/texlive/tlnet/archive/standalone.source.r64677.tar.xz
-2022/10/11 | 377577 | macros/texinfo/latest/texinfo.tex
-2022/10/11 | 3748 | systems/texlive/tlnet/archive/currfile.r64673.tar.xz
-2022/10/11 | 35388 | systems/texlive/tlnet/archive/pdfpages.source.r64676.tar.xz
-2022/10/11 | 322700 | systems/texlive/tlnet/archive/pdfpages.doc.r64676.tar.xz
-2022/10/11 | 278396 | systems/texlive/tlnet/archive/standalone.doc.r64677.tar.xz
-2022/10/11 | 27330 | support/TeX4ht/source/Makefile
-2022/10/11 | 22376 | systems/texlive/tlnet/archive/tikz-ext.r64670.tar.xz
-2022/10/11 | 22132 | systems/texlive/tlnet/archive/japanese-mathformulas.r64678.tar.xz
-2022/10/11 | 203664 | support/TeX4ht/source/ChangeLog
-2022/10/11 | 185497 | graphics/pgf/contrib/pgf-periodictable/pgf-PeriodicTable.sty
-2022/10/11 | 180748 | systems/texlive/tlnet/archive/currfile.doc.r64673.tar.xz
-2022/10/11 | 1716 | systems/texlive/tlnet/archive/centeredline.doc.r64672.tar.xz
-2022/10/11 | 14112 | systems/texlive/tlnet/archive/exam-n.r64674.tar.xz
-2022/10/11 | 14064 | systems/texlive/tlnet/archive/pdfpages.r64676.tar.xz
-2022/10/11 | 11904 | systems/texlive/tlnet/archive/standalone.r64677.tar.xz
-2022/10/11 | 11756 | systems/texlive/tlnet/archive/currfile.source.r64673.tar.xz
-2022/10/11 | 1146 | graphics/pgf/contrib/pgf-periodictable/README
-2022/10/11 | 1053472 | systems/texlive/tlnet/archive/mcf2graph.doc.r64671.tar.xz
-2022/10/11 | 1024 | systems/texlive/tlnet/archive/centeredline.r64672.tar.xz
diff --git a/biblio/ctan-bibdata/biblatex-ctan/ctan.bbx b/biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
index ed1a53070d..e7d6b6ca86 100644
--- a/biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+++ b/biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
@@ -1,17 +1,19 @@
-\ProvidesFile{ctan.bbx}[2022/10/08 v0.01]
+\ProvidesFile{ctan.bbx}[2022/10/18 v0.01]
\RequireBibliographyStyle{authortitle}
-\DeclareDatamodelFields[type=field,datatype=literal]{pkgurl}
+\DeclareDatamodelFields[type=field,datatype=literal]{mirror}
\DeclareDatamodelFields[type=field,datatype=literal]{license}
+\DeclareDatamodelFields[type=field,datatype=literal]{label}
-\DeclareFieldFormat{pkgurl}{\textsc{pkg-url}: \url{#1}}
+\DeclareFieldFormat{mirror}{\textsc{Mirror}: \url{#1}}
\DeclareFieldFormat{license}{\textsc{License}: #1}
+\DeclareFieldFormat{label}{#1}
-\newbibmacro*{pkgurl}{%
- \iffieldundef{pkgurl}%
+\newbibmacro*{mirror}{%
+ \iffieldundef{mirror}%
{}
- {\printfield{pkgurl}}}
+ {\printfield{mirror}}}
\newbibmacro*{license}{%
\iffieldundef{license}%
@@ -43,7 +45,7 @@
\newunit
\usebibmacro{license}%
\newunit
- \printfield{note}%
+ \printfield{annotation}%
\newunit\newblock
\printlist{organization}%
\newunit\newblock
@@ -58,9 +60,12 @@
\newline
\usebibmacro{url}%
\newline
- \usebibmacro{pkgurl}%
+ \usebibmacro{mirror}%
% \usebibmacro{pageref}%
% \usebibmacro{finentry}
+%%%% the \label is only for the documenation ctan.pdf!
+ \phantomsection\label{\thefield{entrykey}}%
+%%%
}
\endinput
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index 887ba213b8..b78dc5ce67 100644
--- a/biblio/ctan-bibdata/ctan.bib
+++ b/biblio/ctan-bibdata/ctan.bib
@@ -1,7 +1,7 @@
%% bib file of all CTAN packages
%% (C) Herbert Voß
%%
-%% created at 18-10-2022, 02:00:35
+%% created at 19-10-2022, 02:01:17
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -118,7 +118,7 @@
@manual{ctan-aalok,
title = {The \texttt{Aalok} package},
- subtitle = {LaTeX class file for the Marathi journal ‘Aalok’},
+ subtitle = {\LaTeX{} class file for the Marathi journal ‘Aalok’},
author = {{Unknown}},
date = {2022-01-21},
version = {0.6},
@@ -222,7 +222,7 @@
@manual{ctan-abntexto,
title = {The \texttt{abntexto} package},
- subtitle = {LaTeX class for formatting academic papers in ABNT standards},
+ subtitle = {\LaTeX{} class for formatting academic papers in ABNT standards},
author = {Elayson Abreu},
date = {2022-10-13},
version = {1.2.1-alpha},
@@ -682,7 +682,7 @@
@manual{ctan-acs,
title = {The \texttt{acs} package},
- subtitle = {LaTeX 2.09 support for Advances in Control Systems},
+ subtitle = {\LaTeX{} 2.09 support for Advances in Control Systems},
author = {{Unknown}},
date = {2016-06-24},
version = {},
@@ -833,7 +833,7 @@
@manual{ctan-adforn,
title = {The \texttt{adforn} package},
- subtitle = {OrnementsADF font with \TeX{}/LaTeX support},
+ subtitle = {OrnementsADF font with \TeX{}/\LaTeX{} support},
author = {Clea F. Rees},
date = {2020-08-29},
version = {1.1b},
@@ -844,7 +844,7 @@
@manual{ctan-adfsymbols,
title = {The \texttt{adfsymbols} package},
- subtitle = {SymbolsADF with \TeX{}/LaTeX support},
+ subtitle = {SymbolsADF with \TeX{}/\LaTeX{} support},
author = {Clea F. Rees},
date = {2020-08-29},
version = {1.2b},
@@ -1215,7 +1215,7 @@
@manual{ctan-afterpage,
title = {The \texttt{afterpage} package},
subtitle = {Execute command after the next page break},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.08},
license = {lppl1.3c},
@@ -1344,7 +1344,7 @@
@manual{ctan-albatross,
title = {The \texttt{albatross} package},
subtitle = {Find fonts that contain a given glyph},
- author = {{Island of TeX}},
+ author = {{Island of \TeX{}}},
date = {2021-11-27},
version = {0.4.0},
license = {bsd3},
@@ -1368,7 +1368,7 @@
@manual{ctan-aleph,
title = {The \texttt{aleph} package},
subtitle = {Extended \TeX{}},
- author = {Giuseppe Bilotta and {The TeX Live Team}},
+ author = {Giuseppe Bilotta and {The \TeX{} Live Team}},
date = {2020-08-30},
license = {gpl},
url = {https://ctan.org/pkg/aleph},
@@ -1401,7 +1401,7 @@
@manual{ctan-alg,
title = {The \texttt{alg} package},
- subtitle = {LaTeX environments for typesetting algorithms},
+ subtitle = {\LaTeX{} environments for typesetting algorithms},
author = {Staffan Ulfberg},
date = {2016-06-24},
version = {},
@@ -1558,7 +1558,7 @@
@manual{ctan-alltt,
title = {The \texttt{alltt} package},
subtitle = {Everything in tt font, but obey commands and line endings},
- author = {Leslie Lamport and Johannes L. Braams and {The LaTeX Project Team}},
+ author = {Leslie Lamport and Johannes L. Braams and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.0g},
license = {lppl1.3c},
@@ -1718,7 +1718,7 @@
multiple choices questionnaires in a table with two columns. The aim is
to provide some useful macros to build QCM in tables. These macros may be
used by only \LaTeX{} \TeX{} users. The package  works with utf8, pdfLaTeX,
- LuaLaTeX and \XeLaTeX{} (with some languages). The documentation is in English.},
+ Lua\LaTeX{} and \XeLaTeX{} (with some languages). The documentation is in English.},
}
@manual{ctan-altfont,
@@ -1866,7 +1866,7 @@
@manual{ctan-amsart,
title = {The \texttt{amsart} package},
- subtitle = {LaTeX document class for AMS math journal articles},
+ subtitle = {\LaTeX{} document class for AMS math journal articles},
author = {{The American Mathematical Society}},
date = {2020-06-01},
version = {2.20.6},
@@ -1877,7 +1877,7 @@
@manual{ctan-amsbook,
title = {The \texttt{amsbook} package},
- subtitle = {LaTeX document class for AMS books},
+ subtitle = {\LaTeX{} document class for AMS books},
author = {{The American Mathematical Society}},
date = {2020-06-01},
version = {2.20.6},
@@ -1898,7 +1898,7 @@
@manual{ctan-amsbsy,
title = {The \texttt{amsbsy} package},
subtitle = {Produce bold math symbols (AMS-LaTeX)},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.2d},
license = {lppl1.3c},
@@ -1908,8 +1908,8 @@
@manual{ctan-amscd,
title = {The \texttt{amscd} package},
- subtitle = {AMS-LaTeX commutative diagrams},
- author = {{The LaTeX Project Team}},
+ subtitle = {AMS-\LaTeX{} commutative diagrams},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.1},
license = {lppl1.3c},
@@ -1987,7 +1987,7 @@
@manual{ctan-amslatexdoc-vietnamese,
title = {The \texttt{amslatexdoc-vietnamese} package},
- subtitle = {Vietnamese translation of AMSLaTeX documentation},
+ subtitle = {Vietnamese translation of AMS\LaTeX{} documentation},
author = {Ky-Anh Huynh},
date = {2020-03-19},
version = {2.0},
@@ -2025,7 +2025,7 @@
@manual{ctan-amsmath,
title = {The \texttt{amsmath} package},
subtitle = {AMS mathematical facilities for \LaTeX{}},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {2.17n},
license = {lppl1.3c},
@@ -2047,7 +2047,7 @@
@manual{ctan-amsopn,
title = {The \texttt{amsopn} package},
subtitle = {Typeset mathematical operator names},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {2.04},
license = {lppl1.3c},
@@ -2095,7 +2095,7 @@
@manual{ctan-amsproc,
title = {The \texttt{amsproc} package},
- subtitle = {LaTeX document class for AMS conference proceedings},
+ subtitle = {\LaTeX{} document class for AMS conference proceedings},
author = {{The American Mathematical Society}},
date = {2020-06-01},
version = {2.20.6},
@@ -2129,7 +2129,7 @@
@manual{ctan-amstext,
title = {The \texttt{amstext} package},
subtitle = {Typeset text fragments in mathematics},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-11-12},
version = {2.01},
license = {lppl1.3c},
@@ -2242,7 +2242,7 @@
annotation = {This package provides commands that make it easy to highlight
terms in equations and add annotation labels using
.
- It should work with pdfLaTeX as well as LuaLaTeX.},
+ It should work with pdf\LaTeX{} as well as LuaLaTeX.},
}
@manual{ctan-annotate,
@@ -2445,7 +2445,7 @@
@manual{ctan-anufinalexam,
title = {The \texttt{ANUfinalexam} package},
- subtitle = {LaTeX document shell for ANU final exam},
+ subtitle = {\LaTeX{} document shell for ANU final exam},
author = {Timothy Kam},
date = {2018-01-06},
license = {gpl},
@@ -3142,7 +3142,7 @@
@manual{ctan-array,
title = {The \texttt{array} package},
subtitle = {Extending the array and tabular environments},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {2.5f},
license = {lppl1.3},
@@ -3257,7 +3257,7 @@
@manual{ctan-article,
title = {The \texttt{article} package},
subtitle = {Default class for composing an article},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.4n},
license = {lppl1.3c},
@@ -3267,7 +3267,7 @@
@manual{ctan-articleingud,
title = {The \texttt{articleingud} package},
- subtitle = {LaTeX class for articles published in INGENIERIA review},
+ subtitle = {\LaTeX{} class for articles published in INGENIERIA review},
author = {Omar Salazar Morales},
date = {2016-06-24},
version = {0.3},
@@ -3424,7 +3424,7 @@
@manual{ctan-ascmac,
title = {The \texttt{ascmac} package},
subtitle = {Boxes and picture macros with Japanese vertical writing support},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2020-01-15},
version = {2.1},
license = {bsd3},
@@ -3525,7 +3525,7 @@
@manual{ctan-association-matrix,
title = {The \texttt{association-matrix} package},
- subtitle = {LaTeX support for creating association matrices},
+ subtitle = {\LaTeX{} support for creating association matrices},
author = {{Unknown}},
date = {2021-08-26},
version = {1.0},
@@ -3928,7 +3928,7 @@
@manual{ctan-auto-pst-pdf-lua,
title = {The \texttt{auto-pst-pdf-lua} package},
- subtitle = {Using LuaLaTeX together with PostScript code},
+ subtitle = {Using Lua\LaTeX{} together with PostScript code},
author = {Herbert Voß},
date = {2018-12-09},
version = {0.03},
@@ -3950,7 +3950,7 @@
@manual{ctan-auto1,
title = {The \texttt{auto1} package},
- subtitle = {LaTeX support for Underware Auto 1 fonts},
+ subtitle = {\LaTeX{} support for Underware Auto 1 fonts},
author = {Nico Schlömer},
date = {2018-01-06},
version = {0.2},
@@ -4087,7 +4087,7 @@
mirror = {https://mirror.ctan.org/macros/latex/contrib/autopdf},
url = {https://ctan.org/pkg/autopdf},
annotation = {The package facilitates the on-the-fly conversion of various
- graphics formats to formats supported by pdfLaTeX (e.g. PDF). It
+ graphics formats to formats supported by pdf\LaTeX{} (e.g. PDF). It
uses a range of external programs, and therefore requires that the
\LaTeX{} run starts with enabled.},
}
@@ -4095,7 +4095,7 @@
@manual{ctan-autopict,
title = {The \texttt{autopict} package},
subtitle = {The \LaTeX{} picture mode, for use with Plain \TeX{}},
- author = {{The LaTeX Project Team} and David Carlisle},
+ author = {{The \LaTeX{} Project Team} and David Carlisle},
date = {2021-11-15},
version = {1.1k},
license = {lppl},
@@ -4253,7 +4253,7 @@
@manual{ctan-b1encoding,
title = {The \texttt{b1encoding} package},
- subtitle = {LaTeX encoding tools for Bookhands fonts},
+ subtitle = {\LaTeX{} encoding tools for Bookhands fonts},
author = {Peter R. Wilson},
date = {2016-06-24},
version = {1.0},
@@ -4663,7 +4663,7 @@
@manual{ctan-babel-japanese,
title = {The \texttt{babel-japanese} package},
subtitle = {Babel support for Japanese},
- author = {{Ing} and {Japanese TeX Development Community}},
+ author = {{Ing} and {Japanese \TeX{} Development Community}},
date = {2021-02-13},
version = {},
license = {lppl1.3},
@@ -4801,7 +4801,7 @@
url = {https://ctan.org/pkg/babel-portuges},
annotation = {The package provides the language definition file for support of
Portuguese and Brazilian Portuguese in . Some shortcuts are defined, as well
- as translations to Portuguese of standard “LaTeX namesâ€.},
+ as translations to Portuguese of standard “\LaTeX{} namesâ€.},
}
@manual{ctan-babel-romanian,
@@ -4815,7 +4815,7 @@
url = {https://ctan.org/pkg/babel-romanian},
annotation = {The package provides the language definition file for support of
Romanian in . Translations to
- Romanian of standard “LaTeX names†are provided.},
+ Romanian of standard “\LaTeX{} names†are provided.},
}
@manual{ctan-babel-romansh,
@@ -4866,7 +4866,7 @@
annotation = {The package provides the language definition file for support of
Gaidhlig (Scottish Gaelic) in .
Some shortcuts are defined, as well as translations of standard
- “LaTeX namesâ€.},
+ “\LaTeX{} namesâ€.},
}
@manual{ctan-babel-serbian,
@@ -4921,7 +4921,7 @@
annotation = {The package provides the language definition file for support of
Slovenian in . Several shortcuts
are defined, as well as translations to Slovenian of standard
- “LaTeX namesâ€.},
+ “\LaTeX{} namesâ€.},
}
@manual{ctan-babel-sorbian,
@@ -4936,7 +4936,7 @@
annotation = {The package provides language definitions file for support of both
Upper and Lower Sorbian, in . Some
shortcuts are defined, as well as translations to the relevant
- language of standard “LaTeX namesâ€.},
+ language of standard “\LaTeX{} namesâ€.},
}
@manual{ctan-babel-spanglish,
@@ -5387,7 +5387,7 @@
@manual{ctan-bardiag,
title = {The \texttt{bardiag} package},
- subtitle = {LaTeX package for drawing bar diagrams},
+ subtitle = {\LaTeX{} package for drawing bar diagrams},
author = {R. Stepanyan},
date = {2018-09-15},
version = {0.4a},
@@ -5515,7 +5515,7 @@
@manual{ctan-baskervaldadf,
title = {The \texttt{baskervaldadf} package},
- subtitle = {Baskervald ADF fonts collection with \TeX{}/LaTeX support},
+ subtitle = {Baskervald ADF fonts collection with \TeX{}/\LaTeX{} support},
author = {Clea F. Rees},
date = {2017-04-18},
version = {1.016},
@@ -5670,7 +5670,7 @@
@manual{ctan-bbm-macros,
title = {The \texttt{bbm-macros} package},
- subtitle = {LaTeX support for "blackboard-style" cm fonts},
+ subtitle = {\LaTeX{} support for "blackboard-style" cm fonts},
author = {Torsten Hilbrich},
date = {2016-06-24},
license = {lppl},
@@ -6248,7 +6248,7 @@
@manual{ctan-begingreek,
title = {The \texttt{begingreek} package},
- subtitle = {Greek environment to be used with pdfLaTeX only},
+ subtitle = {Greek environment to be used with pdf\LaTeX{} only},
author = {Claudio Beccari},
date = {2022-05-16},
version = {1.7},
@@ -6256,7 +6256,7 @@
mirror = {https://mirror.ctan.org/macros/latex/contrib/begingreek},
url = {https://ctan.org/pkg/begingreek},
annotation = {This simple package defines a greek environment to be used with
- pdfLaTeX only, that accepts an optional Greek font family name
+ pdf\LaTeX{} only, that accepts an optional Greek font family name
to type its contents with. A similar command does
a similar action for shorter texts.},
}
@@ -6359,7 +6359,7 @@
@manual{ctan-berenisadf,
title = {The \texttt{berenisadf} package},
- subtitle = {Berenis ADF fonts and \TeX{}/LaTeX support},
+ subtitle = {Berenis ADF fonts and \TeX{}/\LaTeX{} support},
author = {Clea F. Rees and Hirwen Harendal},
date = {2016-06-24},
version = {1.004},
@@ -6805,7 +6805,7 @@
@manual{ctan-biber-ms,
title = {The \texttt{biber-ms} package},
- subtitle = {A BibTeX replacement for users of BibLaTeX (multiscript version)},
+ subtitle = {A BibTeX replacement for users of Bib\LaTeX{} (multiscript version)},
author = {Philip Kime and François Charette},
date = {2022-08-24},
version = {4.0},
@@ -6967,7 +6967,7 @@
@manual{ctan-biblatex-abnt,
title = {The \texttt{biblatex-abnt} package},
- subtitle = {BibLaTeX style for Brazil's ABNT rules},
+ subtitle = {Bib\LaTeX{} style for Brazil's ABNT rules},
author = {Daniel B. Marques},
date = {2018-11-17},
version = {3.4},
@@ -6980,7 +6980,7 @@
@manual{ctan-biblatex-ajc2020unofficial,
title = {The \texttt{biblatex-ajc2020unofficial} package},
- subtitle = {BibLaTeX style for the Australasian Journal of Combinatorics},
+ subtitle = {Bib\LaTeX{} style for the Australasian Journal of Combinatorics},
author = {Nikolai Avdeev},
date = {2020-04-11},
version = {0.2.0},
@@ -7006,7 +7006,7 @@
@manual{ctan-biblatex-apa,
title = {The \texttt{biblatex-apa} package},
- subtitle = {BibLaTeX citation and reference style for APA},
+ subtitle = {Bib\LaTeX{} citation and reference style for APA},
author = {Philip Kime},
date = {2022-06-23},
version = {9.16},
@@ -7017,7 +7017,7 @@
@manual{ctan-biblatex-apa6,
title = {The \texttt{biblatex-apa6} package},
- subtitle = {BibLaTeX citation and reference style for APA 6th Edition},
+ subtitle = {Bib\LaTeX{} citation and reference style for APA 6th Edition},
author = {Philip Kime},
date = {2020-08-29},
version = {8.5},
@@ -7028,7 +7028,7 @@
@manual{ctan-biblatex-archaeology,
title = {The \texttt{biblatex-archaeology} package},
- subtitle = {A collection of BibLaTeX styles for German prehistory},
+ subtitle = {A collection of Bib\LaTeX{} styles for German prehistory},
author = {Ingram Braun},
date = {2019-12-31},
version = {2.2},
@@ -7053,7 +7053,7 @@
@manual{ctan-biblatex-arthistory-bonn,
title = {The \texttt{biblatex-arthistory-bonn} package},
- subtitle = {BibLaTeX citation style covers the citation and bibliography guidelines for art historians},
+ subtitle = {Bib\LaTeX{} citation style covers the citation and bibliography guidelines for art historians},
author = {Lukas C. Bossert and Thorsten Kemper},
date = {2018-02-13},
version = {1.2},
@@ -7084,7 +7084,7 @@
recurring author/year in multiple-reference-citations) and
authoryear-ibid (replacement of repeated citations by the
abbreviation ibidem). The implementation relies heavily on
- unmodified BibLaTeX macros, and no attempt has been made to
+ unmodified Bib\LaTeX{} macros, and no attempt has been made to
add further features not present in core BibLaTeX.},
}
@@ -7097,7 +7097,7 @@
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/biblatex-contrib/biblatex-bath},
url = {https://ctan.org/pkg/biblatex-bath},
- annotation = {This package provides a BibLaTeX style to format reference
+ annotation = {This package provides a Bib\LaTeX{} style to format reference
lists in the recommended by the University of Bath Library.},
}
@@ -7121,7 +7121,7 @@
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/biblatex-contrib/biblatex-bookinother},
url = {https://ctan.org/pkg/biblatex-bookinother},
- annotation = {This package provides new BibLaTeX entry types and fields
+ annotation = {This package provides new Bib\LaTeX{} entry types and fields
for book edited in other types, like for instance .
It offers more types than the older package
@@ -7130,7 +7130,7 @@
@manual{ctan-biblatex-bwl,
title = {The \texttt{biblatex-bwl} package},
- subtitle = {BibLaTeX citations for FU Berlin},
+ subtitle = {Bib\LaTeX{} citations for FU Berlin},
author = {Herbert Voß},
date = {2016-06-24},
version = {0.02},
@@ -7173,7 +7173,7 @@
@manual{ctan-biblatex-chem,
title = {The \texttt{biblatex-chem} package},
- subtitle = {A set of BibLaTeX implementations of chemistry-related bibliography styles},
+ subtitle = {A set of Bib\LaTeX{} implementations of chemistry-related bibliography styles},
author = {Joseph Wright},
date = {2021-02-24},
version = {1.1z},
@@ -7232,7 +7232,7 @@
@manual{ctan-biblatex-enc,
title = {The \texttt{biblatex-enc} package},
- subtitle = {BibLaTeX style for the École nationale des chartes (Paris)},
+ subtitle = {Bib\LaTeX{} style for the École nationale des chartes (Paris)},
author = {Jean-Baptiste Camps},
date = {2017-06-19},
version = {1.0},
@@ -7243,7 +7243,7 @@
@manual{ctan-biblatex-ext,
title = {The \texttt{biblatex-ext} package},
- subtitle = {Extended BibLaTeX standard styles},
+ subtitle = {Extended Bib\LaTeX{} standard styles},
author = {Moritz Wemheuer},
date = {2022-06-18},
version = {0.16},
@@ -7254,7 +7254,7 @@
@manual{ctan-biblatex-fiwi,
title = {The \texttt{biblatex-fiwi} package},
- subtitle = {BibLaTeX styles for use in German humanities},
+ subtitle = {Bib\LaTeX{} styles for use in German humanities},
author = {Simon Spiegel},
date = {2017-11-21},
version = {1.7},
@@ -7265,14 +7265,14 @@
(version 3.5 is required,
currently). It was designed for citations in German Humanities,
especially film studies, and offers some features that are not
- provided by the standard BibLaTeX styles. The style is highly
+ provided by the standard Bib\LaTeX{} styles. The style is highly
optimized for documents written in German, and the main
documentation is only available in German.},
}
@manual{ctan-biblatex-gb7714-2015,
title = {The \texttt{biblatex-gb7714-2015} package},
- subtitle = {A BibLaTeX implementation of the GBT7714-2015 bibliography style for Chinese users},
+ subtitle = {A Bib\LaTeX{} implementation of the GBT7714-2015 bibliography style for Chinese users},
author = {Hu Zhenzhen},
date = {2022-08-29},
version = {1.1j},
@@ -7294,7 +7294,7 @@
@manual{ctan-biblatex-gost,
title = {The \texttt{biblatex-gost} package},
- subtitle = {BibLaTeX support for GOST standard bibliographies},
+ subtitle = {Bib\LaTeX{} support for GOST standard bibliographies},
author = {Oleg Domanov},
date = {2021-05-08},
version = {1.22},
@@ -7307,7 +7307,7 @@
@manual{ctan-biblatex-historian,
title = {The \texttt{biblatex-historian} package},
- subtitle = {A BibLaTeX style},
+ subtitle = {A Bib\LaTeX{} style},
author = {Sander Gliboff},
date = {2016-06-24},
version = {0.4},
@@ -7329,19 +7329,19 @@
@manual{ctan-biblatex-ijsra,
title = {The \texttt{biblatex-ijsra} package},
- subtitle = {BibLaTeX style for the International Journal of Student Research in Archaeology},
+ subtitle = {Bib\LaTeX{} style for the International Journal of Student Research in Archaeology},
author = {Lukas C. Bossert},
date = {2016-07-07},
version = {0.1},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/biblatex-contrib/biblatex-ijsra},
url = {https://ctan.org/pkg/biblatex-ijsra},
- annotation = {BibLaTeX style used for the journal .},
+ annotation = {Bib\LaTeX{} style used for the journal .},
}
@manual{ctan-biblatex-iso690,
title = {The \texttt{biblatex-iso690} package},
- subtitle = {BibLaTeX style for ISO 690 standard},
+ subtitle = {Bib\LaTeX{} style for ISO 690 standard},
author = {Michal Hoftich},
date = {2022-03-21},
version = {0.4.1},
@@ -7351,14 +7351,14 @@
annotation = {The package provides a bibliography and citation style which
conforms to the latest revision of the international standard
ISO 690:2010.
- The implementation follows BibLaTeX conventions and requires
+ The implementation follows Bib\LaTeX{} conventions and requires
≥ 3.4
and ≥ 2.5.},
}
@manual{ctan-biblatex-jura,
title = {The \texttt{biblatex-jura} package},
- subtitle = {BibLaTeX stylefiles for German legal literature},
+ subtitle = {Bib\LaTeX{} stylefiles for German legal literature},
author = {Ben E. Hard},
date = {2016-06-24},
version = {0.1.1},
@@ -7383,7 +7383,7 @@
@manual{ctan-biblatex-juradiss,
title = {The \texttt{biblatex-juradiss} package},
- subtitle = {BibLaTeX stylefiles for German law theses},
+ subtitle = {Bib\LaTeX{} stylefiles for German law theses},
author = {Tobias Schwan and Herbert Voß},
date = {2020-10-01},
version = {0.23},
@@ -7414,14 +7414,14 @@
@manual{ctan-biblatex-lncs,
title = {The \texttt{biblatex-lncs} package},
- subtitle = {BibLaTeX style for Springer Lecture Notes in Computer Science},
+ subtitle = {Bib\LaTeX{} style for Springer Lecture Notes in Computer Science},
author = {Merlin Göttlinger},
date = {2022-03-26},
version = {0.5},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/biblatex-contrib/biblatex-lncs},
url = {https://ctan.org/pkg/biblatex-lncs},
- annotation = {This is a BibLaTeX style for
+ annotation = {This is a Bib\LaTeX{} style for
Springer Lecture Notes in Computer Science (LNCS).
It extends the standard
model by an entry.},
@@ -7440,7 +7440,7 @@
@manual{ctan-biblatex-luh-ipw,
title = {The \texttt{biblatex-luh-ipw} package},
- subtitle = {BibLaTeX styles for social sciences},
+ subtitle = {Bib\LaTeX{} styles for social sciences},
author = {Oliver Heins},
date = {2016-06-24},
version = {0.3},
@@ -7478,7 +7478,7 @@
@manual{ctan-biblatex-morenames,
title = {The \texttt{biblatex-morenames} package},
- subtitle = {New names for standard BibLaTeX entry type},
+ subtitle = {New names for standard Bib\LaTeX{} entry type},
author = {Maïeul Rouquette},
date = {2017-04-18},
version = {1.3.1},
@@ -7514,7 +7514,7 @@
@manual{ctan-biblatex-musuos,
title = {The \texttt{biblatex-musuos} package},
- subtitle = {A BibLaTeX style for citations in musuos.cls},
+ subtitle = {A Bib\LaTeX{} style for citations in musuos.cls},
author = {Tobias Weh},
date = {2016-06-24},
version = {1.0},
@@ -7528,7 +7528,7 @@
@manual{ctan-biblatex-nature,
title = {The \texttt{biblatex-nature} package},
- subtitle = {BibLaTeX support for Nature},
+ subtitle = {Bib\LaTeX{} support for Nature},
author = {Joseph Wright},
date = {2020-12-30},
version = {1.3d},
@@ -7542,7 +7542,7 @@
@manual{ctan-biblatex-nejm,
title = {The \texttt{biblatex-nejm} package},
- subtitle = {BibLaTeX style for the New England Journal of Medicine (NEJM)},
+ subtitle = {Bib\LaTeX{} style for the New England Journal of Medicine (NEJM)},
author = {Dilum Aluthge and Marco Daniel},
date = {2019-01-22},
version = {0.5.0},
@@ -7577,7 +7577,7 @@
@manual{ctan-biblatex-oxref,
title = {The \texttt{biblatex-oxref} package},
- subtitle = {BibLaTeX styles inspired by the Oxford Guide to Style},
+ subtitle = {Bib\LaTeX{} styles inspired by the Oxford Guide to Style},
author = {Alex Ball},
date = {2021-01-19},
version = {2.2},
@@ -7588,7 +7588,7 @@
@manual{ctan-biblatex-philosophy,
title = {The \texttt{biblatex-philosophy} package},
- subtitle = {Styles for using BibLaTeX for work in philosophy},
+ subtitle = {Styles for using Bib\LaTeX{} for work in philosophy},
author = {Ivan Valbusa},
date = {2022-09-16},
version = {1.9.8g},
@@ -7599,7 +7599,7 @@
@manual{ctan-biblatex-phys,
title = {The \texttt{biblatex-phys} package},
- subtitle = {A BibLaTeX implementation of the AIP and APS bibliography style},
+ subtitle = {A Bib\LaTeX{} implementation of the AIP and APS bibliography style},
author = {Joseph Wright},
date = {2020-06-21},
version = {1.1b},
@@ -7610,7 +7610,7 @@
@manual{ctan-biblatex-publist,
title = {The \texttt{biblatex-publist} package},
- subtitle = {BibLaTeX bibliography support for publication lists},
+ subtitle = {Bib\LaTeX{} bibliography support for publication lists},
author = {Jürgen Spitzmüller},
date = {2022-10-03},
version = {1.27},
@@ -7654,7 +7654,7 @@
@manual{ctan-biblatex-science,
title = {The \texttt{biblatex-science} package},
- subtitle = {BibLaTeX implementation of the Science bibliography style},
+ subtitle = {Bib\LaTeX{} implementation of the Science bibliography style},
author = {Joseph Wright},
date = {2018-10-19},
version = {1.2},
@@ -7690,7 +7690,7 @@
@manual{ctan-biblatex-software,
title = {The \texttt{biblatex-software} package},
- subtitle = {BibLaTeX stylefiles for software products},
+ subtitle = {Bib\LaTeX{} stylefiles for software products},
author = {Roberto Di Cosmo},
date = {2022-08-02},
version = {1.2-5},
@@ -7721,7 +7721,7 @@
@manual{ctan-biblatex-spbasic,
title = {The \texttt{biblatex-spbasic} package},
- subtitle = {A BibLaTeX style emulating Springer’s old spbasic.bst},
+ subtitle = {A Bib\LaTeX{} style emulating Springer’s old spbasic.bst},
author = {Herbert Voß},
date = {2021-12-29},
version = {0.04},
@@ -7773,7 +7773,7 @@
@manual{ctan-biblatex-true-citepages-omit,
title = {The \texttt{biblatex-true-citepages-omit} package},
- subtitle = {Correction of some limitation of the citepages=omit option of BibLaTeX styles},
+ subtitle = {Correction of some limitation of the citepages=omit option of Bib\LaTeX{} styles},
author = {Maïeul Rouquette},
date = {2017-06-20},
version = {2.0.0},
@@ -7784,14 +7784,14 @@
@manual{ctan-biblatex-unified,
title = {The \texttt{biblatex-unified} package},
- subtitle = {BibLaTeX implementation of the unified stylesheet for linguistics journals},
+ subtitle = {Bib\LaTeX{} implementation of the unified stylesheet for linguistics journals},
author = {Kai von Fintel},
date = {2022-02-05},
version = {1.10},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/biblatex-contrib/biblatex-unified},
url = {https://ctan.org/pkg/biblatex-unified},
- annotation = {BibLaTeX-unified is an opinionated BibLaTeX implementation of the},
+ annotation = {BibLaTeX-unified is an opinionated Bib\LaTeX{} implementation of the},
}
@manual{ctan-biblatex-vancouver,
@@ -8085,7 +8085,7 @@
@manual{ctan-bibtex8,
title = {The \texttt{bibtex8} package},
subtitle = {A fully 8-bit adaptation of BibTeX 0.99},
- author = {Niel Kempson and {The TeX Live Team}},
+ author = {Niel Kempson and {The \TeX{} Live Team}},
date = {2022-09-20},
version = {3.72},
license = {gpl},
@@ -8118,7 +8118,7 @@
@manual{ctan-bibtexu,
title = {The \texttt{bibtexu} package},
subtitle = {An adaptation of BibTeX 0.99 that supports Unicode via ICU},
- author = {Yannis Haralambous and {Japanese TeX Development Community} and {The TeX Live Team}},
+ author = {Yannis Haralambous and {Japanese \TeX{} Development Community} and {The \TeX{} Live Team}},
date = {2022-10-08},
version = {3.72},
license = {gpl},
@@ -8553,7 +8553,7 @@
@manual{ctan-biolinum-type1,
title = {The \texttt{biolinum-type1} package},
- subtitle = {(pdf)LaTeX support for the Biolinum family of fonts},
+ subtitle = {(pdf)\LaTeX{} support for the Biolinum family of fonts},
author = {Bob Tennent},
date = {2016-06-24},
version = {5.3.0},
@@ -8903,7 +8903,7 @@
@manual{ctan-bm,
title = {The \texttt{bm} package},
subtitle = {Access bold symbols in maths mode},
- author = {David Carlisle and Frank Mittelbach and {The LaTeX Project Team}},
+ author = {David Carlisle and Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.2f},
license = {lppl1.3c},
@@ -9159,7 +9159,7 @@
@manual{ctan-book,
title = {The \texttt{book} package},
subtitle = {A class for typesetting books},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.4n},
license = {lppl1.3c},
@@ -9202,7 +9202,7 @@
@manual{ctan-bookform,
title = {The \texttt{bookform} package},
- subtitle = {LaTeX 2.08 style for MIL STD 490 documents},
+ subtitle = {\LaTeX{} 2.08 style for MIL STD 490 documents},
author = {Kent McPherson},
date = {2016-06-24},
version = {},
@@ -9671,7 +9671,7 @@
@manual{ctan-brief-t,
title = {The \texttt{brief-t} package},
- subtitle = {LaTeX support for the brief editor},
+ subtitle = {\LaTeX{} support for the brief editor},
author = {PL Hedne},
date = {2019-02-03},
version = {},
@@ -9922,7 +9922,7 @@
@manual{ctan-bxcjkjatype,
title = {The \texttt{bxcjkjatype} package},
- subtitle = {Typeset Japanese with pdfLaTeX and CJK},
+ subtitle = {Typeset Japanese with pdf\LaTeX{} and CJK},
author = {Takayuki Yato},
date = {2019-10-22},
version = {0.3},
@@ -10044,7 +10044,7 @@
annotation = {This package provides an extended version of the Japanese
document class collection provided by
.
- While the original version supports only pLaTeX and upLaTeX,
+ While the original version supports only p\LaTeX{} and upLaTeX,
the extended version also supports pdfLaTeX, \XeLaTeX{} and LuaLaTeX,
with the aid of suitable packages that provide capability of
Japanese typesetting.},
@@ -10280,7 +10280,7 @@
@manual{ctan-calc,
title = {The \texttt{calc} package},
subtitle = {Simple arithmetic in \LaTeX{} commands},
- author = {{The LaTeX Project Team} and Kresten Krab Thorup and Frank Jensen},
+ author = {{The \LaTeX{} Project Team} and Kresten Krab Thorup and Frank Jensen},
date = {2021-06-01},
version = {4.3},
license = {lppl1.3c},
@@ -10518,7 +10518,7 @@
@manual{ctan-cantarell,
title = {The \texttt{cantarell} package},
- subtitle = {LaTeX support for the Cantarell font family},
+ subtitle = {\LaTeX{} support for the Cantarell font family},
author = {Mohamed El Morabity},
date = {2019-06-24},
version = {3.2},
@@ -10692,7 +10692,7 @@
@manual{ctan-cartonaugh,
title = {The \texttt{cartonaugh} package},
- subtitle = {A LuaLaTeX package for drawing karnaugh maps with up to 6 variables},
+ subtitle = {A Lua\LaTeX{} package for drawing karnaugh maps with up to 6 variables},
author = {Jamal Bouajjaj},
date = {2021-07-17},
version = {1.0},
@@ -11013,7 +11013,7 @@
@manual{ctan-cbfonts-fd,
title = {The \texttt{cbfonts-fd} package},
- subtitle = {LaTeX font description files for the CB Greek fonts},
+ subtitle = {\LaTeX{} font description files for the CB Greek fonts},
author = {Claudio Beccari},
date = {2019-07-18},
version = {1.2},
@@ -11063,7 +11063,7 @@
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/contrib/ccfonts},
url = {https://ctan.org/pkg/ccfonts},
- annotation = {LaTeX font definition files for the Concrete fonts and a
+ annotation = {\LaTeX{} font definition files for the Concrete fonts and a
\LaTeX{} package for typesetting documents using Concrete as
the default font family. The files support OT1, T1, TS1,
and Concrete mathematics including AMS fonts (Ulrik Vieth's
@@ -11083,7 +11083,7 @@
@manual{ctan-ccicons,
title = {The \texttt{ccicons} package},
- subtitle = {LaTeX support for Creative Commons icons},
+ subtitle = {\LaTeX{} support for Creative Commons icons},
author = {Michael Ummels},
date = {2018-01-06},
version = {1.6},
@@ -11353,7 +11353,7 @@
@manual{ctan-cfgguide,
title = {The \texttt{cfgguide} package},
subtitle = {Documentation of \LaTeX{} configuration options},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2019-10-04},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/base},
@@ -11362,7 +11362,7 @@
@manual{ctan-cfr-initials,
title = {The \texttt{cfr-initials} package},
- subtitle = {LaTeX packages for use of initials},
+ subtitle = {\LaTeX{} packages for use of initials},
author = {Clea F. Rees},
date = {2021-08-26},
version = {1.01},
@@ -11584,7 +11584,7 @@
@manual{ctan-checkcites,
title = {The \texttt{checkcites} package},
subtitle = {Check citation commands in a document},
- author = {Paulo Roberto Massa Cereda and {Island of TeX} and Enrico Gregorio},
+ author = {Paulo Roberto Massa Cereda and {Island of \TeX{}} and Enrico Gregorio},
date = {2022-08-20},
version = {2.6},
license = {lppl1.3},
@@ -11958,7 +11958,7 @@
@manual{ctan-chet,
title = {The \texttt{chet} package},
- subtitle = {LaTeX layout inspired by harvmac},
+ subtitle = {\LaTeX{} layout inspired by harvmac},
author = {Andreas Stergiou},
date = {2017-08-19},
version = {2.2},
@@ -12185,9 +12185,9 @@
title = {The \texttt{chktex} package},
subtitle = {Check for errors in \LaTeX{} documents},
author = {Jens T. Berger Thielemann and Ivan Andrus},
- date = {2019-01-06},
- version = {1.7.6},
- license = {gpl2},
+ date = {2022-10-18},
+ version = {1.7.8},
+ license = {gpl2+},
mirror = {https://mirror.ctan.org/support/chktex},
url = {https://ctan.org/pkg/chktex},
annotation = {The program reports typographic and other errors in \LaTeX{}
@@ -12346,7 +12346,7 @@
@manual{ctan-cinzel,
title = {The \texttt{cinzel} package},
- subtitle = {LaTeX support for Cinzel and Cinzel Decorative fonts},
+ subtitle = {\LaTeX{} support for Cinzel and Cinzel Decorative fonts},
author = {Bob Tennent},
date = {2022-09-29},
version = {},
@@ -12547,7 +12547,7 @@
@manual{ctan-cje,
title = {The \texttt{cje} package},
- subtitle = {LaTeX document class for CJE articles},
+ subtitle = {\LaTeX{} document class for CJE articles},
author = {Kim Nesbitt},
date = {2018-02-23},
version = {1.06},
@@ -12660,7 +12660,7 @@
@manual{ctan-classes,
title = {The \texttt{classes} package},
subtitle = {The source of \LaTeX{}’s standard classes},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.4n},
license = {lppl1.3c},
@@ -12883,7 +12883,7 @@
@manual{ctan-cloze,
title = {The \texttt{cloze} package},
- subtitle = {A LuaLaTeX package for creating cloze texts},
+ subtitle = {A Lua\LaTeX{} package for creating cloze texts},
author = {Josef Friedrich},
date = {2020-06-30},
version = {1.6},
@@ -12947,7 +12947,7 @@
@manual{ctan-clsguide,
title = {The \texttt{clsguide} package},
subtitle = {Documentation of \LaTeX{} class and package writing},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2019-10-04},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/base},
@@ -13199,7 +13199,7 @@
@manual{ctan-cmcyralt-ltx,
title = {The \texttt{cmcyralt-ltx} package},
- subtitle = {LaTeX support for the cmcyralt fonts},
+ subtitle = {\LaTeX{} support for the cmcyralt fonts},
author = {Alexander Harin and Vadim V. Zhytnikov},
date = {2016-06-24},
version = {1.0},
@@ -13244,7 +13244,7 @@
@manual{ctan-cmextra-latex,
title = {The \texttt{cmextra-latex} package},
subtitle = {Install macros for “standard†fonts not used by \LaTeX{} itself},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-06-01},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/base/cmextra.ins},
@@ -13477,7 +13477,7 @@
@manual{ctan-cnltx,
title = {The \texttt{cnltx} package},
- subtitle = {LaTeX tools and documenting facilities},
+ subtitle = {\LaTeX{} tools and documenting facilities},
author = {Clemens Niederberger},
date = {2020-05-09},
version = {0.15},
@@ -13589,7 +13589,7 @@
@manual{ctan-codedoc,
title = {The \texttt{codedoc} package},
- subtitle = {LaTeX code and documentation in \LaTeX{}-format file},
+ subtitle = {\LaTeX{} code and documentation in \LaTeX{}-format file},
author = {Paul Isambert and Yuri Robbers},
date = {2019-07-25},
version = {0.3},
@@ -13774,7 +13774,7 @@
@manual{ctan-color,
title = {The \texttt{color} package},
subtitle = {Colour control for \LaTeX{} documents},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.3d},
license = {lppl1.3c},
@@ -14022,7 +14022,7 @@
@manual{ctan-combinedgraphics,
title = {The \texttt{combinedgraphics} package},
- subtitle = {Include graphic (EPS or PDF)/LaTeX combinations},
+ subtitle = {Include graphic (EPS or PDF)/\LaTeX{} combinations},
author = {Christian Schneider},
date = {2016-06-24},
version = {0.2.2},
@@ -14030,7 +14030,7 @@
mirror = {https://mirror.ctan.org/macros/latex/contrib/combinedgraphics},
url = {https://ctan.org/pkg/combinedgraphics},
annotation = {This package provides a macro ()
- for the inclusion of combined EPS/LaTeX and PDF/LaTeX graphics (an
+ for the inclusion of combined EPS/\LaTeX{} and PDF/\LaTeX{} graphics (an
export format of ,
, and maybe other programs).
Instead of including the graphics with a simple ,
@@ -14039,7 +14039,7 @@
@manual{ctan-combofont,
title = {The \texttt{combofont} package},
- subtitle = {Add NFSS-declarations of combo fonts to LuaLaTeX documents},
+ subtitle = {Add NFSS-declarations of combo fonts to Lua\LaTeX{} documents},
author = {Ulrike Fischer},
date = {2019-06-08},
version = {0.3},
@@ -15183,6 +15183,17 @@
url = {https://ctan.org/pkg/coop-writing},
}
+@manual{ctan-cooperhewitt,
+ title = {The \texttt{cooperhewitt} package},
+ subtitle = {LaTeX, pdfLaTeX, \XeLaTeX{} and Lua\LaTeX{} support for the Cooper Hewitt family of sans serif fonts},
+ author = {Bob Tennent},
+ date = {2022-10-18},
+ version = {},
+ license = {ofl,lppl},
+ mirror = {https://mirror.ctan.org/fonts/cooperhewitt},
+ url = {https://ctan.org/pkg/cooperhewitt},
+}
+
@manual{ctan-coordsys,
title = {The \texttt{coordsys} package},
subtitle = {Draw cartesian coordinate systems},
@@ -15479,7 +15490,7 @@
@manual{ctan-covington,
title = {The \texttt{covington} package},
- subtitle = {LaTeX macros for Linguistics},
+ subtitle = {\LaTeX{} macros for Linguistics},
author = {Jürgen Spitzmüller and Michael Covington and Robin Fairbairns},
date = {2022-08-30},
version = {2.8},
@@ -15548,7 +15559,7 @@
@manual{ctan-cqubeamer,
title = {The \texttt{CQUBeamer} package},
- subtitle = {LaTeX Beamer Template for Chongqing University},
+ subtitle = {\LaTeX{} Beamer Template for Chongqing University},
author = {Zhen Wan},
date = {2018-05-12},
version = {1.0},
@@ -15559,7 +15570,7 @@
@manual{ctan-cquthesis,
title = {The \texttt{CQUThesis} package},
- subtitle = {LaTeX Thesis Template for Chongqing University},
+ subtitle = {\LaTeX{} Thesis Template for Chongqing University},
author = {Li Zhennan},
date = {2020-06-23},
version = {1.50},
@@ -15860,7 +15871,7 @@
@manual{ctan-csbulletin,
title = {The \texttt{csbulletin} package},
- subtitle = {LaTeX class for articles submitted to the CSTUG Bulletin (Zpravodaj)},
+ subtitle = {\LaTeX{} class for articles submitted to the CSTUG Bulletin (Zpravodaj)},
author = {Vít Novotný and Zdeněk Wagner},
date = {2020-03-20},
version = {},
@@ -15906,7 +15917,7 @@
@manual{ctan-cslatex,
title = {The \texttt{cslatex} package},
- subtitle = {LaTeX support for Czech/Slovak typesetting},
+ subtitle = {\LaTeX{} support for Czech/Slovak typesetting},
author = {Jiří Zlatuška and Zdeněk Wagner and Jaroslav Snajdr},
date = {2017-04-18},
license = {gpl},
@@ -16086,7 +16097,7 @@
@manual{ctan-ctablestack,
title = {The \texttt{ctablestack} package},
subtitle = {Catcode table stable support},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2016-06-24},
version = {1.0},
license = {lppl1.3},
@@ -16098,7 +16109,7 @@
title = {The \texttt{ctan-bibdata} package},
subtitle = {Bibliography data for all CTAN packages},
author = {Herbert Voß},
- date = {2022-10-16},
+ date = {2022-10-18},
version = {0.01},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/biblio/ctan-bibdata},
@@ -16173,7 +16184,7 @@
@manual{ctan-ctex-faq,
title = {The \texttt{ctex-faq} package},
- subtitle = {LaTeX FAQ by the Chinese \TeX{} Society (ctex.org)},
+ subtitle = {\LaTeX{} FAQ by the Chinese \TeX{} Society (ctex.org)},
author = {LingYun Wu},
date = {2022-02-09},
version = {},
@@ -16187,7 +16198,7 @@
@manual{ctan-ctex,
title = {The \texttt{ctex} package},
- subtitle = {LaTeX classes and packages for Chinese typesetting},
+ subtitle = {\LaTeX{} classes and packages for Chinese typesetting},
author = {Qing Lee and Leo Liu and Liam Huang and Xiangdong Zeng and Zeping Lee and Yukai Chou and Ruixi Zhang and LingYun Wu and Jiang Jiang and Yue Wang and Yanrui Li and Zhichu Chen},
date = {2022-07-14},
version = {2.5.10},
@@ -16378,7 +16389,7 @@
license = {cc-by-sa-4},
mirror = {https://mirror.ctan.org/graphics/pgf/contrib/customdice},
url = {https://ctan.org/pkg/customdice},
- annotation = {The package for \LaTeX{}, LuaLaTeX and XeTeX that provides functionality
+ annotation = {The package for \LaTeX{}, Lua\LaTeX{} and XeTeX that provides functionality
for drawing dice. The aim is to provide highly-customisable but simple-to-use commands, allowing:},
}
@@ -16416,7 +16427,7 @@
@manual{ctan-cv4tw,
title = {The \texttt{cv4tw} package},
- subtitle = {LaTeX CV class, with extended details},
+ subtitle = {\LaTeX{} CV class, with extended details},
author = {Geoffrey Gouez},
date = {2017-04-18},
version = {0.2},
@@ -16556,7 +16567,7 @@
@manual{ctan-cyrguide,
title = {The \texttt{cyrguide} package},
subtitle = {Documentation of \LaTeX{} Cyrillic-alphabet features},
- author = {Vladimir Volovich and Werner Lemberg and {The LaTeX Project Team}},
+ author = {Vladimir Volovich and Werner Lemberg and {The \LaTeX{} Project Team}},
date = {2019-10-04},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/base},
@@ -17519,7 +17530,7 @@
@manual{ctan-dcolumn,
title = {The \texttt{dcolumn} package},
subtitle = {Align on the decimal point of numbers in tabular columns},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.06},
license = {lppl1.3c},
@@ -17584,7 +17595,7 @@
@manual{ctan-decimal,
title = {The \texttt{decimal} package},
- subtitle = {LaTeX package for the English raised decimal point},
+ subtitle = {\LaTeX{} package for the English raised decimal point},
author = {Apostolos Syropoulos and Dick Nickalls},
date = {2016-06-24},
license = {lppl1},
@@ -17741,7 +17752,7 @@
@manual{ctan-dejavu,
title = {The \texttt{dejavu} package},
- subtitle = {LaTeX support for the DejaVu fonts},
+ subtitle = {\LaTeX{} support for the DejaVu fonts},
author = {Pavel Farar},
date = {2017-10-02},
version = {2.34},
@@ -17753,7 +17764,7 @@
@manual{ctan-delarray,
title = {The \texttt{delarray} package},
subtitle = {Delimiters for arrays},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-01-03},
version = {1.01},
license = {lppl1.3c},
@@ -18353,7 +18364,7 @@
@manual{ctan-divine,
title = {The \texttt{divine} package},
- subtitle = {LaTeX support for the divine font},
+ subtitle = {\LaTeX{} support for the divine font},
author = {Boris Veytsman},
date = {2020-08-29},
version = {1.0},
@@ -18485,7 +18496,7 @@
@manual{ctan-doc,
title = {The \texttt{doc} package},
subtitle = {Format \LaTeX{} documentation},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2022-06-16},
version = {3},
license = {lppl1.3c},
@@ -18538,7 +18549,7 @@
@manual{ctan-docmfp,
title = {The \texttt{docmfp} package},
- subtitle = {Document non-LaTeX code},
+ subtitle = {Document non-\LaTeX{} code},
author = {Will Robertson and Peter R. Wilson},
date = {2016-06-24},
version = {1.2d},
@@ -18546,7 +18557,7 @@
mirror = {https://mirror.ctan.org/macros/latex/contrib/docmfp},
url = {https://ctan.org/pkg/docmfp},
annotation = {Extends the package to cater for
- documenting non-LaTeX code, such as Metafont or MetaPost, or
+ documenting non-\LaTeX{} code, such as Metafont or MetaPost, or
other programming languages.},
}
@@ -18568,8 +18579,8 @@
title = {The \texttt{docshots} package},
subtitle = {TeX samples next to their PDF Snapshots},
author = {Yegor Bugayenko},
- date = {2022-10-17},
- version = {0.0.3},
+ date = {2022-10-18},
+ version = {0.0.4},
license = {mit},
mirror = {https://mirror.ctan.org/macros/latex/contrib/docshots},
url = {https://ctan.org/pkg/docshots},
@@ -18578,7 +18589,7 @@
@manual{ctan-docstrip,
title = {The \texttt{docstrip} package},
subtitle = {Remove comments from file},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.6a},
license = {lppl1.3c},
@@ -19151,7 +19162,7 @@
@manual{ctan-droid,
title = {The \texttt{droid} package},
- subtitle = {LaTeX support for the Droid font families},
+ subtitle = {\LaTeX{} support for the Droid font families},
author = {Mohamed El Morabity and Steve Matteson},
date = {2020-02-08},
version = {3.2},
@@ -19173,7 +19184,7 @@
@manual{ctan-drop,
title = {The \texttt{drop} package},
- subtitle = {Dropped capitals at the start of a paragraph (LaTeX 2.09)},
+ subtitle = {Dropped capitals at the start of a paragraph (\LaTeX{} 2.09)},
author = {David G. Cantor and Dominik Wujastyk},
date = {2016-06-24},
version = {},
@@ -19376,14 +19387,14 @@
@manual{ctan-duerer-latex,
title = {The \texttt{duerer-LaTeX} package},
- subtitle = {LaTeX support for the Duerer fonts},
+ subtitle = {\LaTeX{} support for the Duerer fonts},
author = {Palle Jørgensen},
date = {2016-06-24},
version = {1.1},
license = {gpl},
mirror = {https://mirror.ctan.org/macros/latex/contrib/duerer-latex},
url = {https://ctan.org/pkg/duerer-latex},
- annotation = {LaTeX support for Hoenig’s
+ annotation = {\LaTeX{} support for Hoenig’s
fonts, using their
standard names.},
}
@@ -19614,7 +19625,7 @@
@manual{ctan-dvidvi,
title = {The \texttt{dvidvi} package},
subtitle = {Convert one DVI file into another},
- author = {Tom Rokicki and Esteban Zimanyi and {The TeX Live Team}},
+ author = {Tom Rokicki and Esteban Zimanyi and {The \TeX{} Live Team}},
date = {2016-06-24},
license = {other-free},
mirror = {https://mirror.ctan.org/dviware/dvidvi},
@@ -19657,7 +19668,7 @@
@manual{ctan-dviljk,
title = {The \texttt{dviljk} package},
subtitle = {DVI to Laserjet output},
- author = {Karl Berry and Joachim Schrod and {The TeX Live Team}},
+ author = {Karl Berry and Joachim Schrod and {The \TeX{} Live Team}},
date = {2016-06-24},
license = {gpl},
mirror = {https://mirror.ctan.org/dviware/dviljk},
@@ -19726,7 +19737,7 @@
@manual{ctan-dvipdfmx-def,
title = {The \texttt{dvipdfmx-def} package},
subtitle = {Configuration file for dvipdfmx graphics},
- author = {Jin-Hwan Cho and Shunsaku Hirata and {The LaTeX Project Team}},
+ author = {Jin-Hwan Cho and Shunsaku Hirata and {The \LaTeX{} Project Team}},
date = {2022-09-23},
version = {5.0m},
license = {lppl1.3c},
@@ -19737,7 +19748,7 @@
@manual{ctan-dvipdfmx,
title = {The \texttt{dvipdfmx} package},
subtitle = {An extended version of dvipdfm},
- author = {Jin-Hwan Cho and Matthias Franz and Shunsaku Hirata and Mark A. Wicks and Khaled Hosny and Peter Breitenlohner and {The TeX Live Team}},
+ author = {Jin-Hwan Cho and Matthias Franz and Shunsaku Hirata and Mark A. Wicks and Khaled Hosny and Peter Breitenlohner and {The \TeX{} Live Team}},
date = {2022-01-27},
license = {gpl},
url = {https://ctan.org/pkg/dvipdfmx},
@@ -19783,7 +19794,7 @@
@manual{ctan-dvips,
title = {The \texttt{dvips} package},
subtitle = {A DVI to PostScript driver},
- author = {Tom Rokicki and {The TeX Live Team}},
+ author = {Tom Rokicki and {The \TeX{} Live Team}},
date = {2021-08-26},
license = {other-free},
url = {https://ctan.org/pkg/dvips},
@@ -19858,7 +19869,7 @@
@manual{ctan-dvisvgm-def,
title = {The \texttt{dvisvgm-def} package},
subtitle = {Colour and Graphics support for dvisvgm},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-23},
version = {1.6},
license = {lppl1.3c},
@@ -20245,7 +20256,7 @@
@manual{ctan-ebgaramond-maths,
title = {The \texttt{ebgaramond-maths} package},
- subtitle = {LaTeX support for EBGaramond fonts in mathematics},
+ subtitle = {\LaTeX{} support for EBGaramond fonts in mathematics},
author = {Clea F. Rees},
date = {2021-08-26},
version = {1.2},
@@ -20256,7 +20267,7 @@
@manual{ctan-ebgaramond,
title = {The \texttt{ebgaramond} package},
- subtitle = {LaTeX support for EBGaramond fonts},
+ subtitle = {\LaTeX{} support for EBGaramond fonts},
author = {Bob Tennent},
date = {2022-09-11},
version = {},
@@ -20447,7 +20458,7 @@
@manual{ctan-ecobiblatex,
title = {The \texttt{ecobiblatex} package},
- subtitle = {Global Ecology and Biogeography BibLaTeX styles for the Biber backend},
+ subtitle = {Global Ecology and Biogeography Bib\LaTeX{} styles for the Biber backend},
author = {Norbert Balak},
date = {2016-06-24},
version = {1.0},
@@ -20531,7 +20542,7 @@
@manual{ctan-ecothesis,
title = {The \texttt{ecothesis} package},
- subtitle = {LaTeX thesis template for the Universidade Federal de Viçosa (UFV), Brazil},
+ subtitle = {\LaTeX{} thesis template for the Universidade Federal de Viçosa (UFV), Brazil},
author = {Vinícius Barros Rodrigues},
date = {2018-06-20},
version = {1.2},
@@ -20740,7 +20751,7 @@
@manual{ctan-egameps,
title = {The \texttt{egameps} package},
- subtitle = {LaTeX package for typesetting extensive games},
+ subtitle = {\LaTeX{} package for typesetting extensive games},
author = {Martin J. Osborne},
date = {2018-09-15},
version = {1.1},
@@ -20796,7 +20807,7 @@
@manual{ctan-eiad-ltx,
title = {The \texttt{eiad-ltx} package},
- subtitle = {LaTeX support for the eiad font},
+ subtitle = {\LaTeX{} support for the eiad font},
author = {Uwe Münch},
date = {2016-06-24},
version = {1.0},
@@ -20902,7 +20913,7 @@
license = {gpl3+,fdl},
mirror = {https://mirror.ctan.org/macros/luatex/latex/ekdosis},
url = {https://ctan.org/pkg/ekdosis},
- annotation = {is a LuaLaTeX package designed for multilingual
+ annotation = {is a Lua\LaTeX{} package designed for multilingual
critical editions. It can be used to typeset texts and different layers
of critical notes in any direction accepted by LuaTeX.
Texts can be arranged in running paragraphs or on facing pages,
@@ -21303,7 +21314,7 @@
@manual{ctan-empheq,
title = {The \texttt{empheq} package},
subtitle = {EMPHasizing EQuations},
- author = {Morten Høgholm and Lars Madsen and {The LaTeX Project Team} and Will Robertson and Joseph Wright},
+ author = {Morten Høgholm and Lars Madsen and {The \LaTeX{} Project Team} and Will Robertson and Joseph Wright},
date = {2020-03-24},
version = {2.16},
license = {lppl1.3},
@@ -21388,7 +21399,7 @@
@manual{ctan-encguide,
title = {The \texttt{encguide} package},
subtitle = {Documentation of \LaTeX{} font encodings},
- author = {{The LaTeX Project Team} and Werner Lemberg},
+ author = {{The \LaTeX{} Project Team} and Werner Lemberg},
date = {2019-10-04},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/base},
@@ -21532,7 +21543,7 @@
used with Japanese documents. It can be used on
,
, and
- LuaLaTeX ().},
+ Lua\LaTeX{} ().},
}
@manual{ctan-endofproofwd,
@@ -21654,7 +21665,7 @@
@manual{ctan-enumerate,
title = {The \texttt{enumerate} package},
subtitle = {Enumerate with redefinable labels},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {3.00},
license = {lppl1.3c},
@@ -21946,7 +21957,7 @@
@manual{ctan-epsfig,
title = {The \texttt{epsfig} package},
subtitle = {Include Encapsulated PostScript in \LaTeX{} documents},
- author = {Sebastian Rahtz and David Carlisle and {The LaTeX Project Team}},
+ author = {Sebastian Rahtz and David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.7b},
license = {lppl1.3c},
@@ -22311,7 +22322,7 @@
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/eqparbox},
url = {https://ctan.org/pkg/eqparbox},
- annotation = {LaTeX users sometimes need to ensure that two or more
+ annotation = {\LaTeX{} users sometimes need to ensure that two or more
blocks of text occupy the same amount of horizontal
space on the page. To that end, the eqparbox package
defines a new command, , which works just like
@@ -22664,7 +22675,7 @@
@manual{ctan-etex-pkg,
title = {The \texttt{etex-pkg} package},
subtitle = {E-TeX support package},
- author = {David Carlisle and Peter Breitenlohner and {The LaTeX Project Team}},
+ author = {David Carlisle and Peter Breitenlohner and {The \LaTeX{} Project Team}},
date = {2017-04-18},
version = {2.7},
license = {lppl1.3},
@@ -22675,7 +22686,7 @@
@manual{ctan-etex,
title = {The \texttt{e-TeX} package},
subtitle = {An extended version of \TeX{}, from the NTS project},
- author = {Peter Breitenlohner and {The TeX Live Team}},
+ author = {Peter Breitenlohner and {The \TeX{} Live Team}},
date = {2020-08-30},
license = {knuth},
url = {https://ctan.org/pkg/etex},
@@ -22722,7 +22733,7 @@
@manual{ctan-ethiop,
title = {The \texttt{ethiop} package},
- subtitle = {LaTeX macros and fonts for typesetting Amharic},
+ subtitle = {\LaTeX{} macros and fonts for typesetting Amharic},
author = {Berhanu Beyene and Manfred Kudlec and Olaf Kummer and Jochen Metzinger},
date = {2017-04-18},
version = {0.7},
@@ -22993,7 +23004,7 @@
@manual{ctan-euroitc,
title = {The \texttt{euroitc} package},
- subtitle = {LaTeX interface for the ITC euro font symbols},
+ subtitle = {\LaTeX{} interface for the ITC euro font symbols},
author = {Robert Schlicht},
date = {2016-06-24},
version = {1.1},
@@ -23196,7 +23207,7 @@
@manual{ctan-exam-zh,
title = {The \texttt{exam-zh} package},
- subtitle = {LaTeX template for Chinese exams},
+ subtitle = {\LaTeX{} template for Chinese exams},
author = {Lijun Guo and Kangwei Xia},
date = {2022-09-18},
version = {0.1.20},
@@ -23218,7 +23229,7 @@
@manual{ctan-exam209,
title = {The \texttt{exam209} package},
- subtitle = {Process exam questions and answers (LaTeX 2.09)},
+ subtitle = {Process exam questions and answers (\LaTeX{} 2.09)},
author = {George Greenwade},
date = {2016-06-24},
version = {},
@@ -23229,7 +23240,7 @@
@manual{ctan-examdesign,
title = {The \texttt{Exam design} package},
- subtitle = {LaTeX class for typesetting exams},
+ subtitle = {\LaTeX{} class for typesetting exams},
author = {Jason Alexander},
date = {2016-06-24},
version = {1.101},
@@ -23509,7 +23520,7 @@
@manual{ctan-expl3,
title = {The \texttt{expl3} package},
subtitle = {Wrapper package for experimental \LaTeX{}3},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-29},
version = {},
license = {lppl1.3c},
@@ -23553,7 +23564,7 @@
@manual{ctan-exscale,
title = {The \texttt{exscale} package},
subtitle = {Implements scaling of the 'cmex' fonts},
- author = {Frank Mittelbach and Rainer Schöpf and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and Rainer Schöpf and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.1i},
license = {lppl1.3c},
@@ -23881,7 +23892,7 @@
@manual{ctan-fancyhdrboxed,
title = {The \texttt{fancyhdrboxed} package},
- subtitle = {Elaborate page headers, specified in a non-LaTeX language},
+ subtitle = {Elaborate page headers, specified in a non-\LaTeX{} language},
author = {Manuel Gutierrez Algaba},
date = {2018-09-15},
version = {1.0},
@@ -24273,7 +24284,7 @@
@manual{ctan-fduthesis,
title = {The \texttt{fduthesis} package},
- subtitle = {LaTeX thesis template for Fudan University},
+ subtitle = {\LaTeX{} thesis template for Fudan University},
author = {Xiangdong Zeng},
date = {2022-09-04},
version = {0.8},
@@ -24868,11 +24879,11 @@
annotation = {The package provides macros to read and compare the modification
dates of files. The files may be files, images or
other files (as long as they can be found by \LaTeX{}). It uses
- the primitive of pdfLaTeX to find the
+ the primitive of pdf\LaTeX{} to find the
file modification date as PDF date string, parses the string and
returns the value to the user. The package will also work
for output with recent versions of the \LaTeX{} compiler
- which uses pdfLaTeX in mode. The functionality is
+ which uses pdf\LaTeX{} in mode. The functionality is
provided by purely expandable macros or by faster but
non-expandable ones.},
}
@@ -25097,7 +25108,7 @@
@manual{ctan-fix-cm,
title = {The \texttt{fix-cm} package},
subtitle = {Permit Computer Modern fonts at arbitrary sizes},
- author = {Walter A. Schmidt and {The LaTeX Project Team}},
+ author = {Walter A. Schmidt and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.1t},
license = {lppl1.3c},
@@ -25160,7 +25171,7 @@
annotation = {Provides a command to provide a
single command for a frequently-used footnote. The package
ensures that only one instance of the footnote text appears on
- each page (LaTeX needs to be run several times to achieve this).},
+ each page (\LaTeX{} needs to be run several times to achieve this).},
}
@manual{ctan-fixjfm,
@@ -25191,7 +25202,7 @@
@manual{ctan-fixltx2e,
title = {The \texttt{fixltx2e} package},
subtitle = {Patches for \LaTeX{}},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.1a},
license = {lppl1.3c},
@@ -25792,7 +25803,7 @@
@manual{ctan-fntguide,
title = {The \texttt{fntguide} package},
subtitle = {Docmentation of \LaTeX{} font commands},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-08-26},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/base},
@@ -25946,7 +25957,7 @@
by and
released under the SIL OFL 1.1 license.
The commercial “Pro†version is also supported, if it is
- installed and \XeLaTeX{} or LuaLaTeX is used.},
+ installed and \XeLaTeX{} or Lua\LaTeX{} is used.},
}
@manual{ctan-fontaxes,
@@ -26029,7 +26040,7 @@
@manual{ctan-fontenc,
title = {The \texttt{fontenc} package},
subtitle = {Standard package for selecting font encodings},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2016-06-24},
license = {lppl},
url = {https://ctan.org/pkg/fontenc},
@@ -26212,7 +26223,7 @@
@manual{ctan-fontspec,
title = {The \texttt{fontspec} package},
subtitle = {Advanced font selection in \XeLaTeX{} and LuaLaTeX},
- author = {Will Robertson and {The LaTeX Project Team}},
+ author = {Will Robertson and {The \LaTeX{} Project Team}},
date = {2022-05-18},
version = {2.8a},
license = {lppl1.3c},
@@ -27019,7 +27030,7 @@
@manual{ctan-ftn,
title = {The \texttt{ftn} package},
- subtitle = {LaTeX footnotes anywhere},
+ subtitle = {\LaTeX{} footnotes anywhere},
author = {Kresten Krab Thorup},
date = {2016-06-24},
version = {},
@@ -27035,7 +27046,7 @@
@manual{ctan-ftnright,
title = {The \texttt{ftnright} package},
subtitle = {Footnotes in two column documents in one column only},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.1f},
license = {lppl1.3c},
@@ -27181,7 +27192,7 @@
@manual{ctan-fundus-outline,
title = {The \texttt{fundus-outline} package},
- subtitle = {LaTeX support for CM outline fonts},
+ subtitle = {\LaTeX{} support for CM outline fonts},
author = {Gerd Neugebauer},
date = {2016-06-24},
version = {1.1},
@@ -27225,7 +27236,7 @@
@manual{ctan-fundus-twcal,
title = {The \texttt{fundus-twcal} package},
- subtitle = {LaTeX support for the twcal handwriting font},
+ subtitle = {\LaTeX{} support for the twcal handwriting font},
author = {Gerd Neugebauer},
date = {2016-06-24},
version = {1.2},
@@ -27636,7 +27647,7 @@
@manual{ctan-gckanbun,
title = {The \texttt{gckanbun} package},
- subtitle = {Kanbun typesetting for (u)pLaTeX and LuaLaTeX},
+ subtitle = {Kanbun typesetting for (u)p\LaTeX{} and LuaLaTeX},
author = {Munehiro Yamamoto},
date = {2022-01-17},
version = {1.2},
@@ -27953,7 +27964,7 @@
@manual{ctan-geschichtsfrkl,
title = {The \texttt{geschichtsfrkl} package},
- subtitle = {BibLaTeX style for historians},
+ subtitle = {Bib\LaTeX{} style for historians},
author = {Jonathan Zachhuber},
date = {2016-09-21},
version = {1.4},
@@ -28311,7 +28322,7 @@
@manual{ctan-gitinfo,
title = {The \texttt{gitinfo} package},
subtitle = {Access metadata from the git distributed version control system},
- author = {Brent Longborough and {The LaTeX Project Team}},
+ author = {Brent Longborough and {The \LaTeX{} Project Team}},
date = {2021-12-20},
version = {1.0},
license = {lppl1.3},
@@ -28322,7 +28333,7 @@
@manual{ctan-gitinfo2,
title = {The \texttt{gitinfo2} package},
subtitle = {Access metadata from the git distributed version control system},
- author = {Brent Longborough and {The LaTeX Project Team}},
+ author = {Brent Longborough and {The \LaTeX{} Project Team}},
date = {2021-12-20},
version = {2.0.7},
license = {lppl1.3},
@@ -28333,7 +28344,7 @@
@manual{ctan-gitlog,
title = {The \texttt{gitlog} package},
subtitle = {Typesetting git changelogs},
- author = {Brent Longborough and {The LaTeX Project Team}},
+ author = {Brent Longborough and {The \LaTeX{} Project Team}},
date = {2021-12-20},
version = {0.0.beta},
license = {lppl1.3},
@@ -28386,7 +28397,7 @@
@manual{ctan-gladtex,
title = {The \texttt{GladTeX} package},
- subtitle = {LaTeX equations in HTML},
+ subtitle = {\LaTeX{} equations in HTML},
author = {Martin G. Gulbrandsen and Sebastian Humenda},
date = {2018-09-19},
version = {3.0.0},
@@ -29189,7 +29200,7 @@
@manual{ctan-graphics-cfg,
title = {The \texttt{graphics-cfg} package},
subtitle = {Sample configuration files for \LaTeX{} color and graphics},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2017-04-18},
version = {},
license = {pd},
@@ -29200,7 +29211,7 @@
@manual{ctan-graphics-def,
title = {The \texttt{graphics-def} package},
subtitle = {Colour and graphics option files},
- author = {{The LaTeX Project Team} and Joseph Wright},
+ author = {{The \LaTeX{} Project Team} and Joseph Wright},
date = {2022-09-23},
version = {},
license = {lppl1.3c},
@@ -29222,7 +29233,7 @@
@manual{ctan-graphics,
title = {The \texttt{graphics} package},
subtitle = {Standard \LaTeX{} graphics},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.4e},
license = {lppl1.3c},
@@ -29255,7 +29266,7 @@
@manual{ctan-graphicx,
title = {The \texttt{graphicx} package},
subtitle = {Enhanced support for graphics},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-11-12},
version = {1.2d},
license = {lppl1.3c},
@@ -29310,7 +29321,7 @@
@manual{ctan-graphpap,
title = {The \texttt{graphpap} package},
subtitle = {For producing graph paper},
- author = {Leslie Lamport and {The LaTeX Project Team}},
+ author = {Leslie Lamport and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.0c},
license = {lppl1.3c},
@@ -29501,7 +29512,7 @@
@manual{ctan-greektex-fd,
title = {The \texttt{greektex-fd} package},
- subtitle = {LaTeX font definition files for GreekTeX},
+ subtitle = {\LaTeX{} font definition files for GreekTeX},
author = {Andrej Brodnik},
date = {2016-06-24},
license = {lppl},
@@ -29604,7 +29615,7 @@
@manual{ctan-grfguide,
title = {The \texttt{grfguide} package},
- subtitle = {LaTeX standard graphics and color packages documentation},
+ subtitle = {\LaTeX{} standard graphics and color packages documentation},
author = {David Carlisle},
date = {2021-06-01},
version = {},
@@ -30066,13 +30077,13 @@
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/gzt},
url = {https://ctan.org/pkg/gzt},
- annotation = {This bundle provides two classes and BibLaTeX styles for the
+ annotation = {This bundle provides two classes and Bib\LaTeX{} styles for the
French journal :},
}
@manual{ctan-h2020proposal,
title = {The \texttt{h2020proposal} package},
- subtitle = {LaTeX class and template for EU H2020 RIA proposal},
+ subtitle = {\LaTeX{} class and template for EU H2020 RIA proposal},
author = {Giacomo Indiveri},
date = {2018-01-06},
version = {1.0},
@@ -30157,7 +30168,7 @@
@manual{ctan-halloweenmath,
title = {The \texttt{halloweenmath} package},
- subtitle = {Scary and creepy math symbols with AMS-LaTeX integration},
+ subtitle = {Scary and creepy math symbols with AMS-\LaTeX{} integration},
author = {Gustavo Mezzetti},
date = {2019-11-01},
version = {0.11},
@@ -30556,7 +30567,7 @@
@manual{ctan-helvet,
title = {The \texttt{helvet} package},
subtitle = {Load Helvetica, scaled},
- author = {Walter A. Schmidt and {The LaTeX Project Team}},
+ author = {Walter A. Schmidt and {The \LaTeX{} Project Team}},
date = {2021-12-07},
version = {9.2a},
license = {lppl1.2},
@@ -30887,7 +30898,7 @@
@manual{ctan-hfutthesis,
title = {The \texttt{hfutthesis} package},
- subtitle = {LaTeX Thesis Template for Hefei University of Technology},
+ subtitle = {\LaTeX{} Thesis Template for Hefei University of Technology},
author = {Zhenhao Yin},
date = {2022-08-02},
version = {1.0.4},
@@ -31054,7 +31065,7 @@
@manual{ctan-historische-zeitschrift,
title = {The \texttt{historische-zeitschrift} package},
- subtitle = {BibLaTeX style for the journal 'Historische Zeitschrift'},
+ subtitle = {Bib\LaTeX{} style for the journal 'Historische Zeitschrift'},
author = {Dominik Waßenhoven},
date = {2016-12-02},
version = {1.2},
@@ -31140,7 +31151,7 @@
@manual{ctan-hktex,
title = {The \texttt{hktex} package},
- subtitle = {A \TeX{}/LaTeX equivalent for Android},
+ subtitle = {A \TeX{}/\LaTeX{} equivalent for Android},
author = {Kwanleung Tse},
date = {2016-06-24},
version = {2.04},
@@ -31150,7 +31161,7 @@
}
@manual{ctan-hlatex-fonts,
- title = {The \texttt{HLaTeX fonts} package},
+ title = {The \texttt{H\LaTeX{} fonts} package},
subtitle = {A collection of Korean (Hangul) fonts},
author = {Koaunghi Un},
date = {2016-06-24},
@@ -31422,7 +31433,7 @@
@manual{ctan-hrlatex,
title = {The \texttt{hrlatex} package},
- subtitle = {LaTeX support for Croatian documents},
+ subtitle = {\LaTeX{} support for Croatian documents},
author = {Marcel Maretić},
date = {2018-01-06},
version = {0.23},
@@ -31470,7 +31481,7 @@
@manual{ctan-hu-berlin-bundle,
title = {The \texttt{hu-berlin-bundle} package},
- subtitle = {LaTeX classes for the Humboldt-Universität zu Berlin},
+ subtitle = {\LaTeX{} classes for the Humboldt-Universität zu Berlin},
author = {Lukas C. Bossert},
date = {2021-01-31},
version = {1.1.1},
@@ -31913,7 +31924,7 @@
@manual{ctan-hyperref,
title = {The \texttt{hyperref} package},
subtitle = {Extensive support for hypertext in \LaTeX{}},
- author = {Heiko Oberdiek and Sebastian Rahtz and {Oberdiek Package Support Group} and {The LaTeX Project Team}},
+ author = {Heiko Oberdiek and Sebastian Rahtz and {Oberdiek Package Support Group} and {The \LaTeX{} Project Team}},
date = {2022-09-22},
version = {7.00t},
license = {lppl1.3},
@@ -31956,7 +31967,7 @@
@manual{ctan-hyphen-accent,
title = {The \texttt{hyphen-accent} package},
- subtitle = {LaTeX 2.09 code for using DC fonts},
+ subtitle = {\LaTeX{} 2.09 code for using DC fonts},
author = {Daniel Taupin},
date = {2016-06-24},
version = {},
@@ -32098,7 +32109,7 @@
@manual{ctan-ibarra,
title = {The \texttt{ibarra} package},
- subtitle = {LaTeX support for the Ibarra Real Nova family of fonts},
+ subtitle = {\LaTeX{} support for the Ibarra Real Nova family of fonts},
author = {Bob Tennent},
date = {2022-10-01},
version = {},
@@ -32209,7 +32220,7 @@
license = {gpl3+,cc-by-sa-4},
mirror = {https://mirror.ctan.org/macros/latex/contrib/icite},
url = {https://ctan.org/pkg/icite},
- annotation = {The package is designed to produce from BibTeX or BibLaTeX bibliographical databases
+ annotation = {The package is designed to produce from BibTeX or Bib\LaTeX{} bibliographical databases
the different indices of authors and works cited which are called indices locorum citatorum.
It relies on a specific command and can operate with either BibTeX or BibLaTeX.},
}
@@ -32478,7 +32489,7 @@
@manual{ctan-ifetex,
title = {The \texttt{ifetex} package},
subtitle = {Provides \textbackslash{}ifetex switch},
- author = {{The LaTeX Project Team} and Martin Scharrer},
+ author = {{The \LaTeX{} Project Team} and Martin Scharrer},
date = {2020-10-01},
version = {1.3},
license = {lppl1.3c},
@@ -32511,7 +32522,7 @@
@manual{ctan-ifluatex,
title = {The \texttt{ifluatex} package},
subtitle = {Provides the \textbackslash{}ifluatex switch},
- author = {{The LaTeX Project Team} and Heiko Oberdiek},
+ author = {{The \LaTeX{} Project Team} and Heiko Oberdiek},
date = {2022-02-05},
version = {1.5},
license = {lppl1.3c},
@@ -32564,8 +32575,8 @@
title = {The \texttt{ifoddpage} package},
subtitle = {Determine if the current page is odd or even},
author = {Martin Scharrer},
- date = {2020-08-27},
- version = {1.1},
+ date = {2022-10-18},
+ version = {1.2},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/ifoddpage},
url = {https://ctan.org/pkg/ifoddpage},
@@ -32580,7 +32591,7 @@
@manual{ctan-ifpdf,
title = {The \texttt{ifpdf} package},
subtitle = {Provides the \textbackslash{}ifpdf conditional},
- author = {{The LaTeX Project Team} and Heiko Oberdiek},
+ author = {{The \LaTeX{} Project Team} and Heiko Oberdiek},
date = {2022-02-05},
version = {3.4},
license = {lppl1.3c},
@@ -32629,7 +32640,7 @@
@manual{ctan-iftex,
title = {The \texttt{iftex} package},
subtitle = {Am I running under pdfTeX, XeTeX or LuaTeX?},
- author = {{The LaTeX Project Team} and Vafa Khalighi},
+ author = {{The \LaTeX{} Project Team} and Vafa Khalighi},
date = {2022-02-05},
version = {1.0f},
license = {lppl1.3c},
@@ -32640,7 +32651,7 @@
@manual{ctan-ifthen,
title = {The \texttt{ifthen} package},
subtitle = {Conditional commands in \LaTeX{} documents},
- author = {Leslie Lamport and David Carlisle and {The LaTeX Project Team}},
+ author = {Leslie Lamport and David Carlisle and {The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.1d},
license = {lppl1.3c},
@@ -32662,7 +32673,7 @@
@manual{ctan-ifvtex,
title = {The \texttt{ifvtex} package},
subtitle = {Detects use of VTeX and its facilities},
- author = {{The LaTeX Project Team} and Heiko Oberdiek},
+ author = {{The \LaTeX{} Project Team} and Heiko Oberdiek},
date = {2022-02-05},
version = {1.7},
license = {lppl1.3c},
@@ -32673,7 +32684,7 @@
@manual{ctan-ifxetex,
title = {The \texttt{ifxetex} package},
subtitle = {Am I running under XeTeX?},
- author = {{The LaTeX Project Team} and Will Robertson},
+ author = {{The \LaTeX{} Project Team} and Will Robertson},
date = {2022-02-05},
version = {0.7},
license = {lppl1.3c},
@@ -32754,7 +32765,7 @@
@manual{ctan-ijmart,
title = {The \texttt{ijmart} package},
- subtitle = {LaTeX Class for the Israel Journal of Mathematics},
+ subtitle = {\LaTeX{} Class for the Israel Journal of Mathematics},
author = {Boris Veytsman},
date = {2016-06-24},
version = {1.7},
@@ -32786,7 +32797,7 @@
@manual{ctan-ijsra,
title = {The \texttt{ijsra} package},
- subtitle = {LaTeX document class for the International Journal of Student Research in Archaeology},
+ subtitle = {\LaTeX{} document class for the International Journal of Student Research in Archaeology},
author = {Lukas C. Bossert},
date = {2017-07-24},
version = {1.1},
@@ -33004,7 +33015,7 @@
@manual{ctan-indentfirst,
title = {The \texttt{indentfirst} package},
subtitle = {Indent first paragraph after section header},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.03},
license = {lppl1.3c},
@@ -33218,7 +33229,7 @@
@manual{ctan-inputenc,
title = {The \texttt{inputenc} package},
subtitle = {Accept different input encodings},
- author = {Alan Jeffrey and Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Alan Jeffrey and Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.3d},
license = {lppl1.3c},
@@ -33406,7 +33417,7 @@
license = {ofl,lppl},
mirror = {https://mirror.ctan.org/fonts/inter},
url = {https://ctan.org/pkg/inter},
- annotation = {This package provides \LaTeX{}, pdfLaTeX, \XeLaTeX{} and LuaLaTeX support for the
+ annotation = {This package provides \LaTeX{}, pdfLaTeX, \XeLaTeX{} and Lua\LaTeX{} support for the
Inter Sans family of fonts (version 3.015), designed by Rasmus Andersson.
Inter is a typeface specially designed for user interfaces with focus
on high legibility of small-to-medium sized text on computer screens.
@@ -33629,7 +33640,7 @@
@manual{ctan-ipa,
title = {The \texttt{ipa} package},
- subtitle = {LaTeX macros for using WSUIPA fonts},
+ subtitle = {\LaTeX{} macros for using WSUIPA fonts},
author = {Denis B. Roegel and Andrej Brodnik},
date = {2019-06-21},
version = {1.0},
@@ -34124,7 +34135,7 @@
@manual{ctan-japanese-otf-uptex,
title = {The \texttt{japanese-otf-uptex} package},
subtitle = {Support for Japanese OTF files in upLaTeX},
- author = {Takuji Tanaka and Norbert Preining and {Japanese TeX Development Community}},
+ author = {Takuji Tanaka and Norbert Preining and {Japanese \TeX{} Development Community}},
date = {2022-08-01},
license = {bsd3},
mirror = {https://mirror.ctan.org//macros/jptex/latex/japanese-otf},
@@ -34136,13 +34147,13 @@
@manual{ctan-japanese-otf,
title = {The \texttt{japanese-otf} package},
subtitle = {Advanced font selection for platex and its friends},
- author = {Norbert Preining and {Japanese TeX Development Community} and Takuji Tanaka},
+ author = {Norbert Preining and {Japanese \TeX{} Development Community} and Takuji Tanaka},
date = {2022-07-31},
version = {},
license = {bsd3},
mirror = {https://mirror.ctan.org/macros/jptex/latex/japanese-otf},
url = {https://ctan.org/pkg/japanese-otf},
- annotation = {The package contains pLaTeX support files and virtual fonts for
+ annotation = {The package contains p\LaTeX{} support files and virtual fonts for
supporting a wide variety of fonts in \LaTeX{} using the
.},
}
@@ -34677,7 +34688,7 @@
@manual{ctan-jsclasses,
title = {The \texttt{jsclasses} package},
subtitle = {Classes tailored for use with Japanese},
- author = {Haruhiko Okumura and {Japanese TeX Development Community}},
+ author = {Haruhiko Okumura and {Japanese \TeX{} Development Community}},
date = {2022-09-14},
version = {},
license = {bsd},
@@ -34919,7 +34930,7 @@
@manual{ctan-karnaugh-map,
title = {The \texttt{karnaugh-map} package},
- subtitle = {LaTeX package for drawing karnaugh maps with up to 6 variables},
+ subtitle = {\LaTeX{} package for drawing karnaugh maps with up to 6 variables},
author = {Mattias Jacobsson},
date = {2022-01-15},
version = {2.0},
@@ -34984,7 +34995,7 @@
@manual{ctan-kbordermatrix,
title = {The \texttt{kbordermatrix} package},
- subtitle = {LaTeX version of \textbackslash{}bordermatrix},
+ subtitle = {\LaTeX{} version of \textbackslash{}bordermatrix},
author = {Kim C Border},
date = {2016-06-24},
version = {},
@@ -35178,7 +35189,7 @@
@manual{ctan-keyval,
title = {The \texttt{keyval} package},
subtitle = {Process 'key=value' schemes},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.15},
license = {lppl1.3c},
@@ -35227,7 +35238,7 @@
@manual{ctan-kile,
title = {The \texttt{kile} package},
- subtitle = {A user friendly \TeX{}/LaTeX editor for KDE},
+ subtitle = {A user friendly \TeX{}/\LaTeX{} editor for KDE},
author = {Jeroen Wijnhout and Pascal Brachet},
date = {2017-04-18},
version = {2.0},
@@ -35576,7 +35587,7 @@
@manual{ctan-komacv-rg,
title = {The \texttt{komacv-rg} package},
- subtitle = {LaTeX packages that aid in creating CVs based on the komacv class and creating related documents},
+ subtitle = {\LaTeX{} packages that aid in creating CVs based on the komacv class and creating related documents},
author = {Richard Grewe},
date = {2018-11-03},
version = {0.9.2},
@@ -35662,7 +35673,7 @@
@manual{ctan-kpathsea,
title = {The \texttt{kpathsea} package},
subtitle = {Path searching library for \TeX{}-related files},
- author = {{The TeX Live Team} and Olaf Weber},
+ author = {{The \TeX{} Live Team} and Olaf Weber},
date = {2022-01-28},
license = {lgpl2.1},
url = {https://ctan.org/pkg/kpathsea},
@@ -35846,7 +35857,7 @@
@manual{ctan-l2a,
title = {The \texttt{l2a} package},
- subtitle = {LaTeX to ASCII},
+ subtitle = {\LaTeX{} to ASCII},
author = {Gisle Hannemyr},
date = {2018-01-06},
version = {1.0},
@@ -35857,7 +35868,7 @@
@manual{ctan-l2picfaq,
title = {The \texttt{l2picfaq} package},
- subtitle = {LaTeX pictures "how-to" (German)},
+ subtitle = {\LaTeX{} pictures "how-to" (German)},
author = {Dominik Bischoff},
date = {2016-06-24},
version = {1.50},
@@ -35933,7 +35944,7 @@
@manual{ctan-l2x,
title = {The \texttt{l2x} package},
- subtitle = {LaTeX to ASCII},
+ subtitle = {\LaTeX{} to ASCII},
author = {Henning Schulzrinne},
date = {2016-06-24},
version = {1.4},
@@ -35945,7 +35956,7 @@
@manual{ctan-l3backend,
title = {The \texttt{l3backend} package},
subtitle = {LaTeX3 backend drivers},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-29},
version = {},
license = {lppl1.3c},
@@ -35956,7 +35967,7 @@
@manual{ctan-l3build,
title = {The \texttt{l3build} package},
subtitle = {A testing and building system for (La)TeX},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-15},
version = {},
license = {lppl1.3c},
@@ -35967,7 +35978,7 @@
@manual{ctan-l3docstrip,
title = {The \texttt{l3docstrip} package},
subtitle = {Strip documentation in \LaTeX{}3 source},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-29},
version = {},
license = {lppl1.3c},
@@ -35978,7 +35989,7 @@
@manual{ctan-l3experimental,
title = {The \texttt{l3experimental} package},
subtitle = {Experimental \LaTeX{}3 concepts},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-04-20},
version = {},
license = {lppl1.3c},
@@ -35989,7 +36000,7 @@
@manual{ctan-l3kernel,
title = {The \texttt{l3kernel} package},
subtitle = {LaTeX3 programming conventions},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-29},
version = {},
license = {lppl1.3c},
@@ -36000,7 +36011,7 @@
@manual{ctan-l3keys2e,
title = {The \texttt{l3keys2e} package},
subtitle = {LaTeX2e option processing using \LaTeX{}3 keys},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-22},
version = {},
license = {lppl1.3c},
@@ -36011,7 +36022,7 @@
@manual{ctan-l3packages,
title = {The \texttt{l3packages} package},
subtitle = {High-level \LaTeX{}3 concepts},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-22},
version = {},
license = {lppl1.3c},
@@ -36022,7 +36033,7 @@
@manual{ctan-l3regex,
title = {The \texttt{l3regex} package},
subtitle = {Regular expression facilities for \LaTeX{}},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-29},
version = {},
license = {lppl1.3c},
@@ -36188,8 +36199,8 @@
@manual{ctan-lacheck,
title = {The \texttt{lacheck} package},
- subtitle = {LaTeX checker},
- author = {Kresten Krab Thorup and Per Abrahamsen and {The TeX Live Team}},
+ subtitle = {\LaTeX{} checker},
+ author = {Kresten Krab Thorup and Per Abrahamsen and {The \TeX{} Live Team}},
date = {2017-06-27},
license = {gpl},
mirror = {https://mirror.ctan.org/support/lacheck},
@@ -36448,7 +36459,7 @@
@manual{ctan-latex-amsmath-dev,
title = {The \texttt{latex-amsmath-dev} package},
subtitle = {Development pre-release of the \LaTeX{} amsmath bundle},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-17},
version = {2022-11-01 pre-release 0},
license = {lppl1.3c},
@@ -36464,7 +36475,7 @@
@manual{ctan-latex-amsmath,
title = {The \texttt{latex-amsmath} package},
subtitle = {AMS mathematical facilities for \LaTeX{}},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {},
license = {lppl1.3c},
@@ -36475,7 +36486,7 @@
@manual{ctan-latex-base-dev,
title = {The \texttt{latex-base-dev} package},
subtitle = {Development pre-release of the \LaTeX{} kernel},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-26},
version = {2022-11-01 pre-release 2},
license = {lppl1.3c},
@@ -36493,7 +36504,7 @@
@manual{ctan-latex-base,
title = {The \texttt{latex-base} package},
subtitle = {Base sources of \LaTeX{}},
- author = {{The LaTeX Project Team} and Frank Mittelbach},
+ author = {{The \LaTeX{} Project Team} and Frank Mittelbach},
date = {2022-07-05},
version = {2022-06-01-PL5},
license = {lppl1.3c},
@@ -36530,7 +36541,7 @@
@manual{ctan-latex-bnf,
title = {The \texttt{latex-bnf} package},
- subtitle = {LaTeX macros for typing BNF specifications},
+ subtitle = {\LaTeX{} macros for typing BNF specifications},
author = {Martin J. Osborne},
date = {2016-06-24},
version = {1.1a},
@@ -36572,7 +36583,7 @@
@manual{ctan-latex-cyrillic,
title = {The \texttt{cyrillic} package},
subtitle = {Support for Cyrillic fonts in \LaTeX{}},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-16},
version = {2022-06-01-PL1},
license = {lppl1.3},
@@ -36594,7 +36605,7 @@
@manual{ctan-latex-doc,
title = {The \texttt{latex-doc} package},
subtitle = {Documentation supplied as part of the \LaTeX{} distribution},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-07-06},
version = {2022-06-01-PL5},
license = {lppl1.3c},
@@ -36636,7 +36647,7 @@
@manual{ctan-latex-firstaid-dev,
title = {The \texttt{latex-firstaid-dev} package},
subtitle = {Development pre-release of the \LaTeX{} firstaid package},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-10-03},
version = {1.0s},
license = {lppl1.3c},
@@ -36652,7 +36663,7 @@
@manual{ctan-latex-firstaid,
title = {The \texttt{latex-firstaid} package},
subtitle = {First aid for external \LaTeX{} files and packages that need updating},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.0r},
license = {lppl1.3c},
@@ -36695,7 +36706,7 @@
@manual{ctan-latex-graphics-dev,
title = {The \texttt{latex-graphics-dev} package},
subtitle = {Development pre-release of the \LaTeX{} graphics bundle},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-17},
version = {2022-11-01 pre-release 0},
license = {lppl1.3c},
@@ -36711,7 +36722,7 @@
@manual{ctan-latex-graphics,
title = {The \texttt{latex-graphics} package},
subtitle = {The \LaTeX{} standard graphics bundle},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {},
license = {lppl1.3c},
@@ -36743,8 +36754,8 @@
@manual{ctan-latex-lab-dev,
title = {The \texttt{latex-lab-dev} package},
- subtitle = {LaTeX laboratory: Development pre-release},
- author = {{The LaTeX Project Team}},
+ subtitle = {\LaTeX{} laboratory: Development pre-release},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-05-19},
version = {2022-06-01 pre-release 4},
license = {lppl1.3c},
@@ -36761,8 +36772,8 @@
@manual{ctan-latex-lab,
title = {The \texttt{latex-lab} package},
- subtitle = {LaTeX laboratory},
- author = {{The LaTeX Project Team}},
+ subtitle = {\LaTeX{} laboratory},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-13},
version = {},
license = {lppl1.3c},
@@ -36826,7 +36837,7 @@
@manual{ctan-latex-pro-pragmatiky,
title = {The \texttt{latex-pro-pragmatiky} package},
- subtitle = {LaTeX for pragmatists},
+ subtitle = {\LaTeX{} for pragmatists},
author = {Pavel Satrapa},
date = {2016-06-24},
version = {1.1},
@@ -36837,7 +36848,7 @@
@manual{ctan-latex-referenz,
title = {The \texttt{LaTeX-Referenz} package},
- subtitle = {Examples from the book "LaTeX Referenz"},
+ subtitle = {Examples from the book "\LaTeX{} Referenz"},
author = {Herbert Voß},
date = {2020-06-07},
version = {2},
@@ -36848,7 +36859,7 @@
@manual{ctan-latex-refsheet,
title = {The \texttt{latex-refsheet} package},
- subtitle = {LaTeX Reference Sheet for a thesis with KOMA-Script},
+ subtitle = {\LaTeX{} Reference Sheet for a thesis with KOMA-Script},
author = {Marion Lammarsch and Elke Schubert},
date = {2017-08-21},
version = {1.2},
@@ -36865,7 +36876,7 @@
@manual{ctan-latex-sciences-humaines,
title = {The \texttt{latex-sciences-humaines} package},
- subtitle = {(Xe)LaTeX Appliqué aux sciences humaines},
+ subtitle = {(Xe)\LaTeX{} Appliqué aux sciences humaines},
author = {Maïeul Rouquette},
date = {2016-06-24},
version = {},
@@ -36876,7 +36887,7 @@
@manual{ctan-latex-tabellen,
title = {The \texttt{latex-tabellen} package},
- subtitle = {LaTeX Tabellen},
+ subtitle = {\LaTeX{} Tabellen},
author = {Herbert Voß},
date = {2020-06-07},
version = {},
@@ -36899,7 +36910,7 @@
@manual{ctan-latex-tools-dev,
title = {The \texttt{latex-tools-dev} package},
subtitle = {Development pre-release of the \LaTeX{} tools bundle},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-26},
version = {2022-11-01 pre-release 2},
license = {lppl1.3c},
@@ -36915,7 +36926,7 @@
@manual{ctan-latex-tools,
title = {The \texttt{latex-tools} package},
subtitle = {The \LaTeX{} standard tools bundle},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {},
license = {lppl1.3c},
@@ -36953,7 +36964,7 @@
@manual{ctan-latex-uni8,
title = {The \texttt{latex-uni8} package},
- subtitle = {Universal inputenc, fontenc, and babel for pdfLaTeX and LuaLaTeX},
+ subtitle = {Universal inputenc, fontenc, and babel for pdf\LaTeX{} and LuaLaTeX},
author = {Péter Szabó},
date = {2019-01-20},
version = {0.03},
@@ -36968,7 +36979,7 @@
(English language by default),
hyphenation, underline (with ),
default text and math fonts (Computer Modern or Times),
- and paper sizes correctly with both pdfLaTeX and LuaLaTeX.},
+ and paper sizes correctly with both pdf\LaTeX{} and LuaLaTeX.},
}
@manual{ctan-latex-veryshortguide,
@@ -36996,7 +37007,7 @@
@manual{ctan-latex,
title = {The \texttt{latex} package},
subtitle = {A \TeX{} macro package that defines \LaTeX{}},
- author = {{The LaTeX Project Team} and Leslie Lamport},
+ author = {{The \LaTeX{} Project Team} and Leslie Lamport},
date = {2022-07-06},
version = {2022-06-01-PL5},
license = {lppl1.3c},
@@ -37126,7 +37137,7 @@
@manual{ctan-latex4wp-it,
title = {The \texttt{latex4wp-it} package},
- subtitle = {LaTeX guide for word processor users, in Italian},
+ subtitle = {\LaTeX{} guide for word processor users, in Italian},
author = {Guido Gonzato},
date = {2016-06-24},
version = {1.0.10},
@@ -37173,7 +37184,7 @@
@manual{ctan-latexbug,
title = {The \texttt{latexbug} package},
subtitle = {Bug-classification for \LaTeX{} related bugs},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-14},
version = {1.0n},
license = {lppl1.3c},
@@ -37393,7 +37404,7 @@
@manual{ctan-latexmake,
title = {The \texttt{latexmake} package},
- subtitle = {LaTeX Makefile},
+ subtitle = {\LaTeX{} Makefile},
author = {Evan McLean and David J. Musliner and Tong Sun},
date = {2016-06-24},
version = {2.0},
@@ -37470,7 +37481,7 @@
@manual{ctan-latexpix,
title = {The \texttt{LaTeXPiX} package},
- subtitle = {LaTeX picture editor for Windows},
+ subtitle = {\LaTeX{} picture editor for Windows},
author = {N. J. H. M. van Beurden},
date = {2016-06-24},
version = {},
@@ -37481,8 +37492,8 @@
@manual{ctan-latexrelease,
title = {The \texttt{latexrelease} package},
- subtitle = {LaTeX release emulation},
- author = {{The LaTeX Project Team}},
+ subtitle = {\LaTeX{} release emulation},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.0o},
license = {lppl1.3c},
@@ -37577,7 +37588,7 @@
@manual{ctan-latino-sine-flexione,
title = {The \texttt{latino-sine-flexione} package},
- subtitle = {LaTeX support for documents written in Peano’s Interlingua},
+ subtitle = {\LaTeX{} support for documents written in Peano’s Interlingua},
author = {Victore Leve},
date = {2020-01-21},
version = {1.2},
@@ -37616,7 +37627,7 @@
@manual{ctan-layout,
title = {The \texttt{layout} package},
subtitle = {View the layout of a document},
- author = {Kent McPherson and Johannes L. Braams and Hideo Umeki and {The LaTeX Project Team}},
+ author = {Kent McPherson and Johannes L. Braams and Hideo Umeki and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.2e},
license = {lppl1.3c},
@@ -37775,7 +37786,7 @@
@manual{ctan-leawood,
title = {The \texttt{leawood} package},
- subtitle = {LaTeX support for use of ITC Leawood font family},
+ subtitle = {\LaTeX{} support for use of ITC Leawood font family},
author = {Scott Pakin},
date = {2016-06-24},
license = {lppl},
@@ -37981,7 +37992,7 @@
@manual{ctan-letter,
title = {The \texttt{letter} package},
subtitle = {The standard \LaTeX{}2e letter document class},
- author = {Leslie Lamport and Frank Mittelbach and Rainer Schöpf and {The LaTeX Project Team}},
+ author = {Leslie Lamport and Frank Mittelbach and Rainer Schöpf and {The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.3c},
license = {lppl1.3c},
@@ -38108,7 +38119,7 @@
@manual{ctan-lexend,
title = {The \texttt{lexend} package},
- subtitle = {The Lexend fonts for \XeLaTeX{} and LuaLaTeX through fontspec},
+ subtitle = {The Lexend fonts for \XeLaTeX{} and Lua\LaTeX{} through fontspec},
author = {Yannick Schinko},
date = {2021-01-30},
version = {1.1.0.70},
@@ -38221,7 +38232,7 @@
@manual{ctan-lgreek,
title = {The \texttt{lgreek} package},
- subtitle = {LaTeX macros for using Silvio Levy's Greek fonts},
+ subtitle = {\LaTeX{} macros for using Silvio Levy's Greek fonts},
author = {Timothy Murphy},
date = {2016-06-24},
version = {},
@@ -38297,7 +38308,7 @@
@manual{ctan-libertine-type1,
title = {The \texttt{libertine-type1} package},
- subtitle = {(pdf)LaTeX support for the Libertine family of fonts},
+ subtitle = {(pdf)\LaTeX{} support for the Libertine family of fonts},
author = {Bob Tennent},
date = {2016-06-24},
version = {5.3.0},
@@ -38462,7 +38473,7 @@
@manual{ctan-librefranklin,
title = {The \texttt{librefranklin} package},
- subtitle = {LaTeX support for the Libre-Franklin family of fonts},
+ subtitle = {\LaTeX{} support for the Libre-Franklin family of fonts},
author = {Bob Tennent},
date = {2022-09-19},
version = {},
@@ -38580,14 +38591,14 @@
@manual{ctan-limecv,
title = {The \texttt{limecv} package},
- subtitle = {A (Xe/Lua)LaTeX document class for curriculum vitæ},
+ subtitle = {A (Xe/Lua)\LaTeX{} document class for curriculum vitæ},
author = {Olivier Pieters},
date = {2021-12-01},
version = {0.1.12},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/limecv},
url = {https://ctan.org/pkg/limecv},
- annotation = {is a (Xe/Lua)LaTeX document class to write
+ annotation = {is a (Xe/Lua)\LaTeX{} document class to write
curriculum vitæ. It is designed with the following design rules:
simple, elegant and clean. To this end, it offers several
environments and macros for convenience.},
@@ -38749,7 +38760,7 @@
@manual{ctan-lion-msc,
title = {The \texttt{lion-msc} package},
- subtitle = {LaTeX class for B.Sc. and M.Sc. reports at Leiden Institute of Physics (LION)},
+ subtitle = {\LaTeX{} class for B.Sc. and M.Sc. reports at Leiden Institute of Physics (LION)},
author = {Michiel de Dood},
date = {2020-06-04},
version = {0.30},
@@ -39078,7 +39089,7 @@
@manual{ctan-llncsconf,
title = {The \texttt{llncsconf} package},
- subtitle = {LaTeX package extending Springer's llncs class},
+ subtitle = {\LaTeX{} package extending Springer's llncs class},
author = {Achim D. Brucker},
date = {2022-04-25},
version = {1.2.0},
@@ -39138,7 +39149,7 @@
@manual{ctan-lms,
title = {The \texttt{lms} package},
- subtitle = {LaTeX 2.09 style for LMS journals},
+ subtitle = {\LaTeX{} 2.09 style for LMS journals},
author = {Ben Garling and Rod Mulvey and Alison Woollatt},
date = {2016-06-24},
version = {0.6},
@@ -39413,7 +39424,7 @@
@manual{ctan-longtable,
title = {The \texttt{longtable} package},
subtitle = {Allow tables to flow over page boundaries},
- author = {David Carlisle and David Kastrup and {The LaTeX Project Team}},
+ author = {David Carlisle and David Kastrup and {The \LaTeX{} Project Team}},
date = {2021-11-12},
version = {4.17},
license = {lppl1.3c},
@@ -39556,7 +39567,7 @@
@manual{ctan-lroundrect,
title = {The \texttt{lroundrect} package},
- subtitle = {LaTeX macros for utilizing the roundrect MetaPost routines},
+ subtitle = {\LaTeX{} macros for utilizing the roundrect MetaPost routines},
author = {Donald P. Goodman},
date = {2016-06-24},
version = {1.0},
@@ -39596,7 +39607,7 @@
@manual{ctan-lscape,
title = {The \texttt{lscape} package},
subtitle = {Place selected parts of a document in landscape},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {3.02},
license = {lppl1.3c},
@@ -39708,7 +39719,7 @@
@manual{ctan-lshort-italian,
title = {The \texttt{lshort-italian} package},
subtitle = {Introduction to \LaTeX{} in Italian},
- author = {{GuIT (Gruppo Utilizzatori Italiani di TeX)} and Claudio Beccari and Giuseppe Bilotta},
+ author = {{GuIT (Gruppo Utilizzatori Italiani di \TeX{})} and Claudio Beccari and Giuseppe Bilotta},
date = {2020-11-30},
version = {6.2},
license = {gpl},
@@ -40103,7 +40114,7 @@
@manual{ctan-ltnews,
title = {The \texttt{ltnews} package},
subtitle = {The latest \LaTeX{} news},
- author = {Frank Mittelbach and Chris Rowley and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and Chris Rowley and {The \LaTeX{} Project Team}},
date = {2020-02-02},
version = {1.06},
license = {lppl1.3c},
@@ -40124,7 +40135,7 @@
@manual{ctan-ltt,
title = {The \texttt{ltt} package},
- subtitle = {Example code for "LaTeX Tipps und Tricks" book},
+ subtitle = {Example code for "\LaTeX{} Tipps und Tricks" book},
author = {Ingo Klöckl},
date = {2016-06-24},
version = {},
@@ -40212,7 +40223,7 @@
@manual{ctan-ltxdoc,
title = {The \texttt{ltxdoc} package},
subtitle = {Class for documented \LaTeX{} macro files},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2022-06-16},
version = {2.1g},
license = {lppl1.3c},
@@ -40370,7 +40381,7 @@
@manual{ctan-ltxutil,
title = {The \texttt{ltxutil} package},
- subtitle = {LaTeX utility macros},
+ subtitle = {\LaTeX{} utility macros},
author = {Arthur Ogawa},
date = {2020-10-06},
version = {4.1h},
@@ -40504,7 +40515,7 @@
@manual{ctan-luabibentry,
title = {The \texttt{luabibentry} package},
- subtitle = {Repeat BibTeX entries in a LuaLaTeX document body},
+ subtitle = {Repeat BibTeX entries in a Lua\LaTeX{} document body},
author = {Oliver Kopp},
date = {2020-06-28},
version = {0.1a},
@@ -40580,7 +40591,7 @@
@manual{ctan-luahyphenrules,
title = {The \texttt{luahyphenrules} package},
- subtitle = {Loading patterns in LuaLaTeX with language.dat},
+ subtitle = {Loading patterns in Lua\LaTeX{} with language.dat},
author = {Javier Bezos López},
date = {2020-08-28},
version = {1.1},
@@ -40659,7 +40670,7 @@
@manual{ctan-lualatex-doc-de,
title = {The \texttt{lualatex-doc-de} package},
- subtitle = {Guide to LuaLaTeX (German translation)},
+ subtitle = {Guide to Lua\LaTeX{} (German translation)},
author = {Manuel Pégourié-Gonnard and Christine Römer},
date = {2016-06-24},
version = {1.0},
@@ -40687,7 +40698,7 @@
@manual{ctan-lualatex-math,
title = {The \texttt{lualatex-math} package},
- subtitle = {Fixes for mathematics-related LuaLaTeX issues},
+ subtitle = {Fixes for mathematics-related Lua\LaTeX{} issues},
author = {Philipp Stephani},
date = {2022-01-01},
version = {1.12},
@@ -40698,7 +40709,7 @@
and
packages to be more
compatible with the LuaTeX engine. It is only meaningful for
- LuaLaTeX documents containing mathematical formulas, and does not
+ Lua\LaTeX{} documents containing mathematical formulas, and does not
exhibit any new functionality. The fixes are mostly moved from
the package to this
package since they are not directly related to Unicode mathematics
@@ -40733,7 +40744,7 @@
@manual{ctan-lualibs,
title = {The \texttt{lualibs} package},
subtitle = {Additional Lua functions for LuaTeX macro programmers},
- author = {Élie Roux and Philipp Gesang and {The LaTeX Project Team}},
+ author = {Élie Roux and Philipp Gesang and {The \LaTeX{} Project Team}},
date = {2022-10-04},
version = {2.75},
license = {gpl2},
@@ -40780,7 +40791,7 @@
@manual{ctan-luaotfload,
title = {The \texttt{luaotfload} package},
subtitle = {OpenType ‘loader’ for Plain \TeX{} and \LaTeX{}},
- author = {Élie Roux and Khaled Hosny and Manuel Pégourié-Gonnard and Will Robertson and Philipp Gesang and {The LaTeX Project Team} and Ulrike Fischer and Marcel Krüger},
+ author = {Élie Roux and Khaled Hosny and Manuel Pégourié-Gonnard and Will Robertson and Philipp Gesang and {The \LaTeX{} Project Team} and Ulrike Fischer and Marcel Krüger},
date = {2022-10-03},
version = {3.23},
license = {gpl2},
@@ -40820,7 +40831,7 @@
mirror = {https://mirror.ctan.org/graphics/pstricks/contrib/luapstricks},
url = {https://ctan.org/pkg/luapstricks},
annotation = {This package enables the use of
- directly in LuaLaTeX documents, without invoking external programmes,
+ directly in Lua\LaTeX{} documents, without invoking external programmes,
by implementing a PostScript interpreter in Lua.
Therefore it does not require shell escape to be enabled or
special environments, and instead allows PSTricks to be used
@@ -40867,7 +40878,7 @@
@manual{ctan-luatex-def,
title = {The \texttt{luatex-def} package},
subtitle = {LuaTeX option file for color and graphics},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2022-09-23},
version = {1.2d},
license = {lppl1.3c},
@@ -40896,7 +40907,7 @@
@manual{ctan-luatex85,
title = {The \texttt{luatex85} package},
subtitle = {pdfTeX aliases for LuaTeX},
- author = {David Carlisle and Joseph Wright and {The LaTeX Project Team}},
+ author = {David Carlisle and Joseph Wright and {The \LaTeX{} Project Team}},
date = {2016-06-24},
version = {1.4},
license = {lppl1.3},
@@ -40950,7 +40961,7 @@
@manual{ctan-luatodonotes,
title = {The \texttt{luatodonotes} package},
- subtitle = {Add editing annotations in a LuaLaTeX document},
+ subtitle = {Add editing annotations in a Lua\LaTeX{} document},
author = {Fabian Lipp},
date = {2020-02-17},
version = {0.5},
@@ -41072,7 +41083,7 @@
mirror = {https://mirror.ctan.org/macros/luatex/generic/lutabulartools},
url = {https://ctan.org/pkg/lutabulartools},
annotation = {This package provides some useful commands for tabular matter.
- It uses LuaLaTeX and offers the ability to combine the facilities
+ It uses Lua\LaTeX{} and offers the ability to combine the facilities
of
and
with an easy to use syntax. It also adds some enhanced rules
@@ -41149,7 +41160,7 @@
@manual{ctan-lyluatex,
title = {The \texttt{lyluatex} package},
- subtitle = {Commands to include lilypond scores within a (Lua)LaTeX document},
+ subtitle = {Commands to include lilypond scores within a (Lua)\LaTeX{} document},
author = {Jacques Peron and {The Gregorio Project}},
date = {2019-05-28},
version = {1.0f},
@@ -41476,7 +41487,7 @@
@manual{ctan-make-latex,
title = {The \texttt{make\_latex} package},
- subtitle = {LaTeX Makefile},
+ subtitle = {\LaTeX{} Makefile},
author = {David Beasley},
date = {2016-06-24},
version = {},
@@ -41651,7 +41662,7 @@
@manual{ctan-makeidx,
title = {The \texttt{makeidx} package},
subtitle = {Standard \LaTeX{} package for creating indexes},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2019-10-04},
version = {1.0m},
license = {lppl,lppl1.3c},
@@ -41679,7 +41690,7 @@
@manual{ctan-makeindexk,
title = {The \texttt{makeindexk} package},
subtitle = {Makeindex development sources},
- author = {Pehong Chen and {The TeX Live Team}},
+ author = {Pehong Chen and {The \TeX{} Live Team}},
date = {2016-06-24},
license = {other-free},
mirror = {https://mirror.ctan.org/indexing/makeindexk},
@@ -41790,7 +41801,7 @@
@manual{ctan-malayalam-latex,
title = {The \texttt{malayalam-latex} package},
- subtitle = {LaTeX for Malayalam},
+ subtitle = {\LaTeX{} for Malayalam},
author = {A. J. Alex},
date = {2018-01-06},
version = {0.9.7},
@@ -41866,7 +41877,7 @@
@manual{ctan-manfnt,
title = {The \texttt{manfnt} package},
- subtitle = {LaTeX support for the \TeX{} book symbols},
+ subtitle = {\LaTeX{} support for the \TeX{} book symbols},
author = {Axel Kielhorn},
date = {2020-04-03},
license = {lppl},
@@ -42499,7 +42510,7 @@
@manual{ctan-mathptmx,
title = {The \texttt{mathptmx} package},
subtitle = {Use Times as default text font, and provide maths support},
- author = {Walter A. Schmidt and Alan Jeffrey and Sebastian Rahtz and Ulrik Vieth and {The LaTeX Project Team}},
+ author = {Walter A. Schmidt and Alan Jeffrey and Sebastian Rahtz and Ulrik Vieth and {The \LaTeX{} Project Team}},
date = {2021-12-07},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/required/psnfss},
@@ -42644,7 +42655,7 @@
@manual{ctan-mathtime-ltx,
title = {The \texttt{mathtime-ltx} package},
- subtitle = {LaTeX macros for using MathTime and MathTime Plus},
+ subtitle = {\LaTeX{} macros for using MathTime and MathTime Plus},
author = {Frank Mittelbach and David Carlisle},
date = {2022-05-13},
license = {lppl},
@@ -42677,7 +42688,7 @@
@manual{ctan-mathtools,
title = {The \texttt{mathtools} package},
subtitle = {Mathematical tools to use with amsmath},
- author = {Morten Høgholm and Lars Madsen and {The LaTeX Project Team} and Will Robertson and Joseph Wright},
+ author = {Morten Høgholm and Lars Madsen and {The \LaTeX{} Project Team} and Will Robertson and Joseph Wright},
date = {2022-06-30},
version = {1.29},
license = {lppl1.3c},
@@ -43184,7 +43195,7 @@
license = {noinfo},
mirror = {https://mirror.ctan.org/macros/latex209/contrib/memo2},
url = {https://ctan.org/pkg/memo2},
- annotation = {A small document style (LaTeX 2.09) which produces a presentable
+ annotation = {A small document style (\LaTeX{} 2.09) which produces a presentable
memorandum layout. The style will work under \LaTeX{} 2e (subject to
the usual complaints), but requires the
package.},
@@ -43248,7 +43259,7 @@
@manual{ctan-mendex-doc,
title = {The \texttt{mendex-doc} package},
subtitle = {Documentation for Mendex index processor},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2022-04-05},
version = {},
license = {bsd3},
@@ -43779,8 +43790,8 @@
title = {The \texttt{mfirstuc} package},
subtitle = {Uppercase the first letter of a word},
author = {Nicola Talbot},
- date = {2021-10-15},
- version = {2.07},
+ date = {2022-10-18},
+ version = {2.08},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/mfirstuc},
url = {https://ctan.org/pkg/mfirstuc},
@@ -43808,14 +43819,14 @@
@manual{ctan-mflogo,
title = {The \texttt{mflogo} package},
- subtitle = {LaTeX support for Metafont logo fonts},
+ subtitle = {\LaTeX{} support for Metafont logo fonts},
author = {Ulrik Vieth},
date = {2016-06-24},
version = {2.0},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/contrib/mflogo},
url = {https://ctan.org/pkg/mflogo},
- annotation = {LaTeX package and font definition file to access the Knuthian
+ annotation = {\LaTeX{} package and font definition file to access the Knuthian
fonts described in
‘The Metafontbook’ and to typeset Metafont logos
in \LaTeX{} documents.},
@@ -43837,7 +43848,7 @@
@manual{ctan-mfnfss,
title = {The \texttt{mfnfss} package},
subtitle = {Packages to typeset oldgerman and pandora fonts in \LaTeX{}},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2020-01-19},
version = {},
license = {lppl},
@@ -43984,7 +43995,7 @@
@manual{ctan-mhsetup,
title = {The \texttt{mhsetup} package},
subtitle = {The mathtools “setup†function},
- author = {Lars Madsen and {The LaTeX Project Team} and Will Robertson and Joseph Wright and Morten Høgholm},
+ author = {Lars Madsen and {The \LaTeX{} Project Team} and Will Robertson and Joseph Wright and Morten Høgholm},
date = {2021-04-12},
version = {1.4},
license = {lppl1.3c},
@@ -44211,7 +44222,7 @@
@manual{ctan-milsymb,
title = {The \texttt{MilSymb} package},
- subtitle = {LaTeX package for TikZ based drawing of military symbols as per NATO APP-6(C)},
+ subtitle = {\LaTeX{} package for TikZ based drawing of military symbols as per NATO APP-6(C)},
author = {Damian Crosby},
date = {2020-03-15},
version = {1.02},
@@ -44375,7 +44386,7 @@
@manual{ctan-minimal,
title = {The \texttt{minimal} package},
subtitle = {A trivial class, for use when testing},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2019-10-04},
version = {},
license = {lppl1.3c},
@@ -44411,7 +44422,7 @@
@manual{ctan-minionpro,
title = {The \texttt{minionpro} package},
- subtitle = {LaTeX support for Adobe MinionPro fonts},
+ subtitle = {\LaTeX{} support for Adobe MinionPro fonts},
author = {Achim Blumensath},
date = {2016-06-24},
version = {2.1},
@@ -44480,7 +44491,7 @@
@manual{ctan-mintspirit,
title = {The \texttt{mintspirit} package},
- subtitle = {LaTeX support for MintSpirit font families},
+ subtitle = {\LaTeX{} support for MintSpirit font families},
author = {Bob Tennent},
date = {2022-09-22},
version = {},
@@ -44687,7 +44698,7 @@
@manual{ctan-mlacls,
title = {The \texttt{mlacls} package},
- subtitle = {LaTeX class for MLA papers},
+ subtitle = {\LaTeX{} class for MLA papers},
author = {Seth Price},
date = {2021-09-14},
version = {1.0},
@@ -44757,7 +44768,7 @@
@manual{ctan-mltex-ltx,
title = {The \texttt{mltex-ltx} package},
- subtitle = {LaTeX support for MLTeX},
+ subtitle = {\LaTeX{} support for MLTeX},
author = {Bernd Raichle},
date = {2016-06-24},
license = {lppl},
@@ -45001,7 +45012,7 @@
@manual{ctan-modguide,
title = {The \texttt{modguide} package},
subtitle = {The rules about modifying \LaTeX{}},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2019-10-04},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/base},
@@ -45166,7 +45177,7 @@
@manual{ctan-moredefs,
title = {The \texttt{moredefs} package},
- subtitle = {LaTeX defining, expansion, and debugging commands},
+ subtitle = {\LaTeX{} defining, expansion, and debugging commands},
author = {Matt Swift},
date = {2016-06-24},
version = {1.8},
@@ -45261,15 +45272,15 @@
@manual{ctan-morisawa,
title = {The \texttt{morisawa} package},
- subtitle = {Enables selection of 5 standard Japanese fonts for pLaTeX + dvips},
- author = {{Japanese TeX Development Community}},
+ subtitle = {Enables selection of 5 standard Japanese fonts for p\LaTeX{} + dvips},
+ author = {{Japanese \TeX{} Development Community}},
date = {2021-11-15},
version = {},
license = {bsd},
mirror = {https://mirror.ctan.org/fonts/morisawa},
url = {https://ctan.org/pkg/morisawa},
annotation = {The package enables selection of 5 standard Japanese fonts
- for pLaTeX + dvips. It was originally written by
+ for p\LaTeX{} + dvips. It was originally written by
Haruhiko Okumura as part of bundle,
and the TFM/VF files were previously distributed as part of the
package.},
@@ -45742,7 +45753,7 @@
@manual{ctan-multicol,
title = {The \texttt{multicol} package},
subtitle = {Intermix single and multiple columns},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2021-11-12},
version = {1.9b},
license = {lppl1.3c},
@@ -45871,7 +45882,7 @@
@manual{ctan-multiple-choice,
title = {The \texttt{multiple-choice} package},
- subtitle = {LaTeX package for multiple-choice questions},
+ subtitle = {\LaTeX{} package for multiple-choice questions},
author = {Seiied-Mohammad-Javad Razavian},
date = {2022-06-27},
version = {0.2},
@@ -46244,7 +46255,7 @@
@manual{ctan-mynsfc,
title = {The \texttt{mynsfc} package},
- subtitle = {XeLaTeX template for writing the main body of NSFC proposals},
+ subtitle = {Xe\LaTeX{} template for writing the main body of NSFC proposals},
author = {Fei Qi},
date = {2021-08-19},
version = {1.30},
@@ -46925,7 +46936,7 @@
@manual{ctan-nevelok,
title = {The \texttt{nevelok} package},
- subtitle = {LaTeX package for automatic definite articles for Hungarian},
+ subtitle = {\LaTeX{} package for automatic definite articles for Hungarian},
author = {Zalan Bodo},
date = {2016-06-24},
version = {1.03},
@@ -47259,7 +47270,7 @@
@manual{ctan-nfssfont,
title = {The \texttt{nfssfont} package},
subtitle = {Typesetting font tables using \LaTeX{}’s NFSS notation},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.2e},
license = {lppl1.3c},
@@ -47367,7 +47378,7 @@
@manual{ctan-nidanfloat,
title = {The \texttt{nidanfloat} package},
subtitle = {Bottom placement option for double float in two column mode (nidan-kumi)},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2018-07-28},
version = {},
license = {bsd3},
@@ -47464,7 +47475,7 @@
@manual{ctan-njuthesis,
title = {The \texttt{njuthesis} package},
- subtitle = {LaTeX thesis template for Nanjing University},
+ subtitle = {\LaTeX{} thesis template for Nanjing University},
author = {Yichen Zhao and Yu Xiong},
date = {2019-01-01},
version = {1.0.0},
@@ -47823,7 +47834,7 @@
@manual{ctan-nostarch,
title = {The \texttt{nostarch} package},
- subtitle = {LaTeX class for No Starch Press},
+ subtitle = {\LaTeX{} class for No Starch Press},
author = {Boris Veytsman},
date = {2017-04-18},
version = {1.3},
@@ -48052,7 +48063,7 @@
@manual{ctan-ntg-maps,
title = {The \texttt{ntg-maps} package},
subtitle = {The NTG's journal MAPS},
- author = {{Nederlandstalige TeX Gebruikersgroep}},
+ author = {{Nederlandstalige \TeX{} Gebruikersgroep}},
date = {2016-06-24},
version = {},
license = {other-nonfree},
@@ -48271,7 +48282,7 @@
@manual{ctan-numline,
title = {The \texttt{numline} package},
- subtitle = {LaTeX macros for numbering lines},
+ subtitle = {\LaTeX{} macros for numbering lines},
author = {Michal Jaegermann and James Fortune},
date = {2019-06-21},
version = {1.3},
@@ -48355,7 +48366,7 @@
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/nwejm},
url = {https://ctan.org/pkg/nwejm},
- annotation = {The bundle includes \LaTeX{} classes and BibLaTeX styles files
+ annotation = {The bundle includes \LaTeX{} classes and Bib\LaTeX{} styles files
dedicated to the new journal :},
}
@@ -48501,7 +48512,7 @@
@manual{ctan-ocherokee,
title = {The \texttt{ocherokee} package},
- subtitle = {LaTeX Support for the Cherokee language},
+ subtitle = {\LaTeX{} Support for the Cherokee language},
author = {Apostolos Syropoulos},
date = {2016-06-24},
license = {lppl},
@@ -48548,7 +48559,7 @@
@manual{ctan-ocr-latex,
title = {The \texttt{ocr-latex} package},
- subtitle = {LaTeX support for ocr fonts},
+ subtitle = {\LaTeX{} support for ocr fonts},
author = {Palle Jørgensen},
date = {2016-06-24},
version = {},
@@ -48665,7 +48676,7 @@
@manual{ctan-oinuit,
title = {The \texttt{oinuit} package},
- subtitle = {LaTeX Support for the Inuktitut Language},
+ subtitle = {\LaTeX{} Support for the Inuktitut Language},
author = {Apostolos Syropoulos},
date = {2016-06-24},
license = {lppl},
@@ -49161,7 +49172,7 @@
@manual{ctan-oscola,
title = {The \texttt{oscola} package},
- subtitle = {BibLaTeX style for the Oxford Standard for the Citation of Legal Authorities},
+ subtitle = {Bib\LaTeX{} style for the Oxford Standard for the Citation of Legal Authorities},
author = {Paul Stanley},
date = {2020-03-15},
version = {1.7},
@@ -49227,7 +49238,7 @@
@manual{ctan-otfinst,
title = {The \texttt{otfinst} package},
- subtitle = {Install OpenType fonts for use in \TeX{}/LaTeX systems},
+ subtitle = {Install OpenType fonts for use in \TeX{}/\LaTeX{} systems},
author = {John Owens},
date = {2018-01-06},
version = {1.0.3},
@@ -49236,7 +49247,7 @@
url = {https://ctan.org/pkg/otfinst},
annotation = {Otfinst takes a list of OpenType font files as input, uses Eddie
Kohler's to install
- them into a \TeX{}/LaTeX system, and builds and installs the
+ them into a \TeX{}/\LaTeX{} system, and builds and installs the
necessary font description and style files. Otfinst was formerly
known as otftex\_install and is written in Python. It has similar
capabilities to Marc Penninga's
@@ -49759,7 +49770,7 @@
@manual{ctan-pandora-latex,
title = {The \texttt{pandora-latex} package},
- subtitle = {LaTeX support for the Pandora fonts},
+ subtitle = {\LaTeX{} support for the Pandora fonts},
author = {Palle Jørgensen},
date = {2016-06-24},
version = {1.1},
@@ -49901,7 +49912,7 @@
@manual{ctan-paratype,
title = {The \texttt{paratype} package},
- subtitle = {LaTeX support for free fonts by ParaType},
+ subtitle = {\LaTeX{} support for free fonts by ParaType},
author = {Pavel Farar},
date = {2016-06-24},
version = {},
@@ -50134,7 +50145,7 @@
@manual{ctan-patgen,
title = {The \texttt{patgen} package},
subtitle = {Generate hyphenation patterns},
- author = {Franklin M. Liang and Peter Breitenlohner and {The TeX Live Team} and Tom Rokicki},
+ author = {Franklin M. Liang and Peter Breitenlohner and {The \TeX{} Live Team} and Tom Rokicki},
date = {2020-04-24},
version = {2.4},
license = {pd},
@@ -50232,7 +50243,7 @@
@manual{ctan-pbibtex-base,
title = {The \texttt{pbibtex-base} package},
subtitle = {Bibliography styles and miscellaneous files for pBibTeX},
- author = {Kazuki Maeda and {Japanese TeX Development Community}},
+ author = {Kazuki Maeda and {Japanese \TeX{} Development Community}},
date = {2022-02-06},
version = {},
license = {bsd3},
@@ -50243,7 +50254,7 @@
@manual{ctan-pbibtex-manual,
title = {The \texttt{pbibtex-manual} package},
subtitle = {Documentation files for (u)pBibTeX},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2022-04-05},
version = {},
license = {bsd3},
@@ -50312,7 +50323,7 @@
@manual{ctan-pcarl,
title = {The \texttt{pcarl} package},
- subtitle = {LaTeX Support for Adobe Caslon Open Face},
+ subtitle = {\LaTeX{} Support for Adobe Caslon Open Face},
author = {Boris Veytsman},
date = {2021-09-11},
version = {1.0a},
@@ -50619,8 +50630,8 @@
@manual{ctan-pdfmanagement-testphase,
title = {The \texttt{pdfmanagement-testphase} package},
- subtitle = {LaTeX PDF management testphase bundle},
- author = {{The LaTeX Project Team}},
+ subtitle = {\LaTeX{} PDF management testphase bundle},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-09-26},
version = {0.95s},
license = {lppl1.3c},
@@ -50845,7 +50856,7 @@
@manual{ctan-pdftex,
title = {The \texttt{pdftex} package},
subtitle = {A \TeX{} extension for direct creation of PDF},
- author = {Hàn Thế Thành and {The pdfTeX Team} and {The TeX Live Team}},
+ author = {Hàn Thế Thành and {The pdfTeX Team} and {The \TeX{} Live Team}},
date = {2022-01-31},
license = {gpl},
url = {https://ctan.org/pkg/pdftex},
@@ -50854,7 +50865,7 @@
including ,
and
include pdfTeX (Plain \TeX{}) and
- pdfLaTeX (LaTeX), among many other formats based on the pdfTeX engine.},
+ pdf\LaTeX{} (LaTeX), among many other formats based on the pdfTeX engine.},
}
@manual{ctan-pdftexcmds,
@@ -50954,14 +50965,14 @@
@manual{ctan-penlight,
title = {The \texttt{penlight} package},
- subtitle = {Penlight Lua libraries made available to LuaLaTeX users},
+ subtitle = {Penlight Lua libraries made available to Lua\LaTeX{} users},
author = {Kale Ewasiuk},
date = {2022-10-15},
version = {},
license = {mit},
mirror = {https://mirror.ctan.org/macros/luatex/generic/penlight},
url = {https://ctan.org/pkg/penlight},
- annotation = {This LuaLaTeX package provides a wrapper to use
+ annotation = {This Lua\LaTeX{} package provides a wrapper to use
the
Lua libraries with LuaLaTeX, with some extra functionality added.},
}
@@ -51062,7 +51073,7 @@
@manual{ctan-petri-nets,
title = {The \texttt{Petri-nets} package},
- subtitle = {A set \TeX{}/LaTeX packages for drawing Petri nets},
+ subtitle = {A set \TeX{}/\LaTeX{} packages for drawing Petri nets},
author = {Franck Pommereau},
date = {2016-06-24},
license = {gpl},
@@ -51083,7 +51094,7 @@
@manual{ctan-pfarrei,
title = {The \texttt{pfarrei} package},
- subtitle = {LaTeX support of pastors’ and priests’ work},
+ subtitle = {\LaTeX{} support of pastors’ and priests’ work},
author = {Markus Kohm},
date = {2016-06-24},
version = {r36},
@@ -51245,7 +51256,7 @@
license = {gpl},
mirror = {https://mirror.ctan.org/graphics/pgf/contrib/pgf-umlsd},
url = {https://ctan.org/pkg/pgf-umlsd},
- annotation = {LaTeX macros to draw UML diagrams using},
+ annotation = {\LaTeX{} macros to draw UML diagrams using},
}
@manual{ctan-pgf,
@@ -51332,7 +51343,7 @@
@manual{ctan-pgfopts,
title = {The \texttt{pgfopts} package},
- subtitle = {LaTeX package options with pgfkeys},
+ subtitle = {\LaTeX{} package options with pgfkeys},
author = {Joseph Wright},
date = {2016-06-24},
version = {2.1a},
@@ -51945,7 +51956,7 @@
@manual{ctan-pifont,
title = {The \texttt{pifont} package},
subtitle = {Access to PostScript standard Symbol and Dingbats fonts},
- author = {Walter A. Schmidt and {The LaTeX Project Team} and Sebastian Rahtz},
+ author = {Walter A. Schmidt and {The \LaTeX{} Project Team} and Sebastian Rahtz},
date = {2021-12-07},
version = {9.2a},
license = {lppl1.2},
@@ -52129,7 +52140,7 @@
@manual{ctan-pkuthss,
title = {The \texttt{pkuthss} package},
- subtitle = {LaTeX template for dissertations in Peking University},
+ subtitle = {\LaTeX{} template for dissertations in Peking University},
author = {Casper Ti. Vector},
date = {2022-05-04},
version = {1.9.2},
@@ -52141,7 +52152,7 @@
@manual{ctan-pkware,
title = {The \texttt{pkware} package},
subtitle = {Utility programs for use with PK bitmap fonts},
- author = {Tom Rokicki and {The TeX Live Team}},
+ author = {Tom Rokicki and {The \TeX{} Live Team}},
date = {2020-04-26},
version = {},
license = {pd},
@@ -52184,7 +52195,7 @@
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/luatex/latex/placeat},
url = {https://ctan.org/pkg/placeat},
- annotation = {The package provides commands so that the user of LuaLaTeX may
+ annotation = {The package provides commands so that the user of Lua\LaTeX{} may
position arbitrary content at any position specified by absolute
coordinates on the page. The package draws a grid on each page of
the document, to aid positioning (the grid may be disabled, for
@@ -52348,7 +52359,7 @@
@manual{ctan-platex-tools,
title = {The \texttt{platex-tools} package},
- subtitle = {pLaTeX standard tools bundle},
+ subtitle = {p\LaTeX{} standard tools bundle},
author = {Hironobu Yamashita},
date = {2022-07-31},
version = {},
@@ -52369,7 +52380,7 @@
@manual{ctan-platex,
title = {The \texttt{platex} package},
subtitle = {pLaTeX2e and miscellaneous macros for pTeX},
- author = {Kazuki Maeda and {Japanese TeX Development Community}},
+ author = {Kazuki Maeda and {Japanese \TeX{} Development Community}},
date = {2022-07-31},
version = {},
license = {bsd3},
@@ -52561,7 +52572,7 @@
@manual{ctan-pm-isomath,
title = {The \texttt{pm-isomath} package},
- subtitle = {Poor man ISO math for pdfLaTeX users},
+ subtitle = {Poor man ISO math for pdf\LaTeX{} users},
author = {Claudio Beccari},
date = {2021-08-26},
version = {1.2.00},
@@ -52594,7 +52605,7 @@
@manual{ctan-pmcstex,
title = {The \texttt{pmcstex} package},
- subtitle = {LaTeX in emTeX IDE/FrontEnd for EPM},
+ subtitle = {\LaTeX{} in emTeX IDE/FrontEnd for EPM},
author = {Petr Mikulik},
date = {2017-04-18},
version = {},
@@ -52857,7 +52868,7 @@
mirror = {https://mirror.ctan.org/macros/unicodetex/latex/polyglossia},
url = {https://ctan.org/pkg/polyglossia},
annotation = {This package provides a complete
- replacement for users of LuaLaTeX and \XeLaTeX{}; it relies on the
+ replacement for users of Lua\LaTeX{} and \XeLaTeX{}; it relies on the
package, version 2.0 at
least.},
}
@@ -53431,7 +53442,7 @@
@manual{ctan-proc,
title = {The \texttt{proc} package},
subtitle = {Class for producing “proceedingsâ€},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {1.3m},
license = {lppl1.3c},
@@ -53666,7 +53677,7 @@
@manual{ctan-prosper,
title = {The \texttt{prosper} package},
- subtitle = {LaTeX class for high quality slides},
+ subtitle = {\LaTeX{} class for high quality slides},
author = {Frederic Goualard},
date = {2017-04-18},
version = {1.0h},
@@ -53693,7 +53704,7 @@
@manual{ctan-protex,
title = {The \texttt{protex} package},
subtitle = {Literate programming package},
- author = {{The TeX4ht Team} and Eitan M. Gurari},
+ author = {{The \TeX{}4ht Team} and Eitan M. Gurari},
date = {2018-01-06},
version = {},
license = {lppl},
@@ -53799,7 +53810,7 @@
@manual{ctan-ps2pk,
title = {The \texttt{ps2pk} package},
subtitle = {Generate a PK font from an Adobe Type 1 font},
- author = {Piet Tutelaers and Pierre A. MacKay and {The TeX Live Team}},
+ author = {Piet Tutelaers and Pierre A. MacKay and {The \TeX{} Live Team}},
date = {2016-06-24},
license = {other-free},
mirror = {https://mirror.ctan.org/fonts/utilities/ps2pk},
@@ -53830,7 +53841,7 @@
@manual{ctan-ps4pdf,
title = {The \texttt{ps4pdf} package},
- subtitle = {Use PostScript commands inside a pdfLaTeX document},
+ subtitle = {Use PostScript commands inside a pdf\LaTeX{} document},
author = {Rolf Niepraschk},
date = {2021-08-26},
version = {0.6i},
@@ -53911,7 +53922,7 @@
@manual{ctan-pseudocode,
title = {The \texttt{pseudocode} package},
- subtitle = {LaTeX environment for specifying algorithms in a natural way},
+ subtitle = {\LaTeX{} environment for specifying algorithms in a natural way},
author = {Donald L. Kreher},
date = {2019-06-25},
license = {lppl},
@@ -54010,7 +54021,7 @@
url = {https://ctan.org/pkg/psfragger},
annotation = {PSFragger is a Win32 application with which one can perform
replacements and even transform
- resulting EPS files into PDF files (useful if pdfLaTeX is to be
+ resulting EPS files into PDF files (useful if pdf\LaTeX{} is to be
used). PSFragger can also act as a simple EPS bounding box
correction tool and as an EPS to PDF conversion utility.},
}
@@ -54039,7 +54050,7 @@
@manual{ctan-psgreek,
title = {The \texttt{psgreek} package},
- subtitle = {LaTeX support for Greek Type 1 fonts},
+ subtitle = {\LaTeX{} support for Greek Type 1 fonts},
author = {Alexey Kryukov and Christian Justen},
date = {2016-06-24},
version = {0.6},
@@ -54096,7 +54107,7 @@
@manual{ctan-psnfss,
title = {The \texttt{psnfss} package},
subtitle = {Font support for common PostScript fonts},
- author = {Walter A. Schmidt and Keiran Harcombe and {The LaTeX Project Team} and Sebastian Rahtz},
+ author = {Walter A. Schmidt and Keiran Harcombe and {The \LaTeX{} Project Team} and Sebastian Rahtz},
date = {2021-12-08},
version = {9.3},
license = {lppl},
@@ -55683,7 +55694,7 @@
@manual{ctan-ptex-base,
title = {The \texttt{ptex-base} package},
subtitle = {Plain \TeX{} format for pTeX and e-pTeX},
- author = {{Japanese TeX Development Community} and Kazuki Maeda},
+ author = {{Japanese \TeX{} Development Community} and Kazuki Maeda},
date = {2022-07-31},
version = {},
license = {bsd3},
@@ -55696,7 +55707,7 @@
@manual{ctan-ptex-fontmaps,
title = {The \texttt{ptex-fontmaps} package},
subtitle = {Font maps and configuration tools for Japanese/Chinese/Korean fonts with (u)ptex},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2021-10-22},
version = {20210625.0},
license = {pd,gpl3},
@@ -55707,7 +55718,7 @@
@manual{ctan-ptex-fonts,
title = {The \texttt{ptex-fonts} package},
subtitle = {Fonts for use with pTeX},
- author = {{Japanese TeX Development Community} and Kazuki Maeda},
+ author = {{Japanese \TeX{} Development Community} and Kazuki Maeda},
date = {2022-09-10},
version = {},
license = {bsd3},
@@ -55718,7 +55729,7 @@
@manual{ctan-ptex-manual,
title = {The \texttt{ptex-manual} package},
subtitle = {Japanese pTeX manual},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2022-04-05},
version = {},
license = {bsd3},
@@ -55729,7 +55740,7 @@
@manual{ctan-ptex-texmf,
title = {The \texttt{ptex-texmf} package},
subtitle = {Macro and other extensions for use with PTeX},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2020-03-01},
license = {bsd3},
url = {https://ctan.org/pkg/ptex-texmf},
@@ -55743,7 +55754,7 @@
@manual{ctan-ptex,
title = {The \texttt{ptex} package},
subtitle = {A \TeX{} system for publishing in Japanese},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2022-02-05},
license = {bsd3},
url = {https://ctan.org/pkg/ptex},
@@ -55752,7 +55763,7 @@
@manual{ctan-ptex2pdf,
title = {The \texttt{ptex2pdf} package},
subtitle = {Convert Japanese \TeX{} documents to PDF},
- author = {{Japanese TeX Development Community}},
+ author = {{Japanese \TeX{} Development Community}},
date = {2022-07-31},
version = {20200520.0},
license = {gpl2},
@@ -55850,7 +55861,7 @@
@manual{ctan-punk-latex,
title = {The \texttt{Punk-LaTeX} package},
- subtitle = {LaTeX support for punk fonts},
+ subtitle = {\LaTeX{} support for punk fonts},
author = {Palle Jørgensen},
date = {2016-06-24},
version = {1.1},
@@ -55945,7 +55956,7 @@
@manual{ctan-pxchfon,
title = {The \texttt{pxchfon} package},
- subtitle = {Japanese font setup for pLaTeX and upLaTeX},
+ subtitle = {Japanese font setup for p\LaTeX{} and upLaTeX},
author = {Takayuki Yato},
date = {2022-07-31},
version = {1.9},
@@ -55956,7 +55967,7 @@
@manual{ctan-pxcjkcat,
title = {The \texttt{pxcjkcat} package},
- subtitle = {LaTeX interface for the CJK category codes of upTeX},
+ subtitle = {\LaTeX{} interface for the CJK category codes of upTeX},
author = {Takayuki Yato},
date = {2022-07-20},
version = {1.4},
@@ -56312,7 +56323,7 @@
@manual{ctan-qobitree,
title = {The \texttt{qobitree} package},
- subtitle = {LaTeX macros for typesetting trees},
+ subtitle = {\LaTeX{} macros for typesetting trees},
author = {Jeffrey Siskind},
date = {2016-06-24},
version = {},
@@ -56455,7 +56466,7 @@
@manual{ctan-quicktype,
title = {The \texttt{quicktype} package},
- subtitle = {LaTeX package for quick typesetting},
+ subtitle = {\LaTeX{} package for quick typesetting},
author = {Xandru Mifsud},
date = {2016-10-08},
version = {0.1},
@@ -56851,7 +56862,7 @@
@manual{ctan-rawfonts,
title = {The \texttt{rawfonts} package},
subtitle = {Low level font compatibility mode for \LaTeX{}},
- author = {Alan Jeffrey and {The LaTeX Project Team}},
+ author = {Alan Jeffrey and {The \LaTeX{} Project Team}},
date = {2020-10-02},
version = {0.01},
license = {lppl1.3c},
@@ -57467,7 +57478,7 @@
@manual{ctan-report,
title = {The \texttt{report} package},
subtitle = {Typeset a multi-chapter report},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.4n},
license = {lppl1.3c},
@@ -57481,7 +57492,7 @@
@manual{ctan-required,
title = {The \texttt{required} package},
subtitle = {Packages "required" of a \LaTeX{} distribution},
- author = {{The LaTeX Project Team} and Sebastian Rahtz and Walter A. Schmidt and Vladimir Volovich},
+ author = {{The \LaTeX{} Project Team} and Sebastian Rahtz and Walter A. Schmidt and Vladimir Volovich},
date = {2016-06-24},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/required},
@@ -57589,7 +57600,7 @@
like an simple, semi-automatic grid typesetting. It does more or
less what the existing  
package does. The main differences to  are that
-  works also with LuaLaTeX and that it has
+  works also with Lua\LaTeX{} and that it has
also a command to do some horizontal movements to get to "tab"
positions.},
}
@@ -57965,7 +57976,7 @@
@manual{ctan-romaniantex,
title = {The \texttt{romaniantex} package},
- subtitle = {LaTeX support for Romanian},
+ subtitle = {\LaTeX{} support for Romanian},
author = {Adrian Rezus},
date = {2016-06-24},
version = {1.3R},
@@ -58042,7 +58053,7 @@
@manual{ctan-rotating,
title = {The \texttt{rotating} package},
subtitle = {Rotation tools, including rotated full-page floats},
- author = {Robin Fairbairns and Sebastian Rahtz and {The LaTeX Project Team}},
+ author = {Robin Fairbairns and Sebastian Rahtz and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.16d},
license = {lppl1.3c},
@@ -58471,7 +58482,7 @@
@manual{ctan-russ,
title = {The \texttt{russ} package},
- subtitle = {LaTeX in Russian, without babel},
+ subtitle = {\LaTeX{} in Russian, without babel},
author = {Sergey Shashkov},
date = {2016-06-24},
version = {},
@@ -58482,7 +58493,7 @@
@manual{ctan-russian-help,
title = {The \texttt{russian-help} package},
- subtitle = {LaTeX help in Russian},
+ subtitle = {\LaTeX{} help in Russian},
author = {Yuri Lubenets},
date = {2016-06-18},
license = {pd},
@@ -59050,7 +59061,7 @@
title = {The \texttt{schola-otf} package},
subtitle = {Using the OpenType fonts \TeX{} Gyre schola},
author = {Herbert Voß},
- date = {2022-10-17},
+ date = {2022-10-18},
version = {0.01},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/fonts/schola-otf},
@@ -59382,7 +59393,7 @@
license = {noinfo},
mirror = {https://mirror.ctan.org/dviware/screenview/vms/screen.sty},
url = {https://ctan.org/pkg/screen},
- annotation = {A small package designed to set geometry to prepare a (LaTeX 2.09)
+ annotation = {A small package designed to set geometry to prepare a (\LaTeX{} 2.09)
document for viewing with something like
.},
}
@@ -59688,7 +59699,7 @@
@manual{ctan-sdaps,
title = {The \texttt{sdaps} package},
- subtitle = {LaTeX support files for SDAPS},
+ subtitle = {\LaTeX{} support files for SDAPS},
author = {Benjamin Berg},
date = {2021-11-10},
version = {1.9.10},
@@ -59816,7 +59827,7 @@
@manual{ctan-sectionbreak,
title = {The \texttt{sectionbreak} package},
- subtitle = {LaTeX support for section breaks},
+ subtitle = {\LaTeX{} support for section breaks},
author = {Michal Hoftich},
date = {2019-03-11},
version = {0.1d},
@@ -60307,7 +60318,7 @@
@manual{ctan-seuthesis,
title = {The \texttt{seuthesis} package},
- subtitle = {LaTeX template for theses at Southeastern University},
+ subtitle = {\LaTeX{} template for theses at Southeastern University},
author = {Xu Yuan},
date = {2018-04-05},
version = {2.1.2},
@@ -60318,7 +60329,7 @@
@manual{ctan-seuthesix,
title = {The \texttt{seuthesix} package},
- subtitle = {LaTeX class for theses at Southeast University, Nanjing, China},
+ subtitle = {\LaTeX{} class for theses at Southeast University, Nanjing, China},
author = {James Fan},
date = {2017-04-18},
version = {1.0.1},
@@ -60428,7 +60439,7 @@
@manual{ctan-sgame,
title = {The \texttt{sgame} package},
- subtitle = {LaTeX style for typesetting strategic games},
+ subtitle = {\LaTeX{} style for typesetting strategic games},
author = {Martin J. Osborne},
date = {2017-04-18},
version = {2.15},
@@ -60496,7 +60507,7 @@
@manual{ctan-shading,
title = {The \texttt{shading} package},
- subtitle = {LaTeX package for putting text on a shaded background},
+ subtitle = {\LaTeX{} package for putting text on a shaded background},
author = {Art Mulder},
date = {2016-06-24},
version = {1.3},
@@ -60611,7 +60622,7 @@
@manual{ctan-shellesc,
title = {The \texttt{shellesc} package},
subtitle = {Unified shell escape interface for \LaTeX{}},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2021-01-03},
version = {1.0c},
license = {lppl1.3c},
@@ -60642,7 +60653,7 @@
@manual{ctan-shlatex,
title = {The \texttt{shlatex} package},
- subtitle = {LaTeX compilation script for Linux (written in Bash)},
+ subtitle = {\LaTeX{} compilation script for Linux (written in Bash)},
author = {Mael Hilléreau},
date = {2016-06-24},
version = {1.2b},
@@ -60722,7 +60733,7 @@
@manual{ctan-shortvrb,
title = {The \texttt{shortvrb} package},
subtitle = {Abbreviated verbatim commands},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-16},
version = {3.0j},
license = {lppl1.3c},
@@ -61521,7 +61532,7 @@
@manual{ctan-slatex,
title = {The \texttt{slatex} package},
- subtitle = {LaTeX support for writing Swedish},
+ subtitle = {\LaTeX{} support for writing Swedish},
author = {Sven Mattison},
date = {2016-06-24},
license = {lppl},
@@ -61581,7 +61592,7 @@
@manual{ctan-slides,
title = {The \texttt{slides} package},
subtitle = {Class for creating slides},
- author = {Frank Mittelbach and Rainer Schöpf and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and Rainer Schöpf and {The \LaTeX{} Project Team}},
date = {2022-06-08},
version = {2.4b},
license = {lppl1.3c},
@@ -61841,7 +61852,7 @@
@manual{ctan-softmaker-alteschwabacher,
title = {The \texttt{softmaker-alteschwabacher} package},
- subtitle = {LaTeX Support files for the SoftMaker Alte Schwabacher font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Alte Schwabacher font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -61852,7 +61863,7 @@
@manual{ctan-softmaker-artistic,
title = {The \texttt{softmaker-artistic} package},
- subtitle = {LaTeX Support files for the SoftMaker Artistic font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Artistic font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -61863,7 +61874,7 @@
@manual{ctan-softmaker-baskervillenova,
title = {The \texttt{softmaker-baskervillenova} package},
- subtitle = {LaTeX Support files for the SoftMaker Baskerville Nova fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Baskerville Nova fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -61874,7 +61885,7 @@
@manual{ctan-softmaker-bonita,
title = {The \texttt{softmaker-bonita} package},
- subtitle = {LaTeX Support files for SoftMaker Bonita},
+ subtitle = {\LaTeX{} Support files for SoftMaker Bonita},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -61885,7 +61896,7 @@
@manual{ctan-softmaker-broadway,
title = {The \texttt{softmaker-broadway} package},
- subtitle = {LaTeX Support files for the SoftMaker Broadway fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Broadway fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -61896,7 +61907,7 @@
@manual{ctan-softmaker-canossa,
title = {The \texttt{softmaker-canossa} package},
- subtitle = {LaTeX Support files for the SoftMaker Canossa fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Canossa fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.2},
@@ -61907,7 +61918,7 @@
@manual{ctan-softmaker-congress,
title = {The \texttt{softmaker-congress} package},
- subtitle = {LaTeX Support files for the SoftMaker Congress fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Congress fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -61918,7 +61929,7 @@
@manual{ctan-softmaker-delanocaps,
title = {The \texttt{softmaker-delanocaps} package},
- subtitle = {LaTeX Support files for the SoftMaker Delano Caps font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Delano Caps font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -61929,7 +61940,7 @@
@manual{ctan-softmaker-digital,
title = {The \texttt{softmaker-digital} package},
- subtitle = {LaTeX Support files for the SoftMaker Digital fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Digital fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -61940,7 +61951,7 @@
@manual{ctan-softmaker-egyptiennestd,
title = {The \texttt{softmaker-egyptiennestd} package},
- subtitle = {LaTeX Support files for the SoftMaker EgyptienneStd fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker EgyptienneStd fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -61951,7 +61962,7 @@
@manual{ctan-softmaker-flagstaff,
title = {The \texttt{softmaker-flagstaff} package},
- subtitle = {LaTeX Support files for the SoftMaker Flagstaff font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Flagstaff font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -61962,7 +61973,7 @@
@manual{ctan-softmaker-grenoble,
title = {The \texttt{softmaker-grenoble} package},
- subtitle = {LaTeX Support files for the SoftMaker Grenoble fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Grenoble fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -61973,7 +61984,7 @@
@manual{ctan-softmaker-helium,
title = {The \texttt{softmaker-helium} package},
- subtitle = {LaTeX Support files for the SoftMaker Helium fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Helium fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.1},
@@ -61984,7 +61995,7 @@
@manual{ctan-softmaker-heliumtwo,
title = {The \texttt{softmaker-heliumtwo} package},
- subtitle = {LaTeX Support files for the SoftMaker Helium fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Helium fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -61995,7 +62006,7 @@
@manual{ctan-softmaker-henderson,
title = {The \texttt{softmaker-henderson} package},
- subtitle = {LaTeX Support files for the SoftMaker Henderson font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Henderson font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -62006,7 +62017,7 @@
@manual{ctan-softmaker-iceberg,
title = {The \texttt{softmaker-iceberg} package},
- subtitle = {LaTeX Support files for the SoftMaker Iceberg font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Iceberg font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -62017,7 +62028,7 @@
@manual{ctan-softmaker-inverserif,
title = {The \texttt{softmaker-inverserif} package},
- subtitle = {LaTeX Support files for the SoftMaker Inverserif font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Inverserif font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62028,7 +62039,7 @@
@manual{ctan-softmaker-jugendstil,
title = {The \texttt{softmaker-jugendstil} package},
- subtitle = {LaTeX Support files for the SoftMaker Jugendstil font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Jugendstil font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -62039,7 +62050,7 @@
@manual{ctan-softmaker-marseille,
title = {The \texttt{softmaker-marseille} package},
- subtitle = {LaTeX Support files for the SoftMaker Marseille fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Marseille fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62050,7 +62061,7 @@
@manual{ctan-softmaker-moab,
title = {The \texttt{softmaker-moab} package},
- subtitle = {LaTeX Support files for the SoftMaker Moab font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Moab font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62061,7 +62072,7 @@
@manual{ctan-softmaker-nevada,
title = {The \texttt{softmaker-nevada} package},
- subtitle = {LaTeX Support files for the SoftMaker Nevada fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Nevada fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62072,7 +62083,7 @@
@manual{ctan-softmaker-newcastle,
title = {The \texttt{softmaker-newcastle} package},
- subtitle = {LaTeX Support files for the SoftMaker Newcastle fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Newcastle fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62083,7 +62094,7 @@
@manual{ctan-softmaker-oldblackletter,
title = {The \texttt{softmaker-oldblackletter} package},
- subtitle = {LaTeX Support files for the SoftMaker Old Blackletter font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Old Blackletter font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -62094,7 +62105,7 @@
@manual{ctan-softmaker-quadrat,
title = {The \texttt{softmaker-quadrat} package},
- subtitle = {LaTeX Support files for the SoftMaker Quadrat fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Quadrat fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62105,7 +62116,7 @@
@manual{ctan-softmaker-stonehand,
title = {The \texttt{softmaker-stonehand} package},
- subtitle = {LaTeX Support files for the SoftMaker Stone Handwriting font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Stone Handwriting font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.3},
@@ -62116,7 +62127,7 @@
@manual{ctan-softmaker-sunset,
title = {The \texttt{softmaker-sunset} package},
- subtitle = {LaTeX Support files for the SoftMaker Sunset fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Sunset fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.2},
@@ -62127,7 +62138,7 @@
@manual{ctan-softmaker-tampa,
title = {The \texttt{softmaker-tampa} package},
- subtitle = {LaTeX Support files for the SoftMaker Congress fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Congress fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62138,7 +62149,7 @@
@manual{ctan-softmaker-vagrounded,
title = {The \texttt{softmaker-vagrounded} package},
- subtitle = {LaTeX Support files for the SoftMaker VAGRounded font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker VAGRounded font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.1},
@@ -62149,7 +62160,7 @@
@manual{ctan-softmaker-velo,
title = {The \texttt{softmaker-velo} package},
- subtitle = {LaTeX Support files for the SoftMaker Velo font},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Velo font},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62160,7 +62171,7 @@
@manual{ctan-softmaker-veracruz,
title = {The \texttt{softmaker-veracruz} package},
- subtitle = {LaTeX Support files for the SoftMaker Veracruz fonts},
+ subtitle = {\LaTeX{} Support files for the SoftMaker Veracruz fonts},
author = {Josef Kleber},
date = {2016-08-23},
version = {1.0},
@@ -62183,7 +62194,7 @@
@manual{ctan-somedefs,
title = {The \texttt{somedefs} package},
subtitle = {Save loading all of another package},
- author = {Alan Jeffrey and {The LaTeX Project Team}},
+ author = {Alan Jeffrey and {The \LaTeX{} Project Team}},
date = {2020-10-02},
version = {0.03},
license = {lppl1.3c},
@@ -62312,7 +62323,7 @@
@manual{ctan-source2e,
title = {The \texttt{source2e} package},
subtitle = {LaTeX2e kernel documentation for the entire system as one document},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2017-04-18},
version = {},
license = {lppl},
@@ -62524,7 +62535,7 @@
@manual{ctan-sphdthesis,
title = {The \texttt{sphdthesis} package},
- subtitle = {LaTeX template for writing PhD Thesis},
+ subtitle = {\LaTeX{} template for writing PhD Thesis},
author = {Saurabh Garg},
date = {2017-04-18},
version = {1.0},
@@ -64162,7 +64173,7 @@
@manual{ctan-syntonly,
title = {The \texttt{syntonly} package},
subtitle = {Run a document through \LaTeX{} for syntax checking},
- author = {Frank Mittelbach and Rainer Schöpf and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and Rainer Schöpf and {The \LaTeX{} Project Team}},
date = {2019-10-04},
version = {2.1e},
license = {lppl1.3c},
@@ -64260,7 +64271,7 @@
@manual{ctan-t1enc,
title = {The \texttt{t1enc} package},
subtitle = {Standard package for activating ec fonts},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2016-06-24},
version = {},
license = {lppl},
@@ -64683,7 +64694,7 @@
@manual{ctan-tabularx,
title = {The \texttt{tabularx} package},
subtitle = {Tabulars with adjustable-width columns},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.11c},
license = {lppl1.3c},
@@ -64736,7 +64747,7 @@
@manual{ctan-tagging,
title = {The \texttt{tagging} package},
subtitle = {Document configuration with tags},
- author = {Brent Longborough and {The LaTeX Project Team}},
+ author = {Brent Longborough and {The \LaTeX{} Project Team}},
date = {2021-12-20},
version = {1.1.0.1},
license = {lppl1.3},
@@ -64757,7 +64768,7 @@
@manual{ctan-tagpdf,
title = {The \texttt{tagpdf} package},
- subtitle = {Tools for experimenting with tagging using pdfLaTeX and LuaLaTeX},
+ subtitle = {Tools for experimenting with tagging using pdf\LaTeX{} and LuaLaTeX},
author = {Ulrike Fischer},
date = {2022-08-24},
version = {0.97},
@@ -64961,7 +64972,7 @@
@manual{ctan-tcltexed,
title = {The \texttt{tcltexed} package},
- subtitle = {LaTeX editor written in TCL},
+ subtitle = {\LaTeX{} editor written in TCL},
author = {Martin Strauß},
date = {2016-06-24},
version = {},
@@ -65226,7 +65237,7 @@
@manual{ctan-tengwarscript,
title = {The \texttt{TengwarScript} package},
- subtitle = {LaTeX support for using Tengwar fonts},
+ subtitle = {\LaTeX{} support for using Tengwar fonts},
author = {Ignacio Fernández Galván},
date = {2016-06-24},
version = {1.3.1},
@@ -65401,7 +65412,7 @@
@manual{ctan-testmath,
title = {The \texttt{testmath} package},
- subtitle = {Examples of the AMS-LaTeX package},
+ subtitle = {Examples of the AMS-\LaTeX{} package},
author = {{The American Mathematical Society}},
date = {2017-09-08},
version = {2.0},
@@ -65879,7 +65890,7 @@
@manual{ctan-tex2ltx,
title = {The \texttt{tex2ltx} package},
- subtitle = {AMS-TeX to AMS-LaTeX converter},
+ subtitle = {AMS-TeX to AMS-\LaTeX{} converter},
author = {Pedro Fortuny},
date = {2016-06-24},
license = {gpl},
@@ -65931,7 +65942,7 @@
@manual{ctan-tex2word,
title = {The \texttt{tex2word} package},
- subtitle = {Convert \TeX{}/LaTeX to MSWord},
+ subtitle = {Convert \TeX{}/\LaTeX{} to MSWord},
author = {Kirill A Chikrii},
date = {2017-04-18},
version = {2.0},
@@ -65958,7 +65969,7 @@
@manual{ctan-tex4ht,
title = {The \texttt{TeX4ht} package},
subtitle = {Convert (La)TeX to HTML/XML},
- author = {{The TeX4ht Team} and Eitan M. Gurari},
+ author = {{The \TeX{}4ht Team} and Eitan M. Gurari},
date = {2021-10-11},
license = {lppl},
mirror = {https://mirror.ctan.org/support/TeX4ht},
@@ -66171,7 +66182,7 @@
@manual{ctan-texdoc,
title = {The \texttt{texdoc} package},
subtitle = {Documentation access for \TeX{} Live},
- author = {Takuto Asakura and Thomas Esser and Manuel Pégourié-Gonnard and {The TeX Live Team}},
+ author = {Takuto Asakura and Thomas Esser and Manuel Pégourié-Gonnard and {The \TeX{} Live Team}},
date = {2022-03-19},
version = {3.4.1},
license = {gpl},
@@ -66395,7 +66406,7 @@
@manual{ctan-texlab,
title = {The \texttt{TeXLab} package},
- subtitle = {LaTeX Language Server},
+ subtitle = {\LaTeX{} Language Server},
author = {Eric Förster},
date = {2022-07-03},
version = {4.2.0},
@@ -66417,7 +66428,7 @@
@manual{ctan-texlipse,
title = {The \texttt{texlipse} package},
- subtitle = {LaTeX plugin for Eclipse},
+ subtitle = {\LaTeX{} plugin for Eclipse},
author = {Boris von Loesch and Taavi Hupponen and Kimmo Karlsson and Jani Laitinen and Oskar Ojala and Antti Pirinen and Esa Seuranen and Laura Takkinen},
date = {2017-04-18},
version = {1.5.0},
@@ -66511,7 +66522,7 @@
@manual{ctan-texlive-repo,
title = {The \texttt{texlive-repo} package},
subtitle = {A mirror of the \TeX{} Live repository},
- author = {{The TeX Live Team}},
+ author = {{The \TeX{} Live Team}},
date = {2021-08-26},
version = {2016},
license = {other-free},
@@ -66522,7 +66533,7 @@
@manual{ctan-texlive-source,
title = {The \texttt{TeX Live source tree} package},
subtitle = {Sources of the \TeX{} Live distribution},
- author = {{The TeX Live Team}},
+ author = {{The \TeX{} Live Team}},
date = {2021-08-26},
license = {other-free},
mirror = {https://mirror.ctan.org/systems/texlive/Source},
@@ -66532,7 +66543,7 @@
@manual{ctan-texlive,
title = {The \texttt{texlive} package},
subtitle = {A comprehensive distribution of \TeX{} and friends},
- author = {{The TeX Live Team}},
+ author = {{The \TeX{} Live Team}},
date = {2022-04-04},
version = {2022},
license = {other-free},
@@ -67010,7 +67021,7 @@
@manual{ctan-textcomp,
title = {The \texttt{textcomp} package},
- subtitle = {LaTeX support for the Text Companion fonts},
+ subtitle = {\LaTeX{} support for the Text Companion fonts},
author = {Sebastian Rahtz},
date = {2016-06-24},
license = {lppl},
@@ -67409,7 +67420,7 @@
@manual{ctan-theorem,
title = {The \texttt{theorem} package},
subtitle = {Manipulate theorem environments},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {2.2c},
license = {lppl1.3c},
@@ -67601,7 +67612,7 @@
@manual{ctan-threecolumn,
title = {The \texttt{threecolumn} package},
- subtitle = {LaTeX output in three columns},
+ subtitle = {\LaTeX{} output in three columns},
author = {George Greenwade},
date = {2016-06-24},
version = {},
@@ -69530,7 +69541,7 @@
@manual{ctan-tpic2pdftex,
title = {The \texttt{tpic2pdftex} package},
subtitle = {Use tpic commands in pdfTeX},
- author = {Hartmut Henkel and {The TeX Live Team}},
+ author = {Hartmut Henkel and {The \TeX{} Live Team}},
date = {2017-06-27},
license = {gpl},
mirror = {https://mirror.ctan.org/graphics/tpic2pdftex},
@@ -69596,7 +69607,7 @@
@manual{ctan-trace,
title = {The \texttt{trace} package},
subtitle = {Make sensible use of \TeX{} tracing in \LaTeX{}},
- author = {Frank Mittelbach and {The LaTeX Project Team}},
+ author = {Frank Mittelbach and {The \LaTeX{} Project Team}},
date = {2021-08-26},
version = {1.1f},
license = {lppl1.3c},
@@ -69988,7 +69999,7 @@
@manual{ctan-trig,
title = {The \texttt{trig} package},
subtitle = {Simple trigonometric functions},
- author = {David Carlisle and {The LaTeX Project Team}},
+ author = {David Carlisle and {The \LaTeX{} Project Team}},
date = {2021-11-12},
version = {1.11},
license = {lppl1.3c},
@@ -70106,7 +70117,7 @@
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/luatex/latex/truthtable},
url = {https://ctan.org/pkg/truthtable},
- annotation = {This LuaLaTeX package permits to automatically generate
+ annotation = {This Lua\LaTeX{} package permits to automatically generate
truth tables given a table header.
It supports a number of logical operations which can be
combined as needed. It is built upon the
@@ -70115,7 +70126,7 @@
@manual{ctan-try,
title = {The \texttt{TrY} package},
- subtitle = {Automation of \TeX{}/LaTeX compilation},
+ subtitle = {Automation of \TeX{}/\LaTeX{} compilation},
author = {Ajabu Tex},
date = {2016-06-24},
version = {4.0},
@@ -70123,7 +70134,7 @@
mirror = {https://mirror.ctan.org/support/try},
url = {https://ctan.org/pkg/try},
annotation = {The package offers a script that automates the compilation of
- \TeX{}/LaTeX documents. TrY reads commands from the comment lines of
+ \TeX{}/\LaTeX{} documents. TrY reads commands from the comment lines of
the document and executes them automatically. TrY may be compared
to , but is simpler.
TrY has been written for Linux and works on Linux.},
@@ -70296,7 +70307,7 @@
@manual{ctan-tuda-ci,
title = {The \texttt{tuda-ci} package},
- subtitle = {LaTeX templates of Technische Universität Darmstadt},
+ subtitle = {\LaTeX{} templates of Technische Universität Darmstadt},
author = {Marei Peischl},
date = {2022-08-03},
version = {3.27},
@@ -70354,7 +70365,7 @@
@manual{ctan-tugboat,
title = {The \texttt{tugboat} package},
- subtitle = {LaTeX macros for TUGboat articles},
+ subtitle = {\LaTeX{} macros for TUGboat articles},
author = {Robin Fairbairns and Karl Berry},
date = {2022-05-22},
version = {2.27},
@@ -70404,7 +70415,7 @@
@manual{ctan-turkish,
title = {The \texttt{turkish} package},
- subtitle = {LaTeX Support for Typesetting Turkish},
+ subtitle = {\LaTeX{} Support for Typesetting Turkish},
author = {Pierre A. MacKay},
date = {2019-06-09},
license = {lppl},
@@ -70935,7 +70946,7 @@
@manual{ctan-ucalgmthesis,
title = {The \texttt{ucalgmthesis} package},
- subtitle = {LaTeX thesis class for University of Calgary Faculty of Graduate Studies},
+ subtitle = {\LaTeX{} thesis class for University of Calgary Faculty of Graduate Studies},
author = {Richard Zach},
date = {2019-10-24},
version = {},
@@ -71027,7 +71038,7 @@
@manual{ctan-ucthesis209,
title = {The \texttt{ucthesis209} package},
- subtitle = {LaTeX 2.09 document style for UC Theses},
+ subtitle = {\LaTeX{} 2.09 document style for UC Theses},
author = {Ethan V. Munson},
date = {2016-06-24},
version = {2.7},
@@ -71236,7 +71247,7 @@
@manual{ctan-uktug-bask,
title = {The \texttt{uktug-bask} package},
subtitle = {Old copies and sources of Baskerville},
- author = {{UK TeX Users Group}},
+ author = {{UK \TeX{} Users Group}},
date = {2017-04-18},
version = {},
license = {noinfo},
@@ -71480,7 +71491,7 @@
@manual{ctan-undergradmath,
title = {The \texttt{undergradmath} package},
- subtitle = {LaTeX Math for Undergraduates cheat sheet},
+ subtitle = {\LaTeX{} Math for Undergraduates cheat sheet},
author = {Jim Hefferon},
date = {2021-01-03},
version = {},
@@ -71685,7 +71696,7 @@
@manual{ctan-unicode-data,
title = {The \texttt{unicode-data} package},
subtitle = {Unicode data and loaders for \TeX{}},
- author = {Joseph Wright and {The LaTeX Project Team}},
+ author = {Joseph Wright and {The \LaTeX{} Project Team}},
date = {2022-09-17},
version = {1.16},
license = {lppl1.3c},
@@ -71741,7 +71752,7 @@
@manual{ctan-unigrazpub,
title = {The \texttt{unigrazpub} package},
- subtitle = {LaTeX templates for University of Graz Library Publishing Services},
+ subtitle = {\LaTeX{} templates for University of Graz Library Publishing Services},
author = {Marei Peischl},
date = {2022-10-16},
version = {1.00},
@@ -71781,7 +71792,7 @@
license = {gpl3+,fdl},
mirror = {https://mirror.ctan.org/macros/unicodetex/latex/unisc},
url = {https://ctan.org/pkg/unisc},
- annotation = {LaTeX produces small caps with
+ annotation = {\LaTeX{} produces small caps with
or .
Neither of these commands produce small caps in Unicode.
If the output text is copied and pasted somewhere
@@ -71789,7 +71800,7 @@
This package aims to internally convert all the characters
provided to the commands mentioned above.
It assumes that the file using this package is compiled
- with Lua/XeLaTeX and a good Unicode font which has the
+ with Lua/Xe\LaTeX{} and a good Unicode font which has the
small caps characters, e.g.,
.},
}
@@ -71828,7 +71839,7 @@
annotation = {A(n obsolete) package which used to provide a LuaLaTeX
based code for converting Unicode IPA input to T3 encoded
TIPA typefaces, but it is recommended to use
- with Xe/LuaLaTeX instead
+ with Xe/Lua\LaTeX{} instead
for a better output.},
}
@@ -71940,7 +71951,7 @@
@manual{ctan-unpacked,
title = {The \texttt{unpacked} package},
subtitle = {Unpacked copy of the \LaTeX{} sources},
- author = {{The LaTeX Project Team} and Frank Mittelbach and Leslie Lamport},
+ author = {{The \LaTeX{} Project Team} and Frank Mittelbach and Leslie Lamport},
date = {2017-04-18},
version = {},
license = {lppl},
@@ -72051,7 +72062,7 @@
@manual{ctan-uplatex,
title = {The \texttt{uplatex} package},
subtitle = {pLaTeX2e and miscellaneous macros for upTeX},
- author = {Kazuki Maeda and {Japanese TeX Development Community}},
+ author = {Kazuki Maeda and {Japanese \TeX{} Development Community}},
date = {2022-07-31},
version = {},
license = {bsd3},
@@ -72117,7 +72128,7 @@
@manual{ctan-uptex-base,
title = {The \texttt{uptex-base} package},
subtitle = {Plain \TeX{} formats and documents for upTeX},
- author = {Kazuki Maeda and Takuji Tanaka and {Japanese TeX Development Community}},
+ author = {Kazuki Maeda and Takuji Tanaka and {Japanese \TeX{} Development Community}},
date = {2022-07-31},
version = {},
license = {bsd3},
@@ -72130,7 +72141,7 @@
@manual{ctan-uptex-fonts,
title = {The \texttt{uptex-fonts} package},
subtitle = {Fonts for use with upTeX},
- author = {Kazuki Maeda and {Japanese TeX Development Community} and Takuji Tanaka},
+ author = {Kazuki Maeda and {Japanese \TeX{} Development Community} and Takuji Tanaka},
date = {2022-03-10},
version = {},
license = {bsd3},
@@ -72404,7 +72415,7 @@
@manual{ctan-usrguide,
title = {The \texttt{usrguide} package},
subtitle = {User-mode documentation for \LaTeX{}},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2019-10-04},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/base},
@@ -72610,7 +72621,7 @@
@manual{ctan-uwthesis209,
title = {The \texttt{uwthesis209} package},
- subtitle = {LaTeX 2.09 style for University of Washington theses},
+ subtitle = {\LaTeX{} 2.09 style for University of Washington theses},
author = {Jim Fox},
date = {2016-06-24},
version = {1.5},
@@ -72841,7 +72852,7 @@
@manual{ctan-vector,
title = {The \texttt{vector} package},
- subtitle = {LaTeX macros for vectors},
+ subtitle = {\LaTeX{} macros for vectors},
author = {Nick Efford},
date = {2016-06-24},
version = {1.0},
@@ -72940,7 +72951,7 @@
@manual{ctan-verbatim,
title = {The \texttt{verbatim} package},
subtitle = {Reimplementation of and extensions to \LaTeX{} verbatim},
- author = {Rainer Schöpf and {The LaTeX Project Team}},
+ author = {Rainer Schöpf and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.5u},
license = {lppl1.3c},
@@ -73830,7 +73841,7 @@
@manual{ctan-wasysym,
title = {The \texttt{wasysym} package},
- subtitle = {LaTeX support for the wasy fonts},
+ subtitle = {\LaTeX{} support for the wasy fonts},
author = {Axel Kielhorn},
date = {2020-02-02},
version = {2.4},
@@ -73890,7 +73901,7 @@
@manual{ctan-web2c,
title = {The \texttt{Web2C} package},
subtitle = {Conversion programs and supporting code to compile \TeX{} in C},
- author = {Olaf Weber and {The TeX Live Team}},
+ author = {Olaf Weber and {The \TeX{} Live Team}},
date = {2022-01-17},
license = {gpl},
url = {https://ctan.org/pkg/web2c},
@@ -74158,7 +74169,7 @@
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/biblatex-contrib/windycity},
url = {https://ctan.org/pkg/windycity},
- annotation = {Windy City is a style for BibLaTeX that formats notes,
+ annotation = {Windy City is a style for Bib\LaTeX{} that formats notes,
bibliographies, parenthetical citations, and reference lists
according to the 17th edition of .},
}
@@ -74304,14 +74315,14 @@
@manual{ctan-wnri-latex,
title = {The \texttt{wnri-latex} package},
- subtitle = {LaTeX support for wnri fonts},
+ subtitle = {\LaTeX{} support for wnri fonts},
author = {Anshuman Pandey},
date = {2018-01-06},
version = {1.0b},
license = {gpl2},
mirror = {https://mirror.ctan.org/macros/latex/contrib/wnri-latex},
url = {https://ctan.org/pkg/wnri-latex},
- annotation = {LaTeX support for the fonts.},
+ annotation = {\LaTeX{} support for the fonts.},
}
@manual{ctan-wnri,
@@ -74568,7 +74579,7 @@
@manual{ctan-wsemclassic,
title = {The \texttt{wsemclassic} package},
- subtitle = {LaTeX class for Bavarian school w-seminar papers},
+ subtitle = {\LaTeX{} class for Bavarian school w-seminar papers},
author = {Johannes Rosenberger},
date = {2017-04-18},
version = {1.0.1},
@@ -74705,7 +74716,7 @@
annotation = {This package provides an Unicode Math font
meant to be used together with
- (extension of Bitstream Charter) in LuaLaTeX or \XeLaTeX{} documents.},
+ (extension of Bitstream Charter) in Lua\LaTeX{} or \XeLaTeX{} documents.},
}
@manual{ctan-xcharter,
@@ -74772,7 +74783,7 @@
@manual{ctan-xcoffins,
title = {The \texttt{xcoffins} package},
subtitle = {Rich boxed material for \LaTeX{} 3},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-04-20},
version = {},
license = {lppl1.3c},
@@ -74815,7 +74826,7 @@
@manual{ctan-xcolor,
title = {The \texttt{xcolor} package},
subtitle = {Driver-independent color extensions for \LaTeX{} and pdfLaTeX},
- author = {Uwe Kern and {The LaTeX Project Team}},
+ author = {Uwe Kern and {The \LaTeX{} Project Team}},
date = {2022-06-12},
version = {2.14},
license = {lppl1.3c},
@@ -74881,7 +74892,7 @@
@manual{ctan-xduthesis,
title = {The \texttt{xduthesis} package},
- subtitle = {XeLaTeX template for writing Xidian University Thesis},
+ subtitle = {Xe\LaTeX{} template for writing Xidian University Thesis},
author = {Fei Qi},
date = {2022-04-09},
version = {1.00},
@@ -75109,7 +75120,7 @@
@manual{ctan-xetex-def,
title = {The \texttt{xetex-def} package},
subtitle = {Colour and graphics support for XeTeX},
- author = {Ross Moore and Jonathan Kew and {The LaTeX Project Team}},
+ author = {Ross Moore and Jonathan Kew and {The \LaTeX{} Project Team}},
date = {2022-09-23},
version = {5.0n},
license = {lppl1.3c},
@@ -75179,7 +75190,7 @@
@manual{ctan-xetex,
title = {The \texttt{xetex} package},
subtitle = {An extended variant of \TeX{} for use with Unicode sources},
- author = {Jonathan Kew and Arthur Rosendahl and Khaled Hosny and {The TeX Live Team}},
+ author = {Jonathan Kew and Arthur Rosendahl and Khaled Hosny and {The \TeX{} Live Team}},
date = {2022-01-25},
license = {x11},
url = {https://ctan.org/pkg/xetex},
@@ -75269,7 +75280,7 @@
@manual{ctan-xfp,
title = {The \texttt{xfp} package},
subtitle = {Interface to the \LaTeX{}3 floating point unit},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-22},
version = {},
license = {lppl1.3c},
@@ -75291,7 +75302,7 @@
@manual{ctan-xgalley,
title = {The \texttt{xgalley} package},
subtitle = {Control text feeding onto the page},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-04-20},
version = {},
license = {lppl1.3c},
@@ -75519,7 +75530,7 @@
@manual{ctan-xlatex,
title = {The \texttt{xlatex} package},
- subtitle = {A \TeX{}/LaTeX shell for X-windows},
+ subtitle = {A \TeX{}/\LaTeX{} shell for X-windows},
author = {Mario Dragone},
date = {2016-06-24},
version = {3.3c},
@@ -75662,7 +75673,7 @@
@manual{ctan-xparse,
title = {The \texttt{xparse} package},
subtitle = {A generic document command parser},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-22},
version = {},
license = {lppl1.3c},
@@ -75804,7 +75815,7 @@
@manual{ctan-xr,
title = {The \texttt{xr} package},
subtitle = {References to other \LaTeX{} documents},
- author = {David Carlisle and Jean-Pierre Drucbert and {The LaTeX Project Team}},
+ author = {David Carlisle and Jean-Pierre Drucbert and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {5.06},
license = {lppl1.3c},
@@ -75864,7 +75875,7 @@
@manual{ctan-xspace,
title = {The \texttt{xspace} package},
subtitle = {Define commands that appear not to eat spaces},
- author = {David Carlisle and Morten Høgholm and {The LaTeX Project Team}},
+ author = {David Carlisle and Morten Høgholm and {The \LaTeX{} Project Team}},
date = {2021-06-01},
version = {1.13},
license = {lppl1.3c},
@@ -75927,7 +75938,7 @@
@manual{ctan-xtemplate,
title = {The \texttt{xtemplate} package},
subtitle = {A high-level interface for declaring document commands},
- author = {{The LaTeX Project Team}},
+ author = {{The \LaTeX{} Project Team}},
date = {2022-06-22},
version = {},
license = {lppl1.3c},
@@ -76526,7 +76537,7 @@
@manual{ctan-zblbuild,
title = {The \texttt{zblbuild} package},
- subtitle = {Help with the choice of a BibLaTeX style and options},
+ subtitle = {Help with the choice of a Bib\LaTeX{} style and options},
author = {Guido Milanese},
date = {2019-08-28},
version = {0.1c},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index 7d138f2943..65d884185a 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/fonts/cooperhewitt/README b/fonts/cooperhewitt/README
new file mode 100644
index 0000000000..bd9ecfb48c
--- /dev/null
+++ b/fonts/cooperhewitt/README
@@ -0,0 +1,69 @@
+This is the README for the CooperHewitt package, version 2022-10-18.
+
+This package provides LaTeX, pdfLaTeX, XeLaTeX and LuaLaTeX
+support for the Cooper Hewitt family of sans serif fonts,
+designed by Chester Jenkins.
+
+Cooper Hewitt is a contemporary sans serif, with characters
+composed of modified-geometric curves and arches. Initially
+commissioned by Pentagram to evolve his Polaris Condensed
+typeface, Chester Jenkins created a new digital form to
+support the newly transformed Smithsonian Design Museum.
+
+To install this package on a TDS-compliant
+TeX system download the file
+"tex-archive"/install/fonts/cooperhewitt.tds.zip,
+where the preferred URL for "tex-archive" is
+http://mirror.ctan.org. Unzip the archive at the root of
+an appropriate texmf tree, likely a personal or local
+tree. If necessary, update the file-name database (e.g.,
+texhash). Update the font-map files by enabling the Map file
+CooperHewitt.map.
+
+To use, add
+
+\usepackage{CooperHewitt}
+
+to the preamble of your document. This makes Cooper Hewitt
+the default sans family. To also set Cooper Hewitt as the
+main text font, use
+
+\usepackage[sfdefault]{CooperHewitt}
+
+LuaLaTeX and xeLaTeX users who might prefer type1 fonts or
+who wish to avoid fontspec may use the type1 option.
+
+Other options include:
+
+semibold
+heavy
+
+medium
+light
+thin
+
+Defaults are book and bold.
+
+Options scaled=<number> or scale=<number> may be used to adjust
+fontsizes to match a serifed font.
+
+Slanted variants are not supported; the designed italic
+variants will be automatically substituted. The only figure
+style supported is tabular-lining. Font encodings supported
+are OT1, T1, TS1, LY1.
+
+Macro \cooperhewitt selects the Cooper Hewitt font family.
+
+The original fonts are available at
+https://www.cooperhewitt.org/open-source-at-cooper-hewitt/cooper-hewitt-the-typeface-by-chester-jenkins/
+
+and are licensed under the SIL Open Font License,
+(version 1.1); the text may be found in the doc directory.
+The type1 versions were created using cfftot1 and re-named
+in accordance with the Reserved Font Name clause of the
+licence.
+
+The support files were created using autoinst
+and are licensed under the terms of the LaTeX Project Public
+License. The maintainer of this package is Bob Tennent (rdt
+at cs.queensu.ca)
diff --git a/fonts/cooperhewitt/doc/OFL.txt b/fonts/cooperhewitt/doc/OFL.txt
new file mode 100644
index 0000000000..fd6c6858b3
--- /dev/null
+++ b/fonts/cooperhewitt/doc/OFL.txt
@@ -0,0 +1,45 @@
+Copyright (c) 2014, Cooper Hewitt Smithsonian Design Museum (cooperhewitt.org), with Reserved Font Name Cooper Hewitt.
+
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/fonts/cooperhewitt/doc/cooperhewitt-samples.pdf b/fonts/cooperhewitt/doc/cooperhewitt-samples.pdf
new file mode 100644
index 0000000000..64d04d87f4
--- /dev/null
+++ b/fonts/cooperhewitt/doc/cooperhewitt-samples.pdf
Binary files differ
diff --git a/fonts/cooperhewitt/doc/cooperhewitt-samples.tex b/fonts/cooperhewitt/doc/cooperhewitt-samples.tex
new file mode 100644
index 0000000000..39c239f1b1
--- /dev/null
+++ b/fonts/cooperhewitt/doc/cooperhewitt-samples.tex
@@ -0,0 +1,31 @@
+\documentclass{article}
+\usepackage[T1]{fontenc}
+\usepackage[sfdefault]{CooperHewitt}
+\usepackage{textcomp}
+\usepackage{lipsum}
+\begin{document}
+
+\subsection*{Regular}
+\lipsum[1]
+
+\subsection*{Italic}
+\textit{\lipsum[2]}
+
+\subsection*{Bold}
+
+\textbf{\lipsum[3]}
+
+\subsection*{Bold Italic}
+
+\textbf{\textit{\lipsum[4]}}
+
+\subsection*{Numbers}
+
+0123456789
+
+\subsection*{Superior Numbers}
+
+X\textsu{1234567890}
+
+
+\end{document}
diff --git a/fonts/cooperhewitt/enc/cphwt_4je6jj.enc b/fonts/cooperhewitt/enc/cphwt_4je6jj.enc
new file mode 100644
index 0000000000..5b77ecbe67
--- /dev/null
+++ b/fonts/cooperhewitt/enc/cphwt_4je6jj.enc
@@ -0,0 +1,63 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_4je6jjhrg5rho5ondun56s3l5g
+% Encoding created by otftotfm on Tue Oct 18 11:30:58 2022
+% Command line follows encoding
+/AutoEnc_4je6jjhrg5rho5ondun56s3l5g [
+%00
+ /grave /acute /circumflex /tilde /dieresis /hungarumlaut /ring /caron
+ /breve /macron /dotaccent /cedilla /ogonek /quotesinglbase /guilsinglleft /guilsinglright
+%10
+ /quotedblleft /quotedblright /quotedblbase /guillemotleft /guillemotright /endash /emdash /period.T
+ /comma.T /dotlessi /dotlessj /colon.T /semicolon.T /.notdef /.notdef /.notdef
+%20
+ /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+%40
+ /at /A /B /C /D /E /F /G
+ /H /I /J /K /L /M /N /O
+%50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+%60
+ /quoteleft /a /b /c /d /e /f /g
+ /h /i /j /k /l /m /n /o
+%70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /asciitilde /hyphen
+%80
+ /Abreve /Aogonek /Cacute /Ccaron /Dcaron /Ecaron /Eogonek /Gbreve
+ /Lacute /Lcaron /Lslash /Nacute /Ncaron /Eng /Ohungarumlaut /Racute
+%90
+ /Rcaron /Sacute /Scaron /Scedilla /Tcaron /Tcommaaccent /Uhungarumlaut /Uring
+ /Ydieresis /Zacute /Zcaron /Zdotaccent /IJ /Idotaccent /dcroat /section
+%A0
+ /abreve /aogonek /cacute /ccaron /dcaron /ecaron /eogonek /gbreve
+ /lacute /lcaron /lslash /nacute /ncaron /eng /ohungarumlaut /racute
+%B0
+ /rcaron /sacute /scaron /scedilla /tcaron /tcommaaccent /uhungarumlaut /uring
+ /ydieresis /zacute /zcaron /zdotaccent /ij /exclamdown /questiondown /sterling
+%C0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+%D0
+ /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /OE
+ /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /.notdef
+%E0
+ /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+%F0
+ /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /oe
+ /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /germandbls
+] def
+% Command line: 'otftotfm --automatic --encoding=fontools_t1
+% --tfm-directory=texmf/fonts/tfm/public/cooperhewitt
+% --vf-directory=texmf/fonts/vf/public/cooperhewitt
+% --type1-directory=texmf/fonts/type1/public/cooperhewitt
+% --encoding-directory=texmf/fonts/enc/dvips/cooperhewitt
+% --map-file=texmf/fonts/map/dvips/cooperhewitt/CpHwt.map --no-updmap
+% --force --coding-scheme=EXTENDED TEX FONT ENCODING - LATIN --feature=kern
+% --feature=tnum CpHwt-BoldItalic.otf CpHwt-BoldItalic-tlf-t1'
diff --git a/fonts/cooperhewitt/enc/cphwt_kvtx4d.enc b/fonts/cooperhewitt/enc/cphwt_kvtx4d.enc
new file mode 100644
index 0000000000..4b214671e5
--- /dev/null
+++ b/fonts/cooperhewitt/enc/cphwt_kvtx4d.enc
@@ -0,0 +1,63 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_kvtx4dqkzszapznbigqwwrppgc
+% Encoding created by otftotfm on Tue Oct 18 11:30:58 2022
+% Command line follows encoding
+/AutoEnc_kvtx4dqkzszapznbigqwwrppgc [
+%00
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /cedilla /ogonek /quotesinglbase /asterisk /C
+%10
+ /bar /endash /quotedblbase /.notdef /.notdef /.notdef /.notdef /.notdef
+ /arrowleft /arrowright /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%20
+ /.notdef /.notdef /.notdef /.notdef /dollar /.notdef /.notdef /quotesingle
+ /.notdef /.notdef /.notdef /.notdef /comma /.notdef /period /fraction
+%30
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /minus /.notdef /.notdef
+%40
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%50
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /arrowup /arrowdown
+%60
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%70
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%80
+ /.notdef /.notdef /.notdef /.notdef /dagger /daggerdbl /.notdef /perthousand
+ /bullet /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%90
+ /.notdef /.notdef /.notdef /.notdef /interrobang /interrobangdown /.notdef /trademark
+ /.notdef /.notdef /.notdef /numero /.notdef /.notdef /.notdef /servicemark
+%A0
+ /.notdef /.notdef /cent /sterling /.notdef /yen /brokenbar /section
+ /.notdef /copyright /ordfeminine /.notdef /logicalnot /.notdef /registered /.notdef
+%B0
+ /degree /plusminus /twosuperior /threesuperior /.notdef /.notdef /paragraph /periodcentered
+ /.notdef /onesuperior /ordmasculine /.notdef /onequarter /onehalf /threequarters /Euro
+%C0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%D0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /multiply /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%E0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%F0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /divide /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+% Command line: 'otftotfm --automatic --encoding=fontools_ts1
+% --tfm-directory=texmf/fonts/tfm/public/cooperhewitt
+% --vf-directory=texmf/fonts/vf/public/cooperhewitt
+% --type1-directory=texmf/fonts/type1/public/cooperhewitt
+% --encoding-directory=texmf/fonts/enc/dvips/cooperhewitt
+% --map-file=texmf/fonts/map/dvips/cooperhewitt/CpHwt.map --no-updmap
+% --force --coding-scheme=TEX TEXT COMPANION SYMBOLS 1---TS1 --feature=tnum
+% CpHwt-BoldItalic.otf CpHwt-BoldItalic-tlf-ts1'
diff --git a/fonts/cooperhewitt/enc/cphwt_psuovm.enc b/fonts/cooperhewitt/enc/cphwt_psuovm.enc
new file mode 100644
index 0000000000..e3acc7f5c8
--- /dev/null
+++ b/fonts/cooperhewitt/enc/cphwt_psuovm.enc
@@ -0,0 +1,63 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_psuovm3gjjamdhizenqb7sazic
+% Encoding created by otftotfm on Tue Oct 18 11:30:58 2022
+% Command line follows encoding
+/AutoEnc_psuovm3gjjamdhizenqb7sazic [
+%00
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%10
+ /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+ /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%20
+ /space /exclam /quotedblright /numbersign /dollar /percent /ampersand /quoteright
+ /uni207D /uni207E /asterisk /uni207A /comma /hyphen /period /slash
+%30
+ /uni2070 /onesuperior /twosuperior /threesuperior /uni2074 /uni2075 /uni2076 /uni2077
+ /uni2078 /uni2079 /colon /semicolon /exclamdown /uni207C /questiondown /question
+%40
+ /at /A /B /C /D /E /F /G
+ /H /I /J /K /L /M /N /O
+%50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%60
+ /quoteleft /a /b /c /d /e /f /g
+ /h /i /j /k /l /m /n /o
+%70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%80
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /Lslash /.notdef /.notdef /.notdef /.notdef /.notdef
+%90
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%A0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /lslash /.notdef /.notdef /.notdef /.notdef /.notdef
+%B0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%C0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%D0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%E0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%F0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+% Command line: 'otftotfm --automatic --encoding=fontools_ot1
+% --tfm-directory=texmf/fonts/tfm/public/cooperhewitt
+% --vf-directory=texmf/fonts/vf/public/cooperhewitt
+% --type1-directory=texmf/fonts/type1/public/cooperhewitt
+% --encoding-directory=texmf/fonts/enc/dvips/cooperhewitt
+% --map-file=texmf/fonts/map/dvips/cooperhewitt/CpHwt.map --no-updmap
+% --force --coding-scheme=TEX TEXT --feature=sups --ligkern=* {KL} *
+% CpHwt-BoldItalic.otf CpHwt-BoldItalic-sup-ot1'
diff --git a/fonts/cooperhewitt/enc/cphwt_r6y6f6.enc b/fonts/cooperhewitt/enc/cphwt_r6y6f6.enc
new file mode 100644
index 0000000000..c5b1aa6636
--- /dev/null
+++ b/fonts/cooperhewitt/enc/cphwt_r6y6f6.enc
@@ -0,0 +1,63 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb
+% Encoding created by otftotfm on Tue Oct 18 11:30:58 2022
+% Command line follows encoding
+/AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb [
+%00
+ /.notdef /Euro /.notdef /.notdef /fraction /dotaccent /hungarumlaut /ogonek
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%10
+ /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+ /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%20
+ /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+ /uni207D /uni207E /asterisk /uni207A /comma /hyphen /period /slash
+%30
+ /uni2070 /onesuperior /twosuperior /threesuperior /uni2074 /uni2075 /uni2076 /uni2077
+ /uni2078 /uni2079 /colon /semicolon /less /uni207C /greater /question
+%40
+ /at /A /B /C /D /E /F /G
+ /H /I /J /K /L /M /N /O
+%50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /circumflex /underscore
+%60
+ /quoteleft /a /b /c /d /e /f /g
+ /h /i /j /k /l /m /n /o
+%70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /tilde /dieresis
+%80
+ /Lslash /quotesingle /quotesinglbase /.notdef /quotedblbase /ellipsis /dagger /daggerdbl
+ /circumflex /perthousand /Scaron /guilsinglleft /OE /Zcaron /asciicircum /uni207B
+%90
+ /lslash /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
+ /tilde /trademark /scaron /guilsinglright /oe /zcaron /asciitilde /Ydieresis
+%A0
+ /nbspace /exclamdown /cent /sterling /.notdef /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /uni00AD /registered /macron
+%B0
+ /degree /plusminus /twosuperior /threesuperior /acute /.notdef /paragraph /periodcentered
+ /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+%C0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+%D0
+ /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+%E0
+ /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+%F0
+ /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+ /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+% Command line: 'otftotfm --automatic --encoding=fontools_ly1
+% --tfm-directory=texmf/fonts/tfm/public/cooperhewitt
+% --vf-directory=texmf/fonts/vf/public/cooperhewitt
+% --type1-directory=texmf/fonts/type1/public/cooperhewitt
+% --encoding-directory=texmf/fonts/enc/dvips/cooperhewitt
+% --map-file=texmf/fonts/map/dvips/cooperhewitt/CpHwt.map --no-updmap
+% --force --coding-scheme=TEX TYPEWRITER AND WINDOWS ANSI --feature=sups
+% --ligkern=* {KL} * CpHwt-BoldItalic.otf CpHwt-BoldItalic-sup-ly1'
diff --git a/fonts/cooperhewitt/enc/cphwt_sz67he.enc b/fonts/cooperhewitt/enc/cphwt_sz67he.enc
new file mode 100644
index 0000000000..3423ccbd7c
--- /dev/null
+++ b/fonts/cooperhewitt/enc/cphwt_sz67he.enc
@@ -0,0 +1,63 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_sz67heartqwluzyqi65ifbmpba
+% Encoding created by otftotfm on Tue Oct 18 11:30:58 2022
+% Command line follows encoding
+/AutoEnc_sz67heartqwluzyqi65ifbmpba [
+%00
+ /period.T /Euro /comma.T /colon.T /fraction /dotaccent /hungarumlaut /ogonek
+ /semicolon.T /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%10
+ /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+ /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%20
+ /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+%40
+ /at /A /B /C /D /E /F /G
+ /H /I /J /K /L /M /N /O
+%50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /circumflex /underscore
+%60
+ /quoteleft /a /b /c /d /e /f /g
+ /h /i /j /k /l /m /n /o
+%70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /tilde /dieresis
+%80
+ /Lslash /quotesingle /quotesinglbase /.notdef /quotedblbase /ellipsis /dagger /daggerdbl
+ /circumflex /perthousand /Scaron /guilsinglleft /OE /Zcaron /asciicircum /minus
+%90
+ /lslash /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
+ /tilde /trademark /scaron /guilsinglright /oe /zcaron /asciitilde /Ydieresis
+%A0
+ /nbspace /exclamdown /cent /sterling /.notdef /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /uni00AD /registered /macron
+%B0
+ /degree /plusminus /twosuperior /threesuperior /acute /.notdef /paragraph /periodcentered
+ /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+%C0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+%D0
+ /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+%E0
+ /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+%F0
+ /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+ /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+% Command line: 'otftotfm --automatic --encoding=fontools_ly1
+% --tfm-directory=texmf/fonts/tfm/public/cooperhewitt
+% --vf-directory=texmf/fonts/vf/public/cooperhewitt
+% --type1-directory=texmf/fonts/type1/public/cooperhewitt
+% --encoding-directory=texmf/fonts/enc/dvips/cooperhewitt
+% --map-file=texmf/fonts/map/dvips/cooperhewitt/CpHwt.map --no-updmap
+% --force --coding-scheme=TEX TYPEWRITER AND WINDOWS ANSI --feature=kern
+% --feature=tnum CpHwt-BoldItalic.otf CpHwt-BoldItalic-tlf-ly1'
diff --git a/fonts/cooperhewitt/enc/cphwt_tjvrzf.enc b/fonts/cooperhewitt/enc/cphwt_tjvrzf.enc
new file mode 100644
index 0000000000..9d9b7c20eb
--- /dev/null
+++ b/fonts/cooperhewitt/enc/cphwt_tjvrzf.enc
@@ -0,0 +1,63 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_tjvrzfjktdse4xvrynccsg3p5f
+% Encoding created by otftotfm on Tue Oct 18 11:30:58 2022
+% Command line follows encoding
+/AutoEnc_tjvrzfjktdse4xvrynccsg3p5f [
+%00
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%10
+ /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
+ /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+%20
+ /space /exclam /quotedblright /numbersign /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+%30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+%40
+ /at /A /B /C /D /E /F /G
+ /H /I /J /K /L /M /N /O
+%50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+%60
+ /quoteleft /a /b /c /d /e /f /g
+ /h /i /j /k /l /m /n /o
+%70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
+%80
+ /period.T /comma.T /colon.T /semicolon.T /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /Lslash /.notdef /.notdef /.notdef /.notdef /.notdef
+%90
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%A0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /lslash /.notdef /.notdef /.notdef /.notdef /.notdef
+%B0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%C0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%D0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%E0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+%F0
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+% Command line: 'otftotfm --automatic --encoding=fontools_ot1
+% --tfm-directory=texmf/fonts/tfm/public/cooperhewitt
+% --vf-directory=texmf/fonts/vf/public/cooperhewitt
+% --type1-directory=texmf/fonts/type1/public/cooperhewitt
+% --encoding-directory=texmf/fonts/enc/dvips/cooperhewitt
+% --map-file=texmf/fonts/map/dvips/cooperhewitt/CpHwt.map --no-updmap
+% --force --coding-scheme=TEX TEXT --feature=kern --feature=tnum
+% CpHwt-BoldItalic.otf CpHwt-BoldItalic-tlf-ot1'
diff --git a/fonts/cooperhewitt/enc/cphwt_vrwj46.enc b/fonts/cooperhewitt/enc/cphwt_vrwj46.enc
new file mode 100644
index 0000000000..ffa7e81b3f
--- /dev/null
+++ b/fonts/cooperhewitt/enc/cphwt_vrwj46.enc
@@ -0,0 +1,63 @@
+% THIS FILE WAS AUTOMATICALLY GENERATED -- DO NOT EDIT
+
+%%AutoEnc_vrwj46cosxt3klcjg4yn2zodlg
+% Encoding created by otftotfm on Tue Oct 18 11:30:58 2022
+% Command line follows encoding
+/AutoEnc_vrwj46cosxt3klcjg4yn2zodlg [
+%00
+ /grave /acute /circumflex /tilde /dieresis /hungarumlaut /ring /caron
+ /breve /macron /dotaccent /cedilla /ogonek /quotesinglbase /guilsinglleft /guilsinglright
+%10
+ /quotedblleft /quotedblright /quotedblbase /guillemotleft /guillemotright /endash /emdash /.notdef
+ /.notdef /dotlessi /dotlessj /.notdef /.notdef /.notdef /.notdef /.notdef
+%20
+ /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+ /uni207D /uni207E /asterisk /uni207A /comma /hyphen /period /slash
+%30
+ /uni2070 /onesuperior /twosuperior /threesuperior /uni2074 /uni2075 /uni2076 /uni2077
+ /uni2078 /uni2079 /colon /semicolon /less /uni207C /greater /question
+%40
+ /at /A /B /C /D /E /F /G
+ /H /I /J /K /L /M /N /O
+%50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+%60
+ /quoteleft /a /b /c /d /e /f /g
+ /h /i /j /k /l /m /n /o
+%70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /asciitilde /hyphen
+%80
+ /Abreve /Aogonek /Cacute /Ccaron /Dcaron /Ecaron /Eogonek /Gbreve
+ /Lacute /Lcaron /Lslash /Nacute /Ncaron /Eng /Ohungarumlaut /Racute
+%90
+ /Rcaron /Sacute /Scaron /Scedilla /Tcaron /Tcommaaccent /Uhungarumlaut /Uring
+ /Ydieresis /Zacute /Zcaron /Zdotaccent /IJ /Idotaccent /dcroat /section
+%A0
+ /abreve /aogonek /cacute /ccaron /dcaron /ecaron /eogonek /gbreve
+ /lacute /lcaron /lslash /nacute /ncaron /eng /ohungarumlaut /racute
+%B0
+ /rcaron /sacute /scaron /scedilla /tcaron /tcommaaccent /uhungarumlaut /uring
+ /ydieresis /zacute /zcaron /zdotaccent /ij /exclamdown /questiondown /sterling
+%C0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+%D0
+ /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /OE
+ /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /.notdef
+%E0
+ /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+%F0
+ /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /oe
+ /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /germandbls
+] def
+% Command line: 'otftotfm --automatic --encoding=fontools_t1
+% --tfm-directory=texmf/fonts/tfm/public/cooperhewitt
+% --vf-directory=texmf/fonts/vf/public/cooperhewitt
+% --type1-directory=texmf/fonts/type1/public/cooperhewitt
+% --encoding-directory=texmf/fonts/enc/dvips/cooperhewitt
+% --map-file=texmf/fonts/map/dvips/cooperhewitt/CpHwt.map --no-updmap
+% --force --coding-scheme=EXTENDED TEX FONT ENCODING - LATIN --feature=sups
+% --ligkern=* {KL} * CpHwt-BoldItalic.otf CpHwt-BoldItalic-sup-t1'
diff --git a/fonts/cooperhewitt/latex/CooperHewitt.sty b/fonts/cooperhewitt/latex/CooperHewitt.sty
new file mode 100644
index 0000000000..3b3c965ff0
--- /dev/null
+++ b/fonts/cooperhewitt/latex/CooperHewitt.sty
@@ -0,0 +1,121 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{CooperHewitt}
+ [2022/10/18 (Bob Tennent) Supports Cooper Hewitt fonts for all LaTeX engines.]
+
+\RequirePackage{ifxetex,ifluatex,xkeyval,textcomp}
+\newif\ifcphwt@otf
+\ifxetex
+ \cphwt@otftrue
+\else\ifluatex
+ \cphwt@otftrue
+\else % [pdf]LaTeX
+ \cphwt@otffalse
+\fi\fi
+
+\newif\ifcphwt@default \cphwt@defaultfalse
+\newif\ifcphwt@semibold \cphwt@semiboldfalse
+\newif\ifcphwt@medium \cphwt@mediumfalse
+\newif\ifcphwt@heavy \cphwt@heavyfalse
+\newif\ifcphwt@thin \cphwt@thinfalse
+\newif\ifcphwt@light \cphwt@lightfalse
+
+\newcommand*{\CpHwt@scale}{1}
+\DeclareOptionX{scale}{\renewcommand*{\CpHwt@scale}{#1}}
+\DeclareOptionX{scaled}{\renewcommand*{\CpHwt@scale}{#1}}
+
+\DeclareOptionX{default}{\cphwt@defaulttrue}
+\DeclareOptionX{sfdefault}{\cphwt@defaulttrue}
+\DeclareOptionX{type1}{\cphwt@otffalse}
+
+\DeclareOptionX{semibold}{\cphwt@semiboldtrue}
+\DeclareOptionX{heavy}{\cphwt@heavytrue}
+\DeclareOptionX{medium}{\cphwt@mediumtrue}
+\DeclareOptionX{thin}{\cphwt@thintrue}
+\DeclareOptionX{light}{\cphwt@lighttrue}
+
+\ProcessOptionsX\relax
+
+\ifcphwt@otf
+
+ \def\cphwt@boldstyle{Bold}
+ \ifcphwt@semibold\def\cphwt@boldstyle{SemiBold}\fi
+ \ifcphwt@heavy\def\cphwt@boldstyle{Heavy}\fi
+ \def\cphwt@regstyle{Book}
+ \ifcphwt@medium\def\cphwt@regstyle{Medium}\fi
+ \ifcphwt@thin\def\cphwt@regstyle{Thin}\fi
+ \ifcphwt@light\def\cphwt@regstyle{Light}\fi
+
+\else % type1
+
+\IfFileExists{fontaxes.sty}{
+ \RequirePackage{fontaxes}
+ \fa@naming@exception{figures}{{superior}{proportional}}{Sup}
+ \fa@naming@exception{figures}{{superior}{tabular}}{Sup}
+ \def\supfigures{\@nomath\supfigures
+ \fontfigurestyle{superior}\selectfont}
+ \let\sufigures\supfigures
+ \let\textsu\textsup
+ \let\textsuperior\textsup
+
+}{}
+
+ \def\bfseries@sf{bold}
+ \ifcphwt@semibold\def\bfseries@sf{semibold}\fi
+ \ifcphwt@heavy\def\bfseries@sf{heavy}\fi
+ \def\mdseries@sf{book}
+ \ifcphwt@medium\def\mdseries@sf{medium}\fi
+ \ifcphwt@thin\def\mdseries@sf{thin}\fi
+ \ifcphwt@light\def\mdseries@sf{light}\fi
+\fi
+
+\ifcphwt@otf
+ \RequirePackage{fontspec}
+\else
+ \RequirePackage{fontenc,fontaxes,mweights}
+\fi
+
+\ifcphwt@otf
+
+ \defaultfontfeatures{
+ Ligatures = TeX ,
+ Scale = \CpHwt@scale ,
+ Extension = .otf }
+ \setsansfont
+ [ UprightFont = *-\cphwt@regstyle ,
+ ItalicFont = *-\cphwt@regstyle Italic ,
+ BoldFont = *-\cphwt@boldstyle ,
+ BoldItalicFont = *-\cphwt@boldstyle Italic ]
+ {CooperHewitt}
+
+% grab current family in case of subsequent change:
+ \let\cphwtfamily\sfdefault
+ \ifcphwt@default\renewcommand*\familydefault{\cphwtfamily}\fi
+
+ \newfontfamily\cooperhewitt
+ [ UprightFont = *-\cphwt@regstyle ,
+ ItalicFont = *-\cphwt@regstyle Italic ,
+ BoldFont = *-\cphwt@boldstyle ,
+ BoldItalicFont = *-\cphwt@boldstyle Italic ]
+ {CooperHewitt}
+
+ \providecommand\sufigures{\addfontfeatures{VerticalPosition=Superior}}
+
+
+\else % type1
+
+ \def\cphwtfamily{CpHwt-TLF}
+ \newcommand*\cooperhewitt{\fontfamily{\cphwtfamily}\selectfont}
+ \def\sfdefault{\cphwtfamily}
+ \ifcphwt@default\edef\familydefault{\sfdefault}\edef\seriesdefault{\mdseries@sf}\fi
+
+\fi
+
+\DeclareTextFontCommand{\textsu}{\sufigures}
+
+\ifcphwt@otf
+% turn off defaults in case other fonts are selected:
+ \defaultfontfeatures{}
+\fi
+
+
+\endinput
diff --git a/fonts/cooperhewitt/latex/LY1CpHwt-Sup.fd b/fonts/cooperhewitt/latex/LY1CpHwt-Sup.fd
new file mode 100644
index 0000000000..cfd4d82d57
--- /dev/null
+++ b/fonts/cooperhewitt/latex/LY1CpHwt-Sup.fd
@@ -0,0 +1,214 @@
+%% Generated by autoinst on 2022/10/18
+%%
+\ProvidesFile{LY1CpHwt-Sup.fd}
+ [2022/10/18 (autoinst) Font definitions for LY1/CpHwt-Sup.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname CpHwt@scale\endcsname\relax
+ \let\CpHwt@@scale\@empty
+\else
+ \edef\CpHwt@@scale{s*[\csname CpHwt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{CpHwt-Sup}{}
+
+
+% ---- el = thin ----
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{el}{n}{
+ <-> \CpHwt@@scale CpHwt-Thin-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{thin}{n}{
+ <-> alias * CpHwt-Sup/el/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{el}{it}{
+ <-> \CpHwt@@scale CpHwt-ThinItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{thin}{it}{
+ <-> alias * CpHwt-Sup/el/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{el}{sl}{
+ <-> ssub * CpHwt-Sup/el/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{thin}{sl}{
+ <-> ssub * CpHwt-Sup/thin/it
+}{}
+
+
+% ---- l = light ----
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{l}{it}{
+ <-> \CpHwt@@scale CpHwt-LightItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{light}{it}{
+ <-> alias * CpHwt-Sup/l/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{l}{n}{
+ <-> \CpHwt@@scale CpHwt-Light-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{light}{n}{
+ <-> alias * CpHwt-Sup/l/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{l}{sl}{
+ <-> ssub * CpHwt-Sup/l/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{light}{sl}{
+ <-> ssub * CpHwt-Sup/light/it
+}{}
+
+
+% ---- medium ----
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{medium}{it}{
+ <-> \CpHwt@@scale CpHwt-MediumItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{medium}{n}{
+ <-> \CpHwt@@scale CpHwt-Medium-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{medium}{sl}{
+ <-> ssub * CpHwt-Sup/medium/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{b}{n}{
+ <-> \CpHwt@@scale CpHwt-Bold-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{bold}{n}{
+ <-> alias * CpHwt-Sup/b/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{b}{it}{
+ <-> \CpHwt@@scale CpHwt-BoldItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{bold}{it}{
+ <-> alias * CpHwt-Sup/b/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{b}{sl}{
+ <-> ssub * CpHwt-Sup/b/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{bold}{sl}{
+ <-> ssub * CpHwt-Sup/bold/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{sb}{it}{
+ <-> \CpHwt@@scale CpHwt-SemiboldItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{semibold}{it}{
+ <-> alias * CpHwt-Sup/sb/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{sb}{n}{
+ <-> \CpHwt@@scale CpHwt-Semibold-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{semibold}{n}{
+ <-> alias * CpHwt-Sup/sb/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{sb}{sl}{
+ <-> ssub * CpHwt-Sup/sb/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{semibold}{sl}{
+ <-> ssub * CpHwt-Sup/semibold/it
+}{}
+
+
+% ---- eb = heavy ----
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{eb}{it}{
+ <-> \CpHwt@@scale CpHwt-HeavyItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{heavy}{it}{
+ <-> alias * CpHwt-Sup/eb/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{eb}{n}{
+ <-> \CpHwt@@scale CpHwt-Heavy-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{heavy}{n}{
+ <-> alias * CpHwt-Sup/eb/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{eb}{sl}{
+ <-> ssub * CpHwt-Sup/eb/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{heavy}{sl}{
+ <-> ssub * CpHwt-Sup/heavy/it
+}{}
+
+
+% ---- m = book ----
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{m}{n}{
+ <-> \CpHwt@@scale CpHwt-Book-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{book}{n}{
+ <-> alias * CpHwt-Sup/m/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{m}{it}{
+ <-> \CpHwt@@scale CpHwt-BookItalic-sup-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{book}{it}{
+ <-> alias * CpHwt-Sup/m/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{m}{sl}{
+ <-> ssub * CpHwt-Sup/m/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{book}{sl}{
+ <-> ssub * CpHwt-Sup/book/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{bx}{n}{
+ <-> ssub * CpHwt-Sup/b/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{bx}{sl}{
+ <-> ssub * CpHwt-Sup/b/sl
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-Sup}{bx}{it}{
+ <-> ssub * CpHwt-Sup/b/it
+}{}
+
+\endinput
diff --git a/fonts/cooperhewitt/latex/LY1CpHwt-TLF.fd b/fonts/cooperhewitt/latex/LY1CpHwt-TLF.fd
new file mode 100644
index 0000000000..91826a2ddc
--- /dev/null
+++ b/fonts/cooperhewitt/latex/LY1CpHwt-TLF.fd
@@ -0,0 +1,214 @@
+%% Generated by autoinst on 2022/10/18
+%%
+\ProvidesFile{LY1CpHwt-TLF.fd}
+ [2022/10/18 (autoinst) Font definitions for LY1/CpHwt-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname CpHwt@scale\endcsname\relax
+ \let\CpHwt@@scale\@empty
+\else
+ \edef\CpHwt@@scale{s*[\csname CpHwt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{LY1}{CpHwt-TLF}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{b}{it}{
+ <-> \CpHwt@@scale CpHwt-BoldItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{bold}{it}{
+ <-> alias * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{b}{n}{
+ <-> \CpHwt@@scale CpHwt-Bold-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{bold}{n}{
+ <-> alias * CpHwt-TLF/b/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{b}{sl}{
+ <-> ssub * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{bold}{sl}{
+ <-> ssub * CpHwt-TLF/bold/it
+}{}
+
+
+% ---- medium ----
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{medium}{it}{
+ <-> \CpHwt@@scale CpHwt-MediumItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{medium}{n}{
+ <-> \CpHwt@@scale CpHwt-Medium-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{medium}{sl}{
+ <-> ssub * CpHwt-TLF/medium/it
+}{}
+
+
+% ---- eb = heavy ----
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{eb}{n}{
+ <-> \CpHwt@@scale CpHwt-Heavy-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{heavy}{n}{
+ <-> alias * CpHwt-TLF/eb/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{eb}{it}{
+ <-> \CpHwt@@scale CpHwt-HeavyItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{heavy}{it}{
+ <-> alias * CpHwt-TLF/eb/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{eb}{sl}{
+ <-> ssub * CpHwt-TLF/eb/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{heavy}{sl}{
+ <-> ssub * CpHwt-TLF/heavy/it
+}{}
+
+
+% ---- m = book ----
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{m}{n}{
+ <-> \CpHwt@@scale CpHwt-Book-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{book}{n}{
+ <-> alias * CpHwt-TLF/m/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{m}{it}{
+ <-> \CpHwt@@scale CpHwt-BookItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{book}{it}{
+ <-> alias * CpHwt-TLF/m/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{m}{sl}{
+ <-> ssub * CpHwt-TLF/m/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{book}{sl}{
+ <-> ssub * CpHwt-TLF/book/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{sb}{it}{
+ <-> \CpHwt@@scale CpHwt-SemiboldItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{semibold}{it}{
+ <-> alias * CpHwt-TLF/sb/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{sb}{n}{
+ <-> \CpHwt@@scale CpHwt-Semibold-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{semibold}{n}{
+ <-> alias * CpHwt-TLF/sb/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{sb}{sl}{
+ <-> ssub * CpHwt-TLF/sb/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{semibold}{sl}{
+ <-> ssub * CpHwt-TLF/semibold/it
+}{}
+
+
+% ---- el = thin ----
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{el}{it}{
+ <-> \CpHwt@@scale CpHwt-ThinItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{thin}{it}{
+ <-> alias * CpHwt-TLF/el/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{el}{n}{
+ <-> \CpHwt@@scale CpHwt-Thin-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{thin}{n}{
+ <-> alias * CpHwt-TLF/el/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{el}{sl}{
+ <-> ssub * CpHwt-TLF/el/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{thin}{sl}{
+ <-> ssub * CpHwt-TLF/thin/it
+}{}
+
+
+% ---- l = light ----
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{l}{n}{
+ <-> \CpHwt@@scale CpHwt-Light-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{light}{n}{
+ <-> alias * CpHwt-TLF/l/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{l}{it}{
+ <-> \CpHwt@@scale CpHwt-LightItalic-tlf-ly1
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{light}{it}{
+ <-> alias * CpHwt-TLF/l/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{l}{sl}{
+ <-> ssub * CpHwt-TLF/l/it
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{light}{sl}{
+ <-> ssub * CpHwt-TLF/light/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{bx}{n}{
+ <-> ssub * CpHwt-TLF/b/n
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{bx}{sl}{
+ <-> ssub * CpHwt-TLF/b/sl
+}{}
+
+\DeclareFontShape{LY1}{CpHwt-TLF}{bx}{it}{
+ <-> ssub * CpHwt-TLF/b/it
+}{}
+
+\endinput
diff --git a/fonts/cooperhewitt/latex/OT1CpHwt-Sup.fd b/fonts/cooperhewitt/latex/OT1CpHwt-Sup.fd
new file mode 100644
index 0000000000..0e4efff113
--- /dev/null
+++ b/fonts/cooperhewitt/latex/OT1CpHwt-Sup.fd
@@ -0,0 +1,214 @@
+%% Generated by autoinst on 2022/10/18
+%%
+\ProvidesFile{OT1CpHwt-Sup.fd}
+ [2022/10/18 (autoinst) Font definitions for OT1/CpHwt-Sup.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname CpHwt@scale\endcsname\relax
+ \let\CpHwt@@scale\@empty
+\else
+ \edef\CpHwt@@scale{s*[\csname CpHwt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{CpHwt-Sup}{}
+
+
+% ---- l = light ----
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{l}{n}{
+ <-> \CpHwt@@scale CpHwt-Light-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{light}{n}{
+ <-> alias * CpHwt-Sup/l/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{l}{it}{
+ <-> \CpHwt@@scale CpHwt-LightItalic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{light}{it}{
+ <-> alias * CpHwt-Sup/l/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{l}{sl}{
+ <-> ssub * CpHwt-Sup/l/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{light}{sl}{
+ <-> ssub * CpHwt-Sup/light/it
+}{}
+
+
+% ---- el = thin ----
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{el}{n}{
+ <-> \CpHwt@@scale CpHwt-Thin-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{thin}{n}{
+ <-> alias * CpHwt-Sup/el/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{el}{it}{
+ <-> \CpHwt@@scale CpHwt-ThinItalic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{thin}{it}{
+ <-> alias * CpHwt-Sup/el/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{el}{sl}{
+ <-> ssub * CpHwt-Sup/el/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{thin}{sl}{
+ <-> ssub * CpHwt-Sup/thin/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{sb}{it}{
+ <-> \CpHwt@@scale CpHwt-SemiboldItalic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{semibold}{it}{
+ <-> alias * CpHwt-Sup/sb/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{sb}{n}{
+ <-> \CpHwt@@scale CpHwt-Semibold-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{semibold}{n}{
+ <-> alias * CpHwt-Sup/sb/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{sb}{sl}{
+ <-> ssub * CpHwt-Sup/sb/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{semibold}{sl}{
+ <-> ssub * CpHwt-Sup/semibold/it
+}{}
+
+
+% ---- m = book ----
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{m}{n}{
+ <-> \CpHwt@@scale CpHwt-Book-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{book}{n}{
+ <-> alias * CpHwt-Sup/m/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{m}{it}{
+ <-> \CpHwt@@scale CpHwt-BookItalic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{book}{it}{
+ <-> alias * CpHwt-Sup/m/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{m}{sl}{
+ <-> ssub * CpHwt-Sup/m/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{book}{sl}{
+ <-> ssub * CpHwt-Sup/book/it
+}{}
+
+
+% ---- eb = heavy ----
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{eb}{n}{
+ <-> \CpHwt@@scale CpHwt-Heavy-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{heavy}{n}{
+ <-> alias * CpHwt-Sup/eb/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{eb}{it}{
+ <-> \CpHwt@@scale CpHwt-HeavyItalic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{heavy}{it}{
+ <-> alias * CpHwt-Sup/eb/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{eb}{sl}{
+ <-> ssub * CpHwt-Sup/eb/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{heavy}{sl}{
+ <-> ssub * CpHwt-Sup/heavy/it
+}{}
+
+
+% ---- medium ----
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{medium}{n}{
+ <-> \CpHwt@@scale CpHwt-Medium-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{medium}{it}{
+ <-> \CpHwt@@scale CpHwt-MediumItalic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{medium}{sl}{
+ <-> ssub * CpHwt-Sup/medium/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{b}{n}{
+ <-> \CpHwt@@scale CpHwt-Bold-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{bold}{n}{
+ <-> alias * CpHwt-Sup/b/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{b}{it}{
+ <-> \CpHwt@@scale CpHwt-BoldItalic-sup-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{bold}{it}{
+ <-> alias * CpHwt-Sup/b/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{b}{sl}{
+ <-> ssub * CpHwt-Sup/b/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{bold}{sl}{
+ <-> ssub * CpHwt-Sup/bold/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{bx}{it}{
+ <-> ssub * CpHwt-Sup/b/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{bx}{sl}{
+ <-> ssub * CpHwt-Sup/b/sl
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-Sup}{bx}{n}{
+ <-> ssub * CpHwt-Sup/b/n
+}{}
+
+\endinput
diff --git a/fonts/cooperhewitt/latex/OT1CpHwt-TLF.fd b/fonts/cooperhewitt/latex/OT1CpHwt-TLF.fd
new file mode 100644
index 0000000000..af59c64c22
--- /dev/null
+++ b/fonts/cooperhewitt/latex/OT1CpHwt-TLF.fd
@@ -0,0 +1,214 @@
+%% Generated by autoinst on 2022/10/18
+%%
+\ProvidesFile{OT1CpHwt-TLF.fd}
+ [2022/10/18 (autoinst) Font definitions for OT1/CpHwt-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname CpHwt@scale\endcsname\relax
+ \let\CpHwt@@scale\@empty
+\else
+ \edef\CpHwt@@scale{s*[\csname CpHwt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{OT1}{CpHwt-TLF}{}
+
+
+% ---- l = light ----
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{l}{it}{
+ <-> \CpHwt@@scale CpHwt-LightItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{light}{it}{
+ <-> alias * CpHwt-TLF/l/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{l}{n}{
+ <-> \CpHwt@@scale CpHwt-Light-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{light}{n}{
+ <-> alias * CpHwt-TLF/l/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{l}{sl}{
+ <-> ssub * CpHwt-TLF/l/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{light}{sl}{
+ <-> ssub * CpHwt-TLF/light/it
+}{}
+
+
+% ---- el = thin ----
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{el}{n}{
+ <-> \CpHwt@@scale CpHwt-Thin-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{thin}{n}{
+ <-> alias * CpHwt-TLF/el/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{el}{it}{
+ <-> \CpHwt@@scale CpHwt-ThinItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{thin}{it}{
+ <-> alias * CpHwt-TLF/el/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{el}{sl}{
+ <-> ssub * CpHwt-TLF/el/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{thin}{sl}{
+ <-> ssub * CpHwt-TLF/thin/it
+}{}
+
+
+% ---- eb = heavy ----
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{eb}{it}{
+ <-> \CpHwt@@scale CpHwt-HeavyItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{heavy}{it}{
+ <-> alias * CpHwt-TLF/eb/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{eb}{n}{
+ <-> \CpHwt@@scale CpHwt-Heavy-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{heavy}{n}{
+ <-> alias * CpHwt-TLF/eb/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{eb}{sl}{
+ <-> ssub * CpHwt-TLF/eb/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{heavy}{sl}{
+ <-> ssub * CpHwt-TLF/heavy/it
+}{}
+
+
+% ---- m = book ----
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{m}{n}{
+ <-> \CpHwt@@scale CpHwt-Book-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{book}{n}{
+ <-> alias * CpHwt-TLF/m/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{m}{it}{
+ <-> \CpHwt@@scale CpHwt-BookItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{book}{it}{
+ <-> alias * CpHwt-TLF/m/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{m}{sl}{
+ <-> ssub * CpHwt-TLF/m/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{book}{sl}{
+ <-> ssub * CpHwt-TLF/book/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{sb}{n}{
+ <-> \CpHwt@@scale CpHwt-Semibold-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{semibold}{n}{
+ <-> alias * CpHwt-TLF/sb/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{sb}{it}{
+ <-> \CpHwt@@scale CpHwt-SemiboldItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{semibold}{it}{
+ <-> alias * CpHwt-TLF/sb/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{sb}{sl}{
+ <-> ssub * CpHwt-TLF/sb/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{semibold}{sl}{
+ <-> ssub * CpHwt-TLF/semibold/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{b}{n}{
+ <-> \CpHwt@@scale CpHwt-Bold-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{bold}{n}{
+ <-> alias * CpHwt-TLF/b/n
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{b}{it}{
+ <-> \CpHwt@@scale CpHwt-BoldItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{bold}{it}{
+ <-> alias * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{b}{sl}{
+ <-> ssub * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{bold}{sl}{
+ <-> ssub * CpHwt-TLF/bold/it
+}{}
+
+
+% ---- medium ----
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{medium}{it}{
+ <-> \CpHwt@@scale CpHwt-MediumItalic-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{medium}{n}{
+ <-> \CpHwt@@scale CpHwt-Medium-tlf-ot1
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{medium}{sl}{
+ <-> ssub * CpHwt-TLF/medium/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{bx}{sl}{
+ <-> ssub * CpHwt-TLF/b/sl
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{bx}{it}{
+ <-> ssub * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{OT1}{CpHwt-TLF}{bx}{n}{
+ <-> ssub * CpHwt-TLF/b/n
+}{}
+
+\endinput
diff --git a/fonts/cooperhewitt/latex/T1CpHwt-Sup.fd b/fonts/cooperhewitt/latex/T1CpHwt-Sup.fd
new file mode 100644
index 0000000000..a563d32139
--- /dev/null
+++ b/fonts/cooperhewitt/latex/T1CpHwt-Sup.fd
@@ -0,0 +1,214 @@
+%% Generated by autoinst on 2022/10/18
+%%
+\ProvidesFile{T1CpHwt-Sup.fd}
+ [2022/10/18 (autoinst) Font definitions for T1/CpHwt-Sup.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname CpHwt@scale\endcsname\relax
+ \let\CpHwt@@scale\@empty
+\else
+ \edef\CpHwt@@scale{s*[\csname CpHwt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{CpHwt-Sup}{}
+
+
+% ---- el = thin ----
+
+\DeclareFontShape{T1}{CpHwt-Sup}{el}{n}{
+ <-> \CpHwt@@scale CpHwt-Thin-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{thin}{n}{
+ <-> alias * CpHwt-Sup/el/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{el}{it}{
+ <-> \CpHwt@@scale CpHwt-ThinItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{thin}{it}{
+ <-> alias * CpHwt-Sup/el/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{el}{sl}{
+ <-> ssub * CpHwt-Sup/el/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{thin}{sl}{
+ <-> ssub * CpHwt-Sup/thin/it
+}{}
+
+
+% ---- l = light ----
+
+\DeclareFontShape{T1}{CpHwt-Sup}{l}{it}{
+ <-> \CpHwt@@scale CpHwt-LightItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{light}{it}{
+ <-> alias * CpHwt-Sup/l/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{l}{n}{
+ <-> \CpHwt@@scale CpHwt-Light-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{light}{n}{
+ <-> alias * CpHwt-Sup/l/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{l}{sl}{
+ <-> ssub * CpHwt-Sup/l/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{light}{sl}{
+ <-> ssub * CpHwt-Sup/light/it
+}{}
+
+
+% ---- medium ----
+
+\DeclareFontShape{T1}{CpHwt-Sup}{medium}{n}{
+ <-> \CpHwt@@scale CpHwt-Medium-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{medium}{it}{
+ <-> \CpHwt@@scale CpHwt-MediumItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{medium}{sl}{
+ <-> ssub * CpHwt-Sup/medium/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{CpHwt-Sup}{b}{it}{
+ <-> \CpHwt@@scale CpHwt-BoldItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{bold}{it}{
+ <-> alias * CpHwt-Sup/b/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{b}{n}{
+ <-> \CpHwt@@scale CpHwt-Bold-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{bold}{n}{
+ <-> alias * CpHwt-Sup/b/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{b}{sl}{
+ <-> ssub * CpHwt-Sup/b/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{bold}{sl}{
+ <-> ssub * CpHwt-Sup/bold/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{T1}{CpHwt-Sup}{sb}{n}{
+ <-> \CpHwt@@scale CpHwt-Semibold-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{semibold}{n}{
+ <-> alias * CpHwt-Sup/sb/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{sb}{it}{
+ <-> \CpHwt@@scale CpHwt-SemiboldItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{semibold}{it}{
+ <-> alias * CpHwt-Sup/sb/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{sb}{sl}{
+ <-> ssub * CpHwt-Sup/sb/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{semibold}{sl}{
+ <-> ssub * CpHwt-Sup/semibold/it
+}{}
+
+
+% ---- eb = heavy ----
+
+\DeclareFontShape{T1}{CpHwt-Sup}{eb}{it}{
+ <-> \CpHwt@@scale CpHwt-HeavyItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{heavy}{it}{
+ <-> alias * CpHwt-Sup/eb/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{eb}{n}{
+ <-> \CpHwt@@scale CpHwt-Heavy-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{heavy}{n}{
+ <-> alias * CpHwt-Sup/eb/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{eb}{sl}{
+ <-> ssub * CpHwt-Sup/eb/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{heavy}{sl}{
+ <-> ssub * CpHwt-Sup/heavy/it
+}{}
+
+
+% ---- m = book ----
+
+\DeclareFontShape{T1}{CpHwt-Sup}{m}{it}{
+ <-> \CpHwt@@scale CpHwt-BookItalic-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{book}{it}{
+ <-> alias * CpHwt-Sup/m/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{m}{n}{
+ <-> \CpHwt@@scale CpHwt-Book-sup-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{book}{n}{
+ <-> alias * CpHwt-Sup/m/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{m}{sl}{
+ <-> ssub * CpHwt-Sup/m/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{book}{sl}{
+ <-> ssub * CpHwt-Sup/book/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{CpHwt-Sup}{bx}{it}{
+ <-> ssub * CpHwt-Sup/b/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{bx}{sl}{
+ <-> ssub * CpHwt-Sup/b/sl
+}{}
+
+\DeclareFontShape{T1}{CpHwt-Sup}{bx}{n}{
+ <-> ssub * CpHwt-Sup/b/n
+}{}
+
+\endinput
diff --git a/fonts/cooperhewitt/latex/T1CpHwt-TLF.fd b/fonts/cooperhewitt/latex/T1CpHwt-TLF.fd
new file mode 100644
index 0000000000..304b524995
--- /dev/null
+++ b/fonts/cooperhewitt/latex/T1CpHwt-TLF.fd
@@ -0,0 +1,214 @@
+%% Generated by autoinst on 2022/10/18
+%%
+\ProvidesFile{T1CpHwt-TLF.fd}
+ [2022/10/18 (autoinst) Font definitions for T1/CpHwt-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname CpHwt@scale\endcsname\relax
+ \let\CpHwt@@scale\@empty
+\else
+ \edef\CpHwt@@scale{s*[\csname CpHwt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{T1}{CpHwt-TLF}{}
+
+
+% ---- medium ----
+
+\DeclareFontShape{T1}{CpHwt-TLF}{medium}{it}{
+ <-> \CpHwt@@scale CpHwt-MediumItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{medium}{n}{
+ <-> \CpHwt@@scale CpHwt-Medium-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{medium}{sl}{
+ <-> ssub * CpHwt-TLF/medium/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{T1}{CpHwt-TLF}{b}{it}{
+ <-> \CpHwt@@scale CpHwt-BoldItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{bold}{it}{
+ <-> alias * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{b}{n}{
+ <-> \CpHwt@@scale CpHwt-Bold-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{bold}{n}{
+ <-> alias * CpHwt-TLF/b/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{b}{sl}{
+ <-> ssub * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{bold}{sl}{
+ <-> ssub * CpHwt-TLF/bold/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{T1}{CpHwt-TLF}{sb}{n}{
+ <-> \CpHwt@@scale CpHwt-Semibold-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{semibold}{n}{
+ <-> alias * CpHwt-TLF/sb/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{sb}{it}{
+ <-> \CpHwt@@scale CpHwt-SemiboldItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{semibold}{it}{
+ <-> alias * CpHwt-TLF/sb/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{sb}{sl}{
+ <-> ssub * CpHwt-TLF/sb/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{semibold}{sl}{
+ <-> ssub * CpHwt-TLF/semibold/it
+}{}
+
+
+% ---- eb = heavy ----
+
+\DeclareFontShape{T1}{CpHwt-TLF}{eb}{n}{
+ <-> \CpHwt@@scale CpHwt-Heavy-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{heavy}{n}{
+ <-> alias * CpHwt-TLF/eb/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{eb}{it}{
+ <-> \CpHwt@@scale CpHwt-HeavyItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{heavy}{it}{
+ <-> alias * CpHwt-TLF/eb/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{eb}{sl}{
+ <-> ssub * CpHwt-TLF/eb/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{heavy}{sl}{
+ <-> ssub * CpHwt-TLF/heavy/it
+}{}
+
+
+% ---- m = book ----
+
+\DeclareFontShape{T1}{CpHwt-TLF}{m}{it}{
+ <-> \CpHwt@@scale CpHwt-BookItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{book}{it}{
+ <-> alias * CpHwt-TLF/m/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{m}{n}{
+ <-> \CpHwt@@scale CpHwt-Book-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{book}{n}{
+ <-> alias * CpHwt-TLF/m/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{m}{sl}{
+ <-> ssub * CpHwt-TLF/m/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{book}{sl}{
+ <-> ssub * CpHwt-TLF/book/it
+}{}
+
+
+% ---- el = thin ----
+
+\DeclareFontShape{T1}{CpHwt-TLF}{el}{n}{
+ <-> \CpHwt@@scale CpHwt-Thin-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{thin}{n}{
+ <-> alias * CpHwt-TLF/el/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{el}{it}{
+ <-> \CpHwt@@scale CpHwt-ThinItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{thin}{it}{
+ <-> alias * CpHwt-TLF/el/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{el}{sl}{
+ <-> ssub * CpHwt-TLF/el/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{thin}{sl}{
+ <-> ssub * CpHwt-TLF/thin/it
+}{}
+
+
+% ---- l = light ----
+
+\DeclareFontShape{T1}{CpHwt-TLF}{l}{n}{
+ <-> \CpHwt@@scale CpHwt-Light-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{light}{n}{
+ <-> alias * CpHwt-TLF/l/n
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{l}{it}{
+ <-> \CpHwt@@scale CpHwt-LightItalic-tlf-t1
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{light}{it}{
+ <-> alias * CpHwt-TLF/l/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{l}{sl}{
+ <-> ssub * CpHwt-TLF/l/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{light}{sl}{
+ <-> ssub * CpHwt-TLF/light/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{T1}{CpHwt-TLF}{bx}{sl}{
+ <-> ssub * CpHwt-TLF/b/sl
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{bx}{it}{
+ <-> ssub * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{T1}{CpHwt-TLF}{bx}{n}{
+ <-> ssub * CpHwt-TLF/b/n
+}{}
+
+\endinput
diff --git a/fonts/cooperhewitt/latex/TS1CpHwt-TLF.fd b/fonts/cooperhewitt/latex/TS1CpHwt-TLF.fd
new file mode 100644
index 0000000000..6ca171701f
--- /dev/null
+++ b/fonts/cooperhewitt/latex/TS1CpHwt-TLF.fd
@@ -0,0 +1,214 @@
+%% Generated by autoinst on 2022/10/18
+%%
+\ProvidesFile{TS1CpHwt-TLF.fd}
+ [2022/10/18 (autoinst) Font definitions for TS1/CpHwt-TLF.]
+
+\ifcsname s@fct@alias\endcsname\else
+\gdef\s@fct@alias{\sub@sfcnt\@font@aliasinfo}
+\gdef\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space will
+ \space be\space aliased\MessageBreak to\space `\mandatory@arg'}%
+}
+\fi
+
+\expandafter\ifx\csname CpHwt@scale\endcsname\relax
+ \let\CpHwt@@scale\@empty
+\else
+ \edef\CpHwt@@scale{s*[\csname CpHwt@scale\endcsname]}%
+\fi
+
+\DeclareFontFamily{TS1}{CpHwt-TLF}{}
+
+
+% ---- l = light ----
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{l}{it}{
+ <-> \CpHwt@@scale CpHwt-LightItalic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{light}{it}{
+ <-> alias * CpHwt-TLF/l/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{l}{n}{
+ <-> \CpHwt@@scale CpHwt-Light-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{light}{n}{
+ <-> alias * CpHwt-TLF/l/n
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{l}{sl}{
+ <-> ssub * CpHwt-TLF/l/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{light}{sl}{
+ <-> ssub * CpHwt-TLF/light/it
+}{}
+
+
+% ---- el = thin ----
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{el}{n}{
+ <-> \CpHwt@@scale CpHwt-Thin-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{thin}{n}{
+ <-> alias * CpHwt-TLF/el/n
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{el}{it}{
+ <-> \CpHwt@@scale CpHwt-ThinItalic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{thin}{it}{
+ <-> alias * CpHwt-TLF/el/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{el}{sl}{
+ <-> ssub * CpHwt-TLF/el/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{thin}{sl}{
+ <-> ssub * CpHwt-TLF/thin/it
+}{}
+
+
+% ---- eb = heavy ----
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{eb}{it}{
+ <-> \CpHwt@@scale CpHwt-HeavyItalic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{heavy}{it}{
+ <-> alias * CpHwt-TLF/eb/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{eb}{n}{
+ <-> \CpHwt@@scale CpHwt-Heavy-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{heavy}{n}{
+ <-> alias * CpHwt-TLF/eb/n
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{eb}{sl}{
+ <-> ssub * CpHwt-TLF/eb/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{heavy}{sl}{
+ <-> ssub * CpHwt-TLF/heavy/it
+}{}
+
+
+% ---- m = book ----
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{m}{n}{
+ <-> \CpHwt@@scale CpHwt-Book-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{book}{n}{
+ <-> alias * CpHwt-TLF/m/n
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{m}{it}{
+ <-> \CpHwt@@scale CpHwt-BookItalic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{book}{it}{
+ <-> alias * CpHwt-TLF/m/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{m}{sl}{
+ <-> ssub * CpHwt-TLF/m/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{book}{sl}{
+ <-> ssub * CpHwt-TLF/book/it
+}{}
+
+
+% ---- sb = semibold ----
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{sb}{it}{
+ <-> \CpHwt@@scale CpHwt-SemiboldItalic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{semibold}{it}{
+ <-> alias * CpHwt-TLF/sb/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{sb}{n}{
+ <-> \CpHwt@@scale CpHwt-Semibold-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{semibold}{n}{
+ <-> alias * CpHwt-TLF/sb/n
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{sb}{sl}{
+ <-> ssub * CpHwt-TLF/sb/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{semibold}{sl}{
+ <-> ssub * CpHwt-TLF/semibold/it
+}{}
+
+
+% ---- b = bold ----
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{b}{n}{
+ <-> \CpHwt@@scale CpHwt-Bold-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{bold}{n}{
+ <-> alias * CpHwt-TLF/b/n
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{b}{it}{
+ <-> \CpHwt@@scale CpHwt-BoldItalic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{bold}{it}{
+ <-> alias * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{b}{sl}{
+ <-> ssub * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{bold}{sl}{
+ <-> ssub * CpHwt-TLF/bold/it
+}{}
+
+
+% ---- medium ----
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{medium}{n}{
+ <-> \CpHwt@@scale CpHwt-Medium-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{medium}{it}{
+ <-> \CpHwt@@scale CpHwt-MediumItalic-tlf-ts1
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{medium}{sl}{
+ <-> ssub * CpHwt-TLF/medium/it
+}{}
+
+
+% ---- Extra 'ssub' rules to map 'bx' to 'b' ----
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{bx}{it}{
+ <-> ssub * CpHwt-TLF/b/it
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{bx}{sl}{
+ <-> ssub * CpHwt-TLF/b/sl
+}{}
+
+\DeclareFontShape{TS1}{CpHwt-TLF}{bx}{n}{
+ <-> ssub * CpHwt-TLF/b/n
+}{}
+
+\endinput
diff --git a/fonts/cooperhewitt/map/CooperHewitt.map b/fonts/cooperhewitt/map/CooperHewitt.map
new file mode 100644
index 0000000000..35d82d1388
--- /dev/null
+++ b/fonts/cooperhewitt/map/CooperHewitt.map
@@ -0,0 +1,100 @@
+% Automatically maintained by otftotfm or other programs. Do not edit.
+
+CpHwt-BoldItalic-tlf-ot1--base CpHwt-BoldItalic "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-BoldItalic.pfb
+CpHwt-BoldItalic-tlf-ly1--base CpHwt-BoldItalic "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-BoldItalic.pfb
+CpHwt-BoldItalic-tlf-t1--base CpHwt-BoldItalic "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-BoldItalic.pfb
+CpHwt-BoldItalic-tlf-ts1--base CpHwt-BoldItalic "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-BoldItalic.pfb
+CpHwt-BoldItalic-sup-ot1 CpHwt-BoldItalic "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-BoldItalic.pfb
+CpHwt-BoldItalic-sup-ly1--base CpHwt-BoldItalic "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-BoldItalic.pfb
+CpHwt-BoldItalic-sup-t1--base CpHwt-BoldItalic "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-BoldItalic.pfb
+CpHwt-Bold-tlf-ot1--base CpHwt-Bold "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-Bold.pfb
+CpHwt-Bold-tlf-ly1--base CpHwt-Bold "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-Bold.pfb
+CpHwt-Bold-tlf-t1--base CpHwt-Bold "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-Bold.pfb
+CpHwt-Bold-tlf-ts1--base CpHwt-Bold "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-Bold.pfb
+CpHwt-Bold-sup-ot1 CpHwt-Bold "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-Bold.pfb
+CpHwt-Bold-sup-ly1--base CpHwt-Bold "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-Bold.pfb
+CpHwt-Bold-sup-t1--base CpHwt-Bold "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-Bold.pfb
+CpHwt-BookItalic-tlf-ot1--base CpHwt-BookItalic "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-BookItalic.pfb
+CpHwt-BookItalic-tlf-ly1--base CpHwt-BookItalic "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-BookItalic.pfb
+CpHwt-BookItalic-tlf-t1--base CpHwt-BookItalic "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-BookItalic.pfb
+CpHwt-BookItalic-tlf-ts1--base CpHwt-BookItalic "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-BookItalic.pfb
+CpHwt-BookItalic-sup-ot1 CpHwt-BookItalic "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-BookItalic.pfb
+CpHwt-BookItalic-sup-ly1--base CpHwt-BookItalic "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-BookItalic.pfb
+CpHwt-BookItalic-sup-t1--base CpHwt-BookItalic "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-BookItalic.pfb
+CpHwt-Book-tlf-ot1--base CpHwt-Book "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-Book.pfb
+CpHwt-Book-tlf-ly1--base CpHwt-Book "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-Book.pfb
+CpHwt-Book-tlf-t1--base CpHwt-Book "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-Book.pfb
+CpHwt-Book-tlf-ts1--base CpHwt-Book "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-Book.pfb
+CpHwt-Book-sup-ot1 CpHwt-Book "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-Book.pfb
+CpHwt-Book-sup-ly1--base CpHwt-Book "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-Book.pfb
+CpHwt-Book-sup-t1--base CpHwt-Book "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-Book.pfb
+CpHwt-HeavyItalic-tlf-ot1--base CpHwt-HeavyItalic "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-HeavyItalic.pfb
+CpHwt-HeavyItalic-tlf-ly1--base CpHwt-HeavyItalic "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-HeavyItalic.pfb
+CpHwt-HeavyItalic-tlf-t1--base CpHwt-HeavyItalic "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-HeavyItalic.pfb
+CpHwt-HeavyItalic-tlf-ts1--base CpHwt-HeavyItalic "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-HeavyItalic.pfb
+CpHwt-HeavyItalic-sup-ot1 CpHwt-HeavyItalic "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-HeavyItalic.pfb
+CpHwt-HeavyItalic-sup-ly1--base CpHwt-HeavyItalic "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-HeavyItalic.pfb
+CpHwt-HeavyItalic-sup-t1--base CpHwt-HeavyItalic "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-HeavyItalic.pfb
+CpHwt-Heavy-tlf-ot1--base CpHwt-Heavy "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-Heavy.pfb
+CpHwt-Heavy-tlf-ly1--base CpHwt-Heavy "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-Heavy.pfb
+CpHwt-Heavy-tlf-t1--base CpHwt-Heavy "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-Heavy.pfb
+CpHwt-Heavy-tlf-ts1--base CpHwt-Heavy "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-Heavy.pfb
+CpHwt-Heavy-sup-ot1 CpHwt-Heavy "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-Heavy.pfb
+CpHwt-Heavy-sup-ly1--base CpHwt-Heavy "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-Heavy.pfb
+CpHwt-Heavy-sup-t1--base CpHwt-Heavy "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-Heavy.pfb
+CpHwt-LightItalic-tlf-ot1--base CpHwt-LightItalic "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-LightItalic.pfb
+CpHwt-LightItalic-tlf-ly1--base CpHwt-LightItalic "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-LightItalic.pfb
+CpHwt-LightItalic-tlf-t1--base CpHwt-LightItalic "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-LightItalic.pfb
+CpHwt-LightItalic-tlf-ts1--base CpHwt-LightItalic "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-LightItalic.pfb
+CpHwt-LightItalic-sup-ot1 CpHwt-LightItalic "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-LightItalic.pfb
+CpHwt-LightItalic-sup-ly1--base CpHwt-LightItalic "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-LightItalic.pfb
+CpHwt-LightItalic-sup-t1--base CpHwt-LightItalic "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-LightItalic.pfb
+CpHwt-Light-tlf-ot1--base CpHwt-Light "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-Light.pfb
+CpHwt-Light-tlf-ly1--base CpHwt-Light "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-Light.pfb
+CpHwt-Light-tlf-t1--base CpHwt-Light "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-Light.pfb
+CpHwt-Light-tlf-ts1--base CpHwt-Light "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-Light.pfb
+CpHwt-Light-sup-ot1 CpHwt-Light "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-Light.pfb
+CpHwt-Light-sup-ly1--base CpHwt-Light "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-Light.pfb
+CpHwt-Light-sup-t1--base CpHwt-Light "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-Light.pfb
+CpHwt-MediumItalic-tlf-ot1--base CpHwt-MediumItalic "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-MediumItalic.pfb
+CpHwt-MediumItalic-tlf-ly1--base CpHwt-MediumItalic "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-MediumItalic.pfb
+CpHwt-MediumItalic-tlf-t1--base CpHwt-MediumItalic "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-MediumItalic.pfb
+CpHwt-MediumItalic-tlf-ts1--base CpHwt-MediumItalic "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-MediumItalic.pfb
+CpHwt-MediumItalic-sup-ot1 CpHwt-MediumItalic "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-MediumItalic.pfb
+CpHwt-MediumItalic-sup-ly1--base CpHwt-MediumItalic "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-MediumItalic.pfb
+CpHwt-MediumItalic-sup-t1--base CpHwt-MediumItalic "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-MediumItalic.pfb
+CpHwt-Medium-tlf-ot1--base CpHwt-Medium "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-Medium.pfb
+CpHwt-Medium-tlf-ly1--base CpHwt-Medium "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-Medium.pfb
+CpHwt-Medium-tlf-t1--base CpHwt-Medium "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-Medium.pfb
+CpHwt-Medium-tlf-ts1--base CpHwt-Medium "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-Medium.pfb
+CpHwt-Medium-sup-ot1 CpHwt-Medium "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-Medium.pfb
+CpHwt-Medium-sup-ly1--base CpHwt-Medium "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-Medium.pfb
+CpHwt-Medium-sup-t1--base CpHwt-Medium "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-Medium.pfb
+CpHwt-SemiboldItalic-tlf-ot1--base CpHwt-SemiboldItalic "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-SemiboldItalic.pfb
+CpHwt-SemiboldItalic-tlf-ly1--base CpHwt-SemiboldItalic "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-SemiboldItalic.pfb
+CpHwt-SemiboldItalic-tlf-t1--base CpHwt-SemiboldItalic "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-SemiboldItalic.pfb
+CpHwt-SemiboldItalic-tlf-ts1--base CpHwt-SemiboldItalic "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-SemiboldItalic.pfb
+CpHwt-SemiboldItalic-sup-ot1 CpHwt-SemiboldItalic "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-SemiboldItalic.pfb
+CpHwt-SemiboldItalic-sup-ly1--base CpHwt-SemiboldItalic "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-SemiboldItalic.pfb
+CpHwt-SemiboldItalic-sup-t1--base CpHwt-SemiboldItalic "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-SemiboldItalic.pfb
+CpHwt-Semibold-tlf-ot1--base CpHwt-Semibold "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-Semibold.pfb
+CpHwt-Semibold-tlf-ly1--base CpHwt-Semibold "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-Semibold.pfb
+CpHwt-Semibold-tlf-t1--base CpHwt-Semibold "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-Semibold.pfb
+CpHwt-Semibold-tlf-ts1--base CpHwt-Semibold "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-Semibold.pfb
+CpHwt-Semibold-sup-ot1 CpHwt-Semibold "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-Semibold.pfb
+CpHwt-Semibold-sup-ly1--base CpHwt-Semibold "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-Semibold.pfb
+CpHwt-Semibold-sup-t1--base CpHwt-Semibold "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-Semibold.pfb
+CpHwt-ThinItalic-tlf-ot1--base CpHwt-ThinItalic "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-ThinItalic.pfb
+CpHwt-ThinItalic-tlf-ly1--base CpHwt-ThinItalic "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-ThinItalic.pfb
+CpHwt-ThinItalic-tlf-t1--base CpHwt-ThinItalic "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-ThinItalic.pfb
+CpHwt-ThinItalic-tlf-ts1--base CpHwt-ThinItalic "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-ThinItalic.pfb
+CpHwt-ThinItalic-sup-ot1 CpHwt-ThinItalic "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-ThinItalic.pfb
+CpHwt-ThinItalic-sup-ly1--base CpHwt-ThinItalic "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-ThinItalic.pfb
+CpHwt-ThinItalic-sup-t1--base CpHwt-ThinItalic "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-ThinItalic.pfb
+CpHwt-Thin-tlf-ot1--base CpHwt-Thin "AutoEnc_tjvrzfjktdse4xvrynccsg3p5f ReEncodeFont" <[cphwt_tjvrzf.enc <CpHwt-Thin.pfb
+CpHwt-Thin-tlf-ly1--base CpHwt-Thin "AutoEnc_sz67heartqwluzyqi65ifbmpba ReEncodeFont" <[cphwt_sz67he.enc <CpHwt-Thin.pfb
+CpHwt-Thin-tlf-t1--base CpHwt-Thin "AutoEnc_4je6jjhrg5rho5ondun56s3l5g ReEncodeFont" <[cphwt_4je6jj.enc <CpHwt-Thin.pfb
+CpHwt-Thin-tlf-ts1--base CpHwt-Thin "AutoEnc_kvtx4dqkzszapznbigqwwrppgc ReEncodeFont" <[cphwt_kvtx4d.enc <CpHwt-Thin.pfb
+CpHwt-Thin-sup-ot1 CpHwt-Thin "AutoEnc_psuovm3gjjamdhizenqb7sazic ReEncodeFont" <[cphwt_psuovm.enc <CpHwt-Thin.pfb
+CpHwt-Thin-sup-ly1--base CpHwt-Thin "AutoEnc_r6y6f6kbhcmqrww7ktm24rvweb ReEncodeFont" <[cphwt_r6y6f6.enc <CpHwt-Thin.pfb
+CpHwt-Thin-sup-t1--base CpHwt-Thin "AutoEnc_vrwj46cosxt3klcjg4yn2zodlg ReEncodeFont" <[cphwt_vrwj46.enc <CpHwt-Thin.pfb
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-Bold.otf b/fonts/cooperhewitt/opentype/CooperHewitt-Bold.otf
new file mode 100644
index 0000000000..9f743198c5
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-Bold.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-BoldItalic.otf b/fonts/cooperhewitt/opentype/CooperHewitt-BoldItalic.otf
new file mode 100644
index 0000000000..e5a83a52cf
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-BoldItalic.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-Book.otf b/fonts/cooperhewitt/opentype/CooperHewitt-Book.otf
new file mode 100644
index 0000000000..2f9626a156
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-Book.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-BookItalic.otf b/fonts/cooperhewitt/opentype/CooperHewitt-BookItalic.otf
new file mode 100644
index 0000000000..b80fbb9ae1
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-BookItalic.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-Heavy.otf b/fonts/cooperhewitt/opentype/CooperHewitt-Heavy.otf
new file mode 100644
index 0000000000..01159c6eaf
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-Heavy.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-HeavyItalic.otf b/fonts/cooperhewitt/opentype/CooperHewitt-HeavyItalic.otf
new file mode 100644
index 0000000000..0faa5a1653
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-HeavyItalic.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-Light.otf b/fonts/cooperhewitt/opentype/CooperHewitt-Light.otf
new file mode 100644
index 0000000000..bfe241600b
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-Light.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-LightItalic.otf b/fonts/cooperhewitt/opentype/CooperHewitt-LightItalic.otf
new file mode 100644
index 0000000000..d8a17ffed6
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-LightItalic.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-Medium.otf b/fonts/cooperhewitt/opentype/CooperHewitt-Medium.otf
new file mode 100644
index 0000000000..b33c6d2b6d
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-Medium.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-MediumItalic.otf b/fonts/cooperhewitt/opentype/CooperHewitt-MediumItalic.otf
new file mode 100644
index 0000000000..2817964eec
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-MediumItalic.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-Semibold.otf b/fonts/cooperhewitt/opentype/CooperHewitt-Semibold.otf
new file mode 100644
index 0000000000..3174394b49
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-Semibold.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-SemiboldItalic.otf b/fonts/cooperhewitt/opentype/CooperHewitt-SemiboldItalic.otf
new file mode 100644
index 0000000000..5626fe8003
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-SemiboldItalic.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-Thin.otf b/fonts/cooperhewitt/opentype/CooperHewitt-Thin.otf
new file mode 100644
index 0000000000..4c5ca88aca
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-Thin.otf
Binary files differ
diff --git a/fonts/cooperhewitt/opentype/CooperHewitt-ThinItalic.otf b/fonts/cooperhewitt/opentype/CooperHewitt-ThinItalic.otf
new file mode 100644
index 0000000000..e4185977bf
--- /dev/null
+++ b/fonts/cooperhewitt/opentype/CooperHewitt-ThinItalic.otf
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1--base.tfm
new file mode 100644
index 0000000000..c32410c968
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1.tfm
new file mode 100644
index 0000000000..603facbecf
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ot1.tfm
new file mode 100644
index 0000000000..bb95c48a36
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1--base.tfm
new file mode 100644
index 0000000000..539e6f698b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1.tfm
new file mode 100644
index 0000000000..e969ac7bf8
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..8a4b3d3e60
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1.tfm
new file mode 100644
index 0000000000..20e4642c94
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..fdec09b62a
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1.tfm
new file mode 100644
index 0000000000..d72bc29732
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1--base.tfm
new file mode 100644
index 0000000000..b1729ed7c5
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1.tfm
new file mode 100644
index 0000000000..f38eda3911
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..fb2283cddb
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1.tfm
new file mode 100644
index 0000000000..4cc7c329be
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Bold-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1--base.tfm
new file mode 100644
index 0000000000..45b1cb0eb7
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1.tfm
new file mode 100644
index 0000000000..0c85281346
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ot1.tfm
new file mode 100644
index 0000000000..a7106294a8
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1--base.tfm
new file mode 100644
index 0000000000..dc20d98e3c
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1.tfm
new file mode 100644
index 0000000000..20c0e705cc
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..1f8af7bfef
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1.tfm
new file mode 100644
index 0000000000..4d08c58780
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..5dd95ac113
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1.tfm
new file mode 100644
index 0000000000..f1545c73c4
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1--base.tfm
new file mode 100644
index 0000000000..5346a954ac
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1.tfm
new file mode 100644
index 0000000000..a825fbeb5e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..1af530762e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1.tfm
new file mode 100644
index 0000000000..ef1e482880
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BoldItalic-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1--base.tfm
new file mode 100644
index 0000000000..018b1f09df
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1.tfm
new file mode 100644
index 0000000000..16ae4876ab
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ot1.tfm
new file mode 100644
index 0000000000..8fdda6a542
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1--base.tfm
new file mode 100644
index 0000000000..81cd23fb6d
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1.tfm
new file mode 100644
index 0000000000..9853aff9ee
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..e04394c8e8
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1.tfm
new file mode 100644
index 0000000000..0542a62f71
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..1c81c87f7e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1.tfm
new file mode 100644
index 0000000000..a04db72c4f
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1--base.tfm
new file mode 100644
index 0000000000..a609502bf5
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1.tfm
new file mode 100644
index 0000000000..6febfd6f48
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..8525f3c682
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1.tfm
new file mode 100644
index 0000000000..410d408760
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Book-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1--base.tfm
new file mode 100644
index 0000000000..0f4ea1a465
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1.tfm
new file mode 100644
index 0000000000..1f5594767b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ot1.tfm
new file mode 100644
index 0000000000..7fd19f8edc
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1--base.tfm
new file mode 100644
index 0000000000..335da01741
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1.tfm
new file mode 100644
index 0000000000..b37fa89630
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..73ceaa29fc
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1.tfm
new file mode 100644
index 0000000000..c6fc70f9e3
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..b2c6985433
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1.tfm
new file mode 100644
index 0000000000..c62b40d80d
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1--base.tfm
new file mode 100644
index 0000000000..0fbf08a585
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1.tfm
new file mode 100644
index 0000000000..2a70cbfd35
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..c9d593a835
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1.tfm
new file mode 100644
index 0000000000..968421de5c
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-BookItalic-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1--base.tfm
new file mode 100644
index 0000000000..19ecb28ff2
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1.tfm
new file mode 100644
index 0000000000..aca4a551f7
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ot1.tfm
new file mode 100644
index 0000000000..039d4327eb
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1--base.tfm
new file mode 100644
index 0000000000..136797a3d5
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1.tfm
new file mode 100644
index 0000000000..45b2d3f23e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..86681678a0
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1.tfm
new file mode 100644
index 0000000000..dbff255a6e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..f268822024
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1.tfm
new file mode 100644
index 0000000000..c3c349649b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1--base.tfm
new file mode 100644
index 0000000000..254c17fac0
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1.tfm
new file mode 100644
index 0000000000..4bde5caefd
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..a4d76c8b28
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1.tfm
new file mode 100644
index 0000000000..73a2b885a7
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Heavy-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1--base.tfm
new file mode 100644
index 0000000000..fe01ac03fb
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1.tfm
new file mode 100644
index 0000000000..0082843d1d
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ot1.tfm
new file mode 100644
index 0000000000..d17d5844ac
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1--base.tfm
new file mode 100644
index 0000000000..b0449569ba
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1.tfm
new file mode 100644
index 0000000000..d533036643
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..55825addbc
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1.tfm
new file mode 100644
index 0000000000..030435f5e3
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..0b8bb6841b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1.tfm
new file mode 100644
index 0000000000..ee54ee3801
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1--base.tfm
new file mode 100644
index 0000000000..8440468f10
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1.tfm
new file mode 100644
index 0000000000..262987044f
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..f910ce8022
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1.tfm
new file mode 100644
index 0000000000..d38d483c18
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-HeavyItalic-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1--base.tfm
new file mode 100644
index 0000000000..a87ac9bf3f
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1.tfm
new file mode 100644
index 0000000000..721670dd5f
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ot1.tfm
new file mode 100644
index 0000000000..51807c4cac
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1--base.tfm
new file mode 100644
index 0000000000..b369356f08
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1.tfm
new file mode 100644
index 0000000000..f1f0da39e1
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..9812a1fb46
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1.tfm
new file mode 100644
index 0000000000..4e0d7f0da5
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..c0ae17f4e8
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1.tfm
new file mode 100644
index 0000000000..370f0bdf6b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1--base.tfm
new file mode 100644
index 0000000000..23a8c4676e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1.tfm
new file mode 100644
index 0000000000..e2832395e7
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..b50b7ee4eb
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1.tfm
new file mode 100644
index 0000000000..9e126de149
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Light-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1--base.tfm
new file mode 100644
index 0000000000..6d25905ced
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1.tfm
new file mode 100644
index 0000000000..1680317ef5
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ot1.tfm
new file mode 100644
index 0000000000..7c92c142ec
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1--base.tfm
new file mode 100644
index 0000000000..bcbbdf1d59
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1.tfm
new file mode 100644
index 0000000000..9fe9ae1c4f
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..f884e80139
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1.tfm
new file mode 100644
index 0000000000..129ba81e00
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..a5add66d0d
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1.tfm
new file mode 100644
index 0000000000..ee35c9c349
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1--base.tfm
new file mode 100644
index 0000000000..a6a35eb86c
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1.tfm
new file mode 100644
index 0000000000..84bd325764
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..1e49ad9fa4
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1.tfm
new file mode 100644
index 0000000000..18d371c4be
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-LightItalic-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1--base.tfm
new file mode 100644
index 0000000000..5e3f870e1a
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1.tfm
new file mode 100644
index 0000000000..72dbfa9db1
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ot1.tfm
new file mode 100644
index 0000000000..e507fb6101
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1--base.tfm
new file mode 100644
index 0000000000..854784c9ce
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1.tfm
new file mode 100644
index 0000000000..9692f5aa7a
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..47bb80fee3
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1.tfm
new file mode 100644
index 0000000000..22b01b6614
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..3c29cb16d0
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1.tfm
new file mode 100644
index 0000000000..355048a182
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1--base.tfm
new file mode 100644
index 0000000000..3919e59ada
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1.tfm
new file mode 100644
index 0000000000..d376764a8c
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..77e9553b6e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1.tfm
new file mode 100644
index 0000000000..c343af9e55
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Medium-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1--base.tfm
new file mode 100644
index 0000000000..452b8ef0d7
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1.tfm
new file mode 100644
index 0000000000..0c37086c69
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ot1.tfm
new file mode 100644
index 0000000000..b832adbec5
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1--base.tfm
new file mode 100644
index 0000000000..c6decfb8af
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1.tfm
new file mode 100644
index 0000000000..ce2d9a296b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..e32563b788
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1.tfm
new file mode 100644
index 0000000000..c33f33208e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..884f31923b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1.tfm
new file mode 100644
index 0000000000..2db56aee1c
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1--base.tfm
new file mode 100644
index 0000000000..784e9ed9b4
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1.tfm
new file mode 100644
index 0000000000..bdd546a850
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..1dc10580b1
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1.tfm
new file mode 100644
index 0000000000..2befed8044
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-MediumItalic-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1--base.tfm
new file mode 100644
index 0000000000..b2ece485c4
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1.tfm
new file mode 100644
index 0000000000..a48b041a28
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ot1.tfm
new file mode 100644
index 0000000000..de2789d25e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1--base.tfm
new file mode 100644
index 0000000000..8916737bf4
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1.tfm
new file mode 100644
index 0000000000..ae540fef7f
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..33aad46d6c
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1.tfm
new file mode 100644
index 0000000000..99f2a6a99d
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..e4161a34d4
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1.tfm
new file mode 100644
index 0000000000..73c201d8d7
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1--base.tfm
new file mode 100644
index 0000000000..b0e7884bfb
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1.tfm
new file mode 100644
index 0000000000..57b7d3559e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..dff004ec89
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1.tfm
new file mode 100644
index 0000000000..45a88050f2
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Semibold-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1--base.tfm
new file mode 100644
index 0000000000..d63da08a93
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1.tfm
new file mode 100644
index 0000000000..a85bc5d63e
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ot1.tfm
new file mode 100644
index 0000000000..944f8156ea
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1--base.tfm
new file mode 100644
index 0000000000..37474d4641
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1.tfm
new file mode 100644
index 0000000000..dfd8162ffb
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..04dd0fcf05
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1.tfm
new file mode 100644
index 0000000000..2d1bf7836b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..c0357d7fd7
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1.tfm
new file mode 100644
index 0000000000..e8597bc928
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1--base.tfm
new file mode 100644
index 0000000000..cafba2cc59
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1.tfm
new file mode 100644
index 0000000000..48927591f3
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..355b1f3e2b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1.tfm
new file mode 100644
index 0000000000..9bff33b760
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-SemiboldItalic-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1--base.tfm
new file mode 100644
index 0000000000..d6ddcc8c28
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1.tfm
new file mode 100644
index 0000000000..0b525345c7
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ot1.tfm
new file mode 100644
index 0000000000..b951cc1031
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1--base.tfm
new file mode 100644
index 0000000000..7c98dd7a8a
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1.tfm
new file mode 100644
index 0000000000..6295c50bd0
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..9d0a17f483
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1.tfm
new file mode 100644
index 0000000000..cdfef87260
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..d88a80f31b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1.tfm
new file mode 100644
index 0000000000..16692128a5
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1--base.tfm
new file mode 100644
index 0000000000..9fdc7380cd
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1.tfm
new file mode 100644
index 0000000000..dbdf8a84c9
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..a579faea7b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1.tfm
new file mode 100644
index 0000000000..c94eeb8918
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-Thin-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1--base.tfm
new file mode 100644
index 0000000000..9cb8d9db6b
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1.tfm
new file mode 100644
index 0000000000..044fca0e79
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ot1.tfm
new file mode 100644
index 0000000000..ad1c74addb
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1--base.tfm
new file mode 100644
index 0000000000..25b03f0742
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1.tfm
new file mode 100644
index 0000000000..01f48c84fd
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-sup-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1--base.tfm
new file mode 100644
index 0000000000..a2d38d51df
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1.tfm
new file mode 100644
index 0000000000..fbfdf821b3
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ly1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1--base.tfm
new file mode 100644
index 0000000000..32fec3562c
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1.tfm
new file mode 100644
index 0000000000..07e3c5f6cb
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ot1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1--base.tfm
new file mode 100644
index 0000000000..2e384c1b93
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1.tfm
new file mode 100644
index 0000000000..e89235b10c
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-t1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1--base.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1--base.tfm
new file mode 100644
index 0000000000..88b18a7a52
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1--base.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1.tfm b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1.tfm
new file mode 100644
index 0000000000..4fb0efc005
--- /dev/null
+++ b/fonts/cooperhewitt/tfm/CpHwt-ThinItalic-tlf-ts1.tfm
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-Bold.pfb b/fonts/cooperhewitt/type1/CpHwt-Bold.pfb
new file mode 100644
index 0000000000..0de033f252
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-Bold.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-BoldItalic.pfb b/fonts/cooperhewitt/type1/CpHwt-BoldItalic.pfb
new file mode 100644
index 0000000000..fdc209303a
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-BoldItalic.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-Book.pfb b/fonts/cooperhewitt/type1/CpHwt-Book.pfb
new file mode 100644
index 0000000000..7502879ea8
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-Book.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-BookItalic.pfb b/fonts/cooperhewitt/type1/CpHwt-BookItalic.pfb
new file mode 100644
index 0000000000..58801a27e9
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-BookItalic.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-Heavy.pfb b/fonts/cooperhewitt/type1/CpHwt-Heavy.pfb
new file mode 100644
index 0000000000..007beae50f
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-Heavy.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-HeavyItalic.pfb b/fonts/cooperhewitt/type1/CpHwt-HeavyItalic.pfb
new file mode 100644
index 0000000000..8209e83aef
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-HeavyItalic.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-Light.pfb b/fonts/cooperhewitt/type1/CpHwt-Light.pfb
new file mode 100644
index 0000000000..0358ae7fe3
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-Light.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-LightItalic.pfb b/fonts/cooperhewitt/type1/CpHwt-LightItalic.pfb
new file mode 100644
index 0000000000..45dcd5b736
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-LightItalic.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-Medium.pfb b/fonts/cooperhewitt/type1/CpHwt-Medium.pfb
new file mode 100644
index 0000000000..b2d66c8d12
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-Medium.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-MediumItalic.pfb b/fonts/cooperhewitt/type1/CpHwt-MediumItalic.pfb
new file mode 100644
index 0000000000..865e3b9beb
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-MediumItalic.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-Semibold.pfb b/fonts/cooperhewitt/type1/CpHwt-Semibold.pfb
new file mode 100644
index 0000000000..175f036e66
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-Semibold.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-SemiboldItalic.pfb b/fonts/cooperhewitt/type1/CpHwt-SemiboldItalic.pfb
new file mode 100644
index 0000000000..948d305191
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-SemiboldItalic.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-Thin.pfb b/fonts/cooperhewitt/type1/CpHwt-Thin.pfb
new file mode 100644
index 0000000000..7bf2041fdc
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-Thin.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/type1/CpHwt-ThinItalic.pfb b/fonts/cooperhewitt/type1/CpHwt-ThinItalic.pfb
new file mode 100644
index 0000000000..49dc9d8b0b
--- /dev/null
+++ b/fonts/cooperhewitt/type1/CpHwt-ThinItalic.pfb
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Bold-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Bold-sup-ly1.vf
new file mode 100644
index 0000000000..1b4c2e3add
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Bold-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Bold-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Bold-sup-t1.vf
new file mode 100644
index 0000000000..43d4fc9d38
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Bold-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ly1.vf
new file mode 100644
index 0000000000..a1ac815522
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ot1.vf
new file mode 100644
index 0000000000..c337adbeb0
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-t1.vf
new file mode 100644
index 0000000000..05f52596b6
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ts1.vf
new file mode 100644
index 0000000000..fc226a125b
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Bold-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-ly1.vf
new file mode 100644
index 0000000000..a7f4f5e4ce
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-t1.vf
new file mode 100644
index 0000000000..b6c829c052
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ly1.vf
new file mode 100644
index 0000000000..a9894231ad
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ot1.vf
new file mode 100644
index 0000000000..654727056c
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-t1.vf
new file mode 100644
index 0000000000..063ef6c890
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ts1.vf
new file mode 100644
index 0000000000..be182ec4d6
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BoldItalic-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Book-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Book-sup-ly1.vf
new file mode 100644
index 0000000000..779c2bc732
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Book-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Book-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Book-sup-t1.vf
new file mode 100644
index 0000000000..eb47a5bbed
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Book-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ly1.vf
new file mode 100644
index 0000000000..c91d535433
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ot1.vf
new file mode 100644
index 0000000000..1be347ed62
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Book-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Book-tlf-t1.vf
new file mode 100644
index 0000000000..9c9d3c76b6
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Book-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ts1.vf
new file mode 100644
index 0000000000..5d0c3bff24
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Book-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-ly1.vf
new file mode 100644
index 0000000000..3076e6319e
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-t1.vf
new file mode 100644
index 0000000000..85fcd34875
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BookItalic-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ly1.vf
new file mode 100644
index 0000000000..506b9e3bf7
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ot1.vf
new file mode 100644
index 0000000000..d555f9ea81
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-t1.vf
new file mode 100644
index 0000000000..191a5c11a0
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ts1.vf
new file mode 100644
index 0000000000..1d4ef43567
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-BookItalic-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Heavy-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Heavy-sup-ly1.vf
new file mode 100644
index 0000000000..2415772081
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Heavy-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Heavy-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Heavy-sup-t1.vf
new file mode 100644
index 0000000000..e61b398ad5
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Heavy-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ly1.vf
new file mode 100644
index 0000000000..c70db9f0fe
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ot1.vf
new file mode 100644
index 0000000000..bddadf84fb
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-t1.vf
new file mode 100644
index 0000000000..e2a0ae87ab
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ts1.vf
new file mode 100644
index 0000000000..89493310be
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Heavy-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-ly1.vf
new file mode 100644
index 0000000000..76a3f38d2b
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-t1.vf
new file mode 100644
index 0000000000..b98c00cb34
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ly1.vf
new file mode 100644
index 0000000000..4985d1e597
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ot1.vf
new file mode 100644
index 0000000000..be152561a7
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-t1.vf
new file mode 100644
index 0000000000..522f4753a3
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ts1.vf
new file mode 100644
index 0000000000..ea19ddbb37
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-HeavyItalic-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Light-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Light-sup-ly1.vf
new file mode 100644
index 0000000000..eaacce5194
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Light-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Light-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Light-sup-t1.vf
new file mode 100644
index 0000000000..135b7d0954
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Light-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ly1.vf
new file mode 100644
index 0000000000..bf97e37e3d
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ot1.vf
new file mode 100644
index 0000000000..e7eec51d6b
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Light-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Light-tlf-t1.vf
new file mode 100644
index 0000000000..bc045f9f96
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Light-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ts1.vf
new file mode 100644
index 0000000000..700d9e2a3a
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Light-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-ly1.vf
new file mode 100644
index 0000000000..cb70fdffbd
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-t1.vf
new file mode 100644
index 0000000000..b0dc3a5de5
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-LightItalic-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ly1.vf
new file mode 100644
index 0000000000..f6520da585
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ot1.vf
new file mode 100644
index 0000000000..138db66c46
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-t1.vf
new file mode 100644
index 0000000000..3d263076b5
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ts1.vf
new file mode 100644
index 0000000000..7c30681b34
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-LightItalic-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Medium-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Medium-sup-ly1.vf
new file mode 100644
index 0000000000..638b9d7ef7
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Medium-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Medium-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Medium-sup-t1.vf
new file mode 100644
index 0000000000..b85067f77d
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Medium-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ly1.vf
new file mode 100644
index 0000000000..07dc3829eb
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ot1.vf
new file mode 100644
index 0000000000..904a233fda
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-t1.vf
new file mode 100644
index 0000000000..41c05ecef9
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ts1.vf
new file mode 100644
index 0000000000..e71da39700
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Medium-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-ly1.vf
new file mode 100644
index 0000000000..496960c643
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-t1.vf
new file mode 100644
index 0000000000..e61e596493
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ly1.vf
new file mode 100644
index 0000000000..b8a612ad53
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ot1.vf
new file mode 100644
index 0000000000..6a946714f9
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-t1.vf
new file mode 100644
index 0000000000..db1f1eef93
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ts1.vf
new file mode 100644
index 0000000000..4f089ac8fe
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-MediumItalic-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Semibold-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Semibold-sup-ly1.vf
new file mode 100644
index 0000000000..a9d3d6897a
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Semibold-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Semibold-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Semibold-sup-t1.vf
new file mode 100644
index 0000000000..b7d0cd0a1a
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Semibold-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ly1.vf
new file mode 100644
index 0000000000..6756ebe3fb
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ot1.vf
new file mode 100644
index 0000000000..6fb96c4ded
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-t1.vf
new file mode 100644
index 0000000000..eede2cb13d
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ts1.vf
new file mode 100644
index 0000000000..eca99744c8
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Semibold-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-ly1.vf
new file mode 100644
index 0000000000..33e1c7cd0e
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-t1.vf
new file mode 100644
index 0000000000..c3f445ba8b
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ly1.vf
new file mode 100644
index 0000000000..efab74a424
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ot1.vf
new file mode 100644
index 0000000000..3dc8de0034
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-t1.vf
new file mode 100644
index 0000000000..aedd3e8388
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ts1.vf
new file mode 100644
index 0000000000..887f28b480
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-SemiboldItalic-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Thin-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Thin-sup-ly1.vf
new file mode 100644
index 0000000000..849d45aec4
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Thin-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Thin-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Thin-sup-t1.vf
new file mode 100644
index 0000000000..98a5d3fc42
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Thin-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ly1.vf
new file mode 100644
index 0000000000..dc5d0756d9
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ot1.vf
new file mode 100644
index 0000000000..c7a7104583
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-t1.vf
new file mode 100644
index 0000000000..48347ed713
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ts1.vf
new file mode 100644
index 0000000000..d049367111
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-Thin-tlf-ts1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-ly1.vf
new file mode 100644
index 0000000000..33c9533b89
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-t1.vf b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-t1.vf
new file mode 100644
index 0000000000..6588768d3e
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-sup-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ly1.vf b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ly1.vf
new file mode 100644
index 0000000000..62e580087a
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ly1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ot1.vf b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ot1.vf
new file mode 100644
index 0000000000..89ee951663
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ot1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-t1.vf b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-t1.vf
new file mode 100644
index 0000000000..59c1069dde
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-t1.vf
Binary files differ
diff --git a/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ts1.vf b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ts1.vf
new file mode 100644
index 0000000000..41d6b6a7de
--- /dev/null
+++ b/fonts/cooperhewitt/vf/CpHwt-ThinItalic-tlf-ts1.vf
Binary files differ
diff --git a/macros/latex/contrib/docshots/DEPENDS.txt b/macros/latex/contrib/docshots/DEPENDS.txt
index 194336badc..da7d048685 100644
--- a/macros/latex/contrib/docshots/DEPENDS.txt
+++ b/macros/latex/contrib/docshots/DEPENDS.txt
@@ -4,3 +4,5 @@ hard pdfcrop
hard pgf
hard pgf-blur
hard pgfopts
+hard listings
+hard minted \ No newline at end of file
diff --git a/macros/latex/contrib/docshots/docshots.dtx b/macros/latex/contrib/docshots/docshots.dtx
index 18f9b6356a..8dfd11cf52 100644
--- a/macros/latex/contrib/docshots/docshots.dtx
+++ b/macros/latex/contrib/docshots/docshots.dtx
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{docshots}
%<*package>
-[2022-10-17 0.0.3 TeX Samples Next to Their PDF Snapshots in DTX]
+[2022-10-18 0.0.4 TeX Samples Next to Their PDF Snapshots in DTX]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -306,6 +306,52 @@ Hello, world!
%</verb>
%\fi
+% \DescribeMacro{log}
+% With |log| option you can make us print all possible logs to the main \TeX{} log.
+% By default, we don't do this and you won't see the output of |pdflatex| compilation, for example.
+% Just use it like this:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\usepackage[log]{docshot}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
+% \DescribeMacro{inputminted}
+% By default, we render the verbatim text using |\VerbatimInput| command. You
+% can change that and make us use |\inputminted|
+% from \href{https://ctan.org/pkg/minted}{minted} package instead, for example:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\usepackage{minted}
+\setminted[java]{frame=lines,framesep=2mm}
+\usepackage[inputminted=java]{docshot}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
+% \DescribeMacro{lstinputlisting}
+% By default, we render the verbatim text using |\VerbatimInput| command. You
+% can change that and make us use |\lstinputlisting| from
+% \href{https://ctan.org/pkg/listings}{listings} package instead, for example:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\usepackage{listings}
+\lstset{basicstyle=\small}
+\usepackage[lstinputlisting]{docshot}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
% \section{Prerequisites}
% \DescribeMacro{\docshotPrerequisite}
@@ -402,6 +448,10 @@ Hello, world!
\pgfkeys{
/docshots/.cd,
dtx/.store in=\docshots@dtx,
+ log/.store in=\docshots@log,
+ log/.default=,
+ lstinputlisting/.store in=\docshots@lstinputlisting,
+ inputminted/.store in=\docshots@inputminted,
tmpdir/.store in=\docshots@tmpdir,
tmpdir/.default=_docshots,
small/.store in=\docshots@small,
@@ -422,24 +472,24 @@ Hello, world!
left/.default=.3\linewidth,
right/.store in=\docshots@right,
right/.default=.55\linewidth,
- tmpdir,pdflatex,gs,pdfcrop,margin,hspace,left,right,runs
+ tmpdir,pdflatex,gs,pdfcrop,margin,hspace,left,right,runs,log
}
\ProcessPgfOptions{/docshots}
% \end{macrocode}
% Then, we print the version of |pdflatex| to \TeX{} log:
% \begin{macrocode}
-\iexec[log,quiet]{\docshots@pdflatex\space --version}%
+\iexec[\docshots@log,quiet]{\docshots@pdflatex\space --version}%
% \end{macrocode}
% Then, we print the version of \href{https://ctan.org/pkg/pdfcrop}{pdfcrop} to \TeX{} log:
% \begin{macrocode}
-\iexec[log,quiet]{\docshots@pdfcrop\space --version}%
+\iexec[\docshots@log,quiet]{\docshots@pdfcrop\space --version}%
% \end{macrocode}
% Then, we print the version of |ghostscript| to \TeX{} log:
% \begin{macrocode}
-\iexec[log,quiet]{\docshots@gs\space --version}%
+\iexec[\docshots@log,quiet]{\docshots@gs\space --version}%
% \end{macrocode}
% Then, we make a directory where all temporary files will be kept:
@@ -464,7 +514,8 @@ Hello, world!
% \end{macrocode}
% We calculate MD5 hashsum of the file content:
% \begin{macrocode}
- \def\hash{\pdfmdfivesum file {\docshots@tmpdir/\jobname/verbatim.tex}}%
+ \def\hash{\pdfmdfivesum file
+ {\docshots@tmpdir/\jobname/verbatim.tex}}%
% \end{macrocode}
% If the PDF with the required name already exists, we ignore this step.
% Otherwise, we copy |verbatim.tex| into new file and run |pdflatex|:
@@ -472,10 +523,10 @@ Hello, world!
\IfFileExists{\docshots@tmpdir/\jobname/\hash.pdf}
{\message{docshots: won't render, the PDF already exists
(\docshots@tmpdir/\jobname/\hash.pdf)^^J}}
- {\iexec[log,quiet]{cp \docshots@tmpdir/\jobname/verbatim.tex
+ {\iexec[\docshots@log,quiet]{cp \docshots@tmpdir/\jobname/verbatim.tex
\docshots@tmpdir/\jobname/\hash.tex}%
\foreach \n in {1,...,\docshots@runs}{
- \iexec[log,quiet]{cd \docshots@tmpdir/\jobname;
+ \iexec[\docshots@log,quiet]{cd \docshots@tmpdir/\jobname;
\docshots@pdflatex\space
-interaction=errorstopmode
-halt-on-error
@@ -483,16 +534,16 @@ Hello, world!
\hash.tex}
\message{docshots: pdflatex run no.\n^^J}
\IfFileExists{\docshots@tmpdir/\jobname/after.sh}
- {\iexec[log,quiet]{chmod a+x
+ {\iexec[\docshots@log,quiet]{chmod a+x
\docshots@tmpdir/\jobname/after.sh}
- \iexec[log,quiet]{cd \docshots@tmpdir/\jobname;
+ \iexec[\docshots@log,quiet]{cd \docshots@tmpdir/\jobname;
./after.sh \n\space \hash\space \hash.tex}}
{}}}%
% \end{macrocode}
% Here we delete |after.sh| which may exist here after the last
% compilation of |pdflatex|:
% \begin{macrocode}
- \iexec[log,quiet]{rm -f \docshots@tmpdir/\jobname/after.sh}
+ \iexec[\docshots@log,quiet]{rm -f \docshots@tmpdir/\jobname/after.sh}
% \end{macrocode}
% If a cropped version of the PDF with the required name already exists, we ignore this step.
% Otherwise, we ask |pdfcrop| to crop the PDF:
@@ -500,7 +551,7 @@ Hello, world!
\IfFileExists{\docshots@tmpdir/\jobname/\hash.crop.pdf}
{\message{docshots: on't pdfcrop, the PDF already exists
(\docshots@tmpdir/\jobname/\hash.crop.pdf)^^J}}
- {\iexec[log,quiet]{\docshots@pdfcrop\space
+ {\iexec[\docshots@log,quiet]{\docshots@pdfcrop\space
--margins \docshots@margin\space
\docshots@tmpdir/\jobname/\hash.pdf
\docshots@tmpdir/\jobname/\hash.crop.pdf}}%
@@ -509,7 +560,7 @@ Hello, world!
% \begin{macrocode}
\fvset{numbers=left,numbersep=3pt}%
\fvset{frame=leftline,framerule=.4pt,rulecolor=\color{gray}}%
- \fvset{samepage=true,baselinestretch=1}%
+ \fvset{samepage=true}%
\fvset{baselinestretch=1}%
\ifdefined\docshots@small%
\fvset{fontsize=\small}%
@@ -529,7 +580,14 @@ Hello, world!
\hspace{\docshots@hspace}%
\begin{minipage}[t]{\docshots@right}%
\vspace{0pt}%
- \VerbatimInput{\docshots@tmpdir/\jobname/\hash.tex}%
+ \ifdefined\docshots@lstinputlisting%
+ \lstinputlisting{\docshots@tmpdir/\jobname/\hash.tex}%
+ \else\ifdefined\docshots@inputminted%
+ \inputminted{\docshots@inputminted}
+ {\docshots@tmpdir/\jobname/\hash.tex}%
+ \else%
+ \VerbatimInput{\docshots@tmpdir/\jobname/\hash.tex}%
+ \fi\fi%
\vspace{0pt}%
\end{minipage}%
\par%
@@ -542,7 +600,7 @@ Hello, world!
% Then, we define |\docshotPrerequisite| command:
% \begin{macrocode}
\newcommand\docshotPrerequisite[1]{
- \iexec[log,quiet]{cp #1 \docshots@tmpdir/\jobname}%
+ \iexec[\docshots@log,quiet]{cp #1 \docshots@tmpdir/\jobname}%
\message{docshots: file #1 copied to
\docshots@tmpdir/\jobname/#1^^J}%
}
@@ -553,9 +611,10 @@ Hello, world!
% Finally, we define |\docshotAfter| command:
% \begin{macrocode}
\newcommand\docshotAfter[1]{
- \iexec[log,quiet]{/bin/echo -n '\detokenize{#1}'
+ \iexec[\docshots@log,quiet]{/bin/echo -n '\detokenize{#1}'
> \docshots@tmpdir/\jobname/after.sh}%
- \message{docshots: file \docshots@tmpdir/\jobname/after.sh created^^J}%
+ \message{docshots: file
+ \docshots@tmpdir/\jobname/after.sh created^^J}%
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/docshots/docshots.pdf b/macros/latex/contrib/docshots/docshots.pdf
index b4a800febd..fbec067a70 100644
--- a/macros/latex/contrib/docshots/docshots.pdf
+++ b/macros/latex/contrib/docshots/docshots.pdf
Binary files differ
diff --git a/macros/latex/contrib/ifoddpage/DEPENDS.txt b/macros/latex/contrib/ifoddpage/DEPENDS.txt
new file mode 100644
index 0000000000..0fc4d1f756
--- /dev/null
+++ b/macros/latex/contrib/ifoddpage/DEPENDS.txt
@@ -0,0 +1 @@
+soft ydoc # for compiling the package documentation only
diff --git a/macros/latex/contrib/ifoddpage/README b/macros/latex/contrib/ifoddpage/README.txt
index b71473ec4d..d276e3a5c2 100644
--- a/macros/latex/contrib/ifoddpage/README
+++ b/macros/latex/contrib/ifoddpage/README.txt
@@ -1,9 +1,9 @@
LaTeX package 'ifoddpage'
-~~~~~~~~~~~~~~~~~~~~~~~~
-Copyright (c) 2011 by Martin Scharrer <martin@scharrer-online.de>
-WWW: http://latex.scharrer-online.de/
-CTAN: http://www.ctan.org/pkg/ifoddpage
-Code repository: https://bitbucket.org/martin_scharrer/ifoddpage
+~~~~~~~~~~~~~~~~~~~~~~~~~
+Copyright (c) 2011-2022 by Martin Scharrer <martin.scharrer@web.de>
+License: LaTeX Project Public License, v1.3 or later: http://www.latex-project.org/lppl.txt
+Repository: https://github.com/MartinScharrer/ifoddpage
+Issues: https://github.com/MartinScharrer/ifoddpage/issues
This LaTeX package provides a \ifoddpage conditional to determine if the current page is odd or even.
The macro \checkoddpage must be used direct before to check the page number using a label.
diff --git a/macros/latex/contrib/ifoddpage/ifoddpage.dtx b/macros/latex/contrib/ifoddpage/ifoddpage.dtx
index fe0720777a..699bf54d0a 100644
--- a/macros/latex/contrib/ifoddpage/ifoddpage.dtx
+++ b/macros/latex/contrib/ifoddpage/ifoddpage.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%<=*COPYRIGHT>
-%% Copyright (C) 2011-2012 by Martin Scharrer <martin@scharrer-online.de>
-%% ----------------------------------------------------------------------
+%% Copyright (c) 2011-2022 by Martin Scharrer <martin.scharrer@web.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.
@@ -24,10 +24,10 @@
%<*driver>
\ProvidesFile{ifoddpage.dtx}[%
%<=*DATE>
- 2016/04/23
+ 2022/10/18
%<=/DATE>
%<=*VERSION>
- v1.1
+ v1.2
%<=/VERSION>
DTX file for ifoddpage package]
\documentclass{ydoc}
@@ -65,14 +65,15 @@
%
% \changes{v1.0}{2011/09/13}{First version.}
% \changes{v1.1}{2016/04/23}{Fixed misspelled macro name.}
+% \changes{v1.2}{2022/10/18}{Updated documentation.}
%
%
% \DoNotIndex{\newcommand,\newenvironment}
%
% \GetFileInfo{ifoddpage.dtx}
% \author{Martin Scharrer}
-% \email{martin@scharrer.me}
-% \repository{https://bitbucket.org/martin_scharrer/ifoddpage}
+% \email{martin.scharrer@web.de}
+% \repository{https://github.com/MartinScharrer/ifoddpage}
% \maketitle
%
% \section{Introduction}
@@ -178,20 +179,36 @@
Conditionals for odd/even page detection]
% \end{macrocode}
%
-%
+% \begin{macro}{\c@checkoddpage}
+% Counter |checkoddpage| is needed to give each use of \Macro\checkoddpage an unique ID for
% \begin{macrocode}
\newcount\c@checkoddpage
% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\thecheckoddpage}
+% Expands to the value of |checkoddpage|, i.e. ID of last used \Macro\checkoddpage.
% \begin{macrocode}
\def\thecheckoddpage{\number\c@checkoddpage}
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\ifoddpage}
+% Conditional: true if used on odd page after \Macro\checkoddpage.
% \begin{macrocode}
\newif\ifoddpage
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifoddpageoroneside}
+% Conditional: true if used on odd page after \Macro\checkoddpage.
+% Always true if used in a |oneside| document.
+% \begin{macrocode}
\newif\ifoddpageoroneside
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
\let\oddpage@checkpage\relax
% \end{macrocode}
%
@@ -203,6 +220,8 @@
%
%
% \begin{macro}{\oddpage@label}
+% Produces a LaTeX label using the |checkoddpage| counter.
+% An internal LaTeX macro is used for this.
% \begin{macrocode}
\def\oddpage@label{%
\@newl@bel{checkoddpage}%
@@ -213,6 +232,8 @@
%
%
% \begin{macro}{\oddpage@checkpage}
+% Writes the oddpage label with the current page number to the AUX file,
+% so it can be read back during the following \LaTeX{} runs.
% \begin{macrocode}
\def\oddpage@checkpage#1{%
\@bsphack
@@ -224,6 +245,9 @@
%
%
% \begin{macro}{\oddpage@page}
+% Returns the page number of the last \Macro\checkoddpage macro.
+% If there is no label for it defined in the AUX file, e.g.\ first compile run,
+% then the current page number is used instead as a fallback.
% \begin{macrocode}
\def\oddpage@page{%
\expandafter\ifx\csname checkoddpage@\thecheckoddpage\endcsname\relax
@@ -237,6 +261,13 @@
%
%
% \begin{macro}{\checkoddpage}
+% User macro to check if the current page has an odd page number.
+% Increases |checkoddpage| counter to produce an unique ID for this macro usage.
+% Calls \Macro\oddpage@checkpage to produce a reference entry in the AUX file.
+% Then checks if the \Macro\oddpage@page is odd and sets
+% \Macro{ifoddpage} and \Macro{ifoddpageoroneside} accordantly.
+% Finally checks if the |twoside| setting is active and set \Macro{ifoddpageoroneside}
+% to |true| if so.
% \begin{macrocode}
\DeclareRobustCommand\checkoddpage{%
\stepcounter{checkoddpage}%
@@ -257,6 +288,7 @@
%
%
% \begin{macro}{\@ifoddpage}
+% Wrapper around \Macro{ifoddpage}. Will expand to the next token if odd, to the second token if not.
% \begin{macrocode}
\def\@ifoddpage{%
\ifoddpage
@@ -270,6 +302,7 @@
%
%
% \begin{macro}{\@ifoddpageoroneside}
+% Wrapper around \Macro{ifoddpageoroneside}. Will expand to the next token if odd, to the second token if not.
% \begin{macrocode}
\def\@ifoddpageoroneside{%
\iftwosideoddside
diff --git a/macros/latex/contrib/ifoddpage/ifoddpage.pdf b/macros/latex/contrib/ifoddpage/ifoddpage.pdf
index 3c487f795e..d5c6c142a3 100644
--- a/macros/latex/contrib/ifoddpage/ifoddpage.pdf
+++ b/macros/latex/contrib/ifoddpage/ifoddpage.pdf
Binary files differ
diff --git a/macros/latex/contrib/mfirstuc/CHANGES b/macros/latex/contrib/mfirstuc/CHANGES
index a78e049ba9..d1cc1e183a 100644
--- a/macros/latex/contrib/mfirstuc/CHANGES
+++ b/macros/latex/contrib/mfirstuc/CHANGES
@@ -1,5 +1,57 @@
mfirstuc change log:
+v2.08 (2022-10-14):
+
+ * Reimplemented \makefirstuc in LaTeX3. This change supports
+ UTF-8 with pdflatex.
+
+ Rollback to v2.07 provided:
+
+ \usepackage{mfirstuc}[=v2.07]
+
+ * New command \MFUsentencecase
+
+ This just uses \text_titlecase_first:n
+
+ Principle features of \MFUsentencecase vs \makefirstuc are
+ listed in Table 1 of the manual.
+
+ * \makefirstuc has been rewritten to internally use
+ \MFUsentencecase (via \glsmakefirstuc), but it still parses
+ its argument as in previous versions.
+
+ * New command \MFUexcl{<cs>}
+
+ This adds a command to the case-changing exclusion list.
+ Both \MFUsentencecase and \makefirstuc will skip the
+ identified command and its argument, and apply sentence-casing
+ to the content that follows.
+
+ For example, glossaries.sty v4.50 implements \MFUexcl{\glsadd}
+
+ * New command \MFUblocker{<cs>}
+
+ This adds a command to the blocker list. This is used by
+ \makefirstuc but not \MFUsentencecase. If the command is encountered
+ no case-change will be applied. This is designed for commands
+ that automatically implement a case-change that may have been nested.
+
+ For example, glossaries.sty v4.50 implements \MFUblocker{\Gls}
+
+ * New command \MFUaddmap{<cs1>}{<cs2>}
+
+ Adds a mapping. This is used by \makefirstuc but not
+ \MFUsentencecase. If the first command <cs1> is encountered
+ it will be replaced with the second <cs2>. No case change
+ will be applied. (The case-change, if appropriate,
+ should be dealt with by the replacement command.)
+
+ For example, glossaries.sty v4.50 implements \MFUaddmap{\gls}{\Gls}
+
+ Order of precedence: map, blocker, exclusion
+
+ * New commands \MFUsaveatend and \MFUsave
+
v2.07 (2021-10-15):
* new commands:
diff --git a/macros/latex/contrib/mfirstuc/README b/macros/latex/contrib/mfirstuc/README
index 95e632cfc7..e7ba4933d8 100644
--- a/macros/latex/contrib/mfirstuc/README
+++ b/macros/latex/contrib/mfirstuc/README
@@ -1,6 +1,6 @@
-LaTeX Package : mfirstuc v2.07
+LaTeX Package : mfirstuc v2.08
-Last Modified : 2021-10-15
+Last Modified : 2022-10-14
Author : Nicola Talbot
@@ -26,10 +26,12 @@ package.
LaTeX2HTML
-This package comes with a LaTeX2HTML style file mfirstuc.perl which
-should be placed in the relevant LaTeX2HTML styles directory, but
-note that some commands may not be implemented or may be implemented
-in a different way.
+This package comes with a LaTeX2HTML style file mfirstuc.l2h which
+should be placed in the relevant LaTeX2HTML styles directory and may
+need to have the file extension changed, but note that some commands
+may not be implemented or may be implemented in a different way.
+There's no guarantee that it will continue to work with new
+versions of LaTeX2HTML.
LICENCE
diff --git a/macros/latex/contrib/mfirstuc/mfirstuc-code.pdf b/macros/latex/contrib/mfirstuc/mfirstuc-code.pdf
index f02689d526..7da4d79d1d 100644
--- a/macros/latex/contrib/mfirstuc/mfirstuc-code.pdf
+++ b/macros/latex/contrib/mfirstuc/mfirstuc-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/mfirstuc/mfirstuc-manual.html b/macros/latex/contrib/mfirstuc/mfirstuc-manual.html
index be92120e8f..b2c121f28d 100644
--- a/macros/latex/contrib/mfirstuc/mfirstuc-manual.html
+++ b/macros/latex/contrib/mfirstuc/mfirstuc-manual.html
@@ -1,1720 +1,1393 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
-<html xmlns="http://www.w3.org/1999/xhtml"
->
-<head><title></title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)" />
-<meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)" />
-<!-- xhtml,fn-in,css-in,uni-html4,utf8 -->
-<meta name="src" content="mfirstuc-manual.tex" />
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="generator" content="TeX Parser Library">
+ <title>mfirstuc.sty v2.08:
+sentence and title casing</title>
<style type="text/css">
-
-/* start css.sty */
-.cmr-17{font-size:170%;}
-.cmr-12{font-size:120%;}
-.cmtt-12{font-size:120%;font-family: monospace,monospace;}
-.cmtt-12{font-family: monospace,monospace;}
-.cmtt-12{font-family: monospace,monospace;}
-.cmtt-12{font-family: monospace,monospace;}
-.cmtt-10{font-family: monospace,monospace;}
-.cmtt-10{font-family: monospace,monospace;}
-.cmtt-10{font-family: monospace,monospace;}
-.cmtt-10{font-family: monospace,monospace;}
-.cmss-10{ font-family: sans-serif;}
-.cmss-10{ font-family: sans-serif;}
-.cmtt-9{font-size:90%;font-family: monospace,monospace;}
-.cmtt-9{font-family: monospace,monospace;}
-.cmtt-9{font-family: monospace,monospace;}
-.cmtt-9{font-family: monospace,monospace;}
-.cmitt-10{font-family: monospace,monospace; font-style: italic;}
-.cmti-10{ font-style: italic;}
-.cmbx-10{ font-weight: bold;}
-.cmbxti-10{ font-weight: bold; font-style: italic;}
-.cmssi-10{ font-family: sans-serif; font-style: oblique;}
-.cmssi-10{ font-family: sans-serif; font-style: oblique;}
-p{margin-top:0;margin-bottom:0}
-p.indent{text-indent:0;}
-p + p{margin-top:1em;}
-p + div, p + pre {margin-top:1em;}
-div + p, pre + p {margin-top:1em;}
-a { overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; hyphens: auto; }
-@media print {div.crosslinks {visibility:hidden;}}
-a img { border-top: 0; border-left: 0; border-right: 0; }
-center { margin-top:1em; margin-bottom:1em; }
-td center { margin-top:0em; margin-bottom:0em; }
-.Canvas { position:relative; }
-img.math{vertical-align:middle;}
-div.par-math-display, div.math-display{text-align:center;}
-li p.indent { text-indent: 0em }
-li p:first-child{ margin-top:0em; }
-li p:last-child, li div:last-child { margin-bottom:0.5em; }
-li p:first-child{ margin-bottom:0; }
-li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
-.enumerate1 {list-style-type:decimal;}
-.enumerate2 {list-style-type:lower-alpha;}
-.enumerate3 {list-style-type:lower-roman;}
-.enumerate4 {list-style-type:upper-alpha;}
-div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
-.obeylines-h,.obeylines-v {white-space: nowrap; }
-div.obeylines-v p { margin-top:0; margin-bottom:0; }
-.overline{ text-decoration:overline; }
-.overline img{ border-top: 1px solid black; }
-td.displaylines {text-align:center; white-space:nowrap;}
-.centerline {text-align:center;}
-.rightline {text-align:right;}
-pre.verbatim {font-family: monospace,monospace; text-align:left; clear:both; }
-.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-div.fbox {display:table}
-div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-div.minipage{width:100%;}
-div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
-div.center div {text-align: left;}
-div.flushright, div.flushright div.flushright {text-align: right;}
-div.flushright div {text-align: left;}
-div.flushleft {text-align: left;}
-.underline{ text-decoration:underline; }
-.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
-.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-.framebox-c {text-align:center;}
-.framebox-l {text-align:left;}
-.framebox-r {text-align:right;}
-span.thank-mark{ vertical-align: super }
-span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
-div.footnotes{border-top:solid 1px black; border-bottom:solid 1px black; padding-bottom:1ex; padding-top:0.5ex; margin-right:15%; margin-top:2ex; font-style:italic; font-size:85%;}
-div.footnotes p{margin-top:0; margin-bottom:0; text-indent:0;}
-div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
-table.tabular td p{margin-top:0em;}
-table.tabular {margin-left: auto; margin-right: auto;}
-td p:first-child{ margin-top:0em; }
-td p:last-child{ margin-bottom:0em; }
-div.td00{ margin-left:0pt; margin-right:0pt; }
-div.td01{ margin-left:0pt; margin-right:5pt; }
-div.td10{ margin-left:5pt; margin-right:0pt; }
-div.td11{ margin-left:5pt; margin-right:5pt; }
-table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
-td.td00{ padding-left:0pt; padding-right:0pt; }
-td.td01{ padding-left:0pt; padding-right:5pt; }
-td.td10{ padding-left:5pt; padding-right:0pt; }
-td.td11{ padding-left:5pt; padding-right:5pt; }
-table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
-.hline hr, .cline hr{ height : 0px; margin:0px; }
-.hline td, .cline td{ padding: 0; }
-.hline hr, .cline hr{border:none;border-top:1px solid black;}
-.hline {border-top: 1px solid black;}
-.tabbing-right {text-align:right;}
-div.float, div.figure {margin-left: auto; margin-right: auto;}
-div.float img {text-align:center;}
-div.figure img {text-align:center;}
-.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
-.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;}
-.reversemarginpar{float:left;}
-table.equation {width:100%;}
-.equation td{text-align:center; }
-td.equation { margin-top:1em; margin-bottom:1em; }
-td.equation-label { width:5%; text-align:center; }
-td.eqnarray4 { width:5%; white-space: normal; }
-td.eqnarray2 { width:5%; }
-table.eqnarray-star, table.eqnarray {width:100%;}
-div.eqnarray{text-align:center;}
-div.array {text-align:center;}
-div.pmatrix {text-align:center;}
-table.pmatrix {width:100%;}
-span.pmatrix img{vertical-align:middle;}
-div.pmatrix {text-align:center;}
-table.pmatrix {width:100%;}
-span.bar-css {text-decoration:overline;}
-img.cdots{vertical-align:middle;}
-.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
-.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
-.index-item, .index-subitem, .index-subsubitem {display:block}
-div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
-div.caption span.id{font-weight: bold; white-space: nowrap; }
-h1.partHead{text-align: center}
-p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
-p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
-.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
-.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
-.verse{white-space:nowrap; margin-left:2em}
-div.maketitle {text-align:center;}
-h2.titleHead{text-align:center;}
-div.maketitle{ margin-bottom: 2em; }
-div.author, div.date {text-align:center;}
-div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
-h1.partHead{text-align: center}
-div.abstract p {margin-left:5%; margin-right:5%;}
-div.abstract {width:100%;}
-.abstracttitle{text-align:center;margin-bottom:1em;}
-.alltt P { margin-bottom : 0em; margin-top : 0em; }
-.alltt { margin-bottom : 1em; margin-top : 1em; font-family:monospace,monospace; }
-.warningsymbol { color: red; font-weight: bold;}
-div.important { border : solid red; }
-div.verbatim { font-family: monospace; white-space: nowrap; text-align:left; clear:both; padding-top: 2ex; padding-bottom: 2ex;}
-span#textcolor1{color:#FF0000}
-/* end css.sty */
-
+#main {margin-left: 5%; margin-right: 15%}
+div.tomain {position: absolute; left: 0pt; width: 5%; text-align: right; font-size: x-small;}
+div.tomain a {text-decoration: none;}
+div.labellink {display: inline; font-size: x-small; margin-left: 1em; margin-right: 1em;}
+div.marginleft {position: absolute; left: 0pt; width: 5%;}
+div.marginright {position: absolute; right: 0pt; width: 15%;}
+div.displaymath { display: block; text-align: center; }
+span.eqno { float: right; }
+div.table { display: block; text-align: center; }
+table.tabular-cm
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: center;
+ vertical-align: middle;
+}
+table.tabular-cb
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: center;
+ vertical-align: bottom;
+}
+table.tabular-ct
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: center;
+ vertical-align: top;
+}
+table.tabular-lm
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: left;
+ vertical-align: middle;
+}
+table.tabular-lb
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: left;
+ vertical-align: bottom;
+}
+table.tabular-lt
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: left;
+ vertical-align: top;
+}
+table.tabular-rm
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: right;
+ vertical-align: middle;
+}
+table.tabular-rb
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: right;
+ vertical-align: bottom;
+}
+table.tabular-rt
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: right;
+ vertical-align: top;
+}
+table.tabular-m
+{
+ display: inline-table;
+ border-collapse: collapse;
+ vertical-align: middle;
+}
+table.tabular-b
+{
+ display: inline-table;
+ border-collapse: collapse;
+ vertical-align: bottom;
+}
+table.tabular-t
+{
+ display: inline-table;
+ border-collapse: collapse;
+ vertical-align: top;
+}
+table.tabular-l
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: left;
+}
+table.tabular-c
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: center;
+}
+table.tabular-r
+{
+ display: inline-table;
+ border-collapse: collapse;
+ align: right;
+}
+pre { white-space: pre-wrap; }
+div.figure { display: block; text-align: center; }
+div.caption { display: block; text-align: center; }
+div.marginpar { float: right; }
+div.abstract { display: block; margin-right: 4em; margin-left: 4em;}
+div.title { display: block; text-align: center; font-size: x-large;}
+div.author { display: block; text-align: center; font-size: large;}
+div.date { display: block; text-align: center; font-size: medium;}
+div.bibliography { display: block; margin-left: 4em; }
+div.bibitem { display: inline; float: left; text-indent: -3em; }
+span.numberline { display: inline-block; width: 3em; }
+.toc-subsection span.numberline { display: inline-block; width: 3em; }
+.toc-subsubsection span.numberline { display: inline-block; width: 4em; }
+.toc-paragraph span.numberline { display: inline-block; width: 5em; }
+.toc-subparagraph span.numberline { display: inline-block; width: 6em; }
+nav ul { list-style-type: none; }
+.toc-part { padding-left: 0em; padding-bottom: 1ex; padding-top: 1ex; font-weight: bold; font-size: large;}
+.toc-chapter { padding-left: 0em; padding-bottom: .25ex; padding-top: .25ex; font-weight: bold; }
+.toc-section { padding-left: .5em; }
+.toc-subsection { padding-left: 1.5em; }
+.toc-subsubsection { padding-left: 2em; }
+.toc-paragraph { padding-left: 2.5em; }
+.toc-subparagraph { padding-left: 3em; }
+.part { font-size: x-large; font-weight: bold; }
+div.bigskip { padding-left: 0pt; padding-right: 0pt; padding-top: 0pt; padding-bottom: 2ex;}
+div.medskip { padding-left: 0pt; padding-right: 0pt; padding-top: 0pt; padding-bottom: 1ex;}
+div.smallskip { padding-left: 0pt; padding-right: 0pt; padding-top: 0pt; padding-bottom: .5ex;}
+span.quad { padding-left: 0pt; padding-right: 1em; padding-top: 0pt; padding-bottom: 0pt;}
+span.qquad { padding-left: 0pt; padding-right: 2em; padding-top: 0pt; padding-bottom: 0pt;}
+.displaylist { display: block; list-style-type: none; }
+.inlinelist { display: inline; }
+dl.inlinetitle dt { display: inline-block; margin-left: 0; margin-right: 1em;}
+dl.inlinetitle dd { display: inline; margin: 0; }
+dl.inlinetitle dd::after { display: block; content: ''; }
+dl.inlineblock dt { display: inline-block; margin-left: 0; margin-right: 1em;}
+dl.inlineblock dd { display: inline; margin: 0; }
+dl.inlineblock dd::after { display: block; content: ''; }
+.clearfix::after { content: ""; clear: both; display: table; }
+span.inlineitem { margin-right: .5em; margin-left: .5em; }
+span.numitem { float: left; margin-left: -3em; text-align: right; min-width: 2.5em; }
+span.bulletitem { float: left; margin-left: -1em; }
+span.descitem { font: normal; font-weight: bold; }
+div.indexspace { min-height: 2ex; }
+.cell-noborder-nosep-r {border-top: none; border-right: none; border-left: none; padding-left: 0px; padding-right: 0px; text-align: right; }
+.cell-noborder-bothsep-l {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; padding-right: 6.000000pt; text-align: left; }
+.cell-noborder-bothsep-r {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; padding-right: 6.000000pt; text-align: right; }
+.cell-noborder-bothsep-halfwidth {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; width: 50.000000%; padding-right: 6.000000pt; text-align: left; }
+.cell-noborder-nosep-l {border-top: none; border-right: none; border-left: none; padding-left: 0px; padding-right: 0px; text-align: left; }
+.cell-noborder-rightsep-l {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; padding-right: 0px; text-align: left; }
+.cell-noborder-leftsep-r {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; padding-right: 0px; text-align: right; }
+.cell-noborder-bothsep-c {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; padding-right: 6.000000pt; text-align: center; }
+.cell-noborder-bothsep-eightypc {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; width: 80.000000%; padding-right: 6.000000pt; text-align: left; }
+.cell-noborder-rightsep-c {border-top: none; border-right: none; border-left: none; padding-left: 0px; padding-right: 6.000000pt; text-align: center; }
+.cell-noborder-bothsep-threequarterwidth {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; width: 75.000000%; padding-right: 6.000000pt; text-align: left; }
+.cell-noborder-rightsep-r {border-top: none; border-right: none; border-left: none; padding-left: 0px; padding-right: 6.000000pt; text-align: right; }
+.cell-noborder-bothsep-quarterwidth {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; width: 25.000000%; padding-right: 6.000000pt; text-align: left; }
+.cell-noborder-rightsep-c {border-top: none; border-right: none; border-left: none; padding-left: 6.000000pt; padding-right: 0px; text-align: center; }
+.cell-noborder-rightsep-l {border-top: none; border-right: none; border-left: none; padding-left: 0px; padding-right: 6.000000pt; text-align: left; }
+.cell-noborder-nosep-c {border-top: none; border-right: none; border-left: none; padding-left: 0px; padding-right: 0px; text-align: center; }
+span.mbox {border-style: none; }
+span.frame {border-style: solid; border-width: 1.000000pt; padding: 0.000000pt; }
+span.boxed {text-align: center; vertical-align: middle; border-style: solid; border-width: 2.000000pt; padding: 0.000000pt; width: 1.000000em; height: 1.000000em; display: inline-block; }
+span.circled {text-align: center; vertical-align: middle; border-style: solid; border-width: 2.000000pt; padding: 1.000000pt; border-radius: 5000.000000%;width: 1.000000em; height: 1.000000em; display: inline-block; }
+span.overlapped {text-align: center; border-style: none; padding: 0.000000pt; width: 1.000000em; height: 1.000000em; display: inline-block; }
+span.overlapper {text-align: center; border-style: none; padding: 0.000000pt; margin-left: -1.000000em; width: 1.000000em; height: 1.000000em; display: inline-block; }
+span.overlappertop {text-align: center; vertical-align: top; border-style: none; padding: 0.000000pt; margin-left: -1.000000em; width: 1.000000em; height: 1.000000em; display: inline-block; }
+span.partialoverlapper {text-align: center; border-style: none; padding: 0.000000pt; margin-left: -0.750000em; width: 1.000000em; height: 1.000000em; display: inline-block; }
+span.quarterleft {text-align: center; vertical-align: middle; border-style: none; padding: 0.000000pt; transform: rotate(-90.000000deg); -ms-transform: rotate(-90.000000deg); -webkit-transform: rotate(-90.000000deg); display: inline-block; }
+span.quarterright {text-align: center; vertical-align: middle; border-style: none; padding: 0.000000pt; transform: rotate(90.000000deg); -ms-transform: rotate(90.000000deg); -webkit-transform: rotate(90.000000deg); display: inline-block; }
+span.eighthleft {text-align: center; vertical-align: middle; border-style: none; padding: 0.000000pt; transform: rotate(-45.000000deg); -ms-transform: rotate(-45.000000deg); -webkit-transform: rotate(-45.000000deg); display: inline-block; }
+span.eighthright {text-align: center; vertical-align: middle; border-style: none; padding: 0.000000pt; transform: rotate(45.000000deg); -ms-transform: rotate(45.000000deg); -webkit-transform: rotate(45.000000deg); display: inline-block; }
+span.halfturn {text-align: center; vertical-align: middle; border-style: none; padding: 0.000000pt; transform: rotate(180.000000deg); -ms-transform: rotate(180.000000deg); -webkit-transform: rotate(180.000000deg); display: inline-block; }
+span.fwsdisabledicon {border-style: none; color: gray; }
+span.fwsactiveicon {border-style: none; color: green; }
+span.glsshowtargetfonttext {font-family: monospace; font-size: x-small; border-style: none; }
+dfn { font-style: normal; font-weight: bold; } a { text-decoration: none; } a:hover { text-decoration: underline; } div.tablefns { border-top: solid; } div.example { border-bottom: solid silver; padding: 20px; } div.example div.title { font-weight: bold; font-size: large; }
+div.sidenote {font-size: x-small; float: right; border-style: none; }
+span.advantage {border-style: none; color: green; }
+span.disadvantage {border-style: none; color: red; }
+strong.strong {font-weight: bold; border-style: none; }
+em.booktitle {font-style: italic; font-variant: normal; border-style: none; }
+code.code {font-family: monospace; border-style: none; }
+code.cmd {font-family: monospace; border-style: none; }
+span.cmdfmt {font-family: monospace; border-style: none; }
+span.comment {border-style: none; color: rgb(94,94,94); }
+code.csfmt {font-family: monospace; border-style: none; color: rgb(84,111,26); }
+span.csfmtfont {font-family: monospace; border-style: none; }
+span.csfmtcolourfont {font-family: monospace; border-style: none; color: rgb(84,111,26); }
+span.appfmt {font-family: monospace; border-style: none; }
+span.styfmt {font-family: monospace; border-style: none; }
+span.clsfmt {font-family: monospace; border-style: none; }
+span.envfmt {font-family: monospace; border-style: none; }
+span.optfmt {font-family: monospace; border-style: none; }
+span.csoptfmt {font-family: monospace; border-style: none; color: rgb(104,34,139); }
+span.styoptfmt {font-family: monospace; border-style: none; color: rgb(104,34,139); }
+span.clsoptfmt {font-family: monospace; border-style: none; }
+span.ctrfmt {font-family: monospace; border-style: none; }
+span.filefmt {font-family: monospace; border-style: none; }
+span.extfmt {font-family: monospace; border-style: none; }
+span.deprecatedorbannedfmt {border-style: none; color: rgb(204,0,0); }
+span.summarylocfmt {font-style: italic; font-variant: normal; border-style: none; }
+span.menufmt {font-family: monospace; border-style: none; }
+code.cbeg {font-family: monospace; border-style: none; }
+code.cend {font-family: monospace; border-style: none; }
+span.termslocfmt {font-style: italic; font-variant: normal; border-style: none; }
+span.crossreftag {font-style: italic; font-variant: normal; border-style: none; }
+div.crossref {border-style: none; margin-left: 1.000000em; }
+span.longargfmt {font-family: monospace; border-style: none; }
+span.shortargfmt {font-family: monospace; border-style: none; }
+span.qt {border-style: none; }
+code.qtt {font-family: monospace; border-style: none; }
+em.metainner {font-style: italic; font-variant: normal; border-style: none; }
+span.meta {font-family: serif; border-style: none; color: black; }
+em.initvalnotefmtinner {font-style: italic; font-variant: normal; border-style: none; }
+span.initvalnotefmt {font-family: serif; border-style: none; color: black; }
+span.summarytag {font-style: italic; font-variant: normal; border-style: none; }
+div.importanttitle {text-align: right; border-style: none; color: red; }
+div.important {border-style: solid; border-color: red; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(255,235,235); }
+div.warningtitle {text-align: right; border-style: none; color: red; }
+div.warning {border-style: solid; border-color: red; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(255,235,235); }
+div.informationtitle {text-align: right; border-style: none; color: rgb(0,128,128); }
+div.information {border-style: solid; border-color: rgb(0,128,128); border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(240,255,255); }
+div.pinnedboxtitle {text-align: right; border-style: none; color: black; }
+div.pinnedbox {border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(255,255,191); }
+div.terminaltitle {text-align: right; border-style: none; color: black; }
+pre.terminal {font-family: monospace; border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(250,250,250); }
+div.transcripttitle {text-align: right; border-style: none; color: black; }
+pre.transcript {font-family: monospace; border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(250,250,250); }
+div.ctrboxtitle {text-align: right; border-style: none; color: black; }
+div.ctrbox {border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(255,255,191); }
+div.codeboxtitle {text-align: right; border-style: none; color: black; }
+pre.codebox {font-family: monospace; border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(250,250,250); }
+div.resultboxtitle {text-align: right; border-style: none; color: black; }
+div.resultbox {border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; }
+div.badcodeboxtitle {text-align: right; border-style: none; color: black; }
+pre.badcodebox {font-family: monospace; border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(250,250,250); }
+div.unicodeboxtitle {text-align: right; border-style: none; color: black; }
+pre.unicodebox {font-family: monospace; border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(250,250,250); }
+pre.compactcodebox {font-family: monospace; border-style: solid; border-color: black; border-width: 1.000000pt; padding: 2.000000pt; background-color: rgb(250,250,250); }
+pre.sidebysidecode {font-family: monospace; font-size: small; vertical-align: top; border-style: solid; border-color: black; border-width: 1.000000pt; padding: 2.000000pt; margin-right: 3.000000%; margin-top: 0.000000pt; background-color: rgb(250,250,250); width: 47.000000%; display: inline-block; }
+div.sidebysideresult {vertical-align: top; border-style: solid; border-color: black; border-width: 1.000000pt; padding: 2.000000pt; margin-top: 0.000000pt; width: 47.000000%; display: inline-block; }
+div.defnbox {border-style: solid; border-color: black; border-width: 1.000000pt; padding: 2.000000pt; background-color: rgb(255,255,191); }
+div.optionsummarybox {border-style: solid; border-color: black; border-width: 1.000000pt; padding: 2.000000pt; background-color: rgb(255,255,191); }
+div.optionvaluesummarybox {border-style: none; margin-left: 40.000000pt; }
+span.floatrightbox {float: right; border-style: none; }
+div.noteBox {border-style: none; }
+div.settingsboxtitle {text-align: right; border-style: none; color: black; }
+div.settingsbox {border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(255,255,227); }
+div.optionvalueboxtitle {text-align: right; border-style: none; color: black; }
+div.optionvaluebox {border-style: solid; border-color: black; border-width: 2.000000pt; padding: 2.000000pt; background-color: rgb(255,255,245); }
+div.nlctuserguideidx0 {border-style: none; margin-left: 0.000000pt; }
+div.nlctuserguideidx1 {border-style: none; margin-left: 20.000000pt; }
+div.nlctuserguideidx2 {border-style: none; margin-left: 40.000000pt; }
+div.nlctusernavbox {border-style: none; }
+div.abstractheader {font-weight: bold; text-align: center; border-style: none; }
+div.filedef {font-family: monospace; text-align: left; border-style: none; }
+div.tablefn {font-size: x-small; border-style: none; }
+div.tablefns {text-align: left; border-style: none; width: 80.000000%; }
</style>
-</head><body
->
-<!--l. 36--><p class="noindent" ><a
- id="top"></a>
-</p><!--l. 36--><p class="indent" >
-
-
-
-</p><!--l. 36--><p class="indent" >
-
-
-
-</p>
-<div class="center"
->
-<!--l. 36--><p class="noindent" >
-</p><!--l. 36--><p class="noindent" ><span
-class="cmr-17">mfirstuc.sty v2.07: uppercasing first letter</span>
-</p>
-<div class="tabular"> <table id="TBL-1" class="tabular"
+</head>
+<body>
+<div id="main">
+ <header><div class="title">mfirstuc.sty v2.08: sentence and title casing</div><!-- end of title --><div class="author">Nicola L.C. Talbot<br>
+
+ Dickimaw Books<br>
+
+ <a href="https://www.dickimaw-books.com/">dickimaw-books.com</a></div><!-- end of author --><div class="date">2022-10-14 </div><!-- end of date --></header><p>
+<p>
+<div class="information"><div class="informationtitle"><a id="wrglossary.1"></a><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
+The <a id="wrglossary.2"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> package was originally part of the <a id="wrglossary.3"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> bundle (added to <a id="wrglossary.4"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> v1.12 in 2008) for use with commands like <a id="wrglossary.5"></a><a href="#glo:Gls"><code class="csfmt">\Gls</code></a>, which need to have the first letter converted to uppercase (<a id="wrglossary.6"></a><a href="#glo:dual.sentence-case">sentence-case</a>), but as the commands provided by <a id="wrglossary.7"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> may be used without <a id="wrglossary.8"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a>, the two were split into separately maintained packages in 2015 (<a id="wrglossary.9"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.0 and <a id="wrglossary.10"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> v4.18). </div><!-- end of information -->
+<p>
+Version 2.08 has reimplemented <a id="wrglossary.11"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> using LaTeX3 commands. If there are any compatibility issues, you can rollback to v2.07: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.12"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\usepackage</code>{mfirstuc}[=2.07]
+</pre><p>
+<nav class="toc">
+<section id="toc"><!-- start of section toc --><div class="tomain"><a href="#main">[top]</a></div>
+<h1><!-- start of chapter header -->Contents<div class="labellink"><a href="#toc">[link]</a></div></h1><!-- end of chapter header -->
+
+<ul>
+<li class="toc-chapter"><a href="#sec:sentencecase"><span class="numberline">1</span>Sentence-Case</a></li><!-- end of toc-chapter -->
+
+<ul>
+<li class="toc-section"><a href="#sec:sentencecaseex"><span class="numberline">1.1</span>Examples</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:sentencecasecmds"><span class="numberline">1.2</span>Sentence Case Commands</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:exclusions"><span class="numberline">1.3</span>Exclusions</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:blockers"><span class="numberline">1.4</span>Blockers</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:mappings"><span class="numberline">1.5</span>Mappings</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:pkgoptions"><span class="numberline">1.6</span>Package Options</a></li><!-- end of toc-section -->
+</ul>
+<li class="toc-chapter"><a href="#sec:capitalisewords"><span class="numberline">2</span>Title-Case</a></li><!-- end of toc-chapter -->
+
+<ul>
+<li class="toc-section"><a href="#sec:nocap"><span class="numberline">2.1</span>Excluding Words From Case-Changing</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:pdfbookmarks"><span class="numberline">2.2</span>PDF Bookmarks</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:titlecaseexamples"><span class="numberline">2.3</span>Examples</a></li><!-- end of toc-section -->
+</ul>
+<li class="toc-chapter"><a href="#sec:misc"><span class="numberline">3</span>Miscellaneous</a></li><!-- end of toc-chapter -->
+
+<ul>
+<li class="toc-section"><a href="#sec:savetoaux"><span class="numberline">3.1</span>Saving exclusions, blockers and mappings in the <span class="extfmt">aux</span> File</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:allcaps"><span class="numberline">3.2</span>All-Caps</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#sec:utf8"><span class="numberline">3.3</span>UTF-8</a></li><!-- end of toc-section -->
+</ul>
+<li class="toc-chapter"><a href="#symbols">Symbols</a></li><!-- end of toc-chapter -->
+
+<li class="toc-chapter"><a href="#glossary">Glossary</a></li><!-- end of toc-chapter -->
+
+<li class="toc-chapter"><a href="#cmdsummary">Command Summary</a></li><!-- end of toc-chapter -->
+
+<ul>
+<li class="toc-section"><a href="#summary.index@">Command Summary: @</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#summary.index6684672">Command Summary: C</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#summary.index6815744">Command Summary: E</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#summary.index6946816">Command Summary: G</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#summary.index7077888">Command Summary: I</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#summary.index7340032">Command Summary: M</a></li><!-- end of toc-section -->
+
+<li class="toc-section"><a href="#summary.index8060928">Command Summary: X</a></li><!-- end of toc-section -->
+</ul>
+<li class="toc-chapter"><a href="#index">Index</a></li><!-- end of toc-chapter -->
+ </ul></nav><!-- end of toc --><p>
+
+</section><!-- end of section toc -->
+
+<section id="sec:sentencecase"><!-- start of section sec:sentencecase --><div class="tomain"><a href="#main">[top]</a></div>
+<h1><!-- start of chapter header -->1. Sentence-Case<div class="labellink"><a href="#sec:sentencecase">[link]</a></div></h1><!-- end of chapter header -->
+<p>
+There are two <a id="wrglossary.13"></a><a href="#glo:dual.sentence-case">sentence-case</a> commands provided: <a id="wrglossary.14"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> and <a id="wrglossary.15"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. A summary of the principle features of the two commands is given in Table <a href="#tab:sentencecasesummary">1.1</a>.<p>
+<div class="table"> <table class="tabular-c">
+<caption id="tab:sentencecasesummary">Table&nbsp;1: Principle features of <code class="csfmt">\MFUsentencecase</code> and <code class="csfmt">\makefirstuc</code></caption><tr style=""><th class="cell-noborder-bothsep-l">Feature </th>
+<td class="cell-noborder-bothsep-c"> <span style="font-weight: bold; "><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> </span></td>
+<td class="cell-noborder-bothsep-c"> <span style="font-weight: bold; "><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a></span></td>
+</tr><tr style=""><td class="cell-noborder-bothsep-l">Can expand? </td>
+<td class="cell-noborder-bothsep-c"> <span class="advantage"><span title="yes" class="icon">✔</span></span></td>
+<td class="cell-noborder-bothsep-c"> <span class="disadvantage"><span title="no" class="icon">✖</span></span></td>
+</tr><tr style=""><td class="cell-noborder-bothsep-l">Supports <a href="#glo:dual.exclusion">exclusions</a>? </td>
+<td class="cell-noborder-bothsep-c"> <span class="advantage"><span title="yes" class="icon">✔</span></span></td>
+<td class="cell-noborder-bothsep-c"> <span class="advantage"><span title="yes" class="icon">✔</span></span></td>
+</tr><tr style=""><td class="cell-noborder-bothsep-l">Supports <a href="#glo:dual.blocker">blockers</a>? </td>
+<td class="cell-noborder-bothsep-c"> <span class="disadvantage"><span title="no" class="icon">✖</span></span></td>
+<td class="cell-noborder-bothsep-c"> <span class="advantage"><span title="yes" class="icon">✔</span></span></td>
+</tr><tr style=""><td class="cell-noborder-bothsep-l">Supports <a href="#glo:dual.mapping">mappings</a>? </td>
+<td class="cell-noborder-bothsep-c"> <span class="disadvantage"><span title="no" class="icon">✖</span></span></td>
+<td class="cell-noborder-bothsep-c"> <span class="advantage"><span title="yes" class="icon">✔</span></span></td>
+</tr><tr style=""><td class="cell-noborder-bothsep-l">Semantic commands must be robust? </td>
+<td class="cell-noborder-bothsep-c"> <span class="disadvantage"><span title="yes" class="icon">✔</span></span></td>
+<td class="cell-noborder-bothsep-c"> <span class="advantage"><span title="no" class="icon">✖</span></span></td>
+</tr></table>
+ </div><p>
+
+</section><!-- end of section sec:sentencecase -->
+
+<section id="sec:sentencecaseex"><!-- start of section sec:sentencecaseex --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->1.1. Examples<div class="labellink"><a href="#sec:sentencecaseex">[link]</a></div></h2><!-- end of section header -->
+<p>
+Text only (leading <a id="wrglossary.16"></a><a href="#glo:dual.utf8">UTF-8</a> now supported): <div style="text-align: center; border-style: none; "><a id="wrglossary.17"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a><a id="wrglossary.18"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of frame@coderesult@title -->
+<p>
+<pre class="sidebysidecode">
+<a id="wrglossary.19"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{élite} /
+<a id="wrglossary.20"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{élite}
+</pre><div class="sidebysideresult">Élite / Élite </div><p>
+<p>
+Leading <a id="wrglossary.21"></a><a href="#glo:idx.punctuation">punctuation</a> is ignored: <div style="text-align: center; border-style: none; "><a id="wrglossary.22"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a><a id="wrglossary.23"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of frame@coderesult@title -->
+<p>
+<pre class="sidebysidecode">
+<a id="wrglossary.24"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{`word'} /
+<a id="wrglossary.25"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{`word'}
+</pre><div class="sidebysideresult">‘Word’ / ‘Word’ </div><p>
+ However, if the <a id="wrglossary.26"></a><a href="#glo:idx.punctuation">punctuation</a> character is followed by a <a id="wrglossary.27"></a><a href="#glo:dual.blocker">blocker</a> or <a id="wrglossary.28"></a><a href="#glo:dual.mapping">mapping</a> command, the <a id="wrglossary.29"></a><a href="#glo:idx.punctuation">punctuation</a> will need to be excluded otherwise the command will be treated as an <a id="wrglossary.30"></a><a href="#glo:dual.exclusion">exclusion</a>. If possible, use <a id="wrglossary.31"></a><a href="#glo:@@glslabel@semanticcommand">semantic markup</a> instead of directly including the <a id="wrglossary.32"></a><a href="#glo:idx.punctuation">punctuation</a>.<p>
+Fragile commands need to be protected with <a id="wrglossary.33"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.34"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newcommand</code>{<code class="cmd">\alert</code>}[1]{<code class="cmd">\textcolor</code>{red}{<code class="cmd">\textbf</code>{#1}}}
+<a id="wrglossary.35"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\alert</code>{élite}} /
+<a id="wrglossary.36"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<strong class="strong"><code class="cmd">\protect</code></strong><code class="cmd">\alert</code>{élite}}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.37"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <span style="color: rgb(255,0,0)"><span style="font-weight: bold; ">Élite</span></span> / <span style="color: rgb(255,0,0)"><span style="font-weight: bold; ">Élite</span></span> </div><!-- end of resultbox -->
+<p>
+<a id="wrglossary.38"></a><a href="#glo:dual.exclusion">Exclusions</a> are supported by both <a id="wrglossary.39"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> and <a id="wrglossary.40"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.41"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.42"></a><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a>{<a id="wrglossary.43"></a><a href="#glo:index"><code class="csfmt">\index</code></a>}
+<a id="wrglossary.44"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.45"></a><a href="#glo:index"><code class="csfmt">\index</code></a>{word}example} /
+<a id="wrglossary.46"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.47"></a><a href="#glo:index"><code class="csfmt">\index</code></a>{word}example}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.48"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ Example / Example </div><!-- end of resultbox -->
+<p>
+<a id="wrglossary.49"></a><a href="#glo:dual.blocker">Blockers</a> are only supported by <a id="wrglossary.50"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. They are treated as <a id="wrglossary.51"></a><a href="#glo:dual.exclusion">exclusions</a> with <a id="wrglossary.52"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, which produces a different result: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.53"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.54"></a><a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a>{<a id="wrglossary.55"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>}
+<a id="wrglossary.56"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.57"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>{sec:sentencecase} section} /
+<a id="wrglossary.58"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.59"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>{sec:sentencecase} section}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.60"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <a href="#sec:sentencecase">Sentence-Case</a> section / <a href="#sec:sentencecase">Sentence-Case</a> Section </div><!-- end of resultbox -->
+<p>
+<a id="wrglossary.61"></a><a href="#glo:dual.mapping">Mappings</a> are only supported by <a id="wrglossary.62"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. They are treated as <a id="wrglossary.63"></a><a href="#glo:dual.exclusion">exclusions</a> with <a id="wrglossary.64"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, which produces a different result: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.65"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newrobustcmd</code>{<code class="cmd">\secref</code>}[1]{section~<code class="cmd">\ref</code>{#1}}
+<code class="cmd">\newrobustcmd</code>{<code class="cmd">\Secref</code>}[1]{Section~<code class="cmd">\ref</code>{#1}}
+<a id="wrglossary.66"></a><a href="#glo:MFUaddmap"><code class="csfmt">\MFUaddmap</code></a>{<code class="cmd">\secref</code>}{<code class="cmd">\Secref</code>}
+<a id="wrglossary.67"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\secref</code>{sec:sentencecase} example} /
+<a id="wrglossary.68"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<code class="cmd">\secref</code>{sec:sentencecase} example}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.69"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ Section <a href="#sec:sentencecase">1</a> example / section <a href="#sec:sentencecase">1</a> Example </div><!-- end of resultbox -->
+<p>
+Argument expansion: <a id="wrglossary.70"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> expands its argument and then skips exclusions whereas <a id="wrglossary.71"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> parses its argument without expansion and then passes the relevant content to <a id="wrglossary.72"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a>. Note that different results will occur with the <a id="wrglossary.73"></a><a href="#glo:opt.expanded"><span class="optfmt">expanded</span></a> and <a id="wrglossary.74"></a><a href="#glo:opt.unexpanded"><span class="optfmt">unexpanded</span></a> package options. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.75"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\usepackage</code>[<a id="wrglossary.76"></a><a href="#glo:opt.expanded"><span class="optfmt">expanded</span></a>]{mfirstuc}
+<code class="cmd">\newcommand</code>{<code class="cmd">\testa</code>}{sample}
+<code class="cmd">\newcommand</code>{<code class="cmd">\testb</code>}{<code class="cmd">\testa</code><code class="cmd">\ </code>test}
+<code class="cbeg">\begin{document}</code>
+<a id="wrglossary.77"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\testb</code>} / <a id="wrglossary.78"></a><a href="#glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></a>{<code class="cmd">\testb</code>} /
+<a id="wrglossary.79"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a>{<code class="cmd">\testb</code>} / <a id="wrglossary.80"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<code class="cmd">\testb</code>}
+<code class="cend">\end{document}</code>
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.81"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+Sample test / Sample test / Sample test / Sample test </div><!-- end of resultbox -->
+ With the default <a id="wrglossary.82"></a><a href="#glo:opt.unexpanded"><span class="optfmt">unexpanded</span></a> option the result is: <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.83"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ sample test / sample Test / Sample test / Sample test </div><!-- end of resultbox -->
+ Note that this is different from the result in earlier versions of <a id="wrglossary.84"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a>. <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.85"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\usepackage</code>{mfirstuc}[=v2.07]
+<code class="cmd">\newcommand</code>{<code class="cmd">\testa</code>}{sample}
+<code class="cmd">\newcommand</code>{<code class="cmd">\testb</code>}{<code class="cmd">\testa</code><code class="cmd">\ </code>test}
+<code class="cbeg">\begin{document}</code>
+<a id="wrglossary.86"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\testb</code>} / <a id="wrglossary.87"></a><a href="#glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></a>{<code class="cmd">\testb</code>} /
+<a id="wrglossary.88"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a>{<code class="cmd">\testb</code>}
+<code class="cend">\end{document}</code>
+</pre> This produces: <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.89"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+SAMPLE TEST / SAMPLE test / Sample test </div><!-- end of resultbox -->
+ If this old result is required, either use rollback or try the <a id="wrglossary.90"></a><a href="#glo:opt.grabfirst"><span class="optfmt">grabfirst</span></a> option.<p>
+Argument expansion with <a id="wrglossary.91"></a><a href="#glo:dual.mapping">mappings</a> (and the default <a id="wrglossary.92"></a><a href="#glo:opt.unexpanded"><span class="optfmt">unexpanded</span></a> option): <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.93"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newrobustcmd</code>{<code class="cmd">\secref</code>}[1]{section~<code class="cmd">\ref</code>{#1}}
+<code class="cmd">\newrobustcmd</code>{<code class="cmd">\Secref</code>}[1]{Section~<code class="cmd">\ref</code>{#1}}
+<a id="wrglossary.94"></a><a href="#glo:MFUaddmap"><code class="csfmt">\MFUaddmap</code></a>{<code class="cmd">\secref</code>}{<code class="cmd">\Secref</code>}
+<code class="cmd">\newcommand</code>{<code class="cmd">\testa</code>}{<code class="cmd">\secref</code>{sec:sentencecase}}
+<code class="cmd">\newcommand</code>{<code class="cmd">\testb</code>}{<code class="cmd">\testa</code><code class="cmd">\ </code>example}
+<a id="wrglossary.95"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\testb</code>} / <a id="wrglossary.96"></a><a href="#glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></a>{<code class="cmd">\testb</code>} /
+<a id="wrglossary.97"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a>{<code class="cmd">\testb</code>} / <a id="wrglossary.98"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<code class="cmd">\testb</code>}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.99"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ section <a href="#sec:sentencecase">1</a> example / section <a href="#sec:sentencecase">1</a> Example / Section <a href="#sec:sentencecase">1</a> example / section <a href="#sec:sentencecase">1</a> Example </div><!-- end of resultbox -->
+<p>
+
+</section><!-- end of section sec:sentencecaseex -->
+
+<section id="sec:sentencecasecmds"><!-- start of section sec:sentencecasecmds --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->1.2. Sentence Case Commands<div class="labellink"><a href="#sec:sentencecasecmds">[link]</a></div></h2><!-- end of section header -->
+<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.100"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.101"></a><code class="code"><dfn id="glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This simply uses <a id="wrglossary.102"></a><a href="#glo:texttitlecasefirst:n"><code class="csfmt">\text_titlecase_first:n</code></a>, which is provided by the LaTeX3 kernel. Note that this fully expands the argument. If you use this command, ensure that your <a id="wrglossary.103"></a><a href="#glo:dual.semanticcommand">semantic commands</a> are robust. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.104"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newrobustcmd</code>{<code class="cmd">\alert</code>}[1]{<code class="cmd">\textcolor</code>{red}{<code class="cmd">\textbf</code>{#1}}}
+<a id="wrglossary.105"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<code class="cmd">\alert</code>{sample} text}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.106"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <span style="color: rgb(255,0,0)"><span style="font-weight: bold; ">Sample</span></span> text </div><!-- end of resultbox -->
+ Note that the following will fail: <pre class="badcodebox"><div class="badcodeboxtitle"><a id="wrglossary.107"></a><a href="#glo:sym.badcode"><span title="Problematic Input" class="icon"><span class="overlapped">🖹</span><span class="overlapper"><span class="deprecatedorbannedfmt">🛇</span></span></span></a></div><code class="cmd">\newcommand</code>{<code class="cmd">\alert</code>}[1]{<code class="cmd">\textcolor</code>{red}{<code class="cmd">\textbf</code>{#1}}}
+<a id="wrglossary.108"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<code class="cmd">\alert</code>{sample} text}
+</pre> This is because the expansion that’s performed before the case-change will result in: <pre class="badcodebox"><div class="badcodeboxtitle"><a id="wrglossary.109"></a><a href="#glo:sym.badcode"><span title="Problematic Input" class="icon"><span class="overlapped">🖹</span><span class="overlapper"><span class="deprecatedorbannedfmt">🛇</span></span></span></a></div><code class="cmd">\textcolor</code>{Red}{<code class="cmd">\textbf</code>{sample}} text
+</pre> This triggers an error since <code class="code">Red</code> isn’t a recognised colour name.<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.110"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.111"></a><code class="code"><dfn id="glo:makefirstuc"><code class="csfmt">\makefirstuc</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This is the original command provided by <a id="wrglossary.112"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a>, which was written to assist sentence-casing in the <a id="wrglossary.113"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> package and had to take markup into account. It parses its argument to try to determine which part needs the case-change. The actual case-change is performed by <a id="wrglossary.114"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a>.<p>
+As from v2.08, the definition of <a id="wrglossary.115"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> has been updated to use LaTeX3 code, but the argument is still parsed, which allows for non-robust <a id="wrglossary.116"></a><a href="#glo:dual.semanticcommand">semantic commands</a>, and now also takes <a id="wrglossary.117"></a><a href="#glo:dual.blocker">blockers</a> and <a id="wrglossary.118"></a><a href="#glo:dual.mapping">mappings</a> into account. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.119"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newcommand</code>{<code class="cmd">\alert</code>}[1]{<code class="cmd">\textcolor</code>{red}{<code class="cmd">\textbf</code>{#1}}}
+<a id="wrglossary.120"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\alert</code>{sample} text}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.121"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <span style="color: rgb(255,0,0)"><span style="font-weight: bold; ">Sample</span></span> text </div><!-- end of resultbox -->
+<p>
+The rules used when parsing <code class="code"><a id="wrglossary.122"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code> are as follows:
+<ol class="displaylist">
+ <li><span class="numitem">1.</span>if <span class="meta">〈<em class="metainner">text</em>〉</span> is empty do nothing;<p>
+<li><span class="numitem">2.</span>if <span class="meta">〈<em class="metainner">text</em>〉</span> consists of a single item or starts with a group do <code class="code"><a id="wrglossary.123"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code>;<p>
+<li><span class="numitem">3.</span>if <span class="meta">〈<em class="metainner">text</em>〉</span> starts with a command <span class="meta">〈<em class="metainner">cs</em>〉</span>:<p>
+
+<ol class="displaylist">
+ <li><span class="numitem">(a)</span>if <span class="meta">〈<em class="metainner">cs</em>〉</span> is <a id="wrglossary.124"></a><a href="#glo:protect"><code class="csfmt">\protect</code></a>, skip it and continue to the next step where the command <span class="meta">〈<em class="metainner">cs</em>〉</span> under inspection is now the one that follows <a id="wrglossary.125"></a><a href="#glo:protect"><code class="csfmt">\protect</code></a>:<p>
+<li><span class="numitem">(b)</span>if <span class="meta">〈<em class="metainner">cs</em>〉</span> has been identified as a <a id="wrglossary.126"></a><a href="#glo:dual.blocker">blocker</a>, just do <span class="meta">〈<em class="metainner">text</em>〉</span> (that is, no case-change is applied);<p>
+<li><span class="numitem">(c)</span>if <span class="meta">〈<em class="metainner">cs</em>〉</span> isn’t followed by a group then do <code class="code"><a id="wrglossary.127"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code>;<p>
+<li><span class="numitem">(d)</span>otherwise assume the format is <code class="code"><span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}<span class="meta">〈<em class="metainner">following</em>〉</span></code> (where <span class="meta">〈<em class="metainner">following</em>〉</span> may be empty) and then:<p>
+
+<ol class="displaylist">
+ <li><span class="numitem">i.</span>if <span class="meta">〈<em class="metainner">cs</em>〉</span> has been <a id="wrglossary.128"></a><a href="#glo:@@glslabel@mapping">mapped</a> to <span class="meta">〈<em class="metainner">Cs</em>〉</span> then do <code class="code"><span class="meta">〈<em class="metainner">Cs</em>〉</span>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}<span class="meta">〈<em class="metainner">following</em>〉</span></code>;<p>
+<li><span class="numitem">ii.</span>if <span class="meta">〈<em class="metainner">cs</em>〉</span> has been identified as an <a id="wrglossary.129"></a><a href="#glo:dual.exclusion">exclusion</a>, do <code class="code"><span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}<a id="wrglossary.130"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<span class="meta">〈<em class="metainner">following</em>〉</span>}</code>;<p>
+<li><span class="numitem">iii.</span>otherwise do <code class="code"><span class="meta">〈<em class="metainner">cs</em>〉</span>{<a id="wrglossary.131"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}}<span class="meta">〈<em class="metainner">following</em>〉</span></code>.
+</ol>
+<p>
+
+</ol>
+<p>
+<li><span class="numitem">4.</span>otherwise do <code class="code"><a id="wrglossary.132"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code>.
+</ol>
+<p>
+Note that the above algorithm uses recursion. The termination points are: don’t implement a change, replace a command with another command, or apply the case-change via <a id="wrglossary.133"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a>.<p>
+For convenience, the following commands are also provided: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.134"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.135"></a><code class="code"><dfn id="glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This is simply a shortcut for: <pre class="compactcodebox"><code class="cmd">\expandafter</code><a id="wrglossary.136"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a><code class="cmd">\expandafter</code>{<span class="meta">〈<em class="metainner">text</em>〉</span>}
+</pre> This ensures the first token in <span class="meta">〈<em class="metainner">text</em>〉</span> is expanded before being passed to <a id="wrglossary.137"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>.<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.138"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.139"></a><code class="code"><dfn id="glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This fully expands its argument before passing it to <a id="wrglossary.140"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.141"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newcommand</code>{<code class="cmd">\test</code>}[1]{sample #1}
+<code class="cmd">\newcommand</code>{<code class="cmd">\tmp</code>}{<code class="cmd">\test</code>{text}}
+<a id="wrglossary.142"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\tmp</code>} /
+<a id="wrglossary.143"></a><a href="#glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></a>{<code class="cmd">\tmp</code>} /
+<a id="wrglossary.144"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a>{<code class="cmd">\tmp</code>}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.145"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ sample text / sample Text / Sample text </div><!-- end of resultbox -->
+ If you don’t have any mappings or blockers set up, it’s simpler to use <a id="wrglossary.146"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> instead of <a id="wrglossary.147"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a>.<p>
+<div class="important"><div class="importanttitle"><a id="wrglossary.148"></a><a href="#glo:sym.important"><span title="Important" class="icon">ℹ</span></a></div><!-- end of importanttitle -->
+With <a id="wrglossary.149"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a>, mappings and blockers will only be detected if they are robust or protected, otherwise they will expand too soon to be detected. </div><!-- end of important -->
+<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.150"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.151"></a><code class="code"><dfn id="glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This command is used by <a id="wrglossary.152"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> to perform the case-change. The <span class="qt">“glsâ€</span> prefix is for historical reasons as the original code was part of the <a id="wrglossary.153"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> package. With the default <a id="wrglossary.154"></a><a href="#glo:opt.unexpanded"><span class="optfmt">unexpanded</span></a> option, this command is defined as: <pre class="compactcodebox"><a id="wrglossary.155"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.156"></a><a href="#glo:unexpanded"><code class="csfmt">\unexpanded</code></a>{<span class="meta">〈<em class="metainner">text</em>〉</span>}}
+</pre> The use of <a id="wrglossary.157"></a><a href="#glo:unexpanded"><code class="csfmt">\unexpanded</code></a> inhibits the expansion of <span class="meta">〈<em class="metainner">text</em>〉</span> that would otherwise occur. This allows <a id="wrglossary.158"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> to maintain as much backward-compatibility with version 2.07 as possible. This is particularly important when using the <a id="wrglossary.159"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> package with a style that automatically converts the description to <a id="wrglossary.160"></a><a href="#glo:dual.sentence-case">sentence-case</a>, as there may well be documents with complex descriptions that contain fragile commands.<p>
+The <a id="wrglossary.161"></a><a href="#glo:opt.expanded"><span class="optfmt">expanded</span></a> package option will redefine <a id="wrglossary.162"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> to use <a id="wrglossary.163"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> without <a id="wrglossary.164"></a><a href="#glo:unexpanded"><code class="csfmt">\unexpanded</code></a>. The <a id="wrglossary.165"></a><a href="#glo:opt.grabfirst"><span class="optfmt">grabfirst</span></a> package option will redefine <a id="wrglossary.166"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> to use <a id="wrglossary.167"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a> to emulates the behaviour of <a id="wrglossary.168"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> in v2.07 and below without using rollback.<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.169"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.170"></a><code class="code"><dfn id="glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><p>
+<div class="noteBox">avoid where possible</div><!-- end of noteBox -->
+</div><!-- end of pinnedbox -->
+ This robust command is provided to emulate v2.07 and its use is discouraged. Note that you may still have different results compared to v2.07, so you may need to use rollback instead. (Note that the <a id="wrglossary.171"></a><a href="#glo:opt.grabfirst"><span class="optfmt">grabfirst</span></a> option additionally redefines <a id="wrglossary.172"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a> to <a id="wrglossary.173"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a>, which you will also need.)<p>
+This applies <a id="wrglossary.174"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a> to the first token in <span class="meta">〈<em class="metainner">text</em>〉</span> and leaves the remainder unchanged. This won’t work if <span class="meta">〈<em class="metainner">text</em>〉</span> starts with a <a id="wrglossary.175"></a><a href="#glo:utf8">UTF-8</a> character unless you use XeLaTeX or LuaLaTeX, so avoid using this method where possible. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.176"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\renewcommand</code>{<a id="wrglossary.177"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a>}[1]{<span class="comment">% </span>
+ <a id="wrglossary.178"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a>{#1}<span class="comment">% </span>
+}
+<a id="wrglossary.179"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a>{sample}
+</pre> This is equivalent to: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.180"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.181"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a>{s}ample
+</pre> Whereas <pre class="unicodebox"><div class="unicodeboxtitle"><a id="wrglossary.182"></a><a href="#glo:sym.unicode"><span title="Unicode Input" class="icon"><span class="overlapped">🗋</span><span class="overlapper">U</span></span></a></div><code class="cmd">\renewcommand</code>{<a id="wrglossary.183"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a>}[1]{<span class="comment">% </span>
+ <a id="wrglossary.184"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a>{#1}<span class="comment">% </span>
+}
+<a id="wrglossary.185"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a>{élite}
+</pre> only works with XeLaTeX or LuaLaTeX.<p>
+<div class="warning"><div class="warningtitle"><a id="wrglossary.186"></a><a href="#glo:sym.warning"><span title="Warning" class="icon">âš </span></a></div><!-- end of warningtitle -->
+As with earlier implementations of <a id="wrglossary.187"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> that tried to only apply the case-change to the first token, this won’t produce the desired result if the argument starts with a punctuation character. </div><!-- end of warning -->
+<p>
+For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.188"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.189"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a>{`sample'}
+</pre> This is equivalent to: <pre class="compactcodebox"><a id="wrglossary.190"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a>{`}sample'
+</pre> so no case-change is applied.<p>
+
+</section><!-- end of section sec:sentencecasecmds -->
+
+<section id="sec:exclusions"><!-- start of section sec:exclusions --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->1.3. Exclusions<div class="labellink"><a href="#sec:exclusions">[link]</a></div></h2><!-- end of section header -->
+<p>
+<div class="information"><div class="informationtitle"><a id="wrglossary.191"></a><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
+Exclusions will apply to all LaTeX3 case-changing commands, so will also affect <a id="wrglossary.192"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a>, but this is generally desirable. </div><!-- end of information -->
+<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.193"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.194"></a><code class="code"><dfn id="glo:MFUexcl"><code class="csfmt">\MFUexcl</code></dfn>{<span class="meta">〈<em class="metainner">cs</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ Identifies the text-block command <code class="code"><span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}</code> as an <a id="wrglossary.195"></a><a href="#glo:dual.exclusion">exclusion</a>. That is, one that should have its argument excluded from a case-change.<p>
+Internally, <a id="wrglossary.196"></a><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a> adds <span class="meta">〈<em class="metainner">cs</em>〉</span> to LaTeX3’s exclusion list <a id="wrglossary.197"></a><a href="#glo:ltextcaseexcludeargtl"><code class="csfmt">\l_text_case_exclude_arg_tl</code></a>, which means that <a id="wrglossary.198"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> will skip the command and its argument and apply the case-change to the following content. Some common commands (<a id="wrglossary.199"></a><a href="#glo:begin"><code class="csfmt">\begin</code></a> <a id="wrglossary.200"></a><a href="#glo:cite"><code class="csfmt">\cite</code></a> <a id="wrglossary.201"></a><a href="#glo:end"><code class="csfmt">\end</code></a> <a id="wrglossary.202"></a><a href="#glo:label"><code class="csfmt">\label</code></a> and <a id="wrglossary.203"></a><a href="#glo:ref"><code class="csfmt">\ref</code></a>) are automatically added by the LaTeX3 kernel. The exclusions are also recognised by <a id="wrglossary.204"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> when it parses its argument.<p>
+<div class="information"><div class="informationtitle"><a id="wrglossary.205"></a><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
+The command <a id="wrglossary.206"></a><a href="#glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></a> is automatically treated as an exclusion by the LaTeX3 case-changing commands with recent LaTeX kernels. You may want to add it as a blocker for <a id="wrglossary.207"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> and keep <a id="wrglossary.208"></a><a href="#glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></a> for exclusions.<p>
+Note that <a id="wrglossary.209"></a><a href="#glo:ensuremath"><code class="csfmt">\ensuremath</code></a> is added as an exclusion by <a id="wrglossary.210"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> otherwise <a id="wrglossary.211"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> will pass its argument to <a id="wrglossary.212"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, which will cause a problem. </div><!-- end of information -->
+<p>
+Another way of identifying content that should be excluded with <a id="wrglossary.213"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> is to encapsulate it with: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.214"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.215"></a><code class="code"><dfn id="glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></dfn>{<span class="meta">〈<em class="metainner">content</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This is a robust command that simply does its argument and is automatically added to the exclusion list. This may be used for cases where the excluded command isn’t a simple text-block command that only has one mandatory argument or where leading punctuation is followed by a <a id="wrglossary.216"></a><a href="#glo:dual.blocker">blocker</a> or <a id="wrglossary.217"></a><a href="#glo:dual.mapping">mapping</a>.<p>
+The command name stems from earlier versions where leading <a id="wrglossary.218"></a><a href="#glo:idx.punctuation">punctuation</a> needed to be skipped. This is no longer necessary, but the command remains as a general purpose robust exclusion command.<p>
+For example, <a id="wrglossary.219"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a> (provided by <a id="wrglossary.220"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a>) should have its argument skipped, since its argument is a label, so the following will ensure that <code class="code"><a id="wrglossary.221"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>{<span class="meta">〈<em class="metainner">label</em>〉</span>}</code> will be skipped, and the case-change will be applied to the following text for both <a id="wrglossary.222"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> and <a id="wrglossary.223"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.224"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.225"></a><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a>{<a id="wrglossary.226"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>}
+<a id="wrglossary.227"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.228"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>{ex}some text}
+<a id="wrglossary.229"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.230"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>{ex}some text}
+</pre> This will be equivalent to: <pre class="compactcodebox"><a id="wrglossary.231"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>{ex}Some text
+</pre> However, <a id="wrglossary.232"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a> can take an optional argument which, if present, will cause a problem. For example: <pre class="badcodebox"><div class="badcodeboxtitle"><a id="wrglossary.233"></a><a href="#glo:sym.badcode"><span title="Problematic Input" class="icon"><span class="overlapped">🖹</span><span class="overlapper"><span class="deprecatedorbannedfmt">🛇</span></span></span></a></div><a id="wrglossary.234"></a><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a>{<a id="wrglossary.235"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>}
+<a id="wrglossary.236"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.237"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>[counter=section]{ex}some text}
+<a id="wrglossary.238"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.239"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>[counter=section]{ex}some text}
+</pre> Both commands will cause the following error: <pre class="transcript"><div class="transcripttitle"><a id="wrglossary.240"></a><a href="#glo:sym.transcript"><span title="Transcript" class="icon">🔎</span></a></div>! Package glossaries Error: Glossary entry `[' has not been defined.
+</pre> This is because the open square bracket is assumed to be the argument of <a id="wrglossary.241"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>, so this effectively becomes: <pre class="compactcodebox"><a id="wrglossary.242"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>{[}Counter=section] exsome text
+<a id="wrglossary.243"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>{[}Counter=section] exsome text
+</pre> which means that now <code class="code">[</code> is considered the label and everything that follows is just text.<p>
+For this situation to work, you need to encapsulate the problematic content with an exclusion command, such as <a id="wrglossary.244"></a><a href="#glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></a> or <a id="wrglossary.245"></a><a href="#glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></a>: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.246"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.247"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.248"></a><a href="#glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></a>{<a id="wrglossary.249"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a>[counter=section]{ex}}some text}
+</pre> This will also work with <a id="wrglossary.250"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> because <a id="wrglossary.251"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> automatically adds <a id="wrglossary.252"></a><a href="#glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></a> to the exclusion list.<p>
+<div class="information"><div class="informationtitle"><a id="wrglossary.253"></a><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
+As from <a id="wrglossary.254"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> v4.50, <a id="wrglossary.255"></a><a href="#glo:glsadd"><code class="csfmt">\glsadd</code></a> is automatically added as an exclusion, but be aware of the problem with using the optional argument, as described above. </div><!-- end of information -->
+<p>
+<a id="wrglossary.256"></a><a href="#glo:idx.punctuation">Punctuation</a> characters are skipped by <a id="wrglossary.257"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>. For example: <div style="text-align: center; border-style: none; "><a id="wrglossary.258"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a><a id="wrglossary.259"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of frame@coderesult@title -->
+<p>
+<pre class="sidebysidecode">
+<a id="wrglossary.260"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{`word'}
+</pre><div class="sidebysideresult">‘Word’ </div><p>
+ However, leading <a id="wrglossary.261"></a><a href="#glo:idx.punctuation">punctuation</a> will result in <a id="wrglossary.262"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> passing its entire argument to <a id="wrglossary.263"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> (since the argument doesn’t start with <code class="code"><span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}</code>), which means that <a id="wrglossary.264"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> won’t detect any <a id="wrglossary.265"></a><a href="#glo:dual.blocker">blocker</a> or <a id="wrglossary.266"></a><a href="#glo:dual.mapping">mapping</a>.<p>
+For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.267"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.268"></a><a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a>{<a id="wrglossary.269"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>}
+<code class="cmd">\newcommand</code>*{<code class="cmd">\qt</code>}[1]{``#1''}
+<a id="wrglossary.270"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{``<a id="wrglossary.271"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>{sec:sentencecase} section''} /
+<a id="wrglossary.272"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.273"></a><a href="#glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></a>{``}<a id="wrglossary.274"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>{sec:sentencecase} section''} /
+<a id="wrglossary.275"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\qt</code>{<a id="wrglossary.276"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>{sec:sentencecase} section}}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.277"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ “<a href="#sec:sentencecase">Sentence-Case</a> Section’’ / “<a href="#sec:sentencecase">Sentence-Case</a> section’’ / <span class="qt">“<a href="#sec:sentencecase">Sentence-Case</a> sectionâ€</span> </div><!-- end of resultbox -->
+ If you are using a package such as <a id="wrglossary.278"></a><a href="#glo:pkg.csquotes"><span class="styfmt">csquotes</span></a>, bear in mind that if the command is followed by an asterisk (a <span class="qt">“starred commandâ€</span>) or an optional argument then it won’t fit the expected <code class="code"><span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}</code> format and unexpected results will occur.<p>
+
+</section><!-- end of section sec:exclusions -->
+
+<section id="sec:blockers"><!-- start of section sec:blockers --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->1.4. Blockers<div class="labellink"><a href="#sec:blockers">[link]</a></div></h2><!-- end of section header -->
+<p>
+A <a id="wrglossary.279"></a><a href="#glo:dual.blocker">blocker</a> is a command that prevents any case-change if it occurs at the start of <a id="wrglossary.280"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> or after the argument of an <a id="wrglossary.281"></a><a href="#glo:dual.exclusion">exclusion</a>. Blockers are not supported by <a id="wrglossary.282"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> but are instead treated as exclusions. <p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.283"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.284"></a><code class="code"><dfn id="glo:MFUblocker"><code class="csfmt">\MFUblocker</code></dfn>{<span class="meta">〈<em class="metainner">cs</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ Identifies <span class="meta">〈<em class="metainner">cs</em>〉</span> as a <a id="wrglossary.285"></a><a href="#glo:dual.blocker">blocker</a>. Since <a id="wrglossary.286"></a><a href="#glo:dual.blocker">blockers</a> aren’t supported by <a id="wrglossary.287"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, this automatically implements <code class="code"><a id="wrglossary.288"></a><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a>{<span class="meta">〈<em class="metainner">cs</em>〉</span>}</code> to protect its argument from <a id="wrglossary.289"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, but it won’t prevent subsequent content from being changed.<p>
+For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.290"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.291"></a><a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a>{<a id="wrglossary.292"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>}
+<a id="wrglossary.293"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.294"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>{sec:sentencecase} section}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.295"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <a href="#sec:sentencecase">Sentence-Case</a> section </div><!-- end of resultbox -->
+<p>
+In the following, the <a id="wrglossary.296"></a><a href="#glo:dual.blocker">blocker</a> isn’t detected by <a id="wrglossary.297"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> because the content doesn’t start with <code class="code"><span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}</code> or <code class="code"><span class="cmdfmt">\protect</span><span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">arg</em>〉</span>}</code>. This means that the entire content is passed to <a id="wrglossary.298"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> which treats <a id="wrglossary.299"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a> as an <a id="wrglossary.300"></a><a href="#glo:dual.exclusion">exclusion</a>: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.301"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.302"></a><a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a>{<a id="wrglossary.303"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>}
+<a id="wrglossary.304"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<code class="cmd">\relax</code><a id="wrglossary.305"></a><a href="#glo:nameref"><code class="csfmt">\nameref</code></a>{sec:sentencecase} section}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.306"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <a href="#sec:sentencecase">Sentence-Case</a> Section </div><!-- end of resultbox -->
+<p>
+<div class="important"><div class="importanttitle"><a id="wrglossary.307"></a><a href="#glo:sym.important"><span title="Important" class="icon">ℹ</span></a></div><!-- end of importanttitle -->
+If a <a id="wrglossary.308"></a><a href="#glo:@@glslabel@blocker">blocking command</a> is inside the definition of another command, it won’t be visible to <a id="wrglossary.309"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> unless the other command is expanded before applying <a id="wrglossary.310"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. For example, by using <a id="wrglossary.311"></a><a href="#glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></a> or <a id="wrglossary.312"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a>. If it doesn’t get expanded until after it has been passed to <a id="wrglossary.313"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, then it will be treated as an <a id="wrglossary.314"></a><a href="#glo:dual.exclusion">exclusion</a> instead. </div><!-- end of important -->
+<p>
+Recent LaTeX kernels provide <a id="wrglossary.315"></a><a href="#glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></a> and automatically add it as an <a id="wrglossary.316"></a><a href="#glo:dual.exclusion">exclusion</a>. You may want to add it as a <a id="wrglossary.317"></a><a href="#glo:dual.blocker">blocker</a> for <a id="wrglossary.318"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.319"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.320"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.321"></a><a href="#glo:ensuremath"><code class="csfmt">\ensuremath</code></a>{<code class="cmd">\alpha</code>}-particle} /
+<a id="wrglossary.322"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.323"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a><code class="cmd">\alpha</code><a id="wrglossary.324"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a>-particle} /
+<a id="wrglossary.325"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.326"></a><a href="#glo:ensuremath"><code class="csfmt">\ensuremath</code></a>{<code class="cmd">\alpha</code>}-particle} /
+<a id="wrglossary.327"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.328"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a><code class="cmd">\alpha</code><a id="wrglossary.329"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a>-particle}
+
+<a id="wrglossary.330"></a><a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a>{<a id="wrglossary.331"></a><a href="#glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></a>}<span class="comment">% </span>
+<a id="wrglossary.332"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.333"></a><a href="#glo:ensuremath"><code class="csfmt">\ensuremath</code></a>{<code class="cmd">\alpha</code>}-particle} /
+<a id="wrglossary.334"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.335"></a><a href="#glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></a>{<a id="wrglossary.336"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a><code class="cmd">\alpha</code><a id="wrglossary.337"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a>}-particle} /
+<a id="wrglossary.338"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.339"></a><a href="#glo:ensuremath"><code class="csfmt">\ensuremath</code></a>{<code class="cmd">\alpha</code>}-particle} /
+<a id="wrglossary.340"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<a id="wrglossary.341"></a><a href="#glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></a>{<a id="wrglossary.342"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a><code class="cmd">\alpha</code><a id="wrglossary.343"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a>}-particle}
+</pre> Note that <a id="wrglossary.344"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> adds <a id="wrglossary.345"></a><a href="#glo:ensuremath"><code class="csfmt">\ensuremath</code></a> as an exclusion so <a id="wrglossary.346"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> will skip it. Whereas the example above that starts with <a id="wrglossary.347"></a><a href="#glo:idx.sym.dollar"><code class="code">$</code></a> will have the entire argument passed to <a id="wrglossary.348"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, which skips the maths content. In the first paragraph, <a id="wrglossary.349"></a><a href="#glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></a> is only an <a id="wrglossary.350"></a><a href="#glo:dual.exclusion">exclusion</a>, but in the second paragraph it’s also a <a id="wrglossary.351"></a><a href="#glo:dual.blocker">blocker</a>. <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.352"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+Exclusion: ð›¼-Particle / ð›¼-Particle / ð›¼-Particle / ð›¼-Particle<p>
+Blocker: ð›¼-Particle / ð›¼-particle / ð›¼-Particle / ð›¼-Particle </div><!-- end of resultbox -->
+<p>
+
+</section><!-- end of section sec:blockers -->
+
+<section id="sec:mappings"><!-- start of section sec:mappings --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->1.5. Mappings<div class="labellink"><a href="#sec:mappings">[link]</a></div></h2><!-- end of section header -->
+<p>
+A <a id="wrglossary.353"></a><a href="#glo:dual.mapping">mapping</a> indicates that one command should be substituted for another, instead of applying a case-change. The assumption is that the substituted command should perform the case-change instead. <a id="wrglossary.354"></a><a href="#glo:dual.mapping">Mappings</a> are not supported by <a id="wrglossary.355"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> but are instead treated as exclusions.<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.356"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.357"></a><code class="code"><dfn id="glo:MFUaddmap"><code class="csfmt">\MFUaddmap</code></dfn>{<span class="meta">〈<em class="metainner">cs1</em>〉</span>}{<span class="meta">〈<em class="metainner">cs2</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ Identifies a mapping which indicates that <a id="wrglossary.358"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> should replace <span class="meta">〈<em class="metainner">cs1</em>〉</span> with <span class="meta">〈<em class="metainner">cs2</em>〉</span> and not apply a case-change. This automatically implements: <pre class="compactcodebox"><a id="wrglossary.359"></a><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a>{<span class="meta">〈<em class="metainner">cs1</em>〉</span>}<a id="wrglossary.360"></a><a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a>{<span class="meta">〈<em class="metainner">cs2</em>〉</span>}
+</pre> This means that <span class="meta">〈<em class="metainner">cs2</em>〉</span> is identified as a <a id="wrglossary.361"></a><a href="#glo:dual.blocker">blocker</a> (since it’s assumed to already be a <a id="wrglossary.362"></a><a href="#glo:dual.sentence-case">sentence-case</a> command) and <span class="meta">〈<em class="metainner">cs1</em>〉</span> is identified as an <a id="wrglossary.363"></a><a href="#glo:dual.exclusion">exclusion</a> to protect its argument from <a id="wrglossary.364"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, which doesn’t support <a id="wrglossary.365"></a><a href="#glo:dual.mapping">mappings</a>.<p>
+<div class="information"><div class="informationtitle"><a id="wrglossary.366"></a><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
+If either <span class="meta">〈<em class="metainner">cs1</em>〉</span> or <span class="meta">〈<em class="metainner">cs2</em>〉</span> is empty, no mapping is established, but an <a id="wrglossary.367"></a><a href="#glo:dual.exclusion">exclusion</a> or <a id="wrglossary.368"></a><a href="#glo:dual.blocker">blocker</a> will be set for the non-empty argument. </div><!-- end of information -->
+<p>
+For example (with <a id="wrglossary.369"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a>): <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.370"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.371"></a><a href="#glo:MFUaddmap"><code class="csfmt">\MFUaddmap</code></a>{<a id="wrglossary.372"></a><a href="#glo:gls"><code class="csfmt">\gls</code></a>}{<a id="wrglossary.373"></a><a href="#glo:Gls"><code class="csfmt">\Gls</code></a>}
+<a id="wrglossary.374"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<a id="wrglossary.375"></a><a href="#glo:gls"><code class="csfmt">\gls</code></a>{ex} some text}
+</pre> This will be converted to: <pre class="compactcodebox"><a id="wrglossary.376"></a><a href="#glo:Gls"><code class="csfmt">\Gls</code></a>{ex} some text
+</pre> Note that this and similar <a id="wrglossary.377"></a><a href="#glo:dual.mapping">mappings</a> are automatically added in <a id="wrglossary.378"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> v4.50+ and <a id="wrglossary.379"></a><a href="#glo:pkg.glossaries-extra"><span class="styfmt">glossaries-extra</span></a> v1.49+.<p>
+<div class="important"><div class="importanttitle"><a id="wrglossary.380"></a><a href="#glo:sym.important"><span title="Important" class="icon">ℹ</span></a></div><!-- end of importanttitle -->
+If a <a id="wrglossary.381"></a><a href="#glo:@@glslabel@mapping">mapped command</a> is inside the definition of another command, it won’t be visible to <a id="wrglossary.382"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> unless the other command is expanded before applying <a id="wrglossary.383"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. For example, by using <a id="wrglossary.384"></a><a href="#glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></a> or <a id="wrglossary.385"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a>. If it doesn’t get expanded until after it has been passed to <a id="wrglossary.386"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, then it will be treated as an <a id="wrglossary.387"></a><a href="#glo:dual.exclusion">exclusion</a> instead. </div><!-- end of important -->
+<p>
+
+</section><!-- end of section sec:mappings -->
+
+<section id="sec:pkgoptions"><!-- start of section sec:pkgoptions --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->1.6. Package Options<div class="labellink"><a href="#sec:pkgoptions">[link]</a></div></h2><!-- end of section header -->
+<p>
+<div class="settingsbox"><div class="settingsboxtitle"><a id="wrglossary.388"></a><a href="#glo:sym.novaluesetting"><span title="Valueless Setting" class="icon">ð¢</span></a></div><!-- end of settingsboxtitle -->
+<a id="wrglossary.389"></a><code class="code"><dfn id="glo:opt.expanded"><span class="optfmt">expanded</span></dfn></code></div><!-- end of settingsbox -->
+ Redefines <a id="wrglossary.390"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> to simply use <a id="wrglossary.391"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>.<p>
+<div class="settingsbox"><div class="settingsboxtitle"><a id="wrglossary.392"></a><a href="#glo:sym.novaluesetting"><span title="Valueless Setting" class="icon">ð¢</span></a></div><!-- end of settingsboxtitle -->
+<a id="wrglossary.393"></a><code class="code"><dfn id="glo:opt.unexpanded"><span class="optfmt">unexpanded</span></dfn></code></div><!-- end of settingsbox -->
+ Redefines <a id="wrglossary.394"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> to use <a id="wrglossary.395"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> without expanding its argument.<p>
+<div class="settingsbox"><div class="settingsboxtitle"><a id="wrglossary.396"></a><a href="#glo:sym.novaluesetting"><span title="Valueless Setting" class="icon">ð¢</span></a></div><!-- end of settingsboxtitle -->
+<a id="wrglossary.397"></a><code class="code"><dfn id="glo:opt.grabfirst"><span class="optfmt">grabfirst</span></dfn></code><p>
+<div class="noteBox">avoid where possible</div><!-- end of noteBox -->
+</div><!-- end of settingsbox -->
+ Redefines <a id="wrglossary.398"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> to use <a id="wrglossary.399"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a> and also redefines <a id="wrglossary.400"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a> to use <a id="wrglossary.401"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a>.<p>
+This option is best avoided and is only provided to emulate the v2.07 behaviour of <a id="wrglossary.402"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a>. However, you may still have different results compared to v2.07, so you may need to use rollback instead.<p>
+
+</section><!-- end of section sec:pkgoptions -->
+
+<section id="sec:capitalisewords"><!-- start of section sec:capitalisewords --><div class="tomain"><a href="#main">[top]</a></div>
+<h1><!-- start of chapter header -->2. Title-Case<div class="labellink"><a href="#sec:capitalisewords">[link]</a></div></h1><!-- end of chapter header -->
+<p>
+The <a id="wrglossary.403"></a><a href="#glo:dual.title-case">title-case</a> commands are designed to convert the first letter of each word in a phrase to uppercase. These commands are robust. <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.404"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.405"></a><code class="code"><dfn id="glo:capitalisewords"><code class="csfmt">\capitalisewords</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This command applies a <a id="wrglossary.406"></a><a href="#glo:dual.sentence-case">sentence-case</a> command to each word in <span class="meta">〈<em class="metainner">text</em>〉</span> where the space character is used as the word separator. Note that it has to be an ordinary space character, not another form of space, such as <a id="wrglossary.407"></a><a href="#glo:idx.nbsp"><code class="code">~</code></a> or <a id="wrglossary.408"></a><a href="#glo:space"><code class="csfmt">\space</code></a>. Note that no expansion is performed on <span class="meta">〈<em class="metainner">text</em>〉</span>. For example: <div style="text-align: center; border-style: none; "><a id="wrglossary.409"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a><a id="wrglossary.410"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of frame@coderesult@title -->
+<p>
+<pre class="sidebysidecode">
+<a id="wrglossary.411"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a sample phrase}
+</pre><div class="sidebysideresult">A Sample Phrase </div><p>
+ See §<a href="#sec:nocap">2.1</a> for excluding words (such as <span class="qt">“ofâ€</span>) from the case-changing.<p>
+<div class="information"><div class="informationtitle"><a id="wrglossary.412"></a><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
+This isn’t the same as the LaTeX3 command <a id="wrglossary.413"></a><a href="#glo:texttitlecase:n"><code class="csfmt">\text_titlecase:n</code></a>, which converts the first letter to <a id="wrglossary.414"></a><a href="#glo:idx.uppercase">uppercase</a> and all other letters to <a id="wrglossary.415"></a><a href="#glo:idx.lowercase">lowercase</a>. </div><!-- end of information -->
+<p>
+For convenience, there are shortcut commands if expansion is required before parsing the argument: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.416"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.417"></a><code class="code"><dfn id="glo:xcapitalisewords"><code class="csfmt">\xcapitalisewords</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This is a shortcut for: <pre class="compactcodebox"><code class="cmd">\expandafter</code><a id="wrglossary.418"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a><code class="cmd">\expandafter</code>{<span class="meta">〈<em class="metainner">text</em>〉</span>}
+</pre> <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.419"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.420"></a><code class="code"><dfn id="glo:ecapitalisewords"><code class="csfmt">\ecapitalisewords</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This fully expands <span class="meta">〈<em class="metainner">text</em>〉</span> before passing it to <a id="wrglossary.421"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>.<p>
+The parser used by <a id="wrglossary.422"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a> first splits up the text on each space character. Each of these space-separated words may actually be a compound, so further parsing is performed on each <span class="qt">“wordâ€</span>. The divisions within the compound word should be marked up with: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.423"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.424"></a><code class="code"><dfn id="glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ For example: <div style="text-align: center; border-style: none; "><a id="wrglossary.425"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a><a id="wrglossary.426"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of frame@coderesult@title -->
+<p>
+<pre class="sidebysidecode">
+<a id="wrglossary.427"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a
+big<a id="wrglossary.428"></a><a href="#glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></a>{/}small idea}
+</pre><div class="sidebysideresult">A Big/Small Idea </div><p>
+ Each sub-word within the compound word is encapsulated with: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.429"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.430"></a><code class="code"><dfn id="glo:MFUcapword"><code class="csfmt">\MFUcapword</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ Since it’s inconvenient to have to markup every hyphen, <a id="wrglossary.431"></a><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a> can be enabled to check for hyphens. <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.432"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.433"></a><code class="code"><dfn id="glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></dfn> <span class="meta">〈<em class="metainner">true</em>〉</span><code class="csfmt">\else</code> <span class="meta">〈<em class="metainner">false</em>〉</span><code class="csfmt">\fi</code></code><span class="floatrightbox"><span class="summarytag">initial: </span><code class="cmd">\iffalse</code></span><span class="clearfix"></span></div><!-- end of pinnedbox -->
+ This conditional determines whether or not <a id="wrglossary.434"></a><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a> should consider a hyphen a word break. If this conditional is true, then <a id="wrglossary.435"></a><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a> will encapsulate its argument with: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.436"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.437"></a><code class="code"><dfn id="glo:MFUhyphencapword"><code class="csfmt">\MFUhyphencapword</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This will parse <span class="meta">〈<em class="metainner">text</em>〉</span> for hyphen characters and apply the case change to each hyphen-separated word. Otherwise <a id="wrglossary.438"></a><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a> will treat its argument as a single word.<p>
+The conditional can be set to true with: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.439"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.440"></a><code class="code"><dfn id="glo:MFUhyphentrue"><code class="csfmt">\MFUhyphentrue</code></dfn></code></div><!-- end of pinnedbox -->
+ and switched back off with: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.441"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.442"></a><code class="code"><dfn id="glo:MFUhyphenfalse"><code class="csfmt">\MFUhyphenfalse</code></dfn></code></div><!-- end of pinnedbox -->
+<p>
+For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.443"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.444"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{server-side includes} /
+<a id="wrglossary.445"></a><a href="#glo:MFUhyphentrue"><code class="csfmt">\MFUhyphentrue</code></a>
+<a id="wrglossary.446"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{server-side includes}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.447"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+Server-side Includes / Server-Side Includes </div><!-- end of resultbox -->
+<p>
+The actual case-change of each word is performed with: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.448"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.449"></a><code class="code"><dfn id="glo:MFUcapwordfirstuc"><code class="csfmt">\MFUcapwordfirstuc</code></dfn>{<span class="meta">〈<em class="metainner">word</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This defaults to <code class="code"><a id="wrglossary.450"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<span class="meta">〈<em class="metainner">word</em>〉</span>}</code> but may be redefined to use <a id="wrglossary.451"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>, if preferred.<p>
+<div class="important"><div class="importanttitle"><a id="wrglossary.452"></a><a href="#glo:sym.important"><span title="Important" class="icon">ℹ</span></a></div><!-- end of importanttitle -->
+Hyphens and <a id="wrglossary.453"></a><a href="#glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></a> must be visible to the parser that searches for word breaks. This means they won’t be detected if they are within a group or in the definition of a command. </div><!-- end of important -->
+<p>
+Formatting for the entire phrase must go outside <a id="wrglossary.454"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a> (unlike <a id="wrglossary.455"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>). For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.456"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.457"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{<code class="cmd">\emph</code>{a sample phrase}} /
+<code class="cmd">\emph</code>{<a id="wrglossary.458"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a sample phrase}}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.459"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+<span style="font-style: italic; font-variant: normal; ">A sample phrase</span> / <span style="font-style: italic; font-variant: normal; ">A Sample Phrase</span> </div><!-- end of resultbox -->
+<p>
+If your phrase is likely to contain formatting commands, you can instead use: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.460"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.461"></a><code class="code"><dfn id="glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><span class="summarytag">modifier: </span>* </span><span class="clearfix"></span></div><!-- end of pinnedbox -->
+ where <span class="meta">〈<em class="metainner">text</em>〉</span> may be just words (as with <a id="wrglossary.462"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>): <pre class="compactcodebox"><a id="wrglossary.463"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{<span class="meta">〈<em class="metainner">words</em>〉</span>}
+</pre> or may be entirely enclosed in a formatting command in the form: <pre class="compactcodebox"><a id="wrglossary.464"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{<span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">words</em>〉</span>}}
+</pre> or contain formatted sub-phrases: <pre class="compactcodebox"><a id="wrglossary.465"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{<span class="meta">〈<em class="metainner">words</em>〉</span> <span class="meta">〈<em class="metainner">cs</em>〉</span>{<span class="meta">〈<em class="metainner">sub-phrase</em>〉</span>} <span class="meta">〈<em class="metainner">words</em>〉</span>}
+</pre> The starred form only permits a text-block command at the start of the phrase. See §<a href="#sec:titlecaseexamples">2.3</a> for examples.<p>
+<div class="warning"><div class="warningtitle"><a id="wrglossary.466"></a><a href="#glo:sym.warning"><span title="Warning" class="icon">âš </span></a></div><!-- end of warningtitle -->
+Avoid declarations, such as <code class="cmd">\bfseries</code> or <code class="cmd">\em</code>. </div><!-- end of warning -->
+<p>
+If expansion is required, you can use: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.467"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.468"></a><code class="code"><dfn id="glo:xcapitalisefmtwords"><code class="csfmt">\xcapitalisefmtwords</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><span class="summarytag">modifier: </span>* </span><span class="clearfix"></span></div><!-- end of pinnedbox -->
+ which is a shortcut for: <pre class="compactcodebox"><code class="cmd">\expandafter</code><a id="wrglossary.469"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a><code class="cmd">\expandafter</code>{<span class="meta">〈<em class="metainner">text</em>〉</span>}
+</pre> (The star modifier will be applied with <code class="code"><a id="wrglossary.470"></a><a href="#glo:xcapitalisefmtwords"><code class="csfmt">\xcapitalisefmtwords</code></a>*</code> in an appropriate manner.)<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.471"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.472"></a><code class="code"><dfn id="glo:ecapitalisefmtwords"><code class="csfmt">\ecapitalisefmtwords</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><span class="summarytag">modifier: </span>* </span><span class="clearfix"></span></div><!-- end of pinnedbox -->
+ This will fully expand its argument before passing it to <a id="wrglossary.473"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>. Again, the star modifier may be used.<p>
+<div class="important"><div class="importanttitle"><a id="wrglossary.474"></a><a href="#glo:sym.important"><span title="Important" class="icon">ℹ</span></a></div><!-- end of importanttitle -->
+The unstarred <a id="wrglossary.475"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a> is only designed for phrases that contain text-block commands with a single argument, which should be a word or sub-phrase. Anything more complicated is likely to break. Instead, use the starred form or <a id="wrglossary.476"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>. </div><!-- end of important -->
+<p>
+
+</section><!-- end of section sec:capitalisewords -->
+
+<section id="sec:nocap"><!-- start of section sec:nocap --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->2.1. Excluding Words From Case-Changing<div class="labellink"><a href="#sec:nocap">[link]</a></div></h2><!-- end of section header -->
+<p>
+<a id="wrglossary.477"></a>Some words typically shouldn’t have their case changed unless they occur at the start. These words can be identified with: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.478"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.479"></a><code class="code"><dfn id="glo:MFUnocap"><code class="csfmt">\MFUnocap</code></dfn>{<span class="meta">〈<em class="metainner">word</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This only has a local effect. The global version is: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.480"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.481"></a><code class="code"><dfn id="glo:gMFUnocap"><code class="csfmt">\gMFUnocap</code></dfn>{<span class="meta">〈<em class="metainner">word</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ The list of words that shouldn’t be capitalised can be cleared using: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.482"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.483"></a><code class="code"><dfn id="glo:MFUclear"><code class="csfmt">\MFUclear</code></dfn></code></div><!-- end of pinnedbox -->
+<p>
+For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.484"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.485"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{the wind in the willows}
+
+<a id="wrglossary.486"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{in}<span class="comment">% </span>
+<a id="wrglossary.487"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{the}<span class="comment">% </span>
+
+<a id="wrglossary.488"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{the wind in the willows}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.489"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+The Wind In The Willows<p>
+<p>
+The Wind in the Willows </div><!-- end of resultbox -->
+<p>
+Since the case-change is ultimately performed by <a id="wrglossary.490"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>, you can also use an <a id="wrglossary.491"></a><a href="#glo:dual.exclusion">exclusion</a> to prevent an individual word from being changed. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.492"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newcommand</code>{<code class="cmd">\NoChange</code>}[1]{#1}
+<a id="wrglossary.493"></a><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a>{<code class="cmd">\NoChange</code>}
+<a id="wrglossary.494"></a><a href="#glo:MFUclear"><code class="csfmt">\MFUclear</code></a>
+<a id="wrglossary.495"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{the <code class="cmd">\NoChange</code>{wind} in the willows}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.496"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ The wind In The Willows </div><!-- end of resultbox -->
+ This can also work if you redefine <a id="wrglossary.497"></a><a href="#glo:MFUcapwordfirstuc"><code class="csfmt">\MFUcapwordfirstuc</code></a> to use <a id="wrglossary.498"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> provided the exclusion command doesn’t expand (so <code class="cmd">\NoChange</code> would need to be protected or made robust in the above example). <p>
+<div class="important"><div class="importanttitle"><a id="wrglossary.499"></a><a href="#glo:sym.important"><span title="Important" class="icon">ℹ</span></a></div><!-- end of importanttitle -->
+Exceptions only apply to (non-leading) whole words or words separated with <a id="wrglossary.500"></a><a href="#glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></a> but not to parts of a hyphenated word that are split by <a id="wrglossary.501"></a><a href="#glo:MFUhyphencapword"><code class="csfmt">\MFUhyphencapword</code></a>. </div><!-- end of important -->
+<p>
+Examples:
+<ol class="displaylist">
+ <li><span class="numitem">1.</span>Exceptions aren’t applied if <a id="wrglossary.502"></a><a href="#glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></a> occurs before the first space. <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.503"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.504"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{a}<a id="wrglossary.505"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{the}<span class="comment">% </span>
+<a id="wrglossary.506"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a<a id="wrglossary.507"></a><a href="#glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></a>{/}the something}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.508"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+A/The Something </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">2.</span>Exceptions are applied for non-leading words: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.509"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.510"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{and}<a id="wrglossary.511"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{or}<span class="comment">% </span>
+<a id="wrglossary.512"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{one and<a id="wrglossary.513"></a><a href="#glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></a>{/}or another}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.514"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+One and/or Another </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">3.</span>Exceptions aren’t applied for hyphenated parts: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.515"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.516"></a><a href="#glo:MFUhyphentrue"><code class="csfmt">\MFUhyphentrue</code></a>
+<a id="wrglossary.517"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{and}<a id="wrglossary.518"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{or}<span class="comment">% </span>
+<a id="wrglossary.519"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{one and-or another}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.520"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+One And-Or Another </div><!-- end of resultbox -->
-><colgroup id="TBL-1-1g"><col
-id="TBL-1-1" /></colgroup><tr
- style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-1-1"
-class="td11"> <span
-class="cmr-12">Nicola L.C. Talbot </span></td>
-</tr><tr
-class="vspace" style="font-size:10.0pt"><td
->&nbsp;</td></tr><tr
- style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-2-1"
-class="td11"> <span
-class="cmr-12">Dickimaw Books </span></td>
-</tr><tr
- style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-3-1"
-class="td11"><a
-href="http://www.dickimaw-books.com/" class="url" ><span
-class="cmtt-12">http://www.dickimaw-books.com/</span></a></td></tr></table>
-</div>
-<!--l. 36--><p class="noindent" ><span
-class="cmr-12">2021-10-15</span></p></div>
-
-
-
- <h2 class="likechapterHead"><a
- id="x1-1000"></a>Contents</h2>
- <div class="tableofcontents">
- <span class="chapterToc" >1 <a
-href="#sec:intro" id="QQ2-1-2">Introduction</a></span>
-<br /> <span class="chapterToc" >2 <a
-href="#sec:makefirstuc" id="QQ2-1-3">Capitalising the First Letter of a Word</a></span>
-<br /> <span class="chapterToc" >3 <a
-href="#sec:capitalisewords" id="QQ2-1-4">Capitalise the First Letter of Each Word in a Phrase or Sentence (Title Case)</a></span>
-<br /> &#x00A0;<span class="sectionToc" >3.1 <a
-href="#sec:pdfbookmarks" id="QQ2-1-5">PDF Bookmarks</a></span>
-<br /> &#x00A0;<span class="sectionToc" >3.2 <a
-href="#sec:nocap" id="QQ2-1-6">Excluding Words From Case-Changing</a></span>
-<br /> <span class="chapterToc" >4 <a
-href="#sec:utf8" id="QQ2-1-7">UTF-8</a></span>
- </div>
-
-
-
-<!--l. 39--><p class="indent" > <div class="chapter"><h2 class="chapterHead">1. <a
- id="sec:intro"></a>Introduction</h2>
-</p><!--l. 42--><p class="indent" > The <span
-class="cmss-10">mfirstuc </span>package was originally part of the <span
-class="cmss-10">glossaries </span>bundle for use with commands
-like <span
-class="cmtt-10">\Gls</span>, but as the commands provided by <span
-class="cmss-10">mfirstuc </span>may be used without <span
-class="cmss-10">glossaries</span>, the two
-have been split into separately maintained packages.
-</p><!--l. 48--><p class="indent" > <div class="important" title="Important Note"> The commands described here all have limitations. To minimise problems, use text-block
-style semantic commands with one argument (the text that requires case-changing), and avoid
-scoped declarations. </div>
-</p><!--l. 53--><p class="noindent" >
-</p><!--l. 55--><p class="indent" > Here are some examples of semantic commands:
- </p><ol class="enumerate1" >
-<li
- class="enumerate" id="x1-2002x1">
- <!--l. 57--><p class="noindent" >Quoted material:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-1">
- \newcommand{\qt}[1]{``#1''}
-</pre>
- <!--l. 60--><p class="nopar" > (or use the <span
-class="cmss-10">csquotes </span>package). With this, the following works:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-2">
- \makefirstuc{\qt{word}}
-</pre>
- <!--l. 65--><p class="nopar" > This produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />&#8220;Word&#8221;
- <br /><spacer type=vertical size=10></span>
- Whereas
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-3">
- \makefirstuc{``word''}
-</pre>
- <!--l. 73--><p class="nopar" > fails (no case-change and double open quote becomes two single open quotes):
- <spacer type=vertical size=10><span class="obeylines-h">
- <br />&#8216;&#8216;word&#8221;
- <br /><spacer type=vertical size=10></span>
- </p></li>
-<li
- class="enumerate" id="x1-2004x2">
- <!--l. 80--><p class="noindent" >Font styles or colours:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-4">
- \newcommand*{\alert}[1]{\textcolor{red}{#1}}
-</pre>
- <!--l. 83--><p class="nopar" > Now the following is possible:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-5">
- \makefirstuc{\alert{word}}
-</pre>
- <!--l. 87--><p class="nopar" > This produces <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span id="textcolor1">Word</span>
- <br /><spacer type=vertical size=10></span>
- Note that <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{\textcolor{red}{word}}</span></span></span> fails (with an error) because the
- case-changing interferes with the label.</p></li></ol>
-<!--l. 97--><p class="indent" > Define these semantic commands robustly if you intend using any of the commands
-that fully expand their argument (<span
-class="cmtt-10">\emakefirstuc</span>, <span
-class="cmtt-10">\ecapitalisewords </span>and
-<span
-class="cmtt-10">\ecapitalisefmtwords</span>).
-
-
-
-</p>
-<!--l. 102--><p class="indent" > </div>
-</p><!--l. 102--><p class="noindent" ><a
-href="#top">Top</a><div class="chapter"><h2 class="chapterHead">2. <a
- id="sec:makefirstuc"></a>Capitalising the First Letter of a Word</h2>
-</p><!--l. 105--><p class="indent" > A simple word can be capitalised just using the standard LaTeX&#x00A0;upper casing command.
-For example,
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-6">
-\MakeUppercase&#x00A0;word
-</pre>
-<!--l. 109--><p class="nopar" > but for commands like <span
-class="cmtt-10">\Gls </span>the word may be embedded within the argument of another
-command, such as a&#x00A0;font changing command. This makes things more complicated for
-a&#x00A0;general purpose solution, so the <span
-class="cmss-10">mfirstuc </span>package provides:
-</p><!--l. 114--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\makefirstuc</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-3001"></a> <span
-class="cmtt-10">\makefirstuc{</span>&#x27E8;<span
-class="cmitt-10">stuff</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 116--><p class="noindent" >
-This makes the first object of &#x27E8;<span
-class="cmti-10">stuff </span>&#x27E9; upper case unless &#x27E8;<span
-class="cmti-10">stuff </span>&#x27E9; starts with a control sequence
-followed by a non-empty group, in which case the first object in the group is converted to
-upper case. <span
-class="cmbx-10">No expansion is performed on the argument.</span>
-</p><!--l. 123--><p class="indent" > If &#x27E8;<span
-class="cmti-10">stuff </span>&#x27E9; starts with punctuation that should be skipped over, use:
-</p><!--l. 125--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\MFUskippunc</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-3002"></a> <span
-class="cmtt-10">\MFUskippunc{</span>&#x27E8;<span
-class="cmitt-10">punctuation</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 127--><p class="noindent" >
-</p><!--l. 129--><p class="indent" > <div class="important" title="Important Note"> If &#x27E8;<span
-class="cmti-10">stuff </span>&#x27E9; starts with a control sequence that takes more than one argument, the
-case-changing will always be applied to the <span
-class="cmti-10">first </span>argument. If the text that requires the case
-change is in one of the other arguments, you must hide the earlier arguments in a wrapper
-command. For example, instead of <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\textcolor{red}{text}</span></span></span> you need to define, say, <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\red</span></span></span> as
-<span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\color{red}</span></span></span> and use <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\red{text}</span></span></span>. </div>
-</p><!--l. 137--><p class="noindent" >
-</p><!--l. 139--><p class="indent" > Examples: </p>
- <ul class="itemize1">
- <li class="itemize">
- <!--l. 141--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{abc}</span></span></span> produces Abc.
- </p></li>
- <li class="itemize">
- <!--l. 143--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{\emph{abc}}</span></span></span> produces <span
-class="cmti-10">Abc </span>(<span
-class="cmtt-10">\MakeUppercase</span><a
- id="dx1-3003"></a> has been applied to the
- letter &#8220;a&#8221; rather than <span
-class="cmtt-10">\emph</span>). Note however that
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-7">
- \makefirstuc{{\em&#x00A0;abc}}
-</pre>
- <!--l. 148--><p class="nopar" > produces <span
-class="cmti-10">ABC </span>(first object is <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">{\em</span><span
-class="cmtt-10">&#x00A0;abc}</span></span></span> so this is equivalent to <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MakeUppercase{\em</span><span
-class="cmtt-10">&#x00A0;abc}</span></span></span>),
- and
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-8">
- {\makefirstuc{\em&#x00A0;abc}}
-</pre>
- <!--l. 153--><p class="nopar" > produces abc (<span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\em</span></span></span> doesn&#8217;t have an argument therefore first object is <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\em</span></span></span> and so is
- equivalent to <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">{\MakeUppercase{\em}abc}</span></span></span>).
- </p></li>
- <li class="itemize">
- <!--l. 158--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{{\&#8217;a}bc}</span></span></span> produces &Aacute;bc.
- </p></li>
- <li class="itemize">
- <!--l. 160--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{\ae</span><span
-class="cmtt-10">&#x00A0;bc}</span></span></span> produces &AElig;bc.
- </p></li>
- <li class="itemize">
- <!--l. 162--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{{\ae}bc}</span></span></span> produces &AElig;bc.
- </p></li>
- <li class="itemize">
- <!--l. 164--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{{</span><span
-class="cmtt-10">&auml;</span><span
-class="cmtt-10">}bc}</span></span></span> produces &Auml;bc.
- </p></li>
- <li class="itemize">
- <!--l. 166--><p class="noindent" ><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{\MFUskippunc{&#8217;}tis</span><span
-class="cmtt-10">&#x00A0;the</span><span
-class="cmtt-10">&#x00A0;season}</span></span></span> produces &#8217;Tis the season.
-</p>
- </li></ul>
-<!--l. 171--><p class="indent" > Note that non-Latin or accented characters appearing at the start of the text should be
-placed in a group (even if you are using the <span
-class="cmss-10">inputenc</span><a
- id="dx1-3004"></a> package). The reason for this restriction
-is detailed in <a
-href="#sec:utf8"><span
-class="tcrm-1000">&sect;</span><span
-class="cmbx-10">4. </span></a><a
-href="#sec:utf8">UTF-8<!--tex4ht:ref: sec:utf8 --></a>.
-</p><!--l. 176--><p class="indent" > <span
-class="cmbx-10">New to version 2.04: </span>There is now limited support for UTF-8 characters with the
-<span
-class="cmss-10">inputenc</span><a
- id="dx1-3005"></a> package, provided that you load <span
-class="cmss-10">datatool-base</span><a
- id="dx1-3006"></a> (at least v2.24) before <span
-class="cmss-10">mfirstuc</span>
-(<span
-class="cmss-10">datatool-base</span><a
- id="dx1-3007"></a> is loaded automatically with newer versions of <span
-class="cmss-10">glossaries</span><a
- id="dx1-3008"></a>). If available <span
-class="cmss-10">mfirstuc</span><a
- id="dx1-3009"></a>
-will now use <span
-class="cmss-10">datatool-base</span><a
- id="dx1-3010"></a>&#8217;s <span
-class="cmtt-10">\dtl@getfirst@UTFviii</span><a
- id="dx1-3011"></a> command which is still experimental.
-See the <span
-class="cmss-10">datatool </span>manual for further details.
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-9">
-\documentclass{article}
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage{datatool-base}[2016/01/12]%&#x00A0;v2.24+
-\usepackage{mfirstuc}
-\begin{document}
-\makefirstuc{&eacute;lite}
-\end{document}
-</pre>
-<!--l. 197--><p class="nopar" > (Package ordering is important.)
-</p><!--l. 200--><p class="indent" > <div class="important" title="Important Note"> In version 1.02 of <span
-class="cmss-10">mfirstuc</span>, a bug fix resulted in a change in output if the first object is a
-control sequence followed by an empty group. Prior to version 1.02, <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{\ae{}bc}</span></span></span>
-produced &aelig;Bc. However as from version 1.02, it now produces &AElig;bc. </div>
-</p><!--l. 206--><p class="noindent" >
-</p><!--l. 208--><p class="indent" > Note also that
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-10">
-\newcommand{\abc}{abc}
-\makefirstuc{\abc}
-</pre>
-<!--l. 212--><p class="nopar" > produces: ABC. This is because the first object in the argument of <span
-class="cmtt-10">\makefirstuc </span>is <span
-class="cmtt-10">\abc</span>, so
-it does <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MakeUppercase{\abc}</span></span></span>. Whereas:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-11">
-\newcommand{\abc}{abc}
-\expandafter\makefirstuc\expandafter{\abc}
-</pre>
-<!--l. 219--><p class="nopar" > produces: Abc. There is a short cut command which will do this:
-</p><!--l. 221--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\xmakefirstuc</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-3012"></a> <span
-class="cmtt-10">\xmakefirstuc{</span>&#x27E8;<span
-class="cmitt-10">stuff</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 223--><p class="noindent" >
-This is equivalent to <span
-class="cmtt-10">\expandafter\makefirstuc\expandafter{</span>&#x27E8;<span
-class="cmti-10">stuff </span>&#x27E9;<span
-class="cmtt-10">}</span>. So
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-12">
-\newcommand{\abc}{abc}
-\xmakefirstuc{\abc}
-</pre>
-<!--l. 228--><p class="nopar" > produces: Abc.
-</p><!--l. 233--><p class="indent" > <div class="important" title="Important Note"> <span
-class="cmtt-10">\xmakefirstuc </span>only performs one level expansion on the <span
-class="cmti-10">first </span>object in its argument. It
-does not fully expand the entire argument. </div>
-</p><!--l. 237--><p class="noindent" >
-</p><!--l. 239--><p class="indent" > As from version 1.10, there is now a command that fully expands the entire argument
-before applying <span
-class="cmtt-10">\makefirstuc</span>:
-</p><!--l. 241--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\emakefirstuc</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-3013"></a> <span
-class="cmtt-10">\emakefirstuc{</span>&#x27E8;<span
-class="cmitt-10">text</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 243--><p class="noindent" >
-</p><!--l. 245--><p class="indent" > Examples:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-13">
-\newcommand{\abc}{\xyz&#x00A0;a}
-\newcommand{\xyz}{xyz}
-No&#x00A0;expansion:&#x00A0;\makefirstuc{\abc}.
-First&#x00A0;object&#x00A0;one-level&#x00A0;expansion:&#x00A0;\xmakefirstuc{\abc}.
-Fully&#x00A0;expanded:&#x00A0;\emakefirstuc{\abc}.
-</pre>
-<!--l. 252--><p class="nopar" > produces: No expansion: XYZA. First object one-level expansion: XYZa. Fully expanded:
-Xyza.
-</p><!--l. 260--><p class="indent" > If you use <span
-class="cmss-10">mfirstuc </span>without the <span
-class="cmss-10">glossaries</span><a
- id="dx1-3014"></a> package, the standard <span
-class="cmtt-10">\MakeUppercase </span>command
-is used. If used with <span
-class="cmss-10">glossaries</span><a
- id="dx1-3015"></a>, <span
-class="cmtt-10">\MakeTextUppercase</span><a
- id="dx1-3016"></a> (defined by the <span
-class="cmss-10">textcase</span><a
- id="dx1-3017"></a> package) is used
-instead. If you are using <span
-class="cmss-10">mfirstuc </span>without the <span
-class="cmss-10">glossaries </span>package and want to use
-<span
-class="cmtt-10">\MakeTextUppercase</span><a
- id="dx1-3018"></a> instead, you can redefine
-</p><!--l. 266--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\glsmakefirstuc</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-3019"></a> <span
-class="cmtt-10">\glsmakefirstuc{</span>&#x27E8;<span
-class="cmitt-10">text</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 268--><p class="noindent" >
-For example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-14">
-\renewcommand{\glsmakefirstuc}[1]{\MakeTextUppercase&#x00A0;#1}
-</pre>
-<!--l. 272--><p class="nopar" > Remember to also load <span
-class="cmss-10">textcase</span><a
- id="dx1-3020"></a> (<span
-class="cmss-10">glossaries </span>loads this automatically).
-
-
-
-</p>
-<!--l. 276--><p class="indent" > </div>
-</p><!--l. 276--><p class="noindent" ><a
-href="#top">Top</a><div class="chapter"><h2 class="chapterHead">3. <a
- id="sec:capitalisewords"></a>Capitalise the First Letter of Each Word in a Phrase or Sentence (Title Case)</h2>
-</p><!--l. 279--><p class="indent" > New to mfirstuc v1.06:
-</p><!--l. 280--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\capitalisewords</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4001"></a> <span
-class="cmtt-10">\capitalisewords{</span>&#x27E8;<span
-class="cmitt-10">text</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 282--><p class="noindent" >
-This command applies <span
-class="cmtt-10">\makefirstuc</span><a
- id="dx1-4002"></a> to each word in &#x27E8;<span
-class="cmti-10">text</span>&#x27E9; where the space character is used
-as the word separator. Note that it has to be a plain space character, not another form of
-space, such as <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">~</span></span></span> or <span
-class="cmtt-10">\space</span>. Note that no expansion is performed on &#x27E8;<span
-class="cmti-10">text</span>&#x27E9;. See <a
-href="#sec:nocap"><span
-class="tcrm-1000">&sect;</span><span
-class="cmbx-10">3.2 </span></a><a
-href="#sec:nocap">Excluding Words From Case-Changing<!--tex4ht:ref: sec:nocap --></a> for excluding words (such as &#8220;of&#8221;) from the
-case-changing.
-</p><!--l. 290--><p class="indent" > The actual capitalisation of each word is done using
-</p><!--l. 291--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\MFUcapwordfirstuc</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4003"></a> <span
-class="cmtt-10">\MFUcapwordfirstuc{</span>&#x27E8;<span
-class="cmitt-10">word</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 293--><p class="noindent" >
-This just does <span
-class="cmtt-10">\makefirstuc{</span>&#x27E8;<span
-class="cmti-10">word</span>&#x27E9;<span
-class="cmtt-10">} </span>by default. There&#8217;s a conditional that determines
-whether or not to consider a hyphen a word break:
-</p><!--l. 297--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\ifMFUhyphen</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4004"></a> <span
-class="cmtt-10">\ifMFUhyphen </span></div><hr>
-</p><!--l. 299--><p class="noindent" >
-</p><!--l. 301--><p class="indent" > If you want to title case each part of a compound word containing hyphens, you can enable
-this using
-</p><!--l. 303--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\MFUhyphentrue</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4005"></a> <span
-class="cmtt-10">\MFUhyphentrue </span></div><hr>
-</p><!--l. 305--><p class="noindent" >
-or switch it back off again using:
-</p><!--l. 307--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\MFUhyphenfalse</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4006"></a> <span
-class="cmtt-10">\MFUhyphenfalse </span></div><hr>
-</p><!--l. 309--><p class="noindent" >
-Compare
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-15">
-\capitalisewords{server-side&#x00A0;includes}
-</pre>
-<!--l. 313--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />Server-side Includes
- <br /><spacer type=vertical size=10></span>
-with
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-16">
-\MFUhyphentrue
-\capitalisewords{server-side&#x00A0;includes}
-</pre>
-<!--l. 322--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />Server-Side Includes
- <br /><spacer type=vertical size=10></span>
-Note that this won&#8217;t apply exceptions to each part of the hyphenated word.
-</p><!--l. 331--><p class="indent" > For other punctuation you need to markup the character with:
-</p><!--l. 332--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\MFUwordbreak</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4007"></a> <span
-class="cmtt-10">\MFUwordbreak{</span>&#x27E8;<span
-class="cmitt-10">punctuation</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 334--><p class="noindent" >
-For example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-17">
-\capitalisewords{a&#x00A0;big\MFUwordbreak{/}small&#x00A0;idea}
-</pre>
-<!--l. 338--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />A Big/Small Idea
- <br /><spacer type=vertical size=10></span>
-In this case, exceptions are applied. For example, if <span
-class="cmss-10">mfirstuc-english</span><a
- id="dx1-4008"></a> is loaded then:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-18">
-\capitalisewords{one&#x00A0;and\MFUwordbreak{/}or&#x00A0;another}
-</pre>
-<!--l. 347--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />One and/or Another
- <br /><spacer type=vertical size=10></span>
-Note that you can&#8217;t hide <span
-class="cmtt-10">\MFUwordbreak </span>inside a command or group.
-</p><!--l. 355--><p class="indent" > Exceptions aren&#8217;t applied if <span
-class="cmtt-10">\MFUwordbreak </span>occurs before the first space. For
-example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-19">
-\MFUnocap{a}\MFUnocap{the}%
-\capitalisewords{a\MFUwordbreak{/}the&#x00A0;something}
-</pre>
-<!--l. 360--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />A/The Something
- <br /><spacer type=vertical size=10></span>
-</p><!--l. 367--><p class="indent" > Formatting for the entire phrase must go outside <span
-class="cmtt-10">\capitalisewords </span>(unlike
-<span
-class="cmtt-10">\makefirstuc</span>). Compare:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-20">
-\capitalisewords{\textbf{a&#x00A0;sample&#x00A0;phrase}}
-</pre>
-<!--l. 371--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span
-class="cmbx-10">A sample phrase</span>
- <br /><spacer type=vertical size=10></span>
-with:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-21">
-\textbf{\capitalisewords{a&#x00A0;sample&#x00A0;phrase}}
-</pre>
-<!--l. 379--><p class="nopar" > which produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span
-class="cmbx-10">A Sample Phrase</span>
- <br /><spacer type=vertical size=10></span>
-</p><!--l. 385--><p class="indent" > As from version 2.03, there is now a command for phrases that may include a formatting
-command:
-</p><!--l. 388--><p class="indent" > <hr><div title="Definition"><span
-class="cmtt-10">\capitalisefmtwords{</span>&#x27E8;<span
-class="cmitt-10">phrase</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 389--><p class="noindent" >
-where &#x27E8;<span
-class="cmti-10">phrase</span>&#x27E9; may be just words (as with <span
-class="cmtt-10">\capitalisewords</span>) or may be entirely enclosed in a
-formatting command in the form </p><div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\capitalisefmtwords</span><span
-class="cmsy-10">{</span>&#x27E8;<span
-class="cmitt-10">cs</span>&#x27E9;<span
-class="cmtt-10">{</span>&#x27E8;<span
-class="cmitt-10">phrase</span>&#x27E9;<span
-class="cmtt-10">}</span><span
-class="cmsy-10">}</span>
-</div>
-</div> or contain formatted sub-phrases <div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\capitalisefmtwords</span><span
-class="cmsy-10">{</span>&#x27E8;<span
-class="cmitt-10">words</span>&#x27E9;<span
-class="cmtt-10">&#x00A0;</span>&#x27E8;<span
-class="cmitt-10">cs</span>&#x27E9;<span
-class="cmtt-10">{</span>&#x27E8;<span
-class="cmitt-10">sub-phrase</span>&#x27E9;<span
-class="cmtt-10">}</span><span
-class="cmtt-10">&#x00A0;</span>&#x27E8;<span
-class="cmitt-10">words</span>&#x27E9;<span
-class="cmsy-10">}</span>
-</div>
-</div> Avoid scoped declarations.
-<!--l. 401--><p class="indent" > <div class="important" title="Important Note"> <span
-class="cmtt-10">\capitalisefmtwords </span>is only designed for phrases that contain text-block commands
-with a single argument, which should be a word or sub-phrase. Anything more complicated is
-likely to break. Instead, use the starred form or <span
-class="cmtt-10">\capitalisewords</span>. </div>
-</p><!--l. 407--><p class="noindent" >
-</p><!--l. 409--><p class="indent" > The starred form only permits a text-block command at the start of the phrase.
-</p><!--l. 412--><p class="indent" > Examples:
- </p><ol class="enumerate1" >
-<li
- class="enumerate" id="x1-4010x1">
- <!--l. 414--><p class="noindent" >Phrase entirely enclosed in a formatting command:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-22">
- \capitalisefmtwords{\textbf{a&#x00A0;small&#x00A0;book&#x00A0;of&#x00A0;rhyme}}
-</pre>
- <!--l. 417--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span
-class="cmbx-10">A Small Book Of Rhyme</span>
- <br /><spacer type=vertical size=10></span>
- </p></li>
-<li
- class="enumerate" id="x1-4012x2">
- <!--l. 423--><p class="noindent" >Sub-phrase enclosed in a formatting command:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-23">
- \capitalisefmtwords{a&#x00A0;\textbf{small&#x00A0;book}&#x00A0;of&#x00A0;rhyme}
-</pre>
- <!--l. 426--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />A <span
-class="cmbx-10">Small Book </span>Of Rhyme
- <br /><spacer type=vertical size=10></span>
- </p></li>
-<li
- class="enumerate" id="x1-4014x3">
- <!--l. 432--><p class="noindent" >Nested text-block commands:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-24">
- \capitalisefmtwords{\textbf{a&#x00A0;\emph{small&#x00A0;book}}&#x00A0;of&#x00A0;rhyme}
-</pre>
- <!--l. 435--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span
-class="cmbx-10">A </span><span
-class="cmbxti-10">Small Book </span>Of Rhyme
- <br /><spacer type=vertical size=10></span>
- </p></li>
-<li
- class="enumerate" id="x1-4016x4">
- <!--l. 441--><p class="noindent" >Indicating words that shouldn&#8217;t have the case changed (see <a
-href="#sec:nocap"><span
-class="tcrm-1000">&sect;</span><span
-class="cmbx-10">3.2 </span></a><a
-href="#sec:nocap">Excluding
- Words From Case-Changing<!--tex4ht:ref: sec:nocap --></a>):
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-25">
- \MFUnocap{of}
- \capitalisefmtwords{\textbf{a&#x00A0;\emph{small&#x00A0;book}}&#x00A0;of&#x00A0;rhyme}
-</pre>
- <!--l. 446--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span
-class="cmbx-10">A </span><span
-class="cmbxti-10">Small Book </span>of Rhyme
- <br /><spacer type=vertical size=10></span>
- </p></li>
-<li
- class="enumerate" id="x1-4018x5">
- <!--l. 453--><p class="noindent" >Starred form:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-26">
- \MFUnocap{of}
- \capitalisefmtwords*{\emph{a&#x00A0;small&#x00A0;book&#x00A0;of&#x00A0;rhyme}}
-</pre>
- <!--l. 457--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span
-class="cmti-10">A Small Book of Rhyme</span>
- <br /><spacer type=vertical size=10></span>
- </p></li>
-<li
- class="enumerate" id="x1-4020x6">
- <!--l. 464--><p class="noindent" >The starred form also works with just text (no text-block command):
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-27">
- \MFUnocap{of}
- \capitalisefmtwords*{a&#x00A0;small&#x00A0;book&#x00A0;of&#x00A0;rhyme}
-</pre>
- <!--l. 469--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />A Small Book of Rhyme
- <br /><spacer type=vertical size=10></span>
-</p>
- </li></ol>
-<!--l. 478--><p class="indent" > If there is a text-block command within the argument of the starred form, it&#8217;s assumed to
-be at the start of the argument. Unexpected results can occur if there are other commands.
-For example
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-28">
-\MFUnocap{of}
-\capitalisefmtwords*{\emph{a&#x00A0;small}&#x00A0;book&#x00A0;\textbf{of&#x00A0;rhyme}}
-</pre>
-<!--l. 485--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br /><span
-class="cmti-10">A Small </span>Book <span
-class="cmbx-10">Of rhyme</span>
- <br /><spacer type=vertical size=10></span>
-(In this case <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\textbf{of</span><span
-class="cmtt-10">&#x00A0;rhyme}</span></span></span> is considered a single word.) Similarly if the text-block
-command occurs in the middle of the argument:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-29">
-\MFUnocap{of}
-\capitalisefmtwords*{a&#x00A0;\emph{very&#x00A0;small}&#x00A0;book&#x00A0;of&#x00A0;rhyme}
-</pre>
-<!--l. 497--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />A <span
-class="cmti-10">Very small </span>Book of Rhyme
- <br /><spacer type=vertical size=10></span>
-(In this case <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\emph{very</span><span
-class="cmtt-10">&#x00A0;small}</span></span></span> is considered a single word.)
-</p><!--l. 506--><p class="indent" > Grouping causes interference:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-30">
-\capitalisefmtwords{{a&#x00A0;\emph{small&#x00A0;book}}&#x00A0;of&#x00A0;rhyme}
-</pre>
-<!--l. 509--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />A <span
-class="cmti-10">Small book </span>Of Rhyme
- <br /><spacer type=vertical size=10></span>
-As with all the commands described here, avoid declarations. For example, the following
-fails:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-31">
-\capitalisefmtwords{{\bfseries&#x00A0;a&#x00A0;\emph{small&#x00A0;book}}&#x00A0;of&#x00A0;rhyme}
-</pre>
-<!--l. 518--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />a <span
-class="cmti-10">Small book </span>Of Rhyme
- <br /><spacer type=vertical size=10></span>
-</p><!--l. 524--><p class="indent" > Avoid complicated commands in the unstarred version. For example, the following
-breaks:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-32">
-\newcommand*{\swap}[2]{{#2}{#1}}
-\capitalisefmtwords{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;rhyme}
-</pre>
-<!--l. 529--><p class="nopar" > However it works okay with the starred form and the simpler <span
-class="cmtt-10">\capitalisewords</span>:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-33">
-\newcommand*{\swap}[2]{{#2}{#1}}
-\capitalisefmtwords*{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;rhyme}
-\capitalisewords{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;rhyme}
-</pre>
-<!--l. 537--><p class="nopar" > Produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />A okBo Of Rhyme
- <br />A okBo Of Rhyme
- <br /><spacer type=vertical size=10></span>
-Note that the case change is applied to the first argument.
-</p><!--l. 547--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\xcapitalisewords</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4021"></a> <span
-class="cmtt-10">\xcapitalisewords{</span>&#x27E8;<span
-class="cmitt-10">text</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 549--><p class="noindent" >
-This is a short cut for <span
-class="cmtt-10">\expandafter\capitalisewords\expandafter{</span>&#x27E8;<span
-class="cmti-10">text</span>&#x27E9;<span
-class="cmtt-10">}</span>.
-</p><!--l. 553--><p class="indent" > As from version 1.10, there is now a command that fully expands the entire argument
-before applying <span
-class="cmtt-10">\capitalisewords</span>:
-</p><!--l. 555--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\ecapitalisewords</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4022"></a> <span
-class="cmtt-10">\ecapitalisewords{</span>&#x27E8;<span
-class="cmitt-10">text</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 557--><p class="noindent" >
-</p><!--l. 559--><p class="indent" > There are also similar shortcut commands for the version that allows text-block
-commands:
-</p><!--l. 561--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\xcapitalisefmtwords</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4023"></a> <span
-class="cmtt-10">\xcapitalisefmtwords{</span>&#x27E8;<span
-class="cmitt-10">text</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 563--><p class="noindent" >
-The unstarred version is a short cut for <span
-class="cmtt-10">\expandafter\capitalisefmtwords\expandafter</span>
-<span
-class="cmtt-10">{</span>&#x27E8;<span
-class="cmti-10">text</span>&#x27E9;<span
-class="cmtt-10">}</span>. Similarly the starred version of <span
-class="cmtt-10">\xcapitalisefmtwords </span>uses the starred version of
-<span
-class="cmtt-10">\capitalisefmtwords</span>.
-</p><!--l. 569--><p class="indent" > For full expansion:
-</p><!--l. 570--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\ecapitalisefmtwords</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-4024"></a> <span
-class="cmtt-10">\ecapitalisefmtwords{</span>&#x27E8;<span
-class="cmitt-10">text</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 572--><p class="noindent" >
-Take care with this as it may expand non-robust semantic commands to replacement
-text that breaks the functioning of <span
-class="cmtt-10">\capitalisefmtwords</span>. Use robust semantic
-commands where possible. Again this has a starred version that uses the starred form of
-<span
-class="cmtt-10">\capitalisefmtwords</span>.
-</p><!--l. 579--><p class="indent" > Examples:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-34">
-\newcommand{\abc}{\xyz\space&#x00A0;four&#x00A0;five}
-\newcommand{\xyz}{one&#x00A0;two&#x00A0;three}
-No&#x00A0;expansion:&#x00A0;\capitalisewords{\abc}.
-First&#x00A0;object&#x00A0;one-level&#x00A0;expansion:&#x00A0;\xcapitalisewords{\abc}.
-Fully&#x00A0;expanded:&#x00A0;\ecapitalisewords{\abc}.
-</pre>
-<!--l. 586--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />No expansion: ONE TWO THREE FOUR FIVE.
- <br />First object one-level expansion: ONE TWO THREE four Five.
- <br />Fully expanded: One Two Three Four Five.
- <br /><spacer type=vertical size=10></span>
-</p><!--l. 596--><p class="indent" > (Remember that the spaces need to be explicit. In the second case above, using
-<span
-class="cmtt-10">\xcapitalisewords</span>, the space before &#8220;four&#8221; has been hidden within <span
-class="cmtt-10">\space </span>so it&#8217;s not
-recognised as a word boundary, but in the third case, <span
-class="cmtt-10">\space </span>has been expanded to an actual
-space character.)
-</p><!--l. 602--><p class="indent" > Examples:
- </p><ol class="enumerate1" >
-<li
- class="enumerate" id="x1-4026x1">
- <!--l. 605--><p class="noindent" >
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-35">
- \capitalisewords{a&#x00A0;book&#x00A0;of&#x00A0;rhyme.}
-</pre>
- <!--l. 607--><p class="nopar" > produces: A Book Of Rhyme.
- </p></li>
-<li
- class="enumerate" id="x1-4028x2">
- <!--l. 612--><p class="noindent" >
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-36">
- \capitalisewords{a&#x00A0;book\space&#x00A0;of&#x00A0;rhyme.}
-</pre>
- <!--l. 614--><p class="nopar" > produces: A Book of Rhyme.
- </p></li>
-<li
- class="enumerate" id="x1-4030x3">
- <!--l. 619--><p class="noindent" >
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-37">
- \newcommand{\mytitle}{a&#x00A0;book\space&#x00A0;of&#x00A0;rhyme.}
- \capitalisewords{\mytitle}
-</pre>
- <!--l. 622--><p class="nopar" > produces: A BOOK OF RHYME. (No expansion is performed on <span
-class="cmtt-10">\mytitle</span>.) Compare
- with next example:
- </p></li>
-<li
- class="enumerate" id="x1-4032x4">
- <!--l. 629--><p class="noindent" >
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-38">
- \newcommand{\mytitle}{a&#x00A0;book\space&#x00A0;of&#x00A0;rhyme.}
- \xcapitalisewords{\mytitle}
-</pre>
- <!--l. 632--><p class="nopar" > produces: A Book of Rhyme.
- </p><!--l. 636--><p class="noindent" >However
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-39">
- \ecapitalisewords{\mytitle}
-</pre>
- <!--l. 639--><p class="nopar" > produces: A Book Of Rhyme. (<span
-class="cmtt-10">\space </span>has been expanded to an actual space
- character.)
- </p></li>
-<li
- class="enumerate" id="x1-4034x5">
- <!--l. 645--><p class="noindent" >
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-40">
- \newcommand*{\swap}[2]{{#2}{#1}}
- \capitalisewords{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;rhyme}
- \ecapitalisewords{a&#x00A0;\swap{bo}{ok}&#x00A0;of&#x00A0;rhyme}
-</pre>
- <!--l. 650--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />A okBo Of Rhyme
- <br />A OKbo Of Rhyme
- <br /><spacer type=vertical size=10></span>
- This is because the argument of <span
-class="cmtt-10">\ecapitalisewords </span>is fully expanded before being
- passed to <span
-class="cmtt-10">\capitalisewords </span>so that last example is equivalent to:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-41">
- \capitalisewords{a&#x00A0;{ok}{bo}&#x00A0;of&#x00A0;rhyme}
-</pre>
- <!--l. 663--><p class="nopar" ></p></li></ol>
-<!--l. 666--><p class="noindent" ><a
-href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.1 </span> <a
- id="sec:pdfbookmarks"></a>PDF Bookmarks</h3>
-<!--l. 669--><p class="noindent" ><div class="important" title="Important Note"> If you are using <span
-class="cmss-10">hyperref</span><a
- id="dx1-5001"></a> and want to use <span
-class="cmtt-10">\capitalisewords</span>, <span
-class="cmtt-10">\capitalisefmtwords </span>or
-<span
-class="cmtt-10">\makefirstuc</span><a
- id="dx1-5002"></a> (or the expanded variants) in a section heading, the PDF bookmarks won&#8217;t be
-able to use the command as it&#8217;s not expandable, so you will get a warning that looks
-like:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-42">
-Package&#x00A0;hyperref&#x00A0;Warning:&#x00A0;Token&#x00A0;not&#x00A0;allowed&#x00A0;in&#x00A0;a&#x00A0;PDF&#x00A0;string
+</ol>
+<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.521"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.522"></a><code class="code"><code class="cmd">\usepackage</code>{<dfn id="glo:pkg.mfirstuc-english"><span class="styfmt">mfirstuc-english</span></dfn>}</code></div><!-- end of pinnedbox -->
+ The supplementary package <a id="wrglossary.523"></a><a href="#glo:pkg.mfirstuc-english"><span class="styfmt">mfirstuc-english</span></a> loads <a id="wrglossary.524"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> and uses <a id="wrglossary.525"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a> to add common English articles and conjunctions, such as <span class="qt">“aâ€</span>, <span class="qt">“anâ€</span>, <span class="qt">“andâ€</span>, <span class="qt">“butâ€</span>. You may want to add other words to this list, such as prepositions but, as there’s some dispute over whether prepositions should be capitalised, I don’t intend to add them to this package. Note that you need to explicitly load <a id="wrglossary.526"></a><a href="#glo:pkg.mfirstuc-english"><span class="styfmt">mfirstuc-english</span></a> if you require it. There’s no automatic language detection performed by <a id="wrglossary.527"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a>.<p>
+If you want to write a similar package for another language, all you need to do is create a file with the extension <span class="filefmt">.sty</span> that starts with: <pre class="compactcodebox"><code class="cmd">\NeedsTeXFormat</code>{LaTeX2e}
+</pre> The next line should identify the package. For example, if you have called the file <span class="filefmt">mfirstuc-french.sty</span> then you need: <pre class="compactcodebox"><code class="cmd">\ProvidesPackage</code>{mfirstuc-french}
+</pre> It’s a good idea to also add a version in the final optional argument, for example: <pre class="compactcodebox"><code class="cmd">\ProvidesPackage</code>{mfirstuc-french}[2014/07/30 v1.0]
+</pre> Next load <a id="wrglossary.528"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a>: <pre class="compactcodebox"><code class="cmd">\RequirePackage</code>{mfirstuc}
+</pre> Now add all your <a id="wrglossary.529"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a> commands. For example: <pre class="compactcodebox"><a id="wrglossary.530"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{de}
+</pre> At the end of the file add: <pre class="compactcodebox"><code class="cmd">\endinput</code>
+</pre><p>
+Put the file somewhere on TeX’s path, and now you can use this package in your document. You might also consider <a href="http://ctan.org/upload">uploading it to CTAN</a> in case other users find it useful.<p>
+
+</section><!-- end of section sec:nocap -->
+
+<section id="sec:pdfbookmarks"><!-- start of section sec:pdfbookmarks --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->2.2. PDF Bookmarks<div class="labellink"><a href="#sec:pdfbookmarks">[link]</a></div></h2><!-- end of section header -->
+<p>
+If you are using <a id="wrglossary.531"></a><a href="#glo:pkg.hyperref"><span class="styfmt">hyperref</span></a> and want to use <a id="wrglossary.532"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a> or <a id="wrglossary.533"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a> (or the expanded variants) in a section heading, the PDF bookmarks won’t be able to use the command as it’s not expandable, so you will get a warning that looks like: <pre class="transcript"><div class="transcripttitle"><a id="wrglossary.534"></a><a href="#glo:sym.transcript"><span title="Transcript" class="icon">🔎</span></a></div>Package hyperref Warning: Token not allowed in a PDF string
(PDFDocEncoding):
-(hyperref)&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;removing&#x00A0;`\capitalisewords'
-</pre>
-<!--l. 679--><p class="nopar" > </div>
-</p><!--l. 680--><p class="noindent" >
-</p><!--l. 682--><p class="noindent" >If you want to provide an alternative for the PDF bookmark, you can use <span
-class="cmss-10">hyperref</span><a
- id="dx1-5003"></a>&#8217;s
-<span
-class="cmtt-10">\texorpdfstring</span><a
- id="dx1-5004"></a> command. For example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-43">
-\chapter{\texorpdfstring
-&#x00A0;&#x00A0;{\capitalisewords{a&#x00A0;book&#x00A0;of&#x00A0;rhyme}}%&#x00A0;TeX
-&#x00A0;&#x00A0;{A&#x00A0;Book&#x00A0;of&#x00A0;Rhyme}%&#x00A0;PDF
+(hyperref) removing `<a id="wrglossary.535"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>'
+</pre><p>
+If you want to provide an alternative for the PDF bookmark, you can use <a id="wrglossary.536"></a><a href="#glo:pkg.hyperref"><span class="styfmt">hyperref</span></a>’s <a id="wrglossary.537"></a><a href="#glo:texorpdfstring"><code class="csfmt">\texorpdfstring</code></a> command. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.538"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\chapter</code>{<a id="wrglossary.539"></a><a href="#glo:texorpdfstring"><code class="csfmt">\texorpdfstring</code></a>
+ {<a id="wrglossary.540"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a book of rhyme}}<span class="comment">% TeX</span>
+ {A Book of Rhyme}<span class="comment">% PDF</span>
}
-</pre>
-<!--l. 689--><p class="nopar" > Alternatively, you can use <span
-class="cmss-10">hyperref</span><a
- id="dx1-5005"></a>&#8217;s mechanism for disabling commands within the
-bookmarks. For example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-44">
-\pdfstringdefDisableCommands{%
-&#x00A0;\let\capitalisewords\@firstofone
+</pre> Alternatively, you can use <a id="wrglossary.541"></a><a href="#glo:pkg.hyperref"><span class="styfmt">hyperref</span></a>’s mechanism for disabling commands within the bookmarks. For example: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.542"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.543"></a><a href="#glo:pdfstringdefDisableCommands"><code class="csfmt">\pdfstringdefDisableCommands</code></a>{<span class="comment">% </span>
+ <code class="cmd">\let</code><a id="wrglossary.544"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a><code class="cmd">\@firstofone</code>
}
-</pre>
-<!--l. 696--><p class="nopar" >
-</p><!--l. 698--><p class="indent" > See the <span
-class="cmss-10">hyperref</span><a
- id="dx1-5006"></a> manual for further details.
-</p><!--l. 700--><p class="noindent" >
-</p>
-<!--l. 700--><p class="noindent" ><a
-href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.2 </span> <a
- id="sec:nocap"></a>Excluding Words From Case-Changing</h3>
-<!--l. 703--><p class="noindent" >As from v1.09, you can specify words which shouldn&#8217;t be capitalised unless they occur at the
-start of &#x27E8;<span
-class="cmti-10">text</span>&#x27E9; using:
-</p><!--l. 705--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\MFUnocap</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-6001"></a> <span
-class="cmtt-10">\MFUnocap{</span>&#x27E8;<span
-class="cmitt-10">word</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 707--><p class="noindent" >
-This only has a local effect. The global version is:
-</p><!--l. 709--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\gMFUnocap</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-6002"></a> <span
-class="cmtt-10">\gMFUnocap{</span>&#x27E8;<span
-class="cmitt-10">word</span>&#x27E9;<span
-class="cmtt-10">} </span></div><hr>
-</p><!--l. 711--><p class="noindent" >
-</p><!--l. 713--><p class="indent" > For example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-45">
-\capitalisewords{the&#x00A0;wind&#x00A0;in&#x00A0;the&#x00A0;willows}
-\MFUnocap{in}%
-\MFUnocap{the}%
-\capitalisewords{the&#x00A0;wind&#x00A0;in&#x00A0;the&#x00A0;willows}
-</pre>
-<!--l. 721--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />The Wind In The Willows
- <br />The Wind in the Willows
- <br /><spacer type=vertical size=10></span>
-The list of words that shouldn&#8217;t be capitalised can be cleared using
-</p><!--l. 732--><p class="indent" > <hr><div title="Definition"><span class="reversemarginpar"><span
-class="cmtt-9">\MFUclear</span><span
-class="cmtt-9">&#x00A0;</span></span><a
- id="dx1-6003"></a> <span
-class="cmtt-10">\MFUclear </span></div><hr>
-</p><!--l. 734--><p class="noindent" >
-</p><!--l. 736--><p class="indent" > You can also simply place an empty group in front of a word if you don&#8217;t want that specific
-instance to be capitalised. For example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-46">
-\MFUclear
-\capitalisewords{the&#x00A0;{}wind&#x00A0;in&#x00A0;the&#x00A0;willows}
-</pre>
-<!--l. 742--><p class="nopar" > produces: <spacer type=vertical size=10><span class="obeylines-h">
- <br />The wind In The Willows
- <br /><spacer type=vertical size=10></span>
-This is also a useful way of protecting commands that shouldn&#8217;t be parsed. For
-example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-47">
-\capitalisewords{this&#x00A0;is&#x00A0;section&#x00A0;{}\nameref{sec:nocap}.}
-</pre>
-<!--l. 752--><p class="nopar" > produces <spacer type=vertical size=10><span class="obeylines-h">
- <br />This Is Section <a
-href="#sec:nocap">Excluding Words From Case-Changing<!--tex4ht:ref: sec:nocap --></a>.
- <br /><spacer type=vertical size=10></span>
-(No case-changing is applied to <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\nameref{sec:nocap}</span></span></span>. It just happens to already be in title
-case.)
-</p><!--l. 760--><p class="indent" > The package <span
-class="cmss-10">mfirstuc-english</span><a
- id="dx1-6004"></a> loads <span
-class="cmss-10">mfirstuc </span>and uses <span
-class="cmtt-10">\MFUnocap </span>to add common
-English articles and conjunctions, such as &#8220;a&#8221;, &#8220;an&#8221;, &#8220;and&#8221;, &#8220;but&#8221;. You may want
-to add other words to this list, such as prepositions but, as there&#8217;s some dispute
-over whether prepositions should be capitalised, I&#x00A0;don&#8217;t intend to add them to this
-package.
-</p><!--l. 767--><p class="indent" > If you want to write a similar package for another language, all you need to do is create a
-file with the extension <span
-class="cmtt-10">.sty </span>that starts with
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-48">
-\NeedsTeXFormat{LaTeX2e}
-</pre>
-<!--l. 772--><p class="nopar" > The next line should identify the package. For example, if you have called the file
-<span
-class="cmtt-10">mfirstuc-french.sty </span>then you need:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-49">
-\ProvidesPackage{mfirstuc-french}
-</pre>
-<!--l. 777--><p class="nopar" > It&#8217;s a good idea to also add a version in the final optional argument, for example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-50">
-\ProvidesPackage{mfirstuc-french}[2014/07/30&#x00A0;v1.0]
-</pre>
-<!--l. 782--><p class="nopar" > Next load <span
-class="cmss-10">mfirstuc</span>:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-51">
-\RequirePackage{mfirstuc}
-</pre>
-<!--l. 786--><p class="nopar" > Now add all your <span
-class="cmtt-10">\MFUnocap </span>commands. For example:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-52">
-\MFUnocap{de}
-</pre>
-<!--l. 790--><p class="nopar" > At the end of the file add:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-53">
-\endinput
-</pre>
-<!--l. 794--><p class="nopar" >
-</p><!--l. 796--><p class="indent" > Put the file somewhere on TeX&#8217;s path, and now you can use this package in your
-document. You might also consider <a
-href="http://ctan.org/upload" >uploading it to CTAN</a> in case other users find it
-useful.
-
-
-
-</p>
-<!--l. 801--><p class="indent" > </div>
-</p><!--l. 801--><p class="noindent" ><a
-href="#top">Top</a><div class="chapter"><h2 class="chapterHead">4. <a
- id="sec:utf8"></a>UTF-8</h2>
-</p><!--l. 804--><p class="indent" > (See <a
-href="https://dickimaw-books.com/blog/binary-files-text-files-and-file-encodings/" >Binary Files, Text Files and File Encodings</a> if you are confused about how file
-encodings such as UTF-8 relate to text files.)
-</p><!--l. 809--><p class="indent" > The <span
-class="cmtt-10">\makefirstuc </span>command works by utilizing the fact that, in most cases, TeX&#x00A0;doesn&#8217;t
-require a regular argument to be enclosed in braces if it only consists of a single token. (This is
-why you can do, say, <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\frac12</span></span></span> instead of <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\frac{1}{2}</span></span></span> or <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">x^2</span></span></span> instead of <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">x^{2}</span></span></span>, although some
-users frown on this practice.)
-</p><!--l. 816--><p class="indent" > A&#x00A0;simplistic version of the <span
-class="cmtt-10">\makefirstuc </span>command is:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-54">
-\newcommand*{\FirstUC}[1]{\MakeUppercase&#x00A0;#1}
-</pre>
-<!--l. 819--><p class="nopar" > Here
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-55">
-\FirstUC{abc}
-</pre>
-<!--l. 823--><p class="nopar" > is equivalent to
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-56">
-\MakeUppercase&#x00A0;abc
-</pre>
-<!--l. 827--><p class="nopar" > and since <span
-class="cmtt-10">\MakeUppercase </span>requires an argument, it grabs the first token (the character &#8220;a&#8221; in
-this case) and uses that as the argument so that the result is: Abc.
-</p><!--l. 832--><p class="indent" > The <span
-class="cmss-10">glossaries</span><a
- id="dx1-7001"></a> package needs to take into account the fact that the text may be contained
-in the argument of a formatting command, such as <span
-class="cmtt-10">\acronymfont</span>, so <span
-class="cmtt-10">\makefirstuc </span>has to be
-more complicated than the trivial <span
-class="cmtt-10">\FirstUC </span>shown above, but at its basic level, <span
-class="cmtt-10">\makefirstuc</span>
-uses this same method and is the reason why, in most cases, you don&#8217;t need to enclose the first
-character in braces. So if </p><div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\MakeUppercase</span><span
-class="cmtt-10">&#x00A0;</span>&#x27E8;<span
-class="cmitt-10">stuff</span>&#x27E9;
-</div>
-</div> works, then <div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\makefirstuc{</span>&#x27E8;<span
-class="cmitt-10">stuff</span>&#x27E9;<span
-class="cmtt-10">}</span>
-</div>
-</div> should also work and so should <div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\makefirstuc</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">\foo{</span>&#x27E8;<span
-class="cmitt-10">stuff</span>&#x27E9;<span
-class="cmtt-10">}</span><span
-class="cmsy-10">}</span>
-</div>
-</div> but if <div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\MakeUppercase</span><span
-class="cmtt-10">&#x00A0;</span>&#x27E8;<span
-class="cmitt-10">stuff</span>&#x27E9;
-</div>
-</div> doesn&#8217;t work, then neither will <div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\makefirstuc{</span>&#x27E8;<span
-class="cmitt-10">stuff</span>&#x27E9;<span
-class="cmtt-10">}</span>
-</div>
-</div> nor <div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\makefirstuc</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">\foo{</span>&#x27E8;<span
-class="cmitt-10">stuff</span>&#x27E9;<span
-class="cmtt-10">}</span><span
-class="cmsy-10">}</span>
-</div>
-</div>
-<!--l. 864--><p class="indent" > Try the following document: </p><div class="alltt">
-
-
-
-<div class="obeylines-v">
-<span
-class="cmtt-10">\documentclass</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">article</span><span
-class="cmsy-10">}</span>
-<br />
-<br /><span
-class="cmtt-10">\usepackage[utf8]</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">inputenc</span><span
-class="cmsy-10">}</span>
-<br /><span
-class="cmtt-10">\usepackage[T1]</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">fontenc</span><span
-class="cmsy-10">}</span>
-<br />
-<br /><span
-class="cmtt-10">\begin</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">document</span><span
-class="cmsy-10">}</span>
-<br />
-<br /><span
-class="cmtt-10">\MakeUppercase</span><span
-class="cmtt-10">&#x00A0;</span><span
-class="cmtt-10">&atilde;</span><span
-class="cmtt-10">bc</span>
-<br />
-<br /><span
-class="cmtt-10">\end</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">document</span><span
-class="cmsy-10">}</span>
-</div>
-</div>
-<!--l. 878--><p class="indent" > This will result in the error:
-
-
-
-</p>
- <pre class="verbatim" id="verbatim-57">
-!&#x00A0;Argument&#x00A0;of&#x00A0;\UTFviii@two@octets&#x00A0;has&#x00A0;an&#x00A0;extra&#x00A0;}.
-</pre>
-<!--l. 881--><p class="nopar" > This is why <span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc{</span></span></span><span
-class="cmtt-10">&atilde;</span><span
-class="cmtt-10">bc</span><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">}</span></span></span> won&#8217;t work. It will only work if the character <span
-class="cmtt-10">&atilde;</span> is placed
-inside a group.
-</p><!--l. 886--><p class="indent" > The reason for this error message is due to TeX&#x00A0;having been written before Unicode was
-invented. Although <span
-class="cmtt-10">&atilde;</span> may look like a single character in your text editor, from TeX&#8217;s point of
-view it&#8217;s <span
-class="cmti-10">two </span>tokens. So </p><div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\MakeUppercase</span><span
-class="cmtt-10">&#x00A0;</span><span
-class="cmtt-10">&atilde;</span><span
-class="cmtt-10">bc</span>
-</div>
-</div> tries to apply <span
-class="cmtt-10">\MakeUppercase </span>to just the first octet of &atilde;. This means that the second octet
-has been separated from the first octet, which is the cause of the error. In this case the
-argument isn&#8217;t a single token, so the two tokens (the first and second octet of &atilde;) must be
-grouped: <div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\MakeUppercase</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">&atilde;</span><span
-class="cmsy-10">}</span><span
-class="cmtt-10">bc</span>
-</div>
-</div> Over recent years the LaTeX&#x00A0;kernel has changed to allow the use of UTF-8 characters within
-labels but the fundamental problem of each octet been viewed as a separated token
-remains.
-<!--l. 905--><p class="indent" > Note that XeTeX&#x00A0;(and therefore XeLaTeX) is a modern implementation of TeX&#x00A0;designed
-to work with Unicode and therefore doesn&#8217;t suffer from this drawback. Now let&#8217;s look at the
-XeLaTeX&#x00A0;equivalent of the above example: </p><div class="alltt">
-<div class="obeylines-v">
-<span
-class="cmtt-10">\documentclass</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">article</span><span
-class="cmsy-10">}</span>
-<br />
-<br /><span
-class="cmtt-10">\usepackage</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">fontspec</span><span
-class="cmsy-10">}</span>
-<br />
-<br /><span
-class="cmtt-10">\begin</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">document</span><span
-class="cmsy-10">}</span>
-<br />
-<br /><span
-class="cmtt-10">\MakeUppercase</span><span
-class="cmtt-10">&#x00A0;</span><span
-class="cmtt-10">&atilde;</span><span
-class="cmtt-10">bc</span>
-<br />
-<br /><span
-class="cmtt-10">\end</span><span
-class="cmsy-10">{</span><span
-class="cmtt-10">document</span><span
-class="cmsy-10">}</span>
-</div>
-</div>
-<!--l. 921--><p class="indent" > This works correctly when compiled with XeLaTeX. This means that <span
-class="cmtt-10">\makefirstuc</span><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">{</span></span></span><span
-class="cmtt-10">&atilde;</span><span
-class="cmtt-10">bc</span><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">}</span></span></span>
-will work <span
-class="cmti-10">provided you use XeLaTeX</span><span
-class="cmti-10">&#x00A0;and the </span><span
-class="cmssi-10">fontspec</span><a
- id="dx1-7002"></a> <span
-class="cmti-10">package</span>.
-</p><!--l. 925--><p class="indent" > Version 2.24 of <span
-class="cmss-10">datatool-base</span><a
- id="dx1-7003"></a> added the command <span
-class="cmtt-10">\dtl@getfirst@UTFviii </span>which
-attempts to grab both octets. If this command has been defined, <span
-class="cmss-10">mfirstuc</span><a
- id="dx1-7004"></a> will use it when it
-tries to split the first character from the rest of the word. See the <a
-href="http://mirrors.ctan.org/macros/latex/contrib/datatool/datatool-code.pdf" ><span
-class="cmss-10">datatool </span>documented code</a>
-for further details.
-
-
-
-</p>
-<!--l. 2--><p class="indent" > </div>
-</p><!--l. 2--><p class="noindent" ><a
-href="#top">Top</a></p><h2 class="likechapterHead"><a
- id="x1-80004"></a>Index</h2>
- <span
-class="cmbx-10">C</span>
- <div class="theindex"><span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\capitalisewords</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">8 </span><br /></span>
-<p class="theindex"> <span
-class="cmbx-10">D</span>
-<span class="index-item"><span
-class="cmss-10">datatool-base </span>package&#x00A0;&#x00A0;<span class="underline">6</span>, <span class="underline">20</span> <br /></span>
-</p><p class="theindex"> <span
-class="cmbx-10">E</span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\ecapitalisefmtwords</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">13 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\ecapitalisewords</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">13 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\emakefirstuc</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">7 </span><br /></span>
-</p><p class="theindex"> <span
-class="cmbx-10">F</span>
-<span class="index-item"><span
-class="cmss-10">fontspec </span>package&#x00A0;&#x00A0;<span class="underline">20</span> <br /></span>
-</p><p class="theindex"> <span
-class="cmbx-10">G</span>
-<span class="index-item"><span
-class="cmss-10">glossaries </span>package&#x00A0;&#x00A0;<span class="underline">6, 7</span>, <span class="underline">18</span> <br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\glsmakefirstuc</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">7 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\gMFUnocap</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">15 </span><br /></span>
-</p><p class="theindex"> <span
-class="cmbx-10">H</span>
-<span class="index-item"><span
-class="cmss-10">hyperref </span>package&#x00A0;&#x00A0;<span class="underline">15</span> <br /></span>
-</p><p class="theindex"> <span
-class="cmbx-10">I</span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\ifMFUhyphen</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">8 </span><br /></span>
-<span class="index-item"><span
-class="cmss-10">inputenc </span>package&#x00A0;&#x00A0;<span class="underline">6</span> <br /></span>
-</p><p class="theindex"> <span
-class="cmbx-10">M</span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\makefirstuc</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">5 </span><br /></span>
-<span class="index-item"><span
-class="cmss-10">mfirstuc </span>package&#x00A0;&#x00A0;<span class="underline">6</span>, <span class="underline">20</span> <br /></span>
-
-
-
-<span class="index-item"><span
-class="cmss-10">mfirstuc-english </span>package&#x00A0;&#x00A0;<span class="underline">9</span>, <span class="underline">16</span> <br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MFUcapwordfirstuc</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">8 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MFUclear</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">16 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MFUhyphenfalse</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">8 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MFUhyphentrue</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">8 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MFUnocap</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">15 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MFUskippunc</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">5 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\MFUwordbreak</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">9 </span><br /></span>
-</p><p class="theindex"> <span
-class="cmbx-10">T</span>
-<span class="index-item"><span
-class="cmss-10">textcase </span>package&#x00A0;&#x00A0;<span class="underline">7</span> <br /></span>
-</p><p class="theindex"> <span
-class="cmbx-10">X</span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\xcapitalisefmtwords</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">13 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\xcapitalisewords</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">13 </span><br /></span>
-<span class="index-item"><span class="obeylines-h"><span class="verb"><span
-class="cmtt-10">\xmakefirstuc</span></span></span>&#x00A0;&#x00A0;<span
-class="cmti-10">7 </span><br /></span>
-</p></div>
-
-</body></html>
-
-
-
-
+</pre> The same applies to <a id="wrglossary.545"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. You can, however, use the expandable <a id="wrglossary.546"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>. So you may prefer: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.547"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.548"></a><a href="#glo:pdfstringdefDisableCommands"><code class="csfmt">\pdfstringdefDisableCommands</code></a>{<span class="comment">% </span>
+ <code class="cmd">\let</code><a id="wrglossary.549"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a><code class="cmd">\MFUsentencecase</code>
+ <code class="cmd">\let</code><a id="wrglossary.550"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a><code class="cmd">\MFUsentencecase</code>
+}
+</pre><p>
+See the <a id="wrglossary.551"></a><a href="#glo:pkg.hyperref"><span class="styfmt">hyperref</span></a> manual for further details.<p>
+
+</section><!-- end of section sec:pdfbookmarks -->
+
+<section id="sec:titlecaseexamples"><!-- start of section sec:titlecaseexamples --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->2.3. Examples<div class="labellink"><a href="#sec:titlecaseexamples">[link]</a></div></h2><!-- end of section header -->
+<p>
+
+<ol class="displaylist">
+ <li><span class="numitem">1.</span>Text only: <div style="text-align: center; border-style: none; "><a id="wrglossary.552"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a><a id="wrglossary.553"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of frame@coderesult@title -->
+<p>
+<pre class="sidebysidecode">
+<a id="wrglossary.554"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a little book of rhyme}
+</pre><div class="sidebysideresult">A Little Book Of Rhyme </div><p>
+<p>
+<li><span class="numitem">2.</span>Excluding words (see §<a href="#sec:nocap">2.1</a>): <div style="text-align: center; border-style: none; "><a id="wrglossary.555"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a><a id="wrglossary.556"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of frame@coderesult@title -->
+<p>
+<pre class="sidebysidecode">
+<a id="wrglossary.557"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{of}
+<a id="wrglossary.558"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a little book of rhyme}
+</pre><div class="sidebysideresult"> A Little Book of Rhyme </div><p>
+<p>
+<li><span class="numitem">3.</span><a id="wrglossary.559"></a><a href="#glo:space"><code class="csfmt">\space</code></a> isn’t recognised as a word boundary: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.560"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.561"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a book of rhyme.}
+
+<a id="wrglossary.562"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a book<a id="wrglossary.563"></a><a href="#glo:space"><code class="csfmt">\space</code></a> of rhyme.}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.564"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+A Book Of Rhyme.<p>
+A Book of Rhyme. </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">4.</span>Phrase entirely enclosed in a formatting command: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.565"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.566"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{<code class="cmd">\emph</code>{a small book of rhyme}}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.567"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+<span style="font-style: italic; font-variant: normal; ">A Small Book Of Rhyme</span> </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">5.</span>Sub-phrase enclosed in a formatting command: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.568"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.569"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{a <code class="cmd">\emph</code>{small book} of rhyme}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.570"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+A <span style="font-style: italic; font-variant: normal; ">Small Book</span> Of Rhyme </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">6.</span>Nested text-block commands: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.571"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.572"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{<code class="cmd">\textbf</code>{a <code class="cmd">\emph</code>{small book}} of rhyme}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.573"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+<span style="font-weight: bold; ">A <span style="font-style: italic; font-variant: normal; ">Small Book</span></span> Of Rhyme </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">7.</span>Formatting and case-change exception (see §<a href="#sec:nocap">2.1</a>): <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.574"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.575"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{of}
+<a id="wrglossary.576"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{<code class="cmd">\textbf</code>{a <code class="cmd">\emph</code>{small book}} of rhyme}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.577"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <span style="font-weight: bold; ">A <span style="font-style: italic; font-variant: normal; ">Small Book</span></span> of Rhyme </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">8.</span>Starred form: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.578"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.579"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{of}
+<a id="wrglossary.580"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>*{<code class="cmd">\emph</code>{a small book of rhyme}}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.581"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <span style="font-style: italic; font-variant: normal; ">A Small Book of Rhyme</span> </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">9.</span>The starred form also works with just text (no text-block command): <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.582"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.583"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{of}
+<a id="wrglossary.584"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>*{a small book of rhyme}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.585"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ A Small Book of Rhyme </div><!-- end of resultbox -->
+<p>
+<li><span class="numitem">10.</span>Expansion: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.586"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newcommand</code>{<code class="cmd">\abc</code>}{<code class="cmd">\xyz</code><a id="wrglossary.587"></a><a href="#glo:space"><code class="csfmt">\space</code></a> four five}
+<code class="cmd">\newcommand</code>{<code class="cmd">\xyz</code>}{one two three}
+No expansion: <a id="wrglossary.588"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{<code class="cmd">\abc</code>}.
+
+First object one-level expansion: <a id="wrglossary.589"></a><a href="#glo:xcapitalisewords"><code class="csfmt">\xcapitalisewords</code></a>{<code class="cmd">\abc</code>}.
+
+Fully expanded: <a id="wrglossary.590"></a><a href="#glo:ecapitalisewords"><code class="csfmt">\ecapitalisewords</code></a>{<code class="cmd">\abc</code>}.
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.591"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ No expansion: one two three four five.<p>
+First object one-level expansion: one two three Four Five.<p>
+Fully expanded: One Two Three Four Five. </div><!-- end of resultbox -->
+<p>
+Remember that the spaces need to be explicit. In the second case above, using <a id="wrglossary.592"></a><a href="#glo:xcapitalisewords"><code class="csfmt">\xcapitalisewords</code></a>, the space before <span class="qt">“fourâ€</span> has been hidden within <a id="wrglossary.593"></a><a href="#glo:space"><code class="csfmt">\space</code></a> so it’s not recognised as a word boundary, but in the third case, <a id="wrglossary.594"></a><a href="#glo:space"><code class="csfmt">\space</code></a> has been expanded to an actual space character.<p>
+
+</ol>
+<p>
+If there is a text-block command within the argument of the starred form, it’s assumed to be at the start of the argument. Unexpected results can occur if there are other commands. For example: <pre class="badcodebox"><div class="badcodeboxtitle"><a id="wrglossary.595"></a><a href="#glo:sym.badcode"><span title="Problematic Input" class="icon"><span class="overlapped">🖹</span><span class="overlapper"><span class="deprecatedorbannedfmt">🛇</span></span></span></a></div><a id="wrglossary.596"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{of}
+<a id="wrglossary.597"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>*{<code class="cmd">\emph</code>{a small} book <code class="cmd">\textbf</code>{of rhyme}}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.598"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ <span style="font-style: italic; font-variant: normal; ">A Small</span> Book <span style="font-weight: bold; ">Of rhyme</span> </div><!-- end of resultbox -->
+ In this case <code class="code"><span class="cmdfmt">\textbf</span>{of rhyme}</code> is considered a single word. Similarly if the text-block command occurs in the middle of the argument: <pre class="badcodebox"><div class="badcodeboxtitle"><a id="wrglossary.599"></a><a href="#glo:sym.badcode"><span title="Problematic Input" class="icon"><span class="overlapped">🖹</span><span class="overlapper"><span class="deprecatedorbannedfmt">🛇</span></span></span></a></div><a id="wrglossary.600"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>{of}
+<a id="wrglossary.601"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>*{a <code class="cmd">\emph</code>{very small} book of rhyme}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.602"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ A <span style="font-style: italic; font-variant: normal; ">Very small</span> Book of Rhyme </div><!-- end of resultbox -->
+ In this case <code class="code"><span class="cmdfmt">\emph</span>{very small}</code> is considered a single word.<p>
+Grouping causes interference. As with all the commands described here, avoid declarations. <pre class="badcodebox"><div class="badcodeboxtitle"><a id="wrglossary.603"></a><a href="#glo:sym.badcode"><span title="Problematic Input" class="icon"><span class="overlapped">🖹</span><span class="overlapper"><span class="deprecatedorbannedfmt">🛇</span></span></span></a></div><a id="wrglossary.604"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{{<code class="cmd">\bfseries</code> a <code class="cmd">\emph</code>{small book}} of rhyme}
+</pre><p>
+<div class="information"><div class="informationtitle"><a id="wrglossary.605"></a><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
+As a general rule, it’s better to define <a id="wrglossary.606"></a><a href="#glo:dual.semanticcommand">semantic commands</a> rather than directly using font commands and declarations within the document. </div><!-- end of information -->
+<p>
+Avoid complicated commands in the unstarred version. For example, the following breaks: <pre class="badcodebox"><div class="badcodeboxtitle"><a id="wrglossary.607"></a><a href="#glo:sym.badcode"><span title="Problematic Input" class="icon"><span class="overlapped">🖹</span><span class="overlapper"><span class="deprecatedorbannedfmt">🛇</span></span></span></a></div><code class="cmd">\newcommand</code>*{<code class="cmd">\swap</code>}[2]{{#2}{#1}}
+<a id="wrglossary.608"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>{a <code class="cmd">\swap</code>{bo}{ok} of rhyme}
+</pre> However it can work with the starred form and the simpler <a id="wrglossary.609"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.610"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newcommand</code>*{<code class="cmd">\swap</code>}[2]{{#2}{#1}}
+<a id="wrglossary.611"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>*{a <code class="cmd">\swap</code>{bo}{ok} of rhyme}
+
+<a id="wrglossary.612"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>{a <code class="cmd">\swap</code>{bo}{ok} of rhyme}
+</pre> <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.613"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+ A okBo Of Rhyme<p>
+A okBo Of Rhyme </div><!-- end of resultbox -->
+ Note that the case change is applied to the first argument.<p>
+
+</section><!-- end of section sec:titlecaseexamples -->
+
+<section id="sec:misc"><!-- start of section sec:misc --><div class="tomain"><a href="#main">[top]</a></div>
+<h1><!-- start of chapter header -->3. Miscellaneous<div class="labellink"><a href="#sec:misc">[link]</a></div></h1><!-- end of chapter header -->
+<p>
+
+</section><!-- end of section sec:misc -->
+
+<section id="sec:savetoaux"><!-- start of section sec:savetoaux --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->3.1. Saving exclusions, blockers and mappings in the <span class="extfmt">aux</span> File<div class="labellink"><a href="#sec:savetoaux">[link]</a></div></h2><!-- end of section header -->
+<p>
+If the <a id="wrglossary.614"></a><a href="#glo:dual.exclusion">exclusions</a>, <a id="wrglossary.615"></a><a href="#glo:dual.mapping">mappings</a> and <a id="wrglossary.616"></a><a href="#glo:dual.blocker">blockers</a> are required by some external tool, the information can be saved in the <a id="wrglossary.617"></a><a href="#glo:ext.aux"><span class="extfmt">aux</span></a> file.<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.618"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.619"></a><code class="code"><dfn id="glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></dfn></code></div><!-- end of pinnedbox -->
+ This saves the information at the end of the document using a delayed write. This means that it can register all information identified throughout the document, but there’s a chance the document may end before the write takes place (for example, if the last page only contains floats). This command may be counteracted by: <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.620"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.621"></a><code class="code"><dfn id="glo:MFUsave"><code class="csfmt">\MFUsave</code></dfn></code></div><!-- end of pinnedbox -->
+ This saves the information using a protected write at the point where this command occurs, which may be too soon if additional <a id="wrglossary.622"></a><a href="#glo:dual.exclusion">exclusions</a>, <a id="wrglossary.623"></a><a href="#glo:dual.mapping">mappings</a> or <a id="wrglossary.624"></a><a href="#glo:dual.blocker">blockers</a> are identified later. This command will counteract any instance of <a id="wrglossary.625"></a><a href="#glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></a>, regardless of whether or not <a id="wrglossary.626"></a><a href="#glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></a> comes before or after <a id="wrglossary.627"></a><a href="#glo:MFUsave"><code class="csfmt">\MFUsave</code></a>.<p>
+The associated <a id="wrglossary.628"></a><a href="#glo:ext.aux"><span class="extfmt">aux</span></a> commands are listed below. In each case, a definition is provided in the <a id="wrglossary.629"></a><a href="#glo:ext.aux"><span class="extfmt">aux</span></a> file that does nothing. <div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.630"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.631"></a><code class="code"><dfn id="glo:@mfu@excls"><code class="csfmt">\@mfu@excls</code></dfn>{<span class="meta">〈<em class="metainner">exclusions</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ Lists all <a id="wrglossary.632"></a><a href="#glo:dual.exclusion">exclusions</a>. For example: <pre class="compactcodebox"><a id="wrglossary.633"></a><a href="#glo:@mfu@excls"><code class="csfmt">\@mfu@excls</code></a>{<a id="wrglossary.634"></a><a href="#glo:begin"><code class="csfmt">\begin</code></a> <a id="wrglossary.635"></a><a href="#glo:cite"><code class="csfmt">\cite</code></a> <a id="wrglossary.636"></a><a href="#glo:end"><code class="csfmt">\end</code></a> <a id="wrglossary.637"></a><a href="#glo:label"><code class="csfmt">\label</code></a>
+<a id="wrglossary.638"></a><a href="#glo:ref"><code class="csfmt">\ref</code></a> <a id="wrglossary.639"></a><a href="#glo:cite"><code class="csfmt">\cite</code></a> <a id="wrglossary.640"></a><a href="#glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></a> <a id="wrglossary.641"></a><a href="#glo:ensuremath"><code class="csfmt">\ensuremath</code></a>
+<a id="wrglossary.642"></a><a href="#glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></a> <a id="wrglossary.643"></a><a href="#glo:gls"><code class="csfmt">\gls</code></a> <a id="wrglossary.644"></a><a href="#glo:glspl"><code class="csfmt">\glspl</code></a>}
+</pre><p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.645"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.646"></a><code class="code"><dfn id="glo:@mfu@blockers"><code class="csfmt">\@mfu@blockers</code></dfn>{<span class="meta">〈<em class="metainner">blockers</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ Lists all <a id="wrglossary.647"></a><a href="#glo:dual.blocker">blockers</a>. For example: <pre class="compactcodebox"><a id="wrglossary.648"></a><a href="#glo:@mfu@blockers"><code class="csfmt">\@mfu@blockers</code></a>{<a id="wrglossary.649"></a><a href="#glo:Gls"><code class="csfmt">\Gls</code></a> <a id="wrglossary.650"></a><a href="#glo:Glspl"><code class="csfmt">\Glspl</code></a> }
+</pre><p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.651"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.652"></a><code class="code"><dfn id="glo:@mfu@mappings"><code class="csfmt">\@mfu@mappings</code></dfn>{<span class="meta">〈<em class="metainner">mappings</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ Lists all <a id="wrglossary.653"></a><a href="#glo:dual.mapping">mappings</a> as a <span class="meta">〈<em class="metainner">key</em>〉</span>=<span class="meta">〈<em class="metainner">value</em>〉</span> list. For example: <pre class="compactcodebox"><a id="wrglossary.654"></a><a href="#glo:@mfu@mappings"><code class="csfmt">\@mfu@mappings</code></a>{ {<a id="wrglossary.655"></a><a href="#glo:gls"><code class="csfmt">\gls</code></a> }= {<a id="wrglossary.656"></a><a href="#glo:Gls"><code class="csfmt">\Gls</code></a> }, {<a id="wrglossary.657"></a><a href="#glo:glspl"><code class="csfmt">\glspl</code></a> }= {<a id="wrglossary.658"></a><a href="#glo:Glspl"><code class="csfmt">\Glspl</code></a> }}
+</pre><p>
+
+</section><!-- end of section sec:savetoaux -->
+
+<section id="sec:allcaps"><!-- start of section sec:allcaps --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->3.2. All-Caps<div class="labellink"><a href="#sec:allcaps">[link]</a></div></h2><!-- end of section header -->
+<p>
+<div class="pinnedbox"><div class="pinnedboxtitle"><a id="wrglossary.659"></a><a href="#glo:sym.definition"><span title="Definition" class="icon">📌</span></a></div><!-- end of pinnedboxtitle -->
+<a id="wrglossary.660"></a><code class="code"><dfn id="glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></dfn>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code></div><!-- end of pinnedbox -->
+ This command was originally used to perform the actual conversion to <a id="wrglossary.661"></a><a href="#glo:idx.uppercase">uppercase</a> and was defined to use command <a id="wrglossary.662"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a>. The <a id="wrglossary.663"></a><a href="#glo:pkg.glossaries"><span class="styfmt">glossaries</span></a> package (before v4.50) formerly loaded the <a id="wrglossary.664"></a><a href="#glo:pkg.textcase"><span class="styfmt">textcase</span></a> package and redefined <a id="wrglossary.665"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a> to use <a id="wrglossary.666"></a><a href="#glo:MakeTextUppercase"><code class="csfmt">\MakeTextUppercase</code></a>, which was better than <a id="wrglossary.667"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a>.<p>
+The <a id="wrglossary.668"></a><a href="#glo:pkg.textcase"><span class="styfmt">textcase</span></a> package has been deprecated as from 2022 and it now simply sets <a id="wrglossary.669"></a><a href="#glo:MakeTextUppercase"><code class="csfmt">\MakeTextUppercase</code></a> to <a id="wrglossary.670"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a> because the new kernel now defines <a id="wrglossary.671"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a> to use the newer LaTeX3 command <a id="wrglossary.672"></a><a href="#glo:textuppercase:n"><code class="csfmt">\text_uppercase:n</code></a>. Although that command is expandable, <a id="wrglossary.673"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a> is robust.<p>
+As from v2.08, <a id="wrglossary.674"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> now defines <a id="wrglossary.675"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a> so that it uses <a id="wrglossary.676"></a><a href="#glo:texttitlecasefirst:n"><code class="csfmt">\text_titlecase_first:n</code></a> directly, rather than indirectly through <a id="wrglossary.677"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a>, which means that it’s now expandable. However, <a id="wrglossary.678"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a> is no longer used by <a id="wrglossary.679"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> except in <a id="wrglossary.680"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a>, which is provided to emulate v2.07. Note that the <a id="wrglossary.681"></a><a href="#glo:opt.grabfirst"><span class="optfmt">grabfirst</span></a> option will also redefine <a id="wrglossary.682"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a> to use <a id="wrglossary.683"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a>.<p>
+
+</section><!-- end of section sec:allcaps -->
+
+<section id="sec:utf8"><!-- start of section sec:utf8 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->3.3. UTF-8<div class="labellink"><a href="#sec:utf8">[link]</a></div></h2><!-- end of section header -->
+<p>
+<div class="information"><div class="informationtitle"><a id="wrglossary.684"></a><a href="#glo:sym.information"><span title="Information" class="icon">🛈</span></a></div><!-- end of informationtitle -->
+See <a href="https://www.dickimaw-books.com/blog/binary-files-text-files-and-file-encodings/">Binary Files, Text Files and File Encodings</a> if you are confused about how file encodings, such as <a id="wrglossary.685"></a><a href="#glo:utf8">UTF-8</a>, relate to text files. </div><!-- end of information -->
+<p>
+This section only applies to rollback or the use of <a id="wrglossary.686"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a> (implemented via the <a id="wrglossary.687"></a><a href="#glo:opt.grabfirst"><span class="optfmt">grabfirst</span></a> option).<p>
+Prior to version 2.08, the case-change applied by the <a id="wrglossary.688"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> command worked by utilizing the fact that, in most cases, TeX doesn’t require a regular argument to be enclosed in braces if it only consists of a single token. (This is why you can do, say, <code class="code"><span class="cmdfmt">\frac</span>12</code> instead of <code class="code"><span class="cmdfmt">\frac</span>{1}{2}</code> or <code class="code">x^2</code> instead of <code class="code">x^{2}</code>, although this practice is discouraged by some.)<p>
+A simplistic version of the original <a id="wrglossary.689"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> command is: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.690"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\newcommand</code>*{<code class="cmd">\FirstUC</code>}[1]{<a id="wrglossary.691"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a> #1}
+</pre> Here <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.692"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\FirstUC</code>{abc}
+</pre> is equivalent to <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.693"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.694"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a> abc
+</pre> and since <a id="wrglossary.695"></a><a href="#glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></a> requires an argument, it grabs the first token (the character <span class="qt">“aâ€</span> in this case) and uses that as the argument so that the result is <span class="qt">“Abcâ€</span>. This behaviour can be achieved with <a id="wrglossary.696"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a>.<p>
+Unfortunately, this will fail if the content starts with a <a id="wrglossary.697"></a><a href="#glo:utf8">UTF-8</a> character and you are using pdfLaTeX, where each octet of the <a id="wrglossary.698"></a><a href="#glo:utf8">UTF-8</a> character is a separate token. This isn’t a problem with XeLaTeX and LuaLaTeX which both treat the entire multibyte character as a single token.<p>
+LaTeX3 now provides <a id="wrglossary.699"></a><a href="#glo:texttitlecasefirst:n"><code class="csfmt">\text_titlecase_first:n</code></a> to convert the first character to uppercase, so now the case-change can be applied with: <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.700"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\ExplSyntaxOn</code>
+<a id="wrglossary.701"></a><a href="#glo:texttitlecasefirst:n"><code class="csfmt">\text_titlecase_first:n</code></a>{élite}
+<code class="cmd">\ExplSyntaxOff</code>
+</pre> This is exactly what <a id="wrglossary.702"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a> does without the need to switch on LaTeX3 syntax. The difference with the default definition of <a id="wrglossary.703"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> is that it prevents its argument from being expanded.<p>
+
+</section><!-- end of section sec:utf8 -->
+
+<section id="symbols"><!-- start of section symbols --><div class="tomain"><a href="#main">[top]</a></div>
+<h1><!-- start of chapter header -->Symbols<div class="labellink"><a href="#symbols">[link]</a></div></h1><!-- end of chapter header -->
+
+<dl class="inlineblock">
+<dt><dfn id="glo:sym.definition">📌</dfn></dt>
+<dd>The syntax and usage of a command, environment or option etc.</dd>
+<dt><dfn id="glo:sym.important">ℹ</dfn></dt>
+<dd>An important message.</dd>
+<dt><dfn id="glo:sym.information">🛈</dfn></dt>
+<dd>Prominent information.</dd>
+<dt><dfn id="glo:sym.code">🖹</dfn></dt>
+<dd>LaTeX code to insert into your document.</dd>
+<dt><dfn id="glo:sym.badcode"><span class="overlapped">🖹</span><span class="overlapper"><span class="deprecatedorbannedfmt">🛇</span></span></dfn></dt>
+<dd>Problematic code which should be avoided.</dd>
+<dt><dfn id="glo:sym.result">🖺</dfn></dt>
+<dd>How the example code should appear in the PDF.</dd>
+<dt><dfn id="glo:sym.transcript">🔎</dfn></dt>
+<dd>Text in a transcript or log file or written to STDOUT or STDERR.</dd>
+<dt><dfn id="glo:sym.unicode"><span class="overlapped">🗋</span><span class="overlapper">U</span></dfn></dt>
+<dd>Code that requires a native Unicode engine (XeLaTeX or LuaLaTeX).</dd>
+<dt><dfn id="glo:sym.novaluesetting">ð¢</dfn></dt>
+<dd>An option that doesn’t take a value.</dd>
+<dt><dfn id="glo:sym.warning">âš </dfn></dt>
+<dd>A warning.</dd>
+
+</dl>
+
+</section><!-- end of section symbols -->
+
+<section id="glossary"><!-- start of section glossary --><div class="tomain"><a href="#main">[top]</a></div>
+<h1><!-- start of chapter header -->Glossary<div class="labellink"><a href="#glossary">[link]</a></div></h1><!-- end of chapter header -->
+
+<dl>
+<dt><a id="wrglossary.704"></a><dfn id="glo:dual.blocker">Blocker</dfn></dt>
+<dd>A command that prohibits case-changing. If encountered by <a id="wrglossary.705"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>, it won’t attempt to apply any case-changing. See §<a href="#sec:blockers">1.4</a>.</dd>
+<dt><a id="wrglossary.706"></a><dfn id="glo:dual.exclusion">Exclusion command</dfn></dt>
+<dd>A command whose argument should be skipped by the case-changer. The content that follows the command should have its case-changed instead. See §<a href="#sec:exclusions">1.3</a>.</dd>
+<dt><a id="wrglossary.707"></a><dfn id="glo:dual.exclusion-word">Exclusion word</dfn></dt>
+<dd>A word that shouldn’t have its case changed by <a id="wrglossary.708"></a><a href="#glo:dual.title-case">title-case</a> commands, unless the word occurs at the start.</dd>
+<dt><a id="wrglossary.709"></a><dfn id="glo:dual.mapping">Mapping</dfn></dt>
+<dd>A command that should be substituted by another, if encountered by <a id="wrglossary.710"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>, instead of applying a case-change. See §<a href="#sec:mappings">1.5</a>.</dd>
+<dt><a id="wrglossary.711"></a><dfn id="glo:dual.semanticcommand">Semantic command</dfn></dt>
+<dd>Essentially, this is a command associated with a particular element, idea or topic that hides the font and other stylistic formatting inside its definition. For example, Latin taxonomy is usually displayed in italic. Explicitly using font commands, for example <pre class="compactcodebox"><code class="cmd">\textit</code>{Clostridium}</pre> is syntactic markup. Whereas defining a command called, say, <code class="cmd">\bacteria</code> that displays its argument in italics is a semantic command. The actual styling is hidden and the command relates specifically to a particular concept. <pre class="codebox"><div class="codeboxtitle"><a id="wrglossary.712"></a><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div>Syntactic: <code class="cmd">\textit</code>{Clostridium}
+
+<code class="cmd">\newrobustcmd</code>*{<code class="cmd">\bacteria</code>}[1]<code class="cmd">\emph</code>{#1}%<br>Semantic: <code class="cmd">\bacteria</code>{Clostridium} </pre> The end result is the same: <div class="resultbox"><div class="resultboxtitle"><a id="wrglossary.713"></a><a href="#glo:sym.result"><span title="Result" class="icon">🖺</span></a></div><!-- end of resultboxtitle -->
+Syntactic: <span style="font-style: italic; font-variant: normal; ">Clostridium</span><p>
+Semantic: <span style="font-style: italic; font-variant: normal; ">Clostridium</span> </div><!-- end of resultbox -->
+ The advantage with semantic commands is that it’s much easier to change the style, simply by adjusting the command definition. Note that I’ve used <code class="cmd">\newrobustcmd</code> to make the semantic command robust as the style commands can cause a problem if they expand too soon.</dd>
+<dt><a id="wrglossary.714"></a><dfn id="glo:dual.sentence-case">Sentence-case</dfn></dt>
+<dd>Content that should appear at the start of a sentence that needs to have its first significant character converted to <a id="wrglossary.715"></a><a href="#glo:idx.uppercase">uppercase</a>. See §<a href="#sec:sentencecase">1</a>.</dd>
+<dt><a id="wrglossary.716"></a><dfn id="glo:dual.title-case">Title-case</dfn></dt>
+<dd>Content that needs to appear in a title that should have each significant word converted to <a id="wrglossary.717"></a><a href="#glo:dual.sentence-case">sentence-case</a>. See §<a href="#sec:capitalisewords">2</a>.</dd>
+<dt><a id="wrglossary.718"></a><dfn id="glo:dual.utf8">Unicode Transformation Format (8-bit) (UTF-8)</dfn></dt>
+<dd>A variable-width encoding that uses 8-bit code units. This means that some characters are represented by more that one byte. XeLaTeX and LuaLaTeX treat the multi-byte sequence as a single token, but the older LaTeX formats have single-byte tokens, which can cause complications, although these have mostly been addressed with the newer kernels introduced over the past few years. Related blog article: <a href="https://www.dickimaw-books.com/blog/binary-files-text-files-and-file-encodings/">Binary Files, Text Files and File Encodings</a>.</dd>
+
+</dl>
+
+</section><!-- end of section glossary -->
+
+<section id="cmdsummary"><!-- start of section cmdsummary --><div class="tomain"><a href="#main">[top]</a></div>
+<h1><!-- start of chapter header -->Command Summary<div class="labellink"><a href="#cmdsummary">[link]</a></div></h1><!-- end of chapter header -->
+
+</section><!-- end of section cmdsummary -->
+
+<section id="summary.index@"><!-- start of section summary.index@ --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->@<div class="labellink"><a href="#summary.index@">[link]</a></div></h2><!-- end of section header -->
+<div class="defnbox"><a id="wrglossary.719"></a><a href="#glo:@mfu@blockers"><code class="csfmt">\@mfu@blockers</code></a><code class="code">{<span class="meta">〈<em class="metainner">blockers</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.720"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+An <a id="wrglossary.721"></a><a href="#glo:ext.aux"><span class="extfmt">aux</span></a> file command that lists all the identified <a id="wrglossary.722"></a><a href="#glo:dual.blocker">blockers</a>. <a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.646">27</a><p>
+<div class="defnbox"><a id="wrglossary.723"></a><a href="#glo:@mfu@excls"><code class="csfmt">\@mfu@excls</code></a><code class="code">{<span class="meta">〈<em class="metainner">exclusions</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.724"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+An <a id="wrglossary.725"></a><a href="#glo:ext.aux"><span class="extfmt">aux</span></a> file command that lists all the identified <a id="wrglossary.726"></a><a href="#glo:dual.exclusion">exclusions</a>. <a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.631">26</a><p>
+<div class="defnbox"><a id="wrglossary.727"></a><a href="#glo:@mfu@mappings"><code class="csfmt">\@mfu@mappings</code></a><code class="code">{<span class="meta">〈<em class="metainner">mappings</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.728"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+An <a id="wrglossary.729"></a><a href="#glo:ext.aux"><span class="extfmt">aux</span></a> file command that lists all the identified <a id="wrglossary.730"></a><a href="#glo:dual.mapping">mappings</a> as a <span class="meta">〈<em class="metainner">key</em>〉</span>=<span class="meta">〈<em class="metainner">value</em>〉</span> list. <a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.652">27</a><p>
+
+</section><!-- end of section summary.index@ -->
+
+<section id="summary.index6684672"><!-- start of section summary.index6684672 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->C<div class="labellink"><a href="#summary.index6684672">[link]</a></div></h2><!-- end of section header -->
+<div class="defnbox"><a id="wrglossary.731"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><span class="summarytag">modifier: </span>* <a id="wrglossary.732"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.03+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Similar to <a id="wrglossary.733"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a> but for content that may contain formatting commands. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.461">16</a><p>
+<div class="defnbox"><a id="wrglossary.734"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.735"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.06+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Applies <a id="wrglossary.736"></a><a href="#glo:dual.title-case">title-case</a> to <span class="meta">〈<em class="metainner">text</em>〉</span>. This will apply <a id="wrglossary.737"></a><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a> to each word in <span class="meta">〈<em class="metainner">text</em>〉</span> (unless the word has been identified as an <a id="wrglossary.738"></a><a href="#glo:dual.exclusion-word">exclusion word</a> and doesn’t occur at the start of <span class="meta">〈<em class="metainner">text</em>〉</span>). <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.405">14</a><p>
+
+</section><!-- end of section summary.index6684672 -->
+
+<section id="summary.index6815744"><!-- start of section summary.index6815744 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->E<div class="labellink"><a href="#summary.index6815744">[link]</a></div></h2><!-- end of section header -->
+<div class="defnbox"><a id="wrglossary.739"></a><a href="#glo:ecapitalisefmtwords"><code class="csfmt">\ecapitalisefmtwords</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><span class="summarytag">modifier: </span>* <a id="wrglossary.740"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.03+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Fully expands <span class="meta">〈<em class="metainner">text</em>〉</span> and passes it to <a id="wrglossary.741"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a> including the <code class="code">*</code> modifier, if provided. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.472">17</a><p>
+<div class="defnbox"><a id="wrglossary.742"></a><a href="#glo:ecapitalisewords"><code class="csfmt">\ecapitalisewords</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.743"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.10+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Fully expands <span class="meta">〈<em class="metainner">text</em>〉</span> before passing it to <a id="wrglossary.744"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.420">14</a><p>
+<div class="defnbox"><a id="wrglossary.745"></a><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.746"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.10+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Fully expands <span class="meta">〈<em class="metainner">text</em>〉</span> before passing it to <a id="wrglossary.747"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>. <a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.139">6</a><p>
+
+</section><!-- end of section summary.index6815744 -->
+
+<section id="summary.index6946816"><!-- start of section summary.index6946816 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->G<div class="labellink"><a href="#summary.index6946816">[link]</a></div></h2><!-- end of section header -->
+<div class="defnbox"><a id="wrglossary.748"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.749"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.05+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Used by <a id="wrglossary.750"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a> to perform the case-change. This uses <code class="code"><a id="wrglossary.751"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code> but by default will prevent its argument from being expanded. <a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.151">6</a><p>
+<div class="defnbox"><a id="wrglossary.752"></a><a href="#glo:gMFUnocap"><code class="csfmt">\gMFUnocap</code></a><code class="code">{<span class="meta">〈<em class="metainner">word</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.753"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.09+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Globally adds <span class="meta">〈<em class="metainner">word</em>〉</span> to the <a id="wrglossary.754"></a><a href="#glo:dual.exclusion-word">exclusion word</a> list for <a id="wrglossary.755"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>. <a href="#sec:nocap">§2.1</a>; <a href="#wrglossary.481">18</a><p>
+
+</section><!-- end of section summary.index6946816 -->
+
+<section id="summary.index7077888"><!-- start of section summary.index7077888 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->I<div class="labellink"><a href="#summary.index7077888">[link]</a></div></h2><!-- end of section header -->
+<div class="defnbox"><a id="wrglossary.756"></a><a href="#glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></a><code class="code"> <span class="meta">〈<em class="metainner">true</em>〉</span><code class="csfmt">\else</code> <span class="meta">〈<em class="metainner">false</em>〉</span><code class="csfmt">\fi</code></code><span class="floatrightbox"><span class="summarytag">initial: </span><code class="cmd">\iffalse</code>; <a id="wrglossary.757"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.03+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Conditional that determines whether or not hyphens should be considered word boundaries by the <a id="wrglossary.758"></a><a href="#glo:dual.title-case">title-case</a> commands. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.433">15</a><p>
+
+</section><!-- end of section summary.index7077888 -->
+
+<section id="summary.index7340032"><!-- start of section summary.index7340032 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->M<div class="labellink"><a href="#summary.index7340032">[link]</a></div></h2><!-- end of section header -->
+<div class="defnbox"><a id="wrglossary.759"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.760"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.0+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Converts <span class="meta">〈<em class="metainner">text</em>〉</span> to <a id="wrglossary.761"></a><a href="#glo:dual.sentence-case">sentence-case</a> internally using <a id="wrglossary.762"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> to perform the case-change, but first parses <span class="meta">〈<em class="metainner">text</em>〉</span> to deal with special cases. <a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.111">4</a><p>
+<div class="defnbox"><a id="wrglossary.763"></a><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.764"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.07+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Converts <span class="meta">〈<em class="metainner">text</em>〉</span> to <a id="wrglossary.765"></a><a href="#glo:idx.uppercase">uppercase</a>. Now only used in <a id="wrglossary.766"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a>. <a href="#sec:allcaps">§3.2</a>; <a href="#wrglossary.660">27</a><p>
+<div class="defnbox"><a id="wrglossary.767"></a><a href="#glo:MFUaddmap"><code class="csfmt">\MFUaddmap</code></a><code class="code">{<span class="meta">〈<em class="metainner">cs1</em>〉</span>}{<span class="meta">〈<em class="metainner">cs2</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.768"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Identifies a <a id="wrglossary.769"></a><a href="#glo:dual.mapping">mapping</a> from the command <span class="meta">〈<em class="metainner">cs1</em>〉</span> to command <span class="meta">〈<em class="metainner">cs2</em>〉</span>. <a href="#sec:mappings">§1.5</a>; <a href="#wrglossary.357">12</a><p>
+<div class="defnbox"><a id="wrglossary.770"></a><a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a><code class="code">{<span class="meta">〈<em class="metainner">cs</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.771"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Locally identifies <span class="meta">〈<em class="metainner">cs</em>〉</span> as a <a id="wrglossary.772"></a><a href="#glo:dual.blocker">blocker</a> command. <a href="#sec:blockers">§1.4</a>; <a href="#wrglossary.284">11</a><p>
+<div class="defnbox"><a id="wrglossary.773"></a><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.774"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.03+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Uses either <a id="wrglossary.775"></a><a href="#glo:MFUhyphencapword"><code class="csfmt">\MFUhyphencapword</code></a> or <a id="wrglossary.776"></a><a href="#glo:MFUcapwordfirstuc"><code class="csfmt">\MFUcapwordfirstuc</code></a> depending on <a id="wrglossary.777"></a><a href="#glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></a>. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.430">15</a><p>
+<div class="defnbox"><a id="wrglossary.778"></a><a href="#glo:MFUcapwordfirstuc"><code class="csfmt">\MFUcapwordfirstuc</code></a><code class="code">{<span class="meta">〈<em class="metainner">word</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.779"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.07+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Used by <a id="wrglossary.780"></a><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a> and <a id="wrglossary.781"></a><a href="#glo:MFUhyphencapword"><code class="csfmt">\MFUhyphencapword</code></a> to apply the case-change to the given word. This just does <code class="code"><a id="wrglossary.782"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code> by default. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.449">16</a><p>
+<div class="defnbox"><a id="wrglossary.783"></a><a href="#glo:MFUclear"><code class="csfmt">\MFUclear</code></a><span class="floatrightbox"><a id="wrglossary.784"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.09+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Locally clears the <a id="wrglossary.785"></a><a href="#glo:dual.exclusion-word">exclusion word</a> list for <a id="wrglossary.786"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>. <a href="#sec:nocap">§2.1</a>; <a href="#wrglossary.483">18</a><p>
+<div class="defnbox"><a id="wrglossary.787"></a><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a><code class="code">{<span class="meta">〈<em class="metainner">cs</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.788"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Locally identifies <span class="meta">〈<em class="metainner">cs</em>〉</span> as an <a id="wrglossary.789"></a><a href="#glo:dual.exclusion">exclusion</a> command. <a href="#sec:exclusions">§1.3</a>; <a href="#wrglossary.194">8</a><p>
+<div class="defnbox"><a id="wrglossary.790"></a><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.791"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span><p>
+<div class="noteBox">(avoid where possible)</div><!-- end of noteBox -->
+</div><!-- end of defnbox -->
+<p>
+Provide to emulate <a id="wrglossary.792"></a><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a> in v2.07 and below, but can still produce different results to v2.07. This will attempt to grab only the first character of <span class="meta">〈<em class="metainner">text</em>〉</span> and convert it to <a id="wrglossary.793"></a><a href="#glo:idx.uppercase">uppercase</a>, leaving the rest of <span class="meta">〈<em class="metainner">text</em>〉</span> unchanged. This won’t work if <span class="meta">〈<em class="metainner">text</em>〉</span> starts with a <a id="wrglossary.794"></a><a href="#glo:utf8">UTF-8</a> character, unless you are using XeLaTeX or LuaLaTeX. <a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.170">7</a><p>
+<div class="defnbox"><a id="wrglossary.795"></a><a href="#glo:MFUhyphencapword"><code class="csfmt">\MFUhyphencapword</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.796"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.07+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Used by <a id="wrglossary.797"></a><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a> to apply <a id="wrglossary.798"></a><a href="#glo:MFUcapwordfirstuc"><code class="csfmt">\MFUcapwordfirstuc</code></a> to each hyphen-separated word in <span class="meta">〈<em class="metainner">text</em>〉</span>, if hyphens should indicate a word-break. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.437">15</a><p>
+<div class="defnbox"><a id="wrglossary.799"></a><a href="#glo:MFUhyphenfalse"><code class="csfmt">\MFUhyphenfalse</code></a><span class="floatrightbox"><a id="wrglossary.800"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.03+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Sets <a id="wrglossary.801"></a><a href="#glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></a> to false. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.442">15</a><p>
+<div class="defnbox"><a id="wrglossary.802"></a><a href="#glo:MFUhyphentrue"><code class="csfmt">\MFUhyphentrue</code></a><span class="floatrightbox"><a id="wrglossary.803"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.03+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Sets <a id="wrglossary.804"></a><a href="#glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></a> to true. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.440">15</a><p>
+<div class="defnbox"><a id="wrglossary.805"></a><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a><code class="code">{<span class="meta">〈<em class="metainner">word</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.806"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.09+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Locally adds <span class="meta">〈<em class="metainner">word</em>〉</span> to the <a id="wrglossary.807"></a><a href="#glo:dual.exclusion-word">exclusion word</a> list for <a id="wrglossary.808"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>. <a href="#sec:nocap">§2.1</a>; <a href="#wrglossary.479">17</a><p>
+<div class="defnbox"><a id="wrglossary.809"></a><a href="#glo:MFUsave"><code class="csfmt">\MFUsave</code></a><span class="floatrightbox"><a id="wrglossary.810"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Saves the list of <a id="wrglossary.811"></a><a href="#glo:dual.exclusion">exclusions</a>, <a id="wrglossary.812"></a><a href="#glo:dual.blocker">blockers</a> and <a id="wrglossary.813"></a><a href="#glo:dual.mapping">mappings</a> to the <a id="wrglossary.814"></a><a href="#glo:ext.aux"><span class="extfmt">aux</span></a> file (if required by some external tool). This command sets itself to <code class="cmd">\relax</code> so it doesn’t repeat the action if used multiple times, and counteracts any use of <a id="wrglossary.815"></a><a href="#glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></a>. <a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.621">26</a><p>
+<div class="defnbox"><a id="wrglossary.816"></a><a href="#glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></a><span class="floatrightbox"><a id="wrglossary.817"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Saves the list of <a id="wrglossary.818"></a><a href="#glo:dual.exclusion">exclusions</a>, <a id="wrglossary.819"></a><a href="#glo:dual.blocker">blockers</a> and <a id="wrglossary.820"></a><a href="#glo:dual.mapping">mappings</a> to the <a id="wrglossary.821"></a><a href="#glo:ext.aux"><span class="extfmt">aux</span></a> file (if required by some external tool) at the end of the document. This command sets itself to <code class="cmd">\relax</code> so it doesn’t repeat the action if used multiple times, but it can be overridden by <a id="wrglossary.822"></a><a href="#glo:MFUsave"><code class="csfmt">\MFUsave</code></a>. <a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.619">26</a><p>
+<div class="defnbox"><a id="wrglossary.823"></a><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.824"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.08+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Converts <span class="meta">〈<em class="metainner">text</em>〉</span> to <a id="wrglossary.825"></a><a href="#glo:dual.sentence-case">sentence-case</a> with expansion. <a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.101">4</a><p>
+<div class="defnbox"><a id="wrglossary.826"></a><a href="#glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></a><code class="code">{<span class="meta">〈<em class="metainner">content</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.827"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.07+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+An <a id="wrglossary.828"></a><a href="#glo:dual.exclusion">exclusion</a> command. <a href="#sec:exclusions">§1.3</a>; <a href="#wrglossary.215">8</a><p>
+<div class="defnbox"><a id="wrglossary.829"></a><a href="#glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.830"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.07+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Used to markup a character or command that should be treated as a word break by the <a id="wrglossary.831"></a><a href="#glo:dual.title-case">title-case</a> commands. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.424">15</a><p>
+
+</section><!-- end of section summary.index7340032 -->
+
+<section id="summary.index8060928"><!-- start of section summary.index8060928 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->X<div class="labellink"><a href="#summary.index8060928">[link]</a></div></h2><!-- end of section header -->
+<div class="defnbox"><a id="wrglossary.832"></a><a href="#glo:xcapitalisefmtwords"><code class="csfmt">\xcapitalisefmtwords</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><span class="summarytag">modifier: </span>* <a id="wrglossary.833"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v2.03+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Shortcut for <code class="code"><span class="cmdfmt">\expandafter</span><a id="wrglossary.834"></a><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a><span class="cmdfmt">\expandafter</span>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code> including the <code class="code">*</code> modifier, if provided. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.468">17</a><p>
+<div class="defnbox"><a id="wrglossary.835"></a><a href="#glo:xcapitalisewords"><code class="csfmt">\xcapitalisewords</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.836"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.06+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Shortcut for <code class="code"><span class="cmdfmt">\expandafter</span><a id="wrglossary.837"></a><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a><span class="cmdfmt">\expandafter</span>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code>. <a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.417">14</a><p>
+<div class="defnbox"><a id="wrglossary.838"></a><a href="#glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></a><code class="code">{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code><span class="floatrightbox"><a id="wrglossary.839"></a><a href="#glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span></a> v1.01+</span><span class="clearfix"></span></div><!-- end of defnbox -->
+<p>
+Shortcut for <code class="code"><span class="cmdfmt">\expandafter</span><a id="wrglossary.840"></a><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a><span class="cmdfmt">\expandafter</span>{<span class="meta">〈<em class="metainner">text</em>〉</span>}</code>. <a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.135">5</a><p>
+
+</section><!-- end of section summary.index8060928 -->
+
+<section id="index"><!-- start of section index --><div class="tomain"><a href="#main">[top]</a></div>
+<h1><!-- start of chapter header -->Index<div class="labellink"><a href="#index">[link]</a></div></h1><!-- end of chapter header -->
+<div class="nlctusernavbox"><a href="#indexglssymbols">Symbols</a> <a href="#index@">@</a> <a href="#index6619136">B</a> <a href="#index6684672">C</a> <a href="#index6815744">E</a> <a href="#index6881280">F</a> <a href="#index6946816">G</a> <a href="#index7012352">H</a> <a href="#index7077888">I</a> <a href="#index7274496">L</a> <a href="#index7340032">M</a> <a href="#index7405568">N</a> <a href="#index7536640">P</a> <a href="#index7667712">R</a> <a href="#index7733248">S</a> <a href="#index7798784">T</a> <a href="#index7864320">U</a> <a href="#index8060928">X</a></div><!-- end of nlctusernavbox -->
+
+</section><!-- end of section index -->
+
+<section id="indexglssymbols"><!-- start of section indexglssymbols --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->Symbols<div class="labellink"><a href="#indexglssymbols">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:idx.nbsp"><code class="code">~</code></dfn><span class="qquad"></span><a href="#wrglossary.407">14</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:idx.sym.dollar"><code class="code">$</code></dfn><span class="qquad"></span><a href="#wrglossary.347">12</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section indexglssymbols -->
+
+<section id="index@"><!-- start of section index@ --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->@<div class="labellink"><a href="#index@">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><a href="#glo:@mfu@blockers"><code class="csfmt">\@mfu@blockers</code></a><span class="qquad"></span><a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.646">27</a>, <span class="summarylocfmt"><a href="#wrglossary.719">33</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:MFUsave"><code class="csfmt">\MFUsave</code></a> &amp; <a href="#glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:@mfu@excls"><code class="csfmt">\@mfu@excls</code></a><span class="qquad"></span><a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.631">26</a>, <span class="summarylocfmt"><a href="#wrglossary.723">33</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:MFUsave"><code class="csfmt">\MFUsave</code></a> &amp; <a href="#glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:@mfu@mappings"><code class="csfmt">\@mfu@mappings</code></a><span class="qquad"></span><a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.652">27</a>, <span class="summarylocfmt"><a href="#wrglossary.727">33</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:MFUsave"><code class="csfmt">\MFUsave</code></a> &amp; <a href="#glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index@ -->
+
+<section id="index6619136"><!-- start of section index6619136 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->B<div class="labellink"><a href="#index6619136">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:begin"><code class="csfmt">\begin</code></dfn><span class="qquad"></span><a href="#wrglossary.199">8</a>, <a href="#wrglossary.634">26</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:blocker">blocker</dfn><span class="qquad"></span><a href="#tab:sentencecasesummary">Table 1.1</a>; <a href="#wrglossary.27">1</a>, <a href="#wrglossary.49">2</a>, <a href="#wrglossary.117">5</a>, <a href="#wrglossary.216">9</a>–<a href="#wrglossary.351">12</a>, <a href="#wrglossary.616">26</a>, <a href="#wrglossary.647">27</a>, <span class="termslocfmt"><a href="#wrglossary.704">31</a></span>, <a href="#wrglossary.722">33</a>, <a href="#wrglossary.772">35</a>, <a href="#wrglossary.812">37</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index6619136 -->
+
+<section id="index6684672"><!-- start of section index6684672 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->C<div class="labellink"><a href="#index6684672">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.461">16</a>, <a href="#wrglossary.473">17</a>, <a href="#wrglossary.533">20</a>, <span class="summarylocfmt"><a href="#wrglossary.731">33</a></span>, <a href="#wrglossary.741">34</a>, <a href="#wrglossary.834">37</a>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a>, <a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>, <a href="#glo:gMFUnocap"><code class="csfmt">\gMFUnocap</code></a> &amp; <a href="#glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:capitalisewords"><code class="csfmt">\capitalisewords</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.405">14</a>–<a href="#wrglossary.476">17</a>, <a href="#wrglossary.532">20</a>, <a href="#wrglossary.544">21</a>, <a href="#wrglossary.609">25</a>, <span class="summarylocfmt"><a href="#wrglossary.734">33</a></span>, <a href="#wrglossary.744">34</a>–<a href="#wrglossary.808">36</a>, <a href="#wrglossary.837">38</a>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:capitalisefmtwords"><code class="csfmt">\capitalisefmtwords</code></a>, <a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a>, <a href="#glo:gMFUnocap"><code class="csfmt">\gMFUnocap</code></a> &amp; <a href="#glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:cite"><code class="csfmt">\cite</code></dfn><span class="qquad"></span><a href="#wrglossary.200">8</a>, <a href="#wrglossary.635">26</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:pkg.csquotes"><span class="styfmt">csquotes</span> package</dfn><span class="qquad"></span><a href="#wrglossary.278">10</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index6684672 -->
+
+<section id="index6815744"><!-- start of section index6815744 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->E<div class="labellink"><a href="#index6815744">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><a href="#glo:ecapitalisefmtwords"><code class="csfmt">\ecapitalisefmtwords</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.472">17</a>, <span class="summarylocfmt"><a href="#wrglossary.739">34</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:ecapitalisewords"><code class="csfmt">\ecapitalisewords</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.420">14</a>, <span class="summarylocfmt"><a href="#wrglossary.742">34</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:emakefirstuc"><code class="csfmt">\emakefirstuc</code></a><span class="qquad"></span><a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.139">6</a>, <a href="#wrglossary.312">11</a>, <a href="#wrglossary.385">13</a>, <span class="summarylocfmt"><a href="#wrglossary.745">34</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:end"><code class="csfmt">\end</code></dfn><span class="qquad"></span><a href="#wrglossary.201">8</a>, <a href="#wrglossary.636">26</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:ensuremath"><code class="csfmt">\ensuremath</code></dfn><span class="qquad"></span><a href="#wrglossary.209">8</a>, <a href="#wrglossary.345">12</a>, <a href="#wrglossary.641">26</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:exclusion">exclusion command</dfn><span class="qquad"></span><a href="#tab:sentencecasesummary">Table 1.1</a>; <a href="#wrglossary.30">1</a>, <a href="#wrglossary.38">2</a>, <a href="#wrglossary.129">5</a>, <a href="#wrglossary.195">8</a>, <a href="#wrglossary.281">10</a>–<a href="#wrglossary.387">13</a>, <a href="#wrglossary.491">18</a>, <a href="#wrglossary.614">26</a>, <span class="termslocfmt"><a href="#wrglossary.706">31</a></span>, <a href="#wrglossary.726">33</a>, <a href="#wrglossary.789">36</a>, <a href="#wrglossary.811">37</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:exclusion-word">exclusion word</dfn><span class="qquad"></span><a href="#wrglossary.477">17</a>, <span class="termslocfmt"><a href="#wrglossary.707">31</a></span>, <a href="#wrglossary.738">33</a>–<a href="#wrglossary.807">36</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:opt.expanded"><span class="optfmt">expanded</span></a><span class="qquad"></span><a href="#sec:pkgoptions">§1.6</a>; <a href="#wrglossary.73">2</a>, <a href="#wrglossary.161">6</a>, <a href="#wrglossary.389">13</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index6815744 -->
+
+<section id="index6881280"><!-- start of section index6881280 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->F<div class="labellink"><a href="#index6881280">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:fileformat">file formats</dfn></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx1"><dfn id="glo:ext.aux"><span class="extfmt">aux</span></dfn><span class="qquad"></span><a href="#wrglossary.617">26</a></div><!-- end of nlctuserguideidx1 -->
+
+</section><!-- end of section index6881280 -->
+
+<section id="index6946816"><!-- start of section index6946816 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->G<div class="labellink"><a href="#index6946816">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:pkg.glossaries-extra"><span class="styfmt">glossaries-extra</span> package</dfn><span class="qquad"></span><a href="#wrglossary.379">13</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:pkg.glossaries"><span class="styfmt">glossaries</span> package</dfn><span class="qquad"></span><a href="#wrglossary.3">a</a>, <a href="#wrglossary.113">4</a>, <a href="#wrglossary.153">6</a>, <a href="#wrglossary.220">9</a>, <a href="#wrglossary.254">10</a>, <a href="#wrglossary.369">12</a>, <a href="#wrglossary.378">13</a>, <a href="#wrglossary.663">27</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:Gls"><code class="csfmt">\Gls</code></dfn><span class="qquad"></span><a href="#wrglossary.5">a</a>, <a href="#wrglossary.373">13</a>, <a href="#wrglossary.649">27</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:gls"><code class="csfmt">\gls</code></dfn><span class="qquad"></span><a href="#wrglossary.372">13</a>, <a href="#wrglossary.643">26</a>, <a href="#wrglossary.655">27</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:glsadd"><code class="csfmt">\glsadd</code></dfn><span class="qquad"></span><a href="#wrglossary.219">9</a>, <a href="#wrglossary.255">10</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:glsmakefirstuc"><code class="csfmt">\glsmakefirstuc</code></a><span class="qquad"></span><a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.72">2</a>, <a href="#wrglossary.114">4</a>–<a href="#wrglossary.168">7</a>, <a href="#wrglossary.390">13</a>, <a href="#wrglossary.688">28</a>, <a href="#wrglossary.703">29</a>, <span class="summarylocfmt"><a href="#wrglossary.748">34</a></span>, <a href="#wrglossary.762">35</a>, <a href="#wrglossary.792">36</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:Glspl"><code class="csfmt">\Glspl</code></dfn><span class="qquad"></span><a href="#wrglossary.650">27</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:glspl"><code class="csfmt">\glspl</code></dfn><span class="qquad"></span><a href="#wrglossary.644">26</a>, <a href="#wrglossary.657">27</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:gMFUnocap"><code class="csfmt">\gMFUnocap</code></a><span class="qquad"></span><a href="#sec:nocap">§2.1</a>; <a href="#wrglossary.481">18</a>, <span class="summarylocfmt"><a href="#wrglossary.752">34</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a> &amp; <a href="#glo:MFUclear"><code class="csfmt">\MFUclear</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:opt.grabfirst"><span class="optfmt">grabfirst</span></a><span class="qquad"></span><a href="#sec:pkgoptions">§1.6</a>; <a href="#wrglossary.90">3</a>, <a href="#wrglossary.165">6</a>, <a href="#wrglossary.171">7</a>, <a href="#wrglossary.397">13</a>, <a href="#wrglossary.681">27</a>, <a href="#wrglossary.687">28</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index6946816 -->
+
+<section id="index7012352"><!-- start of section index7012352 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->H<div class="labellink"><a href="#index7012352">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:pkg.hyperref"><span class="styfmt">hyperref</span> package</dfn><span class="qquad"></span><a href="#wrglossary.531">20</a>, <a href="#wrglossary.541">21</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7012352 -->
+
+<section id="index7077888"><!-- start of section index7077888 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->I<div class="labellink"><a href="#index7077888">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><a href="#glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.433">15</a>, <span class="summarylocfmt"><a href="#wrglossary.756">34</a></span>, <a href="#wrglossary.777">35</a>, <a href="#wrglossary.801">36</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:index"><code class="csfmt">\index</code></dfn><span class="qquad"></span><a href="#wrglossary.43">2</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7077888 -->
+
+<section id="index7274496"><!-- start of section index7274496 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->L<div class="labellink"><a href="#index7274496">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:label"><code class="csfmt">\label</code></dfn><span class="qquad"></span><a href="#wrglossary.202">8</a>, <a href="#wrglossary.637">26</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:idx.lowercase">lowercase</dfn><span class="qquad"></span><a href="#wrglossary.415">14</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:ltextcaseexcludeargtl"><code class="csfmt">\l_text_case_exclude_arg_tl</code></dfn><span class="qquad"></span><a href="#wrglossary.197">8</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7274496 -->
+
+<section id="index7340032"><!-- start of section index7340032 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->M<div class="labellink"><a href="#index7340032">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><a href="#glo:makefirstuc"><code class="csfmt">\makefirstuc</code></a><span class="qquad"></span><a href="#sec:sentencecasecmds">§1.2</a>; <a href="#tab:sentencecasesummary">Table 1.1</a>; <a href="#wrglossary.11">a</a>, <a href="#wrglossary.15">1</a>, <a href="#wrglossary.39">2</a>, <a href="#wrglossary.111">4</a>–<a href="#wrglossary.382">13</a>, <a href="#wrglossary.450">16</a>, <a href="#wrglossary.490">18</a>, <a href="#wrglossary.545">21</a>, <a href="#wrglossary.705">31</a>, <a href="#wrglossary.747">34</a>, <span class="summarylocfmt"><a href="#wrglossary.759">35</a></span>, <a href="#wrglossary.840">38</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:MakeTextUppercase"><code class="csfmt">\MakeTextUppercase</code></dfn><span class="qquad"></span><a href="#wrglossary.666">27</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:MakeUppercase"><code class="csfmt">\MakeUppercase</code></dfn><span class="qquad"></span><a href="#wrglossary.173">7</a>, <a href="#wrglossary.401">13</a>, <a href="#wrglossary.662">27</a>, <a href="#wrglossary.695">28</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:mapping">mapping</dfn><span class="qquad"></span><a href="#tab:sentencecasesummary">Table 1.1</a>; <a href="#wrglossary.28">1</a>–<a href="#wrglossary.91">3</a>, <a href="#wrglossary.118">5</a>, <a href="#wrglossary.217">9</a>, <a href="#wrglossary.266">10</a>, <a href="#wrglossary.353">12</a>, <a href="#wrglossary.377">13</a>, <a href="#wrglossary.615">26</a>, <a href="#wrglossary.653">27</a>, <span class="termslocfmt"><a href="#wrglossary.709">31</a></span>, <a href="#wrglossary.730">33</a>, <a href="#wrglossary.769">35</a>, <a href="#wrglossary.813">37</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:pkg.mfirstuc-english"><span class="styfmt">mfirstuc-english</span> package</a><span class="qquad"></span><a href="#sec:nocap">§2.1</a>; <a href="#wrglossary.522">19</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:pkg.mfirstuc"><span class="styfmt">mfirstuc</span> package</dfn><span class="qquad"></span><a href="#wrglossary.112">4</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:mfirstucMakeUppercase"><code class="csfmt">\mfirstucMakeUppercase</code></a><span class="qquad"></span><a href="#sec:allcaps">§3.2</a>; <a href="#wrglossary.172">7</a>, <a href="#wrglossary.192">8</a>, <a href="#wrglossary.400">13</a>, <a href="#wrglossary.660">27</a>, <span class="summarylocfmt"><a href="#wrglossary.763">35</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUaddmap"><code class="csfmt">\MFUaddmap</code></a><span class="qquad"></span><a href="#sec:mappings">§1.5</a>; <a href="#wrglossary.357">12</a>, <span class="summarylocfmt"><a href="#wrglossary.767">35</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a> &amp; <a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a><span class="qquad"></span><a href="#sec:blockers">§1.4</a>; <a href="#wrglossary.284">11</a>, <span class="summarylocfmt"><a href="#wrglossary.770">35</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a> &amp; <a href="#glo:MFUaddmap"><code class="csfmt">\MFUaddmap</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.430">15</a>, <a href="#wrglossary.737">33</a>, <span class="summarylocfmt"><a href="#wrglossary.773">35</a></span>, <a href="#wrglossary.797">36</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUcapwordfirstuc"><code class="csfmt">\MFUcapwordfirstuc</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.449">16</a>, <a href="#wrglossary.497">18</a>, <span class="summarylocfmt"><a href="#wrglossary.778">35</a></span>, <a href="#wrglossary.798">36</a>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a> &amp; <a href="#glo:MFUhyphencapword"><code class="csfmt">\MFUhyphencapword</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUclear"><code class="csfmt">\MFUclear</code></a><span class="qquad"></span><a href="#sec:nocap">§2.1</a>; <a href="#wrglossary.483">18</a>, <span class="summarylocfmt"><a href="#wrglossary.783">35</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:gMFUnocap"><code class="csfmt">\gMFUnocap</code></a> &amp; <a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUexcl"><code class="csfmt">\MFUexcl</code></a><span class="qquad"></span><a href="#sec:exclusions">§1.3</a>; <a href="#wrglossary.194">8</a>, <a href="#wrglossary.288">11</a>, <span class="summarylocfmt"><a href="#wrglossary.787">36</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:MFUblocker"><code class="csfmt">\MFUblocker</code></a> &amp; <a href="#glo:MFUaddmap"><code class="csfmt">\MFUaddmap</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:mfugrabfirstuc"><code class="csfmt">\mfugrabfirstuc</code></a><span class="qquad"></span><a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.170">7</a>, <a href="#wrglossary.399">13</a>, <a href="#wrglossary.680">27</a>, <a href="#wrglossary.686">28</a>, <a href="#wrglossary.766">35</a>, <span class="summarylocfmt"><a href="#wrglossary.790">36</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUhyphencapword"><code class="csfmt">\MFUhyphencapword</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.437">15</a>, <a href="#wrglossary.501">18</a>, <a href="#wrglossary.775">35</a>, <span class="summarylocfmt"><a href="#wrglossary.795">36</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:ifMFUhyphen"><code class="csfmt">\ifMFUhyphen</code></a> &amp; <a href="#glo:MFUcapword"><code class="csfmt">\MFUcapword</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUhyphenfalse"><code class="csfmt">\MFUhyphenfalse</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.442">15</a>, <span class="summarylocfmt"><a href="#wrglossary.799">36</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUhyphentrue"><code class="csfmt">\MFUhyphentrue</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.440">15</a>, <span class="summarylocfmt"><a href="#wrglossary.802">36</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUnocap"><code class="csfmt">\MFUnocap</code></a><span class="qquad"></span><a href="#sec:nocap">§2.1</a>; <a href="#wrglossary.479">17</a>, <a href="#wrglossary.525">19</a>, <a href="#wrglossary.529">20</a>, <span class="summarylocfmt"><a href="#wrglossary.805">36</a></span>, <div class="crossref"><span class="crossreftag">see also</span> <a href="#glo:gMFUnocap"><code class="csfmt">\gMFUnocap</code></a> &amp; <a href="#glo:MFUclear"><code class="csfmt">\MFUclear</code></a></div><!-- end of crossref -->
+</div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUsave"><code class="csfmt">\MFUsave</code></a><span class="qquad"></span><a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.621">26</a>, <span class="summarylocfmt"><a href="#wrglossary.809">36</a></span>, <a href="#wrglossary.822">37</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUsaveatend"><code class="csfmt">\MFUsaveatend</code></a><span class="qquad"></span><a href="#sec:savetoaux">§3.1</a>; <a href="#wrglossary.619">26</a>, <span class="summarylocfmt"><a href="#wrglossary.816">37</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUsentencecase"><code class="csfmt">\MFUsentencecase</code></a><span class="qquad"></span><a href="#sec:sentencecasecmds">§1.2</a>; <a href="#tab:sentencecasesummary">Table 1.1</a>; <a href="#wrglossary.14">1</a>, <a href="#wrglossary.40">2</a>, <a href="#wrglossary.101">4</a>, <a href="#wrglossary.146">6</a>, <a href="#wrglossary.198">8</a>–<a href="#wrglossary.386">13</a>, <a href="#wrglossary.451">16</a>, <a href="#wrglossary.498">18</a>, <a href="#wrglossary.546">21</a>, <a href="#wrglossary.702">28</a>, <a href="#wrglossary.751">34</a>, <span class="summarylocfmt"><a href="#wrglossary.823">37</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUskippunc"><code class="csfmt">\MFUskippunc</code></a><span class="qquad"></span><a href="#sec:exclusions">§1.3</a>; <a href="#wrglossary.215">8</a>–<a href="#wrglossary.252">10</a>, <a href="#wrglossary.642">26</a>, <span class="summarylocfmt"><a href="#wrglossary.826">37</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:MFUwordbreak"><code class="csfmt">\MFUwordbreak</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.424">15</a>, <a href="#wrglossary.453">16</a>, <a href="#wrglossary.500">18</a>, <a href="#wrglossary.502">19</a>, <span class="summarylocfmt"><a href="#wrglossary.829">37</a></span></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7340032 -->
+
+<section id="index7405568"><!-- start of section index7405568 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->N<div class="labellink"><a href="#index7405568">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:nameref"><code class="csfmt">\nameref</code></dfn><span class="qquad"></span><a href="#wrglossary.55">2</a>, <a href="#wrglossary.269">10</a>, <a href="#wrglossary.292">11</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:NoCaseChange"><code class="csfmt">\NoCaseChange</code></dfn><span class="qquad"></span><a href="#wrglossary.206">8</a>, <a href="#wrglossary.244">9</a>, <a href="#wrglossary.315">11</a>, <a href="#wrglossary.349">12</a>, <a href="#wrglossary.640">26</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7405568 -->
+
+<section id="index7536640"><!-- start of section index7536640 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->P<div class="labellink"><a href="#index7536640">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:pdfstringdefDisableCommands"><code class="csfmt">\pdfstringdefDisableCommands</code></dfn><span class="qquad"></span><a href="#wrglossary.543">21</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:protect"><code class="csfmt">\protect</code></dfn><span class="qquad"></span><a href="#wrglossary.124">5</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:idx.punctuation">punctuation</dfn><span class="qquad"></span><a href="#wrglossary.21">1</a>, <a href="#wrglossary.218">9</a>, <a href="#wrglossary.256">10</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7536640 -->
+
+<section id="index7667712"><!-- start of section index7667712 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->R<div class="labellink"><a href="#index7667712">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:ref"><code class="csfmt">\ref</code></dfn><span class="qquad"></span><a href="#wrglossary.203">8</a>, <a href="#wrglossary.638">26</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7667712 -->
+
+<section id="index7733248"><!-- start of section index7733248 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->S<div class="labellink"><a href="#index7733248">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:semanticcommand">semantic command</dfn><span class="qquad"></span><a href="#wrglossary.31">1</a>, <a href="#wrglossary.103">4</a>, <a href="#wrglossary.116">5</a>, <a href="#wrglossary.606">24</a>, <span class="termslocfmt"><a href="#wrglossary.711">31</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:sentence-case">sentence-case</dfn><span class="qquad"></span><a href="#wrglossary.6">a</a>, <a href="#wrglossary.13">1</a>, <a href="#wrglossary.160">6</a>, <a href="#wrglossary.362">12</a>, <a href="#wrglossary.406">14</a>, <span class="termslocfmt"><a href="#wrglossary.714">32</a></span>, <a href="#wrglossary.761">35</a>, <a href="#wrglossary.825">37</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:space"><code class="csfmt">\space</code></dfn><span class="qquad"></span><a href="#wrglossary.408">14</a>, <a href="#wrglossary.559">21</a>, <a href="#wrglossary.587">23</a>, <a href="#wrglossary.593">24</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7733248 -->
+
+<section id="index7798784"><!-- start of section index7798784 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->T<div class="labellink"><a href="#index7798784">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:texorpdfstring"><code class="csfmt">\texorpdfstring</code></dfn><span class="qquad"></span><a href="#wrglossary.537">20</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:pkg.textcase"><span class="styfmt">textcase</span> package</dfn><span class="qquad"></span><a href="#wrglossary.664">27</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:texttitlecase:n"><code class="csfmt">\text_titlecase:n</code></dfn><span class="qquad"></span><a href="#wrglossary.413">14</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:texttitlecasefirst:n"><code class="csfmt">\text_titlecase_first:n</code></dfn><span class="qquad"></span><a href="#wrglossary.102">4</a>, <a href="#wrglossary.676">27</a>, <a href="#wrglossary.699">28</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:textuppercase:n"><code class="csfmt">\text_uppercase:n</code></dfn><span class="qquad"></span><a href="#wrglossary.672">27</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:title-case">title-case</dfn><span class="qquad"></span><a href="#wrglossary.403">14</a>, <a href="#wrglossary.708">31</a>, <span class="termslocfmt"><a href="#wrglossary.716">32</a></span>, <a href="#wrglossary.736">33</a>, <a href="#wrglossary.758">34</a>, <a href="#wrglossary.831">37</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7798784 -->
+
+<section id="index7864320"><!-- start of section index7864320 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->U<div class="labellink"><a href="#index7864320">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><dfn id="glo:unexpanded"><code class="csfmt">\unexpanded</code></dfn><span class="qquad"></span><a href="#wrglossary.156">6</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:opt.unexpanded"><span class="optfmt">unexpanded</span></a><span class="qquad"></span><a href="#sec:pkgoptions">§1.6</a>; <a href="#wrglossary.74">2</a>, <a href="#wrglossary.82">3</a>, <a href="#wrglossary.154">6</a>, <a href="#wrglossary.393">13</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:idx.uppercase">uppercase</dfn><span class="qquad"></span><a href="#wrglossary.414">14</a>, <a href="#wrglossary.661">27</a>, <a href="#wrglossary.715">32</a>, <a href="#wrglossary.765">35</a>, <a href="#wrglossary.793">36</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:utf8">UTF-8</dfn><span class="qquad"></span><a href="#wrglossary.16">1</a>, <a href="#wrglossary.175">7</a>, <a href="#wrglossary.685">28</a>, <span class="termslocfmt"><a href="#wrglossary.718">32</a></span>, <a href="#wrglossary.794">36</a></div><!-- end of nlctuserguideidx0 -->
+
+</section><!-- end of section index7864320 -->
+
+<section id="index8060928"><!-- start of section index8060928 --><div class="tomain"><a href="#main">[top]</a></div>
+<h2><!-- start of section header -->X<div class="labellink"><a href="#index8060928">[link]</a></div></h2><!-- end of section header -->
+<div class="nlctuserguideidx0"><a href="#glo:xcapitalisefmtwords"><code class="csfmt">\xcapitalisefmtwords</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.468">17</a>, <span class="summarylocfmt"><a href="#wrglossary.832">37</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:xcapitalisewords"><code class="csfmt">\xcapitalisewords</code></a><span class="qquad"></span><a href="#sec:capitalisewords">§2</a>; <a href="#wrglossary.417">14</a>, <a href="#wrglossary.592">24</a>, <span class="summarylocfmt"><a href="#wrglossary.835">37</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:xmakefirstuc"><code class="csfmt">\xmakefirstuc</code></a><span class="qquad"></span><a href="#sec:sentencecasecmds">§1.2</a>; <a href="#wrglossary.135">5</a>, <a href="#wrglossary.311">11</a>, <a href="#wrglossary.384">13</a>, <span class="summarylocfmt"><a href="#wrglossary.838">38</a></span></div><!-- end of nlctuserguideidx0 -->
+<p>
+
+</section><!-- end of section index8060928 -->
+</div><!-- end of main -->
+</body>
+</html>
diff --git a/macros/latex/contrib/mfirstuc/mfirstuc-manual.pdf b/macros/latex/contrib/mfirstuc/mfirstuc-manual.pdf
index cc7cf0cf77..9a9a108bf8 100644
--- a/macros/latex/contrib/mfirstuc/mfirstuc-manual.pdf
+++ b/macros/latex/contrib/mfirstuc/mfirstuc-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/mfirstuc/mfirstuc-manual.tex b/macros/latex/contrib/mfirstuc/mfirstuc-manual.tex
index e741c6d45d..c53b166eb4 100644
--- a/macros/latex/contrib/mfirstuc/mfirstuc-manual.tex
+++ b/macros/latex/contrib/mfirstuc/mfirstuc-manual.tex
@@ -1,933 +1,1758 @@
-\documentclass[report]{nlctdoc}
-
-\usepackage[a4paper,left=1.75in]{geometry}
-\usepackage{alltt}
-\usepackage{mfirstuc}
-\usepackage{pifont}
-\usepackage[utf8]{inputenc}
-\ifpdf
- \usepackage[T1]{fontenc}
- \usepackage{metalogo}
-\else
- \providecommand{\XeLaTeX}{XeLaTeX}
- \providecommand{\XeTeX}{XeTeX}
-\fi
-\usepackage{cmap}
-\usepackage[colorlinks,
- bookmarks,
- hyperindex=false,
- pdfauthor={Nicola L.C. Talbot},
- pdftitle={mfirstuc.sty: uppercasing first letter},
- pdfkeywords={LaTeX,package,uppercase}]{hyperref}
-
-\IndexPrologue{%
-\chapter*{\indexname}\markright{\indexname}
-\addcontentsline{toc}{chapter}{\indexname}}
+% arara: lualatex
+% arara: bib2gls: { group: on, options: [ "--replace-quotes" ] }
+% arara: lualatex
+% arara: bib2gls: { group: on, options: [ "--replace-quotes" ] } if found ("log", "Glossary entry `sym.")
+% arara: lualatex
+% arara: lualatex if found ("log", "Rerun to")
+
+% This document requires glossaries-extra v1.49, bib2gls v3.0
+% and nlctuserguide.sty. If they haven't already
+% been uploaded to CTAN, they will be in a few days.
+
+\documentclass[titlepage=false,oneside,
+ fontsize=12pt,captions=tableheading]{scrbook}
+
+\usepackage
+ %[debug=showwrgloss]
+ {nlctuserguide}
+
+\nlctuserguidegls
+{
+ % \MFUsentencecase
+ \gcmd{MFU\-sen\-tence\-case}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \syntax{\margm{text}}%
+ \desc{converts \meta{text} to \idx+{sentence-case} with expansion}
+ }
+ % \MFUexcl
+ \gcmd{MFU\-excl}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \syntax{\margm{cs}}%
+ \desc{locally identifies \meta{cs} as an \idx{exclusion} command}
+ \field{seealso}{MFUblocker,MFUaddmap}
+ }
+ % \MFUblocker
+ \gcmd{MFU\-blocker}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \syntax{\margm{cs}}%
+ \desc{locally identifies \meta{cs} as a \idx{blocker} command}
+ \field{seealso}{MFUexcl,MFUaddmap}
+ }
+ % \MFUaddmap
+ \gcmd{MFU\-add\-map}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \syntax{\margm{cs1}\margm{cs2}}%
+ \desc{identifies a \idx{mapping} from the command \meta{cs1} to
+ command \meta{cs2}}
+ \field{seealso}{MFUexcl,MFUblocker}
+ }
+ % \MFUsaveatend
+ \gcmd{MFU\-save\-at\-end}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \desc{saves the list of \idxpl{exclusion}, \idxpl{blocker}
+ and \idxpl{mapping} to the \ext{aux} file (if required by some
+ external tool) at the end of the document.
+ This command sets itself to \cmd{relax} so it
+ doesn't repeat the action if used multiple times, but it can
+ be overridden by \gls{MFUsave}}
+ }
+ % \MFUsave
+ \gcmd{MFU\-save}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \desc{saves the list of \idxpl{exclusion}, \idxpl{blocker}
+ and \idxpl{mapping} to the \ext{aux} file (if required by some
+ external tool).
+ This command sets itself to \cmd{relax} so it
+ doesn't repeat the action if used multiple times, and
+ counteracts any use of \gls{MFUsaveatend}}
+ }
+ % \@mfu@excls
+ \gcmd{@mfu\-@\-excls}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \syntax{\margm{exclusions}}
+ \desc{an \ext{aux} file command that lists all the identified
+ \idxpl{exclusion}}
+ \field{seealso}{MFUsave,MFUsaveatend}
+ }
+ % \@mfu@blockers
+ \gcmd{@mfu\-@\-blockers}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \syntax{\margm{blockers}}
+ \desc{an \ext{aux} file command that lists all the identified
+ \idxpl{blocker}}
+ \field{seealso}{MFUsave,MFUsaveatend}
+ }
+ % \@mfu@mappings
+ \gcmd{@mfu\-@\-mappings}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \syntax{\margm{mappings}}
+ \desc{an \ext{aux} file command that lists all the identified
+ \idxpl{mapping} as a \keyval\ list}
+ \field{seealso}{MFUsave,MFUsaveatend}
+ }
+ % \mfirstucMakeUppercase
+ \gcmd{mfirst\-uc\-Make\-Up\-per\-case}
+ {
+ \providedby{\sty{mfirstuc} v1.07+}
+ \syntax{\margm{text}}%
+ \desc{converts \meta{text} to \idx{uppercase}.
+ Now only used in \gls{mfugrabfirstuc}}
+ }
+ % \emakefirstuc
+ \gcmd{e\-make\-first\-uc}
+ {
+ \providedby{\sty{mfirstuc} v1.10+}
+ \syntax{\margm{text}}%
+ \desc{fully expands \meta{text} before passing it to
+ \gls{makefirstuc}}
+ }
+ % \xmakefirstuc
+ \gcmd{x\-make\-first\-uc}
+ {
+ \providedby{\sty{mfirstuc} v1.01+}
+ \syntax{\margm{text}}%
+ \desc{shortcut for
+ \code{\cmd{expandafter}\gls{makefirstuc}\cmd{expandafter}\margm{text}}}
+ }
+ % \makefirstuc
+ \gcmd{make\-first\-uc}
+ {
+ \providedby{\sty{mfirstuc} v1.0+}
+ \syntax{\margm{text}}%
+ \desc{converts \meta{text} to \idx+{sentence-case} internally using
+ \gls{glsmakefirstuc} to perform the case-change, but first parses
+ \meta{text} to deal with special cases}
+ }
+ % \glsmakefirstuc
+ \gcmd{gls\-make\-first\-uc}
+ {
+ \providedby{\sty{mfirstuc} v1.05+}
+ \syntax{\margm{text}}%
+ \desc{used by \gls{makefirstuc} to perform the case-change. This
+ uses \code{\gls{MFUsentencecase}\margm{text}} but by default
+ will prevent its argument from being expanded}
+ }
+ % \mfugrabfirstuc
+ \gcmd{mfu\-grab\-first\-uc}
+ {
+ \providedby{\sty{mfirstuc} v2.08+}
+ \syntax{\margm{text}}
+ \note{avoid where possible}
+ \desc{provide to emulate \gls{glsmakefirstuc} in v2.07 and
+ below, but can still produce different results to v2.07.
+ This will attempt to grab only the first character of
+ \meta{text} and convert it to \idx{uppercase}, leaving the rest of
+ \meta{text} unchanged. This won't work if \meta{text} starts
+ with a \gls{utf8} character, unless you are using \XeLaTeX\ or
+ \LuaLaTeX}
+ }
+ % \MFUskippunc
+ \gcmd{MFU\-skip\-punc}
+ {
+ \providedby{\sty{mfirstuc} v2.07+}
+ \syntax{\margm{content}}%
+ \desc{an \idx{exclusion} command}
+ }
+ % \capitalisewords
+ \gcmd{cap\-i\-talise\-words}
+ {
+ \providedby{\sty{mfirstuc} v1.06+}
+ \syntax{\margm{text}}%
+ \desc{applies \idx+{title-case} to \meta{text}. This will apply
+ \gls{MFUcapword} to each word in \meta{text} (unless the word has been
+ identified as an \idx{exclusion-word} and doesn't occur at the start of
+ \meta{text})}
+ \field{seealso}{capitalisefmtwords,MFUnocap,gMFUnocap,ifMFUhyphen}
+ }
+ % \xcapitalisewords
+ \gcmd{x\-cap\-i\-talise\-words}
+ {
+ \providedby{\sty{mfirstuc} v1.06+}
+ \syntax{\margm{text}}%
+ \desc{shortcut for
+ \code{\cmd{expandafter}\gls{capitalisewords}\cmd{expandafter}\margm{text}}}
+ }
+ % \ecapitalisewords
+ \gcmd{e\-cap\-i\-talise\-words}
+ {
+ \providedby{\sty{mfirstuc} v1.10+}
+ \syntax{\margm{text}}%
+ \desc{fully expands \meta{text} before passing it to \gls{capitalisewords}}
+ }
+ % \capitalisefmtwords
+ \gcmd{cap\-i\-talise\-fmt\-words}
+ {
+ \providedby{\sty{mfirstuc} v2.03+}
+ \syntax{\margm{text}}%
+ \desc{similar to \gls{capitalisewords} but for content that may
+ contain formatting commands}
+ \field{modifiers}{*}
+ \field{seealso}{capitalisewords,MFUnocap,gMFUnocap,ifMFUhyphen}
+ }
+ % \xcapitalisefmtwords
+ \gcmd{x\-cap\-i\-talise\-fmt\-words}
+ {
+ \providedby{\sty{mfirstuc} v2.03+}
+ \syntax{\margm{text}}%
+ \desc{shortcut for
+ \code{\cmd{expandafter}\gls{capitalisefmtwords}\cmd{expandafter}\margm{text}}
+ including the \code{*} modifier, if provided}
+ \field{modifiers}{*}
+ }
+ % \ecapitalisefmtwords
+ \gcmd{e\-cap\-i\-talise\-fmt\-words}
+ {
+ \providedby{\sty{mfirstuc} v2.03+}
+ \syntax{\margm{text}}%
+ \desc{fully expands \meta{text} and passes it to
+ \gls{capitalisefmtwords} including the \code{*} modifier, if provided}
+ \field{modifiers}{*}
+ }
+ % \ifMFUhyphen
+ \gcond{if\-MFU\-hyphen}
+ {
+ \initval{\cmd{iffalse}}
+ \providedby{\sty{mfirstuc} v2.03+}
+ \desc{conditional that determines whether or not hyphens should
+ be considered word boundaries by the \idx{title-case} commands}
+ }
+ % \MFUhyphentrue
+ \gcmd{MFU\-hyphen\-true}
+ {
+ \providedby{\sty{mfirstuc} v2.03+}
+ \desc{sets \gls{ifMFUhyphen} to true}
+ }
+ % \MFUhyphenfalse
+ \gcmd{MFU\-hyphen\-false}
+ {
+ \providedby{\sty{mfirstuc} v2.03+}
+ \desc{sets \gls{ifMFUhyphen} to false}
+ }
+ % \MFUwordbreak
+ \gcmd{MFU\-word\-break}
+ {
+ \providedby{\sty{mfirstuc} v2.07+}
+ \syntax{\margm{text}}%
+ \desc{used to markup a character or command that should be
+ treated as a word break by the \idx{title-case} commands}
+ }
+ % \MFUcapword
+ \gcmd{MFU\-cap\-word}
+ {
+ \providedby{\sty{mfirstuc} v2.03+}
+ \syntax{\margm{text}}%
+ \desc{uses either \gls{MFUhyphencapword} or \gls{MFUcapwordfirstuc}
+ depending on \gls{ifMFUhyphen}}
+ }
+ % \MFUcapwordfirstuc
+ \gcmd{MFU\-cap\-word\-first\-uc}
+ {
+ \providedby{\sty{mfirstuc} v2.07+}
+ \syntax{\margm{word}}%
+ \desc{used by \gls{MFUcapword} and \gls{MFUhyphencapword} to
+ apply the case-change to the given word. This just does
+ \code{\gls{makefirstuc}\margm{text}} by default}
+ \field{seealso}{MFUcapword,MFUhyphencapword}
+ }
+ % \MFUhyphencapword
+ \gcmd{MFU\-hyphen\-cap\-word}
+ {
+ \providedby{\sty{mfirstuc} v2.07+}
+ \syntax{\margm{text}}%
+ \desc{used by \gls{MFUcapword} to apply \gls{MFUcapwordfirstuc} to
+ each hyphen-separated word in \meta{text}, if hyphens should
+ indicate a word-break}
+ \field{seealso}{ifMFUhyphen,MFUcapword}
+ }
+ % \MFUnocap
+ \gcmd{MFU\-no\-cap}
+ {
+ \providedby{\sty{mfirstuc} v1.09+}
+ \syntax{\margm{word}}%
+ \desc{locally adds \meta{word} to the \idx{exclusion-word} list for
+ \gls{capitalisewords}}
+ \field{seealso}{gMFUnocap,MFUclear}
+ }
+ % \gMFUnocap
+ \gcmd{gMFU\-no\-cap}
+ {
+ \providedby{\sty{mfirstuc} v1.09+}
+ \syntax{\margm{word}}%
+ \desc{globally adds \meta{word} to the \idx{exclusion-word} list for
+ \gls{capitalisewords}}
+ \field{seealso}{MFUnocap,MFUclear}
+ }
+ % \MFUclear
+ \gcmd{MFU\-clear}
+ {
+ \providedby{\sty{mfirstuc} v1.09+}
+ \desc{locally clears the \idx{exclusion-word} list for \gls{capitalisewords}}
+ \field{seealso}{gMFUnocap,MFUnocap}
+ }
+ % PACKAGE OPTIONS
+ % option grabfirst
+ \gopt{grab\-first}
+ {%
+ \providedby{\sty{mfirstuc} v2.08+}
+ \note{avoid where possible}
+ \desc{redefines \gls{glsmakefirstuc} to use \gls{mfugrabfirstuc}
+ and \gls{mfirstucMakeUppercase} to use \gls{MakeUppercase}}
+ }
+ % option expanded
+ \gopt{expanded}
+ {%
+ \providedby{\sty{mfirstuc} v2.08+}
+ \desc{redefines \gls{glsmakefirstuc} to use \gls{MFUsentencecase}
+ without inhibiting the expansion of its argument}
+ }
+ % option unexpanded
+ \gopt{unexpanded}
+ {%
+ \providedby{\sty{mfirstuc} v2.08+}
+ \desc{redefines \gls{glsmakefirstuc} to use \gls{MFUsentencecase}
+ but inhibits expansion of its argument}
+ }
+ % COMMANDS: index only
+ \gcmd{text\dsb title\-case\dsb first:n}{}
+ \gcmd{text\dsb title\-case:n}{}
+ \gcmd{text\dsb upper\-case:n}{}
+ \gcmd{l\dsb text\dsb case\dsb ex\-clude\dsb arg\dsb tl}{}
+ \gcmd{protect}{}
+ \gcmd{unexpanded}{}
+ \gcmd{glsadd}{}
+ \gcmd{gls}{}
+ \gcmd{Gls}{}
+ \gcmd{GLS}{}
+ \gcmd{glspl}{}
+ \gcmd{Glspl}{}
+ \gcmd{GLSpl}{}
+ \gcmd{Make\-Upper\-case}{}% \MakeUppercase
+ \gcmd{Make\-Text\-Upper\-case}{}% \MakeTextUppercase
+ \gcmd{No\-Case\-Change}{}% \NoCaseChange
+ \gcmd{ensure\-math}{}
+ \gcmd{begin}{}
+ \gcmd{end}{}
+ \gcmd{cite}{}
+ \gcmd{label}{}
+ \gcmd{ref}{}
+ \gcmd{index}{}
+ \gcmd{space}{}
+ \gcmd{name\-ref}{}% \nameref
+ \gcmd{tex\-or\-pdf\-string}{}% \texorpdfstring
+ \gcmd{pdf\-string\-def\-Dis\-able\-Commands}{}% \pdfstringdefDisableCommands
+ \gpunc{nbsp}{\name{\code{\textasciitilde}}}% ~
+ % packages
+ \gpkg{mfirst\-uc}{\common}
+ \gpkg{mfirstuc\dhyphen english}{}
+ \gpkg{glossaries}{}
+ \gpkg{glossaries\dhyphen extra}{}
+ \gpkg{text\-case}{}% textcase
+ \gpkg{cs\-quotes}{}% csquotes
+ \gpkg{hyper\-ref}{}% hyperref
+ % file extensions
+ \gext{aux}{}
+ % terms
+ \gterm{exclusion}{\name{exclusion command}\field{text}{exclusion}
+ \desc{a command whose argument should be skipped
+ by the case-changer. The content that follows the command should
+ have its case-changed instead. See \sectionref{sec:exclusions}}}
+ \gterm{blocker}{\desc{a command that prohibits case-changing. If
+ encountered by \gls{makefirstuc}, it won't attempt to apply any
+ case-changing. See \sectionref{sec:blockers}}}
+ \gterm{mapping}{\desc{a command that should be substituted by
+ another, if encountered by \gls{makefirstuc}, instead of applying
+ a case-change. See \sectionref{sec:mappings}}}
+ \gterm{sentence-case}{\desc{content that should appear at the
+ start of a sentence that needs to have its first significant
+ character converted to \idx{uppercase}. See \sectionref{sec:sentencecase}}}
+ \gterm{title-case}{\desc{content that needs to appear in a title
+ that should have each significant word converted to
+ \idx{sentence-case}. See \sectionref{sec:capitalisewords}}}
+ \gterm{exclusion-word}{\name{exclusion word}
+ \desc{a word that shouldn't have its case changed by
+ \idx{title-case} commands, unless the word occurs at the start}}
+ \gtermacr{utf8}{UTF-8}{Unicode Transformation Format (8-bit)}
+ {%
+ \desc{a variable-width encoding that uses 8-bit code units. This
+ means that some characters are represented by more that one byte.
+ \XeLaTeX\ and \LuaLaTeX\ treat the multi-byte sequence as a single
+ token, but the older \LaTeX\ formats have single-byte tokens, which
+ can cause complications, although these have mostly been addressed with
+ the newer kernels introduced over the past few years. Related blog article:
+ \blog{binary-files-text-files-and-file-encodings/}{Binary Files,
+ Text Files and File Encodings}}
+ }
+ \gterm{semanticcommand}{\name{semantic command}
+ \desc{essentially, this is a command associated with a
+ particular element, idea or topic that hides the font
+ and other stylistic formatting inside its definition. For
+ example, Latin taxonomy is usually displayed in italic.
+ Explicitly using font commands, for example
+ \begin{compactcodebox}\cmd{textit}\marg{Clostridium}\end{compactcodebox}
+ is syntactic markup.
+ Whereas defining a command called, say, \cmd{bacteria} that
+ displays its argument in italics is a semantic command. The
+ actual styling is hidden and the command relates specifically to
+ a particular concept.
+\begin{codebox}
+Syntactic: \cmd{textit}\marg{Clostridium}^^J\codepar
+\cmd{newrobustcmd}*\marg{\cmd{bacteria}}[1]{\cmd{emph}\marg{\#1}}\%\newline
+Semantic: \cmd{bacteria}\marg{Clostridium}
+\end{codebox}
+ The end result is the same:
+\begin{resultbox}
+Syntactic: \textit{Clostridium}\glspar
+Semantic: \emph{Clostridium}
+\end{resultbox}
+ The advantage with semantic commands is that it's much easier to
+ change the style, simply by adjusting the command definition.
+ Note that I've used \cmd{newrobustcmd} to make the semantic
+ command robust as the style commands can cause a problem if they
+ expand too soon}
+ }
+ % index only
+ \gidx{punctuation}{}
+ \gpunc{sym.dollar}{\name{\code{\$}}}% $
+ \gidx{uppercase}{}
+ \gidx{lowercase}{}
+}
-\begin{document}
-\MakeShortVerb{|}
- \title{mfirstuc.sty v2.07:
-uppercasing first letter}
- \author{Nicola L.C. Talbot\\[10pt]
+\title{mfirstuc.sty v2.08:
+sentence and title casing}
+\author{Nicola L.C. Talbot\\[10pt]
Dickimaw Books\\
-\url{http://www.dickimaw-books.com/}}
-
- \date{2021-10-15}
- \maketitle
- \tableofcontents
-
- \chapter{Introduction}
- \label{sec:intro}
+\href{https://www.dickimaw-books.com/}{\nolinkurl{dickimaw-books.com}}}
+\date{2022-10-14
+}
-The \styfmt{mfirstuc} package was originally part of the
-\styfmt{glossaries} bundle for use with commands like \cs{Gls}, but
-as the commands provided by \styfmt{mfirstuc} may be used without
-\styfmt{glossaries}, the two have been split into separately
-maintained packages.
+\begin{document}
+\maketitle
+
+\htmlavailable
+
+\begin{information}
+The \sty{mfirstuc} package was originally part of the
+\sty{glossaries} bundle (added to \sty{glossaries} v1.12
+in 2008) for use with commands like \gls{Gls},
+which need to have the first letter converted to uppercase
+(\idx{sentence-case}), but as the commands provided by
+\sty{mfirstuc} may be used without \sty{glossaries}, the two
+were split into separately maintained packages in 2015
+(\sty{mfirstuc} v2.0 and \sty{glossaries} v4.18).
+\end{information}
+
+Version 2.08 has reimplemented \gls{makefirstuc} using \LaTeX3
+commands. If there are any compatibility issues, you can rollback to
+v2.07:
+\begin{codebox}
+\cmd{usepackage}\marg{mfirstuc}[=2.07]
+\end{codebox}
+
+\frontmatter
+\tableofcontents
+
+\mainmatter
+\chapter{Sentence-Case}
+\label{sec:sentencecase}
+
+There are two \idx{sentence-case} commands provided: \gls{MFUsentencecase}
+and \gls{makefirstuc}. A summary of the principle features of
+the two commands is given in
+\tableref{tab:sentencecasesummary}.
+
+\begin{table}[htbp]
+\caption{Principle features of
+\glsfmttext{MFUsentencecase} and \glsfmttext{makefirstuc}}
+\label{tab:sentencecasesummary}
+\centering
+\begin{tabular}{lcc}
+\bfseries Feature & \bfseries \gls{MFUsentencecase}[]
+& \bfseries \gls{makefirstuc}[]\\
+Can expand? & \proyes & \prono\\
+Supports \idxpl{exclusion}? & \proyes & \proyes\\
+Supports \idxpl{blocker}? & \prono & \proyes\\
+Supports \idxpl{mapping}? & \prono & \proyes\\
+Semantic commands must be robust? & \conyes & \conno
+\end{tabular}
+\end{table}
+
+\section{Examples}
+\label{sec:sentencecaseex}
+
+Text only (leading \idx{utf8} now supported):
+\begin{coderesult}
+\gls{makefirstuc}\marg{élite} /
+\gls{MFUsentencecase}\marg{élite}
+\tcblower
+\makefirstuc{élite} /
+\MFUsentencecase{élite}
+\end{coderesult}
+
+Leading \idx{punctuation} is ignored:
+\begin{coderesult}
+\gls{makefirstuc}\marg{`word'} /
+\gls{MFUsentencecase}\marg{`word'}
+\tcblower
+\makefirstuc{`word'} /
+\MFUsentencecase{`word'}
+\end{coderesult}
+However, if the \idx{punctuation} character is followed by a
+\idx{blocker} or \idx{mapping} command, the \idx{punctuation} will
+need to be excluded otherwise the command will be treated as an
+\idx{exclusion}. If possible, use \idxc{semanticcommand}{semantic
+markup} instead of directly including the \idx{punctuation}.
+
+Fragile commands need to be protected with
+\gls{MFUsentencecase}:
+\begin{codebox}
+\cmd{newcommand}\marg{\cmd{alert}}[1]\marg{\cmd{textcolor}\marg{red}\marg{\cmd{textbf}\marg{\#1}}}
+\gls{makefirstuc}\marg{\cmd{alert}\marg{élite}} /
+\gls{MFUsentencecase}\marg{\strong{\cmd{protect}}\cmd{alert}\marg{élite}}
+\end{codebox}
+\begin{resultbox}
+\newcommand{\alert}[1]{\textcolor{red}{\textbf{#1}}}
+\makefirstuc{\alert{élite}} /
+\MFUsentencecase{\protect\alert{élite}}
+\end{resultbox}
+
+\Idxpl{exclusion} are supported by both \gls{makefirstuc} and
+\gls{MFUsentencecase}:
+\begin{codebox}
+\gls{MFUexcl}\marg{\gls+{index}}
+\gls{makefirstuc}\marg{\gls{index}\marg{word}example} /
+\gls{MFUsentencecase}\marg{\gls{index}\marg{word}example}
+\end{codebox}
+\begin{resultbox}
+\MFUexcl{\index}
+\makefirstuc{\index{example}example} /
+\MFUsentencecase{\index{example}example}
+\end{resultbox}
+
+\Idxpl{blocker} are only supported by \gls{makefirstuc}.
+They are treated as \idxpl{exclusion} with
+\gls{MFUsentencecase}, which produces a different result:
+\begin{codebox}
+\gls{MFUblocker}\marg{\gls+{nameref}}
+\gls{makefirstuc}\marg{\gls{nameref}\marg{sec:sentencecase} section} /
+\gls{MFUsentencecase}\marg{\gls{nameref}\marg{sec:sentencecase} section}
+\end{codebox}
+\begin{resultbox}
+\MFUblocker{\nameref}
+\makefirstuc{\nameref{sec:sentencecase} section} /
+\MFUsentencecase{\nameref{sec:sentencecase} section}
+\end{resultbox}
+
+\Idxpl{mapping} are only supported by \gls{makefirstuc}.
+They are treated as \idxpl{exclusion} with
+\gls{MFUsentencecase}, which produces a different result:
+\begin{codebox}
+\cmd{newrobustcmd}\marg{\cmd{secref}}[1]\marg{section\glstildechar\cmd{ref}\marg{\#1}}
+\cmd{newrobustcmd}\marg{\cmd{Secref}}[1]\marg{Section\glstildechar\cmd{ref}\marg{\#1}}
+\gls{MFUaddmap}\marg{\cmd{secref}}\marg{\cmd{Secref}}
+\gls{makefirstuc}\marg{\cmd{secref}\marg{sec:sentencecase} example} /
+\gls{MFUsentencecase}\marg{\cmd{secref}\marg{sec:sentencecase} example}
+\end{codebox}
+\begin{resultbox}
+\newrobustcmd{\secref}[1]{section~\ref{#1}}
+\newrobustcmd{\Secref}[1]{Section~\ref{#1}}
+\MFUaddmap{\secref}{\Secref}
+\makefirstuc{\secref{sec:sentencecase} example} /
+\MFUsentencecase{\secref{sec:sentencecase} example}
+\end{resultbox}
+
+Argument expansion: \gls{MFUsentencecase} expands its argument
+and then skips exclusions whereas \gls{makefirstuc} parses its
+argument without expansion and then passes the relevant content to
+\gls{glsmakefirstuc}. Note that different results will occur with
+the \opt{expanded} and \opt{unexpanded} package options.
+For example:
+\begin{codebox}
+\cmd{usepackage}[\opt{expanded}]\marg{mfirstuc}
+\cmd{newcommand}\marg{\cmd{testa}}\marg{sample}
+\cmd{newcommand}\marg{\cmd{testb}}\marg{\cmd{testa}\cmd{ }test}
+\cbeg{document}
+\gls{makefirstuc}\marg{\cmd{testb}} / \gls{xmakefirstuc}\marg{\cmd{testb}} /
+\gls{emakefirstuc}\marg{\cmd{testb}} / \gls{MFUsentencecase}\marg{\cmd{testb}}
+\cend{document}
+\end{codebox}
+\begin{resultbox}
+\newcommand{\testa}{sample}%
+\newcommand{\testb}{\testa\ test}%
+\renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{#1}}%
+\makefirstuc{\testb} / \xmakefirstuc{\testb} /
+\emakefirstuc{\testb} / \MFUsentencecase{\testb}
+\end{resultbox}
+With the default \opt{unexpanded} option the result is:
+\begin{resultbox}
+\newcommand{\testa}{sample}
+\newcommand{\testb}{\testa\ test}
+\makefirstuc{\testb} / \xmakefirstuc{\testb} /
+\emakefirstuc{\testb} / \MFUsentencecase{\testb}
+\end{resultbox}
+Note that this is different from the result in earlier versions of
+\sty{mfirstuc}.
+\begin{codebox}
+\cmd{usepackage}\marg{mfirstuc}[=v2.07]
+\cmd{newcommand}\marg{\cmd{testa}}\marg{sample}
+\cmd{newcommand}\marg{\cmd{testb}}\marg{\cmd{testa}\cmd{ }test}
+\cbeg{document}
+\gls{makefirstuc}\marg{\cmd{testb}} / \gls{xmakefirstuc}\marg{\cmd{testb}} /
+\gls{emakefirstuc}\marg{\cmd{testb}}
+\cend{document}
+\end{codebox}
+This produces:
+\begin{resultbox}
+SAMPLE TEST / SAMPLE test / Sample test
+\end{resultbox}
+If this old result is required, either use rollback or try
+the \opt{grabfirst} option.
+
+Argument expansion with \idxpl{mapping} (and the default
+\opt{unexpanded} option):
+\begin{codebox}
+\cmd{newrobustcmd}\marg{\cmd{secref}}[1]\marg{section\glstildechar\cmd{ref}\marg{\#1}}
+\cmd{newrobustcmd}\marg{\cmd{Secref}}[1]\marg{Section\glstildechar\cmd{ref}\marg{\#1}}
+\gls{MFUaddmap}\marg{\cmd{secref}}\marg{\cmd{Secref}}
+\cmd{newcommand}\marg{\cmd{testa}}\marg{\cmd{secref}\marg{sec:sentencecase}}
+\cmd{newcommand}\marg{\cmd{testb}}\marg{\cmd{testa}\cmd{ }example}
+\gls{makefirstuc}\marg{\cmd{testb}} / \gls{xmakefirstuc}\marg{\cmd{testb}} /
+\gls{emakefirstuc}\marg{\cmd{testb}} / \gls{MFUsentencecase}\marg{\cmd{testb}}
+\end{codebox}
+\begin{resultbox}
+\newrobustcmd{\secref}[1]{section~\ref{#1}}
+\newrobustcmd{\Secref}[1]{Section~\ref{#1}}
+\MFUaddmap{\secref}{\Secref}
+\newcommand{\testa}{\secref{sec:sentencecase}}
+\newcommand{\testb}{\testa\ example}
+\makefirstuc{\testb} / \xmakefirstuc{\testb} /
+\emakefirstuc{\testb} / \MFUsentencecase{\testb}
+\end{resultbox}
+
+\section{Sentence Case Commands}
+\label{sec:sentencecasecmds}
+
+\cmddef{MFUsentencecase}
+This simply uses \gls{texttitlecasefirst:n}, which is provided by
+the \LaTeX3 kernel. Note that this fully expands the argument.
+If you use this command, ensure that your \idxpl{semanticcommand} are
+robust. For example:
+\begin{codebox}
+\cmd{newrobustcmd}\marg{\cmd{alert}}[1]\marg{\cmd{textcolor}\marg{red}\marg{\cmd{textbf}\marg{\#1}}}
+\gls{MFUsentencecase}\marg{\cmd{alert}\marg{sample} text}
+\end{codebox}
+\begin{resultbox}
+\newrobustcmd{\alert}[1]{\textcolor{red}{\textbf{#1}}}
+\MFUsentencecase{\alert{sample} text}
+\end{resultbox}
+Note that the following will fail:
+\begin{badcodebox}
+\cmd{newcommand}\marg{\cmd{alert}}[1]\marg{\cmd{textcolor}\marg{red}\marg{\cmd{textbf}\marg{\#1}}}
+\gls{MFUsentencecase}\marg{\cmd{alert}\marg{sample} text}
+\end{badcodebox}
+This is because the expansion that's performed before the case-change will result in:
+\begin{badcodebox}
+\cmd{textcolor}\marg{Red}\marg{\cmd{textbf}\marg{sample}} text
+\end{badcodebox}
+This triggers an error since \code{Red} isn't a recognised colour
+name.
+
+\cmddef{makefirstuc}
+This is the original command provided by \sty+{mfirstuc}, which was
+written to assist sentence-casing in the \sty{glossaries} package
+and had to take markup into account. It parses its argument to try
+to determine which part needs the case-change. The actual
+case-change is performed by \gls{glsmakefirstuc}.
+
+As from v2.08, the definition of \gls{makefirstuc} has been updated to use \LaTeX3
+code, but the argument is still parsed, which allows for non-robust
+\idxpl{semanticcommand}, and now also takes \idxpl{blocker} and \idxpl{mapping} into
+account. For example:
+\begin{codebox}
+\cmd{newcommand}\marg{\cmd{alert}}[1]\marg{\cmd{textcolor}\marg{red}\marg{\cmd{textbf}\marg{\#1}}}
+\gls{makefirstuc}\marg{\cmd{alert}\marg{sample} text}
+\end{codebox}
+\begin{resultbox}
+\newcommand{\alert}[1]{\textcolor{red}{\textbf{#1}}}
+\makefirstuc{\alert{sample} text}
+\end{resultbox}
+
+The rules used when parsing \code{\gls{makefirstuc}\margm{text}} are as follows:
+\begin{enumerate}
+\item if \meta{text} is empty do nothing;
-\begin{important}
-The commands described here all have limitations. To minimise
-problems, use text-block style semantic commands with one argument
-(the text that requires case-changing), and avoid scoped
-declarations.
-\end{important}
+\item if \meta{text} consists of a single item or starts
+with a group do \code{\gls{glsmakefirstuc}\margm{text}};
-Here are some examples of semantic commands:
-\begin{enumerate}
-\item Quoted material:
-\begin{verbatim}
-\newcommand{\qt}[1]{``#1''}
-\end{verbatim}
-(or use the \styfmt{csquotes} package). With this, the following
-works:
-\begin{verbatim}
-\makefirstuc{\qt{word}}
-\end{verbatim}
-This produces:
-\begin{display}
-\makefirstuc{\qt{word}}
-\end{display}
-Whereas
-\begin{verbatim}
-\makefirstuc{``word''}
-\end{verbatim}
-fails (no case-change and double open quote becomes two single open
-quotes):
-\begin{display}
-\makefirstuc{``word''}
-\end{display}
-
-\item Font styles or colours:
-\begin{verbatim}
-\newcommand*{\alert}[1]{\textcolor{red}{#1}}
-\end{verbatim}
-Now the following is possible:
-\begin{verbatim}
-\makefirstuc{\alert{word}}
-\end{verbatim}
-This produces
-\begin{display}
-\newcommand*{\alert}[1]{\textcolor{red}{#1}}%
-\makefirstuc{\alert{word}}
-\end{display}
-Note that \verb|\makefirstuc{\textcolor{red}{word}}| fails
-(with an error) because the case-changing interferes with the label.
-\end{enumerate}
+\item if \meta{text} starts with a command \meta{cs}:
-Define these semantic commands robustly if you intend using
-any of the commands that fully expand their argument
-(\cs{emakefirstuc}, \cs{ecapitalisewords} and
-\cs{ecapitalisefmtwords}).
-
-\chapter{Capitalising the First Letter of a Word}
-\label{sec:makefirstuc}
-
-A simple word can be capitalised just using the standard \LaTeX\
-upper casing command. For example,
-\begin{verbatim}
-\MakeUppercase word
-\end{verbatim}
-but for commands like \cs{Gls} the word may be embedded within the
-argument of another command, such as a~font changing command. This
-makes things more complicated for a~general purpose solution, so
-the \styfmt{mfirstuc} package provides:
-\begin{definition}[\DescribeMacro{\makefirstuc}]
-\cs{makefirstuc}\marg{stuff}
-\end{definition}
-This makes the first object of
-\meta{stuff} upper case unless \meta{stuff} starts with a control
-sequence followed by a non-empty group, in which case the first
-object in the group is converted to upper case.
-\textbf{No expansion is performed on the argument.}
-
-If \meta{stuff} starts with punctuation that should be skipped over,
-use:
-\begin{definition}[\DescribeMacro\MFUskippunc]
-\cs{MFUskippunc}\marg{punctuation}
-\end{definition}
+ \begin{enumerate}
+ \item if \meta{cs} is \gls{protect}, skip it and continue to
+ the next step where the command \meta{cs} under inspection
+ is now the one that follows \gls{protect}:
-\begin{important}
-If \meta{stuff} starts with a control sequence that takes more than
-one argument, the case-changing will always be applied to the
-\emph{first} argument. If the text that requires the case change is
-in one of the other arguments, you must hide the earlier arguments
-in a wrapper command. For example, instead of \verb|\textcolor{red}{text}|
-you need to define, say, \verb|\red| as \verb|\color{red}| and use
-\verb|\red{text}|.
-\end{important}
+ \item if \meta{cs} has been identified as a \idx{blocker}, just do
+ \meta{text} (that is, no case-change is applied);
-Examples:
-\begin{itemize}
-\item |\makefirstuc{abc}| produces \makefirstuc{abc}.
+ \item if \meta{cs} isn't followed by a group then do
+ \code{\gls{glsmakefirstuc}\margm{text}};
-\item |\makefirstuc{\emph{abc}}| produces \makefirstuc{\emph{abc}}
-(\ics{MakeUppercase} has been applied to the letter \qt{a} rather
-than \cs{emph}). Note however that
-\begin{verbatim}
-\makefirstuc{{\em abc}}
-\end{verbatim}
-produces \makefirstuc{{\em abc}} (first object is |{\em abc}| so
-this is equivalent to |\MakeUppercase{\em abc}|), and
-\begin{verbatim}
-{\makefirstuc{\em abc}}
-\end{verbatim}
-produces {\makefirstuc{\em abc}} (|\em| doesn't have an argument
-therefore first object is |\em| and so is equivalent to
-|{\MakeUppercase{\em}abc}|).
+ \item otherwise assume the format is \code{\meta{cs}\margm{arg}\meta{following}}
+ (where \meta{following} may be empty) and then:
-\item |\makefirstuc{{\'a}bc}| produces \makefirstuc{{\'a}bc}.
+ \begin{enumerate}
+ \item if \meta{cs} has been \idxc{mapping}{mapped} to
+ \meta{Cs} then do \code{\meta{Cs}\margm{arg}\meta{following}};
-\item |\makefirstuc{\ae bc}| produces \makefirstuc{\ae bc}.
+ \item if \meta{cs} has been identified as an \idx{exclusion},
+ do \code{\meta{cs}\margm{arg}\gls{makefirstuc}\margm{following}};
-\item |\makefirstuc{{\ae}bc}| produces \makefirstuc{{\ae}bc}.
+ \item otherwise do \code{\meta{cs}\marg{\gls{makefirstuc}\margm{arg}}\meta{following}}.
+ \end{enumerate}
-\item |\makefirstuc{{ä}bc}| produces \makefirstuc{{ä}bc}.
+ \end{enumerate}
-\item |\makefirstuc{\MFUskippunc{'}tis the season}| produces
-\makefirstuc{\MFUskippunc{'}tis the season}.
+\item otherwise do \code{\gls{glsmakefirstuc}\margm{text}}.
+\end{enumerate}
-\end{itemize}
+Note that the above algorithm uses recursion. The termination points
+are: don't implement a change, replace a command with another
+command, or apply the case-change via \gls{glsmakefirstuc}.
+
+For convenience, the following commands are also provided:
+\cmddef{xmakefirstuc}
+This is simply a shortcut for:
+\begin{compactcodebox}
+\cmd{expandafter}\gls{makefirstuc}\cmd{expandafter}\margm{text}
+\end{compactcodebox}
+This ensures the first token in \meta{text} is expanded before being
+passed to \gls{makefirstuc}.
+
+\cmddef{emakefirstuc}
+This fully expands its argument before passing it to
+\gls{makefirstuc}. For example:
+\begin{codebox}
+\cmd{newcommand}\marg{\cmd{test}}[1]\marg{sample \#1}
+\cmd{newcommand}\marg{\cmd{tmp}}\marg{\cmd{test}\marg{text}}
+\gls{makefirstuc}\marg{\cmd{tmp}} /
+\gls{xmakefirstuc}\marg{\cmd{tmp}} /
+\gls{emakefirstuc}\marg{\cmd{tmp}}
+\end{codebox}
+\begin{resultbox}
+\newcommand{\test}[1]{sample #1}
+\newcommand{\tmp}{\test{text}}
+\makefirstuc{\tmp} /
+\xmakefirstuc{\tmp} /
+\emakefirstuc{\tmp}
+\end{resultbox}
+If you don't have any mappings or blockers set up, it's simpler to
+use \gls{MFUsentencecase} instead of \gls{emakefirstuc}.
-Note that non-Latin or accented characters appearing at the
-start of the text should be placed in a group (even if you are
-using the \sty{inputenc} package). The reason for this restriction
-is detailed in \sectionref{sec:utf8}.
+\begin{important}
+With \gls{emakefirstuc}, mappings and blockers will only be
+detected if they are robust or protected, otherwise they will expand too soon to
+be detected.
+\end{important}
-\textbf{New to version 2.04:} There is now limited support for
-UTF-8 characters with the \sty{inputenc} package, provided that
-you load \sty{datatool-base} (at least v2.24) before
-\styfmt{mfirstuc} (\sty{datatool-base} is loaded automatically with newer versions
-of \sty{glossaries}). If available
-\sty{mfirstuc} will now use \sty{datatool-base}'s
-\ics{dtl@getfirst@UTFviii} command which is still experimental.
-See the \styfmt{datatool} manual for further details.
+\cmddef{glsmakefirstuc}
+This command is used by \gls{makefirstuc} to perform the
+case-change. The \qt{gls} prefix is for historical reasons as the original code
+was part of the \sty{glossaries} package. With the default
+\opt{unexpanded} option, this command is defined as:
+\begin{compactcodebox}
+\gls{MFUsentencecase}\marg{\gls+{unexpanded}\margm{text}}
+\end{compactcodebox}
+The use of \gls{unexpanded} inhibits the expansion of \meta{text}
+that would otherwise occur. This allows \gls{makefirstuc} to
+maintain as much backward-compatibility with version 2.07 as
+possible. This is particularly important when using the
+\sty{glossaries} package with a style that automatically converts
+the description to \idx{sentence-case}, as there may well be
+documents with complex descriptions that contain fragile commands.
+
+The \opt{expanded} package option will redefine \gls{glsmakefirstuc}
+to use \gls{MFUsentencecase} without \gls{unexpanded}. The
+\opt{grabfirst} package option will redefine \gls{glsmakefirstuc}
+to use \gls{mfugrabfirstuc} to emulates the behaviour of
+\gls{glsmakefirstuc} in v2.07 and below without using rollback.
+
+\cmddef{mfugrabfirstuc}
+This robust command is provided to emulate v2.07 and its use is discouraged.
+Note that you may still have different results compared to v2.07, so
+you may need to use rollback instead. (Note that the \opt{grabfirst} option
+additionally redefines \gls{mfirstucMakeUppercase} to
+\gls{MakeUppercase}, which you will also need.)
+
+This applies \gls{mfirstucMakeUppercase} to the first token in \meta{text}
+and leaves the remainder unchanged. This won't work if \meta{text}
+starts with a \gls{utf8} character unless you use \XeLaTeX\ or
+\LuaLaTeX, so avoid using this method where possible. For example:
+\begin{codebox}
+\cmd{renewcommand}\marg{\gls{mfirstucMakeUppercase}}[1]\marg{\comment{}
+ \gls{MakeUppercase}\marg{\#1}\comment{}
+}
+\gls{mfugrabfirstuc}\marg{sample}
+\end{codebox}
+This is equivalent to:
+\begin{codebox}
+\gls{mfirstucMakeUppercase}\marg{s}ample
+\end{codebox}
+Whereas
+\begin{unicodebox}
+\cmd{renewcommand}\marg{\gls{mfirstucMakeUppercase}}[1]\marg{\comment{}
+ \gls{MakeUppercase}\marg{\#1}\comment{}
+}
+\gls{mfugrabfirstuc}\marg{\'elite}
+\end{unicodebox}
+only works with \XeLaTeX\ or \LuaLaTeX.
-\begin{verbatim}
-\documentclass{article}
+\begin{warning}
+As with earlier implementations of \gls{makefirstuc} that
+tried to only apply the case-change to the first token,
+this won't produce the desired result if the argument starts with a
+punctuation character.
+\end{warning}
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
+For example:
+\begin{codebox}
+\gls{mfugrabfirstuc}\marg{`sample'}
+\end{codebox}
+This is equivalent to:
+\begin{compactcodebox}
+\gls{mfirstucMakeUppercase}\marg{`}sample'
+\end{compactcodebox}
+so no case-change is applied.
+
+\section{Exclusions}
+\label{sec:exclusions}
+
+\begin{information}
+Exclusions will apply to all \LaTeX3 case-changing commands, so will
+also affect \gls{mfirstucMakeUppercase}, but this is generally
+desirable.
+\end{information}
+
+\cmddef{MFUexcl}
+Identifies the text-block command \code{\meta{cs}\margm{arg}} as
+an \idx{exclusion}. That is, one that should have its argument
+excluded from a case-change.
+
+Internally, \gls{MFUexcl} adds \meta{cs} to \LaTeX3's exclusion list
+\gls{ltextcaseexcludeargtl}, which means that \gls{MFUsentencecase}
+will skip the command and its argument and apply the case-change to
+the following content. Some common commands (\gls{begin} \gls{cite}
+\gls{end} \gls{label} and \gls{ref}) are automatically added by the
+\LaTeX3 kernel.
+The exclusions are also recognised by \gls{makefirstuc} when it
+parses its argument.
+
+\begin{information}
+The command \gls{NoCaseChange} is automatically treated as an
+exclusion by the \LaTeX3 case-changing commands with recent \LaTeX\
+kernels. You may want to add it as a blocker for \gls{makefirstuc}
+and keep \gls{MFUskippunc} for exclusions.
+
+Note that \gls{ensuremath} is added as an exclusion by \sty{mfirstuc} otherwise
+\gls{makefirstuc} will pass its argument to \gls{MFUsentencecase},
+which will cause a problem.
+\end{information}
+
+Another way of identifying content that should be excluded with
+\gls{makefirstuc} is to encapsulate it with:
+\cmddef{MFUskippunc}
+This is a robust command that simply does its argument and is
+automatically added to the exclusion list. This may be used for
+cases where the excluded command isn't a simple text-block command
+that only has one mandatory argument or where leading punctuation is
+followed by a \idx{blocker} or \idx{mapping}.
+
+The command name stems from earlier versions where leading
+\idx{punctuation} needed to be skipped. This is no longer necessary,
+but the command remains as a general purpose robust exclusion command.
+
+For example, \gls{glsadd} (provided by \sty{glossaries}) should have
+its argument skipped, since its argument is a label, so the
+following will ensure that \code{\gls{glsadd}\margm{label}} will be
+skipped, and the case-change will be applied to the following text
+for both \gls{MFUsentencecase} and \gls{makefirstuc}.
+\begin{codebox}
+\gls{MFUexcl}\marg{\gls{glsadd}}
+\gls{makefirstuc}\marg{\gls{glsadd}\marg{ex}some text}
+\gls{MFUsentencecase}\marg{\gls{glsadd}\marg{ex}some text}
+\end{codebox}
+This will be equivalent to:
+\begin{compactcodebox}
+\gls{glsadd}\marg{ex}Some text
+\end{compactcodebox}
+However, \gls{glsadd} can take an optional argument which, if
+present, will cause a problem. For example:
+\begin{badcodebox}
+\gls{MFUexcl}\marg{\gls{glsadd}}
+\gls{makefirstuc}\marg{\gls{glsadd}\oarg{counter=section}\marg{ex}some text}
+\gls{MFUsentencecase}\marg{\gls{glsadd}\oarg{counter=section}\marg{ex}some text}
+\end{badcodebox}
+Both commands will cause the following error:
+\begin{transcript}
+! Package glossaries Error: Glossary entry `\nlctopensqbracket' has not been defined.
+\end{transcript}
+This is because the open square bracket is assumed to be the
+argument of \gls{glsadd}, so this effectively becomes:
+\begin{compactcodebox}
+\gls{glsadd}\marg{\nlctopensqbracket}Counter=section\nlctclosesqbracket exsome text
+\gls{glsadd}\marg{\nlctopensqbracket}Counter=section\nlctclosesqbracket exsome text
+\end{compactcodebox}
+which means that now \code{\nlctopensqbracket} is considered the label and everything
+that follows is just text.
+
+For this situation to work, you need to encapsulate the problematic
+content with an exclusion command, such as \gls{NoCaseChange} or \gls{MFUskippunc}:
+\begin{codebox}
+\gls{makefirstuc}\marg{\gls{MFUskippunc}\marg{\gls{glsadd}\oarg{counter=section}\marg{ex}}some text}
+\end{codebox}
+This will also work with \gls{MFUsentencecase} because
+\sty{mfirstuc} automatically adds \gls{MFUskippunc} to the exclusion
+list.
+
+\begin{information}
+As from \sty{glossaries} v4.50, \gls{glsadd} is automatically added
+as an exclusion, but be aware of the problem with using the optional
+argument, as described above.
+\end{information}
+
+\Idx{punctuation} characters are skipped by \gls{MFUsentencecase}.
+For example:
+\begin{coderesult}
+\gls{MFUsentencecase}\marg{`word'}
+\tcblower
+\MFUsentencecase{`word'}
+\end{coderesult}
+However, leading \idx{punctuation} will result in \gls{makefirstuc}
+passing its entire argument to \gls{MFUsentencecase} (since the
+argument doesn't start with \code{\meta{cs}\margm{arg}}), which
+means that \gls{makefirstuc} won't detect any \idx{blocker} or
+\idx{mapping}.
-\usepackage{datatool-base}[2016/01/12]% v2.24+
-\usepackage{mfirstuc}
+For example:
+\begin{codebox}
+\gls{MFUblocker}\marg{\gls+{nameref}}
+\cmd{newcommand}*\marg{\cmd{qt}}[1]\marg{``\#1''}
+\gls{makefirstuc}\marg{``\gls{nameref}\marg{sec:sentencecase} section''} /
+\gls{makefirstuc}\marg{\gls{MFUskippunc}\marg{``}\gls{nameref}\marg{sec:sentencecase} section''} /
+\gls{makefirstuc}\marg{\cmd{qt}\marg{\gls{nameref}\marg{sec:sentencecase} section}}
+\end{codebox}
+\begin{resultbox}
+\MFUblocker{\nameref}
+\makefirstuc{``\nameref{sec:sentencecase} section''} /
+\makefirstuc{\MFUskippunc{``}\nameref{sec:sentencecase} section''} /
+\makefirstuc{\qt{\nameref{sec:sentencecase} section}}
+\end{resultbox}
+If you are using a package such as \sty{csquotes}, bear in mind that
+if the command is followed by an asterisk (a \qt{starred command})
+or an optional argument then it won't fit the expected
+\code{\meta{cs}\margm{arg}} format and unexpected results will occur.
+
+\section{Blockers}
+\label{sec:blockers}
+
+A \idx{blocker} is a command that prevents any case-change if it occurs at
+the start of \gls{makefirstuc} or after the argument of an
+\idx{exclusion}. Blockers are not supported by
+\gls{MFUsentencecase} but are instead treated as exclusions.
+
+\cmddef{MFUblocker}
+Identifies \meta{cs} as a \idx{blocker}. Since \idxpl{blocker}
+aren't supported by \gls{MFUsentencecase}, this automatically
+implements \code{\gls{MFUexcl}\margm{cs}} to protect its argument
+from \gls{MFUsentencecase}, but it won't prevent subsequent content
+from being changed.
-\begin{document}
-\makefirstuc{élite}
-\end{document}
-\end{verbatim}
-(Package ordering is important.)
+For example:
+\begin{codebox}
+\gls{MFUblocker}\marg{\gls+{nameref}}
+\gls{makefirstuc}\marg{\gls{nameref}\marg{sec:sentencecase} section}
+\end{codebox}
+\begin{resultbox}
+\MFUblocker{\nameref}
+\makefirstuc{\nameref{sec:sentencecase} section}
+\end{resultbox}
+
+In the following, the \idx{blocker} isn't detected by
+\gls{makefirstuc} because the content doesn't start with
+\code{\meta{cs}\margm{arg}} or
+\code{\cmd{protect}\meta{cs}\margm{arg}}. This means that the entire
+content is passed to \gls{MFUsentencecase} which treats
+\gls{nameref} as an \idx{exclusion}:
+\begin{codebox}
+\gls{MFUblocker}\marg{\gls{nameref}}
+\gls{makefirstuc}\marg{\cmd{relax}\gls{nameref}\marg{sec:sentencecase} section}
+\end{codebox}
+\begin{resultbox}
+\MFUblocker{\nameref}
+\makefirstuc{\relax\nameref{sec:sentencecase} section}
+\end{resultbox}
\begin{important}
-In version 1.02 of \styfmt{mfirstuc}, a bug fix resulted in a change
-in output if the first object is a control sequence followed by
-an empty group. Prior to version 1.02, |\makefirstuc{\ae{}bc}|
-produced \ae Bc. However as from version 1.02, it now produces
-\AE bc.
+If a \idxc{blocker}{blocking command} is inside the definition of
+another command, it won't be visible to \gls{makefirstuc} unless
+the other command is expanded before applying \gls{makefirstuc}.
+For example, by using \gls{xmakefirstuc} or \gls{emakefirstuc}.
+If it doesn't get expanded until after it has been passed to
+\gls{MFUsentencecase}, then it will be treated as an \idx{exclusion}
+instead.
\end{important}
-Note also that
-\begin{verbatim}
-\newcommand{\abc}{abc}
-\makefirstuc{\abc}
-\end{verbatim}
-produces: ABC. This is because the first object in the argument of
-\cs{makefirstuc} is \cs{abc}, so it does |\MakeUppercase{\abc}|.
-Whereas:
-\begin{verbatim}
-\newcommand{\abc}{abc}
-\expandafter\makefirstuc\expandafter{\abc}
-\end{verbatim}
-produces: Abc. There is a short cut command which will do this:
-\begin{definition}[\DescribeMacro{\xmakefirstuc}]
-\cs{xmakefirstuc}\marg{stuff}
-\end{definition}
-This is equivalent to \cs{expandafter}\cs{makefirstuc}\cs{expandafter}\marg{stuff}. So
-\begin{verbatim}
-\newcommand{\abc}{abc}
-\xmakefirstuc{\abc}
-\end{verbatim}
-produces:
-\newcommand{\abc}{abc}%
-\xmakefirstuc{\abc}.
+Recent \LaTeX\ kernels provide \gls{NoCaseChange} and automatically
+add it as an \idx{exclusion}. You may want to add it as a
+\idx{blocker} for \gls{makefirstuc}. For example:
+\begin{codebox}
+\gls{makefirstuc}\marg{\gls{ensuremath}\marg{\cmd{alpha}}-particle} /
+\gls{makefirstuc}\marg{\idx{dollar}\cmd{alpha}\idx{dollar}-particle} /
+\gls{MFUsentencecase}\marg{\gls{ensuremath}\marg{\cmd{alpha}}-particle} /
+\gls{MFUsentencecase}\marg{\idx{dollar}\cmd{alpha}\idx{dollar}-particle}
+\codepar
+\gls{MFUblocker}\marg{\gls{NoCaseChange}}\comment{}
+\gls{makefirstuc}\marg{\gls{ensuremath}\marg{\cmd{alpha}}-particle} /
+\gls{makefirstuc}\marg{\gls{NoCaseChange}\marg{\idx{dollar}\cmd{alpha}\idx{dollar}}-particle} /
+\gls{MFUsentencecase}\marg{\gls{ensuremath}\marg{\cmd{alpha}}-particle} /
+\gls{MFUsentencecase}\marg{\gls{NoCaseChange}\marg{\idx{dollar}\cmd{alpha}\idx{dollar}}-particle}
+\end{codebox}
+Note that \sty{mfirstuc} adds \gls{ensuremath} as an exclusion so
+\gls{makefirstuc} will skip it. Whereas the example above that
+starts with \idx{dollar} will have the entire argument passed to
+\gls{MFUsentencecase}, which skips the maths content.
+In the first paragraph, \gls{NoCaseChange} is only an
+\idx{exclusion}, but in the second paragraph it's also a
+\idx{blocker}.
+\begin{resultbox}
+Exclusion:
+\makefirstuc{\ensuremath{\alpha}-particle} /
+\makefirstuc{$\alpha$-particle} /
+\MFUsentencecase{\ensuremath{\alpha}-particle} /
+\MFUsentencecase{$\alpha$-particle}
+
+Blocker:
+\MFUblocker{\NoCaseChange}%
+\makefirstuc{\ensuremath{\alpha}-particle} /
+\makefirstuc{\NoCaseChange{$\alpha$}-particle} /
+\MFUsentencecase{\ensuremath{\alpha}-particle} /
+\MFUsentencecase{\NoCaseChange{$\alpha$}-particle}
+\end{resultbox}
+
+\section{Mappings}
+\label{sec:mappings}
+
+A \idx{mapping} indicates that one command should be substituted for
+another, instead of applying a case-change. The assumption is that
+the substituted command should perform the case-change instead.
+\Idxpl{mapping} are not supported by \gls{MFUsentencecase}
+but are instead treated as exclusions.
+
+\cmddef{MFUaddmap}
+Identifies a mapping which indicates that \gls{makefirstuc} should
+replace \meta{cs1} with \meta{cs2} and not apply a case-change.
+This automatically implements:
+\begin{compactcodebox}
+\gls{MFUexcl}\margm{cs1}\gls{MFUblocker}\margm{cs2}
+\end{compactcodebox}
+This means that \meta{cs2} is identified as a \idx{blocker} (since
+it's assumed to already be a \idx{sentence-case} command) and
+\meta{cs1} is identified as an \idx{exclusion} to protect its
+argument from \gls{MFUsentencecase}, which doesn't support
+\idxpl{mapping}.
+
+\begin{information}
+If either \meta{cs1} or \meta{cs2} is empty, no mapping is established, but an
+\idx{exclusion} or \idx{blocker} will be set for the non-empty argument.
+\end{information}
+
+For example (with \sty{glossaries}):
+\begin{codebox}
+\gls{MFUaddmap}\marg{\gls+{gls}}\marg{\gls+{Gls}}
+\gls{makefirstuc}\marg{\gls{gls}\marg{ex} some text}
+\end{codebox}
+This will be converted to:
+\begin{compactcodebox}
+\gls{Gls}\marg{ex} some text
+\end{compactcodebox}
+Note that this and similar \idxpl{mapping} are automatically added
+in \sty{glossaries} v4.50+ and \sty{glossaries-extra} v1.49+.
\begin{important}
-\cs{xmakefirstuc} only performs one level expansion on the
-\emph{first} object in its argument. It does not fully expand the entire
-argument.
+If a \idxc{mapping}{mapped command} is inside the definition of
+another command, it won't be visible to \gls{makefirstuc} unless
+the other command is expanded before applying \gls{makefirstuc}.
+For example, by using \gls{xmakefirstuc} or \gls{emakefirstuc}.
+If it doesn't get expanded until after it has been passed to
+\gls{MFUsentencecase}, then it will be treated as an \idx{exclusion}
+instead.
\end{important}
-As from version 1.10, there is now a command that fully expands the
-entire argument before applying \cs{makefirstuc}:
-\begin{definition}[\DescribeMacro\emakefirstuc]
-\cs{emakefirstuc}\marg{text}
-\end{definition}
+\section{Package Options}
+\label{sec:pkgoptions}
-Examples:
-\begin{verbatim}
-\newcommand{\abc}{\xyz a}
-\newcommand{\xyz}{xyz}
-No expansion: \makefirstuc{\abc}.
-First object one-level expansion: \xmakefirstuc{\abc}.
-Fully expanded: \emakefirstuc{\abc}.
-\end{verbatim}
-produces:
-\renewcommand{\abc}{\xyz a}%
-\newcommand{\xyz}{xyz}
-No expansion: \makefirstuc{\abc}.
-First object one-level expansion: \xmakefirstuc{\abc}.
-Fully expanded: \emakefirstuc{\abc}.
-
-If you use \styfmt{mfirstuc} without the \sty{glossaries} package,
-the standard \cs{MakeUppercase} command is used. If used with
-\sty{glossaries}, \ics{MakeTextUppercase} (defined by the \sty{textcase}
-package) is used instead. If you are using \styfmt{mfirstuc}
-without the \styfmt{glossaries} package and want to use
-\ics{MakeTextUppercase} instead, you can redefine
-\begin{definition}[\DescribeMacro\glsmakefirstuc]
-\cs{glsmakefirstuc}\marg{text}
-\end{definition}
-For example:
-\begin{verbatim}
-\renewcommand{\glsmakefirstuc}[1]{\MakeTextUppercase #1}
-\end{verbatim}
-Remember to also load \sty{textcase} (\styfmt{glossaries} loads this
-automatically).
+\optiondef{expanded}
+Redefines \gls{glsmakefirstuc} to simply use \gls{MFUsentencecase}.
-\chapter{Capitalise the First Letter of Each Word in a Phrase or Sentence (Title Case)}
+\optiondef{unexpanded}
+Redefines \gls{glsmakefirstuc} to use \gls{MFUsentencecase}
+without expanding its argument.
+
+\optiondef{grabfirst}
+Redefines \gls{glsmakefirstuc} to use \gls{mfugrabfirstuc} and also
+redefines \gls{mfirstucMakeUppercase} to use \gls{MakeUppercase}.
+
+This option is best avoided and is only provided to emulate the v2.07
+behaviour of \gls{glsmakefirstuc}. However, you may still have
+different results compared to v2.07, so you may need to use rollback
+instead.
+
+\chapter{Title-Case}
\label{sec:capitalisewords}
-New to mfirstuc v1.06:
-\begin{definition}[\DescribeMacro{\capitalisewords}]
-\cs{capitalisewords}\marg{text}
-\end{definition}
-This command applies \ics{makefirstuc} to each word in \meta{text}
+The \idx{title-case} commands are designed to convert the first letter of each
+word in a phrase to uppercase. These commands are robust.
+\cmddef{capitalisewords}
+This command applies a \idx{sentence-case} command to each word in \meta{text}
where the space character is used as the word separator. Note that
-it has to be a plain space character, not another form of space,
-such as \verb|~| or \cs{space}. Note that no expansion is performed
-on \meta{text}. See \sectionref{sec:nocap} for excluding
-words (such as \qt{of}) from the case-changing.
-
-The actual capitalisation of each word is done using
-\begin{definition}[\DescribeMacro\MFUcapwordfirstuc]
-\cs{MFUcapwordfirstuc}\marg{word}
-\end{definition}
-This just does \cs{makefirstuc}\marg{word} by default.
-There's a conditional that determines whether or not to consider a
-hyphen a word break:
-\begin{definition}[\DescribeMacro\ifMFUhyphen]
-\cs{ifMFUhyphen}
-\end{definition}
-
-If you want to title case each part of
-a compound word containing hyphens, you can enable this using
-\begin{definition}[\DescribeMacro\MFUhyphentrue]
-\cs{MFUhyphentrue}
-\end{definition}
-or switch it back off again using:
-\begin{definition}[\DescribeMacro\MFUhyphenfalse]
-\cs{MFUhyphenfalse}
-\end{definition}
-Compare
-\begin{verbatim}
-\capitalisewords{server-side includes}
-\end{verbatim}
-which produces:
-\begin{display}
-\capitalisewords{server-side includes}
-\end{display}
-with
-\begin{verbatim}
-\MFUhyphentrue
-\capitalisewords{server-side includes}
-\end{verbatim}
-which produces:
-\begin{display}
-\MFUhyphentrue
-\capitalisewords{server-side includes}
-\end{display}
-Note that this won't apply exceptions to each part of the hyphenated
-word.
-
-For other punctuation you need to markup the character with:
-\begin{definition}[\DescribeMacro\MFUwordbreak]
-\cs{MFUwordbreak}\marg{punctuation}
-\end{definition}
+it has to be an ordinary space character, not another form of space,
+such as \idx{nbsp} or \gls{space}. Note that no expansion is performed
+on \meta{text}.
For example:
-\begin{verbatim}
-\capitalisewords{a big\MFUwordbreak{/}small idea}
-\end{verbatim}
-which produces:
-\begin{display}
+\begin{coderesult}
+\gls{capitalisewords}\marg{a sample phrase}
+\tcblower
+\capitalisewords{a sample phrase}
+\end{coderesult}
+See \sectionref{sec:nocap} for excluding words (such as \qt{of})
+from the case-changing.
+
+\begin{information}
+This isn't the same as the \LaTeX3 command \gls{texttitlecase:n},
+which converts the first letter to \idx{uppercase} and all other
+letters to \idx{lowercase}.
+\end{information}
+
+For convenience, there are shortcut commands if expansion is
+required before parsing the argument:
+\cmddef{xcapitalisewords}
+This is a shortcut for:
+\begin{compactcodebox}
+\cmd{expandafter}\gls{capitalisewords}\cmd{expandafter}\margm{text}
+\end{compactcodebox}
+\cmddef{ecapitalisewords}
+This fully expands \meta{text} before passing it to
+\gls{capitalisewords}.
+
+The parser used by \gls{capitalisewords} first splits up the text on
+each space character. Each of these space-separated words may
+actually be a compound, so further parsing is performed on each
+\qt{word}. The divisions within the compound word should be marked
+up with:
+\cmddef{MFUwordbreak}
+For example:
+\begin{coderesult}
+\gls{capitalisewords}\marg{a
+big\gls{MFUwordbreak}\marg{/}small idea}
+\tcblower
\capitalisewords{a big\MFUwordbreak{/}small idea}
-\end{display}
-In this case, exceptions are applied. For example, if
-\sty{mfirstuc-english} is loaded then:
-\begin{verbatim}
-\capitalisewords{one and\MFUwordbreak{/}or another}
-\end{verbatim}
-produces:
-\begin{display}
-\MFUnocap{and}\MFUnocap{or}%
-\capitalisewords{one and\MFUwordbreak{/}or another}
-\end{display}
-Note that you can't hide \cs{MFUwordbreak} inside a command or group.
+\end{coderesult}
+Each sub-word within the compound word is encapsulated with:
+\cmddef{MFUcapword}
+Since it's inconvenient to have to markup every hyphen,
+\gls{MFUcapword} can be enabled to check for hyphens.
+
+\cmddef{ifMFUhyphen}
+This conditional determines whether or not \gls{MFUcapword} should
+consider a hyphen a word break. If this conditional is true, then
+\gls{MFUcapword} will encapsulate its argument with:
+\cmddef{MFUhyphencapword}
+This will parse \meta{text} for hyphen characters and apply the case
+change to each hyphen-separated word. Otherwise \gls{MFUcapword}
+will treat its argument as a single word.
+
+The conditional can be set to true with:
+\cmddef{MFUhyphentrue}
+and switched back off with:
+\cmddef{MFUhyphenfalse}
-Exceptions aren't applied if \cs{MFUwordbreak} occurs before the
-first space. For example:
-\begin{verbatim}
-\MFUnocap{a}\MFUnocap{the}%
-\capitalisewords{a\MFUwordbreak{/}the something}
-\end{verbatim}
-produces:
-\begin{display}
-\MFUnocap{a}\MFUnocap{the}%
-\capitalisewords{a\MFUwordbreak{/}the something}
-\end{display}
+For example:
+\begin{codebox}
+\gls{capitalisewords}\marg{server-side includes} /
+\gls{MFUhyphentrue}
+\gls{capitalisewords}\marg{server-side includes}
+\end{codebox}
+\begin{resultbox}
+\capitalisewords{server-side includes} /
+\MFUhyphentrue
+\capitalisewords{server-side includes}
+\end{resultbox}
+
+The actual case-change of each word is performed with:
+\cmddef{MFUcapwordfirstuc}
+This defaults to \code{\gls{makefirstuc}\margm{word}} but may be
+redefined to use \gls{MFUsentencecase}, if preferred.
+
+\begin{important}
+Hyphens and \gls{MFUwordbreak} must be visible to the parser that
+searches for word breaks. This means they won't be detected if they
+are within a group or in the definition of a command.
+\end{important}
Formatting for the entire phrase must go outside
-\cs{capitalisewords} (unlike \cs{makefirstuc}). Compare:
-\begin{verbatim}
-\capitalisewords{\textbf{a sample phrase}}
-\end{verbatim}
-which produces:
-\begin{display}
-\capitalisewords{\textbf{a sample phrase}}
-\end{display}
-with:
-\begin{verbatim}
-\textbf{\capitalisewords{a sample phrase}}
-\end{verbatim}
-which produces:
-\begin{display}
-\textbf{\capitalisewords{a sample phrase}}
-\end{display}
-
-As from version 2.03, there is now a command for phrases that may
-include a formatting command:
-\begin{definition}
-\cs{capitalisefmtwords}\marg{phrase}
-\end{definition}
-where \meta{phrase} may be just words (as with \cs{capitalisewords})
-or may be entirely enclosed in a formatting command in the form
-\begin{alltt}
-\cs{capitalisefmtwords}\{\meta{cs}\marg{phrase}\}
-\end{alltt}
-or contain formatted sub-phrases
-\begin{alltt}
-\cs{capitalisefmtwords}\{\meta{words} \meta{cs}\marg{sub-phrase} \meta{words}\}
-\end{alltt}
-Avoid scoped declarations.
+\gls{capitalisewords} (unlike \gls{makefirstuc}).
+For example:
+\begin{codebox}
+\gls{capitalisewords}\marg{\cmd{emph}\marg{a sample phrase}} /
+\cmd{emph}\marg{\gls{capitalisewords}\marg{a sample phrase}}
+\end{codebox}
+\begin{resultbox}
+\capitalisewords{\emph{a sample phrase}} /
+\emph{\capitalisewords{a sample phrase}}
+\end{resultbox}
+
+If your phrase is likely to contain formatting commands, you can instead use:
+\cmddef{capitalisefmtwords}
+where \meta{text} may be just words (as with \gls{capitalisewords}):
+\begin{compactcodebox}
+\gls{capitalisefmtwords}\margm{words}
+\end{compactcodebox}
+or may be entirely enclosed in a formatting command in the form:
+\begin{compactcodebox}
+\gls{capitalisefmtwords}\marg{\meta{cs}\margm{words}}
+\end{compactcodebox}
+or contain formatted sub-phrases:
+\begin{compactcodebox}
+\gls{capitalisefmtwords}\marg{\meta{words} \meta{cs}\margm{sub-phrase} \meta{words}}
+\end{compactcodebox}
+The starred form only permits a text-block command at the
+start of the phrase. See \sectionref{sec:titlecaseexamples} for
+examples.
+
+\begin{warning}
+Avoid declarations, such as \cmd{bfseries} or \cmd{em}.
+\end{warning}
+
+If expansion is required, you can use:
+\cmddef{xcapitalisefmtwords}
+which is a shortcut for:
+\begin{compactcodebox}
+\cmd{expandafter}\gls{capitalisefmtwords}\cmd{expandafter}\margm{text}
+\end{compactcodebox}
+(The star modifier will be applied with
+\code{\gls{xcapitalisefmtwords}*} in an appropriate manner.)
+
+\cmddef{ecapitalisefmtwords}
+This will fully expand its argument before passing it to
+\gls{capitalisefmtwords}. Again, the star modifier may be used.
\begin{important}
-\cs{capitalisefmtwords} is only designed for phrases that contain
-text-block commands with a single
+The unstarred \gls{capitalisefmtwords} is only designed for phrases that contain
+text-block commands with a single
argument, which should be a word or sub-phrase. Anything
more complicated is likely to break. Instead, use the
-starred form or \cs{capitalisewords}.
+starred form or \gls{capitalisewords}.
\end{important}
-The starred form only permits a text-block command at the
-start of the phrase.
+\section{Excluding Words From Case-Changing}
+\label{sec:nocap}
+
+\glsadd{exclusion-word}Some words typically shouldn't have their case changed unless they
+occur at the start. These words can be identified with:
+\cmddef{MFUnocap}
+This only has a local effect. The global version is:
+\cmddef{gMFUnocap}
+The list of words that shouldn't be capitalised can be cleared
+using:
+\cmddef{MFUclear}
+
+
+For example:
+\begin{codebox}
+\gls{capitalisewords}\marg{the wind in the willows}
+\codepar
+\gls{MFUnocap}\marg{in}\comment{}
+\gls{MFUnocap}\marg{the}\comment{}
+\codepar
+\gls{capitalisewords}\marg{the wind in the willows}
+\end{codebox}
+\begin{resultbox}
+\capitalisewords{the wind in the willows}
+
+\MFUnocap{in}%
+\MFUnocap{the}%
+
+\capitalisewords{the wind in the willows}
+\end{resultbox}
+
+Since the case-change is ultimately performed by \gls{makefirstuc},
+you can also use an \idx{exclusion} to prevent an individual word
+from being changed. For example:
+\begin{codebox}
+\cmd{newcommand}\marg{\cmd{NoChange}}[1]\marg{\#1}
+\gls{MFUexcl}\marg{\cmd{NoChange}}
+\gls{MFUclear}
+\gls{capitalisewords}\marg{the \cmd{NoChange}\marg{wind} in the willows}
+\end{codebox}
+\begin{resultbox}
+\providecommand{\NoChange}[1]{#1}
+\MFUexcl{\NoChange}
+\MFUclear
+\capitalisewords{the \NoChange{wind} in the willows}
+\end{resultbox}
+This can also work if you redefine \gls{MFUcapwordfirstuc} to use
+\gls{MFUsentencecase} provided the exclusion command doesn't expand
+(so \cmd{NoChange} would need to be protected or made robust in the above
+example).
+
+\begin{important}
+Exceptions only apply to (non-leading) whole words or words separated with
+\gls{MFUwordbreak} but not to parts of a hyphenated
+word that are split by \gls{MFUhyphencapword}.
+\end{important}
Examples:
\begin{enumerate}
+\item
+Exceptions aren't applied if \gls{MFUwordbreak} occurs before the
+first space.
+\begin{codebox}
+\gls{MFUnocap}\marg{a}\gls{MFUnocap}\marg{the}\comment{}
+\gls{capitalisewords}\marg{a\gls{MFUwordbreak}\marg{/}the something}
+\end{codebox}
+\begin{resultbox}
+\MFUnocap{a}\MFUnocap{the}%
+\capitalisewords{a\MFUwordbreak{/}the something}
+\end{resultbox}
+
+\item
+Exceptions are applied for non-leading words:
+\begin{codebox}
+\gls{MFUnocap}\marg{and}\gls{MFUnocap}\marg{or}\comment{}
+\gls{capitalisewords}\marg{one and\gls{MFUwordbreak}\marg{/}or another}
+\end{codebox}
+\begin{resultbox}
+\MFUnocap{and}\MFUnocap{or}%
+\capitalisewords{one and\MFUwordbreak{/}or another}
+\end{resultbox}
+
+\item
+Exceptions aren't applied for hyphenated parts:
+\begin{codebox}
+\gls{MFUhyphentrue}
+\gls{MFUnocap}\marg{and}\gls{MFUnocap}\marg{or}\comment{}
+\gls{capitalisewords}\marg{one and-or another}
+\end{codebox}
+\begin{resultbox}
+\MFUhyphentrue
+\MFUnocap{and}\MFUnocap{or}%
+\capitalisewords{one and-or another}
+\end{resultbox}
+\end{enumerate}
+
+\pkgdef{mfirstuc-english}
+The supplementary package \sty{mfirstuc-english} loads \sty{mfirstuc} and uses
+\gls{MFUnocap} to add common English articles and conjunctions, such
+as \qt{a}, \qt{an}, \qt{and}, \qt{but}. You may want to add other
+words to this list, such as prepositions but, as there's some
+dispute over whether prepositions should be capitalised, I~don't
+intend to add them to this package. Note that you need to explicitly
+load \sty{mfirstuc-english} if you require it. There's no automatic
+language detection performed by \sty{mfirstuc}.
+
+If you want to write a similar package for another language, all you
+need to do is create a file with the extension \filefmt{.sty}
+that starts with:
+\begin{compactcodebox}
+\cmd{NeedsTeXFormat}\marg{LaTeX2e}
+\end{compactcodebox}
+The next line should identify the package. For example, if you have
+called the file \filefmt{mfirstuc-french.sty} then you need:
+\begin{compactcodebox}
+\cmd{ProvidesPackage}\marg{mfirstuc-french}
+\end{compactcodebox}
+It's a good idea to also add a version in the final optional
+argument, for example:
+\begin{compactcodebox}
+\cmd{ProvidesPackage}\marg{mfirstuc-french}[2014/07/30 v1.0]
+\end{compactcodebox}
+Next load \sty{mfirstuc}:
+\begin{compactcodebox}
+\cmd{RequirePackage}\marg{mfirstuc}
+\end{compactcodebox}
+Now add all your \gls{MFUnocap} commands. For example:
+\begin{compactcodebox}
+\gls{MFUnocap}\marg{de}
+\end{compactcodebox}
+At the end of the file add:
+\begin{compactcodebox}
+\cmd{endinput}
+\end{compactcodebox}
+
+Put the file somewhere on \TeX's path, and now you can use this
+package in your document. You might also consider
+\href{http://ctan.org/upload}{uploading it to CTAN} in case
+other users find it useful.
+
+
+\section{PDF Bookmarks}
+\label{sec:pdfbookmarks}
+
+If you are using \sty{hyperref} and want to use
+\gls{capitalisewords} or \gls{capitalisefmtwords} (or the expanded
+variants) in a section heading, the PDF bookmarks won't be able to
+use the command as it's not expandable, so you will get a warning
+that looks like:
+\begin{transcript}
+Package hyperref Warning: Token not allowed in a PDF string
+(PDFDocEncoding):
+(hyperref) removing `\gls{capitalisewords}'
+\end{transcript}
+
+If you want to provide an alternative for the PDF bookmark, you can
+use \sty{hyperref}'s \gls{texorpdfstring} command. For example:
+\begin{codebox}
+\cmd{chapter}\marg{\gls{texorpdfstring}
+ \marg{\gls{capitalisewords}\marg{a book of rhyme}}\comment{ TeX}
+ \marg{A Book of Rhyme}\comment{ PDF}
+}
+\end{codebox}
+Alternatively, you can use \sty{hyperref}'s mechanism for
+disabling commands within the bookmarks. For example:
+\begin{codebox*}
+\gls{pdfstringdefDisableCommands}\marg{\comment{}
+ \cmd{let}\gls{capitalisewords}\cmd{@firstofone}
+}
+\end{codebox*}
+The same applies to \gls{makefirstuc}. You can, however, use
+the expandable \gls{MFUsentencecase}. So you may prefer:
+\begin{codebox*}
+\gls{pdfstringdefDisableCommands}\marg{\comment{}
+ \cmd{let}\gls{capitalisewords}\cmd{MFUsentencecase}
+ \cmd{let}\gls{makefirstuc}\cmd{MFUsentencecase}
+}
+\end{codebox*}
+
+See the \sty{hyperref} manual for further details.
+
+\section{Examples}
+\label{sec:titlecaseexamples}
+
+\begin{enumerate}
+\item Text only:
+\begin{coderesult}
+\gls{capitalisewords}\marg{a little book of rhyme}
+\tcblower
+\capitalisewords{a little book of rhyme}
+\end{coderesult}
+
+\item Excluding words (see \sectionref{sec:nocap}):
+\begin{coderesult}
+\gls{MFUnocap}\marg{of}
+\gls{capitalisewords}\marg{a little book of rhyme}
+\tcblower
+\MFUnocap{of}
+\capitalisewords{a little book of rhyme}
+\end{coderesult}
+
+\item \gls{space} isn't recognised as a word boundary:
+\begin{codebox}
+\gls{capitalisewords}\marg{a book of rhyme.}
+\codepar
+\gls{capitalisewords}\marg{a book\gls{space} of rhyme.}
+\end{codebox}
+\begin{resultbox}
+\capitalisewords{a book of rhyme.}
+
+\capitalisewords{a book\space of rhyme.}
+\end{resultbox}
+
\item Phrase entirely enclosed in a formatting command:
-\begin{verbatim}
-\capitalisefmtwords{\textbf{a small book of rhyme}}
-\end{verbatim}
-produces:
-\begin{display}
-\capitalisefmtwords{\textbf{a small book of rhyme}}
-\end{display}
+\begin{codebox}
+\gls{capitalisefmtwords}\marg{\cmd{emph}\marg{a small book of rhyme}}
+\end{codebox}
+\begin{resultbox}
+\capitalisefmtwords{\emph{a small book of rhyme}}
+\end{resultbox}
\item Sub-phrase enclosed in a formatting command:
-\begin{verbatim}
-\capitalisefmtwords{a \textbf{small book} of rhyme}
-\end{verbatim}
-produces:
-\begin{display}
-\capitalisefmtwords{a \textbf{small book} of rhyme}
-\end{display}
+\begin{codebox}
+\gls{capitalisefmtwords}\marg{a \cmd{emph}\marg{small book} of rhyme}
+\end{codebox}
+\begin{resultbox}
+\capitalisefmtwords{a \emph{small book} of rhyme}
+\end{resultbox}
\item Nested text-block commands:
-\begin{verbatim}
+\begin{codebox}
+\gls{capitalisefmtwords}\marg{\cmd{textbf}\marg{a \cmd{emph}\marg{small book}} of rhyme}
+\end{codebox}
+\begin{resultbox}
\capitalisefmtwords{\textbf{a \emph{small book}} of rhyme}
-\end{verbatim}
-produces:
-\begin{display}
-\capitalisefmtwords{\textbf{a \emph{small book}} of rhyme}
-\end{display}
-
-\item Indicating words that shouldn't have the case changed
-(see \sectionref{sec:nocap}):
-\begin{verbatim}
+\end{resultbox}
+
+\item Formatting and case-change exception (see \sectionref{sec:nocap}):
+\begin{codebox}
+\gls{MFUnocap}\marg{of}
+\gls{capitalisefmtwords}\marg{\cmd{textbf}\marg{a \cmd{emph}\marg{small book}} of rhyme}
+\end{codebox}
+\begin{resultbox}
\MFUnocap{of}
\capitalisefmtwords{\textbf{a \emph{small book}} of rhyme}
-\end{verbatim}
-produces:
-\begin{display}
-\MFUnocap{of}
-\capitalisefmtwords{\textbf{a \emph{small book}} of rhyme}
-\end{display}
+\end{resultbox}
\item Starred form:
-\begin{verbatim}
-\MFUnocap{of}
-\capitalisefmtwords*{\emph{a small book of rhyme}}
-\end{verbatim}
-produces:
-\begin{display}
+\begin{codebox}
+\gls{MFUnocap}\marg{of}
+\gls{capitalisefmtwords}*\marg{\cmd{emph}\marg{a small book of rhyme}}
+\end{codebox}
+\begin{resultbox}
\MFUnocap{of}
\capitalisefmtwords*{\emph{a small book of rhyme}}
-\end{display}
+\end{resultbox}
\item The starred form also works with just text (no text-block
command):
-\begin{verbatim}
+\begin{codebox}
+\gls{MFUnocap}\marg{of}
+\gls{capitalisefmtwords}*\marg{a small book of rhyme}
+\end{codebox}
+\begin{resultbox}
\MFUnocap{of}
\capitalisefmtwords*{a small book of rhyme}
-\end{verbatim}
-produces:
-\begin{display}
-\MFUnocap{of}
-\capitalisefmtwords*{a small book of rhyme}
-\end{display}
+\end{resultbox}
+
+\item Expansion:
+\begin{codebox}
+\cmd{newcommand}\marg{\cmd{abc}}\marg{\cmd{xyz}\gls+{space} four five}
+\cmd{newcommand}\marg{\cmd{xyz}}\marg{one two three}
+No expansion: \gls{capitalisewords}\marg{\cmd{abc}}.
+\codepar
+First object one-level expansion: \gls{xcapitalisewords}\marg{\cmd{abc}}.
+\codepar
+Fully expanded: \gls{ecapitalisewords}\marg{\cmd{abc}}.
+\end{codebox}
+\begin{resultbox}
+\newcommand{\abc}{\xyz\space four five}
+\newcommand{\xyz}{one two three}
+No expansion: \capitalisewords{\abc}.
+
+First object one-level expansion: \xcapitalisewords{\abc}.
+
+Fully expanded: \ecapitalisewords{\abc}.
+\end{resultbox}
+
+Remember that the spaces need to be explicit. In the second case
+above, using \gls{xcapitalisewords}, the space before \qt{four} has
+been hidden within \gls{space} so it's not recognised as a word
+boundary, but in the third case, \gls{space} has been expanded to an
+actual space character.
+
\end{enumerate}
If there is a text-block command within the argument of the
starred form, it's assumed to be at the start of the argument.
Unexpected results can occur if there are other commands.
-For example
-\begin{verbatim}
-\MFUnocap{of}
-\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}}
-\end{verbatim}
-produces:
-\begin{display}
+For example:
+\begin{badcodebox}
+\gls{MFUnocap}\marg{of}
+\gls{capitalisefmtwords}*\marg{\cmd{emph}\marg{a small} book \cmd{textbf}\marg{of rhyme}}
+\end{badcodebox}
+\begin{resultbox}
\MFUnocap{of}
\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}}
-\end{display}
-(In this case \verb|\textbf{of rhyme}| is considered a
-single word.) Similarly if the text-block command occurs
+\end{resultbox}
+In this case \code{\cmd{textbf}\marg{of rhyme}} is considered a
+single word. Similarly if the text-block command occurs
in the middle of the argument:
-\begin{verbatim}
+\begin{badcodebox}
+\gls{MFUnocap}\marg{of}
+\gls{capitalisefmtwords}*\marg{a \cmd{emph}\marg{very small} book of rhyme}
+\end{badcodebox}
+\begin{resultbox}
\MFUnocap{of}
\capitalisefmtwords*{a \emph{very small} book of rhyme}
-\end{verbatim}
-produces:
-\begin{display}
-\MFUnocap{of}
-\capitalisefmtwords*{a \emph{very small} book of rhyme}
-\end{display}
-(In this case \verb|\emph{very small}| is considered a
-single word.)
-
-Grouping causes interference:
-\begin{verbatim}
-\capitalisefmtwords{{a \emph{small book}} of rhyme}
-\end{verbatim}
-produces:
-\begin{display}
-\capitalisefmtwords{{a \emph{small book}} of rhyme}
-\end{display}
+\end{resultbox}
+In this case \code{\cmd{emph}\marg{very small}} is considered a
+single word.
+
+Grouping causes interference.
As with all the commands described here, avoid declarations.
-For example, the following fails:
-\begin{verbatim}
-\capitalisefmtwords{{\bfseries a \emph{small book}} of rhyme}
-\end{verbatim}
-produces:
-\begin{display}
-\capitalisefmtwords{{\bfseries a \emph{small book}} of rhyme}
-\end{display}
+\begin{badcodebox}
+\gls{capitalisefmtwords}\marg{\marg{\cmd{bfseries} a \cmd{emph}\marg{small book}} of rhyme}
+\end{badcodebox}
+
+\begin{information}
+As a general rule, it's better to define \idxpl{semanticcommand} rather
+than directly using font commands and declarations within the
+document.
+\end{information}
Avoid complicated commands in the unstarred version. For example,
the following breaks:
-\begin{verbatim}
-\newcommand*{\swap}[2]{{#2}{#1}}
-\capitalisefmtwords{a \swap{bo}{ok} of rhyme}
-\end{verbatim}
-However it works okay with the starred form and the simpler
-\cs{capitalisewords}:
-\begin{verbatim}
-\newcommand*{\swap}[2]{{#2}{#1}}
-\capitalisefmtwords*{a \swap{bo}{ok} of rhyme}
-
-\capitalisewords{a \swap{bo}{ok} of rhyme}
-\end{verbatim}
-Produces:
-\begin{display}
+\begin{badcodebox}
+\cmd{newcommand}*\marg{\cmd{swap}}[2]\marg{\marg{\#2}\marg{\#1}}
+\gls{capitalisefmtwords}\marg{a \cmd{swap}\marg{bo}\marg{ok} of rhyme}
+\end{badcodebox}
+However it can work with the starred form and the simpler
+\gls{capitalisewords}:
+\begin{codebox}
+\cmd{newcommand}*\marg{\cmd{swap}}[2]\marg{\marg{\#2}\marg{\#1}}
+\gls{capitalisefmtwords}*\marg{a \cmd{swap}\marg{bo}\marg{ok} of rhyme}
+\codepar
+\gls{capitalisewords}\marg{a \cmd{swap}\marg{bo}\marg{ok} of rhyme}
+\end{codebox}
+\begin{resultbox}
\newcommand*{\swap}[2]{{#2}{#1}}
\capitalisefmtwords*{a \swap{bo}{ok} of rhyme}
\capitalisewords{a \swap{bo}{ok} of rhyme}
-\end{display}
+\end{resultbox}
Note that the case change is applied to the first argument.
-\begin{definition}[\DescribeMacro{\xcapitalisewords}]
-\cs{xcapitalisewords}\marg{text}
-\end{definition}
-This is a short cut for
-\cs{expandafter}\cs{capitalisewords}\cs{expandafter}\marg{text}.
-
-As from version 1.10, there is now a command that fully expands the
-entire argument before applying \cs{capitalisewords}:
-\begin{definition}[\DescribeMacro\ecapitalisewords]
-\cs{ecapitalisewords}\marg{text}
-\end{definition}
-
-There are also similar shortcut commands for the version that allows
-text-block commands:
-\begin{definition}[\DescribeMacro{\xcapitalisefmtwords}]
-\cs{xcapitalisefmtwords}\marg{text}
-\end{definition}
-The unstarred version is a short cut for
-\cs{expandafter}\cs{capitalisefmtwords}\cs{expandafter}\marg{text}.
-Similarly the starred version of \cs{xcapitalisefmtwords}
-uses the starred version of \cs{capitalisefmtwords}.
-
-For full expansion:
-\begin{definition}[\DescribeMacro\ecapitalisefmtwords]
-\cs{ecapitalisefmtwords}\marg{text}
-\end{definition}
-Take care with this as it may expand non-robust semantic commands
-to replacement text that breaks the functioning of
-\cs{capitalisefmtwords}. Use robust semantic commands
-where possible. Again this has a starred version that uses
-the starred form of \cs{capitalisefmtwords}.
-
-Examples:
-\begin{verbatim}
-\newcommand{\abc}{\xyz\space four five}
-\newcommand{\xyz}{one two three}
-No expansion: \capitalisewords{\abc}.
-First object one-level expansion: \xcapitalisewords{\abc}.
-Fully expanded: \ecapitalisewords{\abc}.
-\end{verbatim}
-produces:
-\begin{display}
-\renewcommand{\abc}{\xyz\space four five}%
-\renewcommand{\xyz}{one two three}
-No expansion: \capitalisewords{\abc}.
-First object one-level expansion: \xcapitalisewords{\abc}.
-Fully expanded: \ecapitalisewords{\abc}.
-\end{display}
-
-(Remember that the spaces need to be explicit. In the second case
-above, using \cs{xcapitalisewords}, the space before \qt{four} has
-been hidden within \cs{space} so it's not recognised as a word
-boundary, but in the third case, \cs{space} has been expanded to an
-actual space character.)
-
-Examples:
-\begin{enumerate}
-\item
-\begin{verbatim}
-\capitalisewords{a book of rhyme.}
-\end{verbatim}
-produces:
-\capitalisewords{a book of rhyme.}
-
-\item
-\begin{verbatim}
-\capitalisewords{a book\space of rhyme.}
-\end{verbatim}
-produces:
-\capitalisewords{a book\space of rhyme.}
-
-\item
-\begin{verbatim}
-\newcommand{\mytitle}{a book\space of rhyme.}
-\capitalisewords{\mytitle}
-\end{verbatim}
-produces:
-\newcommand{\mytitle}{a book\space of rhyme.}
-\capitalisewords{\mytitle}
-(No expansion is performed on \cs{mytitle}.) Compare with next example:
-
-\item
-\begin{verbatim}
-\newcommand{\mytitle}{a book\space of rhyme.}
-\xcapitalisewords{\mytitle}
-\end{verbatim}
-produces:
-\xcapitalisewords{\mytitle}
-
-However
-\begin{verbatim}
-\ecapitalisewords{\mytitle}
-\end{verbatim}
-produces:
-\ecapitalisewords{\mytitle}
-(\cs{space} has been expanded to an actual space character.)
-
-\item
-\begin{verbatim}
-\newcommand*{\swap}[2]{{#2}{#1}}
-\capitalisewords{a \swap{bo}{ok} of rhyme}
-
-\ecapitalisewords{a \swap{bo}{ok} of rhyme}
-\end{verbatim}
-produces:
-\begin{display}
-\newcommand*{\swap}[2]{{#2}{#1}}
-\capitalisewords{a \swap{bo}{ok} of rhyme}
-
-\ecapitalisewords{a \swap{bo}{ok} of rhyme}
-\end{display}
-This is because the argument of \cs{ecapitalisewords} is
-fully expanded before being passed to \cs{capitalisewords} so
-that last example is equivalent to:
-\begin{verbatim}
-\capitalisewords{a {ok}{bo} of rhyme}
-\end{verbatim}
-\end{enumerate}
-
-\section{PDF Bookmarks}
-\label{sec:pdfbookmarks}
-
-\begin{important}
-If you are using \sty{hyperref} and want to use
-\cs{capitalisewords}, \cs{capitalisefmtwords}
-or \ics{makefirstuc} (or the expanded variants)
-in a section heading, the PDF bookmarks won't be able to use the command
-as it's not expandable, so you will get a warning that looks like:
-\begin{verbatim}
-Package hyperref Warning: Token not allowed in a PDF string
-(PDFDocEncoding):
-(hyperref) removing `\capitalisewords'
-\end{verbatim}
-\end{important}
-
-If you want to provide an alternative for the PDF bookmark, you can
-use \sty{hyperref}'s \ics{texorpdfstring} command. For example:
-\begin{verbatim}
-\chapter{\texorpdfstring
- {\capitalisewords{a book of rhyme}}% TeX
- {A Book of Rhyme}% PDF
-}
-\end{verbatim}
-Alternatively, you can use \sty{hyperref}'s mechanism for
-disabling commands within the bookmarks. For example:
-\begin{verbatim}
-\pdfstringdefDisableCommands{%
- \let\capitalisewords\@firstofone
-}
-\end{verbatim}
-
-See the \sty{hyperref} manual for further details.
-
-\section{Excluding Words From Case-Changing}
-\label{sec:nocap}
-
-As from v1.09, you can specify words which shouldn't be capitalised unless they
-occur at the start of \meta{text} using:
-\begin{definition}[\DescribeMacro\MFUnocap]
-\cs{MFUnocap}\marg{word}
-\end{definition}
-This only has a local effect. The global version is:
-\begin{definition}[\DescribeMacro\gMFUnocap]
-\cs{gMFUnocap}\marg{word}
-\end{definition}
-
+\chapter{Miscellaneous}
+\label{sec:misc}
+
+\section{Saving \Glsfmtplural{exclusion}, \Glsfmtplural{blocker} and
+\Glsfmtplural{mapping} in the \exttext{aux} File}
+\label{sec:savetoaux}
+
+If the \idxpl{exclusion}, \idxpl{mapping} and \idxpl{blocker} are
+required by some external tool, the information can be saved in the
+\ext+{aux} file.
+
+\cmddef{MFUsaveatend}
+This saves the information at the end of the document using a delayed
+write. This means that it can register all information identified
+throughout the document, but there's a chance the document may end
+before the write takes place (for example, if the last page only
+contains floats). This command may be counteracted by:
+\cmddef{MFUsave}
+This saves the information using a protected write at the point
+where this command occurs, which may be too soon if additional
+\idxpl{exclusion}, \idxpl{mapping} or \idxpl{blocker} are identified
+later. This command will counteract any instance of
+\gls{MFUsaveatend}, regardless of whether or not \gls{MFUsaveatend}
+comes before or after \gls{MFUsave}.
+
+The associated \ext{aux} commands are listed below. In each case, a
+definition is provided in the \ext{aux} file that does nothing.
+\cmddef{@mfu@excls}
+Lists all \idxpl{exclusion}.
For example:
-\begin{verbatim}
-\capitalisewords{the wind in the willows}
-
-\MFUnocap{in}%
-\MFUnocap{the}%
-
-\capitalisewords{the wind in the willows}
-\end{verbatim}
-produces:
-\begin{display}
-\capitalisewords{the wind in the willows}
-
-\MFUnocap{in}%
-\MFUnocap{the}%
-
-\capitalisewords{the wind in the willows}
-\end{display}
-The list of words that shouldn't be capitalised can be cleared using
-\begin{definition}[\DescribeMacro\MFUclear]
-\cs{MFUclear}
-\end{definition}
-
-You can also simply place an empty group in front of a word
-if you don't want that specific instance to be capitalised.
+\begin{compactcodebox*}
+\gls{@mfu@excls}\marg{\gls{begin} \gls{cite} \gls{end} \gls{label}
+\gls{ref} \gls{cite} \gls{NoCaseChange} \gls{ensuremath}
+\gls{MFUskippunc} \gls{gls} \gls{glspl}}
+\end{compactcodebox*}
+
+\cmddef{@mfu@blockers}
+Lists all \idxpl{blocker}.
For example:
-\begin{verbatim}
-\MFUclear
-\capitalisewords{the {}wind in the willows}
-\end{verbatim}
-produces:
-\begin{display}
-\MFUclear
-\capitalisewords{the {}wind in the willows}
-\end{display}
-This is also a useful way of protecting commands that
-shouldn't be parsed. For example:
-\begin{verbatim}
-\capitalisewords{this is section {}\nameref{sec:nocap}.}
-\end{verbatim}
-produces
-\begin{display}
-\capitalisewords{this is section {}\nameref{sec:nocap}.}
-\end{display}
-(No case-changing is applied to \verb|\nameref{sec:nocap}|.
-It just happens to already be in title case.)
-
-The package \sty{mfirstuc-english} loads \styfmt{mfirstuc} and uses
-\cs{MFUnocap} to add common English articles and conjunctions, such
-as ``a'', ``an'', ``and'', ``but''. You may want to add other
-words to this list, such as prepositions but, as there's some
-dispute over whether prepositions should be capitalised, I~don't
-intend to add them to this package.
-
-If you want to write a similar package for another language, all you
-need to do is create a file with the extension \texttt{.sty}
-that starts with
-\begin{verbatim}
-\NeedsTeXFormat{LaTeX2e}
-\end{verbatim}
-The next line should identify the package. For example, if you have
-called the file \texttt{mfirstuc-french.sty} then you need:
-\begin{verbatim}
-\ProvidesPackage{mfirstuc-french}
-\end{verbatim}
-It's a good idea to also add a version in the final optional
-argument, for example:
-\begin{verbatim}
-\ProvidesPackage{mfirstuc-french}[2014/07/30 v1.0]
-\end{verbatim}
-Next load \styfmt{mfirstuc}:
-\begin{verbatim}
-\RequirePackage{mfirstuc}
-\end{verbatim}
-Now add all your \cs{MFUnocap} commands. For example:
-\begin{verbatim}
-\MFUnocap{de}
-\end{verbatim}
-At the end of the file add:
-\begin{verbatim}
-\endinput
-\end{verbatim}
-
-Put the file somewhere on \TeX's path, and now you can use this
-package in your document. You might also consider
-\href{http://ctan.org/upload}{uploading it to CTAN} in case
-other users find it useful.
+\begin{compactcodebox*}
+\gls{@mfu@blockers}\marg{\gls{Gls} \gls{Glspl} }
+\end{compactcodebox*}
-\chapter{UTF-8}
+\cmddef{@mfu@mappings}
+Lists all \idxpl{mapping} as a \keyval\ list.
+For example:
+\begin{compactcodebox*}
+\gls{@mfu@mappings}\marg{ \marg{\gls{gls} }= \marg{\gls{Gls} }, \marg{\gls{glspl} }= \marg{\gls{Glspl} }}
+\end{compactcodebox*}
+
+\section{All-Caps}
+\label{sec:allcaps}
+
+\cmddef{mfirstucMakeUppercase}
+This command was originally used to perform the actual conversion to
+\idx+{uppercase} and was defined to use command \gls{MakeUppercase}.
+The \sty{glossaries} package (before v4.50) formerly loaded the
+\sty{textcase} package and redefined \gls{mfirstucMakeUppercase} to
+use \gls{MakeTextUppercase}, which was better than
+\gls{MakeUppercase}.
+
+The \sty{textcase} package has been deprecated as from 2022 and
+it now simply sets \gls{MakeTextUppercase} to \gls{MakeUppercase}
+because the new kernel now defines \gls{MakeUppercase} to use the
+newer \LaTeX3 command \gls{textuppercase:n}. Although that command
+is expandable, \gls{MakeUppercase} is robust.
+
+As from v2.08, \sty{mfirstuc} now defines \gls{mfirstucMakeUppercase}
+so that it uses \gls{texttitlecasefirst:n} directly, rather than
+indirectly through \gls{MakeUppercase}, which means that it's now
+expandable. However, \gls{mfirstucMakeUppercase} is no longer used
+by \sty{mfirstuc} except in \gls{mfugrabfirstuc}, which is provided
+to emulate v2.07. Note that the \opt{grabfirst} option will also
+redefine \gls{mfirstucMakeUppercase} to use \gls{MakeUppercase}.
+
+\section{UTF-8}
\label{sec:utf8}
-(See
-\href{https://dickimaw-books.com/blog/binary-files-text-files-and-file-encodings/}{Binary
+\begin{information}
+See \blog{binary-files-text-files-and-file-encodings/}{Binary
Files, Text Files and File Encodings} if you are confused about how
-file encodings such as UTF-8 relate to text files.)
+file encodings, such as \gls{utf8}, relate to text files.
+\end{information}
+
+This section only applies to rollback or the use of \gls{mfugrabfirstuc}
+(implemented via the \opt{grabfirst} option).
-The \cs{makefirstuc} command works by utilizing the fact that, in
+Prior to version 2.08, the case-change applied by the
+\gls{glsmakefirstuc} command worked by utilizing the fact that, in
most cases, \TeX\ doesn't require a regular argument to be enclosed
in braces if it only consists of a single token. (This is why you
-can do, say, \verb|\frac12| instead of \verb|\frac{1}{2}| or
-\verb|x^2| instead of \verb|x^{2}|, although some users
-frown on this practice.)
-
-A~simplistic version of the \cs{makefirstuc} command is:
-\begin{verbatim}
-\newcommand*{\FirstUC}[1]{\MakeUppercase #1}
-\end{verbatim}
+can do, say, \code{\cmd{frac}12} instead of
+\code{\cmd{frac}\marg{1}\marg{2}} or \code{x\char`\^2}
+instead of \code{x\char`\^\marg{2}}, although this
+practice is discouraged by some.)
+
+A~simplistic version of the original \gls{glsmakefirstuc} command is:
+\begin{codebox}
+\cmd{newcommand}*\marg{\cmd{FirstUC}}[1]\marg{\gls{MakeUppercase} \#1}
+\end{codebox}
Here
-\begin{verbatim}
-\FirstUC{abc}
-\end{verbatim}
+\begin{codebox}
+\cmd{FirstUC}\marg{abc}
+\end{codebox}
is equivalent to
-\begin{verbatim}
-\MakeUppercase abc
-\end{verbatim}
-and since \cs{MakeUppercase} requires an argument, it grabs the
-first token (the character ``a'' in this case) and uses that as the
-argument so that the result is: Abc.
-
-The \sty{glossaries} package needs to take into account the fact
-that the text may be contained in the argument of a formatting
-command, such as \cs{acronymfont}, so \cs{makefirstuc} has to be
-more complicated than the trivial \cs{FirstUC} shown above, but at
-its basic level, \cs{makefirstuc} uses this same method and is the
-reason why, in most cases, you don't need to enclose the first
-character in braces. So if
-\begin{alltt}
-\cs{MakeUppercase} \meta{stuff}
-\end{alltt}
-works,
-then
-\begin{alltt}
-\cs{makefirstuc}\marg{stuff}
-\end{alltt}
-should also work and so should
-\begin{alltt}
-\cs{makefirstuc}\{\cs{foo}\marg{stuff}\}
-\end{alltt}
-but if
-\begin{alltt}
-\cs{MakeUppercase} \meta{stuff}
-\end{alltt}
-doesn't work, then neither will
-\begin{alltt}
-\cs{makefirstuc}\marg{stuff}
-\end{alltt}
-nor
-\begin{alltt}
-\cs{makefirstuc}\{\cs{foo}\marg{stuff}\}
-\end{alltt}
-
-Try the following document:
-\begin{alltt}
-\cs{documentclass}\{article\}
-
-\cs{usepackage}[utf8]\{inputenc\}
-\cs{usepackage}[T1]\{fontenc\}
-
-\cs{begin}\{document\}
-
-\cs{MakeUppercase} \~abc
-
-\cs{end}\{document\}
-\end{alltt}
-
-This will result in the error:
-\begin{verbatim}
-! Argument of \UTFviii@two@octets has an extra }.
-\end{verbatim}
-This is why \verb|\makefirstuc{|\texttt{\~abc}\verb|}| won't work.
-It will only work if the character \texttt{\~a} is placed inside a
-group.
-
-The reason for this error message is due to \TeX\ having been written before
-Unicode was invented. Although \texttt{\~a} may look like a single
-character in your text editor, from \TeX's point of view it's \emph{two}
-tokens. So
-\begin{alltt}
-\cs{MakeUppercase} \~abc
-\end{alltt}
-tries to apply \cs{MakeUppercase} to just the first octet of \~a.
-This means that the second octet has been separated from the first octet,
-which is the cause of the error. In this case the argument isn't a
-single token, so the two tokens (the first and second octet of \~a)
-must be grouped:
-\begin{alltt}
-\cs{MakeUppercase}\{\~a\}bc
-\end{alltt}
-Over recent years the \LaTeX\ kernel has changed to allow the use of
-UTF-8 characters within labels but the fundamental problem of each
-octet been viewed as a separated token remains.
-
-Note that \XeTeX\ (and therefore \XeLaTeX) is a modern
-implementation of \TeX\ designed to work with Unicode and therefore
-doesn't suffer from this drawback. Now let's look at the \XeLaTeX\
-equivalent of the above example:
-\begin{alltt}
-\cs{documentclass}\{article\}
-
-\cs{usepackage}\{fontspec\}
-
-\cs{begin}\{document\}
-
-\cs{MakeUppercase} \~abc
-
-\cs{end}\{document\}
-\end{alltt}
-
-This works correctly when compiled with \XeLaTeX. This means
-that \cs{makefirstuc}\verb|{|\texttt{\~abc}\verb|}| will work
-\emph{provided you use \XeLaTeX\ and the \sty{fontspec} package}.
-
-Version 2.24 of \sty{datatool-base} added the
-command \cs{dtl@getfirst@UTFviii} which attempts to grab both octets. If this command
-has been defined, \sty{mfirstuc} will use it when it tries to split
-the first character from the rest of the word. See the
-\href{http://mirrors.ctan.org/macros/latex/contrib/datatool/datatool-code.pdf}{\styfmt{datatool}
-documented code} for further details.
-
-\PrintIndex
+\begin{codebox}
+\gls{MakeUppercase} abc
+\end{codebox}
+and since \gls{MakeUppercase} requires an argument, it grabs the
+first token (the character \qt{a} in this case) and uses that as the
+argument so that the result is \qt{Abc}. This behaviour can be
+achieved with \gls{mfugrabfirstuc}.
+
+Unfortunately, this will fail if the content starts with a \gls{utf8}
+character and you are using \pdfLaTeX, where each octet of the
+\gls{utf8} character is a separate token. This isn't a problem
+with \XeLaTeX\ and \LuaLaTeX\ which both treat the entire multibyte
+character as a single token.
+
+\LaTeX3 now provides \gls{texttitlecasefirst:n}
+to convert the first character to uppercase, so now the
+case-change can be applied with:
+\begin{codebox}
+\cmd{ExplSyntaxOn}
+\gls{texttitlecasefirst:n}\marg{élite}
+\cmd{ExplSyntaxOff}
+\end{codebox}
+This is exactly what \gls{MFUsentencecase} does without the need to
+switch on \LaTeX3 syntax. The difference with the default definition
+of \gls{glsmakefirstuc} is that it prevents its argument from being
+expanded.
+
+\backmatter
+\printterms
+\printsummary
+\printuserguideindex
+
\end{document}
diff --git a/macros/latex/contrib/mfirstuc/mfirstuc.dtx b/macros/latex/contrib/mfirstuc/mfirstuc.dtx
index 2aa2008f41..a88c20e131 100644
--- a/macros/latex/contrib/mfirstuc/mfirstuc.dtx
+++ b/macros/latex/contrib/mfirstuc/mfirstuc.dtx
@@ -1,21 +1,22 @@
%\iffalse
% mfirstuc.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
-% -setambles ".*\.perl=>\nopreamble\nopostamble"
-% -setambles ".*\.tex=>\nopreamble\nopostamble"
+% -macrocode ".*\.l2h"
+% -macrocode ".*\.tex"
+% -comment ".*\.l2h"
+% -comment ".*\.tex"
+% -codetitle "Main Package Code"
+% -doc "mfirstuc-codedoc.tex"
% -author "Nicola Talbot"
% -src "mfirstuc.sty\Z=>mfirstuc.sty"
% -src "mfirstuc-english.sty\Z=>mfirstuc-english.sty"
+% -src "(mfirstuc-[0-9]+-[0-9]+-[0-9]+.sty)\Z=>\1"
% -src "(sample.*\.tex)\Z=>\1"
-% -src "(.*\.perl)\Z=>\1"
-% -macrocode ".*\.perl"
-% -macrocode ".*\.tex"
-% -codetitle "Main Package Code"
-% -doc "mfirstuc-codedoc.tex"
-% -comment ".*\.perl"
-% -comment ".*\.tex"
+% -src "(.*\.l2h)\Z=>\1"
+% -setambles ".*\.l2h=>\nopreamble\nopostamble"
+% -setambles ".*\.tex=>\nopreamble\nopostamble"
% mfirstuc
-% Created on 2021/10/15 17:46
+% Created on 2022/10/18 9:21
%\fi
%\iffalse
%<*package>
@@ -38,66 +39,70 @@
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
-% Copyright (C) 2021 Nicola Talbot, all rights reserved.
+% Copyright (C) 2022 Nicola Talbot, all rights reserved.
% \fi
% \iffalse
%<*driver>
-\documentclass{nlctdoc}
-
\iffalse
mfirstuc-codedoc.tex is a stub file used by makedtx to create
mfirstuc.dtx
\fi
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage[colorlinks,
- bookmarks,
- hyperindex=false,
- pdfauthor={Nicola L.C. Talbot},
- pdftitle={mfirstuc.sty: Documented code}]{hyperref}
+\documentclass{article}
+\usepackage{doc}
+
+\CheckSum{1753}
\RecordChanges
+\PageIndex
+\SetupDoc{reportchangedates}
+\setcounter{IndexColumns}{2}
-\renewcommand*{\main}[1]{\hyperpage{#1}}
+\usepackage[T1]{fontenc}
+\usepackage{tcolorbox}
-\setcounter{IndexColumns}{2}
-\setlength\IndexMin{100pt}
+\definecolor{defbackground}{rgb}{1,1,0.75}
-\CheckSum{771}
+\newtcolorbox{definition}{halign=flush left,
+ colframe=black,colback=defbackground,
+ fontupper=\ttfamily,
+ before upper={\frenchspacing\obeylines},
+ after={\par\noindent\ignorespacesafterend}
+}
+
+\NewDocElement{Option}{option}
+
+\providecommand{\sty}[1]{\textsf{#1}}
+
+\providecommand\marg[1]{%
+ \texorpdfstring{\allowbreak{\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+ {\{#1\}}}
+\providecommand\oarg[1]{%
+ \texorpdfstring{\allowbreak{\ttfamily[}\meta{#1}{\ttfamily]}}
+ {[#1]}}
\begin{document}
\DocInput{mfirstuc.dtx}
\end{document}
%</driver>
%\fi
-%\MakeShortVerb{"}
-%\DeleteShortVerb{\|}
%
-% \title{Documented Code For mfirstuc v2.07}
+% \title{Documented Code For mfirstuc v2.08}
% \author{Nicola L.C. Talbot\\[10pt]
%Dickimaw Books\\
%\url{http://www.dickimaw-books.com/}}
%
-% \date{2021-10-15}
+% \date{2022-10-14}
% \maketitle
%
%\tableofcontents
%
%\section{Introduction}
%
-%This is the documented code for the \styfmt{mfirstuc} package.
+%This is the documented code for the \sty{mfirstuc} package.
%See \texttt{mfirstuc-manual.pdf} for the main user guide.
%
-%
-%\StopEventually{%
-% \phantomsection
-% \addcontentsline{toc}{section}{Change History}%
-% \raggedright
-% \PrintChanges
-% \PrintIndex
-%}
-%
+%\StopEventually{\clearpage\PrintChanges \clearpage\PrintIndex}
%
%
%\section{Main Package Code}
@@ -106,321 +111,390 @@ mfirstuc.dtx
%<*mfirstuc.sty>
% \end{macrocode}
%\fi
-%\subsection{Mfirstuc Documented Code}
+%\section{Mfirstuc Documented Code}
%\label{sec:code:mfirstuc}
%\changes{2.0}{2015/09/09}{package split from glossaries}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mfirstuc}[2021/10/15 v2.07 (NLCT)]
+% \end{macrocode}
+% Rollback releases:
+% \begin{macrocode}
+\DeclareRelease{v2.07}{2021-10-15}{mfirstuc-2021-10-15.sty}
+\DeclareCurrentRelease{v2.08}{2022-10-14}
+% \end{macrocode}
+% Declare package:
+% \begin{macrocode}
+\ProvidesPackage{mfirstuc}[2022/10/14 v2.08 (NLCT)]
% \end{macrocode}
% Requires \sty{etoolbox}:\changes{1.06}{2012/05/21}{now requires
% etoolbox}
% \begin{macrocode}
\RequirePackage{etoolbox}
% \end{macrocode}
-%\begin{macro}{\makefirstuc}
-% Syntax:
-%\begin{definition}
-% \cs{makefirstuc}\marg{text}
-%\end{definition}
-% Makes the first letter uppercase, but will
-% skip initial control sequences if they are followed by a group
-% and make the first thing in the group uppercase, unless the group
-% is empty.
-% Thus \verb|\makefirstuc{abc}| will produce: Abc,
-% \verb|\makefirstuc{\ae bc}| will produce: \AE bc, but
-% \verb|\makefirstuc{\emph{abc}}| will produce \emph{Abc}.
-% This is required by \ics{Gls} and \ics{Glspl}.
-%\changes{1.08}{2013-11-04}{made robust}
+%Version 2.07 has switched to LaTeX3 for the actual case-changing.
+%The original \cs{makefirstuc} has been reimplemented to use LaTeX3
+%code. There is also a new command \cs{MFUsentencecase} which just
+%uses \cs{text\_titlecase\_first:n}. Note that \cs{MFUsentencecase} is
+%internally used by \cs{glsmakefirstuc}, which in turn is used by
+%\cs{makefirstuc} to perform the actual case-change.
+%
+%\begin{macro}{\glsmakefirstuc}
+%\changes{1.05}{2011/04/02}{new}
+% Provide a user command to make it easier to customise. This is
+% used internally by \cs{makefirstuc}. (The original commands
+% provided by \sty{mfirstuc} were part of the \sty{glossaries}
+% package, hence the ``gls'' prefix.)
% \begin{macrocode}
-\newif\if@glscs
-\newtoks\@glsmfirst
-\newtoks\@glsmrest
-\newrobustcmd*{\makefirstuc}[1]{%
+\newcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{\unexpanded{#1}}}
% \end{macrocode}
-% Check if argument starts with \cs{protect} which needs to be
-% skipped.
-%\changes{2.01}{2015-12-08}{added check for \cs{protect}}
+%\end{macro}
+%
+%\begin{macro}{\mfirstucMakeUppercase}
+% This was originally provided to allow user to replace
+%\cs{MakeUppercase} with another case-changing command.
+% This is now only used with \cs{mfugrabfirstuc}.
% \begin{macrocode}
- \@MFU@p@makefirstuc#1\relax\relax\relax\@end@MFU@protected{#1}%
-}
+\ExplSyntaxOn
+\newcommand*{\mfirstucMakeUppercase}[1]{\text_uppercase:n{#1}}
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\@MFU@protect}
-%\changes{2.03}{2016-07-29}{new}
+%\begin{option}{expanded}
+%\changes{2.08}{2022-10-14}{new}
+%Allow argument to expand.
+%This also resets the definition of \cs{mfirstucMakeUppercase}
+%in case it was changed by grabfirst.
+% \begin{macrocode}
+\DeclareOption{expanded}{%
+ \renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{#1}}%
+ \renewcommand*{\mfirstucMakeUppercase}[1]{\text_uppercase:n{#1}}%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{unexpanded}
+%\changes{2.08}{2022-10-14}{new}
+%Prevent argument of \cs{glsmakefirstuc} from expanding.
+%This also resets the definition of \cs{mfirstucMakeUppercase}
+%in case it was changed by grabfirst, but note that it doesn't use
+%\cs{unexpanded}.
+% \begin{macrocode}
+\DeclareOption{unexpanded}{%
+ \renewcommand*{\glsmakefirstuc}[1]{\MFUsentencecase{\unexpanded{#1}}}%
+ \renewcommand*{\mfirstucMakeUppercase}[1]{\text_uppercase:n{#1}}%
+}
+\ExplSyntaxOff
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\mfugrabfirstuc}
+%\changes{2.08}{2022-10-14}{new}
+%Used by the grabfirst option to emulate v2.07.
% \begin{macrocode}
-\newcommand*{\@MFU@protect}{\protect}
+\newrobustcmd*{\mfugrabfirstuc}[1]{\@mfu@grabfirstuc#1\empty}
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\@MFU@skippunc}
-%\changes{2.07}{2021-10-15}{new}
+%\begin{macro}{\@mfu@grabfirstuc}
+%\changes{2.08}{2022-10-14}{new}
% \begin{macrocode}
-\newcommand*{\@MFU@skippunc}{\MFUskippunc}
+\newcommand*{\@mfu@grabfirstuc}[2]{\mfirstucMakeUppercase{#1}#2}
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\MFUskippunc}
-%\changes{2.07}{2021-10-15}{new}
+%\begin{option}{grabfirst}
+%\changes{2.08}{2022-10-14}{new}
+%Emulate v2.07 method.
% \begin{macrocode}
-\newrobustcmd*{\MFUskippunc}[1]{#1}
+\DeclareOption{grabfirst}{%
+ \renewcommand*{\glsmakefirstuc}[1]{\mfugrabfirstuc{#1}}%
+ \renewcommand*{\mfirstucMakeUppercase}[1]{\MakeUppercase{#1}}%
+}
% \end{macrocode}
-%\end{macro}
+%\end{option}
%
-%\begin{macro}{\@MFU@p@makefirstuc}
-% Internal command to do the required action.
+%Process options.
% \begin{macrocode}
-\def\@MFU@p@makefirstuc#1#2#3\@end@MFU@protected#4{%
+\ProcessOptions
% \end{macrocode}
-%\changes{2.03}{2016-07-29}{changed test}
-%Test if the first argument is \cs{protect}.
+%
+%There are differences between \cs{makefirstuc} and
+%\cs{MFUsentencecase}, the principle ones being expansion occurs differently and
+%\cs{makefirstuc} stops at exclusions whereas
+%\cs{MFUsentencecase} skips them.
% \begin{macrocode}
- \def\gls@argi{#1}%
- \ifx\gls@argi\@MFU@protect
- \@makefirstuc{#2#3}%
- \else
+\ExplSyntaxOn
% \end{macrocode}
-% v2.07+ also check for \cs{MFUskippunc}
-%\changes{2.07}{2021-10-15}{check for \cs{MFUskippunc}}
+%\begin{macro}{\MFUsentencecase}
+%\changes{2.08}{2022-10-14}{new}
+%New command provided that simply uses LaTeX3, which expands the
+%content. This may be preferred over \cs{makefirstuc} depending on
+%the content.
% \begin{macrocode}
- \ifx\gls@argi\@MFU@skippunc
- #2\@makefirstuc{#3}%
- \else
- \@makefirstuc{#4}%
- \fi
- \fi
+\newcommand{\MFUsentencecase}[1]{\text_titlecase_first:n{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MFUexcl}
+%\changes{2.08}{2022-10-14}{new}
+%Add a command to the exclusion list. This is used by
+%\cs{text\_titlecase\_first:n}
+%to skip commands that shouldn't have their argument changed (such
+%as \cs{ref}). It's also used by \cs{makefirstuc}.
+% \begin{macrocode}
+\newcommand{\MFUexcl}[1]{
+ \tl_if_empty:nF { #1 }
+ {
+ \tl_if_in:NnF \l_text_case_exclude_arg_tl {#1}
+ {
+ \tl_put_right:Nn \l_text_case_exclude_arg_tl {#1}
+ }
+ }
}
% \end{macrocode}
%\end{macro}
-%
-%\begin{macro}{\@makefirstuc}
-% Internal command to do the required action.
+%Add \cs{ensuremath} as an exclusion otherwise \cs{makefirstuc}
+%will try passing its argument to \cs{MFUsentencecase}, which will
+%fail.
% \begin{macrocode}
-\newcommand*{\@makefirstuc}[1]{%
- \def\gls@argi{#1}%
- \ifx\gls@argi\@empty
+\MFUexcl{\ensuremath}
% \end{macrocode}
-% If the argument is empty, do nothing.
+%
+%Test if the given command is in the exclusion list.
% \begin{macrocode}
- \else
+\cs_new:Npn \mfirstuc_if_excluded:NTF #1 #2 #3
+ {
+ \tl_if_in:NnTF \l_text_case_exclude_arg_tl {#1} {#2} {#3}
+ }
% \end{macrocode}
-%\changes{1.03}{2008/12/22}{changed \cs{protected@edef} to \cs{def}}
+%Provide an implementation of \cs{makefirstuc} that matches
+%older versions as much as possible.
% \begin{macrocode}
- \def\@gls@tmp{\ #1}%
- \@onelevel@sanitize\@gls@tmp
- \expandafter\@gls@checkcs\@gls@tmp\relax\relax
- \if@glscs
+\tl_new:N \l__mfirstuc_stack_tl
+\tl_new:N \l__mfirstuc_head_tl
+\tl_new:N \l__mfirstuc_next_tl
% \end{macrocode}
-% Check if we have two sequential control sequences.
-%\changes{2.0}{2015/09/09}{added check for two control sequences}
+%In addition to exclusions, also provide blockers. These are only
+%supported by \cs{makefirstuc}. Exclusions and
+%their argument are skipped, whereas blockers prevent case-change.
+%For example, sentence-casing \verb|\label{ex}some text| should skip
+%\verb|\label{ex}|, whereas \verb|\nameref{ex} some text| shouldn't
+%have any case change applied.
% \begin{macrocode}
- \expandafter\def\expandafter\@gls@tmp\expandafter{\expandafter
- \ \@gobble #1}%
- \@onelevel@sanitize\@gls@tmp
- \expandafter\@gls@checkcs\@gls@tmp\relax\relax
- \if@glscs\@glscsfalse\else\@glscstrue\fi
- \fi
- \if@glscs
- \@gls@getbody #1{}\@nil
- \ifx\@gls@rest\@empty
- \glsmakefirstuc{#1}%
- \else
- \expandafter\@gls@split\@gls@rest\@nil
- \ifx\@gls@first\@empty
- \glsmakefirstuc{#1}%
- \else
+\tl_new:N \l__mfirstuc_blocker_tl
% \end{macrocode}
-%\changes{2.06}{2017-11-14}{check for inner control sequence}
-%Does \cs{@gls@first} start with a control sequence?
-% \begin{macrocode}
- \edef\@gls@tmp\expandafter{\noexpand\ \expandonce\@gls@first}%
- \@onelevel@sanitize\@gls@tmp
- \expandafter\@gls@checkcs\@gls@tmp\relax\relax
- \if@glscs
- \edef\@gls@domfirstuc{\expandonce\@gls@body
- {\noexpand\makefirstuc{\expandonce\@gls@first
- \expandonce\@gls@rest}%
- }%
- }%
- \else
- \expandafter\@glsmfirst\expandafter{\@gls@first}%
- \expandafter\@glsmrest\expandafter{\@gls@rest}%
-% \end{macrocode}
-%\changes{2.06}{2017-11-14}{added braces to \cs{glsmakefirstuc} argument}
-% \begin{macrocode}
- \edef\@gls@domfirstuc{\noexpand\@gls@body
- {\noexpand\glsmakefirstuc{\the\@glsmfirst}}%
- \the\@glsmrest}%
- \fi
- \@gls@domfirstuc
- \fi
- \fi
- \else
- \glsmakefirstuc{#1}%
- \fi
- \fi
+%
+%\begin{macro}{\MFUblocker}
+%\changes{2.08}{2022-10-14}{new}
+%Add a command to the blocker list.
+% \begin{macrocode}
+\newcommand{\MFUblocker}[1]{
+ \tl_if_empty:nF { #1 }
+ {
+ \tl_if_in:NnF \l__mfirstuc_blocker_tl {#1}
+ {
+ \tl_put_right:Nn \l__mfirstuc_blocker_tl {#1}
+ }
+ \MFUexcl { #1 }
+ }
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\@gls@split}
-% Put first argument in \cs{@gls@first} and second argument in
-% \cs{@gls@rest}:
-%\changes{2.03}{2016-07-29}{added check for datatool-base UTF-8 support}
+%Test if the given command is in the blocker list.
% \begin{macrocode}
-\ifdef\dtl@getfirst@UTFviii
-{%
- \def\@gls@split#1#2\@nil{%
- \ifbool{@dtl@utf8}
- {%
- \expandafter\dtl@if@two@octets#1#2\relax\dtl@end@if@two@octets
- {%
- \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii
- \let\@gls@first\dtl@first
- \let\@gls@rest\dtl@rest
- }%
- {%
- \def\@gls@first{#1}\def\@gls@rest{#2}%
- }%
- }%
- {%
+\cs_new:Npn \tl_if_mfirstuc_blocker:nTF #1 #2 #3
+ {
+ \tl_if_in:NnTF \l__mfirstuc_blocker_tl {#1} {#2} {#3}
+ }
% \end{macrocode}
-%\changes{2.04}{2016-07-31}{added missing false part}
+%Is there a way to do this without \cs{expandafter}?
% \begin{macrocode}
- \def\@gls@first{#1}\def\@gls@rest{#2}%
- }%
- }
-}%
-{%
- \def\@gls@split#1#2\@nil{%
- \def\@gls@first{#1}\def\@gls@rest{#2}%
+\cs_new:Npn \tl_if_mfirstuc_blocker:VTF #1 #2 #3
+ {
+ \expandafter \tl_if_mfirstuc_blocker:nTF \expandafter {#1} {#2} {#3}
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\makefirstuc}
+%\begin{definition}
+% \cs{makefirstuc}\marg{text}
+%\end{definition}
+%\changes{1.08}{2013-11-04}{made robust}
+%\changes{2.08}{2022-10-14}{reimplement using \LaTeX3}
+% \begin{macrocode}
+\newrobustcmd{\makefirstuc}[1]{%
+ \tl_set:Nn \l__mfirstuc_stack_tl {#1}
+ \tl_if_empty:NF \l__mfirstuc_stack_tl
+ {
+ \tl_if_single:NTF \l__mfirstuc_stack_tl
+ {
+ \glsmakefirstuc{#1}
+ }
+ {
+ \tl_if_head_is_group:nTF {#1}
+ {
+ \glsmakefirstuc{#1}
+ }
+ {
+ \tl_if_head_eq_catcode:nNTF {#1} \relax
+ {
+ \tl_set:NV \l_tmpa_tl \l__mfirstuc_stack_tl
+ \tl_set:Nx \l__mfirstuc_head_tl { \tl_head:V \l_tmpa_tl }
+ \tl_set:Nx \l__mfirstuc_stack_tl { \tl_tail:N \l__mfirstuc_stack_tl }
+ \tl_if_eq:NnTF \l__mfirstuc_head_tl { \protect }
+ {
+ \tl_set:NV \l_tmpa_tl \l__mfirstuc_stack_tl
+ \tl_set:Nx \l__mfirstuc_head_tl { \tl_head:V \l_tmpa_tl }
+ \tl_set:Nx \l__mfirstuc_stack_tl { \tl_tail:N \l__mfirstuc_stack_tl }
+ }
+ {}
+ \tl_if_mfirstuc_blocker:VTF \l__mfirstuc_head_tl
+ { #1 }
+ {
+ \let \l_tmpa_tl \l__mfirstuc_stack_tl
+ \tl_set:Nx \l__mfirstuc_next_tl { \tl_head:N \l_tmpa_tl }
+ \tl_if_single:NTF \l__mfirstuc_next_tl
+ {
+ \glsmakefirstuc{#1}
+ }
+ {
+ \tl_set:Nx \l__mfirstuc_stack_tl { \tl_tail:N \l__mfirstuc_stack_tl }
+ \tl_clear:N \l_tmpa_tl
+ \tl_put_right:Nn \l_tmpa_tl { \__mfirstuc_inner:nnn }
+ \tl_put_right:NV \l_tmpa_tl \l__mfirstuc_head_tl
+ \tl_put_right:Nx \l_tmpa_tl
+ {
+ { \expandonce \l__mfirstuc_next_tl }
+ { \expandonce \l__mfirstuc_stack_tl }
+ }
+ \tl_use:N \l_tmpa_tl
+ }
+ }
+ }
+ {
+ \glsmakefirstuc{#1}
+ }
+ }
+ }
}
}
% \end{macrocode}
%\end{macro}
+%
% \begin{macrocode}
-\def\@gls@checkcs#1 #2#3\relax{%
- \def\@gls@argi{#1}\def\@gls@argii{#2}%
- \ifx\@gls@argi\@gls@argii
- \@glscstrue
- \else
- \@glscsfalse
- \fi
-}
-% \end{macrocode}
-% Has \sty{datatool-base} v2.24 (or above) been loaded? If so and we
-% have UTF-8 enabled, we can grab the first octet.
-%\begin{macro}{\@mfu@applytofirst}
-%\changes{2.03}{2016-07-29}{new}
-% \begin{macrocode}
-\ifdef\dtl@getfirst@UTFviii
-{%
- \def\@mfu@applytofirst#1#2\@mfu@end@applytofirst#3{%
- \expandafter\dtl@if@two@octets#1#2\relax\dtl@end@if@two@octets
- {%
- \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii
- \expandafter#3\expandafter{\dtl@first}\dtl@rest
- }%
- {%
+\cs_new_protected:Npn \__mfirstuc_inner:nnn #1 #2 #3
+ {
% \end{macrocode}
-%First argument needs to be grouped in case it consists of more than
-%one token.
-%\changes{2.05}{2017-11-10}{grouped first argument}
+% Mappings trump exclusions.
% \begin{macrocode}
- #3{#1}#2%
- }%
- }%
-}%
-{%
+ \mfirstuc_get_map:NN #1 \l_tmpb_tl
+ \quark_if_no_value:NTF \l_tmpb_tl
+ {
+ \mfirstuc_if_excluded:NTF #1
+ { #1{#2}\makefirstuc{#3} }
+ { #1{\makefirstuc{#2}}#3 }
+ }
+ {
+ \l_tmpb_tl {#2} #3
+ }
+ }
% \end{macrocode}
-%First argument needs to be grouped in case it consists of more than
-%one token.
-%\changes{2.05}{2017-11-10}{grouped first argument}
+%Mappings.
% \begin{macrocode}
- \def\@mfu@applytofirst#1#2\@mfu@end@applytofirst#3{#3{#1}#2}
-}
+\prop_new:N \l__mfirstuc_mappings_prop
% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\MFUapplytofirst}
-%\changes{2.03}{2016-07-29}{new}
-%\begin{definition}
-%\cs{MFUapplytofirst}\marg{cs}\marg{text}
-%\end{definition}
-% Apply \meta{cs} to first token of text, or first UTF-8 character
-% if \sty{datatool-base} v2.24 above has been loaded with the utf8
-% support enabled.
+%\begin{macro}{\MFUaddmap}
+%\changes{2.08}{2022-10-14}{new}
+%Adds a mapping from a control sequence to the appropriate sentence
+%case version. No map is added if either argument is empty.
% \begin{macrocode}
-\ifdef\dtl@getfirst@UTFviii
-{%
- \newcommand*{\MFUapplytofirst}[2]{%
- \ifbool{@dtl@utf8}
- {%
- \ifblank{#2}%
- {#1{#2}}%
- {%
- \ifblank{#1}%
- {#1#2}%
- {%
- \@mfu@applytofirst#2\@mfu@end@applytofirst#1\relax
- }%
- }%
- }%
- {%
- #1#2%
- }%
+\newrobustcmd*{\MFUaddmap}[2]{%
+ \tl_if_empty:nF { #1 }
+ {
+ \tl_if_empty:nF { #2 }
+ {
+ \prop_put:Nnn \l__mfirstuc_mappings_prop {#1} {#2}
+ }
}
-}%
-{%
- \newcommand*{\MFUapplytofirst}[2]{#1#2}
+ \MFUexcl { #1 }
+ \MFUblocker { #2 }
}
% \end{macrocode}
%\end{macro}
-%
-%\begin{macro}{\@gls@makefirstuc}
-% Make first thing upper case:
% \begin{macrocode}
-\def\@gls@makefirstuc#1{\MFUapplytofirst\mfirstucMakeUppercase{#1}}
+\cs_new:Npn \mfirstuc_get_map:NN #1 #2
+ {
+ \prop_get:NnN \l__mfirstuc_mappings_prop {#1} #2
+ }
% \end{macrocode}
-%\end{macro}
-%
-%\begin{macro}{\mfirstucMakeUppercase}
-% Allow user to replace \cs{MakeUppercase} with another case
-% changing command.
+%\begin{macro}{\MFUsaveatend}
+%\changes{2.08}{2022-10-14}{new}
+%Save exclusions, blockers and mappings in the aux file, if required
+%by some external tool, but delays action to the end of the document.
% \begin{macrocode}
-\newcommand*{\mfirstucMakeUppercase}{\MakeUppercase}
+\newcommand{\MFUsaveatend}{
+ \AtEndDocument { \@MFUsavetoaux }
% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\glsmakefirstuc}
-%\changes{1.05}{2011/04/02}{new}
-% Provide a user command to make it easier to customise.
+%Disable this command.
% \begin{macrocode}
-\newcommand*{\glsmakefirstuc}[1]{\@gls@makefirstuc{#1}}
+ \let\MFUsaveatend\relax
+}
% \end{macrocode}
%\end{macro}
-%
-% Get the first grouped argument and store in \cs{@gls@body}.
+%\begin{macro}{\MFUsave}
+%\changes{2.08}{2022-10-14}{new}
+%As above but do now.
% \begin{macrocode}
-\def\@gls@getbody#1#{\def\@gls@body{#1}\@gls@gobbletonil}
+\newcommand{\MFUsave}{
+ \@MFUsavetoaux
% \end{macrocode}
-% Scoup up everything to \cs{@nil} and store in \cs{@gls@rest}:
+%Disable further attempts.
% \begin{macrocode}
-\def\@gls@gobbletonil#1\@nil{\def\@gls@rest{#1}}
+ \let\@MFUsavetoaux\relax
+ \let\MFUsave\relax
+ \let\MFUsaveatend\relax
+}
% \end{macrocode}
-%
-%\begin{macro}{\xmakefirstuc}
-% Expand argument once before applying \cs{makefirstuc}
-% (added v1.01).
-% \begin{macrocode}
-\newcommand*{\xmakefirstuc}[1]{%
- \expandafter\makefirstuc\expandafter{#1}%
+%\end{macro}
+%\begin{macro}{\@MFUsavetoaux}
+%\changes{2.08}{2022-10-14}{new}
+%Save exclusions, blockers and mappings in the aux file, if required
+%by some external tool.
+% \begin{macrocode}
+\newcommand{\@MFUsavetoaux}{
+ \protected@write\@auxout{}
+ { \tl_to_str:n { \providecommand{\@mfu@excls}[1]{} } }
+ \protected@write\@auxout{}
+ { \tl_to_str:n { \providecommand{\@mfu@blockers}[1]{} } }
+ \protected@write\@auxout{}
+ { \tl_to_str:n { \providecommand{\@mfu@mappings}[1]{} } }
+% \end{macrocode}
+%Save current values.
+% \begin{macrocode}
+ \protected@write\@auxout{}
+ {
+ \string\@mfu@excls { \tl_to_str:V \l_text_case_exclude_arg_tl }
+ }
+ \protected@write\@auxout{}
+ {
+ \string\@mfu@blockers { \tl_to_str:V \l__mfirstuc_blocker_tl }
+ }
+ \protected@write\@auxout{}
+ {
+ \string\@mfu@mappings
+ { \expandonce { \prop_to_keyval:N \l__mfirstuc_mappings_prop } }
+ }
}
% \end{macrocode}
%\end{macro}
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%The remaining code hasn't been converted to LaTeX3 yet, but may in
+%the future, so don't rely on internal commands.
%
%\begin{macro}{\emakefirstuc}
%\changes{1.10}{2015/05/03}{new}
-% Fully expand argument before applying \cs{makefirstuc}
+% Fully expand argument before applying case-change.
% \begin{macrocode}
\newrobustcmd*{\emakefirstuc}[1]{%
\protected@edef\@MFU@caparg{#1}%
@@ -429,6 +503,33 @@ mfirstuc.dtx
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\xmakefirstuc}
+% \begin{macrocode}
+\newcommand*{\xmakefirstuc}[1]{\expandafter\makefirstuc\expandafter{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MFUskippunc}
+%\changes{2.07}{2021-10-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\MFUskippunc}[1]{#1}
+\MFUexcl{\MFUskippunc}
+% \end{macrocode}
+%\end{macro}
+%
+%Title case commands. Each word has the first letter converted to
+%upper case using \cs{MFUcapwordfirstuc}. This uses \cs{makefirstuc}
+%by default. It may be redefined to use \cs{MFUsentencecase} or
+%\cs{text\_titlecase:n} as applicable.
+%\begin{macro}{\MFUcapwordfirstuc}
+%\changes{2.07}{2021-10-15}{new}
+% \begin{macrocode}
+\newcommand*{\MFUcapwordfirstuc}[1]{%
+ \makefirstuc{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\capitalisewords}
%\changes{1.06}{2012/05/21}{new}
% Capitalise each word in the argument. Words are considered to be
@@ -520,15 +621,6 @@ mfirstuc.dtx
% \end{macrocode}
%\end{macro}
%
-%\begin{macro}{\MFUcapwordfirstuc}
-%\changes{2.07}{2021-10-15}{new}
-% \begin{macrocode}
-\newcommand*{\MFUcapwordfirstuc}[1]{%
- \makefirstuc{#1}%
-}
-% \end{macrocode}
-%\end{macro}
-%
%\begin{macro}{\MFUwordbreak}
%\changes{2.07}{2021-10-15}{new}
%Markup a character (or command) that should be treated as a word
@@ -614,7 +706,7 @@ mfirstuc.dtx
%
%\begin{macro}{\mfu@checkword}
% Check if word should be capitalised.
-% This originally used \sty{etoolbox}'s \ics{ifinlist} command
+% This originally used \sty{etoolbox}'s \cs{ifinlist} command
% but this doesn't work if the word contains grouping.
%\changes{1.09}{2017-07-30}{new}
%\changes{2.02}{2015-12-17}{modified to use loop instead of \cs{ifinlist}}
@@ -1051,6 +1143,278 @@ mfirstuc.dtx
}
% \end{macrocode}
%\end{macro}
+%
+%The remaining code is redundant and will be removed in future.
+%
+%\begin{macro}{\@org@makefirstuc}
+% This is the original definition of \cs{makefirstuc}. It will be
+% removed in later versions.
+% Syntax:
+%\begin{definition}
+% \cs{makefirstuc}\marg{text}
+%\end{definition}
+%\changes{1.08}{2013-11-04}{made robust}
+%\changes{2.08}{2022-10-14}{updated to use \cs{MFUsentencecase}}
+% \begin{macrocode}
+\newif\if@glscs
+\newtoks\@glsmfirst
+\newtoks\@glsmrest
+\newrobustcmd*{\@org@makefirstuc}[1]{%
+% \end{macrocode}
+% Check if argument starts with \cs{protect} which needs to be
+% skipped.
+%\changes{2.01}{2015-12-08}{added check for \cs{protect}}
+% \begin{macrocode}
+ \@MFU@p@makefirstuc#1\relax\relax\relax\@end@MFU@protected{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@MFU@protect}
+%\changes{2.03}{2016-07-29}{new}
+% \begin{macrocode}
+\newcommand*{\@MFU@protect}{\protect}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@MFU@skippunc}
+%\changes{2.07}{2021-10-15}{new}
+% \begin{macrocode}
+\newcommand*{\@MFU@skippunc}{\MFUskippunc}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@MFU@p@makefirstuc}
+% Internal command to do the required action.
+% \begin{macrocode}
+\def\@MFU@p@makefirstuc#1#2#3\@end@MFU@protected#4{%
+% \end{macrocode}
+%\changes{2.03}{2016-07-29}{changed test}
+%Test if the first argument is \cs{protect}.
+% \begin{macrocode}
+ \def\gls@argi{#1}%
+ \ifx\gls@argi\@MFU@protect
+ \@makefirstuc{#2#3}%
+ \else
+% \end{macrocode}
+% v2.07+ also check for \cs{MFUskippunc}
+%\changes{2.07}{2021-10-15}{check for \cs{MFUskippunc}}
+% \begin{macrocode}
+ \ifx\gls@argi\@MFU@skippunc
+ #2\@makefirstuc{#3}%
+ \else
+ \@makefirstuc{#4}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@makefirstuc}
+% Internal command to do the required action.
+% \begin{macrocode}
+\newcommand*{\@makefirstuc}[1]{%
+ \def\gls@argi{#1}%
+ \ifx\gls@argi\@empty
+% \end{macrocode}
+% If the argument is empty, do nothing.
+% \begin{macrocode}
+ \else
+% \end{macrocode}
+%\changes{1.03}{2008/12/22}{changed \cs{protected@edef} to \cs{def}}
+% \begin{macrocode}
+ \def\@gls@tmp{\ #1}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\@gls@checkcs\@gls@tmp\relax\relax
+ \if@glscs
+% \end{macrocode}
+% Check if we have two sequential control sequences.
+%\changes{2.0}{2015/09/09}{added check for two control sequences}
+% \begin{macrocode}
+ \expandafter\def\expandafter\@gls@tmp\expandafter{\expandafter
+ \ \@gobble #1}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\@gls@checkcs\@gls@tmp\relax\relax
+ \if@glscs\@glscsfalse\else\@glscstrue\fi
+ \fi
+ \if@glscs
+ \@gls@getbody #1{}\@nil
+ \ifx\@gls@rest\@empty
+ \glsmakefirstuc{#1}%
+ \else
+ \expandafter\@gls@split\@gls@rest\@nil
+ \ifx\@gls@first\@empty
+ \glsmakefirstuc{#1}%
+ \else
+% \end{macrocode}
+%\changes{2.06}{2017-11-14}{check for inner control sequence}
+%Does \cs{@gls@first} start with a control sequence?
+% \begin{macrocode}
+ \edef\@gls@tmp\expandafter{\noexpand\ \expandonce\@gls@first}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\@gls@checkcs\@gls@tmp\relax\relax
+ \if@glscs
+ \edef\@gls@domfirstuc{\expandonce\@gls@body
+ {\noexpand\makefirstuc{\expandonce\@gls@first
+ \expandonce\@gls@rest}%
+ }%
+ }%
+ \else
+ \expandafter\@glsmfirst\expandafter{\@gls@first}%
+ \expandafter\@glsmrest\expandafter{\@gls@rest}%
+% \end{macrocode}
+%\changes{2.06}{2017-11-14}{added braces to \cs{glsmakefirstuc} argument}
+% \begin{macrocode}
+ \edef\@gls@domfirstuc{\noexpand\@gls@body
+ {\noexpand\glsmakefirstuc{\the\@glsmfirst}}%
+ \the\@glsmrest}%
+ \fi
+ \@gls@domfirstuc
+ \fi
+ \fi
+ \else
+ \glsmakefirstuc{#1}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@split}
+% Put first argument in \cs{@gls@first} and second argument in
+% \cs{@gls@rest}:
+%\changes{2.03}{2016-07-29}{added check for datatool-base UTF-8 support}
+% \begin{macrocode}
+\ifdef\dtl@getfirst@UTFviii
+{%
+ \def\@gls@split#1#2\@nil{%
+ \ifbool{@dtl@utf8}
+ {%
+ \expandafter\dtl@if@two@octets#1#2\relax\dtl@end@if@two@octets
+ {%
+ \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii
+ \let\@gls@first\dtl@first
+ \let\@gls@rest\dtl@rest
+ }%
+ {%
+ \def\@gls@first{#1}\def\@gls@rest{#2}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+%\changes{2.04}{2016-07-31}{added missing false part}
+% \begin{macrocode}
+ \def\@gls@first{#1}\def\@gls@rest{#2}%
+ }%
+ }
+}%
+{%
+ \def\@gls@split#1#2\@nil{%
+ \def\@gls@first{#1}\def\@gls@rest{#2}%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\def\@gls@checkcs#1 #2#3\relax{%
+ \def\@gls@argi{#1}\def\@gls@argii{#2}%
+ \ifx\@gls@argi\@gls@argii
+ \@glscstrue
+ \else
+ \@glscsfalse
+ \fi
+}
+% \end{macrocode}
+% Has \sty{datatool-base} v2.24 (or above) been loaded? If so and we
+% have UTF-8 enabled, we can grab the first octet.
+%\begin{macro}{\@mfu@applytofirst}
+%\changes{2.03}{2016-07-29}{new}
+% \begin{macrocode}
+\ifdef\dtl@getfirst@UTFviii
+{%
+ \def\@mfu@applytofirst#1#2\@mfu@end@applytofirst#3{%
+ \expandafter\dtl@if@two@octets#1#2\relax\dtl@end@if@two@octets
+ {%
+ \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii
+ \expandafter#3\expandafter{\dtl@first}\dtl@rest
+ }%
+ {%
+% \end{macrocode}
+%First argument needs to be grouped in case it consists of more than
+%one token.
+%\changes{2.05}{2017-11-10}{grouped first argument}
+% \begin{macrocode}
+ #3{#1}#2%
+ }%
+ }%
+}%
+{%
+% \end{macrocode}
+%First argument needs to be grouped in case it consists of more than
+%one token.
+%\changes{2.05}{2017-11-10}{grouped first argument}
+% \begin{macrocode}
+ \def\@mfu@applytofirst#1#2\@mfu@end@applytofirst#3{%
+ #3{#1}#2%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\MFUapplytofirst}
+%\changes{2.03}{2016-07-29}{new}
+%\changes{2.08}{2022-10-14}{deprecated}
+%\begin{definition}
+%\cs{MFUapplytofirst}\marg{cs}\marg{text}
+%\end{definition}
+% Apply \meta{cs} to first token of text, or first UTF-8 character
+% if \sty{datatool-base} v2.24 above has been loaded with the utf8
+% support enabled. Deprecated as from v2.08.
+% \begin{macrocode}
+\ifdef\dtl@getfirst@UTFviii
+{%
+ \newcommand*{\MFUapplytofirst}[2]{%
+ \ifbool{@dtl@utf8}
+ {%
+ \ifblank{#2}%
+ {#1{#2}}%
+ {%
+ \ifblank{#1}%
+ {#1#2}%
+ {%
+ \@mfu@applytofirst#2\@mfu@end@applytofirst#1\relax
+ }%
+ }%
+ }%
+ {%
+ #1#2%
+ }%
+ }
+}%
+{%
+ \newcommand*{\MFUapplytofirst}[2]{%
+ #1#2%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@makefirstuc}
+%\changes{2.08}{2022-10-14}{updated to use \cs{MFUsentencecase}}
+%Deprecated.
+% \begin{macrocode}
+\def\@gls@makefirstuc#1{\MFUsentencecase{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+% Get the first grouped argument and store in \cs{@gls@body}.
+% \begin{macrocode}
+\def\@gls@getbody#1#{\def\@gls@body{#1}\@gls@gobbletonil}
+% \end{macrocode}
+% Scoup up everything to \cs{@nil} and store in \cs{@gls@rest}:
+% \begin{macrocode}
+\def\@gls@gobbletonil#1\@nil{\def\@gls@rest{#1}}
+% \end{macrocode}
+%
%\iffalse
% \begin{macrocode}
%</mfirstuc.sty>
@@ -1065,7 +1429,7 @@ mfirstuc.dtx
%\label{sec:code:mfirstuc-english}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mfirstuc-english}[2021/10/15 v2.07 (NLCT)]
+\ProvidesPackage{mfirstuc-english}[2022/10/14 v2.08 (NLCT)]
% \end{macrocode}
% Load \sty{mfirstuc} if not already loaded:
% \begin{macrocode}
@@ -1098,6 +1462,464 @@ mfirstuc.dtx
%\fi
%\iffalse
% \begin{macrocode}
+%<*mfirstuc-2021-10-15.sty>
+% \end{macrocode}
+%\fi
+% \section{Rollback v2.07 (mfirstuc-2021-10-15.sty)}
+% Version 2.07 preserved for rollback.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mfirstuc}[2021/10/15 v2.07 (NLCT)]
+\RequirePackage{etoolbox}
+\newif\if@glscs
+\newtoks\@glsmfirst
+\newtoks\@glsmrest
+\newrobustcmd*{\makefirstuc}[1]{%
+ \@MFU@p@makefirstuc#1\relax\relax\relax\@end@MFU@protected{#1}%
+}
+\newcommand*{\@MFU@protect}{\protect}
+\newcommand*{\@MFU@skippunc}{\MFUskippunc}
+\newrobustcmd*{\MFUskippunc}[1]{#1}
+\def\@MFU@p@makefirstuc#1#2#3\@end@MFU@protected#4{%
+ \def\gls@argi{#1}%
+ \ifx\gls@argi\@MFU@protect
+ \@makefirstuc{#2#3}%
+ \else
+ \ifx\gls@argi\@MFU@skippunc
+ #2\@makefirstuc{#3}%
+ \else
+ \@makefirstuc{#4}%
+ \fi
+ \fi
+}
+\newcommand*{\@makefirstuc}[1]{%
+ \def\gls@argi{#1}%
+ \ifx\gls@argi\@empty
+ \else
+ \def\@gls@tmp{\ #1}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\@gls@checkcs\@gls@tmp\relax\relax
+ \if@glscs
+ \expandafter\def\expandafter\@gls@tmp\expandafter{\expandafter
+ \ \@gobble #1}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\@gls@checkcs\@gls@tmp\relax\relax
+ \if@glscs\@glscsfalse\else\@glscstrue\fi
+ \fi
+ \if@glscs
+ \@gls@getbody #1{}\@nil
+ \ifx\@gls@rest\@empty
+ \glsmakefirstuc{#1}%
+ \else
+ \expandafter\@gls@split\@gls@rest\@nil
+ \ifx\@gls@first\@empty
+ \glsmakefirstuc{#1}%
+ \else
+ \edef\@gls@tmp\expandafter{\noexpand\ \expandonce\@gls@first}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\@gls@checkcs\@gls@tmp\relax\relax
+ \if@glscs
+ \edef\@gls@domfirstuc{\expandonce\@gls@body
+ {\noexpand\makefirstuc{\expandonce\@gls@first
+ \expandonce\@gls@rest}%
+ }%
+ }%
+ \else
+ \expandafter\@glsmfirst\expandafter{\@gls@first}%
+ \expandafter\@glsmrest\expandafter{\@gls@rest}%
+ \edef\@gls@domfirstuc{\noexpand\@gls@body
+ {\noexpand\glsmakefirstuc{\the\@glsmfirst}}%
+ \the\@glsmrest}%
+ \fi
+ \@gls@domfirstuc
+ \fi
+ \fi
+ \else
+ \glsmakefirstuc{#1}%
+ \fi
+ \fi
+}
+\ifdef\dtl@getfirst@UTFviii
+{%
+ \def\@gls@split#1#2\@nil{%
+ \ifbool{@dtl@utf8}
+ {%
+ \expandafter\dtl@if@two@octets#1#2\relax\dtl@end@if@two@octets
+ {%
+ \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii
+ \let\@gls@first\dtl@first
+ \let\@gls@rest\dtl@rest
+ }%
+ {%
+ \def\@gls@first{#1}\def\@gls@rest{#2}%
+ }%
+ }%
+ {%
+ \def\@gls@first{#1}\def\@gls@rest{#2}%
+ }%
+ }
+}%
+{%
+ \def\@gls@split#1#2\@nil{%
+ \def\@gls@first{#1}\def\@gls@rest{#2}%
+ }
+}
+\def\@gls@checkcs#1 #2#3\relax{%
+ \def\@gls@argi{#1}\def\@gls@argii{#2}%
+ \ifx\@gls@argi\@gls@argii
+ \@glscstrue
+ \else
+ \@glscsfalse
+ \fi
+}
+\ifdef\dtl@getfirst@UTFviii
+{%
+ \def\@mfu@applytofirst#1#2\@mfu@end@applytofirst#3{%
+ \expandafter\dtl@if@two@octets#1#2\relax\dtl@end@if@two@octets
+ {%
+ \dtl@getfirst@UTFviii#1#2\@nil\end@dtl@getfirst@UTFviii
+ \expandafter#3\expandafter{\dtl@first}\dtl@rest
+ }%
+ {%
+ #3{#1}#2%
+ }%
+ }%
+}%
+{%
+ \def\@mfu@applytofirst#1#2\@mfu@end@applytofirst#3{#3{#1}#2}
+}
+\ifdef\dtl@getfirst@UTFviii
+{%
+ \newcommand*{\MFUapplytofirst}[2]{%
+ \ifbool{@dtl@utf8}
+ {%
+ \ifblank{#2}%
+ {#1{#2}}%
+ {%
+ \ifblank{#1}%
+ {#1#2}%
+ {%
+ \@mfu@applytofirst#2\@mfu@end@applytofirst#1\relax
+ }%
+ }%
+ }%
+ {%
+ #1#2%
+ }%
+ }
+}%
+{%
+ \newcommand*{\MFUapplytofirst}[2]{#1#2}
+}
+\def\@gls@makefirstuc#1{\MFUapplytofirst\mfirstucMakeUppercase{#1}}
+\newcommand*{\mfirstucMakeUppercase}{\MakeUppercase}
+\newcommand*{\glsmakefirstuc}[1]{\@gls@makefirstuc{#1}}
+\def\@gls@getbody#1#{\def\@gls@body{#1}\@gls@gobbletonil}
+\def\@gls@gobbletonil#1\@nil{\def\@gls@rest{#1}}
+\newcommand*{\xmakefirstuc}[1]{%
+ \expandafter\makefirstuc\expandafter{#1}%
+}
+\newrobustcmd*{\emakefirstuc}[1]{%
+ \protected@edef\@MFU@caparg{#1}%
+ \expandafter\makefirstuc\expandafter{\@MFU@caparg}%
+}
+\newrobustcmd*{\capitalisewords}[1]{%
+ \let\@mfu@checkword\@gobble
+ \def\gls@add@space{}%
+ \let\@mfu@domakefirstuc\@MFU@dofirst@capword
+ \mfu@capitalisewords#1 \@nil\mfu@endcap
+}
+\newcommand*{\@mfu@mid@capitalisewords}[1]{%
+ \def\gls@add@space{}%
+ \let\@mfu@domakefirstuc\@MFU@do@capword
+ \mfu@capitalisewords#1 \@nil\mfu@endcap
+}
+\def\mfu@capitalisewords#1 #2\mfu@endcap{%
+ \def\mfu@cap@first{#1}%
+ \def\mfu@cap@second{#2}%
+ \gls@add@space
+ \@mfu@checkword{#1}%
+ \@mfu@domakefirstuc{#1}%
+ \def\gls@add@space{ }%
+ \ifx\mfu@cap@second\@nnil
+ \let\next@mfu@cap\mfu@noop
+ \else
+ \let\next@mfu@cap\mfu@capitalisewords
+ \let\@mfu@checkword\mfu@checkword
+ \fi
+ \next@mfu@cap#2\mfu@endcap
+}
+\def\mfu@noop#1\mfu@endcap{}
+\newif\ifMFUhyphen
+\MFUhyphenfalse
+\newcommand*{\@MFU@do@capword}[1]{%
+ \let\@MFU@cappingword\MFUcapword
+ \@MFUwordbreak#1\MFUwordbreak{}\@nil\@endMFUwordbreak
+}
+\newcommand*{\@MFU@dofirst@capword}[1]{%
+ \let\@MFU@cappingword\MFUcapword
+ \@MFUfirstwordbreak#1\MFUwordbreak{}\@nil\@endMFUfirstwordbreak
+}
+\newcommand*{\MFUcapword}[1]{%
+ \ifMFUhyphen
+ \MFUhyphencapword{#1}%
+ \else
+ \MFUcapwordfirstuc{#1}%
+ \fi
+}
+\newcommand*{\MFUcapwordfirstuc}[1]{%
+ \makefirstuc{#1}%
+}
+\newrobustcmd*{\MFUwordbreak}[1]{#1}
+\newcommand*{\MFUhyphencapword}[1]{%
+ \@MFUcapword#1-\@nil\@endMFUcapword
+}
+\def\@MFUcapword#1-#2\@endMFUcapword{%
+ \MFUcapwordfirstuc{#1}%
+ \def\@mfu@argii{#2}%
+ \ifx\@mfu@argii\@nnil
+ \else
+ -\@MFUcapword#2\@endMFUcapword
+ \fi
+}
+\def\@MFUwordbreak#1\MFUwordbreak#2#3\@endMFUwordbreak{%
+ \def\@mfu@argiii{#3}%
+ \ifx\@mfu@argiii\@nnil
+ \@MFU@cappingword{#1}%
+ \else
+ \let\@MFU@cappingword\@MFU@wordbreakcapword
+ \@MFU@cappingword{#1}%
+ #2\@MFUwordbreak#3\@endMFUwordbreak
+ \fi
+}
+\newcommand*{\@MFU@wordbreakcapword}[1]{%
+ \mfu@checkword{#1}%
+ \@mfu@domakefirstuc{#1}%
+}
+\def\@MFUfirstwordbreak#1\MFUwordbreak#2#3\@endMFUfirstwordbreak{%
+ \def\@mfu@argiii{#3}%
+ \ifx\@mfu@argiii\@nnil
+ \@MFU@cappingword{#1}%
+ \else
+ \let\@MFU@cappingword\@MFU@firstwordbreakcapword
+ \@MFU@cappingword{#1}%
+ #2\@MFUfirstwordbreak#3\@endMFUfirstwordbreak
+ \fi
+}
+\newcommand*{\@MFU@firstwordbreakcapword}[1]{%
+ \@mfu@domakefirstuc{#1}%
+}
+\newcommand*\mfu@checkword[1]{%
+ \def\mfu@checkword@arg{#1}%
+ \let\@mfu@domakefirstuc\@MFU@do@capword
+ \forlistloop\mfu@checkword@do\@mfu@nocaplist
+}
+\newcommand*{\mfu@checkword@do}[1]{%
+ \def\mfu@checkword@argii{#1}%
+ \ifdefequal\mfu@checkword@arg\mfu@checkword@argii
+ {%
+ \let\@mfu@domakefirstuc\@firstofone
+ \listbreak
+ }%
+ {%
+ \def\mfu@checkword@argii{#1{\@mfu@terminator}}%
+ \ifdefequal\mfu@checkword@arg\mfu@checkword@argii
+ {%
+ \let\@mfu@domakefirstuc\@firstofone
+ \listbreak
+ }%
+ {}%
+ }%
+}
+\newcommand*{\@mfu@nocaplist}{}
+\newcommand*{\MFUnocap}[1]{\listadd{\@mfu@nocaplist}{#1}}
+\newcommand*{\gMFUnocap}[1]{\listgadd{\@mfu@nocaplist}{#1}}
+\newcommand*{\MFUclear}{\renewcommand*{\@mfu@nocaplist}{}}
+\newcommand*{\xcapitalisewords}[1]{%
+ \expandafter\capitalisewords\expandafter{#1}%
+}
+\newrobustcmd*{\ecapitalisewords}[1]{%
+ \protected@edef\@MFU@caparg{#1}%
+ \expandafter\capitalisewords\expandafter{\@MFU@caparg}%
+}
+\newcommand\@mfu@nil{\unskip}
+\newcommand*\@mfu@nnil{\@mfu@nil}
+\newcommand*{\capitalisefmtwords}{%
+ \@ifstar\@s@capitalisefmtwords\@ns@capitalisefmtwords
+}
+\newcommand*{\@s@capitalisefmtwords}[1]{%
+ \@@s@checkgrp@@capitalisefmtwords#1\@nil
+}
+\newcommand*{\@@s@checkgrp@@capitalisefmtwords}{%
+ \@ifnextchar\bgroup{\@@s@nocs@capitalisefmtwords}{\@@s@capitalisefmtwords}%
+}
+\def\@@s@nocs@capitalisefmtwords#1\@nil{%
+ \capitalisewords{#1}%
+}
+\newcommand*{\@@s@capitalisefmtwords}[1]{%
+ \def\gls@argi{#1}%
+ \ifx\gls@argi\@MFU@protect
+ \let\@mfu@capfmtwordsnext\@@s@capitalisefmtwords
+ \else
+ \ifx\gls@argi\@nnil
+ \let\@mfu@capfmtwordsnext\relax
+ \else
+ \def\@gls@tmp{\ #1}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\@gls@checkcs\@gls@tmp\relax\relax
+ \if@glscs
+ \def\@mfu@capfmtwordsnext{\@@s@cs@capitalisefmtwords#1}%
+ \else
+ \def\@mfu@capfmtwordsnext{\@@s@nocs@capitalisefmtwords#1}%
+ \fi
+ \fi
+ \fi
+ \@mfu@capfmtwordsnext
+}
+\newcommand*{\@@s@cs@capitalisefmtwords}[1]{%
+ \@ifnextchar\bgroup
+ {\@@s@cs@g@capitalisefmtwords#1}%
+ {\@@s@cs@ng@capitalisefmtwords#1}%
+}
+\def\@@s@cs@g@capitalisefmtwords#1#2#3\@nil{%
+ #1{\capitalisewords{#2}}%
+ \ifblank{#3}%
+ {}%
+ {%
+ \def\gls@add@space{}%
+ \let\@mfu@checkword\mfu@checkword
+ \mfu@capitalisewords#3 \@nil\mfu@endcap
+ }%
+}
+\def\@@s@cs@ng@capitalisefmtwords#1#2\@nil{%
+ \capitalisewords{#1#2}%
+}
+\newcommand*{\@ns@capitalisefmtwords}[1]{%
+ \let\@mfu@checkword\@gobble
+ \def\gls@add@space{}%
+ \@capitalisefmtwords#1 \@mfu@nil{} \unskip
+}
+\newcommand*{\@capitalisefmtwords}{%
+ \@ifnextchar\bgroup{\@capitalise@g@fmtwords}{\@capitalise@ng@fmtwords}%
+}
+\newcommand*{\@capitalise@g@fmtwords}[1]{%
+ \@capitalise@ng@fmtwords{{#1}}%
+}
+\def\@mfu@ifnil#1#2\@mfu@end@nil#3#4{%
+ \def\gls@argi{#1}%
+ \ifx\gls@argi\@mfu@nnil
+ #3%
+ \else
+ #4%
+ \fi
+}
+\def\@capitalise@ng@fmtwords#1 {%
+ \@mfu@ifnil#1\relax\relax\@mfu@end@nil
+ {%
+ \def\@mfu@capfmtwordsnext{#1}%
+ }%
+ {%
+ \def\@mfu@capfmtwordsnext{%
+ \@capitalise@fmtwords#1\@mfu@nil
+ \def\gls@add@space{ }%
+ \let\@mfu@checkword\mfu@checkword
+ \@@cap@nofmtphrase}%
+ }%
+ \@mfu@capfmtwordsnext
+}%
+\def\@capitalise@fmtwords#1{%
+ \@mfu@ifnil#1\relax\relax\@mfu@end@nil
+ {%
+ \def\@mfu@capfmtwordsnext{#1}%
+ }%
+ {%
+ \def\gls@argi{#1}%
+ \ifx\gls@argi\@MFU@protect
+ \def\@mfu@capfmtwordsnext{\@capitalise@fmtwords}%
+ \else
+ \def\@gls@tmp{\ #1}%
+ \@onelevel@sanitize\@gls@tmp
+ \expandafter\@gls@checkcs\@gls@tmp\relax\relax
+ \if@glscs
+ \def\@mfu@capfmtwordsnext{\@@capitalisefmtwords#1}%
+ \else
+ \ifx\gls@argi\@empty
+ \def\@mfu@capfmtwordsnext{\@@capnofmtphrase{}}%
+ \else
+ \def\@mfu@capfmtwordsnext{\@@capnofmtphrase#1}%
+ \fi
+ \fi
+ \fi
+ }%
+ \@mfu@capfmtwordsnext
+}
+\def\@@capitalisefmtwords#1{%
+ \@ifnextchar\bgroup{\@@capfmtsubphrase#1}{\@@capnofmtphrase#1}%
+}
+\def\@@capnofmtphrase{%
+ \@ifnextchar\bgroup{\@@cap@g@nofmtphrase}{\@@cap@ng@nofmtphrase}%
+}
+\def\@@cap@ng@nofmtphrase#1\@mfu@nil{%
+ \gls@add@space
+ \@mfu@mid@capitalisewords{#1}%
+ \def\gls@add@space{ }%
+}
+\def\@@cap@g@nofmtphrase#1{%
+ \@@cap@ng@nofmtphrase{{#1}}%
+}
+\newcommand*\@mfu@terminator{\hbox{}}
+\def\@@capfmtsubphrase#1#2#3{%
+ #1{\@capitalisefmtwords#2{\@mfu@terminator} \@mfu@nil{} \unskip}%
+ \def\gls@add@space{ }%
+ \let\@mfu@checkword\mfu@checkword
+ \@mfu@ifnil#1\relax\relax\@mfu@end@nil
+ {\let\@mfu@fmtsubphrasenext\relax}%
+ {\def\@mfu@fmtsubphrasenext{#3}}%
+ \@mfu@fmtsubphrasenext
+}
+\def\@@cap@nofmtphrase#1 {%
+ \@mfu@ifnil#1\relax\relax\@mfu@end@nil
+ {%
+ \def\@mfu@capnofmtwordsnext{#1 }%
+ }%
+ {%
+ \def\@mfu@capnofmtwordsnext{%
+ \@capitalisefmtwords#1 \@mfu@nil{} \unskip
+ \def\gls@add@space{ }%
+ \let\@mfu@checkword\mfu@checkword
+ \@capitalisefmtwords
+ }%
+ }%
+ \@mfu@capnofmtwordsnext
+}
+\newcommand*{\xcapitalisefmtwords}{%
+ \@ifstar\@s@xcapitalisefmtwords\@ns@xcapitalisefmtwords
+}
+\newcommand*{\@s@xcapitalisefmtwords}[1]{%
+ \expandafter\@s@capitalisefmtwords\expandafter{#1}%
+}
+\newcommand*{\@ns@xcapitalisefmtwords}[1]{%
+ \expandafter\@ns@capitalisefmtwords\expandafter{#1}%
+}
+\newrobustcmd*{\ecapitalisefmtwords}{%
+ \@ifstar\@s@ecapitalisefmtwords\@ns@ecapitalisefmtwords
+}
+\newcommand*{\@s@ecapitalisefmtwords}[1]{%
+ \protected@edef\@MFU@caparg{#1}%
+ \expandafter\@s@capitalisefmtwords\expandafter{\@MFU@caparg}%
+}
+\newcommand*{\@ns@ecapitalisefmtwords}[1]{%
+ \protected@edef\@MFU@caparg{#1}%
+ \expandafter\@ns@capitalisefmtwords\expandafter{\@MFU@caparg}%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</mfirstuc-2021-10-15.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
%<*sample-mfirstuc.tex>
% \end{macrocode}
%\fi
@@ -1122,7 +1944,32 @@ mfirstuc.dtx
\tableofcontents
-\section{First Letter Upper Case}
+\section{Sentence Case (First Letter Upper Case)}
+\label{sec:sentencecase}
+
+\verb|\MFUsentencecase{abc}.|
+\MFUsentencecase{abc}.
+
+\verb|\MFUsentencecase{{\em abc}}.|
+\MFUsentencecase{{\em abc}}.
+
+\verb|\MFUsentencecase{\emph{abc}}.|
+\MFUsentencecase{\emph{abc}}.
+
+\verb|\MFUsentencecase{\ae bc}.|
+\MFUsentencecase{\ae bc}.
+
+\verb|\MFUsentencecase{{\ae}bc}.|
+\MFUsentencecase{{\ae}bc}.
+
+\verb|\newcommand{\abc}{abc}\MFUsentencecase{\abc}.|
+\newcommand{\abc}{abc}%
+\MFUsentencecase{\abc}.
+
+\verb|\MFUsentencecase{\ref{sec:sentencecase}bc}.|
+\MFUsentencecase{\ref{sec:sentencecase}bc}.
+
+\verb|\makefirstuc| doesn't expand its argument and skips exclusions.
\verb|\makefirstuc{abc}.|
\makefirstuc{abc}.
@@ -1133,31 +1980,29 @@ mfirstuc.dtx
\verb|\makefirstuc{\emph{abc}}.|
\makefirstuc{\emph{abc}}.
-\verb|\makefirstuc{\ae bc}.|
-\makefirstuc{\ae bc}.
+\verb|\makefirstuc{\ref{sec:sentencecase}bc}.|
+\makefirstuc{\ref{sec:sentencecase}bc}.
-\verb|\makefirstuc{{\ae}bc}.|
-\makefirstuc{{\ae}bc}.
+\newcommand{\strong}[1]{\textcolor{red}{#1}}
+\verb|\makefirstuc{\strong{abc}d}|
+\makefirstuc{\strong{abc}d}
-\verb|\newcommand{\abc}{abc}\xmakefirstuc{\abc}.|
-\newcommand{\abc}{abc}%
-\xmakefirstuc{\abc}.
+\verb|\makefirstuc{\protect\strong{abc}d}|
+\makefirstuc{\protect\strong{abc}d}
+
+Exclusions vs blockers:
-% I know \textbf is robust already and doesn't need protecting.
-% This is just to test what happens if the argument starts
-% with \protect
-\newcommand*{\mytext}{\protect\textbf{some text}}
-Protected formatting: \xmakefirstuc{\mytext}.
+\verb|\MFUsentencecase{\NoCaseChange{abc} xyz}|
+\MFUsentencecase{\NoCaseChange{abc} xyz}
-\renewcommand*{\mytext}{\ae\oe{some text}}
-Sequential commands: \xmakefirstuc{\mytext}.
+\verb|\makefirstuc{\NoCaseChange{abc} xyz}|
+\makefirstuc{\NoCaseChange{abc} xyz}
-\verb|\makefirstuc{\MFUskippunc{?`}c\'omo est\'as?}|
-\makefirstuc{\MFUskippunc{?`}c\'omo est\'as?}
+\begingroup
+\verb|\MFUblocker{\NoCaseChange}\makefirstuc{\NoCaseChange{abc} xyz}|
+\MFUblocker{\NoCaseChange}\makefirstuc{\NoCaseChange{abc} xyz}
-\renewcommand{\mytext}{\MFUskippunc{?`}c\'omo est\'as?}
-Fully expanded:
-\emakefirstuc{\mytext}
+\endgroup
\section{Title Case (No Formatting Commands)}
@@ -1412,20 +2257,28 @@ Compare with
%\fi
%\iffalse
% \begin{macrocode}
-%<*mfirstuc.perl>
+%<*mfirstuc.l2h>
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
-# File : mfirstuc.perl
+# File : mfirstuc.l2h
# Author : Nicola L. C. Talbot
-# Date : 2012-09-21
-# Version : 1.0
+# Version : 2.08 (2022-10-14)
# Description : LaTeX2HTML (limited!) implementation of mfirstuc package
# This is a LaTeX2HTML style implementing the mfirstuc package, and
-# is distributed as part of the glossaries package.
-# Copyright 2007 Nicola L.C. Talbot
+# was distributed as part of the glossaries package, but is now
+# distributed as part of the mfirstuc package. There's no guarantee
+# that it still works with new versions of LaTeX2HTML.
+#
+# v2.08:
+# - The version number has been updated
+# - file extension changed from .perl to .l2h to more easily identify it as a
+# LaTeX2HTML file rather than a standalone Perl script.
+# - Added MFUsentencecase but it's identical to makefirstuc
+#
+# Copyright 2007-2022 Nicola L.C. Talbot
# This work may be distributed and/or modified under the
# conditions of the LaTeX Project Public License, either version 1.3
# of this license of (at your option) any later version.
@@ -1453,6 +2306,17 @@ sub do_cmd_makefirstuc{
&translate_commands("\\glsmakefirstuc $text") . $_;
}
+sub do_cmd_MFUsentencecase{
+ local($_) = @_;
+
+ local($id,$text);
+
+ $text = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$text=$2;''/eo;
+
+ &translate_commands("\\glsmakefirstuc $text") . $_;
+}
+
sub do_cmd_xmakefirstuc{
local($_) = @_;
@@ -1550,7 +2414,7 @@ sub get_next_object{
%\fi
%\iffalse
% \begin{macrocode}
-%</mfirstuc.perl>
+%</mfirstuc.l2h>
% \end{macrocode}
%\fi
%\Finale
diff --git a/macros/latex/contrib/mfirstuc/mfirstuc.ins b/macros/latex/contrib/mfirstuc/mfirstuc.ins
index 02e695dcc1..c928c1ffe9 100644
--- a/macros/latex/contrib/mfirstuc/mfirstuc.ins
+++ b/macros/latex/contrib/mfirstuc/mfirstuc.ins
@@ -1,10 +1,10 @@
-% mfirstuc.ins generated using makedtx version 1.2 2021/10/15 17:46
+% mfirstuc.ins generated using makedtx version 1.2 2022/10/18 9:21
\input docstrip
\preamble
mfirstuc.dtx
- Copyright 2021 Nicola Talbot
+ Copyright 2022 Nicola Talbot
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -18,7 +18,7 @@
The Current Maintainer of this work is Nicola Talbot.
- This work consists of the files mfirstuc.dtx and mfirstuc.ins and the derived files mfirstuc.sty, mfirstuc-english.sty, sample-mfirstuc.tex, mfirstuc.perl.
+ This work consists of the files mfirstuc.dtx and mfirstuc.ins and the derived files mfirstuc.sty, mfirstuc-english.sty, mfirstuc-2021-10-15.sty, sample-mfirstuc.tex, mfirstuc.l2h.
\endpreamble
@@ -28,8 +28,10 @@
\usepostamble\defaultpostamble\from{mfirstuc.dtx}{mfirstuc.sty,package}}
\file{mfirstuc-english.sty}{\usepreamble\defaultpreamble
\usepostamble\defaultpostamble\from{mfirstuc.dtx}{mfirstuc-english.sty,package}}
+\file{mfirstuc-2021-10-15.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{mfirstuc.dtx}{mfirstuc-2021-10-15.sty,package}}
\file{sample-mfirstuc.tex}{\nopreamble\nopostamble\from{mfirstuc.dtx}{sample-mfirstuc.tex}}
-\file{mfirstuc.perl}{\nopreamble\nopostamble\from{mfirstuc.dtx}{mfirstuc.perl}}
+\file{mfirstuc.l2h}{\nopreamble\nopostamble\from{mfirstuc.dtx}{mfirstuc.l2h}}
}
\endbatchfile
diff --git a/macros/latex/contrib/mfirstuc/sample-mfirstuc.pdf b/macros/latex/contrib/mfirstuc/sample-mfirstuc.pdf
index 4433af0c32..ff8780d555 100644
--- a/macros/latex/contrib/mfirstuc/sample-mfirstuc.pdf
+++ b/macros/latex/contrib/mfirstuc/sample-mfirstuc.pdf
Binary files differ
diff --git a/macros/latex/contrib/mfirstuc/sample-mfirstuc.tex b/macros/latex/contrib/mfirstuc/sample-mfirstuc.tex
deleted file mode 100644
index 7438c770cc..0000000000
--- a/macros/latex/contrib/mfirstuc/sample-mfirstuc.tex
+++ /dev/null
@@ -1,292 +0,0 @@
- % This file is public domain
- % If you want to use arara, you need the following directive:
- % arara: pdflatex: { synctex: on }
- % arara: pdflatex: { synctex: on }
-\documentclass{article}
-
-\usepackage[a4paper]{geometry}
-\usepackage{color}
-\usepackage{mfirstuc-english}% also loads mfirstuc.sty
-\usepackage[hidelinks]{hyperref}
-
-\title{Sample Document Illustrating the mfirstuc Package}
-\author{Nicola Talbot}
-
-\begin{document}
-\maketitle
-
-\tableofcontents
-
-\section{First Letter Upper Case}
-
-\verb|\makefirstuc{abc}.|
-\makefirstuc{abc}.
-
-\verb|\makefirstuc{{\em abc}}.|
-\makefirstuc{{\em abc}}.
-
-\verb|\makefirstuc{\emph{abc}}.|
-\makefirstuc{\emph{abc}}.
-
-\verb|\makefirstuc{\ae bc}.|
-\makefirstuc{\ae bc}.
-
-\verb|\makefirstuc{{\ae}bc}.|
-\makefirstuc{{\ae}bc}.
-
-\verb|\newcommand{\abc}{abc}\xmakefirstuc{\abc}.|
-\newcommand{\abc}{abc}%
-\xmakefirstuc{\abc}.
-
-\newcommand*{\mytext}{\protect\textbf{some text}}
-Protected formatting: \xmakefirstuc{\mytext}.
-
-\renewcommand*{\mytext}{\ae\oe{some text}}
-Sequential commands: \xmakefirstuc{\mytext}.
-
-\verb|\makefirstuc{\MFUskippunc{?`}c\'omo est\'as?}|
-\makefirstuc{\MFUskippunc{?`}c\'omo est\'as?}
-
-\renewcommand{\mytext}{\MFUskippunc{?`}c\'omo est\'as?}
-Fully expanded:
-\emakefirstuc{\mytext}
-
-\section{Title Case (No Formatting Commands)}
-
-\bgroup
-
-\verb|\capitalisewords{the wind in the willows}|
-\capitalisewords{the wind in the willows}
-
-\verb|\capitalisewords{a small book of rhyme.}|
-\capitalisewords{a small book of rhyme.}
-
-\medskip
-
-\verb|\space| isn't considered a word boundary for
-\verb|\capitalisewords| as shown below:
-
-\begin{verbatim}
-\capitalisewords{a small\space book of rhyme.}
-\end{verbatim}
-\capitalisewords{a small\space book of rhyme.}
-
-\medskip
-No expansion is performed on the argument of
-\verb|\capitalisewords|:
-
-\verb|\newcommand{\mytitle}{a small book of rhyme.}|
-\newcommand{\mytitle}{a small book of rhyme.}
-
-\verb|\capitalisewords{\mytitle}|
-\capitalisewords{\mytitle}
-
-\verb|\xcapitalisewords{\mytitle}|
-\xcapitalisewords{\mytitle}
-
-\egroup
-
-Formatting for the entire phrase must go outside
-\verb|\capitalisewords| (unlike \verb|\makefirstuc|). Compare:
-
-\begin{verbatim}
-\capitalisewords{\textbf{a small book of rhyme.}}
-\end{verbatim}
-\capitalisewords{\textbf{a small book of rhyme.}}
-
-\begin{verbatim}
-\textbf{\capitalisewords{a small book of rhyme.}}
-\end{verbatim}
-\textbf{\capitalisewords{a small book of rhyme.}}
-
-\medskip
-
-Use \verb|\capitalisefmtwords| instead. The starred form
-is limited to one text-block command at the start of the argument.
-
-\begin{verbatim}
-\capitalisefmtwords*{\emph{a small book of rhyme}}
-\end{verbatim}
-\capitalisefmtwords*{\emph{a small book of rhyme}}
-
-Additional text-block commands can cause unexpected results.
-
-\begin{verbatim}
-\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}}
-\end{verbatim}
-\capitalisefmtwords*{\emph{a small} book \textbf{of rhyme}}
-
-\section{Title Case (Contains Text-Block Formatting Commands)}
-
-The unstarred form of \verb|\capitalisefmtwords| is still a bit
-experimental and is only designed
-for phrases that contain text-block commands with a single
-argument, which should be a word or sub-phrase.
-
-\verb|\capitalisefmtwords{\textbf{a small book of rhyme}}.|
-\capitalisefmtwords{\textbf{a small book of rhyme}}.
-
-\verb|\capitalisefmtwords{\textbf{a small book} of rhyme}.|
-\capitalisefmtwords{\textbf{a small book} of rhyme}.
-
-\verb|\capitalisefmtwords{a \textbf{small book} of rhyme}.|
-\capitalisefmtwords{a \textbf{small book} of rhyme}.
-
-\verb|\capitalisefmtwords{\textbf{a} small book of rhyme}.|
-\capitalisefmtwords{\textbf{a} small book of rhyme}.
-
-\verb|\capitalisefmtwords{a small book \textbf{of rhyme}}.|
-\capitalisefmtwords{a small book \textbf{of rhyme}}.
-
-\medskip
-
-Be careful of trailing spaces at the end a group. They can confuse
-things.
-
-\verb|\capitalisefmtwords{\textbf{a small }book of rhyme}.|
-\capitalisefmtwords{\textbf{a small }book of rhyme}.
-
-\verb|\capitalisefmtwords{\textbf{a small book }of rhyme}.|
-\capitalisefmtwords{\textbf{a small book }of rhyme}.
-
-\verb|\capitalisefmtwords{\textbf{a small book of }rhyme}.|
-\capitalisefmtwords{\textbf{a small book of }rhyme}.
-
-\medskip
-
-Use semantic commands for things like quotations:
-
-\begin{verbatim}
-\newcommand*{\qt}[1]{``#1''}
-\capitalisefmtwords{\qt{a small book of rhyme.}}
-\end{verbatim}
-\newcommand*{\qt}[1]{``#1''}
-\capitalisefmtwords{\qt{a small book of rhyme.}}
-
-\smallskip
-
-(But make them robust if you intend using commands like
-\verb|\ecapitalisefmtwords|.)
-Similarly for other types of punctuation:
-\begin{verbatim}
-\newcommand*{\esq}[1]{'?#1?}
-\capitalisefmtwords{\esq{D\'onde est\'a libro}}
-\end{verbatim}
-\newcommand*{\esq}[1]{?`#1?}
-\capitalisefmtwords{\esq{D\'onde est\'a libro}}
-
-\medskip
-
-Anything more complicated than a simple one-argument text-block
-command requires the starred version.
-
-\begin{verbatim}
-\newcommand*{\swap}[2]{{#2}{#1}}
-\capitalisefmtwords*{\textbf{an \swap{un}{usually} small book of} rhyme}.
-\end{verbatim}
-\newcommand*{\swap}[2]{{#2}{#1}}
-\capitalisefmtwords*{\textbf{an \swap{un}{usually} small book of} rhyme}.
-
-\medskip
-
-Nested text-block commands:
-
-\begin{verbatim}
-\capitalisefmtwords{\textbf{a \emph{small book} of} rhyme}.
-\end{verbatim}
-\capitalisefmtwords{\textbf{a \emph{small book} of} rhyme}.
-
-\begin{verbatim}
-\capitalisefmtwords{\textbf{a \emph{small book}} of rhyme}.
-\end{verbatim}
-\capitalisefmtwords{\textbf{a \emph{small book}} of rhyme}.
-
-\begin{verbatim}
-\capitalisefmtwords{\textbf{\emph{a small} book of} rhyme}.
-\end{verbatim}
-\capitalisefmtwords{\textbf{\emph{a small} book of} rhyme}.
-
-\medskip
-
-An empty brace at the start of a word will suppress the
-case-changing.
-
-\begin{verbatim}
-\capitalisefmtwords{\textbf{a small {}book of} rhyme}.
-\end{verbatim}
-\capitalisefmtwords{\textbf{a small {}book of} rhyme}.
-
-\medskip
-
-Suppress case-changing for problematic commands by inserting
-an empty group in front:
-
-\begin{verbatim}
-\capitalisefmtwords{{}\textcolor{red}{a} small book of
-{}\textcolor{red}{rhyme}}.
-\end{verbatim}
-\capitalisefmtwords{{}\textcolor{red}{a} small book of
-{}\textcolor{red}{rhyme}}.
-
-\medskip
-
-If possible provide semantic command instead.
-
-\begin{verbatim}
-\newcommand*{\alert}[1]{\textcolor{red}{#1}}
-\capitalisefmtwords{\alert{a} small book of \alert{rhyme}}.
-\end{verbatim}
-\newcommand*{\alert}[1]{\textcolor{red}{#1}}
-\capitalisefmtwords{\alert{a} small book of \alert{rhyme}}.
-
-\medskip
-
-No formatting commands in the following example:
-
-\verb|\capitalisefmtwords{a small book of rhyme}.|
-\capitalisefmtwords{a small book of rhyme}.
-
-\medskip
-
-Avoid scoped declarations. The next example doesn't work.
-
-\begin{verbatim}
-\capitalisefmtwords{{\bfseries a \emph{small book} of} rhyme.}
-\end{verbatim}
-\capitalisefmtwords{{\bfseries a \emph{small book} of} rhyme.}
-
-\medskip
-
-If a command isn't followed by a grouped argument, the
-case-change is applied to the command (on the assumption
-that it's a character command, such as \verb|\ae|). This can
-have an odd effect if case-changing has no meaning for that command.
-As illustrated next:
-
-\verb|\capitalisefmtwords{\relax a book of rhyme.}|
-\capitalisefmtwords{\relax a book of rhyme.}
-
-\section{Compound Words}
-
-Use \verb|\MFUhyphentrue| to title case each part of
-a compound word.
-
-Default:
-\begin{verbatim}
-\capitalisewords{a fast-paced book of rhyme}.
-\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}.
-\end{verbatim}
-\capitalisewords{a fast-paced book of rhyme}.
-\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}.
-
-Compare with
-\begin{verbatim}
-\MFUhyphentrue
-\capitalisewords{a fast-paced book of rhyme}.
-\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}.
-\end{verbatim}
-\MFUhyphentrue
-\capitalisewords{a fast-paced book of rhyme}.
-\capitalisefmtwords{a \textbf{fast-paced} book of rhyme}.
-
-\end{document}
diff --git a/support/chktex/ChkTeX.c b/support/chktex/ChkTeX.c
index fd7812401a..bf4386b4a5 100644
--- a/support/chktex/ChkTeX.c
+++ b/support/chktex/ChkTeX.c
@@ -46,15 +46,13 @@ struct ErrMsg PrgMsgs[pmMaxFault + 1] = {
PRGMSGS {(enum ErrNum)pmMaxFault, etErr, TRUE, 0, INTERNFAULT}
};
-struct Stack CharStack = {
- 0L
-}, InputStack =
-
-{
-0L}, EnvStack =
-
-{
-0L};
+struct Stack CharStack = {0L};
+struct Stack InputStack = {0L};
+struct Stack EnvStack = {0L};
+struct Stack ConTeXtStack = {0L};
+struct Stack FileSuppStack = {0L};
+struct Stack UserFileSuppStack = {0L};
+struct Stack MathModeStack = {0L};
/************************************************************************/
@@ -71,8 +69,8 @@ unsigned long Brackets[NUMBRACKETS];
*/
-NEWBUF(TmpBuffer, BUFSIZ);
-NEWBUF(ReadBuffer, BUFSIZ);
+NEWBUF(TmpBuffer, BUFFER_SIZE);
+NEWBUF(ReadBuffer, BUFFER_SIZE);
static const char *Banner =
"ChkTeX v" PACKAGE_VERSION " - Copyright 1995-96 Jens T. Berger Thielemann.\n"
@@ -144,8 +142,11 @@ static const char *HelpText =
" -h --help : This text.\n"
" -i --license : Show distribution information\n"
" -l --localrc : Read local .chktexrc formatted file.\n"
- " -d --debug : Debug information. Give it a number.\n"
+ " -d --debug : Debug information. A bit field with 5 bits.\n"
+ " Each bit shows a different type of information.\n"
" -r --reset : Reset settings to default.\n"
+ " -S --set : Read it's argument as if from chktexrc.\n"
+ " e.g., -S TabSize=8 will override the TabSize.\n"
"\n"
"Muting warning messages:\n"
"~~~~~~~~~~~~~~~~~~~~~~~~\n"
@@ -153,7 +154,7 @@ static const char *HelpText =
" -e --erroron : Makes msg # given an error and turns it on.\n"
" -m --msgon : Makes msg # given a message and turns it on.\n"
" -n --nowarn : Mutes msg # given.\n"
- " -L --nolinesupp: Disables per-line suppressions.\n"
+ " -L --nolinesupp: Disables per-line and per-file suppressions.\n"
"\n"
"Output control flags:\n"
"~~~~~~~~~~~~~~~~~~~~~\n"
@@ -173,7 +174,7 @@ static const char *HelpText =
" -x --wipeverb : Ignore contents of `\\verb' commands.\n"
" -g --globalrc : Read global .chktexrc file.\n"
" -I --inputfiles: Execute \\input statements.\n"
- " -H --headererr : Show errors found in front of \\begin{document}\n"
+ " -H --headererr : Show errors found before \\begin{document}\n"
"\n"
"Miscellaneous switches:\n"
"~~~~~~~~~~~~~~~~~~~~~~~\n"
@@ -182,7 +183,17 @@ static const char *HelpText =
"----------------------------------------------------------------------\n"
"If no LaTeX files are specified on the command line, we will read from\n"
"stdin. For explanation of warning/error messages, please consult the\n"
- "main documentation ChkTeX.dvi, ChkTeX.ps or ChkTeX.pdf.\n";
+ "main documentation ChkTeX.dvi, ChkTeX.ps or ChkTeX.pdf:\n"
+ " http://www.nongnu.org/chktex/ChkTeX.pdf\n"
+ "\n"
+ "Any of the above arguments can be made permanent by setting them in the\n"
+ "chktexrc file "
+#if defined(__unix__)
+ "(~/.chktexrc).\n"
+#else
+ "(see documentation for location).\n"
+#endif
+ ;
@@ -194,6 +205,8 @@ static const char *HelpText =
enum Quote Quote;
+enum CmdSpace CmdSpace;
+
char VerbNormal[] = "%k %n in %f line %l: %m\n" "%r%s%t\n" "%u\n";
#define DEF(type, name, value) type name = value
@@ -321,7 +334,7 @@ static void ExpandTabs(char *From, char *To, long TSize, long MaxDiff)
Diff = MaxDiff+1;
if ( !HasExpandedTooLong )
{
- PrintPrgErr(pmTabExpands, BUFSIZ);
+ PrintPrgErr(pmTabExpands, BUFFER_SIZE);
}
HasExpandedTooLong = 1;
}
@@ -335,6 +348,19 @@ static void ExpandTabs(char *From, char *To, long TSize, long MaxDiff)
strcpy(To, From);
}
+void ReadRcFiles(void)
+{
+ unsigned long i;
+ while (SetupVars())
+ {
+ InsertWord(ConfigFile, &ConfigFiles);
+ }
+ FORWL(i, ConfigFiles)
+ {
+ ReadRC(ConfigFiles.Stack.Data[i]);
+ }
+}
+
int main(int argc, char **argv)
{
@@ -370,8 +396,7 @@ int main(int argc, char **argv)
RESOURCE_INFO
- while (SetupVars())
- ReadRC(ConfigFile);
+ ReadRcFiles();
if (CmdLine.Stack.Used)
{
@@ -432,6 +457,22 @@ int main(int argc, char **argv)
Quote = quTrad;
}
}
+ if (CmdSpaceStyle)
+ {
+ if (!strcasecmp(CmdSpaceStyle, "IGNORE"))
+ CmdSpace = csIgnore;
+ else if (!strcasecmp(CmdSpaceStyle, "INTERWORD"))
+ CmdSpace = csInterWord;
+ else if (!strcasecmp(CmdSpaceStyle, "INTERSENTENCE"))
+ CmdSpace = csInterSentence;
+ else if (!strcasecmp(CmdSpaceStyle, "BOTH"))
+ CmdSpace = csBoth;
+ else
+ {
+ PrintPrgErr(pmCmdSpaceStyle, CmdSpaceStyle);
+ CmdSpace = csIgnore;
+ }
+ }
if (DebugLevel)
ShowIntStatus();
@@ -471,6 +512,7 @@ int main(int argc, char **argv)
if (CurArg < argc)
filename = argv[CurArg++];
+ AddDirectoryFromRelativeFile(filename,&TeXInputs);
if (!PushFileName(filename, &InputStack))
break;
}
@@ -481,7 +523,7 @@ int main(int argc, char **argv)
while (!ferror(OutputFile)
&& StkTop(&InputStack)
&& !ferror(CurStkFile(&InputStack))
- && FGetsStk(ReadBuffer, BUFSIZ - 1,
+ && FGetsStk(ReadBuffer, BUFFER_SIZE - 1,
&InputStack))
{
@@ -489,7 +531,8 @@ int main(int argc, char **argv)
strrep(ReadBuffer, '\n', ' ');
strrep(ReadBuffer, '\r', ' ');
- ExpandTabs(ReadBuffer, TmpBuffer, Tab, BUFSIZ - 1 - strlen(ReadBuffer) );
+ ExpandTabs(ReadBuffer, TmpBuffer, Tab,
+ BUFFER_SIZE - 1 - strlen(ReadBuffer));
strcpy(ReadBuffer, TmpBuffer);
strcat(ReadBuffer, " ");
@@ -665,6 +708,7 @@ static void ShowIntStatus(void)
if (DebugLevel & (FLG_DbgListInfo | FLG_DbgListCont))
{
+ ShowWL("ConfigFilesRead", &ConfigFiles);
RESOURCE_INFO
}
@@ -797,6 +841,7 @@ static int ParseArgs(int argc, char **argv)
{"pipeverb", optional_argument, 0L, 'V'},
{"debug", required_argument, 0L, 'd'},
{"reset", no_argument, 0L, 'r'},
+ {"set", required_argument, 0L, 'S'},
{"quiet", no_argument, 0L, 'q'},
{"license", no_argument, 0L, 'i'},
{"splitchar", required_argument, 0L, 's'},
@@ -833,7 +878,7 @@ static int ParseArgs(int argc, char **argv)
while (!ArgErr &&
((c = getopt_long((int) argc, argv,
- "b::d:e:f:g::hH::I::il:m:n:Lo:p:qrs:t::v::V::w:Wx::",
+ "b::d:e:f:g::hH::I::il:m:n:Lo:p:qrs:S:t::v::V::w:Wx::",
long_options, &option_index)) != EOF))
{
while (c)
@@ -841,6 +886,10 @@ static int ParseArgs(int argc, char **argv)
nextc = 0;
switch (c)
{
+ case 'S':
+ ReadRCFromCmdLine(optarg);
+ break;
+
case 's':
if (!(Delimit = strdup(optarg)))
{
diff --git a/support/chktex/ChkTeX.h b/support/chktex/ChkTeX.h
index 01275d38b0..8d1c4b4ed7 100644
--- a/support/chktex/ChkTeX.h
+++ b/support/chktex/ChkTeX.h
@@ -233,7 +233,7 @@ DEBUGBITS(Debug_BIT)
MSG(pmNoRsrc, etWarn, TRUE, 0,\
"Could not find global resource file.")\
MSG(pmQuoteStyle, etWarn, TRUE, 0,\
- "Illegal quotestyle `%s'.")\
+ "Illegal quotestyle `%s' using `Traditional'.")\
MSG(pmWrongWipeTemp, etWarn, TRUE, 0,\
"Wrong template for wiping arguments, \"%s\"")\
MSG(pmSpecifyTerm, etErr, TRUE, 0,\
@@ -261,7 +261,9 @@ DEBUGBITS(Debug_BIT)
MSG(pmLongLines, etWarn, TRUE, 0,\
"ChkTeX does not handle lines over %d bytes correctly. Some errors and line numbers may be wrong in this file.") \
MSG(pmTabExpands, etWarn, TRUE, 0,\
- "ChkTeX could not fully expand tabs because the resulting line would be more than %d bytes. Some errors and line numbers may be wrong in this file.")
+ "ChkTeX could not fully expand tabs because the resulting line would be more than %d bytes. Some errors and line numbers may be wrong in this file.") \
+MSG(pmCmdSpaceStyle, etWarn, TRUE, 0,\
+ "Illegal CmdSpaceStyle `%s' using `Ignore'.")
#undef MSG
#define MSG(num, type, inuse, ctxt, text) num,
@@ -330,20 +332,19 @@ extern FILE *OutputFile, *InputFile;
DEF(int, AtLetter, FALSE); /* Whether `@' is a letter or not. */ \
DEF(int, InHeader, TRUE); /* Whether we're in the header */ \
DEF(int, VerbMode, FALSE); /* Whether we're in complete ignore-mode */ \
- DEF(long, MathMode, 0); /* Whether we're in math mode or not */ \
DEF(const char *, VerbStr, ""); /* String we'll terminate verbmode upon */ \
DEF(unsigned long, ErrPrint, 0); /* # errors printed */ \
DEF(unsigned long, WarnPrint, 0); /* # warnings printed */ \
DEF(unsigned long, UserSupp, 0); /* # user suppressed warnings */ \
- DEF(unsigned long, LineSupp, 0); /* # warnings suppressed on a single line */ \
- DEF(uint64_t, FileSuppressions, 0); /* # warnings suppressed in a file */ \
- DEF(uint64_t, UserFileSuppressions, 0) /* # User warnings suppressed in a file */
+ DEF(unsigned long, LineSupp, 0); /* # warnings suppressed on a single line */
#define DEF(type, name, value) extern type name
OPTION_DEFAULTS;
STATE_VARS;
#undef DEF
-extern struct Stack CharStack, InputStack, EnvStack;
+extern struct Stack CharStack, InputStack, EnvStack, ConTeXtStack;
+extern struct Stack FileSuppStack, UserFileSuppStack;
+extern struct Stack MathModeStack;
enum Quote
{
@@ -354,6 +355,15 @@ enum Quote
extern enum Quote Quote;
extern int StdInTTY, StdOutTTY, UsingStdIn;
+enum CmdSpace
+{
+ csIgnore = 0,
+ csInterWord = 0x1,
+ csInterSentence = 0x2,
+ csBoth = 0x3, /* both bits set */
+};
+extern enum CmdSpace CmdSpace;
+
int main(int argc, char **argv);
void PrintPrgErr(enum PrgErrNum, ...);
void ErrPrintf(const char *fmt, ...);
diff --git a/support/chktex/ChkTeX.pdf b/support/chktex/ChkTeX.pdf
new file mode 100644
index 0000000000..43d9b55485
--- /dev/null
+++ b/support/chktex/ChkTeX.pdf
Binary files differ
diff --git a/support/chktex/ChkTeX.tex.in b/support/chktex/ChkTeX.tex.in
index 353322abfc..3fbba08f56 100644
--- a/support/chktex/ChkTeX.tex.in
+++ b/support/chktex/ChkTeX.tex.in
@@ -54,11 +54,35 @@
{\noindent\large%
\begin{tabularx}{\linewidth}{lY}%
\bf Warning \theerrornum: & \texttt{#1}%
- \end{tabularx}}\stepcounter{errornum}\nopagebreak[4]}
+ \end{tabularx}}\stepcounter{errornum}\nopagebreak[4]}
+
+\newcommand{\fmtrc}[1]{%
+ {\noindent\large%
+ %% \begin{tabularx}{\linewidth}{lY}%
+ \phantomsection%
+ \bf\texttt{#1}%
+ \label{rc:#1}
+ %% \end{tabularx}
+ }\nopagebreak[4]}
\newenvironment{errdesc}[1]{\noindent\fmted{#1}\begin{quote}}{\end{quote}%
\pagebreak[3]}
+\newcommand\Keyword[1]{\marginpar{\texttt{\hfill\hyperref[rc:#1]{#1}}}}
+\newcommand{\chktexrcdefault}{\noindent The default value is}
+\newenvironment{chktexrcvar}[2]{%
+ \smallskip\pagebreak[2]%
+ %% \Keyword{#1}
+ \fmtrc{#1} #2 Variable%
+ \begin{quote}}{%
+ \end{quote}\pagebreak[3]}
+\newenvironment{chktexrcsimplevar}[1]{\begin{chktexrcvar}{#1}{Simple}}{\end{chktexrcvar}}
+\newenvironment{chktexrclistvar}[1]{\begin{chktexrcvar}{#1}{List}}{\end{chktexrcvar}}
+\newenvironment{chktexrclistvar*}[1]{\begin{chktexrcvar}{#1}{Lowercase-able List}}{\end{chktexrcvar}}
+
+%% \newenvironment{chktexrclistvar}[1]{\fmtrc{#1}List Variable}{}
+%% \newenvironment{chktexrclistvar*}[1]{\fmtrc{#1}List Variable with Lowercase}{}
+
\newenvironment{html}{\comment}{\endcomment}
\newenvironment{rawhtml}{\comment}{\endcomment}
@@ -81,6 +105,15 @@
%!\newcommand{\slash}{/}
%endlatex
+% PDF table of contents
+\usepackage{hyperref}
+\hypersetup{
+ colorlinks=true,
+ allcolors=blue,
+ pdfpagemode=UseOutlines
+}
+\usepackage{hypcap}
+
\title{\chktex\ v@PACKAGE_VERSION@}
\author{Jens~T. Berger~Thielemann}
@@ -370,7 +403,7 @@ A few words on installation on various platforms:
\paragraph{Note:} You \emph{must} install the new \rsrc\ file; \chktex\ will
fail to function otherwise!
- After doing this, you may enhance \chktex' behaviour by
+ After doing this, you may enhance \chktex's behaviour by
reading/editing the \rsrc\ file.
%latex
@@ -391,7 +424,7 @@ A UNIX-compliant template format follows:
\end{tabularx}
-\subsubsection{Options}
+\subsubsection{Comamndline Options}
These are the options \chktex\ currently accepts.
Please note that single-lettered options requiring a numerical or no
@@ -510,6 +543,7 @@ File:Line:Column:Warning number:Warning message
longer time to parse, but much more informative in use.
\end{description}
+ \phantomsection\label{clarg:format}%
\item[\texttt{-f [-{}-format]}] Specifies the format of the output.
This is done using a format similar to \Cmd{printf()}, where we
support the specifiers listed below.
@@ -739,6 +773,10 @@ The syntax is nearly the same, namely
\verb+% chktex-file ##+
\end{center}
+
+\input{ChkTeXRC.tex}
+
+
\subsubsection{Hints}
I've tried to collect some advice that may be useful --- if you have a
favourite hint, feel free to send it to me!
@@ -863,10 +901,9 @@ Error messages set in {\it italic type\/} are turned off by default.
Where margin paragraphs are listed in the text, they refer to the
keyword in the \rsrc\ file which controls the discussed warning.
-\newcommand\Keyword[1]{\marginpar{\texttt{\hfill\\ #1}}}
-
\smallskip\pagebreak[2]
-\Keyword{Silent}
+\phantomsection
+\Keyword{Silent}\label{warn:silent}
\begin{errdesc}{Command terminated with space.}
You tried to terminate a command with a blank space. Usually, this
is an error as these are ignored by \LaTeX. In most cases, you would
@@ -917,7 +954,9 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errexam}
\end{errdesc}
-\Keyword{Italic\\ItalCmd\\NonItalic}
+\Keyword{Italic}
+\Keyword{ItalCmd}
+\Keyword{NonItalic}
\begin{errdesc}{Italic correction (`\BS/') found in non-italic
buffer.}
If you try to use the \verb@\/@ command when \chktex\ believes that
@@ -932,7 +971,9 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errexam}
\end{errdesc}
-\Keyword{Italic\\ItalCmd\\NonItalic}
+\Keyword{Italic}
+\Keyword{ItalCmd}
+\Keyword{NonItalic}
\begin{errdesc}{Italic correction (`\BS/') found more than once.}
If the buffer is italic, and you try to use the \verb@\/@ command
more than once, you'll get this warning.
@@ -946,7 +987,9 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errexam}
\end{errdesc}
-\Keyword{Italic\\ItalCmd\\NonItalic}
+\Keyword{Italic}
+\Keyword{ItalCmd}
+\Keyword{NonItalic}
\begin{errdesc}{No italic correction (`\BS/') found.}
You get this error if \chktex\ believes that you are switching from
italic to non-italic, and you've forgot to use the \verb@\/@ command
@@ -977,7 +1020,10 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errexam}
\end{errdesc}
-\Keyword{HyphDash\\NumDash\\WordDash\\DashExcpt}
+\Keyword{HyphDash}
+\Keyword{NumDash}
+\Keyword{WordDash}
+\Keyword{DashExcpt}
\begin{errdesc}{Wrong length of dash may have been used.}
This warning suggests that a wrong number of dashes may have been
used. It does this by classifying the dash according to the the
@@ -1036,7 +1082,8 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errdesc}
-\Keyword{CenterDots\\LowDots}
+\Keyword{CenterDots}
+\Keyword{LowDots}
\begin{errdesc}{You should use `\%s' to achieve an ellipsis.}
Simply typing three \Cmd{.} in a row will not give a perfect spacing
between the dots. The \verb@\ldots@ is much more suitable for this.
@@ -1057,33 +1104,42 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errexam}
\end{errdesc}
+\phantomsection
+\label{warn:interword}
\Keyword{Abbrev}
+\Keyword{CmdSpaceStyle}
\begin{errdesc}{Interword spacing (`\BS\ ') should perhaps be used.}
One of the specified abbreviations were found. Unless you have
previously said \verb@\frenchspacing@, you'll have incorrect
- spacing, which one should avoid if possible.
+ spacing, which one should avoid if possible. The error will be suppressed
+ if you have used \verb@\frenchspacing@.
You can also specify case-insensitive abbreviations in \texttt{[]}, though
only the first letter is actually case-insensitive.
\begin{errexam}
- \verb@This is an example, i.e.@\underline{\tt\ }\verb@an demonstration.@ \\*
- This is an example, i.e. an demonstration. \\*
+ \verb@This is an example, i.e.@\underline{\tt\ }\verb@a demonstration.@ \\*
+ This is an example, i.e. a demonstration. \\*
\smallskip
- \verb@This is an example, i.e.\ an demonstration.@ \\*
- This is an example, i.e.\ an demonstration. \\*
+ \verb@This is an example, i.e.\ a demonstration.@ \\*
+ This is an example, i.e.\ a demonstration. \\*
\end{errexam}
\end{errdesc}
+\phantomsection
+\label{warn:intersentence}
+\Keyword{CmdSpaceStyle}
\begin{errdesc}{Intersentence spacing (`\BS{}@') should perhaps be used.}
- \LaTeX' detection of whether a period ends a sentence or not, is
+ \LaTeX's detection of whether a period ends a sentence or not, is
only based upon the character in front of the period. If it's
uppercase, it assumes that it does not end a sentence. While this
may be correct in many cases, it may be incorrect in others.
\chktex\ thus outputs this warning in every such case.
+ The error will be suppressed if you have used \verb@\frenchspacing@.
+
\begin{errexam}
\verb@I've seen an UFO!@\underline{\tt\ }\verb@Right over there!@ \\*
I've seen an UFO! Right over there! \\*
@@ -1119,7 +1175,7 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errdesc}
\Keyword{MathEnvir}
-\begin{errdesc}{Mathmode still on at end of LaTeX file.}
+\begin{errdesc}{Mathmode still on at end of LaTeX file.}
This error is triggered if you at some point have turned on
mathmode, and \chktex\ couldn't see that you remembered to turn it
off.
@@ -1149,13 +1205,13 @@ keyword in the \rsrc\ file which controls the discussed warning.
"'" (ASCII 180).} On some keyboards you might get the wrong quote.
This quote looks, IMHO, \emph{ugly} compared to the standard
quotes, it doesn't even come out as a quote! Just see in the
- example.
-
+ example. In fact, this doesn't even compile anymore, so the warning is
+ probably obsolete.
\begin{errexam}
\verb@``There@\underline{\tt '}\verb@s quotes and there@\underline{\tt '}\verb@s quotes@
\underline{\tt ''} \\* % ''
- ``There´s quotes and there´s quotes´´ \\* % ''
+ % ``There´s quotes and there´s quotes´´ \\* % ''
\smallskip
\verb@``There's quotes and there's quotes''@ \\*
``There's quotes and there's quotes'' \\*
@@ -1265,7 +1321,9 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errdesc}
-\Keyword{Italic\\ItalCmd\\NonItalic}
+\Keyword{Italic}
+\Keyword{ItalCmd}
+\Keyword{NonItalic}
\begin{errdesc}{Don't use \BS/ in front of small punctuation.}
Italic correction should generally \emph{not} be used in front of
small punctuation characters like `.' and `,'; as it looks better
@@ -1317,7 +1375,6 @@ keyword in the \rsrc\ file which controls the discussed warning.
derivations of that, ignore all text on the same line as
\verb@\end{verbatim}@. This will warn you about this.
-
\end{errdesc}
\fmted{Use ` to begin quotation, not '.}\hfill\\
@@ -1434,7 +1491,7 @@ keyword in the \rsrc\ file which controls the discussed warning.
\begin{errdesc}{You should put punctuation outside inner/inside
display math mode.}
As recommended in the \TeX{}book, you should try to put punctuation
- outside inner math mode, as this is gets formatted better.
+ outside inner math mode, as it is formatted better.
Similarily, you should let any final punctuation in display math
mode end up within it. Look at the following example, which was
@@ -1562,6 +1619,28 @@ keyword in the \rsrc\ file which controls the discussed warning.
\end{errdesc*}
+\fmted{`\%s' expected, found `\%s' (ConTeXt).}
+\begin{errdesc}{Solo `\%s' found (ConTeXt).}
+
+% \begin{errdesc}{`\%s' expected, found `\%s' (ConTeXt).}
+
+ Similar to warnings~9 and 10, these tracks environments, but Con\TeX{}t{} environments rather than \LaTeX.
+ They are tracked as separate messages to allow being turned on and off independently thereby allowing people to use macros that start with \verb+\start+.
+
+\end{errdesc}
+
+\begin{errdesc}{Expected math mode to be \%s here.}
+
+ Similar to warning~16, this warns when \chktex{} got confused about math mode.
+ In theory, for a well formed \LaTeX{} document this should never happen, but the following (invalid) documents will cause the warning.
+ This is because the \verb+$+ will exit math mode (which \verb+\ensuremath+ entered), and then exiting \verb+\ensuremath+ finds that we are in text mode which shouldn't happen.
+
+ \begin{errexam}
+ \verb+\ensuremath{ \frac{x}{3} $ y\times 7}+\\*
+ \end{errexam}
+
+\end{errdesc}
+
\section{Future plans}
In a somewhat prioritized sequence, this is what I'd like to put into the
diff --git a/support/chktex/FindErrs.c b/support/chktex/FindErrs.c
index f1a470b823..00ca49f48e 100644
--- a/support/chktex/FindErrs.c
+++ b/support/chktex/FindErrs.c
@@ -54,6 +54,7 @@ int NumRegexes = 0;
int FoundErr = EXIT_SUCCESS;
int LastWasComment = FALSE;
int SeenSpace = FALSE;
+int FrenchSpacing = FALSE;
/***************************** ERROR MESSAGES ***************************/
@@ -77,10 +78,10 @@ static int my_##func(int c) \
((LaTeXMsgs[(enum ErrNum) c].InUse == iuOK) && !SUPPRESSED_ON_LINE(c))
#define PSERR2(pos,len,err,a,b) \
- PrintError(CurStkName(&InputStack), RealBuf, pos, len, Line, err, a, b)
+ PrintError(err, CurStkName(&InputStack), RealBuf, pos, len, Line, a, b)
#define PSERRA(pos,len,err,a) \
- PrintError(CurStkName(&InputStack), RealBuf, pos, len, Line, err, a)
+ PrintError(err, CurStkName(&InputStack), RealBuf, pos, len, Line, a)
#define HEREA(len, err, a) PSERRA(BufPtr - Buf - 1, len, err, a)
#define PSERR(pos,len,err) PSERRA(pos,len,err,"")
@@ -124,6 +125,15 @@ static const char LTX_GenPunc[] = { ',', ';', 0 };
static const char LTX_SmallPunc[] = { '.', ',', 0 };
/*
+ * A list of characters that could be considered to start a new
+ * sentence, or not.
+ *
+ * This allows "Mr. ``X'' " to warn about the same as "Mr. X".
+ *
+ */
+static const char LTX_BosPunc[] = {'`', '(', '[', 0};
+
+/*
* String used to delimit a line suppression. This string must be
* followed immediately by the number of the warning to be suppressed.
* If more than one warning is to be suppressed, then multiple copies
@@ -157,9 +167,9 @@ static char *BufPtr;
static int ItFlag = efNone;
static int MathFlag = efNone;
-NEWBUF(Buf, BUFSIZ);
-NEWBUF(CmdBuffer, BUFSIZ);
-NEWBUF(ArgBuffer, BUFSIZ);
+NEWBUF(Buf, BUFFER_SIZE);
+NEWBUF(CmdBuffer, BUFFER_SIZE);
+NEWBUF(ArgBuffer, BUFFER_SIZE);
static enum ErrNum PerformCommand(const char *Cmd, char *Arg);
@@ -300,9 +310,8 @@ static char *PreProcess(void)
char *TmpPtr;
/* Reset any line suppressions */
-
- LineSuppressions = FileSuppressions;
- UserLineSuppressions = UserFileSuppressions;
+ LineSuppressions = *(uint64_t *)StkTop(&FileSuppStack);
+ UserLineSuppressions = *(uint64_t *)StkTop(&UserFileSuppStack);
/* Kill comments. */
strcpy(Buf, RealBuf);
@@ -349,15 +358,16 @@ static char *PreProcess(void)
{
PrintPrgErr(pmSuppTooHigh, error, MaxSuppressionBits);
}
+ uint64_t errbit = ((uint64_t)1 << abs(error));
if (error > 0)
{
- FileSuppressions |= ((uint64_t)1 << error);
- LineSuppressions |= ((uint64_t)1 << error);
+ *(uint64_t *)StkTop(&FileSuppStack) |= errbit;
+ LineSuppressions |= errbit;
}
else
{
- UserFileSuppressions |= ((uint64_t)1 << (-error));
- UserLineSuppressions |= ((uint64_t)1 << (-error));
+ *(uint64_t *)StkTop(&UserFileSuppStack) |= errbit;
+ UserLineSuppressions |= errbit;
}
}
TmpPtr = EscapePtr;
@@ -395,12 +405,30 @@ static char *PreProcess(void)
static void PerformEnv(char *Env, int Begin)
{
- static char VBStr[BUFSIZ] = "";
+ static char VBStr[BUFFER_SIZE] = "";
if (HasWord(Env, &MathEnvir))
{
- MathMode += Begin ? 1 : -1;
- MathMode = max(MathMode, 0);
+ if (Begin)
+ PushMode(TRUE, &MathModeStack);
+ else
+ {
+ if (!CurStkMode(&MathModeStack))
+ PSERRA(BufPtr - Buf - 4, 1, emMathModeConfusion, "on");
+ StkPop(&MathModeStack);
+ }
+ }
+
+ if (HasWord(Env, &TextEnvir))
+ {
+ if (Begin)
+ PushMode(FALSE, &MathModeStack);
+ else
+ {
+ if (CurStkMode(&MathModeStack))
+ PSERRA(BufPtr - Buf - 4, 1, emMathModeConfusion, "off");
+ StkPop(&MathModeStack);
+ }
}
if (Begin && HasWord(Env, &VerbEnvir))
@@ -453,7 +481,7 @@ static enum DotLevel CheckDots(char *PrePtr, char *PstPtr)
int TmpC;
enum DotLevel Front = dtUnknown, Back = dtUnknown;
- if (MathMode)
+ if (CurStkMode(&MathModeStack))
{
PrePtr--;
#define SKIP_EMPTIES(macro, ptr) macro(ptr, TmpC, \
@@ -625,11 +653,10 @@ static void PerformBigCmd(char *CmdPtr)
SKIP_AHEAD(TmpPtr, TmpC, TmpC == '{'); /* } */
if ((*TmpPtr == 'i') || (*TmpPtr == 'j'))
- PrintError(CurStkName(&InputStack), RealBuf,
- CmdPtr - Buf,
- (long) strlen(CmdBuffer), Line,
- emAccent, CmdBuffer, *TmpPtr,
- MathMode ? "math" : "");
+ PrintError(emAccent, CurStkName(&InputStack), RealBuf,
+ CmdPtr - Buf, (long)strlen(CmdBuffer), Line,
+ CmdBuffer, *TmpPtr,
+ CurStkMode(&MathModeStack) ? "math" : "");
}
else
PSERR(CmdPtr - Buf, CmdLen, emNoArgFound);
@@ -670,18 +697,18 @@ static void PerformBigCmd(char *CmdPtr)
if ((ei = PopErr(&EnvStack)))
{
if (strcmp(ei->Data, ArgBuffer))
- PrintError(CurStkName(&InputStack), RealBuf,
+ PrintError(emExpectC, CurStkName(&InputStack), RealBuf,
CmdPtr - Buf,
(long) strlen(CmdBuffer),
- Line, emExpectC, ei->Data, ArgBuffer);
+ Line, ei->Data, ArgBuffer);
FreeErrInfo(ei);
}
else
- PrintError(CurStkName(&InputStack), RealBuf,
+ PrintError(emSoloC, CurStkName(&InputStack), RealBuf,
CmdPtr - Buf,
(long) strlen(CmdBuffer),
- Line, emSoloC, ArgBuffer);
+ Line, ArgBuffer);
}
PerformEnv(ArgBuffer, (int) CmdBuffer[1] == 'b');
@@ -697,28 +724,28 @@ static void PerformBigCmd(char *CmdPtr)
{
TmpPtr = CmdBuffer + 6;
if (!(PushErr(TmpPtr, Line, CmdPtr - Buf + 6,
- CmdLen - 6, RealBuf, &EnvStack)))
+ CmdLen - 6, RealBuf, &ConTeXtStack)))
PrintPrgErr(pmNoStackMem);
}
else
{
TmpPtr = CmdBuffer + 5;
- if ((ei = PopErr(&EnvStack)))
+ if ((ei = PopErr(&ConTeXtStack)))
{
if (strcmp(ei->Data, TmpPtr))
- PrintError(CurStkName(&InputStack), RealBuf,
+ PrintError(emExpectConTeXt, CurStkName(&InputStack), RealBuf,
CmdPtr - Buf + 5,
(long) strlen(TmpPtr),
- Line, emExpectC, ei->Data, TmpPtr);
+ Line, ei->Data, TmpPtr);
FreeErrInfo(ei);
}
else
{
- PrintError(CurStkName(&InputStack), RealBuf,
+ PrintError(emSoloC, CurStkName(&InputStack), RealBuf,
CmdPtr - Buf,
(long) strlen(CmdBuffer),
- Line, emSoloC, TmpPtr);
+ Line, TmpPtr);
}
}
/* TODO: Do I need to call PerformEnv? */
@@ -776,8 +803,13 @@ static void CheckAbbrevs(const char *Buffer)
for (i = Abbrev.MaxLen; i >= 0; i--)
{
*--TmpPtr = *AbbPtr--;
- if (!isalpha((unsigned char)*AbbPtr) && HasWord(TmpPtr, &Abbrev))
+ if (!isalpha((unsigned char)*AbbPtr) &&
+ /* Ignore spacing problems after commands if desired */
+ (*AbbPtr != '\\' || (CmdSpace & csInterWord)) &&
+ HasWord(TmpPtr, &Abbrev))
+ {
PSERR(Buffer - Buf + 1, 1, emInterWord);
+ }
if (!*AbbPtr)
break;
}
@@ -1026,7 +1058,7 @@ static void CheckDash(void)
SKIP_AHEAD(TmpPtr, TmpC, TmpC == '-');
TmpCount = TmpPtr - BufPtr + 1;
- if (MathMode)
+ if (CurStkMode(&MathModeStack))
{
if (TmpCount > 1)
HERE(TmpCount, emWrongDash);
@@ -1088,6 +1120,73 @@ static void CheckDash(void)
}
}
+ /* Check DashExcpt looking for phrase with hyphenation that doesn't
+ * match what's in DashExcpt. This really only makes sense for
+ * HyphDash, but it should be cheap in the other cases. */
+ if (!Errored)
+ {
+ TmpPtr = BufPtr-1;
+
+ SKIP_BACK(TmpPtr, TmpC, (TmpC == '-'));
+ SKIP_BACK(TmpPtr, TmpC, isalpha(TmpC));
+ /* If we found a dash going backwards, the we already checked
+ * this on the first dash */
+ if (*TmpPtr != '-')
+ {
+ /* PrePtr now points to the beginning of the hyphenated phrase */
+ PrePtr = ++TmpPtr;
+
+ struct WordList *el = &DashExcpt;
+
+ FORWL(i, *el)
+ {
+ char *e = el->Stack.Data[i];
+ TmpPtr = PrePtr;
+
+ /* Walk through the strings until we find a
+ * mismatch. */
+ int FoundHyphenDiff = FALSE;
+ while (*e && *TmpPtr && *e == *TmpPtr)
+ {
+ /* Skip past characters that are the same */
+ while (*e && *TmpPtr && *e == *TmpPtr)
+ {
+ ++e;
+ ++TmpPtr;
+ }
+ /* Skip past differences in hyphens */
+ while (*e == '-' && *TmpPtr != '-')
+ {
+ ++e;
+ FoundHyphenDiff = TRUE;
+ }
+ while (*TmpPtr == '-' && *e != '-')
+ {
+ ++TmpPtr;
+ FoundHyphenDiff = TRUE;
+ }
+ }
+
+ /* If there was no mismatch all the way to the end of e,
+ * and TmpPtr is not in the middle of a word, then they
+ * matched ignoring hyphens, so we have found the one
+ * DashExcpt element we care about and don't have to
+ * check any others. Moreover, if we found a difference
+ * in hyphenation, then we must warn because it matches
+ * something in DashExcpt but with improper hyphenation.
+ * It's possible they could put the same phrase in twice
+ * with different hyphenations, but that seems pretty
+ * pathological. */
+ if (*e == '\0' && !isalpha((unsigned char)*TmpPtr))
+ {
+ if (FoundHyphenDiff)
+ Errored = TRUE;
+ break;
+ }
+ }
+ }
+ }
+
if (Errored)
HERE(TmpCount, emWrongDash);
}
@@ -1140,14 +1239,8 @@ static void HandleBracket(char Char)
ItState = TRUE;
/* Same for math mode */
- if (ei->Flags & efMath)
- {
- MathMode = 1;
- }
- else if (ei->Flags & efNoMath)
- {
- MathMode = 0;
- }
+ if (ei->Flags & efMath || ei->Flags & efNoMath)
+ StkPop(&MathModeStack);
FreeErrInfo(ei);
}
@@ -1160,8 +1253,8 @@ static void HandleBracket(char Char)
BBuf[0] = Char;
ABuf[1] = BBuf[1] = 0;
if (Match)
- PrintError(CurStkName(&InputStack), RealBuf,
- BufPtr - Buf - 1, 1, Line, emExpectC,
+ PrintError(emExpectC, CurStkName(&InputStack), RealBuf,
+ BufPtr - Buf - 1, 1, Line,
ABuf, BBuf);
else
HEREA(1, emSoloC, BBuf);
@@ -1187,12 +1280,16 @@ static void HandleBracket(char Char)
switch (MathFlag)
{
- default:
+ case efNone:
+ break;
+ case efMath:
+ case efNoMath:
+ PushMode((MathFlag == efMath), &MathModeStack);
+ /* Save for when we exit this delimiter */
ei->Flags |= MathFlag;
+ /* Reset flag just in case... */
MathFlag = efNone;
break;
- case efNone:
- ei->Flags |= MathMode ? efMath : efNoMath;
}
}
}
@@ -1368,14 +1465,14 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
TmpPtr = PrePtr;
SKIP_BACK(TmpPtr, TmpC,
- (LATEX_SPACE(TmpC) || strchr("{}$", TmpC)));
+ (LATEX_SPACE(TmpC) || strchr("$", TmpC)));
if (isdigit((unsigned char)*TmpPtr))
{
TmpPtr = BufPtr;
SKIP_AHEAD(TmpPtr, TmpC,
- (LATEX_SPACE(TmpC) || strchr("{}$", TmpC)));
+ (LATEX_SPACE(TmpC) || strchr("$", TmpC)));
if (isdigit((unsigned char)*TmpPtr))
HERE(1, emUseTimes);
@@ -1433,7 +1530,8 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
case 'W': /* case 'X': */
case 'Y':
case 'Z':
- if (!isalpha((unsigned char)*PrePtr) && (*PrePtr != '\\') && MathMode)
+ if (!isalpha((unsigned char)*PrePtr) && (*PrePtr != '\\') &&
+ CurStkMode(&MathModeStack))
{
TmpPtr = BufPtr;
CmdPtr = CmdBuffer;
@@ -1474,7 +1572,7 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
HEREA(3, emEllipsis, cTmpPtr);
}
- /* Regexp: "([^A-Z@.])\.[.!?:]*\s+[a-z]" */
+ /* Regexp: "([^A-Z@.])\.[.!?:]*\s[ \`([]*[a-z]" */
TmpPtr = BufPtr;
SKIP_AHEAD(TmpPtr, TmpC, strchr(LTX_EosPunc, TmpC));
@@ -1483,9 +1581,17 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
if (!isupper((unsigned char)*PrePtr) && (*PrePtr != '@') &&
(*PrePtr != '.'))
{
- SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC));
+ SKIP_AHEAD(TmpPtr, TmpC,
+ (LATEX_SPACE(TmpC) || TmpC == '\\' ||
+ strchr(LTX_BosPunc, TmpC)));
if (islower((unsigned char)*TmpPtr))
- PSERR(BufPtr - Buf, 1, emInterWord);
+ {
+ /* Ignore spacing problems after commands if desired */
+ TmpPtr = PrePtr;
+ SKIP_BACK(TmpPtr, TmpC, istex(TmpC));
+ if (*TmpPtr != '\\' || (CmdSpace & csInterWord))
+ PSERR(BufPtr - Buf, 1, emInterWord);
+ }
else
CheckAbbrevs(&BufPtr[-1]);
}
@@ -1498,9 +1604,17 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
case ';':
/* Regexp: "[A-Z][A-Z][.!?:;]\s+" */
- if (isspace((unsigned char)*BufPtr) && isupper((unsigned char)*PrePtr) &&
- (isupper((unsigned char)PrePtr[-1]) || (Char != '.')))
- HERE(1, emInterSent);
+ if (isspace((unsigned char)*BufPtr) &&
+ isupper((unsigned char)*PrePtr) &&
+ (isupper((unsigned char)PrePtr[-1]) || (Char != '.')) &&
+ !FrenchSpacing)
+ {
+ /* Ignore spacing problems after commands if desired */
+ TmpPtr = PrePtr;
+ SKIP_BACK(TmpPtr, TmpC, istex(TmpC));
+ if (*TmpPtr != '\\' || (CmdSpace & csInterSentence))
+ HERE(1, emInterSent);
+ }
/* FALLTHRU */
case ',':
@@ -1509,12 +1623,12 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
((BufPtr[-1] == '.') || (BufPtr[-1] == ','))))
PSERR(PrePtr - Buf, 1, emSpacePunct);
- if (MathMode &&
+ if (CurStkMode(&MathModeStack) &&
(((*BufPtr == '$') && (BufPtr[1] != '$')) ||
(!strafter(BufPtr, "\\)"))))
HEREA(1, emPunctMath, "outside inner");
- if (!MathMode &&
+ if (!CurStkMode(&MathModeStack) &&
(((*PrePtr == '$') && (PrePtr[-1] == '$')) ||
(!strinfront(PrePtr, "\\]"))))
HEREA(1, emPunctMath, "inside display");
@@ -1524,9 +1638,8 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
case '`':
if ((Char == *BufPtr) && (Char == BufPtr[1]))
{
- PrintError(CurStkName(&InputStack), RealBuf,
+ PrintError(emThreeQuotes, CurStkName(&InputStack), RealBuf,
BufPtr - Buf - 1, 3, Line,
- emThreeQuotes,
Char, Char, Char, Char, Char, Char);
}
@@ -1557,7 +1670,7 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
HERE(TmpPtr - BufPtr + 1, emBeginQ);
/* Now check quote style */
-#define ISPUNCT(ptr) (strchr(LTX_GenPunc, *ptr) && (ptr[-1] != '\\'))
+#define ISPUNCT(ptr) ((strchr(LTX_EosPunc, *ptr) || strchr(LTX_GenPunc, *ptr)) && (ptr[-1] != '\\'))
/* We ignore all single words/abbreviations in quotes */
@@ -1662,9 +1775,8 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
1, emFalsePage);
}
- if (LATEX_SPACE(*BufPtr) && !MathMode &&
- !CheckSilentRegex() &&
- (strlen(CmdBuffer) != 2))
+ if (LATEX_SPACE(*BufPtr) && !CurStkMode(&MathModeStack) &&
+ !CheckSilentRegex() && (strlen(CmdBuffer) != 2))
{
PSERR(BufPtr - Buf, 1, emSpaceTerm);
}
@@ -1696,7 +1808,7 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
break;
case ')':
- if (isspace((unsigned char)*PrePtr))
+ if (SeenSpace)
PSERRA(BufPtr - Buf - 1, 1, emNoSpaceParen,
"in front of");
if (isalpha((unsigned char)*BufPtr))
@@ -1726,7 +1838,14 @@ int FindErr(const char *_RealBuf, const unsigned long _Line)
SKIP_AHEAD(TmpPtr, TmpC, (TmpC != '$' && TmpC != '\0'));
PSERR(BufPtr - Buf - 1, TmpPtr-BufPtr+2, emInlineMath);
}
- MathMode ^= TRUE;
+ if (CurStkMode(&MathModeStack))
+ {
+ StkPop(&MathModeStack);
+ }
+ else
+ {
+ PushMode(TRUE, &MathModeStack);
+ }
}
break;
@@ -1782,29 +1901,35 @@ void PrintStatus(unsigned long Lines)
while ((ei = PopErr(&CharStack)))
{
- PrintError(ei->File, ei->LineBuf, ei->Column,
- ei->ErrLen, ei->Line, emNoMatchC, (char *) ei->Data);
+ PrintError(emNoMatchC, ei->File, ei->LineBuf, ei->Column,
+ ei->ErrLen, ei->Line, (char *) ei->Data);
FreeErrInfo(ei);
}
while ((ei = PopErr(&EnvStack)))
{
- PrintError(ei->File, ei->LineBuf, ei->Column,
- ei->ErrLen, ei->Line, emNoMatchC, (char *) ei->Data);
+ PrintError(emNoMatchC, ei->File, ei->LineBuf, ei->Column,
+ ei->ErrLen, ei->Line, (char *) ei->Data);
+ FreeErrInfo(ei);
+ }
+
+ while ((ei = PopErr(&ConTeXtStack)))
+ {
+ PrintError(emNoMatchConTeXt, ei->File, ei->LineBuf, ei->Column,
+ ei->ErrLen, ei->Line, (char *) ei->Data);
FreeErrInfo(ei);
}
- if (MathMode)
+ if (CurStkMode(&MathModeStack))
{
- PrintError(CurStkName(&InputStack), "", 0L, 0L, Lines, emMathStillOn);
+ PrintError(emMathStillOn, CurStkName(&InputStack), "", 0L, 0L, Lines);
}
for (Cnt = 0L; Cnt < (NUMBRACKETS >> 1); Cnt++)
{
if (Brackets[Cnt << 1] != Brackets[(Cnt << 1) + 1])
{
- PrintError(CurStkName(&InputStack), "", 0L, 0L, Lines,
- emNoMatchCC,
+ PrintError(emNoMatchCC, CurStkName(&InputStack), "", 0L, 0L, Lines,
BrOrder[Cnt << 1], BrOrder[(Cnt << 1) + 1]);
}
}
@@ -1818,7 +1943,14 @@ void PrintStatus(unsigned long Lines)
/* Print how to suppress warnings. */
if ( ErrPrint + WarnPrint > 0 ) {
- fprintf(stderr, "See the manual for how to suppress some or all of these warnings/errors.\n" );
+ fprintf(
+ stderr,
+ "See the manual for how to suppress some or all of these warnings/errors.\n"
+ "The manual is available "
+#ifdef TEX_LIVE
+ "by running `texdoc chktex` or "
+#endif
+ "at https://www.nongnu.org/chktex/ChkTeX.pdf\n");
}
}
}
@@ -1847,12 +1979,11 @@ void PrintStatus(unsigned long Lines)
void
-PrintError(const char *File, const char *String,
- const long Position, const long Len,
- const long LineNo, const enum ErrNum Error, ...)
+PrintError(const enum ErrNum Error, const char *File, const char *String,
+ const long Position, const long Len, const long LineNo, ...)
{
static /* Just to reduce stack usage... */
- char PrintBuffer[BUFSIZ];
+ char PrintBuffer[BUFFER_SIZE];
va_list MsgArgs;
char *LastNorm = OutputFormat;
@@ -1872,7 +2003,6 @@ PrintError(const char *File, const char *String,
}
else
{
- FoundErr = EXIT_FAILURE;
Context = LaTeXMsgs[Error].Context;
if (!HeadErrOut)
@@ -1880,18 +2010,22 @@ PrintError(const char *File, const char *String,
#define RGTCTXT(Ctxt, Var) if((Context & Ctxt) && !(Var)) break;
- RGTCTXT(ctInMath, MathMode);
- RGTCTXT(ctOutMath, !MathMode);
+ RGTCTXT(ctInMath, CurStkMode(&MathModeStack));
+ RGTCTXT(ctOutMath, !CurStkMode(&MathModeStack));
RGTCTXT(ctInHead, InHeader);
RGTCTXT(ctOutHead, !InHeader);
+ /* Count how warnings or errors we've found, and
+ * update the return code with the worst. */
switch (LaTeXMsgs[Error].Type)
{
case etWarn:
WarnPrint++;
+ FoundErr = max(FoundErr, EXIT_WARNINGS);
break;
case etErr:
ErrPrint++;
+ FoundErr = max(FoundErr, EXIT_ERRORS);
break;
case etMsg:
break;
@@ -1946,7 +2080,7 @@ PrintError(const char *File, const char *String,
fprintf(OutputFile, "%ld", LineNo);
break;
case 'm':
- va_start(MsgArgs, Error);
+ va_start(MsgArgs, LineNo);
vfprintf(OutputFile,
LaTeXMsgs[Error].Message, MsgArgs);
va_end(MsgArgs);
@@ -2008,6 +2142,10 @@ static enum ErrNum PerformCommand(const char *Cmd, char *Arg)
AtLetter = TRUE;
else if (!strcmp(Cmd, "\\makeatother"))
AtLetter = FALSE;
+ else if (!strcmp(Cmd, "\\frenchspacing"))
+ FrenchSpacing = TRUE;
+ else if (!strcmp(Cmd, "\\nonfrenchspacing"))
+ FrenchSpacing = FALSE;
else if (InputFiles && !(strcmp(Cmd, "\\input") && strcmp(Cmd, "\\include")))
{
SKIP_AHEAD(Arg, TmpC, LATEX_SPACE(TmpC));
@@ -2029,8 +2167,8 @@ static enum ErrNum PerformCommand(const char *Cmd, char *Arg)
SKIP_AHEAD(Arg, TmpC, LATEX_SPACE(TmpC));
if (*Arg == '{')
{
- MathFlag = MathMode ? efMath : efNoMath;
- MathMode = 1;
+ /* We will actually turn on math mode when we enter the {} */
+ MathFlag = efMath;
}
}
else if (HasWord(Cmd, &TextCmd))
@@ -2038,8 +2176,8 @@ static enum ErrNum PerformCommand(const char *Cmd, char *Arg)
SKIP_AHEAD(Arg, TmpC, LATEX_SPACE(TmpC));
if (*Arg == '{')
{
- MathFlag = MathMode ? efMath : efNoMath;
- MathMode = 0;
+ /* We will actually turn on text mode when we enter the {} */
+ MathFlag = efNoMath;
}
}
else if (*Cmd == '\\')
@@ -2049,11 +2187,14 @@ static enum ErrNum PerformCommand(const char *Cmd, char *Arg)
{
case '(':
case '[':
- MathMode = TRUE;
+ PushMode(TRUE, &MathModeStack);
break;
case ']':
case ')':
- MathMode = FALSE;
+ if (!CurStkMode(&MathModeStack))
+ PSERRA(BufPtr - Buf - 2, 1, emMathModeConfusion, "on");
+
+ StkPop(&MathModeStack);
break;
case '/':
switch (ItState)
diff --git a/support/chktex/FindErrs.h b/support/chktex/FindErrs.h
index df38559ba3..8190da2168 100644
--- a/support/chktex/FindErrs.h
+++ b/support/chktex/FindErrs.h
@@ -128,7 +128,13 @@
MSG(emDisplayMath, etWarn, iuOK, ctOutMath,\
"Use \\[ ... \\] instead of $$ ... $$.")\
MSG(emInlineMath, etWarn, iuNotSys, ctOutMath,\
- "Use \\( ... \\) instead of $ ... $.")
+ "Use \\( ... \\) instead of $ ... $.")\
+ MSG(emExpectConTeXt, etWarn, iuOK, ctNone,\
+ "`%s' expected, found `%s' (ConTeXt).")\
+ MSG(emNoMatchConTeXt, etWarn, iuOK, ctNone,\
+ "No match found for `%s' (ConTeXt).") \
+ MSG(emMathModeConfusion, etWarn, iuOK, ctNone,\
+ "Expected math mode to be %s here.")
#undef MSG
#define MSG(num, type, inuse, ctxt, text) num,
@@ -193,8 +199,8 @@ extern char *OutputFormat;
int CheckSilentRegex(void);
int FindErr(const char *, const unsigned long);
-void PrintError(const char *, const char *, const long, const long,
- const long, const enum ErrNum, ...);
+void PrintError(const enum ErrNum, const char *, const char *, const long,
+ const long, const long, ...);
void PrintStatus(unsigned long Lines);
#endif /* FINDERRS */
diff --git a/support/chktex/MakeChkTeXRC.pl b/support/chktex/MakeChkTeXRC.pl
new file mode 100755
index 0000000000..4e7e9208ba
--- /dev/null
+++ b/support/chktex/MakeChkTeXRC.pl
@@ -0,0 +1,71 @@
+# Used to convert chktexrc.in (which see) into chktexrc and ChkTeXRC.tex
+
+use strict;
+use warnings;
+
+my $chktexrc_output;
+if ( $ARGV[0] eq '--chktexrc' ) {
+ $chktexrc_output = 1;
+} elsif ( $ARGV[0] eq '--latex' ) {
+ $chktexrc_output = 0;
+} else {
+ exit 1;
+}
+
+
+# Filter the lines of the file
+open(my $fh, '<:encoding(UTF-8)', $ARGV[1])
+ or die "Could not open file '$ARGV[1]' $!";
+
+while ( <$fh> ) {
+ if (/^#### END$/) {
+ exit 0;
+ }
+
+ if ($chktexrc_output) {
+ # chktexrc output, so discard all lines over 2
+ next if /^#{3,}/;
+
+ s/\@verb\@/`/g;
+ s/\@endverb\@/'/g;
+ s/\@emph\@/*/g;
+ s/\@endemph\@/*/g;
+ s/\@ref\@/ /g;
+ s/\@endref\@//g;
+
+ s/\@TeX@/TeX/g;
+ s/\@LaTeX@/LaTeX/g;
+ s/\@ChkTeX@/ChkTeX/g;
+ s/\@\\{2}\@//g; # \\ in LaTeX
+ s/\\\@ */ /g; # \@ in LaTeX
+ s/\@bf //g;
+ s/\@\&\@//g;
+ print;
+
+ } else {
+
+ # LaTeX output, so discard lines except with 1,3
+ next if /^#{4,}/;
+ next if /^#{2} /;
+ # next unless /^#/;
+ s/^#+[ ]*//;
+
+ s/\@emph\@/\\emph{/g;
+ s/\@endemph\@/}/g;
+ s/\@ref\@(.*)\@endref\@/~\\hyperref[rc:$1]{$1}/g;
+
+
+ s/\@TeX@/\\TeX{}/g;
+ s/\@LaTeX@/\\LaTeX{}/g;
+ s/\@ChkTeX@/\\chktex{}/g;
+ s/\@verb\@/\\verb@/g;
+ s/\@endverb\@/@/g;
+ s/\@\\{2}\@/\\\\/g;
+ s/\@bf/\\bf/g;
+ s/\@\&\@/&/g;
+
+ print;
+ }
+}
+# TODO:
+# \ChkTeX
diff --git a/support/chktex/Makefile.in b/support/chktex/Makefile.in
index 8980880ea3..4c8222e4da 100644
--- a/support/chktex/Makefile.in
+++ b/support/chktex/Makefile.in
@@ -47,6 +47,7 @@ LIBS=@LIBS@
LDFLAGS=@LDFLAGS@
LN_S=@LN_S@
LATEX=@LATEX@
+PDFLATEX=@PDFLATEX@
DVIPS=@DVIPS@
PS2PDF=ps2pdf
PERL5=@PERL5@
@@ -64,7 +65,7 @@ VPATH=$(srcdir)
#####################################################################
-EXTRA_DIST=configure.in Makefile.in stamp-h.in config.h.in rmeheader.in \
+EXTRA_DIST=configure.ac Makefile.in stamp-h.in config.h.in rmeheader.in \
MakeHTML.pl ChkTeX.tex.in aclocal.m4 NEWS \
chkweb deweb.in COPYING chktex.1 chkweb.1 deweb.1 \
input.tex Test.tex Test.pcre.out Test.posix-ere.out Test.nore.out configure \
@@ -72,7 +73,7 @@ EXTRA_DIST=configure.in Makefile.in stamp-h.in config.h.in rmeheader.in \
$(wildcard m4/*.m4)
# created by configure
-CONFIG_DIST=ChkTeX.tex
+CONFIG_DIST=ChkTeX.tex ChkTeXRC.tex chktexrc
# created at make time
BUILT_DIST=chktex.doc chkweb.doc deweb.doc README ChkTeX.dvi
@@ -85,7 +86,7 @@ SOURCEFILES=$(CSOURCES) $(wildcard $(CSOURCES:.c=.h)) types.h
DISTFILES=$(EXTRA_DIST) $(SOURCEFILES)
-all: chktex
+all: chktex chktexrc
DISTDIR:=chktex-@PACKAGE_VERSION@
dist: $(DISTDIR).tar.gz
@@ -124,7 +125,7 @@ endif
OBJS= ChkTeX.o FindErrs.o OpSys.o Resource.o Utility.o
-MAKETEST= (builddir=`pwd` ; cd $(srcdir) ; $${builddir}/chktex -mall -r -g0 -lchktexrc -v5 Test.tex || :)
+MAKETEST= (builddir=`pwd` ; cd $(srcdir) ; $${builddir}/chktex -mall -r -g0 -lchktexrc -v5 -q Test.tex || :)
# We can't grep the output of chtex because it might not be built yet
TestOutFile := $(shell sed -n 's/.*HAVE_\(.*RE\) 1.*/\1/p' config.h | tr "A-Z_" "a-z-")
@@ -133,14 +134,14 @@ TestOutFile := Test.nore.out
else
TestOutFile := Test.$(TestOutFile).out
endif
-$(srcdir)/$(TestOutFile): $(srcdir)/Test.tex
+$(srcdir)/$(TestOutFile): $(srcdir)/Test.tex $(srcdir)/input/file
-rm -f $(srcdir)/$(TestOutFile)
@echo ""
@echo "***Warning: creating $(TestOutFile)***"
@echo ""
$(MAKETEST) 1> $(srcdir)/$(TestOutFile)
-check: chktex $(srcdir)/$(TestOutFile)
+check: chktex $(srcdir)/$(TestOutFile) chktexrc
@echo ">>> Testing that checking algorithms work correctly..."
@-rm -f chktest
$(MAKETEST) 1> chktest
@@ -154,6 +155,7 @@ check: chktex $(srcdir)/$(TestOutFile)
echo "results were *supposed* to be..."; \
diff -u $(srcdir)/$(TestOutFile) chktest; \
fi
+ $(srcdir)/tests/run-tests.sh `pwd` "$(srcdir)"
chktex: $(OBJS)
@@ -233,12 +235,12 @@ endif
###################### AUTOCONF REMAKING ################################
-$(srcdir)/configure: configure.in aclocal.m4
+$(srcdir)/configure: configure.ac aclocal.m4
cd $(srcdir) && autoconf
#autoheader might not change config.h.in, so touch a stamp file.
$(srcdir)/config.h.in: stamp-h.in
-$(srcdir)/stamp-h.in: configure.in aclocal.m4
+$(srcdir)/stamp-h.in: configure.ac aclocal.m4
cd $(srcdir) && autoheader
echo timestamp > $(srcdir)/stamp-h.in
@@ -260,7 +262,14 @@ config.status: configure
%.doc: %.1
$(GROFF) $< > $@
-ChkTeX.dvi: ChkTeX.tex
+ChkTeXRC.tex: chktexrc.in MakeChkTeXRC.pl
+ $(PERL5) $(srcdir)/MakeChkTeXRC.pl --latex $(srcdir)/chktexrc.in > ChkTeXRC.tex
+
+chktexrc: chktexrc.in MakeChkTeXRC.pl
+ $(PERL5) $(srcdir)/MakeChkTeXRC.pl --chktexrc $(srcdir)/chktexrc.in > chktexrc
+
+
+ChkTeX.dvi: ChkTeX.tex ChkTeXRC.tex
ifdef LATEX
$(LATEX) ChkTeX.tex
else
@@ -271,8 +280,13 @@ endif
ChkTeX.ps: ChkTeX.dvi
$(DVIPS) -o ChkTeX.ps ChkTeX.dvi
+ifdef PDFLATEX
+ChkTeX.pdf: ChkTeX.tex ChkTeXRC.tex
+ $(PDFLATEX) -interaction=nonstopmode ChkTeX.tex
+else
ChkTeX.pdf: ChkTeX.ps
$(PS2PDF) $< $@
+endif
cover:
-./chktex -h
diff --git a/support/chktex/NEWS b/support/chktex/NEWS
index 14c389b6b8..5605c50b2d 100644
--- a/support/chktex/NEWS
+++ b/support/chktex/NEWS
@@ -1,6 +1,48 @@
Development of ChkTeX is now in a maintainance mode. All versions
1.6.x are essentially bug fixes. Version 1.7 added some new features.
+1.7.8 (2022-10-17), released by Ivan Andrus <darthandrus@gmail.com>
+
+ * Fix some packaging issues for CTAN
+
+1.7.7 (2022-10-17), released by Ivan Andrus <darthandrus@gmail.com>
+
+ * Fix false positives
+ * Fix overzealous warning of x between numbers #60184
+ * Handle nested mathmode e.g. \ensuremath #60197
+ * Add many citation commands from biblatex #56608
+ * Add support for breqn package #62631
+ * WipeArg on \graphicspath #47593
+ * WipeArg on LuaTeX macros which contain lua code #53146
+ * Add \itshape to Silent section https://tex.stackexchange.com/questions/627808/why-does-chktex-complain-when-there-is-a-space-after-itshape-but-not-when-bfse
+ * Make QuoteStyle warnings work with end of sentence punctuation #53494
+ * When checking for inter-word spacing, ignore certain punctuation #54751, #53347
+ * Allow \frenchspacing to turn off warning 13 (intersentence spacing)
+ * Don't warn about space before a parenthesis at the beginning of the line if the previous line ended with a comment (and no space) #109479
+ * Make exit status 2 or 3 (not 1) when warnings or errors are found. Some callers expected a return value of 1 to mean an internal error. #53129
+
+ * Fix many bugs
+ * Make ChkTeX process longer lines, especially on Windows. This doesn't fix the problem entirely, but it should amerliorate it to a large extent.
+ * Make file suppressions only apply to the file they are in. This allows putting all the "badness" into one file. #57809
+ * Add check to make sure input is a regular file and not a directory #56520
+ * Add support for relative paths in sub directories #53494
+ * Manage ConTeXt environments separately from LaTeX environments #51179
+ * Change argument order to avoid undefined behavior in va_start()
+
+ * New warnings and features
+ * Add regex for unescaped optional arguments inside optional arguments #56657
+ * Support RC settings on the command line #56486
+ * Warn about phrases that match DashExcpt _except_ for the hyphens #58886
+ * Add CmdSpaceStyle option to Ignore spacing problems after commands #60809, #60380
+ * Add support for finding chktexrc files in XDG locations #61405
+ * Add new warning when ChkTeX gets confused about mathmode
+
+ * Improved documentation
+ * Make chktexrc somewhat literate and creating ChkTeXRC.tex as well.
+ * Make "keywords" link to the appropriate chktexrc variable documentation
+ * Add note about chktexrc and link to documentation in the help message #50004 #61179
+ * Indicate that debug is a bit field instead of a level
+
1.7.6 (2016-09-09), released by Ivan Andrus <darthandrus@gmail.com>
* Properly copy and free strings. This caused incorrect file
diff --git a/support/chktex/OpSys.c b/support/chktex/OpSys.c
index 7d055b7228..67e2bea4a4 100644
--- a/support/chktex/OpSys.c
+++ b/support/chktex/OpSys.c
@@ -115,7 +115,9 @@ static char term_buffer[2048];
# define LOCALRCFILE "." RCBASENAME
#endif
-char ConfigFile[BUFSIZ] = LOCALRCFILE;
+char ConfigFile[BUFFER_SIZE] = LOCALRCFILE;
+struct WordList ConfigFiles;
+
const char *ReverseOn;
const char *ReverseOff;
@@ -150,6 +152,7 @@ enum LookIn
liMin,
liSysDir,
liUsrDir,
+ liXdgDir,
liEnvir,
liCurDir,
liNFound,
@@ -177,12 +180,10 @@ int SetupVars(void)
break;
case liEnvir: /* Environment defined */
#ifdef __MSDOS__
-
if ((Env = getenv("CHKTEXRC")) || (Env = getenv("CHKTEX_HOME")))
#elif defined(TEX_LIVE)
if ((Env = kpse_var_value("CHKTEXRC")))
#else
-
if ((Env = getenv("CHKTEXRC")))
#endif
@@ -206,6 +207,27 @@ int SetupVars(void)
*ConfigFile = 0;
break;
+
+ case liXdgDir: /* Cross-desktop group dir for resource files */
+
+ /* XDG is really unix specific, but it shouldn't hurt to
+ * support it on Windows, should someone set the variables. */
+ if ((Env = getenv("XDG_CONFIG_HOME")) && *Env)
+ {
+ strcpy(ConfigFile, Env);
+ tackon(ConfigFile, RCBASENAME);
+ }
+ else if ((Env = getenv("HOME")) && *Env)
+ {
+ strcpy(ConfigFile, Env);
+ tackon(ConfigFile, ".config");
+ tackon(ConfigFile, RCBASENAME);
+ }
+ else
+ *ConfigFile = 0;
+
+ break;
+
case liUsrDir: /* User dir for resource files */
#if defined(__unix__)
@@ -446,6 +468,45 @@ static int HasFile(char *Dir, const char *Filename, const char *App)
}
+/*
+ * If Filename is contains a directory component, then add a fully qualified
+ * directory to the TeXInputs WordList.
+ *
+ * I'm not sure how it will work with some Windows paths,
+ * e.g. C:path\to\file.tex since it doesn't really understand the leading C:
+ * But I'm not sure it would even work with a path like that, and I have no
+ * way to test it.
+ *
+ * Behaviour somewhat controlled by the macros SLASH and DIRCHARS in the
+ * OpSys.h file.
+ *
+ */
+
+void AddDirectoryFromRelativeFile(const char * Filename, struct WordList *TeXInputs)
+{
+ if ( ! Filename )
+ return;
+
+ /* There are no path delimiters, so it's just a file, return null */
+ if ( ! strstr( Filename, DIRCHARS ) )
+ return;
+
+
+ char buf[BUFFER_SIZE];
+ if ( strchr(DIRCHARS,Filename[0]) ) {
+ strcpy(buf,Filename);
+ } else {
+ getcwd(buf, BUFFER_SIZE);
+ tackon(buf,Filename);
+ }
+
+ /* Keep up to the final SLASH -- that will be the directory. */
+ char * end = strrchr(buf,SLASH);
+ *end = '\0';
+ InsertWord(buf,TeXInputs);
+}
+
+
#if USE_RECURSE
static int SearchFile(char *Dir, const char *Filename, const char *App)
{
@@ -490,3 +551,24 @@ static int SearchFile(char *Dir, const char *Filename, const char *App)
return (Found);
}
#endif /* USE_RECURSE */
+
+#if defined(HAVE_STAT)
+int IsRegFile(const char *Filename)
+{
+ int Retval = FALSE;
+ struct stat *statbuf;
+ if ((statbuf = malloc(sizeof(struct stat))))
+ {
+ if (!stat(Filename, statbuf))
+ {
+ if ((statbuf->st_mode & S_IFMT) == S_IFREG)
+ Retval = TRUE;
+ }
+ free(statbuf);
+ }
+
+ return Retval;
+}
+#else
+int IsRegFile(const char *Filename) { printf("WTF\n");return TRUE; }
+#endif
diff --git a/support/chktex/OpSys.h b/support/chktex/OpSys.h
index 7ce3f1b527..d1b3f37689 100644
--- a/support/chktex/OpSys.h
+++ b/support/chktex/OpSys.h
@@ -59,7 +59,7 @@
* You may wish to modify the SetupVars() (OpSys.c) to better suit your
* preferences. In any case, it should put the filename (and full path)
* of the `.chktexrc' file into the ConfigFile array. The array is sized
- * BUFSIZ bytes.
+ * BUFFER_SIZE bytes.
*
* The program does also assume that __unix__ is defined if the source is
* compiled on a UNIX machine.
@@ -83,6 +83,9 @@
# define EXIT_SUCCESS 0
#endif
+#define EXIT_WARNINGS 2
+#define EXIT_ERRORS 3
+
/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */
/*
@@ -182,6 +185,26 @@
# define BAKAPPENDIX ".bak"
#endif
+
+/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */
+
+/*
+ * This defines the buffer size used in many places. The biggest
+ * limitation imposed by a small buffer is the size of a line which
+ * can be accurately processed by chktex. On the other hand, a large
+ * buffer size will waste memory. However, memory is quite cheap
+ * these days, especially considering the amount needed by ChkTeX.
+ *
+ * ChkTeX used to use BUFSIZ which was 1024 (fairly reasonable) on
+ * many UNIX-like systems, but was much smaller on Windows. So,
+ * instead we create our own buffer size and hope that no-one has
+ * lines longer than 4k.
+ *
+ */
+
+#define BUFFER_SIZE 4096
+
+
/***************** END OF USER SETTABLE PREFERENCES *****************/
/********************************************************************/
@@ -189,14 +212,14 @@
struct WordList;
#endif
/* Sorry; there are now cyclic dependencies in the
-* source tree. :-/
+* source tree. :-/
*/
extern const char *ReverseOn;
extern const char *ReverseOff;
-extern char ConfigFile[BUFSIZ];
+extern char ConfigFile[BUFFER_SIZE];
+extern struct WordList ConfigFiles;
-char *MatchFileName(char *String);
int SetupVars(void);
void SetupTerm(void);
void AddAppendix(char *Name, const char *App);
@@ -204,4 +227,7 @@ void tackon(char *, const char *);
int LocateFile(const char *Filename, char *Dest, const char *App,
struct WordList *wl);
+void AddDirectoryFromRelativeFile(const char * Filename, struct WordList *TeXInputs);
+int IsRegFile(const char *Filename);
+
#endif /* OPSYS_H */
diff --git a/support/chktex/Resource.c b/support/chktex/Resource.c
index f301c6aff2..40a37df54c 100644
--- a/support/chktex/Resource.c
+++ b/support/chktex/Resource.c
@@ -90,7 +90,8 @@ TOKENBITS(Token);
static enum Token Expect;
static unsigned long RsrcLine;
-static enum Token ReadWord(char *, FILE *);
+static enum Token ReadWord(char *, FILE *,
+ char *(fgetsfun)(char *, int, FILE *));
static char MapChars(char **String);
@@ -108,11 +109,11 @@ static char MapChars(char **String);
* Returns whether the attempt was a successful one.
*/
-int ReadRC(const char *Filename)
+int ProcessRC(FILE *fh, const char *Filename,
+ char *(fgetsfun)(char *, int, FILE *))
{
const char *String = NULL;
- int Success = FALSE;
- FILE *fh;
+ int Success = TRUE;
enum Token Token;
unsigned long Counter;
@@ -130,130 +131,138 @@ int ReadRC(const char *Filename)
RsrcLine = 0;
Expect = FLG_Word | FLG_Eof;
-
- if ((fh = fopen(Filename, "r")))
+ do
{
- Success = TRUE;
- do
+ Token = ReadWord(ReadBuffer, fh, fgetsfun);
+ if (!(Expect & Token))
{
- Token = ReadWord(ReadBuffer, fh);
- if (!(Expect & Token))
+ switch (Token)
{
- switch (Token)
+ case FLG_Item:
+ String = "item";
+ break;
+ case FLG_Word:
+ String = "word";
+ break;
+ case FLG_Equal:
+ String = "`='";
+ break;
+ case FLG_Open:
+ String = "`{'";
+ break;
+ case FLG_Close:
+ String = "`}'";
+ break;
+ case FLG_BrOpen:
+ String = "`['";
+ break;
+ case FLG_BrClose:
+ String = "`]'";
+ break;
+ case FLG_Eof:
+ String = "EOF";
+ break;
+ }
+ PrintPrgErr(pmFaultFmt, Filename, RsrcLine, String);
+ Success = FALSE;
+ Token = FLG_Eof;
+ }
+
+ switch (Token)
+ {
+ case FLG_Word:
+ for (Counter = 0; Keys[Counter].Name; Counter++)
+ {
+ if (!strcasecmp(ReadBuffer, Keys[Counter].Name))
{
- case FLG_Item:
- String = "item";
- break;
- case FLG_Word:
- String = "word";
- break;
- case FLG_Equal:
- String = "`='";
- break;
- case FLG_Open:
- String = "`{'";
- break;
- case FLG_Close:
- String = "`}'";
- break;
- case FLG_BrOpen:
- String = "`['";
- break;
- case FLG_BrClose:
- String = "`]'";
- break;
- case FLG_Eof:
- String = "EOF";
+ CurWord = &Keys[Counter];
+ Expect = (CurWord->List ? FLG_Open : 0) |
+ (CurWord->CaseList ? FLG_BrOpen : 0) | FLG_Equal;
break;
}
- PrintPrgErr(pmFaultFmt, Filename, RsrcLine, String);
+ }
+ if (!Keys[Counter].Name)
+ {
+ PrintPrgErr(pmKeyWord, ReadBuffer, Filename);
Success = FALSE;
Token = FLG_Eof;
}
-
- switch (Token)
+ break;
+ case FLG_Item:
+ switch (What)
{
- case FLG_Word:
- for (Counter = 0; Keys[Counter].Name; Counter++)
+ case whEqual:
+ if (!(*(CurWord->String) = strdup(ReadBuffer)))
{
- if (!strcasecmp(ReadBuffer, Keys[Counter].Name))
- {
- CurWord = &Keys[Counter];
- Expect = (CurWord->List ? FLG_Open : 0) |
- (CurWord->CaseList ? FLG_BrOpen : 0) | FLG_Equal;
- break;
- }
+ PrintPrgErr(pmStrDupErr);
+ Token = FLG_Eof;
+ Success = FALSE;
}
- if (!Keys[Counter].Name)
+
+ What = whNone;
+ Expect = FLG_Word | FLG_Eof;
+ break;
+ case whCaseList:
+ if (!InsertWord(ReadBuffer, CurWord->CaseList))
{
- PrintPrgErr(pmKeyWord, ReadBuffer, Filename);
- Success = FALSE;
Token = FLG_Eof;
+ Success = FALSE;
}
break;
- case FLG_Item:
- switch (What)
+ case whList:
+ if (!InsertWord(ReadBuffer, CurWord->List))
{
- case whEqual:
- if (!(*(CurWord->String) = strdup(ReadBuffer)))
- {
- PrintPrgErr(pmStrDupErr);
- Token = FLG_Eof;
- Success = FALSE;
- }
-
- What = whNone;
- Expect = FLG_Word | FLG_Eof;
- break;
- case whCaseList:
- if (!InsertWord(ReadBuffer, CurWord->CaseList))
- {
- Token = FLG_Eof;
- Success = FALSE;
- }
- break;
- case whList:
- if (!InsertWord(ReadBuffer, CurWord->List))
- {
- Token = FLG_Eof;
- Success = FALSE;
- }
- break;
- case whNone:
- PrintPrgErr(pmAssert);
+ Token = FLG_Eof;
+ Success = FALSE;
}
break;
- case FLG_Equal:
- What = whEqual;
- Expect = (CurWord->List ? FLG_Open : 0) |
- (CurWord->CaseList ? FLG_BrOpen : 0) |
- (CurWord->String ? FLG_Item : 0);
- break;
- case FLG_BrOpen:
- if (What == whEqual)
- ClearWord(CurWord->CaseList);
- What = whCaseList;
- Expect = FLG_Item | FLG_BrClose;
- break;
- case FLG_Open:
- if (What == whEqual)
- ClearWord(CurWord->List);
- What = whList;
- Expect = FLG_Item | FLG_Close;
- break;
- case FLG_BrClose:
- case FLG_Close:
- Expect = (CurWord->List ? FLG_Open : 0) |
- (CurWord->CaseList ? FLG_BrOpen : 0) |
- FLG_Equal | FLG_Word | FLG_Eof;
- What = whNone;
- break;
- case FLG_Eof:
- break;
+ case whNone:
+ PrintPrgErr(pmAssert);
}
+ break;
+ case FLG_Equal:
+ What = whEqual;
+ Expect = (CurWord->List ? FLG_Open : 0) |
+ (CurWord->CaseList ? FLG_BrOpen : 0) |
+ (CurWord->String ? FLG_Item : 0);
+ break;
+ case FLG_BrOpen:
+ if (What == whEqual)
+ ClearWord(CurWord->CaseList);
+ What = whCaseList;
+ Expect = FLG_Item | FLG_BrClose;
+ break;
+ case FLG_Open:
+ if (What == whEqual)
+ ClearWord(CurWord->List);
+ What = whList;
+ Expect = FLG_Item | FLG_Close;
+ break;
+ case FLG_BrClose:
+ case FLG_Close:
+ Expect = (CurWord->List ? FLG_Open : 0) |
+ (CurWord->CaseList ? FLG_BrOpen : 0) | FLG_Equal | FLG_Word |
+ FLG_Eof;
+ What = whNone;
+ break;
+ case FLG_Eof:
+ break;
}
- while (Token != FLG_Eof);
+ } while (Token != FLG_Eof);
+ return (Success);
+}
+/*
+ * Opens a file and passes to ProcessRC().
+ */
+int ReadRC(const char *Filename)
+{
+ int Success = FALSE;
+ FILE *fh;
+
+ if ((fh = fopen(Filename, "r")))
+ {
+ Success = ProcessRC(fh, Filename, &fgets);
fclose(fh);
}
else
@@ -262,16 +271,52 @@ int ReadRC(const char *Filename)
return (Success);
}
+const char *FGETS_TMP = NULL;
+char *fgets_from_string(char *out, int size, FILE *fh)
+{
+ char *res;
+ if (FGETS_TMP == NULL)
+ return NULL;
+ res = strncpy(out, FGETS_TMP, size - 1);
+
+ if (size - 1 < strlen(FGETS_TMP))
+ {
+ /* It wasn't all read, so null terminate it, and get ready for
+ * next time. */
+ res[size] = '\0';
+ FGETS_TMP = FGETS_TMP + (size - 1);
+ }
+ else
+ {
+ /* We're done, so signal that */
+ FGETS_TMP = NULL;
+ }
+ return res;
+}
+
+/*
+ * Opens a file and passes to ProcessRC().
+ */
+int ReadRCFromCmdLine(const char *CmdLineArg)
+{
+ if (!CmdLineArg)
+ return FALSE;
+
+ FGETS_TMP = CmdLineArg;
+ return ProcessRC(NULL, "CommandLineArg", &fgets_from_string);
+}
+
/*
* Reads a token from the `.chktexrc' file; if the token is
* FLG_Item or FLG_Word, Buffer will contain the plaintext of the
* token. If not, the contents are undefined.
*/
-static enum Token ReadWord(char *Buffer, FILE * fh)
+static enum Token ReadWord(char *Buffer, FILE *fh,
+ char *(fgetsfun)(char *, int, FILE *))
{
static char *String = NULL;
- static char StatBuf[BUFSIZ];
+ static char StatBuf[BUFFER_SIZE];
enum Token Retval = FLG_Eof;
unsigned short Chr;
@@ -285,7 +330,7 @@ static enum Token ReadWord(char *Buffer, FILE * fh)
{
if (!(String && *String))
{
- if (fgets(StatBuf, BUFSIZ - 1, fh))
+ if ((fgetsfun)(StatBuf, BUFFER_SIZE - 1, fh))
String = strip(StatBuf, STRP_RGT);
RsrcLine++;
}
diff --git a/support/chktex/Resource.h b/support/chktex/Resource.h
index c0ebed0bd1..e2736a05d4 100644
--- a/support/chktex/Resource.h
+++ b/support/chktex/Resource.h
@@ -48,8 +48,9 @@
LIST(CenterDots) LIST(LowDots) LIST(OutFormat)\
LIST(Primitives) LIST(NotPreSpaced) LIST(NonItalic) LIST(NoCharNext)\
LNEMPTY(CmdLine) LNEMPTY(TeXInputs)\
- LCASE(Abbrev) LCASE(UserWarn) LIST(UserWarnRegex)\
- KEY(VerbClear, "|") KEY(QuoteStyle, "Traditional") KEY(TabSize, "8")
+ LCASE(Abbrev) LCASE(UserWarn) LIST(UserWarnRegex) LIST(TextEnvir)\
+ KEY(VerbClear, "|") KEY(QuoteStyle, "Traditional") KEY(TabSize, "8")\
+ KEY(CmdSpaceStyle, "Ignore")
#define LIST(a) extern struct WordList a;
#define LNEMPTY LIST
@@ -62,6 +63,7 @@ RESOURCE_INFO
#undef LNEMPTY
#undef LIST
int ReadRC(const char *);
+int ReadRCFromCmdLine(const char *CmdLineArg);
#endif /* RESOURCE */
diff --git a/support/chktex/Test.nore.out b/support/chktex/Test.nore.out
index 44e3571500..07393eabd9 100644
--- a/support/chktex/Test.nore.out
+++ b/support/chktex/Test.nore.out
@@ -19,12 +19,6 @@ So is this \foo
Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
\smallskip This is a not. $\foo Neither$ is this.
^^^^^^^^^^^^^^
-Message 1 in Test.tex: Command terminated with space.
-\stoptext
- ^
-Message 9 in Test.tex: `section' expected, found `text'.
-\stoptext
- ^^^^
Message 22 in Test.tex: Comment displayed.
% Warning 2
^
@@ -136,12 +130,18 @@ The Birch--Swinnerton--Dyer conjecture is not correct.
Message 8 in Test.tex: Wrong length of dash may have been used.
The Birch--Swinnerton--Dyer conjecture is not correct.
^^
+Message 8 in Test.tex: Wrong length of dash may have been used.
+The Birch-Swinnerton-Dyer conjecture is not correct (is now caught).
+ ^
Message 22 in Test.tex: Comment displayed.
% Warning 9-10
^
Message 22 in Test.tex: Comment displayed.
% Brackets:
^
+Message 37 in Test.tex: You should avoid spaces in front of parenthesis.
+)}{[])} }}}]]])))
+^
Message 10 in Test.tex: Solo `)' found.
)}{[])} }}}]]])))
^
@@ -194,6 +194,27 @@ Message 10 in Test.tex: Solo `asoi' found.
\begin{quux} \begin{baz} \end{quux} \end{baz} \end{asoi} \begin{dobedo}
^^^^
Message 22 in Test.tex: Comment displayed.
+% Warning 47 -- ConTeXt environment mismatch -- split from 9
+^
+Message 1 in Test.tex: Command terminated with space.
+\stoptext
+ ^
+Message 47 in Test.tex: `section' expected, found `text' (ConTeXt).
+\stoptext
+ ^^^^
+Message 1 in Test.tex: Command terminated with space.
+\starttext
+ ^
+Message 22 in Test.tex: Comment displayed.
+% (Un)fortunately, this is not an error
+^
+Message 1 in Test.tex: Command terminated with space.
+\startbar
+ ^
+Message 1 in Test.tex: Command terminated with space.
+\stopbar
+ ^
+Message 22 in Test.tex: Comment displayed.
% Warning 11
^
Message 11 in Test.tex: You should use \ldots to achieve an ellipsis.
@@ -260,12 +281,39 @@ Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob.: joe.! frank.? james.. george
^
Message 22 in Test.tex: Comment displayed.
+% Bug 54751
+^
+Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
+Mr. ``X'' and Mrs. \(Y\)
+ ^
+Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
+Mr. ``X'' and Mrs. \(Y\)
+ ^
+Message 22 in Test.tex: Comment displayed.
+% ignore commands by default
+^
+Message 22 in Test.tex: Comment displayed.
% Warning 13
^
Message 13 in Test.tex: Intersentence spacing (`\@') should perhaps be used.
Look at THIS! It's an error.
^
Message 22 in Test.tex: Comment displayed.
+% after frenchspacing it's not an error
+^
+Message 22 in Test.tex: Comment displayed.
+% warning again
+^
+Message 13 in Test.tex: Intersentence spacing (`\@') should perhaps be used.
+Look at THIS! It's an error.
+ ^
+Message 22 in Test.tex: Comment displayed.
+% ignore commands by default
+^
+Message 21 in Test.tex: This command might not be intended.
+Look at \THIS\@! It's not an error. D. E. Knuth.
+ ^^
+Message 22 in Test.tex: Comment displayed.
% Warning 14
^
Message 1 in Test.tex: Command terminated with space.
@@ -358,6 +406,12 @@ Message 1 in input.tex: Command terminated with space.
Message 11 in input.tex: You should use \ldots to achieve an ellipsis.
\this is a test of whether the file is actually inputted...
^^^
+Message 22 in input/file: Comment displayed.
+% -*- TeX -*-
+^
+Message 22 in input/file: Comment displayed.
+% chktex-file 22
+^
Message 22 in Test.tex: Comment displayed.
% Warning 29
^
@@ -367,6 +421,12 @@ The program opens a screen sized 640x200 pixels
Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
The program opens a screen sized $640\times200$ pixels
^^^^^^^^^^^^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+Approximately $\frac{2x}{1+x}$ $x$s shouldn't be errors.
+ ^^^^^^^^^^^^^^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+Approximately $\frac{2x}{1+x}$ $x$s shouldn't be errors.
+ ^^^
Message 22 in Test.tex: Comment displayed.
% Warning 30
^
@@ -451,6 +511,9 @@ Message 22 in Test.tex: Comment displayed.
Message 38 in Test.tex: You should not use punctuation in front of quotes.
``An example,'' he said, ``would be great.''
^
+Message 38 in Test.tex: You should not use punctuation in front of quotes.
+``An example,'' he said, ``would be great.''
+ ^
Message 22 in Test.tex: Comment displayed.
% Warning 39
^
@@ -536,6 +599,12 @@ Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
For every $p\nmid n$ you have a cute prime which doesn't divide $n$.
^^^
Message 22 in Test.tex: Comment displayed.
+% Warning about optional arguments inside optional arguments
+^
+Message 22 in Test.tex: Comment displayed.
+% Shouldn't warn
+^
+Message 22 in Test.tex: Comment displayed.
% Math mode check
^
Message 35 in Test.tex: You should perhaps use `\sin' instead.
@@ -557,6 +626,18 @@ Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
Also, $x(3)\text{ is not x(3) but it is $x(3)$}$
^^^^^^
Message 22 in Test.tex: Comment displayed.
+% breqn mode check
+^
+Message 35 in Test.tex: You should perhaps use `\sin' instead.
+sin x
+^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+is not the same as sin x, but is the same as $sin x$
+ ^^^^^^^
+Message 35 in Test.tex: You should perhaps use `\sin' instead.
+is not the same as sin x, but is the same as $sin x$
+ ^^^
+Message 22 in Test.tex: Comment displayed.
This is\\% a comment. Nothing here should be checked(right)?
^
Message 36 in Test.tex: You should put a space in front of parenthesis.
@@ -596,6 +677,18 @@ Message 31 in Test.tex: This text may be ignored.
\end{verbatim} FOO
^^^
Message 22 in Test.tex: Comment displayed.
+% WipeArg
+^
+Message 22 in Test.tex: Comment displayed.
+% Bug 60197 -- "double math mode" should be handled okay
+^
+Message 22 in Test.tex: Comment displayed.
+% Warning 49
+^
+Message 49 in Test.tex: Expected math mode to be on here.
+\]
+^
+Message 22 in Test.tex: Comment displayed.
% Warning 16,15
^
Message 45 in Test.tex: Use \[ ... \] instead of $$ ... $$.
@@ -613,6 +706,9 @@ Message 22 in Test.tex: Comment displayed.
Message 22 in Test.tex: Comment displayed.
% There should be no newline at the end of this file to test bug #46539
^
+Message 48 in Test.tex: No match found for `text' (ConTeXt).
+\starttext
+ ^^^^
Message 16 in Test.tex: Mathmode still on at end of LaTeX file.
diff --git a/support/chktex/Test.pcre.out b/support/chktex/Test.pcre.out
index c2e8eefac2..2f47f60de1 100644
--- a/support/chktex/Test.pcre.out
+++ b/support/chktex/Test.pcre.out
@@ -19,9 +19,6 @@ So is this \foo
Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
\smallskip This is a not. $\foo Neither$ is this.
^^^^^^^^^^^^^^
-Message 9 in Test.tex: `section' expected, found `text'.
-\stoptext
- ^^^^
Message 22 in Test.tex: Comment displayed.
% Warning 2
^
@@ -133,12 +130,18 @@ The Birch--Swinnerton--Dyer conjecture is not correct.
Message 8 in Test.tex: Wrong length of dash may have been used.
The Birch--Swinnerton--Dyer conjecture is not correct.
^^
+Message 8 in Test.tex: Wrong length of dash may have been used.
+The Birch-Swinnerton-Dyer conjecture is not correct (is now caught).
+ ^
Message 22 in Test.tex: Comment displayed.
% Warning 9-10
^
Message 22 in Test.tex: Comment displayed.
% Brackets:
^
+Message 37 in Test.tex: You should avoid spaces in front of parenthesis.
+)}{[])} }}}]]])))
+^
Message 10 in Test.tex: Solo `)' found.
)}{[])} }}}]]])))
^
@@ -178,6 +181,9 @@ Message 10 in Test.tex: Solo `)' found.
Message 10 in Test.tex: Solo `)' found.
)}{[])} }}}]]])))
^
+Message 44 in Test.tex: User Regex: -3:Optional arguments [] inside optional arguments [] must be enclosed in {}.
+{[]} ((([[[{{{}}}]]])))
+ ^^^
Message 22 in Test.tex: Comment displayed.
% Envs:
^
@@ -191,6 +197,15 @@ Message 10 in Test.tex: Solo `asoi' found.
\begin{quux} \begin{baz} \end{quux} \end{baz} \end{asoi} \begin{dobedo}
^^^^
Message 22 in Test.tex: Comment displayed.
+% Warning 47 -- ConTeXt environment mismatch -- split from 9
+^
+Message 47 in Test.tex: `section' expected, found `text' (ConTeXt).
+\stoptext
+ ^^^^
+Message 22 in Test.tex: Comment displayed.
+% (Un)fortunately, this is not an error
+^
+Message 22 in Test.tex: Comment displayed.
% Warning 11
^
Message 11 in Test.tex: You should use \ldots to achieve an ellipsis.
@@ -257,12 +272,39 @@ Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob.: joe.! frank.? james.. george
^
Message 22 in Test.tex: Comment displayed.
+% Bug 54751
+^
+Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
+Mr. ``X'' and Mrs. \(Y\)
+ ^
+Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
+Mr. ``X'' and Mrs. \(Y\)
+ ^
+Message 22 in Test.tex: Comment displayed.
+% ignore commands by default
+^
+Message 22 in Test.tex: Comment displayed.
% Warning 13
^
Message 13 in Test.tex: Intersentence spacing (`\@') should perhaps be used.
Look at THIS! It's an error.
^
Message 22 in Test.tex: Comment displayed.
+% after frenchspacing it's not an error
+^
+Message 22 in Test.tex: Comment displayed.
+% warning again
+^
+Message 13 in Test.tex: Intersentence spacing (`\@') should perhaps be used.
+Look at THIS! It's an error.
+ ^
+Message 22 in Test.tex: Comment displayed.
+% ignore commands by default
+^
+Message 21 in Test.tex: This command might not be intended.
+Look at \THIS\@! It's not an error. D. E. Knuth.
+ ^^
+Message 22 in Test.tex: Comment displayed.
% Warning 14
^
Message 1 in Test.tex: Command terminated with space.
@@ -355,6 +397,12 @@ Message 1 in input.tex: Command terminated with space.
Message 11 in input.tex: You should use \ldots to achieve an ellipsis.
\this is a test of whether the file is actually inputted...
^^^
+Message 22 in input/file: Comment displayed.
+% -*- TeX -*-
+^
+Message 22 in input/file: Comment displayed.
+% chktex-file 22
+^
Message 22 in Test.tex: Comment displayed.
% Warning 29
^
@@ -364,6 +412,12 @@ The program opens a screen sized 640x200 pixels
Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
The program opens a screen sized $640\times200$ pixels
^^^^^^^^^^^^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+Approximately $\frac{2x}{1+x}$ $x$s shouldn't be errors.
+ ^^^^^^^^^^^^^^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+Approximately $\frac{2x}{1+x}$ $x$s shouldn't be errors.
+ ^^^
Message 22 in Test.tex: Comment displayed.
% Warning 30
^
@@ -448,6 +502,9 @@ Message 22 in Test.tex: Comment displayed.
Message 38 in Test.tex: You should not use punctuation in front of quotes.
``An example,'' he said, ``would be great.''
^
+Message 38 in Test.tex: You should not use punctuation in front of quotes.
+``An example,'' he said, ``would be great.''
+ ^
Message 22 in Test.tex: Comment displayed.
% Warning 39
^
@@ -536,6 +593,27 @@ Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
For every $p\nmid n$ you have a cute prime which doesn't divide $n$.
^^^
Message 22 in Test.tex: Comment displayed.
+% Warning about optional arguments inside optional arguments
+^
+Message 44 in Test.tex: User Regex: -3:Optional arguments [] inside optional arguments [] must be enclosed in {}.
+\begin{something}[\cite2[1231]{adadsd}]\end{something}
+ ^^^^^^^^
+Message 44 in Test.tex: User Regex: -3:Optional arguments [] inside optional arguments [] must be enclosed in {}.
+[dasd{dasda[ ads[ dasd ]]}]
+ ^^^^^^
+Message 44 in Test.tex: User Regex: -3:Optional arguments [] inside optional arguments [] must be enclosed in {}.
+adssd[ {}[]]
+ ^^^^^
+Message 44 in Test.tex: User Regex: -3:Optional arguments [] inside optional arguments [] must be enclosed in {}.
+\begin{something}[\cite{adadsd}[1231]]\end{something}
+ ^^^^^^^^^^^^^^^
+Message 44 in Test.tex: User Regex: -3:Optional arguments [] inside optional arguments [] must be enclosed in {}.
+\begin{something}[ ][\cite{adadsd}[1231]]\end{something}
+ ^^^^^^^^^^^^^^^
+Message 22 in Test.tex: Comment displayed.
+% Shouldn't warn
+^
+Message 22 in Test.tex: Comment displayed.
% Math mode check
^
Message 35 in Test.tex: You should perhaps use `\sin' instead.
@@ -557,6 +635,18 @@ Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
Also, $x(3)\text{ is not x(3) but it is $x(3)$}$
^^^^^^
Message 22 in Test.tex: Comment displayed.
+% breqn mode check
+^
+Message 35 in Test.tex: You should perhaps use `\sin' instead.
+sin x
+^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+is not the same as sin x, but is the same as $sin x$
+ ^^^^^^^
+Message 35 in Test.tex: You should perhaps use `\sin' instead.
+is not the same as sin x, but is the same as $sin x$
+ ^^^
+Message 22 in Test.tex: Comment displayed.
This is\\% a comment. Nothing here should be checked(right)?
^
Message 36 in Test.tex: You should put a space in front of parenthesis.
@@ -605,6 +695,18 @@ Message 31 in Test.tex: This text may be ignored.
\end{verbatim} FOO
^^^
Message 22 in Test.tex: Comment displayed.
+% WipeArg
+^
+Message 22 in Test.tex: Comment displayed.
+% Bug 60197 -- "double math mode" should be handled okay
+^
+Message 22 in Test.tex: Comment displayed.
+% Warning 49
+^
+Message 49 in Test.tex: Expected math mode to be on here.
+\]
+^
+Message 22 in Test.tex: Comment displayed.
% Warning 16,15
^
Message 45 in Test.tex: Use \[ ... \] instead of $$ ... $$.
@@ -622,6 +724,9 @@ Message 22 in Test.tex: Comment displayed.
Message 22 in Test.tex: Comment displayed.
% There should be no newline at the end of this file to test bug #46539
^
+Message 48 in Test.tex: No match found for `text' (ConTeXt).
+\starttext
+ ^^^^
Message 16 in Test.tex: Mathmode still on at end of LaTeX file.
diff --git a/support/chktex/Test.posix-ere.out b/support/chktex/Test.posix-ere.out
index c89ce36936..f22f757d72 100644
--- a/support/chktex/Test.posix-ere.out
+++ b/support/chktex/Test.posix-ere.out
@@ -19,9 +19,6 @@ So is this \foo
Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
\smallskip This is a not. $\foo Neither$ is this.
^^^^^^^^^^^^^^
-Message 9 in Test.tex: `section' expected, found `text'.
-\stoptext
- ^^^^
Message 22 in Test.tex: Comment displayed.
% Warning 2
^
@@ -133,12 +130,18 @@ The Birch--Swinnerton--Dyer conjecture is not correct.
Message 8 in Test.tex: Wrong length of dash may have been used.
The Birch--Swinnerton--Dyer conjecture is not correct.
^^
+Message 8 in Test.tex: Wrong length of dash may have been used.
+The Birch-Swinnerton-Dyer conjecture is not correct (is now caught).
+ ^
Message 22 in Test.tex: Comment displayed.
% Warning 9-10
^
Message 22 in Test.tex: Comment displayed.
% Brackets:
^
+Message 37 in Test.tex: You should avoid spaces in front of parenthesis.
+)}{[])} }}}]]])))
+^
Message 10 in Test.tex: Solo `)' found.
)}{[])} }}}]]])))
^
@@ -191,6 +194,15 @@ Message 10 in Test.tex: Solo `asoi' found.
\begin{quux} \begin{baz} \end{quux} \end{baz} \end{asoi} \begin{dobedo}
^^^^
Message 22 in Test.tex: Comment displayed.
+% Warning 47 -- ConTeXt environment mismatch -- split from 9
+^
+Message 47 in Test.tex: `section' expected, found `text' (ConTeXt).
+\stoptext
+ ^^^^
+Message 22 in Test.tex: Comment displayed.
+% (Un)fortunately, this is not an error
+^
+Message 22 in Test.tex: Comment displayed.
% Warning 11
^
Message 11 in Test.tex: You should use \ldots to achieve an ellipsis.
@@ -257,12 +269,39 @@ Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob.: joe.! frank.? james.. george
^
Message 22 in Test.tex: Comment displayed.
+% Bug 54751
+^
+Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
+Mr. ``X'' and Mrs. \(Y\)
+ ^
+Message 12 in Test.tex: Interword spacing (`\ ') should perhaps be used.
+Mr. ``X'' and Mrs. \(Y\)
+ ^
+Message 22 in Test.tex: Comment displayed.
+% ignore commands by default
+^
+Message 22 in Test.tex: Comment displayed.
% Warning 13
^
Message 13 in Test.tex: Intersentence spacing (`\@') should perhaps be used.
Look at THIS! It's an error.
^
Message 22 in Test.tex: Comment displayed.
+% after frenchspacing it's not an error
+^
+Message 22 in Test.tex: Comment displayed.
+% warning again
+^
+Message 13 in Test.tex: Intersentence spacing (`\@') should perhaps be used.
+Look at THIS! It's an error.
+ ^
+Message 22 in Test.tex: Comment displayed.
+% ignore commands by default
+^
+Message 21 in Test.tex: This command might not be intended.
+Look at \THIS\@! It's not an error. D. E. Knuth.
+ ^^
+Message 22 in Test.tex: Comment displayed.
% Warning 14
^
Message 1 in Test.tex: Command terminated with space.
@@ -355,6 +394,12 @@ Message 1 in input.tex: Command terminated with space.
Message 11 in input.tex: You should use \ldots to achieve an ellipsis.
\this is a test of whether the file is actually inputted...
^^^
+Message 22 in input/file: Comment displayed.
+% -*- TeX -*-
+^
+Message 22 in input/file: Comment displayed.
+% chktex-file 22
+^
Message 22 in Test.tex: Comment displayed.
% Warning 29
^
@@ -364,6 +409,12 @@ The program opens a screen sized 640x200 pixels
Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
The program opens a screen sized $640\times200$ pixels
^^^^^^^^^^^^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+Approximately $\frac{2x}{1+x}$ $x$s shouldn't be errors.
+ ^^^^^^^^^^^^^^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+Approximately $\frac{2x}{1+x}$ $x$s shouldn't be errors.
+ ^^^
Message 22 in Test.tex: Comment displayed.
% Warning 30
^
@@ -448,6 +499,9 @@ Message 22 in Test.tex: Comment displayed.
Message 38 in Test.tex: You should not use punctuation in front of quotes.
``An example,'' he said, ``would be great.''
^
+Message 38 in Test.tex: You should not use punctuation in front of quotes.
+``An example,'' he said, ``would be great.''
+ ^
Message 22 in Test.tex: Comment displayed.
% Warning 39
^
@@ -536,6 +590,12 @@ Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
For every $p\nmid n$ you have a cute prime which doesn't divide $n$.
^^^
Message 22 in Test.tex: Comment displayed.
+% Warning about optional arguments inside optional arguments
+^
+Message 22 in Test.tex: Comment displayed.
+% Shouldn't warn
+^
+Message 22 in Test.tex: Comment displayed.
% Math mode check
^
Message 35 in Test.tex: You should perhaps use `\sin' instead.
@@ -557,6 +617,18 @@ Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
Also, $x(3)\text{ is not x(3) but it is $x(3)$}$
^^^^^^
Message 22 in Test.tex: Comment displayed.
+% breqn mode check
+^
+Message 35 in Test.tex: You should perhaps use `\sin' instead.
+sin x
+^^^
+Message 46 in Test.tex: Use \( ... \) instead of $ ... $.
+is not the same as sin x, but is the same as $sin x$
+ ^^^^^^^
+Message 35 in Test.tex: You should perhaps use `\sin' instead.
+is not the same as sin x, but is the same as $sin x$
+ ^^^
+Message 22 in Test.tex: Comment displayed.
This is\\% a comment. Nothing here should be checked(right)?
^
Message 36 in Test.tex: You should put a space in front of parenthesis.
@@ -605,6 +677,18 @@ Message 31 in Test.tex: This text may be ignored.
\end{verbatim} FOO
^^^
Message 22 in Test.tex: Comment displayed.
+% WipeArg
+^
+Message 22 in Test.tex: Comment displayed.
+% Bug 60197 -- "double math mode" should be handled okay
+^
+Message 22 in Test.tex: Comment displayed.
+% Warning 49
+^
+Message 49 in Test.tex: Expected math mode to be on here.
+\]
+^
+Message 22 in Test.tex: Comment displayed.
% Warning 16,15
^
Message 45 in Test.tex: Use \[ ... \] instead of $$ ... $$.
@@ -622,6 +706,9 @@ Message 22 in Test.tex: Comment displayed.
Message 22 in Test.tex: Comment displayed.
% There should be no newline at the end of this file to test bug #46539
^
+Message 48 in Test.tex: No match found for `text' (ConTeXt).
+\starttext
+ ^^^^
Message 16 in Test.tex: Mathmode still on at end of LaTeX file.
diff --git a/support/chktex/Test.tex b/support/chktex/Test.tex
index 9a7fc05fa0..1285447355 100644
--- a/support/chktex/Test.tex
+++ b/support/chktex/Test.tex
@@ -13,10 +13,6 @@ are nonsense in a TeXnical manner.
So is this \foo
\smallskip This is a not. $\foo Neither$ is this.
-\startsection[title={Testing ConTeXt}]
-These should now be an error.
-\stoptext
-
% Warning 2
This is a faulty reference to \ref{foo}
@@ -55,7 +51,7 @@ in plain TeX---are the key
% Using DashExcpt
The Birch--Swinnerton-Dyer conjecture is correct.
The Birch--Swinnerton--Dyer conjecture is not correct.
-The Birch-Swinnerton-Dyer conjecture is not correct (but not caught).
+The Birch-Swinnerton-Dyer conjecture is not correct (is now caught).
% Warning 9-10
@@ -70,6 +66,18 @@ The Birch-Swinnerton-Dyer conjecture is not correct (but not caught).
\begin{foo} \begin{bar} \end{bar}\end{foo}
+% Warning 47 -- ConTeXt environment mismatch -- split from 9
+\startsection[title={Testing ConTeXt}]
+These should now be an error.
+\stoptext
+\starttext
+
+% (Un)fortunately, this is not an error
+\begin{foo}
+\startbar
+\end{foo}
+\stopbar
+
% Warning 11
Foo...bar. $1,...,3$. $1+...+3$. $1,\cdots,3$. $1\cdot\ldots\cdot3$.
@@ -80,11 +88,31 @@ Foo\dots bar. $1,\ldots,3$. $1+\cdots+3$. $1,\ldots,3$. $1\cdot\cdots\cdot3$.
1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar baz., billy.; bob.: joe.! frank.? james.. george
1st.\ foo Inc.\ ab.cd.\ foo ab.cd.\ Foo.\ bar baz., billy.; bob.:\ joe.!\ frank.?\ james..\ george
+% Bug 54751
+
+Mr. ``X'' and Mrs. \(Y\)
+
+% ignore commands by default
+\Mr. ``X'' and \Mrs. \(Y\)
+
% Warning 13
Look at THIS! It's an error.
Look at THIS\@! It's an error. D. E. Knuth.
+% after frenchspacing it's not an error
+\frenchspacing
+Look at THIS! It's not an error.
+Look at THIS\@! It's not an error. D. E. Knuth.
+
+% warning again
+\nonfrenchspacing
+Look at THIS! It's an error.
+Look at THIS\@! It's not an error. D. E. Knuth.
+
+% ignore commands by default
+Look at \THIS\@! It's not an error. D. E. Knuth.
+
% Warning 14
\hat
@@ -133,10 +161,12 @@ Do you understand?
\input input.tex
\input input
+\input input/file
% Warning 29
The program opens a screen sized 640x200 pixels
The program opens a screen sized $640\times200$ pixels
+Approximately $\frac{2x}{1+x}$ $x$s shouldn't be errors.
% Warning 30
@@ -197,10 +227,34 @@ You should always write a good introduction.
For every $p\not|n$ you have an ugly prime which doesn't divide $n$.
For every $p\nmid n$ you have a cute prime which doesn't divide $n$.
+% Warning about optional arguments inside optional arguments
+\begin{something}[\cite2[1231]{adadsd}]\end{something}
+[dasd{dasda[ ads[ dasd ]]}]
+adssd[ {}[]]
+\begin{something}[\cite{adadsd}[1231]]\end{something}
+\begin{something}[ ][\cite{adadsd}[1231]]\end{something}
+
+% Shouldn't warn
+\begin{something}[{\cite{adadsd}[1231]}]\end{something}
+\begin{something}[{\cite{{adadsd}}[1231]}]\end{something}
+\begin{something}[{\cite{adadsd}[1231]}]\end{something}
+\begin{something}[ ]{\cite{adadsd}[1231]}\end{something}
+\begin{something}[ ][{\cite{adadsd}[1231]}]\end{something}
+\begin{something}[{} ]{\cite{adadsd}[1231]}\end{something}
+
+
% Math mode check
\ensuremath{sin x\text{is not the same as sin x, but is the same as $sin x$}}
Also, $x(3)\text{ is not x(3) but it is $x(3)$}$
+% breqn mode check
+\begin{darray*}
+sin x
+\begin{dsuspend}
+is not the same as sin x, but is the same as $sin x$
+\end{dsuspend}
+\end{darray*}
+
This is\\% a comment. Nothing here should be checked(right)?
a broken line.
But this is not a \% comment, so we should find this error(right)?
@@ -227,6 +281,23 @@ In section~\ref{sec:4} it is suppressed. % chktex -1
\this is
\end{verbatim} FOO
+% WipeArg
+\autocite[34-35]{text--1---1}
+
+% Bug 60197 -- "double math mode" should be handled okay
+\begin{align}
+ \begin{array} {l}
+ abc
+ \end{array} \\
+ 3 - 2 = 1
+ \pi
+\end{align}
+
+
+% Warning 49
+
+\]
+
% Warning 16,15
$$(
diff --git a/support/chktex/Utility.c b/support/chktex/Utility.c
index 6f05e98f61..390d83d28f 100644
--- a/support/chktex/Utility.c
+++ b/support/chktex/Utility.c
@@ -87,8 +87,7 @@ int fexists(const char *Filename)
#else
FILE *fh;
-
- if (fh = fopen(Filename, "r"))
+ if ((fh = fopen(Filename, "r")))
{
Retval = TRUE;
fclose(fh);
@@ -97,6 +96,12 @@ int fexists(const char *Filename)
Retval = FALSE;
#endif
+ /* Ensure that it's not a directory */
+ if (Retval && !IsRegFile(Filename))
+ {
+ Retval = FALSE;
+ }
+
return (Retval);
}
@@ -115,7 +120,7 @@ void *sfmemset(void *to, int c, long n)
{
if (to && (n > 0))
{
- n = min(n, BUFSIZ);
+ n = min(n, BUFFER_SIZE);
return (memset(to, c, (size_t) n));
}
@@ -325,7 +330,7 @@ void strwrite(char *To, const char *From, unsigned long Len)
unsigned long i, j;
unsigned long FromLen = strlen(From);
- Len = min(Len, BUFSIZ);
+ Len = min(Len, BUFFER_SIZE);
if (To && From)
{
@@ -681,7 +686,7 @@ void *StkTop(struct Stack *Stack)
int PushFileName(const char *Name, struct Stack *stack)
{
FILE *fh = NULL;
- static char NameBuf[BUFSIZ];
+ static char NameBuf[BUFFER_SIZE];
if (Name && stack)
{
@@ -701,6 +706,7 @@ int PushFileName(const char *Name, struct Stack *stack)
int PushFile(const char *Name, FILE * fh, struct Stack *stack)
{
struct FileNode *fn;
+ uint64_t *filesupp;
if (Name && fh && stack)
{
@@ -710,6 +716,21 @@ int PushFile(const char *Name, FILE * fh, struct Stack *stack)
{
fn->fh = fh;
fn->Line = 0L;
+ if ((filesupp = malloc(sizeof(uint64_t))))
+ {
+ *filesupp = 0;
+ StkPush(filesupp, &FileSuppStack);
+ }
+ else
+ PrintPrgErr(pmNoStackMem);
+ if ((filesupp = malloc(sizeof(uint64_t))))
+ {
+ *filesupp = 0;
+ StkPush(filesupp, &UserFileSuppStack);
+ }
+ else
+ PrintPrgErr(pmNoStackMem);
+
if (StkPush(fn, stack))
return (TRUE);
free(fn->Name);
@@ -754,6 +775,9 @@ char *FGetsStk(char *Dest, unsigned long len, struct Stack *stack)
free(fn->Name);
free(fn);
HasSeenLong = 0;
+
+ StkPop(&FileSuppStack);
+ StkPop(&UserFileSuppStack);
}
while (!Retval && (fn = StkTop(stack)));
}
@@ -805,8 +829,27 @@ unsigned long CurStkLine(struct Stack *stack)
return (LastLine);
}
+long CurStkMode(struct Stack *stack)
+{
+ long * Mode;
+ if ((Mode = StkTop(stack)))
+ return *Mode;
+ /* printf("Empty stack\n"); */
+ return FALSE;
+}
+long *PushMode(long mode, struct Stack *stack)
+{
+ long *m;
+ if ((m = malloc(sizeof(long))))
+ {
+ *m = mode;
+ StkPush(m, stack);
+ return m;
+ }
+ return NULL;
+}
/************************** CHARACTER STACK ******************************/
/*
diff --git a/support/chktex/Utility.h b/support/chktex/Utility.h
index b1b31ec773..7dc7c9a317 100644
--- a/support/chktex/Utility.h
+++ b/support/chktex/Utility.h
@@ -89,12 +89,6 @@ struct FileNode
unsigned long Line;
};
-/* Rotates x n bits left (should be an int, long, etc.) */
-#define ROTATEL(x,n) ((x<<n) | (x>>((CHAR_BIT*sizeof(x)) - n)))
-
-/* Rotates x n bits right (should be an int, long, etc.) */
-#define ROTATER(x,n) ((x>>n) | (x<<((CHAR_BIT*sizeof(x)) - n)))
-
/* Subtract 1 because sizeof includes the null terminator.
* WARNING: To use this on a variable, the type should be char[]
* rather than char*, since for some versions of gcc these give
@@ -132,6 +126,8 @@ void *StkTop(struct Stack *Stack);
FILE *CurStkFile(struct Stack *stack);
const char *CurStkName(struct Stack *stack);
unsigned long CurStkLine(struct Stack *stack);
+long CurStkMode(struct Stack *stack);
+long *PushMode(long mode, struct Stack *stack);
char *FGetsStk(char *Dest, unsigned long len, struct Stack *stack);
int PushFileName(const char *Name, struct Stack *stack);
int PushFile(const char *, FILE *, struct Stack *);
diff --git a/support/chktex/aclocal.m4 b/support/chktex/aclocal.m4
index 022e3ea7e7..b1f5d91eac 100644
--- a/support/chktex/aclocal.m4
+++ b/support/chktex/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.15 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -12,5 +12,7 @@
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_include([m4/ax_append_flag.m4])
m4_include([m4/ax_cflags_strict_prototypes.m4])
+m4_include([m4/ax_require_defined.m4])
m4_include([m4/vl_prog_cc_warnings.m4])
diff --git a/support/chktex/chktexrc b/support/chktex/chktexrc
deleted file mode 100644
index c6355f8db1..0000000000
--- a/support/chktex/chktexrc
+++ /dev/null
@@ -1,802 +0,0 @@
-##
-## ChkTeX, example resource file for ChkTeX.
-## Copyright (C) 1995-96 Jens T. Berger Thielemann
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-##
-## Contact the author at:
-## Jens Berger
-## Spektrumvn. 4
-## N-0666 Oslo
-## Norway
-## E-mail: <jensthi@ifi.uio.no>
-##
-
-#####################################################################
-#
-# Note: The format has changed slightly (again). The { ... }
-# syntax does now mean case-sensitive comparing, while [ ... ] means
-# case-insensitive comparing of the keywords. Case-insensitive
-# comparing of the keywords is only supported on a few of the
-# keywords (it's not meaningful in all contexts, and it slows ChkTeX
-# down). Keywords supporting this are marked throughout the file.
-#
-# You may also reset a list by saying "KEYWORD = { ... }"; it will
-# then be set equal to the contents of the list you specify.
-#
-# Comments begin with `#', and continues for the rest of the line.
-# Blank lines plus leading and trailing spaces are of course ignored.
-#
-# The general format of this file is the following:
-#
-# KEYWORD { item item ...} [ item item ... ] /* Adds items */
-#
-# KEYWORD [ item item ...] { item item ... } /* Adds items */
-#
-# KEYWORD = item
-#
-# KEYWORD = { item item ... } /* Clears list before adding */
-#
-# KEYWORD = [ item item ... ] /* Clears list before adding */
-#
-# This does _not_ mean that you may alternate the forms; certain
-# keywords demands a list, other a single value. You thus have to
-# look at the examples of their use.
-#
-# Please also note that if you specify a list-keyword twice, we'll
-# concatenate the lists. If you specify a item-keyword twice, we'll
-# kill the previous value.
-#
-# We are slightly context-sensitive when detecting tokens like "}"
-# and "]"; they have to be preceded by a space. This generally makes
-# life easier.
-#
-# Items are separated by spaces. Newlines are considered as spaces,
-# but can't be escaped. You may surround items with quotes (`"') to
-# easily put spaces into them.
-#
-# Escape sequences available:
-#
-# Sequence Resulting character
-# ! A space (type `! ', not just a exclamation mark)
-# !" "
-# !# #
-# !! !
-# !{ {
-# !} }
-# ![ [
-# !] ]
-# != =
-# !b Backspace
-# !n New line
-# !r Carriage return
-# !t Tab
-# !f Form feed
-# !xNN NN must be a hexadecimal number (00 - ff),
-# _both_ characters must be included.
-# !dNNN DDD must be a decimal number (000 - 255), all
-# three characters must be included. Unspecified
-# results if DDD > 255.
-# !NNN DDD must be a octal number (000 - 377), all
-# three characters must be included. Unspecified
-# results if DDD > 377.
-#
-# Minor note: As you can see, most of these escape sequences are
-# equal to those in C (with some extensions); however, we use !
-# instead of \ as escape character for obvious reasons.
-#
-#
-# Quick summary of keywords follows. Keywords marked with a * accept
-# keywords accepting case-insensitive lists.
-#
-# Abbrev* - A list of abbreviations not automatically caught.
-# CenterDots - Commands/characters which should have \cdots in
-# between.
-# CmdLine - Default commandline options. These will be
-# processed before the ones you give on the command
-# line.
-# HyphDash \
-# NumDash - Number of dashes allowed in different contexts.
-# WordDash /
-# IJAccent - Commands which puts an accent _over_ their
-# argument.
-# Italic - Commands immediately turning on italic mode.
-# ItalCmd - Commands putting their argument into italic.
-# Linker - Commands which should have a non-breaking space in
-# front.
-# LowDots - Commands/characters which should have \ldots in
-# between.
-# MathEnvir - Environments which turn on math mode.
-# MathCmd - Commands which turn on math mode.
-# TextCmd - Commands which turn off math mode.
-# MathRoman - Mathematical operators with LaTeX replacement
-# defined.
-# NoCharNext - Insists on that certain commands aren't followed by
-# certain characters.
-# NonItalic - Commands immediately turning off italic mode.
-# NotPreSpaced- Commands which should not have a space in front of
-# them.
-# Primitives - Primitive TeX commands.
-# PostLink - Commands which generates a page reference.
-# OutFormat - Formats to use for output. See the -f & -v switch
-# in the main doc.
-# QuoteStyle - Either "Traditional" or "Logical". See main doc,
-# warning 38.
-# Silent - These commands do not produce any textual output;
-# and are thus allowed to have a space after them.
-# TabSize - Tab size you are using.
-# TeXInputs - Paths to search \input and \include files for.
-# UserWarn* - These strings will be searched for throughout the
-# text.
-# VerbEnvir - Environments which contents should be ignored.
-# VerbClear - String we will overwrite unwanted data with.
-# WipeArg - Commands (with arguments) which should be ignored
-# in the checking.
-#
-
-
-#####################################################################
-#
-# Enter which type of quote-style you are using here. Currently, we
-# support the following styles:
-#
-# Style Example of use
-# Traditional "An example," he said, "would be great."
-# Logical "An example", he said, "would be great".
-#
-
-QuoteStyle = Logical
-
-#####################################################################
-#
-# Enter here what interval you have between your tabs. Only regular
-# intervals are supported.
-#
-
-TabSize = 8
-
-#####################################################################
-#
-# Here, you can put default commandline options; most users would for
-# instance like to put -v2 here.
-#
-
-CmdLine
-{
-
-}
-
-#####################################################################
-#
-# These patterns will be searched for through the text; no matter
-# whether they appear as normal text, commands or whatever.
-# Currently case-sensitive. They are not found in comments.
-#
-# I usually define a special command like this:
-#
-# \def\unknown{\large\bf??}
-#
-# which I use whenever there is some information I don't have at the
-# moment of writing. Thus, it makes sense to search for it.
-#
-# You should be able to develop your own uses for this.
-#
-
-UserWarn
-{
-
- \unknown
-###
-#
-# Another example; one should write \chktex or Chk\TeX - never ChkTeX.
-#
-###
-
- ChkTeX
-}
-[
-
-###
-#
-# You may put case-insensitive patterns here.
-#
-###
-
-]
-
-
-###
-#
-# These patterns will be searched for, no matter whether they appear
-# as normal text, commands or arguments. However, they will _not_
-# match in verbatim environments.
-#
-# Remember that you have to escape (with a !) the following
-# characters: "#!= as well as spaces and {}[] if they are proceeded by
-# a space.
-#
-# Since these are PCRE regular expressions, you can use (?i) to make
-# the expression case insensitive. See the man pages (man pcresyntax)
-# or the nicely formatted http://perldoc.perl.org/perlre.html for
-# documentation on the regular expression syntax. Note however that
-# some the features of perl regular expression are not available such
-# as running code (callouts), and replacing.
-#
-# An initial PCRE comment (?# ... ) can be used change what is
-# displayed, thereby reminding yourself how to fix the problem.
-#
-###
-UserWarnRegex
-{
-
- (?!#Always! use! \nmid)\\not! *(\||\\mid)
-
- # capitalize section when saying Section 6.
- (?!#-1:Capitalize! before! references)PCRE:\b(chapter|(sub)?section|theorem|lemma|proposition|corollary|appendix)~\\ref
- (?!#1:Capitalize! before! references)POSIX:([^[:alnum:]]|^)(chapter|(sub)?section|theorem|lemma|proposition|corollary|appendix)~\\ref
-
- # spell it out.
- # PCRE:(?i)\bintro\b(?!#Spell! it! out.! This! comment! is! not! used.)
- # POSIX:([^[:alnum:]]|^)intro([^[:alnum:]]|$)
-
- # Pretty tables--see http://texdoc.net/texmf-dist/doc/latex/booktabs/booktabs.pdf
- (?!#-2:Use! \toprule,! midrule,! or! \bottomrule! from! booktabs)\\hline
- # This relies on it being on a single line, and not having anything
- # else on that line. With PCRE we could match balanced [] and {},
- # but I wonder if it's worth the complexity...
- (?!#-2:Vertical! rules! in! tables! are! ugly)\\begin\{(array|tabularx?\*?)\}(\[.*\])?\{.*\|.*\}
-
-}
-
-
-#####################################################################
-#
-# Here you can list the path of where ChkTeX should look for files it
-# \inputs. The // postfix is now supported; if you append a double
-# path-separator we'll recursively search that directory directories.
-# MS-DOS users must append \\ instead, e.g. "C:\EMTEX\\".
-#
-# If you under either MS-DOS or UNIX wish to search an entire
-# partition or the complete directory tree, you must use *three*
-# slashes, e.g. "c:\\\" or "///". This may be considered to be a bug.
-#
-# By default, we'll search the current directory (not recursively,
-# put "//" in the list for this); any paths specified below will be
-# searched in addition to this.
-#
-
-TeXInputs
-{
-
-}
-
-#####################################################################
-#
-# Here you may specify more output formats for use with the -v option,
-# it simply indexes into this list. Remember to use ! instead of \,
-# though.
-#
-# For explanation of how % fields expand; look at ChkTeX.{dvi,ps,pdf}.
-#
-# We will by default select entry number _two_ in this list (we count
-# from 0), and -v without any parameter selects entry number _three_.
-#
-
-OutFormat
-{
-
-# -v0; silent mode
-%f%b%l%b%c%b%n%b%m!n
-
-# -v1; normal mode
-"%k %n in %f line %l: %m!n%r%s%t!n%u!n"
-
-# -v2; fancy mode
-"%k %n in %f line %l: %m!n%r%i%s%I%t!n!n"
-
-# -v3; lacheck mode
-"!"%f!", line %l: %m!n"
-
-# -v4; verbose lacheck mode
-"!"%f!", line %l: %m!n%r%s%t!n%u!n"
-
-# -v5; no line number, ease auto-test
-"%k %n in %f: %m!n%r%s%t!n%u!n"
-
-# -v6; emacs compilation mode
-"!"%f!", line %l.%c:(#%n) %m!n"
-
-}
-
-
-
-#####################################################################
-#
-# These commands should be ignored when detecting whether a command
-# is ended by a space. You can specify regular expressions in the []
-# section in case you have many custom macros that can be safely
-# terminated with a space.
-#
-
-Silent
-{
- \rm \em \bf \it \sl \sf \sc \tt \selectfont
- \rmfamily \sffamily \ttfamily \mdseries \bfseries
- \slshape \scshape \relax
- \vskip \pagebreak \nopagebreak
-
- \textrm \textem \textbf \textit \textsl \textsf \textsc \texttt
-
- \clearpage \ddots \dotfill \flushbottom \fussy \indent \linebreak
- \onecolumn \pagebreak \pushtabs \poptabs \scriptsize \sloppy
- \twocolumn \vdots
- \today \kill \newline \thicklines \thinlines
-
- \columnsep \space \item \tiny \footnotesize \small \normalsize
- \normal \large \Large \LARGE \huge \Huge \printindex
-
- \newpage \listoffigures \listoftables \tableofcontents
- \maketitle \makeindex
-
- \hline \hrule \vrule
-
- \centering
-
- \bigskip \medskip \smallskip
-
- \noindent \expandafter
-
- \makeatletter \makeatother
-
- \columnseprule
-
- \textwidth \textheight \hsize \vsize
-
- \if \fi \else
-
- \csname \endcsname
-
- \z@ \p@ \@warning \typeout
-
- \dots \ldots \input \endinput \nextline \leavevmode \cdots
- \appendix \listfiles \and \quad
- \hskip \vfill \vfil \hfill \hfil \topmargin \oddsidemargin
- \frenchspacing \nonfrenchspacing
- \begingroup \endgroup \par
-
- \vrefwarning \upshape \headheight \headsep \hoffset \voffset
- \cdot \qquad
- \left \right
- \qedhere
-
- \xspace
-
- \addlinespace \cr \fill \frontmatter
- \toprule \midrule \bottomrule
-
-}[
-# Here you can put regular expressions to match Silent macros. It was
-# designed for the case where you have many custom macros sharing a
-# common prefix, but can of course be used for other things.
-
-# Support ConTeXt to at least some extent
-\\start.* \\stop.*
-
-]
-
-#####################################################################
-#
-# Here, you can specify the length of various dashes. We sort the
-# dash according to which type of characters that are on the left and
-# right of it. We are only conclusive if they are the same.
-#
-# We associate as follows:
-#
-# Name Type of character on each side
-# HyphDash Alphabetic (foo-bar)
-# NumDash Numeric (2--3)
-# WordDash Space (like this --- see?)
-#
-# Below you specify how many dashes which are legal in each case. We
-# define 0 as a magic constant which always generates an error. You
-# may specify more than one legal dash-length.
-#
-# Let's look at an example. You use the following dash-syntax:
-#
-# foo-bar
-# 2--3
-# like this---see?
-#
-#
-# HYPHDASH { 1 3 } # Either a hyphen, or inter-word
-# NUMDASH { 2 } # Between words
-# WORDDASH { 0 } # We never use this
-#
-
-HyphDash
-{
- 1 3
-}
-
-NumDash
-{
- 2
-}
-
-WordDash
-{
- 3
-}
-
-#####################################################################
-#
-# Here are exceptions to the dash rules above. For example, an
-# n-dash -- between words is usually wrong, but in some cases it is
-# correct, such as when naming a theorem. The Birch--Swinnerton-Dyer
-# conjecture is one example where the difference matters. You can
-# tell that Birch is one person and Swinnerton-Dyer is another.
-#
-# Adding line suppressions for these is possible, but can quickly
-# become tedious if a certain theorem is referenced often. For this
-# reason exceptions can be specified here. They are case-sensitive.
-#
-
-DashExcpt
-{
- Birch--Swinnerton-Dyer
-}
-
-#####################################################################
-#
-# This keyword indicates commands whose argument isn't LaTeX code,
-# and thus should be ignored.
-#
-# After the command, you may place arguments that you wish that
-# should be wiped in the process; use [] for optional arguments, {}
-# for required ones and * if the command supports an alternative
-# variant. These should be separated from the command with a colon.
-# Some commands (e.g. \cmidrule) use () to delimit and optional
-# argument and so this syntax is supported as well.
-#
-# For instance, if you would like to wipe the \newcommand command,
-# you would declare it as \newcommand:*[][]{}
-#
-# These commands may be "executed" before they're wiped, so you will
-# typically also wish to list filehandling commands and similar here.
-#
-
-WipeArg
-{
- \label:{} \ref:{} \eqref:{} \vref:{} \pageref:{} \index:[]{}
- \cite:[][]{} \nocite:{}
- \input:{} \verbatiminput:[]{} \listinginput:[]{}{}
- \verbatimtabinput:[]{} \include:{} \includeonly:{}
- \bibitem:[]{}
- \cline:{} \cmidrule:[](){}
- \href:{}{}
- # Cleveref -- there are many others that could be here as well...
- \cref:*{} \cpageref:*{} \crefrange:*{}{} \cpagerefrange:*{}{}
- \Cref:*{} \Cpageref:*{} \Crefrange:*{}{} \Cpagerefrange:*{}{}
- # natbib
- \citet:*[][]{} \citep:*[][]{} \citealt:*{} \citealp:*[]{} \citeauthor:*{}
- \Citet:*[][]{} \Citep:*[][]{} \Citealt:*{} \Citealp:*[]{} \Citeauthor:{}
- \citetext:{} \citeyear:*{} \citeyearpar:{}
- # tipa which uses "
- \textipa:{}
-}
-
-#####################################################################
-#
-# These environments contain material which will be typeset as
-# mathematics by LaTeX. This turns on/off some warnings.
-#
-# We will automagically append a * to each keyword.
-#
-
-MathEnvir
-{
- displaymath math eqnarray array equation
- align alignat gather flalign multline
-}
-
-#####################################################################
-#
-# These commands contain material which will be typeset as mathematics
-# by LaTeX. The commands are assumed to have one mandatory argument
-# which is in math mode. This turns on/off some warnings.
-#
-
-MathCmd
-{
- \ensuremath
-}
-
-#####################################################################
-#
-# These commands contain material which will _not_ be typeset as
-# mathematics by LaTeX even if it would otherwise be in mathmode. The
-# commands are assumed to have one mandatory argument which is in text
-# mode. This turns on/off some warnings.
-#
-
-TextCmd
-{
- \text \intertext \shortintertext \mbox
-}
-
-#####################################################################
-#
-# These environments contains material which contents should be
-# ignored.
-#
-# We will automagically append a * to each keyword.
-#
-
-VerbEnvir
-{
- verbatim comment listing verbatimtab rawhtml errexam picture texdraw
- filecontents pgfpicture tikzpicture minted lstlisting IPA
-}
-
-#####################################################################
-#
-# ChkTeX does automagically catch most abbreviations; the ones we
-# need to list here, are those which are most likely to be followed
-# by a word with an upper-case letter (that is not the beginning of a
-# new sentence).
-#
-# The case-insensitive abbreviations are not really case-insensitive,
-# it seems to be more practical to only let the first character be
-# case-insensitive, while the remaining are case-sensitive.
-#
-# To speed up the searching process somewhat, we require that these
-# end in a `.', this should not be a problem.
-#
-# Much of this work (both the abbreviations below, and the regexps
-# necessary to catch the remaining automatically) have been provided
-# by Russ Bubley, <russ@scs.leeds.ac.uk>.
-#
-
-Abbrev
-{
-# Ordinals
-1st. 2nd. 3rd. 4th.
-# Titles
-Mr. Mrs. Miss. Ms. Dr. Prof. St.
-
-#
-# Days
-# Mon. Tue. Wed. Thu. Fri. Sat. Sun.
-#
-# Months
-# Jan. Feb. Mar. Apr. May. Jun. Jul. Aug. Sep. Oct. Nov. Dec.
-#
-# Letters
-# Kt. Jr.
-#
-# Corporate
-# Co. Ltd.
-#
-# Addresses
-# Rd. Dr. St. Ave. Cres. Gdns. Sq. Circ. Terr. Pl. Arc. La. Clo. Ho. Est. Gn.
-#
-# Misc.
-# oe. pbab. ps. rsvp. Tx.
-}
-[
-###
-#
-# The first letter is case-insensitive in the abbrevs in this
-# list. Due to the nature of the checking algorithm used for
-# this, entries consisting of only one character will be
-# silently ignored.
-#
-##
-
-# Latin
-# cf. "et al." etc. qed. qv. viz.
-#
-# Corporate
-# inc. plc.
-#
-# Misc
-# fax. pcs. qty. tel. misc.
-]
-
-#####################################################################
-#
-# Commands which accent characters, meaning that \i or \j (\imath and
-# \jmath in mathmode) should be used instead of `i' and `j'
-#
-
-IJAccent
-{
- \hat \check \breve \acute \grave \tilde \bar \vec \dot \ddot
-
- \' \` \^ \" \~ \= \. \u \v \H \t
-
-###
-#
-# The remaining accent commands (\c,\d,\b) put their accent _under_
-# the character, not above, and should thus be used with normal i's
-# and j's.
-#
-###
-
-}
-
-#####################################################################
-#
-# Commands which, when the group is terminated, needs italic
-# correction.
-#
-
-Italic
-{
- \it \em \sl
- \itshape \slshape
-}
-
-#####################################################################
-#
-# Commands which makes the font non-italic.
-#
-
-NonItalic
-{
- \bf \rm \sf \tt \sc
- \upshape
-}
-
-#####################################################################
-#
-# Commands which put their argument into italic (and thus possibly
-# needs italic correction in the end).
-#
-# This is currently empty, since \textit, \textsl and \emph do that
-# automatically.
-#
-
-ItalCmd
-{
-}
-
-#####################################################################
-#
-# These commands all have in common that a pagebreak right in front
-# of them is highly undesirable; thus there should be no space in
-# front of them.
-#
-
-PostLink
-{
- \index \label
-}
-
-#####################################################################
-#
-# These commands should not have a space in front of them for various
-# reasons. I.e. much the same as POSTLINK, but produces another
-# warning.
-#
-
-NotPreSpaced
-{
- \footnote \footnotemark \/
-}
-
-#####################################################################
-#
-# The commands listed here, should be prepended with a `~', as in
-# "look in table~\ref{foo}", to avoid the references being split
-# across lines.
-#
-
-Linker
-{
- \ref \vref \pageref \eqref \cite
-}
-
-#####################################################################
-#
-# Commands/characters which should have \cdots in between, e.g.
-# $1+2+3+\cdots+n$.
-#
-
-CenterDots
-{
- = + - \cdot \div & \times \geq \leq < >
-}
-
-#####################################################################
-#
-# Commands/characters which should have \ldots in between, e.g.
-# $1,2,3,\ldots,n$.
-#
-
-LowDots
-{
- . , ;
-}
-
-#####################################################################
-#
-# In maths mode, there are certain aliases for mathematical operators
-# like sin, cos, etc. Ignore the leading backslash in the commands,
-# and so forth. You should list these below.
-#
-
-MathRoman
-{
- log lg ln lim limsup liminf sin arcsin sinh cos arccos cosh tan
- arctan tanh cot coth sec csc max min sup inf arg ker dim hom det
- exp Pr gcd deg bmod pmod mod
-}
-
-#####################################################################
-#
-# These TeX commands have become unnecessary, as there are LaTeX
-# commands that does the same. Purists should thus avoid these in
-# their code.
-#
-# (These are a spell-corrected version of those lacheck uses).
-#
-
-Primitives
-{
- \above \advance \catcode \chardef \closein \closeout \copy \count
- \countdef \cr \crcr \csname \delcode \dimendef \dimen \divide
- \expandafter \font \hskip \vskip \openout
-}
-
-#####################################################################
-#
-# Format: \command:characters
-#
-# We'll emit a warning if any of characters are found after the
-# command.
-#
-
-NoCharNext
-{
- \left:{}$ \right:{}$
-}
-
-#####################################################################
-#
-# We're killing \verb@...@ commands and the arguments of the commands
-# listed above in WipeArg by overwriting them with a string or a
-# single character.
-#
-# This should not contain an alphabetic character (in case the user
-# writes (\foo\verb@bar@), neither should it contain be one of
-# LaTeX's reserved characters (`#$%&~_^\{}'), or any parenthesis
-# character ('()[]{}'). If possible, don't use a punctuation
-# character, either, or any spacing character.
-#
-# The asterisk is also unsuitable, as some commands behave in another
-# way if they are appended with an asterisk. Which more or less
-# leaves us with the pipe.
-#
-# Please note that this may also be a _string_, which will be
-# repeated until the proper length is reached.
-#
-
-VerbClear = "|"
-
-#
-# All for now - have fun.
-#
-#####################################################################
diff --git a/support/chktex/chktexrc.in b/support/chktex/chktexrc.in
new file mode 100644
index 0000000000..491a5792fc
--- /dev/null
+++ b/support/chktex/chktexrc.in
@@ -0,0 +1,989 @@
+#### -*- conf -*- ####
+##### TODO: Do I want a TOC? Index?...
+##### TODO: Use something besides errexam?
+##### TODO: Color/frame for default value
+###############################################################################
+#### This fiie is input to a simple "tangle" process. The extions of .in is
+#### a little misleading in that it's not managed by autotools or m4. Sorry.
+####
+#### Two different files are created from this file by calling MakeChkTeXRC.pl
+#### 1. chktexrc, a self-documenting chktecrc example
+#### a. Lines with 3 (or more) leading #'s are discarded
+#### b. Other lines are kept as is
+#### 2. ChkTeXRC.tex, LaTeX documentation for chktecrc.
+#### a. Lines with 4 (or more) leading #'s are discarded
+#### b. Lines with 0 or 2 (exactly) leading #'s are discarded
+#### c. Lines with 1 or 3 (exactly) leading #'s are turned in (LaTeX-only) lines
+####
+#### In other words
+#### 1. Lines with 1 or 3 leading #'s are included in the LaTeX
+#### documentation with the #'s stripped off
+#### 2. Lines with 0, 1 or 2 are included as is in the example
+#### chktexrc file
+#### #
+###############################################################################
+## Example resource file for ChkTeX.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+##
+## For more information visit https://www.nongnu.org/chktex/
+##
+
+### \subsubsection{The \rsrc\ file format}
+## chktexrc file format
+#
+# The chktecrc file is essentially a bunch of variable assignments.
+# There are two types of variables, those that take single items and
+# those that take lists.
+#
+# In turn, there are two types of lists, case-sensitive and case-insentive.
+# Case-sensitive lists are delimited by @verb@{@endverb@ and @verb@}@endverb@
+# while case-insensitive are delimited by @verb@[@endverb@ and @verb@]@endverb@.
+# Only some variables support case insensitive lists, since in many
+# cases it doesn't make sense and would be unnecessarily slow. Those
+# variables that @emph@do@endemph@ support case-insensitive lists will be marked as
+# such throughout the file.
+#
+# Variables can be set with or without an equals sign. If included, the
+# @verb@=@endverb@ causes the variable to be overwritten. This is the only thing
+# that makes sense for varibles taking a single item and so we always
+# include it in that case. For list variables, omitting the equals
+# sign will cause the items in the list to be appended instead of
+# overwriting the entire list.
+#
+# Below are all the ways in which a variable can be set. Note that lists
+# can span lines, though this is not shown here for brevity.
+#
+#
+### \begin{verbatim}
+# VariableName = item
+# # Overwrites
+# VariableName = { Item1 Item2 ... }
+# VariableName = [ item1 item2 ... ]
+# VariableName = { Item1 Item2 ... } [ item item ... ]
+# VariableName = [ item1 item2 ... ] { Item Item ... }
+# # Appends
+# VariableName { Item3 Item4 ... }
+# VariableName [ item3 item4 ... ]
+# VariableName { Item3 Item4 ... } [ item item ... ]
+# VariableName [ item3 item4 ... ] { Item Item ... }
+### \end{verbatim}
+#
+#
+# Comments begin with @verb@#@endverb@, and continue for the end of the line.
+# Blank lines plus leading and trailing spaces are ignored.
+# Items are separated by spaces.
+# Newlines are considered spaces, but can't be escaped.
+# You can use double quotes @verb@"@endverb@ to surround an item with spaces, or you can
+# escape spaces as described later.
+#
+# Detection of tokens like @verb@}@endverb@ are somewhat context sensitve---they
+# have to be preceded by a space (or newline). This allows them to be
+# part of an item without escaping. Since some variables require such
+# characters, this generally makes life easier.
+#
+# To include characters that might otherwise interfere, escape
+# sequences are provided. They are similar to those in C, but use
+# @verb@!@endverb@ instead of @verb@\@endverb@ for obvious reasons.
+# The entire list is below.
+#
+### \vspace{0.5\baselineskip}
+### \begin{tabular}{p{0.2\textwidth}p{0.7\textwidth}}
+# @bf Sequence @&@ @bf Resulting character @\\@
+# @verb@! @endverb@ @&@ Space @\\@
+# @verb@!"@endverb@ @&@ @verb@"@endverb@ @\\@
+# @verb@!#@endverb@ @&@ @verb@#@endverb@ @\\@
+# @verb@!!@endverb@ @&@ @verb@!@endverb@ @\\@
+# @verb@!{@endverb@ @&@ @verb@{@endverb@ @\\@
+# @verb@!}@endverb@ @&@ @verb@}@endverb@ @\\@
+# @verb@![@endverb@ @&@ @verb@[@endverb@ @\\@
+# @verb@!]@endverb@ @&@ @verb@]@endverb@ @\\@
+# @verb@!=@endverb@ @&@ @verb@=@endverb@ @\\@
+# @verb@!b@endverb@ @&@ Backspace @\\@
+# @verb@!n@endverb@ @&@ New line @\\@
+# @verb@!r@endverb@ @&@ Carriage return @\\@
+# @verb@!t@endverb@ @&@ Tab @\\@
+# @verb@!f@endverb@ @&@ Form feed @\\@
+# @verb@!xNN@endverb@ @&@ NN must be a hexadecimal number (00 - ff),
+# both characters must be included. @\\@
+# @verb@!dNNN@endverb@ @&@ NNN must be a decimal number (000 - 255), all
+# three characters must be included.
+# Unspecified results if NNN > 377. @\\@
+# @verb@!NNN@endverb@ @&@ NNN must be a octal number (000 - 377), all
+# three characters must be included.
+# Unspecified results if NNN > 377.
+### \end{tabular}
+
+### \subsubsection{Settings in the \rsrc\ file}
+## Available Settings
+#
+# All avaiable settings follow.
+#
+
+## QuoteStyle
+### \medskip
+### \begin{chktexrcsimplevar}{QuoteStyle}
+#
+# The type of quote-style you are using. There are currently two
+# styles:
+#
+# Traditional:
+### \begin{errexam}
+# "An example," he said, "would be great."
+### \end{errexam}
+#
+# Logical:
+### \begin{errexam}
+# "An example", he said, "would be great".
+### \end{errexam}
+#
+### \chktexrcdefault\begin{verbatim}
+QuoteStyle = Logical
+### \end{verbatim}
+### \end{chktexrcsimplevar}
+
+
+## TabSize
+### \begin{chktexrcsimplevar}{TabSize}
+#
+# The width of a tab. This is used for formatting the error message.
+# Only positive integers are allowed.
+#
+### \chktexrcdefault\begin{verbatim}
+TabSize = 8
+### \end{verbatim}
+### \end{chktexrcsimplevar}
+
+
+## CmdSpaceStyle
+### \medskip
+### \begin{chktexrcsimplevar}{CmdSpaceStyle}
+#
+# How to treat a command is followed by punction. In all cases the
+# warnings are also governed by the main warning settings, namely
+# warnings 12 and 13 about interword and intersentence spacings.
+### These can be found on page~\pageref{warn:interword}.
+#
+# If set to Ignore, then it won't print any warnings when pucntuation
+# follows a command.
+#
+#
+# If CmdSpaceStyle is set to InterWord, then it will print warnings
+# when interword spacing should (potentially) be used. For example,
+# without a command the following will trigger warning 12
+#
+### \begin{errexam}
+# @verb@I've seen a UFOs, etc. in my life.@endverb@
+### \end{errexam}
+#
+# And if set to InterWord, so will
+#
+### \begin{errexam}
+# @verb@I've seen a UFOs, \etc. in my life.@endverb@
+### \end{errexam}
+#
+#
+# If set to InterSentence, then it will print warnings when
+# intersentence spacing should (potentially) be used. For example,
+# without a command the following will trigger warning 13
+#
+### \begin{errexam}
+# @verb@I've seen an UFO! Right over there!@endverb@
+### \end{errexam}
+#
+# And if set to InterSentence, so will
+#
+### \begin{errexam}
+# @verb@I've seen an \UFO! Right over there!@endverb@
+### \end{errexam}
+#
+#
+# Setting CmdSpaceStyle to Both will cause warnings to be printed in
+# both cases.
+#
+### \chktexrcdefault\begin{verbatim}
+CmdSpaceStyle = Ignore
+### \end{verbatim}
+### \end{chktexrcsimplevar}
+
+
+## CmdLine
+### \begin{chktexrclistvar}{CmdLine}
+#
+# Default command-line options. For instance, you might like to put
+# @verb@-v2@endverb@ here.
+#
+### \chktexrcdefault\begin{verbatim}
+CmdLine
+{
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## UserWarn
+### \begin{chktexrclistvar*}{UserWarn}
+#
+# Arbitrary strings to warn about. You can put here to help you find
+# your own little foibles. See also@ref@UserWarnRegex@endref@.
+#
+# These patterns will be searched for throughout the text; regardless
+# of whether they appear as normal text, commands, in math mode, etc.
+# They are @emph@not@endemph@ found in comments.
+#
+# Suppose you define a special command like this:
+### \begin{verbatim}
+# \def\unknown{\large\bf??}
+### \end{verbatim}
+# which you use whenever you don't have some information at the time
+# of writing. Thus, it makes sense to warn on it, and this is a
+# convenient way to do so.
+#
+### \chktexrcdefault\begin{verbatim}
+UserWarn
+{
+ \unknown
+ # One should write \chktex or Chk\TeX - never ChkTeX.
+ ChkTeX
+}
+[ # You may put case-insensitive patterns here.
+]
+### \end{verbatim}
+### \end{chktexrclistvar*}
+
+
+## UserWarnRegex
+### \begin{chktexrclistvar}{UserWarnRegex}
+#
+# A more sophisticated version of@ref@UserWarn@endref@ using regular
+# expressions. Use of these will be automatically disabled if @ChkTeX@
+# was built without regular expression support. Because @ChkTeX@ can be
+# with support for either POSIX or PCRE flavors of regular expression,
+# some of the following will not apply in all cases. An expression
+# can be defined only when PCRE is enabled by prepending the
+# expression with @verb@PCRE:@endverb@ and similarly with @verb@POSIX:@endverb@.
+#
+# These patterns will be searched for, no matter whether they appear
+# as normal text, commands, or arguments. However, they will @emph@not@endemph@
+# match in verbatim environments (see@ref@VerbEnvir@endref@).
+#
+# Remember that you have to escape (with a @verb@!@endverb@) the characters
+# @verb@"#!=@endverb@, as well as spaces and @verb@{}[]@endverb@ if they are
+# proceeded by a space.
+#
+# When using PCRE regular expressions, you can use @verb@(?i)@endverb@ to make
+# the expression case insensitive. See the man pages (man pcresyntax)
+# or the nicely formatted http://perldoc.perl.org/perlre.html for
+# documentation on the regular expression syntax. Note, however, that
+# some the features of perl regular expression are not available such
+# as running code (callouts), and replacing.
+#
+# An initial PCRE-style comment @verb@(?# ... )@endverb@ can be used
+# to change what is displayed, thereby reminding yourself how to fix
+# the problem. This works even for POSIX expressions.
+#
+### \chktexrcdefault\begin{verbatim}
+UserWarnRegex
+{
+ (?!#Always! use! \nmid)\\not! *(\||\\mid)
+
+ # Capitalize section when saying Section 6.
+ (?!#-1:Capitalize! before! references)PCRE:\b(chapter|(sub)?section|theorem|lemma|proposition|corollary|appendix)~\\ref
+ (?!#1:Capitalize! before! references)POSIX:([^[:alnum:]]|^)(chapter|(sub)?section|theorem|lemma|proposition|corollary|appendix)~\\ref
+
+ # Spell it introduction
+ # PCRE:(?i)\bintro\b(?!#Spell! it! out.! This! comment! is! not! used.)
+ # POSIX:([^[:alnum:]]|^)intro([^[:alnum:]]|$)
+
+ # Pretty tables--see http://texdoc.net/texmf-dist/doc/latex/booktabs/booktabs.pdf
+ (?!#-2:Use! \toprule,! midrule,! or! \bottomrule! from! booktabs)\\hline
+ # This relies on it being on a single line, and not having anything
+ # else on that line. With PCRE we could match balanced [] and {},
+ # but I wonder if it's worth the complexity...
+ (?!#-2:Vertical! rules! in! tables! are! ugly)\\begin\{(array|tabularx?\*?)\}(\[.*\])?\{.*\|.*\}
+
+ (?!#-3:Optional! arguments! []! inside! optional! arguments! []! must! be! enclosed! in! {})\[(?!![^\]\[{}]*{(?!![^\]\[{}]*}))[^\]]*\[
+
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## TeXInputs
+### \begin{chktexrclistvar}{TeXInputs}
+#
+# A list of paths where @ChkTeX@ should look for files it @verb@\input@endverb@s.
+# By default, the current directory is searched (not recursively, use
+# @verb@//@endverb@ for that, see below).
+#
+# A @verb@//@endverb@ postfix is supported:
+# if you append a double path-separator we'll recursively search that
+# directory's directories. MS-DOS users must append @verb@\\@endverb@
+# instead, e.g. @verb@C:\EMTEX\\@endverb@. In order to search an
+# entire directory tree, you must use @emph@three@endemph@ slashes,
+# e.g. @verb@c:\\\@endverb@ or @verb@///@endverb@.
+#
+### \chktexrcdefault\begin{verbatim}
+TeXInputs
+{
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## OutFormat
+### \begin{chktexrclistvar}{OutFormat}
+#
+# Output formats which can be selected from the command-line. The
+# @verb@-v@endverb@ option simply indexes into this list. By default, entry number
+# @emph@two@endemph@ in this list is chosen (counting from 0), and @verb@-v@endverb@
+# without any parameter selects entry number @emph@three@endemph@.
+#
+# For explanation of the @verb@%@endverb@ format specifiers see the
+# documentation of the @verb@--format@endverb@ command-line argument
+### \begin{comment}
+# in the manual.
+### \end{comment}
+### on page~\pageref{clarg:format}.
+#
+# Recall that to use @verb@!@endverb@ is the escape character, not @verb@\@endverb@.
+#
+### \chktexrcdefault\begin{verbatim}
+OutFormat
+{
+ # -v0; silent mode
+ %f%b%l%b%c%b%n%b%m!n
+ # -v1; normal mode
+ "%k %n in %f line %l: %m!n%r%s%t!n%u!n"
+ # -v2; fancy mode
+ "%k %n in %f line %l: %m!n%r%i%s%I%t!n!n"
+ # -v3; lacheck mode
+ "!"%f!", line %l: %m!n"
+ # -v4; verbose lacheck mode
+ "!"%f!", line %l: %m!n%r%s%t!n%u!n"
+ # -v5; no line number, ease auto-test
+ "%k %n in %f: %m!n%r%s%t!n%u!n"
+ # -v6; emacs compilation mode
+ "!"%f!", line %l.%c:(#%n) %m!n"
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## Silent
+### \begin{chktexrclistvar*}{Silent}
+#
+# Commands which should not trigger a warning if terminated by a space.
+# This warning will not trigger in math mode.
+#
+# You can also specify regular expressions in the @verb@[]@endverb@
+# section in case you have many custom macros that can be safely
+# terminated with a space.
+#
+### \chktexrcdefault\begin{verbatim}
+Silent
+{
+ \rm \em \bf \it \sl \sf \sc \tt \selectfont
+ \rmfamily \sffamily \ttfamily \mdseries \bfseries \itshape
+ \slshape \scshape \relax
+ \vskip \pagebreak \nopagebreak
+
+ \textrm \textem \textbf \textit \textsl \textsf \textsc \texttt
+
+ \clearpage \ddots \dotfill \flushbottom \fussy \indent \linebreak
+ \onecolumn \pagebreak \pushtabs \poptabs \scriptsize \sloppy
+ \twocolumn \vdots
+ \today \kill \newline \thicklines \thinlines
+
+ \columnsep \space \item \tiny \footnotesize \small \normalsize
+ \normal \large \Large \LARGE \huge \Huge \printindex
+
+ \newpage \listoffigures \listoftables \tableofcontents
+ \maketitle \makeindex
+
+ \hline \hrule \vrule
+
+ \centering
+
+ \noindent \expandafter
+
+ \makeatletter \makeatother
+
+ \columnseprule
+
+ \textwidth \textheight \hsize \vsize
+
+ \if \fi \else
+
+ \csname \endcsname
+
+ \z@ \p@ \@warning \typeout
+
+ \dots \ldots \input \endinput \nextline \leavevmode \cdots
+ \appendix \listfiles \and \quad \bigskip \medskip \smallskip
+ \hskip \vfill \vfil \hfill \hfil \topmargin \oddsidemargin
+ \frenchspacing \nonfrenchspacing
+ \begingroup \endgroup \par
+
+ \vrefwarning \upshape \headheight \headsep \hoffset \voffset
+ \cdot \qquad \left \right \qedhere \xspace
+
+ \addlinespace \cr \fill \frontmatter
+ \toprule \midrule \bottomrule
+}[
+ # Here you can put regular expressions to match Silent macros. It
+ # was designed for use with many custom macros sharing a common
+ # prefix, but can of course be used for other things.
+
+ # Support ConTeXt to at least some extent
+ \\start.* \\stop.*
+]
+### \end{verbatim}
+### \end{chktexrclistvar*}
+
+
+## HyphDash
+### \begin{chktexrclistvar}{HyphDash}
+#
+# The number of dashes allowed between two alphabetic characters.
+# Use 0 to always return an error. For example:
+### \begin{errexam}
+# foo-bar @\\@
+# Use of two--dashes is not usually allowed in English. @\\@
+# like this---see?
+### \end{errexam}
+#
+# For English, this will often be a single dash (hyphen). If you like
+# m-dashes with no spaces between them and the surrounding words, then
+# it should include 3 as well. There @emph@are@endemph@ cases when an n-dash
+# is valid between two alphabetic characters. See@ref@DashExcpt@endref@.
+#
+### \chktexrcdefault\begin{verbatim}
+HyphDash { 1 3 }
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## NumDash
+### \begin{chktexrclistvar}{NumDash}
+#
+# The number of dashes allowed between two numeric characters.
+# Use 0 to always return an error. This does @emph@not@endemph@ apply in
+# math mode. For example:
+### \begin{errexam}
+# 123--456 is a range @\\@
+# $12-4$ \% okay because it's in math mode
+### \end{errexam}
+#
+# For English, this should be 2 because an n-dash is used to indicate
+# a range of numbers and subtraction should be in math mode where this
+# does not apply.
+#
+### \chktexrcdefault\begin{verbatim}
+NumDash { 2 }
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## WordDash
+### \begin{chktexrclistvar}{WordDash}
+#
+# The number of dashes allowed between two space characters.
+# Use 0 to always return an error. For example:
+### \begin{errexam}
+# not like - this, @\\@
+# or like -- this. @\\@
+# like this --- see?
+### \end{errexam}
+#
+### \chktexrcdefault\begin{verbatim}
+WordDash { 3 }
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## DashExcpt
+### \begin{chktexrclistvar}{DashExcpt}
+#
+# Exceptions to the dash rules above. For example, an n-dash
+# @verb@--@endverb@ between words is usually wrong, but in some cases it is correct,
+# such as when naming a theorem. The Birch--Swinnerton-Dyer
+# conjecture is one example where the difference matters. You can
+# tell that Birch is one person and Swinnerton-Dyer is another based
+# on the dashes used.
+#
+# Adding line suppressions for these is possible, but can quickly
+# become tedious if a certain theorem is referenced often. For this
+# reason exceptions can be specified here. They are case-sensitive.
+#
+# Unfortunately, there are no warnings if the dashes are surrounded by differing
+# types of characters. For example:
+### \begin{errexam}
+# like this ---see? (space and alphabet) @\\@
+# a--123 (number and alphabet) @\\@
+# a.--b. (other character, namely @verb@.@endverb@)
+### \end{errexam}
+# Similarly, no warnings are issued if the hyphenation is correct,
+# according to the other rules, for example:
+### \begin{errexam}
+# Birch-Swinnerton-Dyer
+### \end{errexam}
+#
+### \chktexrcdefault\begin{verbatim}
+DashExcpt
+{
+ Birch--Swinnerton-Dyer
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## WipeArg
+### \begin{chktexrclistvar}{WipeArg}
+#
+# Commands whose arguments aren't @LaTeX@ code, and thus should be
+# ignored.
+#
+# After the command, you may place arguments (separated from the
+# command with a colon) that should be wiped. Use @verb@[]@endverb@ for optional
+# arguments, @verb@{}@endverb@ for required ones, and @verb@*@endverb@ if the command supports a
+# star variant. Some commands (e.g.\@ @verb@\cmidrule@endverb@) use @verb@()@endverb@ to
+# delimit an optional argument and so this syntax is supported as well.
+#
+# For instance, if you would like to wipe the @verb@\newcommand@endverb@ command,
+# you would declare it as @verb@\newcommand:*[][]{}@endverb@ since it has a
+# star variant, two optional arguments, and one required argument.
+#
+# These commands may be ``evaluated'' before they're wiped, so you will
+# typically list filehandling commands and similar here.
+#
+### \chktexrcdefault\begin{verbatim}
+WipeArg
+{
+ \label:{} \ref:{} \eqref:{} \vref:{} \pageref:{} \index:[]{}
+ \cite:[][]{} \nocite:{}
+ \input:{} \verbatiminput:[]{} \listinginput:[]{}{}
+ \graphicspath:{}
+ \verbatimtabinput:[]{} \include:{} \includeonly:{}
+ \bibitem:[]{}
+ \cline:{} \cmidrule:[](){}
+ \href:{}{}
+ # Cleveref -- there are many others that could be here as well...
+ \cref:*{} \cpageref:*{} \crefrange:*{}{} \cpagerefrange:*{}{}
+ \Cref:*{} \Cpageref:*{} \Crefrange:*{}{} \Cpagerefrange:*{}{}
+ # natbib
+ \citet:*[][]{} \citep:*[][]{} \citealt:*{} \citealp:*[]{} \citeauthor:*{}
+ \Citet:*[][]{} \Citep:*[][]{} \Citealt:*{} \Citealp:*[]{} \Citeauthor:{}
+ \citetext:{} \citeyear:*{} \citeyearpar:{}
+ # biblatex - not including special commands
+ \autocite:*[][]{} \autocites:*[][]{} \Autocite:*[][]{} \Autocites:*[][]{}
+ \parencite:*[][]{} \parencites:*[][]{} \Parencite:*[][]{} \Parencites:*[][]{}
+ \footcite:*{} \footcites:*[][]{} \Footcite:*[][]{} \Footcites:*[][]{}
+ \textcite:*{} \textcites:*[][]{} \Textcite:*[][]{} \Textcites:*[][]{}
+ \citeauthor:*{} \citeauthors:*[][]{} \Citeauthor:*[][]{} \Citeauthors:*[][]{}
+ \citeyear:*{} \citeyears:*[][]{} \Citeyear:*[][]{} \Citeyears:*[][]{}
+ \citetitle:*{} \citetitles:*[][]{} \Citetitle:*[][]{} \Citetitles:*[][]{}
+ # tipa which uses "
+ \textipa:{}
+ # LuaTeX
+ \directlua:{} \luaescapestring:{}
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## MathEnvir
+### \begin{chktexrclistvar}{MathEnvir}
+#
+# Environments which typeset their contents as mathematics.
+# This turns on/off some warnings.
+#
+# A @verb@*@endverb@ variant is automatically added for each keyword.
+#
+### \chktexrcdefault\begin{verbatim}
+MathEnvir
+{
+ displaymath math eqnarray array equation
+ align alignat gather flalign multline
+ dmath dgroup darray
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## TextEnvir
+### \begin{chktexrclistvar}{TextEnvir}
+#
+# Environments which typeset their contents as text, for use inside
+# mathematics. This turns on/off some warnings.
+#
+### \chktexrcdefault\begin{verbatim}
+TextEnvir
+{
+ dsuspend
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## MathCmd
+### \begin{chktexrclistvar}{MathCmd}
+#
+# Commands whose argument will be typeset as mathematics.
+# The commands are assumed to have one mandatory argument which is in
+# math mode. This turns on/off some warnings.
+#
+### \chktexrcdefault\begin{verbatim}
+MathCmd
+{
+ \ensuremath
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## TextCmd
+### \begin{chktexrclistvar}{TextCmd}
+#
+# Commands whose argument will @emph@not@endemph@ be typeset as
+# mathematics even if it would otherwise be in math mode.
+# The commands are assumed to have one mandatory argument which is in
+# text mode. This turns on/off some warnings.
+#
+### \chktexrcdefault\begin{verbatim}
+TextCmd
+{
+ \text \intertext \shortintertext \mbox \condition
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## VerbEnvir
+### \begin{chktexrclistvar}{VerbEnvir}
+#
+# Environments containing non-@LaTeX@ content of some kind, and
+# therefore should not trigger any warnings.
+#
+# A @verb@*@endverb@ variant is automatically added for each keyword.
+#
+### \chktexrcdefault\begin{verbatim}
+VerbEnvir
+{
+ verbatim comment listing verbatimtab rawhtml errexam picture texdraw
+ filecontents pgfpicture tikzpicture minted lstlisting IPA
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## Abbrev
+### \begin{chktexrclistvar*}{Abbrev}
+#
+# Abbreviations not automatically handled by @ChkTeX@.
+#
+# @ChkTeX@ automagically catches most abbreviations; the ones we need to
+# list here, are those which are most likely to be followed by a word
+# with an upper-case letter which is not the beginning of a new
+# sentence.
+#
+# The case-insensitive abbreviations are not fully case-insensitive.
+# Rather, only the first character is case-insensitive, while the
+# remaining characters are case-sensitive.
+#
+# To speed up the searching process somewhat, we require that these
+# end in a @verb@.@endverb@ which should not be a problem in practice.
+#
+# Much of this work (both the abbreviations below, and the regular
+# expressions necessary to catch the remaining automatically) have
+# been provided by Russ Bubley, <russ@scs.leeds.ac.uk>.
+#
+### \chktexrcdefault\begin{verbatim}
+Abbrev
+{
+ # Ordinals
+ 1st. 2nd. 3rd. 4th.
+ # Titles
+ Mr. Mrs. Miss. Ms. Dr. Prof. St.
+ #
+ # Days
+ # Mon. Tue. Wed. Thu. Fri. Sat. Sun.
+ #
+ # Months
+ # Jan. Feb. Mar. Apr. May. Jun. Jul. Aug. Sep. Oct. Nov. Dec.
+ #
+ # Letters
+ # Kt. Jr.
+ #
+ # Corporate
+ # Co. Ltd.
+ #
+ # Addresses
+ # Rd. Dr. St. Ave. Cres. Gdns. Sq. Circ. Terr. Pl. Arc. La. Clo. Ho. Est. Gn.
+ #
+ # Misc.
+ # oe. pbab. ps. rsvp. Tx.
+}
+[
+ # The first letter is case-insensitive in the abbrevs in this
+ # list. Due to the nature of the checking algorithm used for
+ # this, entries consisting of only one character will be
+ # silently ignored.
+ #
+ # Latin
+ # cf. "et al." etc. qed. qv. viz.
+ #
+ # Corporate
+ # inc. plc.
+ #
+ # Misc
+ # fax. pcs. qty. tel. misc.
+]
+### \end{verbatim}
+### \end{chktexrclistvar*}
+
+
+## IJAccent
+### \begin{chktexrclistvar}{IJAccent}
+#
+# Commands which add accents above characters. This means that @verb@\i@endverb@ or @verb@\j@endverb@
+# (@verb@\imath@endverb@ and @verb@\jmath@endverb@ in mathmode) should be used instead of @verb@i@endverb@ and @verb@j@endverb@.
+#
+# Other accent commands such as @verb@\c@endverb@, @verb@\d@endverb@, and @verb@\b@endverb@, put their accent under
+# the character, and thus should be used with normal @verb@i@endverb@s and @verb@j@endverb@s.
+#
+### \chktexrcdefault\begin{verbatim}
+IJAccent
+{
+ \hat \check \breve \acute \grave \tilde \bar \vec \dot \ddot
+ \' \` \^ \" \~ \= \. \u \v \H \t
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## Italic
+### \begin{chktexrclistvar}{Italic}
+#
+# Commands which need italic correction when the group is terminated.
+#
+### \chktexrcdefault\begin{verbatim}
+Italic
+{
+ \it \em \sl \itshape \slshape
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## NonItalic
+### \begin{chktexrclistvar}{NonItalic}
+#
+# Commands which makes the font non-italic.
+#
+### \chktexrcdefault\begin{verbatim}
+NonItalic
+{
+ \bf \rm \sf \tt \sc
+ \upshape
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## ItalCmd
+### \begin{chktexrclistvar}{ItalCmd}
+#
+# Commands which put their argument into italic (and thus possibly
+# needs italic correction in the end).
+#
+# This is currently empty, since @verb@\textit@endverb@, @verb@\textsl@endverb@, and @verb@\emph@endverb@
+# automatically add italic corecction.
+#
+### \chktexrcdefault\begin{verbatim}
+ItalCmd
+{
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## PostLink
+### \begin{chktexrclistvar}{PostLink}
+#
+# Commands in front of which a page break is highly undesirable.
+# Thus there should be no space in front of them.
+#
+### \chktexrcdefault\begin{verbatim}
+PostLink
+{
+ \index \label
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## NotPreSpaced
+### \begin{chktexrclistvar}{NotPreSpaced}
+#
+# Commands that should not have a space in front of them for various
+# reasons. Much the same as@ref@PostLink@endref@, but produces a different warning.
+#
+### \chktexrcdefault\begin{verbatim}
+NotPreSpaced
+{
+ \footnote \footnotemark \/
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## Linker
+### \begin{chktexrclistvar}{Linker}
+#
+# Commands that should be prepended with a @verb@~@endverb@. For example
+### \begin{errexam}
+# @verb@look in table~\ref{foo}@endverb@
+### \end{errexam}
+# to avoid the references being split across lines.
+#
+### \chktexrcdefault\begin{verbatim}
+Linker
+{
+ \ref \vref \pageref \eqref \cite
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## CenterDots
+### \begin{chktexrclistvar}{CenterDots}
+#
+# Commands or characters which should have @verb@\cdots@endverb@ in between.
+# For example, $1+2+3+\cdots+n$.
+#
+### \chktexrcdefault\begin{verbatim}
+CenterDots
+{
+ = + - \cdot \div & \times \geq \leq < >
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## LowDots
+### \begin{chktexrclistvar}{LowDots}
+#
+# Commands or characters which should have @verb@\ldots@endverb@ in between.
+# For example, $1,2,3,\ldots,n$.
+#
+### \chktexrcdefault\begin{verbatim}
+LowDots
+{
+ . , ;
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## MathRoman
+### \begin{chktexrclistvar}{MathRoman}
+#
+# Words that should appear in roman (upright) in math mode. There are
+# certain aliases for mathematical operators (like sin or cos) that
+# appear in roman rather than the usual italic (slanted) font.
+#
+# These entries do not need a leading slash since the mistake is often
+# to @emph@not@endemph@ include the leading slash.
+#
+### \chktexrcdefault\begin{verbatim}
+MathRoman
+{
+ log lg ln lim limsup liminf sin arcsin sinh cos arccos cosh tan
+ arctan tanh cot coth sec csc max min sup inf arg ker dim hom det
+ exp Pr gcd deg bmod pmod mod
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## Primitives
+### \begin{chktexrclistvar}{Primitives}
+#
+# Commands that are used in @TeX@ but have become unnecessary in
+# @LaTeX@, as there are @LaTeX@ commands which do the same. Purists
+# should thus avoid these in their code.
+#
+### \chktexrcdefault\begin{verbatim}
+Primitives
+{
+ \above \advance \catcode \chardef \closein \closeout \copy \count
+ \countdef \cr \crcr \csname \delcode \dimendef \dimen \divide
+ \expandafter \font \hskip \vskip \openout
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## NoCharNext
+### \begin{chktexrclistvar}{NoCharNext}
+#
+# Commands and a set of characters that should @emph@not@endemph@ follow them. For
+# example, in math mode, @verb@\left@endverb@ should be followed by a delimiter
+# which is to change size. Therefore, it should not be followed by the
+# end of math mode @verb@$@endverb@ or a grouping character @verb@{@endverb@ or @verb@}@endverb@.
+#
+# The format is @verb@\command:characters@endverb@.
+#
+### \chktexrcdefault\begin{verbatim}
+NoCharNext
+{
+ \left:{}$ \right:{}$
+}
+### \end{verbatim}
+### \end{chktexrclistvar}
+
+
+## VerbClear
+### \begin{chktexrcsimplevar}{VerbClear}
+#
+# The character to replace verbatim text with.
+#
+# The arguments of commands listed in@ref@WipeArg@endref@, as well as
+# @verb@\verb+...+@endverb@ commands, are replaced with an innocuous character
+# to prevent that data from inadvertantly producing a warning.
+#
+# This should not contain an alphabetic character (in case the user
+# writes (@verb@\foo\verb+bar+@endverb@), neither should it contain be one of
+# @LaTeX@'s reserved characters (@verb@#$%&~_^\{}@endverb@), or any parenthesis
+# character (@verb@()[]{}@endverb@). If possible, don't use a punctuation
+# character or any spacing characters either. All of these characters
+# have warnings associated with them and thus could cause spurious
+# warnings to appear.
+#
+# The asterisk is also unsuitable, as some commands behave in another
+# way if they are appended with an asterisk. Which more or less
+# leaves us with the pipe.
+#
+# Please note that this may also be a @verb@string@endverb@, which will be
+# repeated until the proper length is reached.
+#
+### \chktexrcdefault\begin{verbatim}
+VerbClear = "|"
+### \end{verbatim}
+### \end{chktexrcsimplevar}
+
+
+## That's all for now - Happy @LaTeX@ing!
diff --git a/support/chktex/config.h.in b/support/chktex/config.h.in
index 80401f8e31..8e7e5b994a 100644
--- a/support/chktex/config.h.in
+++ b/support/chktex/config.h.in
@@ -1,4 +1,4 @@
-/* config.h.in. Generated from configure.in by autoheader. */
+/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the `access' function. */
#undef HAVE_ACCESS
@@ -35,9 +35,6 @@
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
#undef HAVE_NDIR_H
@@ -65,6 +62,9 @@
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
@@ -130,7 +130,9 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
#undef STDC_HEADERS
/* Strip debug info */
diff --git a/support/chktex/configure b/support/chktex/configure
index d5e4be46f6..a0c627111c 100755
--- a/support/chktex/configure
+++ b/support/chktex/configure
@@ -1,9 +1,10 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for ChkTeX 1.7.6.
+# Generated by GNU Autoconf 2.71 for ChkTeX 1.7.8.
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -14,14 +15,16 @@
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -31,46 +34,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -79,13 +82,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -94,8 +90,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -107,30 +107,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
@@ -152,20 +132,22 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
-else
+else \$as_nop
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
@@ -185,42 +167,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
-else
+else \$as_nop
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
+ if (eval "$as_required") 2>/dev/null
+then :
as_have_required=yes
-else
+else $as_nop
as_have_required=no
fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
-else
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
+ as_shell=$as_dir$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
break 2
fi
fi
@@ -228,14 +221,21 @@ fi
esac
as_found=false
done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
- if test "x$CONFIG_SHELL" != x; then :
+ if test "x$CONFIG_SHELL" != x
+then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
@@ -253,18 +253,19 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ if test x$as_have_required = xno
+then :
+ printf "%s\n" "$0: This script requires a shell more modern than all"
+ printf "%s\n" "$0: the shells that I found on your system."
+ if test ${ZSH_VERSION+y} ; then
+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
$0: the script under such a shell if you do have one."
@@ -291,6 +292,7 @@ as_fn_unset ()
}
as_unset=as_fn_unset
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -308,6 +310,14 @@ as_fn_exit ()
as_fn_set_status $1
exit $1
} # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_mkdir_p
# -------------
@@ -322,7 +332,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -331,7 +341,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -370,12 +380,13 @@ as_fn_executable_p ()
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -387,18 +398,27 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
@@ -410,9 +430,9 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -439,7 +459,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -483,7 +503,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
@@ -497,6 +517,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
exit
}
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -510,6 +534,13 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -577,57 +608,55 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='ChkTeX'
PACKAGE_TARNAME='chktex'
-PACKAGE_VERSION='1.7.6'
-PACKAGE_STRING='ChkTeX 1.7.6'
+PACKAGE_VERSION='1.7.8'
+PACKAGE_STRING='ChkTeX 1.7.8'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
# Factoring default headers for most tests.
ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
#endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
#endif
#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
# include <string.h>
#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif"
+ac_header_c_list=
+ac_func_c_list=
ac_subst_vars='LTLIBOBJS
LIBOBJS
-WITH_PCRE
EGREP
GREP
CPP
+WITH_PCRE
LATEX2HTML
LYNX
DVIPS
LATEX
+PDFLATEX
GROFF
PERL5
MKDIR_P
@@ -664,6 +693,7 @@ infodir
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -739,6 +769,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -768,8 +799,6 @@ do
*) ac_optarg=yes ;;
esac
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
@@ -810,9 +839,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -836,9 +865,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -991,6 +1020,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1040,9 +1078,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1056,9 +1094,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1102,9 +1140,9 @@ Try \`$0 --help' for more information"
*)
# FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
@@ -1120,7 +1158,7 @@ if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1128,7 +1166,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1184,7 +1222,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1241,7 +1279,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures ChkTeX 1.7.6 to adapt to many kinds of systems.
+\`configure' configures ChkTeX 1.7.8 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1281,6 +1319,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -1302,7 +1341,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of ChkTeX 1.7.6:";;
+ short | recursive ) echo "Configuration of ChkTeX 1.7.8:";;
esac
cat <<\_ACEOF
@@ -1353,9 +1392,9 @@ if test "$ac_init_help" = "recursive"; then
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1383,7 +1422,8 @@ esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
+ # Check for configure.gnu first; this name is used for a wrapper for
+ # Metaconfig's "Configure" on case-insensitive file systems.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1391,7 +1431,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -1400,10 +1440,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-ChkTeX configure 1.7.6
-generated by GNU Autoconf 2.69
+ChkTeX configure 1.7.8
+generated by GNU Autoconf 2.71
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1420,14 +1460,14 @@ fi
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
+ rm -f conftest.$ac_objext conftest.beam
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1435,14 +1475,15 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
+ } && test -s conftest.$ac_objext
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -1458,14 +1499,14 @@ fi
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1473,17 +1514,18 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
test -x conftest$ac_exeext
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -1498,172 +1540,6 @@ fi
} # ac_fn_c_try_link
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } > conftest.i && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
@@ -1671,26 +1547,28 @@ fi
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
#include <$2>
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
@@ -1702,17 +1580,18 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof ($2))
return 0;
@@ -1720,12 +1599,13 @@ if (sizeof ($2))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof (($2)))
return 0;
@@ -1733,18 +1613,19 @@ if (sizeof (($2)))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
eval "$3=yes"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
@@ -1756,11 +1637,12 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_find_uintX_t ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
-$as_echo_n "checking for uint$2_t... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+printf %s "checking for uint$2_t... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
# Order is important - never check a type that is potentially smaller
# than half of the expected target width.
@@ -1770,7 +1652,7 @@ else
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
test_array [0] = 0;
@@ -1780,7 +1662,8 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
case $ac_type in #(
uint$2_t) :
eval "$3=yes" ;; #(
@@ -1788,17 +1671,18 @@ if ac_fn_c_try_compile "$LINENO"; then :
eval "$3=\$ac_type" ;;
esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if eval test \"x\$"$3"\" = x"no"; then :
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ if eval test \"x\$"$3"\" = x"no"
+then :
-else
+else $as_nop
break
fi
done
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_find_uintX_t
@@ -1809,11 +1693,12 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
@@ -1821,16 +1706,9 @@ else
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+ which can conflict with char $2 (); below. */
+#include <limits.h>
#undef $2
/* Override any GCC internal prototype to avoid an error.
@@ -1848,47 +1726,51 @@ choke me
#endif
int
-main ()
+main (void)
{
return $2 ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ eval ac_save_FLAGS=\$$6
+ as_fn_append $6 " $5"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
@@ -1902,27 +1784,88 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ eval $6=\$ac_save_FLAGS
+
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_check_decl
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+ac_configure_args_raw=
+for ac_arg
+do
+ case $ac_arg in
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+ *$as_nl*)
+ ac_safe_unquote= ;;
+ *)
+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
+ ac_unsafe_a="$ac_unsafe_z#~"
+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
-} # ac_fn_c_check_decl
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by ChkTeX $as_me 1.7.6, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+It was created by ChkTeX $as_me 1.7.8, which was
+generated by GNU Autoconf 2.71. Invocation command line was
- $ $0 $@
+ $ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
@@ -1955,8 +1898,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ printf "%s\n" "PATH: $as_dir"
done
IFS=$as_save_IFS
@@ -1991,7 +1938,7 @@ do
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -2026,11 +1973,13 @@ done
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
# Save into config.log some information that might help in debugging.
{
echo
- $as_echo "## ---------------- ##
+ printf "%s\n" "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
@@ -2041,8 +1990,8 @@ trap 'exit_status=$?
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -2066,7 +2015,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
)
echo
- $as_echo "## ----------------- ##
+ printf "%s\n" "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
@@ -2074,14 +2023,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
+ printf "%s\n" "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
@@ -2089,15 +2038,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
- $as_echo "## ----------- ##
+ printf "%s\n" "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
@@ -2105,8 +2054,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
echo
fi
test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
+ printf "%s\n" "$as_me: caught signal $ac_signal"
+ printf "%s\n" "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -2120,63 +2069,48 @@ ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
+ ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ case $ac_site_file in #(
+ */*) :
+ ;; #(
+ *) :
+ ac_site_file=./$ac_site_file ;;
+esac
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
@@ -2186,19 +2120,435 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="install-sh"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.."
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ ac_aux_dir_found=yes
+ ac_install_sh=
+ for ac_aux in $ac_aux_files
+ do
+ # As a special case, if "install-sh" is required, that requirement
+ # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+ # and $ac_install_sh is set appropriately for whichever one is found.
+ if test x"$ac_aux" = x"install-sh"
+ then
+ if test -f "${as_dir}install-sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ ac_install_sh="${as_dir}install-sh -c"
+ elif test -f "${as_dir}install.sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ ac_install_sh="${as_dir}install.sh -c"
+ elif test -f "${as_dir}shtool"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ ac_install_sh="${as_dir}shtool install -c"
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+ else
+ break
+ fi
+ fi
+ else
+ if test -f "${as_dir}${ac_aux}"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+ else
+ break
+ fi
+ fi
+ fi
+ done
+ if test "$ac_aux_dir_found" = yes; then
+ ac_aux_dir="$as_dir"
+ break
+ fi
+ ac_first_candidate=false
+
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+ ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
@@ -2209,12 +2559,12 @@ for ac_var in $ac_precious_vars; do
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
@@ -2223,24 +2573,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_old_val_w=`echo x $ac_old_val`
ac_new_val_w=`echo x $ac_new_val`
if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
ac_cache_corrupted=:
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
eval $ac_var=\$ac_old_val
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
@@ -2250,11 +2600,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi
done
if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
@@ -2273,82 +2624,96 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
CLEAN=
# Check whether --enable-pcre was given.
-if test "${enable_pcre+set}" = set; then :
+if test ${enable_pcre+y}
+then :
enableval=$enable_pcre;
-else
+else $as_nop
enable_pcre=yes
fi
# Check whether --enable-posixre was given.
-if test "${enable_posixre+set}" = set; then :
+if test ${enable_posixre+y}
+then :
enableval=$enable_posixre;
-else
+else $as_nop
enable_posixre=yes
fi
# Check whether --enable-lacheck-replace was given.
-if test "${enable_lacheck_replace+set}" = set; then :
+if test ${enable_lacheck_replace+y}
+then :
enableval=$enable_lacheck_replace;
-else
+else $as_nop
enable_lacheck_replace=no
fi
# Check whether --enable-debug-info was given.
-if test "${enable_debug_info+set}" = set; then :
+if test ${enable_debug_info+y}
+then :
enableval=$enable_debug_info;
-else
+else $as_nop
enable_debug_info=yes
fi
# Check whether --enable-coverage-testing was given.
-if test "${enable_coverage_testing+set}" = set; then :
+if test ${enable_coverage_testing+y}
+then :
enableval=$enable_coverage_testing;
-else
+else $as_nop
enable_coverage_testing=no
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lacheck replacement should be installed" >&5
-$as_echo_n "checking whether lacheck replacement should be installed... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether lacheck replacement should be installed" >&5
+printf %s "checking whether lacheck replacement should be installed... " >&6; }
if test "$enable_lacheck_replace" = "yes"; then
SCRIPTS="$SCRIPTS lacheck"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether runtime debug info should be used" >&5
-$as_echo_n "checking whether runtime debug info should be used... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether runtime debug info should be used" >&5
+printf %s "checking whether runtime debug info should be used... " >&6; }
if test "$enable_debug_info" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
-$as_echo "#define STRIP_DEBUG 1" >>confdefs.h
+printf "%s\n" "#define STRIP_DEBUG 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether coverage testing is enabled" >&5
-$as_echo_n "checking whether coverage testing is enabled... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether coverage testing is enabled" >&5
+printf %s "checking whether coverage testing is enabled... " >&6; }
if test "$enable_coverage_testing" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage -O0"
CLEAN="${CLEAN} \$(wildcard *.bb *.bbg *.da *.gcov)"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
+
+
+
+
+
+
+
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2357,11 +2722,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -2369,11 +2735,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2384,11 +2754,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -2397,11 +2767,12 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -2409,11 +2780,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2424,11 +2799,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -2436,8 +2811,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -2450,11 +2825,12 @@ if test -z "$CC"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -2462,11 +2838,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2477,11 +2857,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -2490,11 +2870,12 @@ fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -2503,15 +2884,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2527,18 +2912,18 @@ if test $ac_prog_rejected = yes; then
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
fi
fi
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -2549,11 +2934,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -2561,11 +2947,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2576,11 +2966,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -2593,11 +2983,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -2605,11 +2996,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2620,11 +3015,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -2636,34 +3031,138 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
fi
+else
+ CC="$ac_cv_prog_CC"
fi
fi
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -2673,7 +3172,7 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -2681,7 +3180,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -2693,9 +3192,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
@@ -2716,11 +3215,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
@@ -2737,7 +3237,7 @@ do
# certainly right.
break;;
*.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
then :; else
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
@@ -2753,44 +3253,46 @@ do
done
test "$ac_cv_exeext" = no && ac_cv_exeext=
-else
+else $as_nop
ac_file=''
fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -2804,15 +3306,15 @@ for ac_file in conftest.exe conftest conftest.*; do
* ) break;;
esac
done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
@@ -2821,7 +3323,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
@@ -2833,8 +3335,8 @@ _ACEOF
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
case "(($ac_try" in
@@ -2842,10 +3344,10 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
@@ -2853,39 +3355,40 @@ $as_echo "$ac_try_echo"; } >&5
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -2899,11 +3402,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
@@ -2912,31 +3416,32 @@ $as_echo "$ac_try_echo"; } >&5
break;;
esac
done
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -2946,29 +3451,33 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
@@ -2977,57 +3486,60 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
-else
+else $as_nop
CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
@@ -3042,94 +3554,144 @@ else
CFLAGS=
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c89_program
_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_c89=$ac_arg
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c89" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
-
fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
+fi
fi
ac_ext=c
@@ -3139,37 +3701,38 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking CFLAGS for strict prototypes" >&5
-$as_echo_n "checking CFLAGS for strict prototypes... " >&6; }
-if ${ac_cv_cflags_strict_prototypes+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_cflags_strict_prototypes="no, unknown"
-
- ac_ext=c
+ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
- ac_save_CFLAGS="$CFLAGS"
-for ac_arg in "-pedantic % -fstrict-prototypes -Wstrict-prototypes" "-pedantic % -Wstrict-prototypes" "-pedantic % -Wmissing-prototypes" "-pedantic % -Werror-implicit-function-declaration" "-pedantic % -Wimplicit-function-declaration" #
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CFLAGS for strict prototypes" >&5
+printf %s "checking CFLAGS for strict prototypes... " >&6; }
+if test ${ac_cv_cflags_strict_prototypes+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_cflags_strict_prototypes="no, unknown"
+ac_save_CFLAGS="$CFLAGS"
+for ac_arg in "-pedantic -Werror % -fstrict-prototypes -Wstrict-prototypes" "-pedantic -Werror % -Wstrict-prototypes" "-pedantic -Werror % -Wmissing-prototypes" "-pedantic -Werror % -Werror-implicit-function-declaration" "-pedantic -Werror % -Wimplicit-function-declaration" "-pedantic % -Wstrict-prototypes %% no, unsupported" #
do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
return 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_cflags_strict_prototypes=`echo $ac_arg | sed -e 's,.*% *,,'` ; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
case ".$ac_cv_cflags_strict_prototypes" in
.|.no|.no,*) ;;
@@ -3179,7 +3742,7 @@ case ".$ac_cv_cflags_strict_prototypes" in
/* end confdefs.h. */
#include <signal.h>
int
-main ()
+main (void)
{
if (signal (SIGINT, SIG_IGN) == SIG_DFL) return 1;
@@ -3188,49 +3751,70 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if test `diff config.log config.tmp | grep -i warning | wc -l` != 0
then if test `diff config.log config.tmp | grep -i warning | wc -l` != 1
then ac_cv_cflags_strict_prototypes="no, suppressed, signal.h," ; fi ; fi
-else
+else $as_nop
ac_cv_cflags_strict_prototypes="no, suppressed, signal.h"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
rm config.tmp
;;
esac
- CFLAGS="$ac_save_CFLAGS"
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
+CFLAGS="$ac_save_CFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_strict_prototypes" >&5
-$as_echo "$ac_cv_cflags_strict_prototypes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags_strict_prototypes" >&5
+printf "%s\n" "$ac_cv_cflags_strict_prototypes" >&6; }
+
+
case ".$ac_cv_cflags_strict_prototypes" in
.ok|.ok,*) ;;
- .|.no|.no,*)
- ;;
+ .|.no|.no,*) ;;
*)
- if echo " $CFLAGS " | grep " $ac_cv_cflags_strict_prototypes " 2>&1 >/dev/null
- then { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS does contain \$ac_cv_cflags_strict_prototypes"; } >&5
- (: CFLAGS does contain $ac_cv_cflags_strict_prototypes) 2>&5
+if test ${CFLAGS+y}
+then :
+
+ case " $CFLAGS " in #(
+ *" $ac_cv_cflags_strict_prototypes "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$ac_cv_cflags_strict_prototypes"; } >&5
+ (: CFLAGS already contains $ac_cv_cflags_strict_prototypes) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append CFLAGS " $ac_cv_cflags_strict_prototypes"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
- else { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_strict_prototypes\""; } >&5
- (: CFLAGS="$CFLAGS $ac_cv_cflags_strict_prototypes") 2>&5
+ ;;
+esac
+
+else $as_nop
+
+ CFLAGS=$ac_cv_cflags_strict_prototypes
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
- CFLAGS="$CFLAGS $ac_cv_cflags_strict_prototypes"
- fi
+
+fi
;;
esac
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
ansi=
if test -z "$ansi"; then
@@ -3238,11 +3822,12 @@ esac
else
msg="for C compiler warning and ANSI conformance flags"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking $msg" >&5
-$as_echo_n "checking $msg... " >&6; }
-if ${vl_cv_prog_cc_warnings+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $msg" >&5
+printf %s "checking $msg... " >&6; }
+if test ${vl_cv_prog_cc_warnings+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
cat > conftest.c <<EOF
@@ -3330,40 +3915,13 @@ EOF
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vl_cv_prog_cc_warnings" >&5
-$as_echo "$vl_cv_prog_cc_warnings" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vl_cv_prog_cc_warnings" >&5
+printf "%s\n" "$vl_cv_prog_cc_warnings" >&6; }
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-# Find a good install program. We prefer a C program (faster),
+ # Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
@@ -3377,20 +3935,25 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+printf %s "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${ac_cv_path_install+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ # Account for fact that we put trailing slashes in our PATH walk.
+case $as_dir in #((
+ ./ | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
@@ -3400,13 +3963,13 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# program-specific install script used by HP pwplus--don't use.
:
else
@@ -3414,12 +3977,12 @@ case $as_dir/ in #((
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c"
break 3
fi
fi
@@ -3435,7 +3998,7 @@ IFS=$as_save_IFS
rm -rf conftest.one conftest.two conftest.dir
fi
- if test "${ac_cv_path_install+set}" = set; then
+ if test ${ac_cv_path_install+y}; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don't cache a
@@ -3445,8 +4008,8 @@ fi
INSTALL=$ac_install_sh
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+printf "%s\n" "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
@@ -3456,36 +4019,42 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+printf %s "checking whether ln -s works... " >&6; }
LN_S=$as_ln_s
if test "$LN_S" = "ln -s"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+printf "%s\n" "no, using $LN_S" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
+printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
- if ${ac_cv_path_mkdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_path_mkdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
+ as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir ('*'coreutils) '* | \
+ 'BusyBox '* | \
'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
break 3;;
esac
done
@@ -3496,7 +4065,7 @@ IFS=$as_save_IFS
fi
test -d ./--version && rmdir ./--version
- if test "${ac_cv_path_mkdir+set}" = set; then
+ if test ${ac_cv_path_mkdir+y}; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
@@ -3506,18 +4075,19 @@ fi
MKDIR_P="$ac_install_sh -d"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+printf "%s\n" "$MKDIR_P" >&6; }
for ac_prog in perl5 perl
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL5+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PERL5+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PERL5 in
[\\/]* | ?:[\\/]*)
ac_cv_path_PERL5="$PERL5" # Let the user override the test with a path.
@@ -3528,11 +4098,15 @@ as_dummy="$PATH:/usr/bin:/usr/local/bin"
for as_dir in $as_dummy
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PERL5="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PERL5="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3544,11 +4118,11 @@ esac
fi
PERL5=$ac_cv_path_PERL5
if test -n "$PERL5"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL5" >&5
-$as_echo "$PERL5" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL5" >&5
+printf "%s\n" "$PERL5" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3557,15 +4131,15 @@ done
test -n "$PERL5" || PERL5="no"
if test "$PERL5" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether perl is v5 or higher" >&5
-$as_echo_n "checking whether perl is v5 or higher... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether perl is v5 or higher" >&5
+printf %s "checking whether perl is v5 or higher... " >&6; }
if $PERL5 -e 'exit($] >= 5)'; then
PERL5=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
fi
@@ -3573,19 +4147,20 @@ if test "$PERL5" != no; then
BUILT_SCRIPTS="$BUILT_SCRIPTS deweb"
SCRIPTS="$SCRIPTS chkweb"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: chkweb will not be installed since you do not have perl5." >&5
-$as_echo "$as_me: WARNING: chkweb will not be installed since you do not have perl5." >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: chkweb will not be installed since you do not have perl5." >&5
+printf "%s\n" "$as_me: WARNING: chkweb will not be installed since you do not have perl5." >&2;}
fi
for ac_prog in 'groff -man -P-bu -Tlatin1' 'nroff -man'
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_GROFF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_GROFF+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$GROFF"; then
ac_cv_prog_GROFF="$GROFF" # Let the user override the test.
else
@@ -3593,11 +4168,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_GROFF="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3608,11 +4187,11 @@ fi
fi
GROFF=$ac_cv_prog_GROFF
if test -n "$GROFF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5
-$as_echo "$GROFF" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5
+printf "%s\n" "$GROFF" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3621,13 +4200,60 @@ done
test -n "$GROFF" || GROFF="'nroff -man'"
+# Extract the first word of "pdflatex", so it can be a program name with args.
+set dummy pdflatex; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PDFLATEX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PDFLATEX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PDFLATEX="$PDFLATEX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PDFLATEX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_PDFLATEX" && ac_cv_path_PDFLATEX="no"
+ ;;
+esac
+fi
+PDFLATEX=$ac_cv_path_PDFLATEX
+if test -n "$PDFLATEX"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5
+printf "%s\n" "$PDFLATEX" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
# Extract the first word of "latex", so it can be a program name with args.
set dummy latex; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LATEX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_LATEX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $LATEX in
[\\/]* | ?:[\\/]*)
ac_cv_path_LATEX="$LATEX" # Let the user override the test with a path.
@@ -3637,11 +4263,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LATEX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_LATEX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3654,22 +4284,23 @@ esac
fi
LATEX=$ac_cv_path_LATEX
if test -n "$LATEX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX" >&5
-$as_echo "$LATEX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LATEX" >&5
+printf "%s\n" "$LATEX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "dvips", so it can be a program name with args.
set dummy dvips; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_DVIPS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_DVIPS+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $DVIPS in
[\\/]* | ?:[\\/]*)
ac_cv_path_DVIPS="$DVIPS" # Let the user override the test with a path.
@@ -3679,11 +4310,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_DVIPS="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_DVIPS="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3695,22 +4330,23 @@ esac
fi
DVIPS=$ac_cv_path_DVIPS
if test -n "$DVIPS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DVIPS" >&5
-$as_echo "$DVIPS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DVIPS" >&5
+printf "%s\n" "$DVIPS" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "lynx", so it can be a program name with args.
set dummy lynx; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LYNX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_LYNX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $LYNX in
[\\/]* | ?:[\\/]*)
ac_cv_path_LYNX="$LYNX" # Let the user override the test with a path.
@@ -3720,11 +4356,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LYNX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_LYNX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3736,21 +4376,22 @@ esac
fi
LYNX=$ac_cv_path_LYNX
if test -n "$LYNX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LYNX" >&5
-$as_echo "$LYNX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LYNX" >&5
+printf "%s\n" "$LYNX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "latex2html", so it can be a program name with args.
set dummy latex2html; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LATEX2HTML+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_LATEX2HTML+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $LATEX2HTML in
[\\/]* | ?:[\\/]*)
ac_cv_path_LATEX2HTML="$LATEX2HTML" # Let the user override the test with a path.
@@ -3760,11 +4401,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LATEX2HTML="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_LATEX2HTML="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3776,20 +4421,21 @@ esac
fi
LATEX2HTML=$ac_cv_path_LATEX2HTML
if test -n "$LATEX2HTML"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX2HTML" >&5
-$as_echo "$LATEX2HTML" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LATEX2HTML" >&5
+printf "%s\n" "$LATEX2HTML" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermlib" >&5
-$as_echo_n "checking for tgetent in -ltermlib... " >&6; }
-if ${ac_cv_lib_termlib_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermlib" >&5
+printf %s "checking for tgetent in -ltermlib... " >&6; }
+if test ${ac_cv_lib_termlib_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ltermlib $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3798,43 +4444,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_termlib_tgetent=yes
-else
+else $as_nop
ac_cv_lib_termlib_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termlib_tgetent" >&5
-$as_echo "$ac_cv_lib_termlib_tgetent" >&6; }
-if test "x$ac_cv_lib_termlib_tgetent" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBTERMLIB 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termlib_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_termlib_tgetent" >&6; }
+if test "x$ac_cv_lib_termlib_tgetent" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBTERMLIB 1" >>confdefs.h
LIBS="-ltermlib $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5
-$as_echo_n "checking for tgetent in -ltermcap... " >&6; }
-if ${ac_cv_lib_termcap_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5
+printf %s "checking for tgetent in -ltermcap... " >&6; }
+if test ${ac_cv_lib_termcap_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ltermcap $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3843,434 +4487,52 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_termcap_tgetent=yes
-else
+else $as_nop
ac_cv_lib_termcap_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5
-$as_echo "$ac_cv_lib_termcap_tgetent" >&6; }
-if test "x$ac_cv_lib_termcap_tgetent" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBTERMCAP 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; }
+if test "x$ac_cv_lib_termcap_tgetent" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBTERMCAP 1" >>confdefs.h
LIBS="-ltermcap $LIBS"
fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+printf %s "checking for $ac_hdr that defines DIR... " >&6; }
+if eval test \${$as_ac_Header+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <$ac_hdr>
int
-main ()
+main (void)
{
if ((DIR *) 0)
return 0;
@@ -4278,19 +4540,21 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$as_ac_Header=yes"
-else
+else $as_nop
eval "$as_ac_Header=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$as_ac_Header
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1
_ACEOF
ac_header_dirent=$ac_hdr; break
@@ -4299,11 +4563,12 @@ fi
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -4311,56 +4576,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char opendir ();
int
-main ()
+main (void)
{
return opendir ();
;
return 0;
}
_ACEOF
-for ac_lib in '' dir; do
+for ac_lib in '' dir
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
+ if test ${ac_cv_search_opendir+y}
+then :
break
fi
done
-if ${ac_cv_search_opendir+:} false; then :
+if test ${ac_cv_search_opendir+y}
+then :
-else
+else $as_nop
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -4368,93 +4636,144 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char opendir ();
int
-main ()
+main (void)
{
return opendir ();
;
return 0;
}
_ACEOF
-for ac_lib in '' x; do
+for ac_lib in '' x
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
+ if test ${ac_cv_search_opendir+y}
+then :
break
fi
done
-if ${ac_cv_search_opendir+:} false; then :
+if test ${ac_cv_search_opendir+y}
+then :
-else
+else $as_nop
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
fi
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
+do
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
+ fi
+done
+
+
+
+
+
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default"
+if test "x$ac_cv_header_limits_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "stat.h" "ac_cv_header_stat_h" "$ac_includes_default"
+if test "x$ac_cv_header_stat_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STAT_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default"
+if test "x$ac_cv_header_strings_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h
-for ac_header in limits.h stat.h strings.h stdarg.h sys/stat.h termcap.h termlib.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdarg_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDARG_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stat_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "termcap.h" "ac_cv_header_termcap_h" "$ac_includes_default"
+if test "x$ac_cv_header_termcap_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TERMCAP_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "termlib.h" "ac_cv_header_termlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_termlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TERMLIB_H 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+fi
+ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
+
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+printf %s "checking for an ANSI C-conforming const... " >&6; }
+if test ${ac_cv_c_const+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __cplusplus
@@ -4467,7 +4786,7 @@ main ()
/* NEC SVR4.0.2 mips cc rejects this. */
struct point {int x, y;};
static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
+ /* IBM XL C 1.02.0.0 rejects this.
It does not let you subtract one const X* pointer from another in
an arm of an if-expression whose if-part is not a constant
expression */
@@ -4495,7 +4814,7 @@ main ()
iptr p = 0;
++p;
}
- { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+ { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
struct s { int j; const int *ap[3]; } bx;
struct s *b = &bx; b->j = 5;
@@ -4511,47 +4830,50 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_const=yes
-else
+else $as_nop
ac_cv_c_const=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+printf "%s\n" "$ac_cv_c_const" >&6; }
if test $ac_cv_c_const = no; then
-$as_echo "#define const /**/" >>confdefs.h
+printf "%s\n" "#define const /**/" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+printf %s "checking for inline... " >&6; }
+if test ${ac_cv_c_inline+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifndef __cplusplus
typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
+static $ac_kw foo_t static_foo (void) {return 0; }
+$ac_kw foo_t foo (void) {return 0; }
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_inline=$ac_kw
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test "$ac_cv_c_inline" != no && break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+printf "%s\n" "$ac_cv_c_inline" >&6; }
case $ac_cv_c_inline in
inline | yes) ;;
@@ -4569,13 +4891,12 @@ _ACEOF
esac
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
+printf "%s\n" "#define size_t unsigned int" >>confdefs.h
fi
@@ -4584,72 +4905,210 @@ case $ac_cv_c_uint64_t in #(
no|yes) ;; #(
*)
-$as_echo "#define _UINT64_T 1" >>confdefs.h
+printf "%s\n" "#define _UINT64_T 1" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define uint64_t $ac_cv_c_uint64_t
-_ACEOF
+printf "%s\n" "#define uint64_t $ac_cv_c_uint64_t" >>confdefs.h
;;
esac
-for ac_func in vprintf
-do :
- ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
-_ACEOF
+ac_func=
+for ac_item in $ac_func_c_list
+do
+ if test $ac_func; then
+ ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func
+ if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then
+ echo "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_func=
+ else
+ ac_func=$ac_item
+ fi
+done
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
+if test "x$ac_cv_func_vprintf" = xno
+then :
+ ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = xyes
+then :
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h
fi
fi
-done
+ac_fn_c_check_func "$LINENO" "access" "ac_cv_func_access"
+if test "x$ac_cv_func_access" = xyes
+then :
+ printf "%s\n" "#define HAVE_ACCESS 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "closedir" "ac_cv_func_closedir"
+if test "x$ac_cv_func_closedir" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOSEDIR 1" >>confdefs.h
-for ac_func in access closedir fileno isatty opendir readdir stat strcasecmp strdup strlwr strtol
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "fileno" "ac_cv_func_fileno"
+if test "x$ac_cv_func_fileno" = xyes
+then :
+ printf "%s\n" "#define HAVE_FILENO 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "isatty" "ac_cv_func_isatty"
+if test "x$ac_cv_func_isatty" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISATTY 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "opendir" "ac_cv_func_opendir"
+if test "x$ac_cv_func_opendir" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENDIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readdir" "ac_cv_func_readdir"
+if test "x$ac_cv_func_readdir" = xyes
+then :
+ printf "%s\n" "#define HAVE_READDIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "stat" "ac_cv_func_stat"
+if test "x$ac_cv_func_stat" = xyes
+then :
+ printf "%s\n" "#define HAVE_STAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
+if test "x$ac_cv_func_strcasecmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "stpcpy" "ac_cv_have_decl_stpcpy" "$ac_includes_default"
-if test "x$ac_cv_have_decl_stpcpy" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
fi
+ac_fn_c_check_func "$LINENO" "strlwr" "ac_cv_func_strlwr"
+if test "x$ac_cv_func_strlwr" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRLWR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol"
+if test "x$ac_cv_func_strtol" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h
+
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CFLAGS=$CFLAGS
+ ac_cv_c_undeclared_builtin_options='cannot detect'
+ for ac_arg in '' -fno-builtin; do
+ CFLAGS="$ac_save_CFLAGS $ac_arg"
+ # This test program should *not* compile successfully.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+(void) strchr;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+ # This test program should compile successfully.
+ # No library function is consistently available on
+ # freestanding implementations, so test against a dummy
+ # declaration. Include always-available headers on the
+ # off chance that they somehow elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
+
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STPCPY $ac_have_decl
+ ;
+ return 0;
+}
_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ if test x"$ac_arg" = x
+then :
+ ac_cv_c_undeclared_builtin_options='none needed'
+else $as_nop
+ ac_cv_c_undeclared_builtin_options=$ac_arg
+fi
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ done
+ CFLAGS=$ac_save_CFLAGS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+ case $ac_cv_c_undeclared_builtin_options in #(
+ 'cannot detect') :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See \`config.log' for more details" "$LINENO" 5; } ;; #(
+ 'none needed') :
+ ac_c_undeclared_builtin_options='' ;; #(
+ *) :
+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
+
+ac_fn_check_decl "$LINENO" "stpcpy" "ac_cv_have_decl_stpcpy" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_stpcpy" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_STPCPY $ac_have_decl" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether PCRE regular expressions are enabled" >&5
-$as_echo_n "checking whether PCRE regular expressions are enabled... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pcre" >&5
-$as_echo "$enable_pcre" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether PCRE regular expressions are enabled" >&5
+printf %s "checking whether PCRE regular expressions are enabled... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_pcre" >&5
+printf "%s\n" "$enable_pcre" >&6; }
if test "$enable_pcre" = "yes"; then
# Extract the first word of "pcre-config", so it can be a program name with args.
set dummy pcre-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_WITH_PCRE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_WITH_PCRE+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$WITH_PCRE"; then
ac_cv_prog_WITH_PCRE="$WITH_PCRE" # Let the user override the test.
else
@@ -4657,11 +5116,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_WITH_PCRE="yes"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4673,35 +5136,310 @@ fi
fi
WITH_PCRE=$ac_cv_prog_WITH_PCRE
if test -n "$WITH_PCRE"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WITH_PCRE" >&5
-$as_echo "$WITH_PCRE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WITH_PCRE" >&5
+printf "%s\n" "$WITH_PCRE" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$WITH_PCRE" = "yes"; then
-$as_echo "#define HAVE_PCRE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PCRE 1" >>confdefs.h
CFLAGS="${CFLAGS} $(pcre-config --cflags-posix)"
LDFLAGS="${LDFLAGS} $(pcre-config --libs-posix)"
else
- $as_echo "#define HAVE_PCRE 0" >>confdefs.h
+ printf "%s\n" "#define HAVE_PCRE 0" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: PCRE library not found." >&5
+printf "%s\n" "$as_me: WARNING: PCRE library not found." >&2;}
+ fi
+else
+ printf "%s\n" "#define HAVE_PCRE 0" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: PCRE regular expressions not enabled." >&5
+printf "%s\n" "$as_me: WARNING: PCRE regular expressions not enabled." >&2;}
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for POSIX extended regular expressions" >&5
+printf %s "checking for POSIX extended regular expressions... " >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test ${ac_cv_prog_CPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CC needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ # Broken: success on invalid input.
+continue
+else $as_nop
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ # Broken: success on invalid input.
+continue
+else $as_nop
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: PCRE library not found." >&5
-$as_echo "$as_me: WARNING: PCRE library not found." >&2;}
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
- $as_echo "#define HAVE_PCRE 0" >>confdefs.h
+ ac_cv_path_GREP=$GREP
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: PCRE regular expressions not enabled." >&5
-$as_echo "$as_me: WARNING: PCRE regular expressions not enabled." >&2;}
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for POSIX extended regular expressions" >&5
-$as_echo_n "checking for POSIX extended regular expressions... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <regex.h>
@@ -4711,33 +5449,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
posix_ere=yes
-else
+else $as_nop
posix_ere=no
fi
-rm -f conftest*
+rm -rf conftest*
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $posix_ere" >&5
-$as_echo "$posix_ere" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $posix_ere" >&5
+printf "%s\n" "$posix_ere" >&6; }
if test "$WITH_PCRE" = "yes"; then
-$as_echo "#define HAVE_POSIX_ERE 0" >>confdefs.h
+printf "%s\n" "#define HAVE_POSIX_ERE 0" >>confdefs.h
else
if test "$enable_posixre" = "yes"; then
if test "$posix_ere" = "yes"; then
- $as_echo "#define HAVE_POSIX_ERE 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_POSIX_ERE 1" >>confdefs.h
else
- $as_echo "#define HAVE_POSIX_ERE 0" >>confdefs.h
+ printf "%s\n" "#define HAVE_POSIX_ERE 0" >>confdefs.h
fi
else
- $as_echo "#define HAVE_POSIX_ERE 0" >>confdefs.h
+ printf "%s\n" "#define HAVE_POSIX_ERE 0" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Regular expressions not enabled." >&5
-$as_echo "$as_me: WARNING: Regular expressions not enabled." >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Regular expressions not enabled." >&5
+printf "%s\n" "$as_me: WARNING: Regular expressions not enabled." >&2;}
fi
fi
@@ -4775,8 +5514,8 @@ _ACEOF
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -4806,15 +5545,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
/^ac_cv_env_/b end
t clear
:clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
@@ -4828,8 +5567,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;}
fi
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
@@ -4846,7 +5585,7 @@ U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -4862,8 +5601,8 @@ LTLIBOBJS=$ac_ltlibobjs
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
@@ -4886,14 +5625,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -4903,46 +5644,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -4951,13 +5692,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -4966,8 +5700,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -4979,30 +5717,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
@@ -5015,13 +5733,14 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -5048,18 +5767,20 @@ as_fn_unset ()
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
+
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -5071,12 +5792,13 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
@@ -5107,7 +5829,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -5129,6 +5851,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -5142,6 +5868,12 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -5183,7 +5915,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -5192,7 +5924,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -5254,8 +5986,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by ChkTeX $as_me 1.7.6, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+This file was extended by ChkTeX $as_me 1.7.8, which was
+generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -5313,14 +6045,16 @@ $config_headers
Report bugs to the package provider."
_ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-ChkTeX config.status 1.7.6
-configured by $0, generated by GNU Autoconf 2.69,
+ChkTeX config.status 1.7.8
+configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -5359,15 +6093,15 @@ do
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
+ printf "%s\n" "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
+ printf "%s\n" "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
@@ -5375,7 +6109,7 @@ do
--header | --heade | --head | --hea )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
as_fn_append CONFIG_HEADERS " '$ac_optarg'"
ac_need_defaults=false;;
@@ -5384,7 +6118,7 @@ do
as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
+ printf "%s\n" "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
@@ -5412,7 +6146,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
@@ -5426,7 +6160,7 @@ exec 5>>config.log
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- $as_echo "$ac_log"
+ printf "%s\n" "$ac_log"
} >&5
_ACEOF
@@ -5456,8 +6190,8 @@ done
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+ test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
fi
# Have a temporary directory for convenience. Make it in the build tree
@@ -5793,7 +6527,7 @@ do
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
@@ -5801,17 +6535,17 @@ do
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
+ ac_sed_conf_input=`printf "%s\n" "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
@@ -5828,7 +6562,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -5852,9 +6586,9 @@ $as_echo X"$ac_file" |
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -5916,8 +6650,8 @@ ac_sed_dataroot='
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
@@ -5961,9 +6695,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
@@ -5979,20 +6713,20 @@ which seems to be undefined. Please make sure it is defined" >&2;}
#
if test x"$ac_file" != x-; then
{
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
} >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
@@ -6038,7 +6772,8 @@ if test "$no_create" != yes; then
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
+
diff --git a/support/chktex/configure.in b/support/chktex/configure.ac
index 0508bcac25..3cb717df7f 100644
--- a/support/chktex/configure.in
+++ b/support/chktex/configure.ac
@@ -27,7 +27,7 @@ dnl
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(ChkTeX, 1.7.6)
+AC_INIT([ChkTeX],[1.7.8])
AC_SUBST(SCRIPTS)
AC_SUBST(BUILT_SCRIPTS)
AC_SUBST(CLEAN)
@@ -111,6 +111,7 @@ fi
AC_CHECK_PROGS(GROFF, 'groff -man -P-bu -Tlatin1' 'nroff -man', 'nroff -man')
+AC_PATH_PROG(PDFLATEX, pdflatex, no)
AC_PATH_PROG(LATEX, latex, no)
dnl if test "$LATEX" = no; then
dnl AC_MSG_ERROR([No LaTeX on the system, cannot find latex program.])
@@ -125,8 +126,6 @@ dnl Checks for libraries.
AC_CHECK_LIB(termlib, tgetent)
AC_CHECK_LIB(termcap, tgetent)
-dnl Checks for header files.
-AC_HEADER_STDC
AC_HEADER_DIRENT
AC_CHECK_HEADERS(limits.h stat.h strings.h stdarg.h dnl
sys/stat.h termcap.h termlib.h unistd.h)
@@ -188,6 +187,7 @@ else
fi
-AC_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
-AC_OUTPUT(Makefile deweb rmeheader ChkTeX.tex)
+AC_CONFIG_FILES([Makefile deweb rmeheader ChkTeX.tex])
+AC_OUTPUT
diff --git a/support/chktex/input/file b/support/chktex/input/file
new file mode 100644
index 0000000000..3ebbc3d6a8
--- /dev/null
+++ b/support/chktex/input/file
@@ -0,0 +1,8 @@
+% -*- TeX -*-
+% chktex-file 22
+% This file tests that file suppressions are only valid in the current file.
+
+% It also ensures that git will create the input/
+% directory. That ensures that the \input input in Test.tex is able
+% to distinguish between directories and regular files.
+% This was bug #56520.
diff --git a/support/chktex/install-sh b/support/chktex/install-sh
index 0b0fdcbba6..ec298b5374 100755
--- a/support/chktex/install-sh
+++ b/support/chktex/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2013-12-25.23; # UTC
+scriptversion=2020-11-14.01; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -69,6 +69,11 @@ posix_mkdir=
# Desired mode of installed file.
mode=0755
+# Create dirs (including intermediate dirs) using mode 755.
+# This is like GNU 'install' as of coreutils 8.32 (2020).
+mkdir_umask=22
+
+backupsuffix=
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
@@ -99,18 +104,28 @@ Options:
--version display version info and exit.
-c (ignored)
- -C install only if different (preserve the last data modification time)
+ -C install only if different (preserve data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
+ -p pass -p to $cpprog.
-s $stripprog installed files.
+ -S SUFFIX attempt to back up existing files, with suffix SUFFIX.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
+
+By default, rm is invoked with -f; when overridden with RMPROG,
+it's up to you to specify -f if you want it.
+
+If -S is not specified, no backups are attempted.
+
+Email bug reports to bug-automake@gnu.org.
+Automake home page: https://www.gnu.org/software/automake/
"
while test $# -ne 0; do
@@ -137,8 +152,13 @@ while test $# -ne 0; do
-o) chowncmd="$chownprog $2"
shift;;
+ -p) cpprog="$cpprog -p";;
+
-s) stripcmd=$stripprog;;
+ -S) backupsuffix="$2"
+ shift;;
+
-t)
is_target_a_directory=always
dst_arg=$2
@@ -255,6 +275,10 @@ do
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
+ # Don't chown directories that already exist.
+ if test $dstdir_status = 0; then
+ chowncmd=""
+ fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
@@ -271,15 +295,18 @@ do
fi
dst=$dst_arg
- # If destination is a directory, append the input filename; won't work
- # if double slashes aren't ignored.
+ # If destination is a directory, append the input filename.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
- dst=$dstdir/`basename "$src"`
+ dstbase=`basename "$src"`
+ case $dst in
+ */) dst=$dst$dstbase;;
+ *) dst=$dst/$dstbase;;
+ esac
dstdir_status=0
else
dstdir=`dirname "$dst"`
@@ -288,27 +315,16 @@ do
fi
fi
+ case $dstdir in
+ */) dstdirslash=$dstdir;;
+ *) dstdirslash=$dstdir/;;
+ esac
+
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
@@ -318,43 +334,49 @@ do
fi
posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # The $RANDOM variable is not portable (e.g., dash). Use it
+ # here however when possible just to lower collision chance.
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
+ trap '
+ ret=$?
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
+ exit $ret
+ ' 0
+
+ # Because "mkdir -p" follows existing symlinks and we likely work
+ # directly in world-writeable /tmp, make sure that the '$tmpdir'
+ # directory is successfully created first before we actually test
+ # 'mkdir -p'.
+ if (umask $mkdir_umask &&
+ $mkdirprog $mkdir_mode "$tmpdir" &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ test_tmpdir="$tmpdir/a"
+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+ fi
+ trap '' 0;;
esac
if
@@ -365,7 +387,7 @@ do
then :
else
- # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
@@ -394,7 +416,7 @@ do
prefixes=
else
if $posix_mkdir; then
- (umask=$mkdir_umask &&
+ (umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
@@ -427,14 +449,25 @@ do
else
# Make a couple of temp file names in the proper directory.
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
+ dsttmp=${dstdirslash}_inst.$$_
+ rmtmp=${dstdirslash}_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+ (umask $cp_umask &&
+ { test -z "$stripcmd" || {
+ # Create $dsttmp read-write so that cp doesn't create it read-only,
+ # which would cause strip to fail.
+ if test -z "$doit"; then
+ : >"$dsttmp" # No need to fork-exec 'touch'.
+ else
+ $doit touch "$dsttmp"
+ fi
+ }
+ } &&
+ $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
@@ -460,6 +493,13 @@ do
then
rm -f "$dsttmp"
else
+ # If $backupsuffix is set, and the file being installed
+ # already exists, attempt a backup. Don't worry if it fails,
+ # e.g., if mv doesn't support -f.
+ if test -n "$backupsuffix" && test -f "$dst"; then
+ $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
+ fi
+
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
@@ -474,9 +514,9 @@ do
# file should still install successfully.
{
test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
+ $doit $rmcmd "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
@@ -493,9 +533,9 @@ do
done
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff --git a/support/chktex/m4/ax_append_flag.m4 b/support/chktex/m4/ax_append_flag.m4
new file mode 100644
index 0000000000..dd6d8b6140
--- /dev/null
+++ b/support/chktex/m4/ax_append_flag.m4
@@ -0,0 +1,50 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
+#
+# DESCRIPTION
+#
+# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
+# added in between.
+#
+# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
+# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
+# FLAG.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 8
+
+AC_DEFUN([AX_APPEND_FLAG],
+[dnl
+AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
+AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
+AS_VAR_SET_IF(FLAGS,[
+ AS_CASE([" AS_VAR_GET(FLAGS) "],
+ [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
+ [
+ AS_VAR_APPEND(FLAGS,[" $1"])
+ AC_RUN_LOG([: FLAGS="$FLAGS"])
+ ])
+ ],
+ [
+ AS_VAR_SET(FLAGS,[$1])
+ AC_RUN_LOG([: FLAGS="$FLAGS"])
+ ])
+AS_VAR_POPDEF([FLAGS])dnl
+])dnl AX_APPEND_FLAG
diff --git a/support/chktex/m4/ax_cflags_strict_prototypes.m4 b/support/chktex/m4/ax_cflags_strict_prototypes.m4
index 06ec9e2f27..1a910cfa98 100644
--- a/support/chktex/m4/ax_cflags_strict_prototypes.m4
+++ b/support/chktex/m4/ax_cflags_strict_prototypes.m4
@@ -1,6 +1,6 @@
-# ===========================================================================
-# http://autoconf-archive.cryp.to/ax_cflags_strict_prototypes.html
-# ===========================================================================
+# ================================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_cflags_strict_prototypes.html
+# ================================================================================
#
# SYNOPSIS
#
@@ -26,145 +26,72 @@
# - $3 action-if-found : add value to shellvariable
# - $4 action-if-not-found : nothing
#
-# LAST MODIFICATION
+# NOTE: These macros depend on AX_APPEND_FLAG.
#
-# 2008-04-12
-#
-# COPYLEFT
+# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-# Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception, the respective Autoconf Macro's copyright owner
-# gives unlimited permission to copy, distribute and modify the configure
-# scripts that are the output of Autoconf when processing the Macro. You
-# need not follow the terms of the GNU General Public License when using
-# or distributing such scripts, even though portions of the text of the
-# Macro appear in them. The GNU General Public License (GPL) does govern
-# all other use of the material that constitutes the Autoconf Macro.
-#
-# This special exception to the GPL applies to versions of the Autoconf
-# Macro released by the Autoconf Macro Archive. When you make and
-# distribute a modified version of the Autoconf Macro, you may extend this
-# special exception to the GPL to apply to your modified version as well.
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
-AC_DEFUN([AX_CFLAGS_STRICT_PROTOTYPES],[dnl
-AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
-AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_strict_prototypes])dnl
-AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for strict prototypes],
-VAR,[VAR="no, unknown"
- AC_LANG_SAVE
- AC_LANG_C
- ac_save_[]FLAGS="$[]FLAGS"
-for ac_arg dnl
-in "-pedantic % -fstrict-prototypes -Wstrict-prototypes" dnl GCC
- "-pedantic % -Wstrict-prototypes" dnl try to warn atleast
- "-pedantic % -Wmissing-prototypes" dnl or another warning
- "-pedantic % -Werror-implicit-function-declaration" dnl
- "-pedantic % -Wimplicit-function-declaration" dnl
- #
-do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
- AC_TRY_COMPILE([],[return 0;],
- [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
-done
-case ".$VAR" in
- .|.no|.no,*) ;;
- *) # sanity check with signal() from sys/signal.h
- cp config.log config.tmp
- AC_TRY_COMPILE([#include <signal.h>],[
- if (signal (SIGINT, SIG_IGN) == SIG_DFL) return 1;
- if (signal (SIGINT, SIG_IGN) != SIG_DFL) return 2;],
- dnl the original did use test -n `$CC testprogram.c`
- [if test `diff config.log config.tmp | grep -i warning | wc -l` != 0
-then if test `diff config.log config.tmp | grep -i warning | wc -l` != 1
-then VAR="no, suppressed, signal.h," ; fi ; fi],
- [VAR="no, suppressed, signal.h"])
- rm config.tmp
- ;;
-esac
- FLAGS="$ac_save_[]FLAGS"
- AC_LANG_RESTORE
-])
-case ".$VAR" in
- .ok|.ok,*) m4_ifvaln($3,$3) ;;
- .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[
- AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;;
- *) m4_ifvaln($3,$3,[
- if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null
- then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR])
- else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"])
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"
- fi ]) ;;
-esac
-AS_VAR_POPDEF([VAR])dnl
-AS_VAR_POPDEF([FLAGS])dnl
-])
+#serial 18
-dnl the only difference - the LANG selection... and the default FLAGS
-
-AC_DEFUN([AX_CXXFLAGS_STRICT_PROTOTYPES],[dnl
-AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl
-AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_strict_prototypes])dnl
+AC_DEFUN([AX_FLAGS_STRICT_PROTOTYPES],[dnl
+AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl
+AS_VAR_PUSHDEF([VAR],[ac_cv_[]_AC_LANG_ABBREV[]flags_strict_prototypes])dnl
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for strict prototypes],
VAR,[VAR="no, unknown"
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- ac_save_[]FLAGS="$[]FLAGS"
+ac_save_[]FLAGS="$[]FLAGS"
for ac_arg dnl
in "-pedantic -Werror % -fstrict-prototypes -Wstrict-prototypes" dnl GCC
- "-pedantic -Werror % -Wstrict-prototypes" dnl try to warn atleast
- "-pedantic -Werror % -Wmissing-prototypes" dnl try to warn atleast
+ "-pedantic -Werror % -Wstrict-prototypes" dnl try to warn at least
+ "-pedantic -Werror % -Wmissing-prototypes" dnl try to warn at least
"-pedantic -Werror % -Werror-implicit-function-declaration" dnl
"-pedantic -Werror % -Wimplicit-function-declaration" dnl
- "-pedantic % -Wstrict-prototypes %% no, unsupported in C++" dnl oops
+ "-pedantic % -Wstrict-prototypes %% no, unsupported" dnl oops
#
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
- AC_TRY_COMPILE([],[return 0;],
- [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[return 0;]])],
+ [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break], [])
done
case ".$VAR" in
.|.no|.no,*) ;;
*) # sanity check with signal() from sys/signal.h
cp config.log config.tmp
- AC_TRY_COMPILE([#include <signal.h>],[
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <signal.h>]], [[
if (signal (SIGINT, SIG_IGN) == SIG_DFL) return 1;
- if (signal (SIGINT, SIG_IGN) != SIG_DFL) return 2;],
- dnl the original did use test -n `$CC testprogram.c`
- [if test `diff config.log config.tmp | grep -i warning | wc -l` != 0
+ if (signal (SIGINT, SIG_IGN) != SIG_DFL) return 2;]])],
+ [dnl the original did use test -n `$CC testprogram.c`
+ if test `diff config.log config.tmp | grep -i warning | wc -l` != 0
then if test `diff config.log config.tmp | grep -i warning | wc -l` != 1
then VAR="no, suppressed, signal.h," ; fi ; fi],
[VAR="no, suppressed, signal.h"])
rm config.tmp
;;
esac
- FLAGS="$ac_save_[]FLAGS"
- AC_LANG_RESTORE
+FLAGS="$ac_save_[]FLAGS"
])
+AS_VAR_POPDEF([FLAGS])dnl
+AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
case ".$VAR" in
.ok|.ok,*) m4_ifvaln($3,$3) ;;
- .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[
- AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;;
- *) m4_ifvaln($3,$3,[
- if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null
- then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR])
- else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"])
- m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"
- fi ]) ;;
+ .|.no|.no,*) m4_default($4,[m4_ifval($2,[AX_APPEND_FLAG([$2], [$1])])]) ;;
+ *) m4_default($3,[AX_APPEND_FLAG([$VAR], [$1])]) ;;
esac
AS_VAR_POPDEF([VAR])dnl
-AS_VAR_POPDEF([FLAGS])dnl
+])dnl AX_FLAGS_STRICT_PROTOTYPES
+
+AC_DEFUN([AX_CFLAGS_STRICT_PROTOTYPES],[dnl
+AC_LANG_PUSH([C])
+AX_FLAGS_STRICT_PROTOTYPES([$1], [$2], [$3], [$4])
+AC_LANG_POP([C])
+])
+
+AC_DEFUN([AX_CXXFLAGS_STRICT_PROTOTYPES],[dnl
+AC_LANG_PUSH([C++])
+AX_FLAGS_STRICT_PROTOTYPES([$1], [$2], [$3], [$4])
+AC_LANG_POP([C++])
])
diff --git a/support/chktex/m4/ax_require_defined.m4 b/support/chktex/m4/ax_require_defined.m4
new file mode 100644
index 0000000000..17c3eab7da
--- /dev/null
+++ b/support/chktex/m4/ax_require_defined.m4
@@ -0,0 +1,37 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_REQUIRE_DEFINED(MACRO)
+#
+# DESCRIPTION
+#
+# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
+# been defined and thus are available for use. This avoids random issues
+# where a macro isn't expanded. Instead the configure script emits a
+# non-fatal:
+#
+# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
+#
+# It's like AC_REQUIRE except it doesn't expand the required macro.
+#
+# Here's an example:
+#
+# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
+#
+# LICENSE
+#
+# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 2
+
+AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
+ m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
+])dnl AX_REQUIRE_DEFINED
diff --git a/support/chktex/tests/main.expected b/support/chktex/tests/main.expected
new file mode 100644
index 0000000000..5cf8374c47
--- /dev/null
+++ b/support/chktex/tests/main.expected
@@ -0,0 +1,27 @@
+Message 22 in main.tex: Comment displayed.
+%% main.tex
+^
+Message 22 in sub1/file.tex: Comment displayed.
+%% comment1
+^
+Message 22 in sub1/subsub/subsubfile.tex: Comment displayed.
+%% subsubcomment
+^
+Message 22 in sub1/file.tex: Comment displayed.
+%% comment2
+^
+Message 22 in sub1/subsub/subsubfile.tex: Comment displayed.
+%% subsubcomment
+^
+Message 22 in sub2/file1.tex: Comment displayed.
+%% comment 2.1
+^
+Message 22 in sub2/file2.tex: Comment displayed.
+%% comment 2.2
+^
+Message 22 in sub2/file1.tex: Comment displayed.
+%% comment 2.1 cont.
+^
+Message 22 in sub2/file2.tex: Comment displayed.
+%% comment 2.2
+^
diff --git a/support/chktex/tests/main.tex b/support/chktex/tests/main.tex
new file mode 100644
index 0000000000..027c5a9e27
--- /dev/null
+++ b/support/chktex/tests/main.tex
@@ -0,0 +1,14 @@
+\documentclass{article}
+
+%% main.tex
+\begin{document}
+
+\input{sub1/file.tex}
+
+\input{sub1/subsub/subsubfile.tex}
+
+\input{sub2/file1.tex}
+
+\input{sub2/file2.tex}
+
+\end{document}
diff --git a/support/chktex/tests/run-tests.sh b/support/chktex/tests/run-tests.sh
new file mode 100755
index 0000000000..8d0b4aae1b
--- /dev/null
+++ b/support/chktex/tests/run-tests.sh
@@ -0,0 +1,137 @@
+#!/bin/dash
+# -- remember to change this to sh
+
+set -e
+
+usage() {
+ echo "$0 BUILDDIR SRCDIR"
+}
+
+if [ "x$1" = x ] || [ "x$2" = x ]; then
+ usage
+ exit 1
+fi
+
+builddir="$(cd $1; pwd)"
+srcdir="$(cd $2; pwd)"
+
+testsdir="$srcdir/tests"
+output="$testsdir/main.out"
+expected="$testsdir/main.expected"
+
+check_results() {
+ sed -i -e 's~Message 22 in .*tests/~Message 22 in ~;' "$output"
+ if cmp -s "$expected" "$output"; then
+ echo ">>> OK!"
+ rm -f "$output"
+ return 0
+ else
+ echo "***WARNING***";
+ echo "Unexpected test output";
+ diff -u "$expected" "$output";
+ return 1
+ fi
+}
+
+
+# We don't check in the test files because CTAN can't handle files
+# with the same names, and we need several that are named chktexrc.
+# Also, they don't like invisible files (start with '.') so we
+# generate those as well.
+echo ">>> Generating test files..."
+mkdir -p $testsdir/sub
+cat > $testsdir/sub/chktexrc <<EOF
+OutFormat
+{
+"loaded chktex/tests/sub %f!n"
+}
+EOF
+
+mkdir -p $testsdir/sub1/.config
+cat > $testsdir/sub1/.config/chktexrc <<EOF
+OutFormat
+{
+"loaded chktex/tests/sub1/.config/chktexrc %f!n"
+}
+EOF
+
+cat > $testsdir/sub2/.chktexrc <<EOF
+OutFormat
+{
+"loaded chktex/tests/sub2/.chktexrc %f!n"
+}
+EOF
+
+# Run the actual tests for inclusion
+echo ">>> Testing that inclusion works correctly..."
+# absolute path
+rm -f "$output"
+${builddir}/chktex -mall -r -g0 -l$srcdir/chktexrc -v5 -q \
+ $testsdir/main.tex 2>/dev/null \
+ 1> $testsdir/main.out
+check_results
+
+# relative path
+cd "$srcdir"
+${builddir}/chktex -mall -r -g0 -l$srcdir/chktexrc -v5 -q \
+ tests/main.tex 2>/dev/null \
+ 1> tests/main.out
+check_results
+
+# file in the same directory
+cd "$testsdir"
+${builddir}/chktex -mall -r -g0 -l$srcdir/chktexrc -v5 -q \
+ main.tex 2>/dev/null \
+ 1> main.out
+check_results
+
+echo ">>> Testing that correct chktexrc files are loaded"
+# XDG variables
+unset HOME
+echo '%' \
+ | XDG_CONFIG_HOME=${testsdir}/sub \
+ ${builddir}/chktex -mall -v0 -q \
+ | grep 'loaded chktex/tests/sub stdin' \
+ || (echo XDG_CONFIG_HOME/chktexrc inclusion failed; exit 1)
+echo '%' \
+ | HOME=${testsdir}/sub1 \
+ ${builddir}/chktex -mall -v0 -q \
+ | grep 'loaded chktex/tests/sub1/.config/chktexrc stdin' \
+ || (echo HOME/.config/chktexrc inclusion failed; exit 1)
+
+# HOME, LOGDIR
+echo '%' \
+ | HOME=${testsdir}/sub2 \
+ ${builddir}/chktex -mall -v0 -q \
+ | grep 'loaded chktex/tests/sub2/.chktexrc stdin' \
+ || (echo HOME/.chktexrc inclusion failed; exit 1)
+echo '%' \
+ | LOGDIR=${testsdir}/sub2 \
+ ${builddir}/chktex -mall -v0 -q \
+ | grep 'loaded chktex/tests/sub2/.chktexrc stdin' \
+ || (echo LOGDIR/.chktexrc inclusion failed; exit 1)
+
+# CHKTEXRC
+echo '%' \
+ | CHKTEXRC=${testsdir}/sub2 \
+ ${builddir}/chktex -mall -v0 -q \
+ | grep 'loaded chktex/tests/sub2/.chktexrc stdin' \
+ || (echo CHKTEXRC/.chktexrc inclusion failed; exit 1)
+
+# CWD
+echo '%' \
+ | (cd ${testsdir}/sub2; \
+ ${builddir}/chktex -mall -v0 -q) \
+ | grep 'loaded chktex/tests/sub2/.chktexrc stdin' \
+ || (echo PWD/.chktexrc inclusion failed; exit 1)
+
+# Not sure how to test KPSE variables...
+# TEXMFMAIN CHKTEX_CONFIG
+echo ">>> OK!"
+
+# Command line options
+echo "Checking command line RC settings..."
+(${builddir}/chktex -d 4 -STabSize=7 </dev/null 2>&1 \
+ | grep -A1 TabSize | grep -E '\t7$' >/dev/null) \
+ || (echo Setting TabSize from command line failed; exit 1)
+echo ">>> OK!"
diff --git a/support/chktex/tests/sub1/file.tex b/support/chktex/tests/sub1/file.tex
new file mode 100644
index 0000000000..00870dd841
--- /dev/null
+++ b/support/chktex/tests/sub1/file.tex
@@ -0,0 +1,8 @@
+file1
+%% comment1
+
+\input{sub1/subsub/subsubfile}
+
+%% comment2
+
+more file1
diff --git a/support/chktex/tests/sub1/subsub/subsubfile.tex b/support/chktex/tests/sub1/subsub/subsubfile.tex
new file mode 100644
index 0000000000..fc99c7a58d
--- /dev/null
+++ b/support/chktex/tests/sub1/subsub/subsubfile.tex
@@ -0,0 +1,2 @@
+%% subsubcomment
+subsubfile
diff --git a/support/chktex/tests/sub2/file1.tex b/support/chktex/tests/sub2/file1.tex
new file mode 100644
index 0000000000..3504c7c37d
--- /dev/null
+++ b/support/chktex/tests/sub2/file1.tex
@@ -0,0 +1,7 @@
+subfile 2.1
+
+%% comment 2.1
+\input{sub2/file2.tex}
+
+%% comment 2.1 cont.
+more subfile 2.1
diff --git a/support/chktex/tests/sub2/file2.tex b/support/chktex/tests/sub2/file2.tex
new file mode 100644
index 0000000000..c270ff6372
--- /dev/null
+++ b/support/chktex/tests/sub2/file2.tex
@@ -0,0 +1,2 @@
+%% comment 2.2
+subfile 2.2
diff --git a/support/sty2dtx/README b/support/sty2dtx/README.txt
index 96bed0f02c..6b5d1a6922 100644
--- a/support/sty2dtx/README
+++ b/support/sty2dtx/README.txt
@@ -2,10 +2,17 @@ NAME
sty2dtx -- Converts a LaTeX .sty file to a documented .dtx file
VERSION
- Version: v2.3
+ Version: v2.4 - 2022/10/18
+
+LINKS
+ CTAN: https://ctan.org/pkg/sty2dtx
+
+ Repository: https://github.com/MartinScharrer/sty2dtx
+
+ Issues: https://github.com/MartinScharrer/sty2dtx/issues
COPYRIGHT
- Copyright (c) 2010-2012 Martin Scharrer <martin@scharrer-online.de>
+ Copyright (c) 2010-2022 Martin Scharrer <martin.scharrer@web.de>
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -18,7 +25,7 @@ COPYRIGHT
Public License for more details.
You should have received a copy of the GNU General Public License along
- with this program. If not, see <http://www.gnu.org/licenses/>.
+ with this program. If not, see <https://www.gnu.org/licenses/>.
DESCRIPTION
Converts a .sty file (LaTeX package) to .dtx format (documented LaTeX
@@ -149,7 +156,7 @@ Examples
AUTHOR
Martin Scharrer
- E-mail: martin@scharrer-online.de
+ E-mail: martin.scharrer@web.de
WWW: <http://www.scharrer-online.de>
diff --git a/support/sty2dtx/sty2dtx.1 b/support/sty2dtx/sty2dtx.1
index 692dad8320..e63d5e3e41 100644
--- a/support/sty2dtx/sty2dtx.1
+++ b/support/sty2dtx/sty2dtx.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -38,27 +38,36 @@
. ds PI \(*p
. ds L" ``
. ds R" ''
+. ds C`
+. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
..
-. nr % 0
-. rr F
-.\}
-.el \{\
-. de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
.\}
+.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
@@ -124,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "STY2DTX 1"
-.TH STY2DTX 1 "2012-11-07" "perl v5.14.2" "User Contributed Perl Documentation"
+.TH STY2DTX 1 "2022-10-18" "perl v5.30.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -133,10 +142,17 @@
sty2dtx \-\- Converts a LaTeX .sty file to a documented .dtx file
.SH "VERSION"
.IX Header "VERSION"
-Version: v2.3
+Version: v2.4 \- 2022/10/18
+.SH "LINKS"
+.IX Header "LINKS"
+\&\s-1CTAN:\s0 https://ctan.org/pkg/sty2dtx
+.PP
+Repository: https://github.com/MartinScharrer/sty2dtx
+.PP
+Issues: https://github.com/MartinScharrer/sty2dtx/issues
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
-Copyright (c) 2010\-2012 Martin Scharrer <martin@scharrer\-online.de>
+Copyright (c) 2010\-2022 Martin Scharrer <martin.scharrer@web.de>
.PP
This program is free software: you can redistribute it and/or modify
it under the terms of the \s-1GNU\s0 General Public License as published by
@@ -144,12 +160,12 @@ the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
.PP
This program is distributed in the hope that it will be useful,
-but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of
-\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the
+but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of
+\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE.\s0 See the
\&\s-1GNU\s0 General Public License for more details.
.PP
You should have received a copy of the \s-1GNU\s0 General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+along with this program. If not, see <https://www.gnu.org/licenses/>.
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
Converts a .sty file (LaTeX package) to .dtx format (documented LaTeX source),
@@ -204,7 +220,7 @@ a '\f(CW\*(C`}\*(C'\fR' on its own on a line.
.SS "Files"
.IX Subsection "Files"
.IP "\(bu" 2
-can be '\f(CW\*(C`\-\*(C'\fR' for \s-1STDIN\s0 or \s-1STDOUT\s0, which is the default if no files are given
+can be '\f(CW\*(C`\-\*(C'\fR' for \s-1STDIN\s0 or \s-1STDOUT,\s0 which is the default if no files are given
.IP "\(bu" 2
multiple input files are merged to one output file
.SS "Variables"
@@ -335,6 +351,6 @@ Produce \s-1DTX\s0 file for a class:
.IX Header "AUTHOR"
Martin Scharrer
.PP
-E\-mail: martin@scharrer\-online.de
+E\-mail: martin.scharrer@web.de
.PP
-\&\s-1WWW:\s0 http://www.scharrer\-online.de <http://www.scharrer-online.de>
+\&\s-1WWW:\s0 <http://www.scharrer\-online.de>
diff --git a/support/sty2dtx/sty2dtx.pdf b/support/sty2dtx/sty2dtx.pdf
index 57ecc28b3b..14610279ea 100644
--- a/support/sty2dtx/sty2dtx.pdf
+++ b/support/sty2dtx/sty2dtx.pdf
Binary files differ
diff --git a/support/sty2dtx/sty2dtx.pl b/support/sty2dtx/sty2dtx.pl
index e68b667141..7feb7951ba 100755
--- a/support/sty2dtx/sty2dtx.pl
+++ b/support/sty2dtx/sty2dtx.pl
@@ -9,11 +9,19 @@ sty2dtx -- Converts a LaTeX .sty file to a documented .dtx file
=head1 VERSION
-Version: v2.3
+Version: v2.4 - 2022/10/18
+
+=head1 LINKS
+
+CTAN: https://ctan.org/pkg/sty2dtx
+
+Repository: https://github.com/MartinScharrer/sty2dtx
+
+Issues: https://github.com/MartinScharrer/sty2dtx/issues
=head1 COPYRIGHT
-Copyright (c) 2010-2012 Martin Scharrer <martin@scharrer-online.de>
+Copyright (c) 2010-2022 Martin Scharrer <martin.scharrer@web.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -26,7 +34,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+along with this program. If not, see <https://www.gnu.org/licenses/>.
=head1 DESCRIPTION
@@ -220,7 +228,7 @@ Produce DTX file for a class:
Martin Scharrer
-E-mail: L<martin@scharrer-online.de>
+E-mail: L<martin.scharrer@web.de>
WWW: L<http://www.scharrer-online.de>
@@ -229,7 +237,7 @@ WWW: L<http://www.scharrer-online.de>
################################################################################
use Pod::Usage;
-my $VERSION = "v2.3";
+my $VERSION = "v2.4";
$VERSION =~ tr/-/\//;
my $TITLE = << "EOT";
@@ -329,11 +337,11 @@ my $rmacrodef = qr/
)
\\(
[gex]?def \s* \\ # TeX definitions
- | (?:new|renew|provide)command\s* \*? \s* {? \s* \\ # LaTeX definitions
- | \@namedef{? # Definition by name only
+ | (?:new|renew|provide)command\s* \*? \s* \{? \s* \\ # LaTeX definitions
+ | \@namedef\{? # Definition by name only
)
($rmacroname) # Macro name without backslash
- \s* }? # Potential closing brace
+ \s* \}? # Potential closing brace
(.*) # Rest of line
/xms;
@@ -342,19 +350,19 @@ my $rkeydef = qr/
\\
(define\@[a-z]*key)
\s*
- {([^}]+)} # Key family
+ \{([^}]+)\} # Key family
\s*
- {([^}]+)} # Key name
+ \{([^}]+)\} # Key name
(.*) # Rest of line
/xms;
my $renvdef = qr/
^ # Begin of line (no whitespaces!)
\\(
- (?:new|renew|provide)environment\s* { \s* # LaTeX definitions
+ (?:new|renew|provide)environment\s* \{ \s* # LaTeX definitions
)
($renvname) # Environment names follow same rules as macro names
- \s* } # closing brace
+ \s* \} # closing brace
(.*) # Rest of line
/xms;
@@ -378,6 +386,7 @@ sub close_environment {
}
my ( $mday, $mon, $year ) = ( localtime(time) )[ 3 .. 5 ];
+$mday = sprintf( "%02d", $mday );
$mon = sprintf( "%02d", $mon + 1 );
$year += 1900;
@@ -748,7 +757,7 @@ while (<>) {
# Real comments are either: 1) starting with a '%' at SOL or 2) are followed
# by at least one whitespace. This exclude (most) commented out code.
elsif (/^%|^\s*%\s/) {
- if (!$removeenvs || !/^%\s+\\(?:begin|end){(?:macro|environment|macrocode|key)}/) {
+ if (!$removeenvs || !/^%\s+\\(?:begin|end)\{(?:macro|environment|macrocode|key)\}/) {
$_ =~ s/^\s*//;
if ($comments || !/^%\s*$/){
$comments .= $_;
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 2e2bee4447..1be7573600 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -188,7 +188,6 @@ $mirrors = {
'https://mirror.las.iastate.edu/tex-archive/' => 1,
'https://mirror.math.princeton.edu/pub/CTAN/' => 1,
'https://mirror.mwt.me/ctan/' => 1,
- 'https://mirror2.sandyriver.net/pub/ctan/' => 1,
'https://mirrors.concertpass.com/tex-archive/' => 1,
'https://mirrors.mit.edu/CTAN/' => 1,
'https://mirrors.rit.edu/CTAN/' => 1,
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 14cf72a055..24ae9354df 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2022
-depend revision/64735
+depend revision/64748
name 00texlive.image
category TLCore
-revision 64734
+revision 64748
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -1258,6 +1258,7 @@ runfiles size=12927
tlpkg/tlpsrc/coolthms.tlpsrc
tlpkg/tlpsrc/cooltooltips.tlpsrc
tlpkg/tlpsrc/coop-writing.tlpsrc
+ tlpkg/tlpsrc/cooperhewitt.tlpsrc
tlpkg/tlpsrc/coordsys.tlpsrc
tlpkg/tlpsrc/copyedit.tlpsrc
tlpkg/tlpsrc/copyrightbox.tlpsrc
@@ -4656,7 +4657,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 64726
+revision 64737
shortdesc TeX Live standalone installer package
longdesc This package defines the files to go into the installer
longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -68195,7 +68196,7 @@ containerchecksum 5bd74e1a434549cf31ce31777e9a32f90baa14148e6658633945508a46dbf6
name collection-fontsextra
category Collection
-revision 64734
+revision 64738
shortdesc Additional fonts
relocated 1
depend aboensis
@@ -68287,6 +68288,7 @@ depend comicneue
depend concmath-fonts
depend concmath-otf
depend cookingsymbols
+depend cooperhewitt
depend cormorantgaramond
depend countriesofeurope
depend courier-scaled
@@ -68546,8 +68548,8 @@ depend yfonts-otf
depend yfonts-t1
depend yinit-otf
depend zlmtt
-containersize 1988
-containerchecksum 3e6651ad05ec2002f5a90d95de42cd4897f0fd9fdd271808eb8a46f272eec43a50f09b5f3117194ae44c3fc79de2891d2023fec049f512020639d405d9d3845d
+containersize 1996
+containerchecksum 05942d37d4e15c481654696cf8d686109cac3947324ff716ef3c3ac62fbcac54c4654599ad026c4b4dccf9c079111455703a67c17f0fe233b5cf382ce2b3ab44
name collection-fontsrecommended
category Collection
@@ -81181,6 +81183,340 @@ catalogue-license mit
catalogue-topics editorial
catalogue-version 1.2.4
+name cooperhewitt
+category Package
+revision 64738
+shortdesc LaTeX, pdfLaTeX, XeLaTeX and LuaLaTeX support for the Cooper Hewitt family of sans serif fonts
+relocated 1
+longdesc Cooper Hewitt is a contemporary sans serif, with characters
+longdesc composed of modified-geometric curves and arches. Initially
+longdesc commissioned by Pentagram to evolve his Polaris Condensed
+longdesc typeface, Chester Jenkins created a new digital form to support
+longdesc the newly transformed Smithsonian Design Museum.
+containersize 934712
+containerchecksum c06fbebb13baaf475a09b1e43721ce72190258461c9227fddb5bcef5b8892d2f5834c5dca5c01c0c3ae713802e6e91975bb345db914b4b6b7fe080e849a87f39
+doccontainersize 21800
+doccontainerchecksum 62bfbb5becb26aac16ebb6424020631f5fd180fe604ca3d3d7f26b418c4318c6487be4d7a1cd64dde3a46b2c332f98d26193f5b459386877bca4d664967853f1
+docfiles size=10
+ RELOC/doc/fonts/cooperhewitt/OFL.txt
+ RELOC/doc/fonts/cooperhewitt/README details="Readme"
+ RELOC/doc/fonts/cooperhewitt/cooperhewitt-samples.pdf details="Font samples"
+ RELOC/doc/fonts/cooperhewitt/cooperhewitt-samples.tex
+runfiles size=873
+ RELOC/fonts/enc/dvips/cooperhewitt/cphwt_4je6jj.enc
+ RELOC/fonts/enc/dvips/cooperhewitt/cphwt_kvtx4d.enc
+ RELOC/fonts/enc/dvips/cooperhewitt/cphwt_psuovm.enc
+ RELOC/fonts/enc/dvips/cooperhewitt/cphwt_r6y6f6.enc
+ RELOC/fonts/enc/dvips/cooperhewitt/cphwt_sz67he.enc
+ RELOC/fonts/enc/dvips/cooperhewitt/cphwt_tjvrzf.enc
+ RELOC/fonts/enc/dvips/cooperhewitt/cphwt_vrwj46.enc
+ RELOC/fonts/map/dvips/cooperhewitt/CooperHewitt.map
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-Bold.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-BoldItalic.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-Book.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-BookItalic.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-Heavy.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-HeavyItalic.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-Light.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-LightItalic.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-Medium.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-MediumItalic.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-Semibold.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-SemiboldItalic.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-Thin.otf
+ RELOC/fonts/opentype/public/cooperhewitt/CooperHewitt-ThinItalic.otf
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Bold-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BoldItalic-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Book-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-BookItalic-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Heavy-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Light-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-LightItalic-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Medium-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-MediumItalic-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Semibold-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-Thin-tlf-ts1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-sup-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-sup-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-sup-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-sup-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-sup-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-tlf-ly1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-tlf-ly1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-tlf-ot1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-tlf-ot1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-tlf-t1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-tlf-t1.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-tlf-ts1--base.tfm
+ RELOC/fonts/tfm/public/cooperhewitt/CpHwt-ThinItalic-tlf-ts1.tfm
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-Bold.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-BoldItalic.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-Book.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-BookItalic.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-Heavy.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-HeavyItalic.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-Light.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-LightItalic.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-Medium.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-MediumItalic.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-Semibold.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-SemiboldItalic.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-Thin.pfb
+ RELOC/fonts/type1/public/cooperhewitt/CpHwt-ThinItalic.pfb
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Bold-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Bold-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Bold-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Bold-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Bold-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Bold-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BoldItalic-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BoldItalic-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BoldItalic-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BoldItalic-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BoldItalic-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BoldItalic-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Book-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Book-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Book-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Book-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Book-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Book-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BookItalic-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BookItalic-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BookItalic-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BookItalic-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BookItalic-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-BookItalic-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Heavy-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Heavy-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Heavy-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Heavy-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Heavy-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Heavy-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-HeavyItalic-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-HeavyItalic-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-HeavyItalic-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-HeavyItalic-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Light-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Light-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Light-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Light-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Light-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Light-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-LightItalic-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-LightItalic-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-LightItalic-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-LightItalic-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-LightItalic-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-LightItalic-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Medium-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Medium-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Medium-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Medium-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Medium-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Medium-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-MediumItalic-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-MediumItalic-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-MediumItalic-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-MediumItalic-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-MediumItalic-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-MediumItalic-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Semibold-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Semibold-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Semibold-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Semibold-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Semibold-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Semibold-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-SemiboldItalic-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-SemiboldItalic-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-SemiboldItalic-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Thin-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Thin-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Thin-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Thin-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Thin-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-Thin-tlf-ts1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-ThinItalic-sup-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-ThinItalic-sup-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-ThinItalic-tlf-ly1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-ThinItalic-tlf-ot1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-ThinItalic-tlf-t1.vf
+ RELOC/fonts/vf/public/cooperhewitt/CpHwt-ThinItalic-tlf-ts1.vf
+ RELOC/tex/latex/cooperhewitt/CooperHewitt.sty
+ RELOC/tex/latex/cooperhewitt/LY1CpHwt-Sup.fd
+ RELOC/tex/latex/cooperhewitt/LY1CpHwt-TLF.fd
+ RELOC/tex/latex/cooperhewitt/OT1CpHwt-Sup.fd
+ RELOC/tex/latex/cooperhewitt/OT1CpHwt-TLF.fd
+ RELOC/tex/latex/cooperhewitt/T1CpHwt-Sup.fd
+ RELOC/tex/latex/cooperhewitt/T1CpHwt-TLF.fd
+ RELOC/tex/latex/cooperhewitt/TS1CpHwt-TLF.fd
+catalogue-ctan /fonts/cooperhewitt
+catalogue-license ofl lppl
+catalogue-topics font font-sans font-t1enc font-proportional font-otf font-type1
+
name coordsys
category Package
revision 15878
@@ -93730,7 +94066,7 @@ catalogue-version 1.4
name docshots
category Package
-revision 64729
+revision 64739
shortdesc TeX samples next to their PDF Snapshots
relocated 1
longdesc The packages helps you render TeX examples from your DTX
@@ -93741,17 +94077,17 @@ depend iexec
depend pdfcrop
depend pgf
depend pgf-blur
-containersize 2420
-containerchecksum e0a7116054d02d03da9f06b71bf37bba4929afb2dc8a84d251fccccb20d24baffdc25ef9ddd09c1b7b774c443954206dc21dc163c9345a55b9602531495fef6a
-doccontainersize 328996
-doccontainerchecksum 9664c775d33882df8f573d87bdbd820c60d6ee667c27550e0b8b286133001d66d5021c6edc89fb056bd59600a51e724a9daf23a3111b7743855a79560b85afaf
-docfiles size=85
+containersize 2488
+containerchecksum fb366d018e367d6820a8d900624771222e455fcef0ba77070e1b69cb90d3eeca635651c49875e13ccce2a4a35ff5856c7624f1ed59215b584e04f768ead6a391
+doccontainersize 331104
+doccontainerchecksum 91c34463c77beea9017673bc4e5fe7a9c2d00361a4c133014d4bbf9244a8ad52f81bcf9960014909b6eda9d87f40c0566e3c92240ee3f2bf46788dbb978205ea
+docfiles size=86
RELOC/doc/latex/docshots/DEPENDS.txt
RELOC/doc/latex/docshots/LICENSE.txt
RELOC/doc/latex/docshots/README.md details="Readme"
RELOC/doc/latex/docshots/docshots.pdf details="Package documentation"
-srccontainersize 6004
-srccontainerchecksum 2a741955c7c884257be0fb43551f3b86a0946f2deecabad0cb2850b5468116f773d796d8732c79db4d2212bf323e0644bbaaf91544a46f15697114513c965c3f
+srccontainersize 6296
+srccontainerchecksum a39b2f12c3718eb4f0b2e570402a052e0a3c562e07e5af97bad3667fe86f3da7fb79fa54d25127ed8663255dd91dd423555633ddc53fe2c0bbd4235385d3b5b0
srcfiles size=6
RELOC/source/latex/docshots/docshots.dtx
RELOC/source/latex/docshots/docshots.ins
@@ -93762,7 +94098,7 @@ catalogue-contact-repository https://github.com/yegor256/docshots
catalogue-ctan /macros/latex/contrib/docshots
catalogue-license mit
catalogue-topics doc-supp
-catalogue-version 0.0.3
+catalogue-version 0.0.4
name docsurvey
category Package
@@ -130817,7 +131153,7 @@ catalogue-version 0.3.1
name gensymb
category Package
-revision 64688
+revision 64740
shortdesc Generic symbols for both text and math mode
relocated 1
longdesc Provides generic commands \degree, \celsius, \perthousand,
@@ -130831,16 +131167,16 @@ longdesc with arbitrary typefaces. Note that the package has been
longdesc designed to work in conjunction with units.sty. This package
longdesc used to be part of the was bundle, but has now become a package
longdesc in its own right.
-containersize 2048
-containerchecksum 7b07eb3c0c2222ef6bb35f3420ab91a2c8865d8143f6666fa4255b46897150beb320c8b31e98b6f12673987c288b18371e302e35dd640eb8a4b9f770bf4682a0
-doccontainersize 221956
-doccontainerchecksum abcbc99d24c8f818d1894dbde93fd7271a934f98394344f2ed64eb90b77155fa8d2252c7713c9baf04629c9b34118335f3980398685aca24ff17a7664fd4c228
+containersize 2052
+containerchecksum 311de4fa6c68b21cdc8c655a7092d98772398e82bd9790e0bf00898a6575e234da44534635dfdd500eb7815d302a4487162f528452caf373ed11b7994682a43b
+doccontainersize 221592
+doccontainerchecksum 4175231e5b998f26e913374ad20b2718d4c566e5b220bfe4de9f89ffc4422b2aa4c941acc067d392eb43a725d93457b1c10d8568f5ad0eb7c1aecd4fa83e9746
docfiles size=60
RELOC/doc/latex/gensymb/LICENSE
RELOC/doc/latex/gensymb/README details="Bundle readme"
RELOC/doc/latex/gensymb/gensymb.pdf details="Package documentation"
-srccontainersize 5644
-srccontainerchecksum 50920282d6132aeb0f0b817bbcd6e6f4f923a812edf58c7c826bc0797209dc4d3beabb4a87740f40aa14d5463dc13646c36e524012dbdd16984cdacc103db151
+srccontainersize 5656
+srccontainerchecksum 56cc850ce5a2fb0d84b2232f591d3f1e3ed18d1924d365fdb6349237d98ac655b0881febaaed414f4903eeed7889385b4cf985eb3cf72c3fbb37392e8586f848
srcfiles size=6
RELOC/source/latex/gensymb/gensymb.dtx
RELOC/source/latex/gensymb/gensymb.ins
@@ -130850,7 +131186,7 @@ catalogue-contact-repository https://gitlab.com/kjhtex/gensymb
catalogue-ctan /macros/latex/contrib/gensymb
catalogue-license lppl1.3
catalogue-topics maths text-symbol
-catalogue-version 1.0.1
+catalogue-version 1.0.2
name gentium-tug
category Package
@@ -133943,7 +134279,7 @@ catalogue-version 0.1
name glossaries
category Package
-revision 60921
+revision 64741
shortdesc Create glossaries and lists of acronyms
longdesc The glossaries package supports acronyms and multiple
longdesc glossaries, and has provision for operation in several
@@ -133963,15 +134299,55 @@ longdesc a Perl script is provided to serve as interface. This package
longdesc requires the mfirstuc package. The package supersedes the
longdesc author's glossary package (which is now obsolete).
depend glossaries.ARCH
-containersize 80756
-containerchecksum 9e9fd1abd6728f6b42b158542abcd5d35b5205c6452e1900cbc06b664ea2adca2da9dbf375c049227ff955bb7152514b8f358c7a527d5b47edfd80ee1005903a
-doccontainersize 6387244
-doccontainerchecksum 0f5dbfb060a90bf677b2dda55a08c2a5a74ac2978957a18e76ec269da09c592ddf97cfd83f4a802255383626a45aa3399fa037ce6025e03bcc258bd96745faac
-docfiles size=2708
+containersize 89488
+containerchecksum 526f1207eebd26d5c895f1d0668c8f51e53628412ba11066d90abba94cd6f493119c5fa036f19923e8fe2e044b2cc949ef7c12f8aa10e44951d68a6e6678086e
+doccontainersize 10787944
+doccontainerchecksum 7e7b1d7df3139108ae9b35da4735efc2066649c81a4ae888f1be499680a82d8f45bef2da1e958fc136be3768f52f1546c7518e2b0d8b1925d1ca009177b8e870
+docfiles size=4686
texmf-dist/doc/latex/glossaries/CHANGES
+ texmf-dist/doc/latex/glossaries/DEPENDS.txt
texmf-dist/doc/latex/glossaries/INSTALL
texmf-dist/doc/latex/glossaries/README.md details="Readme"
texmf-dist/doc/latex/glossaries/glossaries-code.pdf details="Package code and documentation (PDF)"
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example001.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example001.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example001.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example002.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example002.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example002.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example003.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example003.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example003.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example004.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example004.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example004.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example005.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example005.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example005.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example006.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example006.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example006.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example007.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example007.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example007.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example008.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example008.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example008.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example022.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example022.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example022.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example023.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example023.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example023.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example024.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example024.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example024.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example025.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example025.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example025.tex
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example030.pdf
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example030.png
+ texmf-dist/doc/latex/glossaries/glossaries-user-examples/glossaries-user-example030.tex
texmf-dist/doc/latex/glossaries/glossaries-user.html details="User manual (HTML)"
texmf-dist/doc/latex/glossaries/glossaries-user.pdf details="User manual (PDF)"
texmf-dist/doc/latex/glossaries/glossaries-user.tex
@@ -134086,17 +134462,16 @@ docfiles size=2708
texmf-dist/doc/man/man1/makeglossaries-lite.man1.pdf
texmf-dist/doc/man/man1/makeglossaries.1
texmf-dist/doc/man/man1/makeglossaries.man1.pdf
-srccontainersize 135176
-srccontainerchecksum 94d27f11897712f688accb817e1d8d3172f51ca6f109acbdd3cfbfeafd7374d4eb92cb3726994935039cc9724cf15a4d6c646f1c3a1c7c00d6df3f3c4ca17e73
-srcfiles size=328
+srccontainersize 145412
+srccontainerchecksum 8dd4815def16a9ae37ddb87e92dc9f933191a589f3740b6f94edcfcb726273ad20ed2b9bbf5b9a3918671184d39a9a314cd0dd6c9780a240b6826c3a43178711
+srcfiles size=451
texmf-dist/source/latex/glossaries/glossaries.dtx
texmf-dist/source/latex/glossaries/glossaries.ins
texmf-dist/source/latex/glossaries/makeglossaries-lite.pod
-runfiles size=241
- texmf-dist/scripts/glossaries/glossaries.perl
+runfiles size=413
+ texmf-dist/scripts/glossaries/glossaries.l2h
texmf-dist/scripts/glossaries/makeglossaries
texmf-dist/scripts/glossaries/makeglossaries-lite.lua
- texmf-dist/tex/latex/glossaries/base/glossaries-2020-03-19.sty
texmf-dist/tex/latex/glossaries/base/glossaries-babel.sty
texmf-dist/tex/latex/glossaries/base/glossaries-compatible-207.sty
texmf-dist/tex/latex/glossaries/base/glossaries-compatible-307.sty
@@ -134104,9 +134479,42 @@ runfiles size=241
texmf-dist/tex/latex/glossaries/base/glossaries-prefix.sty
texmf-dist/tex/latex/glossaries/base/glossaries.sty
texmf-dist/tex/latex/glossaries/expl/glossaries-accsupp.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-accsupp-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-babel-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-207-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-compatible-307-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-polyglossia-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossaries-prefix-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-hypernav-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-inline-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-list-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-list-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-long-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-long-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-longbooktabs-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-longragged-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-mcols-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-super-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-super-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-superragged-2021-11-01.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2020-03-19.sty
+ texmf-dist/tex/latex/glossaries/rollback/glossary-tree-2021-11-01.sty
texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty
texmf-dist/tex/latex/glossaries/styles/glossary-inline.sty
- texmf-dist/tex/latex/glossaries/styles/glossary-list-2020-03-19.sty
texmf-dist/tex/latex/glossaries/styles/glossary-list.sty
texmf-dist/tex/latex/glossaries/styles/glossary-long.sty
texmf-dist/tex/latex/glossaries/styles/glossary-longbooktabs.sty
@@ -134134,7 +134542,7 @@ catalogue-contact-bugs https://www.dickimaw-books.com/bugtracker.php?category=gl
catalogue-ctan /macros/latex/contrib/glossaries
catalogue-license lppl1.3
catalogue-topics glossary acronym
-catalogue-version 4.49
+catalogue-version 4.50
name glossaries-danish
category Package
@@ -146350,7 +146758,7 @@ catalogue-version 0.3
name ifoddpage
category Package
-revision 56291
+revision 64742
shortdesc Determine if the current page is odd or even
relocated 1
longdesc The package provides an \ifoddpage conditional to determine if
@@ -146360,27 +146768,27 @@ longdesc Two compiler runs are therefore required to achieve correct
longdesc results. In addition, the conditional \ifoddpageoronside is
longdesc provided which is also true in oneside mode where all pages use
longdesc the odd page layout.
-containersize 1456
-containerchecksum f56738031814ba4d980455765212f074979b95ccfe62b1661e2017a839bc774b5423f994196a23e763644d40b9842221a5c862f9b427f335f5788d34bbcb9acb
-doccontainersize 134584
-doccontainerchecksum e9fdf6ca02d33a52e89046f4d648204a0e560d97e9a12aa5742971e654bdc05867460ec10cbdb5441fc66ba02d2e078007593d9c4c898f290e61965eb6111007
-docfiles size=34
- RELOC/doc/latex/ifoddpage/README details="Readme"
+containersize 1424
+containerchecksum 2d54f1608951281969c1d10784b897ab250f019a20f1597c0b8620b735293b67f371150193c23aec23338f8e056101f5982cb90b1279651c2659086d12715508
+doccontainersize 144248
+doccontainerchecksum d140c3b0bf968316b085f608cb49e340a5b4b4e5c7de68a3dfab51f4695b4894dd80aec58ee7679b5f40439262a3d706109cd141f4c16443233f7fcd7c447e70
+docfiles size=38
+ RELOC/doc/latex/ifoddpage/DEPENDS.txt
+ RELOC/doc/latex/ifoddpage/README.txt details="Readme"
RELOC/doc/latex/ifoddpage/ifoddpage.pdf details="Package documentation"
-srccontainersize 4176
-srccontainerchecksum d6e471eb7014a93a4593234f3f2c81fcd1b7a758d73bd3b659c86812304e9eb9a9a29b8a653653e4672a79f75c2399bdf30491069bdc26c0e45ce9834fd8de40
-srcfiles size=4
+srccontainersize 4596
+srccontainerchecksum 19f318f5b967c8d4f8342aa11f30d71520c7782b4c9892595e26bb367cef5ee52524c916328021836677a600d3b39ef424dd611195a7b2eda83080f608224d6b
+srcfiles size=5
RELOC/source/latex/ifoddpage/ifoddpage.dtx
RELOC/source/latex/ifoddpage/ifoddpage.ins
runfiles size=1
RELOC/tex/latex/ifoddpage/ifoddpage.sty
-catalogue-contact-bugs https://sourceforge.net/p/ifoddpage/tickets/
-catalogue-contact-home https://sourceforge.net/p/ifoddpage/
-catalogue-contact-repository https://sourceforge.net/p/ifoddpage/code/ci/default/tree/
+catalogue-contact-bugs https://github.com/MartinScharrer/ifoddpage/issues
+catalogue-contact-home https://github.com/MartinScharrer/ifoddpage
catalogue-ctan /macros/latex/contrib/ifoddpage
catalogue-license lppl1.3
catalogue-topics typesetting macro-supp
-catalogue-version 1.1
+catalogue-version 1.2
name ifplatform
category Package
@@ -203840,7 +204248,7 @@ binfiles arch=x86_64-solaris size=1
name mfirstuc
category Package
-revision 60770
+revision 64743
shortdesc Uppercase the first letter of a word
relocated 1
longdesc The package provides commands \makefirstuc that uppercases the
@@ -203851,11 +204259,11 @@ longdesc \capitalisewords{phrase} which applies \makefirstuc to each
longdesc word in the phrase, where the words are separated by regular
longdesc spaces. (Exceptions can be made for words that shouldn't be
longdesc converted.)
-containersize 4472
-containerchecksum 9bf4d7db5094b20b65302face634a10ad2bcaf521e948130f5fda6770e8433074bd8d35b89bf905ad22609340e27e85dba5c50715a776d2c1ac98a5ec3faf5d5
-doccontainersize 676092
-doccontainerchecksum 227110ec17f336a9c443bfdf6294259a45457fbbfd33c14bbc2d7c58d28bfd6cb83182ef6c6a09e3ca89dff6fb98a807304bb41695e1d823bd80c17a1f5a862d
-docfiles size=201
+containersize 5756
+containerchecksum 2fde98490744da1823c5d90b8fabaa9c02d33f3f974fc7f0f6b8ddae4d8ec86f563a4fb491644d53a13b8632fbca2c7768970eea018c6112dc76d21307d89166
+doccontainersize 779396
+doccontainerchecksum 43fd4ec0bc778fc110c0002ebd8a1fd25374d9167c8b64857b29bc3642870c89f02deb406378bfa0fbc46825af6fc6622a1029880189f37d58efea74a983f5a3
+docfiles size=266
RELOC/doc/latex/mfirstuc/CHANGES
RELOC/doc/latex/mfirstuc/README details="Readme"
RELOC/doc/latex/mfirstuc/mfirstuc-code.pdf details="Package code and documentation (PDF)"
@@ -203864,19 +204272,20 @@ docfiles size=201
RELOC/doc/latex/mfirstuc/mfirstuc-manual.tex
RELOC/doc/latex/mfirstuc/sample-mfirstuc.pdf
RELOC/doc/latex/mfirstuc/sample-mfirstuc.tex
-srccontainersize 8744
-srccontainerchecksum 00c4f80df9ad7a6647f5dfa3ac3330ebcbe1041817ad013eccba3faa1631db0a16fe887240eeb6fd0e21b61308b1cf5c9387101bfd9ee01738ea46bf5c87f6d1
-srcfiles size=11
+srccontainersize 11528
+srccontainerchecksum cd46a05b9b90c3e703c5970ac46b8fd59d94dcdb83dfd38a1038bb2197ebd0b8a89ef9582dabf1ee8665abba4905548706fcc08ced7966fadaedb333bae968db
+srcfiles size=17
RELOC/source/latex/mfirstuc/mfirstuc.dtx
RELOC/source/latex/mfirstuc/mfirstuc.ins
-runfiles size=6
- RELOC/scripts/mfirstuc/mfirstuc.perl
+runfiles size=11
+ RELOC/scripts/mfirstuc/mfirstuc.l2h
+ RELOC/tex/latex/mfirstuc/mfirstuc-2021-10-15.sty
RELOC/tex/latex/mfirstuc/mfirstuc-english.sty
RELOC/tex/latex/mfirstuc/mfirstuc.sty
catalogue-ctan /macros/latex/contrib/mfirstuc
catalogue-license lppl1.3
catalogue-topics text-manip macro-supp
-catalogue-version 2.07
+catalogue-version 2.08
name mflogo
category Package
@@ -206557,7 +206966,7 @@ catalogue-version 1.8f
name mismath
category Package
-revision 56949
+revision 64744
shortdesc Miscellaneous mathematical macros
relocated 1
longdesc The package provides some mathematical macros to typeset:
@@ -206567,15 +206976,15 @@ longdesc beautiful arrows and adjusted norm, some standard operator
longdesc names, improved spacings in mathematical formulas, systems of
longdesc equations and small matrices, displaymath in double columns for
longdesc long calculations.
-containersize 2784
-containerchecksum 68bfec9f2b2d88d248416c43368831f76a8b5700252cd2adb4b7dbc0ca05d66243d1e8c8f587bc39da32f3f0db00be60a7f07047af2484ec9227055325a62922
-doccontainersize 531316
-doccontainerchecksum 70d308ce935a64573b9b9e96b0cb158518a61748c05ab79d9abb0445043ee3343b18d5babe5c3436f42d1e277cb374fbf40c470e85ab99dcf8da841bf0918bd8
-docfiles size=131
+containersize 2816
+containerchecksum 14e8c1a56fec71139f317b4e0bf1cac82d491676eade543f3fe7a4f5007f59adaca3ca007f88409ffd772e469fca949dff7cf5234ceea1bffe948ba391260905
+doccontainersize 360448
+doccontainerchecksum c06cadbd0853c20ec5a462816dd447183bca4ca1e9cb5abfeabe90a68e891d3bf5055ce6ec174f98c818dc593468bb3c600089b45d1264e31b3d292ad628373d
+docfiles size=90
RELOC/doc/latex/mismath/README.md details="Readme"
RELOC/doc/latex/mismath/mismath.pdf details="Package documentation"
-srccontainersize 14616
-srccontainerchecksum 938131fb63838e1ab7e2cae20d037c3cc24d22e152cad295c227e7fe12a3b4cfb2ccdaa0a1b3753c63071d253ebbb8f26c2ed7fa1056d4de517317c3fb3bee34
+srccontainersize 14788
+srccontainerchecksum 2b4d8a1254376de87355587784c65a51783eacbb91368fce144dd8e0e1e40c3f31158f87b5945c354cab48d895c46feea50c93e3cf75f197d4f224b216308d7f
srcfiles size=12
RELOC/source/latex/mismath/mismath.dtx
RELOC/source/latex/mismath/mismath.ins
@@ -206584,7 +206993,7 @@ runfiles size=2
catalogue-ctan /macros/latex/contrib/mismath
catalogue-license lppl1.3
catalogue-topics maths
-catalogue-version 1.8
+catalogue-version 1.9
name missaali
category Package
@@ -243998,7 +244407,7 @@ catalogue-version 0.1
name pgf-periodictable
category Package
-revision 64681
+revision 64748
shortdesc Create custom periodic tables of elements
relocated 1
longdesc The purpose of this package is to provide the Periodic Table of
@@ -244007,11 +244416,11 @@ longdesc or partial periodic table with a variety of options and
longdesc displaying the desired data for all the 118 elements. It can be
longdesc done in six languages: English, French, German, Portuguese
longdesc (from Portugal and from Brazil), Spanish and Italian.
-containersize 468460
-containerchecksum 961e88adb0dd2ebb841ac7ee27663c5a99c00cfde9f9a3c54832fe506c1441c3c04bba252056ffdf11924944d585fa7d7acb5911c2a4a37d1e6148241e02a40e
-doccontainersize 4605504
-doccontainerchecksum 66f0af73e1f2a8fcfb0b135dcfda84547950629dd496c87a84575266caa5d61f81bbbe1c26570612302a3a3acba0d2a381b15039a242a0da2cf9d10b67cf9742
-docfiles size=1945
+containersize 500832
+containerchecksum b8f0d1acae772824235182470dfe13a51b179aa68f5ba77ddbae07261a63c874ff2990c2c07ab9bd4cb09fa17264c480c7080b2e1065f2ebaf70733dcc533821
+doccontainersize 4573012
+doccontainerchecksum 36d0840ed326606316f7d65f6547ca14454315fb45ebcbcee0e233d85bc9a162391693c31e215c231b67afc9a02575aaf4dff648e74ae0416f7dd559a8d75716
+docfiles size=1882
RELOC/doc/latex/pgf-periodictable/README details="Readme"
RELOC/doc/latex/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_Ar.tex
RELOC/doc/latex/pgf-periodictable/manualfiles/pgf-PeriodicTableManual_CS.tex
@@ -244043,19 +244452,11 @@ docfiles size=1945
RELOC/doc/latex/pgf-periodictable/pgf-PeriodicTableManual.ist
RELOC/doc/latex/pgf-periodictable/pgf-PeriodicTableManual.pdf details="Package documentation"
RELOC/doc/latex/pgf-periodictable/pgf-PeriodicTableManual.tex
- RELOC/doc/latex/pgf-periodictable/pgfPT.backcolors.keys.tex
- RELOC/doc/latex/pgf-periodictable/pgfPT.buildcell.tex
RELOC/doc/latex/pgf-periodictable/pgfPT.colorSchemes.info.pdf
RELOC/doc/latex/pgf-periodictable/pgfPT.colorSchemes.info.tex
- RELOC/doc/latex/pgf-periodictable/pgfPT.data.tex
- RELOC/doc/latex/pgf-periodictable/pgfPT.drawing.keys.tex
- RELOC/doc/latex/pgf-periodictable/pgfPT.formatNumbers.tex
- RELOC/doc/latex/pgf-periodictable/pgfPT.labels.tex
- RELOC/doc/latex/pgf-periodictable/pgfPT.names.tex
- RELOC/doc/latex/pgf-periodictable/pgfPT.process.language.tex
RELOC/doc/latex/pgf-periodictable/pgfPT_radio_symbol.tex
RELOC/doc/latex/pgf-periodictable/pgfPTcolorSchemes.html
-runfiles size=499
+runfiles size=562
RELOC/tex/latex/pgf-periodictable/flags/pgfPT_flag0.pdf
RELOC/tex/latex/pgf-periodictable/flags/pgfPT_flag1.pdf
RELOC/tex/latex/pgf-periodictable/flags/pgfPT_flag10.pdf
@@ -244098,7 +244499,15 @@ runfiles size=499
RELOC/tex/latex/pgf-periodictable/lattice/pgfPT_ls_tetr.pdf
RELOC/tex/latex/pgf-periodictable/lattice/pgfPT_ls_tric.pdf
RELOC/tex/latex/pgf-periodictable/pgf-PeriodicTable.sty
+ RELOC/tex/latex/pgf-periodictable/pgfPT.backcolors.keys.tex
+ RELOC/tex/latex/pgf-periodictable/pgfPT.buildcell.tex
RELOC/tex/latex/pgf-periodictable/pgfPT.coordinates.tex
+ RELOC/tex/latex/pgf-periodictable/pgfPT.data.tex
+ RELOC/tex/latex/pgf-periodictable/pgfPT.drawing.keys.tex
+ RELOC/tex/latex/pgf-periodictable/pgfPT.formatNumbers.tex
+ RELOC/tex/latex/pgf-periodictable/pgfPT.labels.tex
+ RELOC/tex/latex/pgf-periodictable/pgfPT.names.tex
+ RELOC/tex/latex/pgf-periodictable/pgfPT.process.language.tex
RELOC/tex/latex/pgf-periodictable/pgfPT_radio_symbol.pdf
RELOC/tex/latex/pgf-periodictable/spectra/pgfPT_spec1.pdf
RELOC/tex/latex/pgf-periodictable/spectra/pgfPT_spec10.pdf
@@ -253510,7 +253919,7 @@ catalogue-version 1.0
name proflycee
category Package
-revision 64698
+revision 64745
shortdesc A LaTeX package for French maths teachers in high school
relocated 1
longdesc This package provides some commands to help French mathematics
@@ -253519,17 +253928,23 @@ longdesc create splines with "derivative control"; \paramCF and \ligneCF
longdesc in order to create an xcas-windows-like; \envconsolepythontex
longdesc and \envcodepythontex to create code presentation and code
longdesc execution with pythontex.
-containersize 18944
-containerchecksum b1b4cc6a1999762cd96c02377d261b9ade6c99438aaeede70b5570dd6b60015d4c83d5862479ab1da28924dcbd204fd8b740d2f1fd182674fc4b954f02924c86
-doccontainersize 958472
-doccontainerchecksum 62908858e683e0facf721c38688939fa91c665c08740aeeb206d77ccc6f8aaa12a96aaa35c33ddfadbe5fb5e34dfde5ea8eb99e3a9d67f70f8686fb35169f775
-docfiles size=283
+containersize 19828
+containerchecksum 149a981369ce0211a6049f8f9342b6ec025708d63d4bdc9387e275ba76bd8961b884fed84c5a830a83abe19ccae91de04f48d91b8ffb57e8994714b3aa163b52
+doccontainersize 1051596
+doccontainerchecksum 299c6e61ad502323b5543c5f9ea17c7ff6ea38ec55889507abf5bc2f9b06c8916724619f5f37ad38f877f758c229a445dc01c87fa9469f10835ca7b71daa3cf7
+docfiles size=310
RELOC/doc/latex/proflycee/ProfLycee-doc.pdf details="Package documentation" language="fr"
RELOC/doc/latex/proflycee/ProfLycee-doc.tex
RELOC/doc/latex/proflycee/README.md details="Readme"
RELOC/doc/latex/proflycee/basique.csv
RELOC/doc/latex/proflycee/cap.csv
RELOC/doc/latex/proflycee/perroquet.csv
+ RELOC/doc/latex/proflycee/pl-doc-probas_a.png
+ RELOC/doc/latex/proflycee/pl-doc-probas_b.png
+ RELOC/doc/latex/proflycee/pl-doc-probas_c.png
+ RELOC/doc/latex/proflycee/pl-doc-probas_d.png
+ RELOC/doc/latex/proflycee/pl-doc-probas_e.png
+ RELOC/doc/latex/proflycee/pl-doc-probas_f.png
RELOC/doc/latex/proflycee/pl-doc-stats_a.png
RELOC/doc/latex/proflycee/pl-doc-stats_b.png
RELOC/doc/latex/proflycee/pl-doc-stats_c.png
@@ -253537,7 +253952,7 @@ docfiles size=283
RELOC/doc/latex/proflycee/pl-doc-stats_d.png
RELOC/doc/latex/proflycee/pl-doc-stats_e.png
RELOC/doc/latex/proflycee/testscript.py
-runfiles size=26
+runfiles size=27
RELOC/tex/latex/proflycee/ProfLycee.sty
catalogue-also profcollege
catalogue-contact-bugs https://github.com/cpierquet/ProfLycee/issues
@@ -253545,7 +253960,7 @@ catalogue-contact-repository https://github.com/cpierquet/ProfLycee
catalogue-ctan /macros/latex/contrib/proflycee
catalogue-license lppl1.3c
catalogue-topics maths french teaching expl3 pgf-tikz
-catalogue-version 1.3.3
+catalogue-version 1.3.5
name program
category Package
@@ -290704,7 +291119,7 @@ catalogue-version 1.0
name sty2dtx
category Package
-revision 56291
+revision 64746
shortdesc Create a .dtx file from a .sty file
longdesc The package provides a Perl script that converts a .sty file
longdesc (LaTeX package) to .dtx format (documented LaTeX source), by
@@ -290720,14 +291135,14 @@ longdesc file from 'dtxtut' is used. User level macros are added
longdesc automatically to the 'Usage' section of the .dtx file. A
longdesc corresponding .ins file can be generated as well.
depend sty2dtx.ARCH
-containersize 8720
-containerchecksum a7e42340744a348c88bb3cde7e23d428259f4fe7c644093e4bdabf8c49bc7f9c929a2271cd14daed9be233a04f62b60602a9fa778d05b11dba716d886286e8e1
-doccontainersize 151548
-doccontainerchecksum 2fb33ea4fcc9b5e940b46cb1b53cb56692528d8926d9bf22d3615958946763a63be101a5cf146a14ade43e2dce11b8fc25866d563d844570863dce54f48472b5
-docfiles size=43
+containersize 8784
+containerchecksum 0fa962d1baaeef4981aef8743dcb9350458e1051208cf92bb9c0630d7670a21c30ed89c6fd94b52d6ab81f32c3c91a05a6bb32e45b70d4d363be7cf225dc6c80
+doccontainersize 184132
+doccontainerchecksum bd4fe0913963188e32133a2634adff87f7c9e97a9cbd9aad05356eb20d89ea381856eac60e8660cdc8eb1b9754ba865553882775906252b5eed1c675128b550a
+docfiles size=52
texmf-dist/doc/man/man1/sty2dtx.1
texmf-dist/doc/man/man1/sty2dtx.man1.pdf
- texmf-dist/doc/support/sty2dtx/README details="Readme"
+ texmf-dist/doc/support/sty2dtx/README.txt
texmf-dist/doc/support/sty2dtx/sty2dtx.pdf
runfiles size=8
texmf-dist/scripts/sty2dtx/sty2dtx.pl
@@ -308237,7 +308652,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 64726
+revision 64737
shortdesc TeX Live infrastructure programs
longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for
longdesc tlmgr to run but still ours. Not included in tlcritical.
@@ -308245,11 +308660,11 @@ depend texlive-scripts.ARCH
depend texlive.infra
execute addMap mathpple.map
postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
-containersize 113688
-containerchecksum 3409bab3b4d4b5fa24ae4a75ec829b27a6f148b8a11f8c2d0f47a6a5fdc30df7ef14bff0e4fc0e2a4403d6d52d10a2b4298f2ebfce3bf1d243ff9f062f6a9e59
-doccontainersize 422228
-doccontainerchecksum 82adf32ed408d102d4495282cf7498bdda4a0805f79566ae0e04f9908401e0f901f5f0cf38e750c5cfc7ee3e2c8bc29966aec78c6bb9b99ccec384244647f35a
-docfiles size=523
+containersize 113668
+containerchecksum 09ae66806fcb4a2dc60db99cb4a126ed6b5c65eb1cc69258d397a80d7e7f1512ab7e2c63581f9c0d2f7e8e5eb1695eefdc887aee4bdce3b13de0bbfa23b09431
+doccontainersize 422240
+doccontainerchecksum 9563e4c3858404060f36713d4ea34fa289d8a4a05d908f2973c5ff588d757bab30744cb0c5b68c283b3bb00d7dc6a3689af25d79f353f07666d6b4079b3a245c
+docfiles size=524
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
texmf-dist/doc/man/man1/fmtutil-sys.man1.pdf
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 3848833de5..8c0207b523 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-747e143da4977e39746b3c6daac68d87 texlive.tlpdb
+67ace79ea163c933a27cac03c3f03624 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index e99fae206e..0cc5dc5d3c 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-d964f0d91a6df10dcf59d4baa5f42645dddce6d2602cbec022b5f936e74bf754a01bfb8589b49430b9f65f7abc9fd8ecd89e1219f3e6df7a923d2b75f9e833ef texlive.tlpdb
+729e9ec4a982b0ecb4d14374437596ef00ad2b94473ad001b6a830b35075dd3222e5bdbc5202dd1ad1c9ad72fa458a107b712402fb86c220cf592455283829e6 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index cf8f3040fd..b82cce3f8a 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJjTeuPAAoJEEzhh34ZQ4xwJ4sH/iGTbUJfbE+hQpkCjgdkZKEl
-Sl83IFpmmLBKNtdQIDwNSnrx9rsI3nvye+2YLGFbi0D+ZtM3lJnlovo7PEaWGoIX
-ExQyIixkdhEmy/SHsNEf0EbpfbkMrXEXTR0T53GDp65Rb249MMxFlXMzoC6gJzGK
-G2XJmqQTqAPQ7k1F2TY28niiz0prrmrg4zwyKeSEkb7VdtUVsClKMWj5ysfncjNT
-W4PAinQdVCmLxd7hVw190ZOVJtK3UB+uwkBZCRG1xq+5J/Hx2XzUk1+w0vfAkZ9Z
-psahmSAjUvTp6nP7I/BvyDN1+6Iu1ZqgAKE5/D462dNhX5vP8M2DymZIhb3FXPo=
-=7jVh
+iQEcBAEBCgAGBQJjTz1oAAoJEEzhh34ZQ4xwg0MIALTS29KAnn+cqKNsgLEeD8Gp
+qk6DzlpnKn8loM2HW/3xXm/A4M93fXsDAgcqY/wUfIWMBNch2jJ2u1mjudM0vuxH
+vBtFpxDPH6q7X09FXI4FSEW5AynkiMLpH0ZcHa8lxdYbXldtEtU92eZy6PVNErQt
+IWEO9LBpiNVQXL5cki/6RNa9u7qfQ0sqTCoUpt8DwdYLJqxnvlClZ5AZkT+/ZItr
+rI6WQ9Cm0bDnkkWEY7k28dt7hyoroiSKyuq8rjm4BoDgKFCmqhs8tRelvzSV04Op
+S4cGfLo8NRaq8qLSLIOeWn+MHWZoRJq0sEZIEUdSTKbT1DbCxCvzGIIgMUmH8d0=
+=5+22
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 0913118374..d7d52fd5a6 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index a929f3eb45..538abf9247 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1666037837
+date=1666124224
lastupd=miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-x64-2.9 miktex-cjkutils-bin-x64-2.9 miktex-console-bin-x64-2.9 miktex-curl-bin-x64-2.9 miktex-cweb-bin-x64-2.9 miktex-devnag-bin-x64-2.9 miktex-doc miktex-dvicopy-bin-x64-2.9 miktex-dvipdfmx-bin-x64-2.9 miktex-dvipng-bin-x64-2.9 miktex-dvips-bin-x64-2.9
-lstdigest=5cf35c7c7bf47d201f6fd3e04307a44b
+lstdigest=5b71ffdf742861ce8d057fe9856ee468
numpkg=6101
relstate=next
-version=8325
+version=8326
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: kZ0a9P3iQjsalNYaIezlGorWB54J+9rJVycC3uCtHGbEoIXFgXwKwgHhYiZALEfDaus07K8DiXTMKPYZC9mT/Nh6RRxhSXTPRipCnIYap1DFF7rObHM6wnPUZYZmXVYYGMy+M8ZMhAdYeR0F/00ZWUrOZjXSKcsmMb/Zt3Ur/g1EpzxM29f9fhDEFhYoOdr6Gc/3okj2te0EJfSrg6xbMO83YyXvcJpt2GjIMUYyP1qv2iLElTsZvMr3Som0R4CcClNDYKYM/NdDM+Y4JPC1dIPOm+obNpaef/j4BQlBcETEofnWu9Oq2FivgoyVcZ9OMEpC9/XVl+WuEXPQdaiuKw==
+;;;; signature/miktex: arqrm1MaklfyQXSxMcls8XE6WLgacNR4F0iSj5K3Fy7F5O4B+n1Nplt4J93ewFXOfkfqv+e2T94EKlnHG3HxoRJ9GbazX10Yyui4e5kS8DSc769izcpvX8ZWtZKVd0WX3yLilpwVvoAxSusgmPtRz3qWGQY5oDjsSqgpzQWOL0GtIkePBdmJMvYCeK1ERMkrl+IZBoQA0NXrC2sBtBEg2hqPOySG5wRG3N+cSs8ifs22Ebt3knKwPKpdMFgIKp1k5oqRjFCtrgBMHf5gDSNo9yrygXU4kUhrUEfEX3XAMcvAxFbMqadYVh+Y0kQ1LJVQzPxE9bWmoMSsz1r8OOPQPg==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index 9dd231bc96..e05ea1bbe7 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1666037466
+date=1666123922
lastupd=miktex-runtime-bin-x64-2.9 standalone was was__doc was__source xcharter-math xcharter-math__doc xcharter-math__source abntexto abntexto__doc abntexto__source algpseudocodex algpseudocodex__doc algpseudocodex__source apxproof apxproof__doc apxproof__source centeredline centeredline__doc chemobabel
-lstdigest=fd2e53878622419f395c682c5ef1326b
+lstdigest=fe9615db65f4d970ef9536b4156d8362
numpkg=6101
relstate=stable
-version=8325
+version=8326
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: QCGDtHHREo+Pqqhst0wnbzTd3MyrqOFZjRIEaUx0dupR2ER1qKjTi5KK5S8OxZjfkL7jhlD1jYNjh/wSaaP9U59KWuCtmiSAMfDOrXuLD3MfSfn1f5iT4TSVHcmIhydH06s27TRir23Wbm/6CqQOuR2OoUp9xSm50cETLIbqudoyESoukkxL8+XTwiVY1kHcOvASMtjN9zsEX6QFl2IFSlSJcPOOLJtwSj0QUn4ePKZ3uXCVjwE4FCrmbKeI363mDrYIo81qoq4CHzHf3rHoVCpQCsSvfrA3Z2ChhBWaJwcTfT8Gsp0m2Pg9BZ2QZolXRS/rI/mr7g2RXhYmx344Fw==
+;;;; signature/miktex: vqgsRTOT0qaroWuDNAwQ9yAARS5RxaJY+vWKkr2liT4pcySR/VwAFSCQmXrM6Oj4Jn/DWvJoZdb1HLjzWz5SKmHGionDKWNimUxZu+YlofUIFGAC7AcZg6OgTyHdoOrEyed+a85UXwXLBYnTdbN2McPpN9kBnMg/miYQBmjLFWZwZ4WPSGwDMr3Oe1uwPdrm7rNu5AHkoSwp/l3fGlB07nRdDdVpeaHtRDKCnOVClSLn0QrPBV14Kx9jL5p+HrKfhzCnID/RFOOtvak0+4oqv0nL7YfzY1wzrni/XP4kBMShc168g+xhPOO7YU/DfITVt+B1bHhADWfZ7NlIL75v0A==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/timestamp b/timestamp
index 934c36b178..1762f720ee 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2022-10-18-02-02
+2022-10-19-02-02