diff options
Diffstat (limited to 'macros/latex')
-rw-r--r-- | macros/latex/contrib/nmbib/Makefile | 6 | ||||
-rw-r--r-- | macros/latex/contrib/nmbib/README | 2 | ||||
-rw-r--r-- | macros/latex/contrib/nmbib/nmbib-sample.pdf (renamed from macros/latex/contrib/nmbib/nmsample.pdf) | bin | 96763 -> 101693 bytes | |||
-rw-r--r-- | macros/latex/contrib/nmbib/nmbib-sample.tex (renamed from macros/latex/contrib/nmbib/nmsample.tex) | 0 | ||||
-rw-r--r-- | macros/latex/contrib/nmbib/nmbib.dtx | 4 | ||||
-rw-r--r-- | macros/latex/contrib/nmbib/nmbib.pdf | bin | 347244 -> 368243 bytes | |||
-rw-r--r-- | macros/latex/contrib/nmbib/nmbibtex.1 | 135 | ||||
-rw-r--r-- | macros/latex/required/l3backend/CHANGELOG.md (renamed from macros/latex/contrib/l3backend/CHANGELOG.md) | 11 | ||||
-rw-r--r-- | macros/latex/required/l3backend/README.md (renamed from macros/latex/contrib/l3backend/README.md) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-basics.dtx (renamed from macros/latex/contrib/l3backend/l3backend-basics.dtx) | 14 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-box.dtx (renamed from macros/latex/contrib/l3backend/l3backend-box.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-code.pdf (renamed from macros/latex/contrib/l3backend/l3backend-code.pdf) | bin | 908163 -> 907780 bytes | |||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-code.tex (renamed from macros/latex/contrib/l3backend/l3backend-code.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-color.dtx (renamed from macros/latex/contrib/l3backend/l3backend-color.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-draw.dtx (renamed from macros/latex/contrib/l3backend/l3backend-draw.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-graphics.dtx (renamed from macros/latex/contrib/l3backend/l3backend-graphics.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-header.dtx (renamed from macros/latex/contrib/l3backend/l3backend-header.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-opacity.dtx (renamed from macros/latex/contrib/l3backend/l3backend-opacity.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend-pdf.dtx (renamed from macros/latex/contrib/l3backend/l3backend-pdf.dtx) | 106 | ||||
-rw-r--r-- | macros/latex/required/l3backend/l3backend.ins (renamed from macros/latex/contrib/l3backend/l3backend.ins) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/CHANGELOG.md (renamed from macros/latex/contrib/l3kernel/CHANGELOG.md) | 28 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/README.md (renamed from macros/latex/contrib/l3kernel/README.md) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/expl3.dtx (renamed from macros/latex/contrib/l3kernel/expl3.dtx) | 4 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/expl3.pdf (renamed from macros/latex/contrib/l3kernel/expl3.pdf) | bin | 610363 -> 610060 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/interface3.pdf (renamed from macros/latex/contrib/l3kernel/interface3.pdf) | bin | 1795605 -> 1801752 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/interface3.tex (renamed from macros/latex/contrib/l3kernel/interface3.tex) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3.ins (renamed from macros/latex/contrib/l3kernel/l3.ins) | 3 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3basics.dtx (renamed from macros/latex/contrib/l3kernel/l3basics.dtx) | 16 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3bitset.dtx (renamed from macros/latex/contrib/l3kernel/l3bitset.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3bootstrap.dtx (renamed from macros/latex/contrib/l3kernel/l3bootstrap.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3box.dtx (renamed from macros/latex/contrib/l3kernel/l3box.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3cctab.dtx (renamed from macros/latex/contrib/l3kernel/l3cctab.dtx) | 33 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3clist.dtx (renamed from macros/latex/contrib/l3kernel/l3clist.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3coffins.dtx (renamed from macros/latex/contrib/l3kernel/l3coffins.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3color.dtx (renamed from macros/latex/contrib/l3kernel/l3color.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3debug.dtx (renamed from macros/latex/contrib/l3kernel/l3debug.dtx) | 15 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3deprecation.dtx (renamed from macros/latex/contrib/l3kernel/l3deprecation.dtx) | 63 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3doc.dtx (renamed from macros/latex/contrib/l3kernel/l3doc.dtx) | 6 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3doc.pdf (renamed from macros/latex/contrib/l3kernel/l3doc.pdf) | bin | 565279 -> 565282 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3docstrip.dtx (renamed from macros/latex/contrib/l3kernel/l3docstrip.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3docstrip.pdf (renamed from macros/latex/contrib/l3kernel/l3docstrip.pdf) | bin | 151266 -> 150985 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3expan.dtx (renamed from macros/latex/contrib/l3kernel/l3expan.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3file.dtx (renamed from macros/latex/contrib/l3kernel/l3file.dtx) | 19 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3flag.dtx (renamed from macros/latex/contrib/l3kernel/l3flag.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-assign.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-assign.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-aux.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-aux.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-basics.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-basics.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-convert.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-convert.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-expo.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-expo.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-extended.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-extended.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-functions.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-functions.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-logic.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-logic.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-parse.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-parse.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-random.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-random.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-round.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-round.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-symbolic.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-symbolic.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-traps.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-traps.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-trig.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-trig.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp-types.dtx (renamed from macros/latex/contrib/l3kernel/l3fp-types.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fp.dtx (renamed from macros/latex/contrib/l3kernel/l3fp.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3fparray.dtx (renamed from macros/latex/contrib/l3kernel/l3fparray.dtx) | 57 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3int.dtx (renamed from macros/latex/contrib/l3kernel/l3int.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3intarray.dtx (renamed from macros/latex/contrib/l3kernel/l3intarray.dtx) | 75 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3kernel-functions.dtx (renamed from macros/latex/contrib/l3kernel/l3kernel-functions.dtx) | 29 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3keys.dtx (renamed from macros/latex/contrib/l3kernel/l3keys.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3legacy.dtx (renamed from macros/latex/contrib/l3kernel/l3legacy.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3luatex.dtx (renamed from macros/latex/contrib/l3kernel/l3luatex.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3msg.dtx (renamed from macros/latex/contrib/l3kernel/l3msg.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3names.dtx (renamed from macros/latex/contrib/l3kernel/l3names.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news.pdf (renamed from macros/latex/contrib/l3kernel/l3news.pdf) | bin | 396222 -> 396222 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news.tex (renamed from macros/latex/contrib/l3kernel/l3news.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news01.pdf (renamed from macros/latex/contrib/l3kernel/l3news01.pdf) | bin | 122959 -> 122959 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news01.tex (renamed from macros/latex/contrib/l3kernel/l3news01.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news02.pdf (renamed from macros/latex/contrib/l3kernel/l3news02.pdf) | bin | 150919 -> 150919 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news02.tex (renamed from macros/latex/contrib/l3kernel/l3news02.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news03.pdf (renamed from macros/latex/contrib/l3kernel/l3news03.pdf) | bin | 148747 -> 148747 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news03.tex (renamed from macros/latex/contrib/l3kernel/l3news03.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news04.pdf (renamed from macros/latex/contrib/l3kernel/l3news04.pdf) | bin | 114754 -> 114754 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news04.tex (renamed from macros/latex/contrib/l3kernel/l3news04.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news05.pdf (renamed from macros/latex/contrib/l3kernel/l3news05.pdf) | bin | 112524 -> 112524 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news05.tex (renamed from macros/latex/contrib/l3kernel/l3news05.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news06.pdf (renamed from macros/latex/contrib/l3kernel/l3news06.pdf) | bin | 151591 -> 151591 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news06.tex (renamed from macros/latex/contrib/l3kernel/l3news06.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news07.pdf (renamed from macros/latex/contrib/l3kernel/l3news07.pdf) | bin | 128344 -> 128344 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news07.tex (renamed from macros/latex/contrib/l3kernel/l3news07.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news08.pdf (renamed from macros/latex/contrib/l3kernel/l3news08.pdf) | bin | 163484 -> 163484 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news08.tex (renamed from macros/latex/contrib/l3kernel/l3news08.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news09.pdf (renamed from macros/latex/contrib/l3kernel/l3news09.pdf) | bin | 250159 -> 250159 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news09.tex (renamed from macros/latex/contrib/l3kernel/l3news09.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news10.pdf (renamed from macros/latex/contrib/l3kernel/l3news10.pdf) | bin | 150302 -> 150302 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news10.tex (renamed from macros/latex/contrib/l3kernel/l3news10.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news11.pdf (renamed from macros/latex/contrib/l3kernel/l3news11.pdf) | bin | 170102 -> 170102 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news11.tex (renamed from macros/latex/contrib/l3kernel/l3news11.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3news12.pdf (renamed from macros/latex/contrib/l3kernel/l3news12.pdf) | bin | 205020 -> 205020 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3news12.tex (renamed from macros/latex/contrib/l3kernel/l3news12.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3pdf.dtx (renamed from macros/latex/contrib/l3kernel/l3pdf.dtx) | 362 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3prefixes.csv (renamed from macros/latex/contrib/l3kernel/l3prefixes.csv) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3prefixes.pdf (renamed from macros/latex/contrib/l3kernel/l3prefixes.pdf) | bin | 82720 -> 82720 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3prefixes.tex (renamed from macros/latex/contrib/l3kernel/l3prefixes.tex) | 0 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3prg.dtx (renamed from macros/latex/contrib/l3kernel/l3prg.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3prop.dtx (renamed from macros/latex/contrib/l3kernel/l3prop.dtx) | 40 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3quark.dtx (renamed from macros/latex/contrib/l3kernel/l3quark.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3regex.dtx (renamed from macros/latex/contrib/l3kernel/l3regex.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3seq.dtx (renamed from macros/latex/contrib/l3kernel/l3seq.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3skip.dtx (renamed from macros/latex/contrib/l3kernel/l3skip.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3sort.dtx (renamed from macros/latex/contrib/l3kernel/l3sort.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3str-convert.dtx (renamed from macros/latex/contrib/l3kernel/l3str-convert.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3str.dtx (renamed from macros/latex/contrib/l3kernel/l3str.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3styleguide.pdf (renamed from macros/latex/contrib/l3kernel/l3styleguide.pdf) | bin | 296553 -> 296259 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3styleguide.tex (renamed from macros/latex/contrib/l3kernel/l3styleguide.tex) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3syntax-changes.pdf (renamed from macros/latex/contrib/l3kernel/l3syntax-changes.pdf) | bin | 231402 -> 231103 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3syntax-changes.tex (renamed from macros/latex/contrib/l3kernel/l3syntax-changes.tex) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3sys.dtx (renamed from macros/latex/contrib/l3kernel/l3sys.dtx) | 21 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3term-glossary.pdf (renamed from macros/latex/contrib/l3kernel/l3term-glossary.pdf) | bin | 242191 -> 241893 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/l3term-glossary.tex (renamed from macros/latex/contrib/l3kernel/l3term-glossary.tex) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3text-case.dtx (renamed from macros/latex/contrib/l3kernel/l3text-case.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3text-map.dtx (renamed from macros/latex/contrib/l3kernel/l3text-map.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3text-purify.dtx (renamed from macros/latex/contrib/l3kernel/l3text-purify.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3text.dtx (renamed from macros/latex/contrib/l3kernel/l3text.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3tl-analysis.dtx (renamed from macros/latex/contrib/l3kernel/l3tl-analysis.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3tl-build.dtx (renamed from macros/latex/contrib/l3kernel/l3tl-build.dtx) | 5 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3tl.dtx (renamed from macros/latex/contrib/l3kernel/l3tl.dtx) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3token.dtx (renamed from macros/latex/contrib/l3kernel/l3token.dtx) | 10 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/l3unicode.dtx (renamed from macros/latex/contrib/l3kernel/l3unicode.dtx) | 4 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/source3.pdf (renamed from macros/latex/contrib/l3kernel/source3.pdf) | bin | 7574289 -> 7624172 bytes | |||
-rw-r--r-- | macros/latex/required/l3kernel/source3.tex (renamed from macros/latex/contrib/l3kernel/source3.tex) | 2 | ||||
-rw-r--r-- | macros/latex/required/l3kernel/source3body.tex (renamed from macros/latex/contrib/l3kernel/source3body.tex) | 0 |
127 files changed, 779 insertions, 405 deletions
diff --git a/macros/latex/contrib/nmbib/Makefile b/macros/latex/contrib/nmbib/Makefile index 4b59427e24..4f4135521a 100644 --- a/macros/latex/contrib/nmbib/Makefile +++ b/macros/latex/contrib/nmbib/Makefile @@ -7,7 +7,7 @@ # PACKAGE=nmbib -SAMPLES = nmsample.tex +SAMPLES = nmbib-sample.tex PERLSCRIPTS = nmbibtex.pl @@ -62,9 +62,9 @@ distclean: veryclean # Archive for the distribution. Includes typeset documentation # archive: all clean - tar -czvf $(PACKAGE).tgz -C .. --exclude '*~' --exclude '*.tgz' --exclude CVS $(PACKAGE) + COPYFILE_DISABLE=1 tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude '*.zip' --exclude CVS --exclude '.git*' $(PACKAGE); mv ../$(PACKAGE).tgz . zip: all clean ${MAKE} $(PACKAGE).sty $(RM) *.log - zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x CVS -x 'CVS/*'
\ No newline at end of file + zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x CVS -x 'CVS/*' diff --git a/macros/latex/contrib/nmbib/README b/macros/latex/contrib/nmbib/README index 833fa7992e..00a3fe6b5d 100644 --- a/macros/latex/contrib/nmbib/README +++ b/macros/latex/contrib/nmbib/README @@ -9,4 +9,6 @@ provides other improvments. Changes: + v1.05. nmsample is renamed to nmbib-sample to avoid TeXLive name clash + v1.04 An embarrassing typo corrected.
\ No newline at end of file diff --git a/macros/latex/contrib/nmbib/nmsample.pdf b/macros/latex/contrib/nmbib/nmbib-sample.pdf Binary files differindex bfcf4824b5..cb3c42b895 100644 --- a/macros/latex/contrib/nmbib/nmsample.pdf +++ b/macros/latex/contrib/nmbib/nmbib-sample.pdf diff --git a/macros/latex/contrib/nmbib/nmsample.tex b/macros/latex/contrib/nmbib/nmbib-sample.tex index 56ff2a807a..56ff2a807a 100644 --- a/macros/latex/contrib/nmbib/nmsample.tex +++ b/macros/latex/contrib/nmbib/nmbib-sample.tex diff --git a/macros/latex/contrib/nmbib/nmbib.dtx b/macros/latex/contrib/nmbib/nmbib.dtx index 24647ae06f..f84fc00877 100644 --- a/macros/latex/contrib/nmbib/nmbib.dtx +++ b/macros/latex/contrib/nmbib/nmbib.dtx @@ -1,7 +1,7 @@ % \iffalse % $Id: nmbib.dtx,v 1.21 2015/07/27 20:22:45 boris Exp $ % -%% Copyright 2015, Michael Cohen <mcohen@u-aizu.ac.jp> +%% Copyright 2015-2024, Michael Cohen <mcohen@u-aizu.ac.jp> %% and Boris Veytsman <borisv@lk.net> %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -59,7 +59,7 @@ % \changes{v1.00}{2014/01/23}{Preliminary release} % \changes{v1.03}{2015/07/25}{Added day field in the chrono bst} % -% \title{New Multibibliography Package\thanks{\copyright 2015 Michael +% \title{New Multibibliography Package\thanks{\copyright 2015--2024 Michael % Cohen and Boris Veytsman}} % \author{Boris Veytsman\thanks{borisv@lk.net} % \and Michael Cohen\thanks{mcohen@u-aizu.ac.jp}} diff --git a/macros/latex/contrib/nmbib/nmbib.pdf b/macros/latex/contrib/nmbib/nmbib.pdf Binary files differindex ba4aeed009..2258288207 100644 --- a/macros/latex/contrib/nmbib/nmbib.pdf +++ b/macros/latex/contrib/nmbib/nmbib.pdf diff --git a/macros/latex/contrib/nmbib/nmbibtex.1 b/macros/latex/contrib/nmbib/nmbibtex.1 index bb7bb38f4b..d96236dde8 100644 --- a/macros/latex/contrib/nmbib/nmbibtex.1 +++ b/macros/latex/contrib/nmbib/nmbibtex.1 @@ -1,4 +1,5 @@ -.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== @@ -15,141 +16,71 @@ .ft R .fi .. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. \*(C+ will -.\" give a nicer C++. Capital omega is used to do unbreakable dashes and -.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, -.\" nothing in troff, for use with C<>. -.tr \(*W- -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ -. ds -- \|\(em\| -. 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 +. \} +. \} .\} -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C +.rr rF .\" ======================================================================== .\" .IX Title "NMBIBTEX 1" -.TH NMBIBTEX 1 "2015-04-25" "perl v5.10.1" "User Contributed Perl Documentation" +.TH NMBIBTEX 1 2015-04-26 "perl v5.38.2" "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 .nh -.SH "NAME" +.SH NAME nmbibtex \- a program to compile bibliographies for the package nmbib -.SH "SYNOPSIS" +.SH SYNOPSIS .IX Header "SYNOPSIS" -nmbibtex \fI\s-1OPTIONS\s0\fR \fI\s-1FILE\s0\fR -.SH "DESCRIPTION" +nmbibtex \fIOPTIONS\fR \fIFILE\fR +.SH DESCRIPTION .IX Header "DESCRIPTION" -nmbibtex calls \fIbibtex\fR\|(1) for all aux files produced by the package +nmbibtex calls \fBbibtex\fR\|(1) for all aux files produced by the package nmbib -.SH "OPTIONS" +.SH OPTIONS .IX Header "OPTIONS" -.IP "\fB\-h\fR" 4 +.IP \fB\-h\fR 4 .IX Item "-h" Print the help information and exit .IP "\fB\-min\-crossrefs\fR \fInumber\fR" 4 .IX Item "-min-crossrefs number" -Send the option \f(CW\*(C`\-min\-crossref=NUMBER\*(C'\fR to \fIbibtex\fR\|(1) -.IP "\fB\-terse\fR" 4 +Send the option \f(CW\*(C`\-min\-crossref=NUMBER\*(C'\fR to \fBbibtex\fR\|(1) +.IP \fB\-terse\fR 4 .IX Item "-terse" -Send the option \f(CW\*(C`\-terse\*(C'\fR to \fIbibtex\fR\|(1) -.IP "\fB\-v\fR" 4 +Send the option \f(CW\*(C`\-terse\*(C'\fR to \fBbibtex\fR\|(1) +.IP \fB\-v\fR 4 .IX Item "-v" Print the copyright information and exit .SH "AUTHORS AND LICENSE" diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/required/l3backend/CHANGELOG.md index 66a69a3bb3..ecd8593881 100644 --- a/macros/latex/contrib/l3backend/CHANGELOG.md +++ b/macros/latex/required/l3backend/CHANGELOG.md @@ -6,6 +6,14 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-04-11] + +### Added +- Support for 'raw' PDF object IDs + +### Changed +- Update PDF object management code + ## [2024-03-14] ### Removed @@ -339,7 +347,8 @@ this project uses date-based 'snapshot' version identifiers. - Include `l3backend` in file names - Moved backend code to internal for each 'parent' module -[Unreleased]: https://github.com/latex3/latex3/compare/2024-03-14...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-04-11...HEAD +[2024-04-11]: https://github.com/latex3/latex3/compare/2024-03-14...2024-04-11 [2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14 [2024-02-20]: https://github.com/latex3/latex3/compare/2024-01-04...2024-02-20 [2024-01-04]: https://github.com/latex3/latex3/compare/2023-11-09...2024-01-04 diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/required/l3backend/README.md index 7be33df8b8..058fa63cc2 100644 --- a/macros/latex/contrib/l3backend/README.md +++ b/macros/latex/required/l3backend/README.md @@ -1,7 +1,7 @@ LaTeX3 Backend Drivers ====================== -Release 2024-03-14 +Release 2024-04-11 This package forms parts of `expl3`, and contains the code used to interface with backends (drivers) across the `expl3` codebase. The functions here are diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/required/l3backend/l3backend-basics.dtx index 4d3b68225a..fbac503317 100644 --- a/macros/latex/contrib/l3backend/l3backend-basics.dtx +++ b/macros/latex/required/l3backend/l3backend-basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -70,27 +70,27 @@ % \begin{macrocode} \ProvidesExplFile %<*dvipdfmx> - {l3backend-dvipdfmx.def}{2024-03-14}{} + {l3backend-dvipdfmx.def}{2024-04-11}{} {L3 backend support: dvipdfmx} %</dvipdfmx> %<*dvips> - {l3backend-dvips.def}{2024-03-14}{} + {l3backend-dvips.def}{2024-04-11}{} {L3 backend support: dvips} %</dvips> %<*dvisvgm> - {l3backend-dvisvgm.def}{2024-03-14}{} + {l3backend-dvisvgm.def}{2024-04-11}{} {L3 backend support: dvisvgm} %</dvisvgm> %<*luatex> - {l3backend-luatex.def}{2024-03-14}{} + {l3backend-luatex.def}{2024-04-11}{} {L3 backend support: PDF output (LuaTeX)} %</luatex> %<*pdftex> - {l3backend-pdftex.def}{2024-03-14}{} + {l3backend-pdftex.def}{2024-04-11}{} {L3 backend support: PDF output (pdfTeX)} %</pdftex> %<*xetex> - {l3backend-xetex.def}{2024-03-14}{} + {l3backend-xetex.def}{2024-04-11}{} {L3 backend support: XeTeX} %</xetex> % \end{macrocode} diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/required/l3backend/l3backend-box.dtx index 3fc3243c42..93d83293ef 100644 --- a/macros/latex/contrib/l3backend/l3backend-box.dtx +++ b/macros/latex/required/l3backend/l3backend-box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/required/l3backend/l3backend-code.pdf Binary files differindex 9affc7d856..d298479c42 100644 --- a/macros/latex/contrib/l3backend/l3backend-code.pdf +++ b/macros/latex/required/l3backend/l3backend-code.pdf diff --git a/macros/latex/contrib/l3backend/l3backend-code.tex b/macros/latex/required/l3backend/l3backend-code.tex index df0dd0ea8c..df0dd0ea8c 100644 --- a/macros/latex/contrib/l3backend/l3backend-code.tex +++ b/macros/latex/required/l3backend/l3backend-code.tex diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/required/l3backend/l3backend-color.dtx index eaa89add8c..307432d554 100644 --- a/macros/latex/contrib/l3backend/l3backend-color.dtx +++ b/macros/latex/required/l3backend/l3backend-color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/required/l3backend/l3backend-draw.dtx index eef86886f5..c651ab92fe 100644 --- a/macros/latex/contrib/l3backend/l3backend-draw.dtx +++ b/macros/latex/required/l3backend/l3backend-draw.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/required/l3backend/l3backend-graphics.dtx index 9360bffd2e..e20457368d 100644 --- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx +++ b/macros/latex/required/l3backend/l3backend-graphics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/required/l3backend/l3backend-header.dtx index 84f8ab53b7..486f564822 100644 --- a/macros/latex/contrib/l3backend/l3backend-header.dtx +++ b/macros/latex/required/l3backend/l3backend-header.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/required/l3backend/l3backend-opacity.dtx index a5828bfd90..0c29574c37 100644 --- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx +++ b/macros/latex/required/l3backend/l3backend-opacity.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/required/l3backend/l3backend-pdf.dtx index 0a16a79f9e..cf09c0eec2 100644 --- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx +++ b/macros/latex/required/l3backend/l3backend-pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -113,25 +113,13 @@ % % \subsubsection{Objects} % -% \begin{variable}{\g_@@_backend_object_int} -% For tracking objects. +% \begin{macro}{\@@_backend_object_new:} +% \begin{macro}[EXP]{\@@_backend_object_ref:n, \@@_backend_object_id:n} % \begin{macrocode} -\int_new:N \g_@@_backend_object_int -% \end{macrocode} -% \end{variable} -% -% \begin{macro}{\@@_backend_object_new:n} -% \begin{macro}[EXP]{\@@_backend_object_ref:n} -% \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:n #1 - { - \int_gincr:N \g_@@_backend_object_int - \int_const:cn - { c_@@_object_ \tl_to_str:n {#1} _int } - { \g_@@_backend_object_int } - } -\cs_new:Npn \@@_backend_object_ref:n #1 - { { pdf.obj \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } } } +\cs_new_protected:Npn \@@_backend_object_new: + { \int_gincr:N \g_@@_backend_object_int } +\cs_new:Npn \@@_backend_object_ref:n #1 { { pdf.obj #1 } } +\cs_new_eq:NN \@@_backend_object_id:n \@@_backend_object_ref:n % \end{macrocode} % \end{macro} % \end{macro} @@ -958,12 +946,12 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_backend_object_new:n} -% \begin{macro}[EXP]{\@@_backend_object_ref:n} +% \begin{macro}{\@@_backend_object_new:} +% \begin{macro}[EXP]{\@@_backend_object_ref:n, \@@_backend_object_id:n} % Declaring objects means reserving at the PDF level plus starting % tracking. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:n #1 +\cs_new_protected:Npn \@@_backend_object_new: { %<*luatex> \tex_pdfextension:D obj ~ @@ -972,17 +960,16 @@ \tex_pdfobj:D %</pdftex> reserveobjnum ~ - \int_const:cn - { c_@@_object_ \tl_to_str:n {#1} _int } + \int_gset:Nn \g_@@_backend_object_int %<*luatex> - { \tex_pdffeedback:D lastobj } + { \tex_pdffeedback:D lastobj } %</luatex> %<*pdftex> - { \tex_pdflastobj:D } + { \tex_pdflastobj:D } %</pdftex> } -\cs_new:Npn \@@_backend_object_ref:n #1 - { \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\cs_new:Npn \@@_backend_object_ref:n #1 { #1 ~ 0 ~ R } +\cs_new:Npn \@@_backend_object_id:n #1 {#1} % \end{macrocode} % \end{macro} % \end{macro} @@ -1001,28 +988,26 @@ %<*pdftex> \tex_immediate:D \tex_pdfobj:D %</pdftex> - useobjnum ~ - \int_use:c - { c_@@_object_ \tl_to_str:n {#1} _int } - \@@_backend_object_write:nn {#2} {#3} + useobjnum ~ #1 + \@@_backend_object_write:nn {#2} {#3} } \cs_new:Npn \@@_backend_object_write:nn #1#2 { - \str_case:nn {#1} - { - { array } { { [ ~ \exp_not:n {#2} ~ ] } } - { dict } { { << ~ \exp_not:n {#2} ~ >> } } - { fstream } - { - stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~ - file ~ { \@@_exp_not_ii:nn #2 } - } - { stream } - { - stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~ - { \@@_exp_not_ii:nn #2 } - } - } + \str_case:nn {#1} + { + { array } { { [ ~ \exp_not:n {#2} ~ ] } } + { dict } { { << ~ \exp_not:n {#2} ~ >> } } + { fstream } + { + stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~ + file ~ { \@@_exp_not_ii:nn #2 } + } + { stream } + { + stream ~ attr ~ { \@@_exp_not_i:nn #2 } ~ + { \@@_exp_not_ii:nn #2 } + } + } } \cs_generate_variant:Nn \@@_backend_object_write:nnn { nne } \cs_new:Npn \@@_exp_not_i:nn #1#2 { \exp_not:n {#1} } @@ -1235,28 +1220,22 @@ % % \subsubsection{Objects} % -% \begin{variable}{\g_@@_backend_object_int, \g_@@_backend_object_prop} +% \begin{variable}{\g_@@_backend_object_prop} % For tracking objects to allow finalisation. % \begin{macrocode} -\int_new:N \g_@@_backend_object_int \prop_new:N \g_@@_backend_object_prop % \end{macrocode} % \end{variable} % -% \begin{macro}{\@@_backend_object_new:n} -% \begin{macro}[EXP]{\@@_backend_object_ref:n} +% \begin{macro}{\@@_backend_object_new:} +% \begin{macro}[EXP]{\@@_backend_object_ref:n, \@@_backend_object_id:n} % Objects are tracked at the macro level, but we don't have to do anything % at this stage. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:n #1 - { - \int_gincr:N \g_@@_backend_object_int - \int_const:cn - { c_@@_object_ \tl_to_str:n {#1} _int } - { \g_@@_backend_object_int } - } -\cs_new:Npn \@@_backend_object_ref:n #1 - { @pdf.obj \int_use:c { c_@@_object_ \tl_to_str:n {#1} _int } } +\cs_new_protected:Npn \@@_backend_object_new: + { \int_gincr:N \g_@@_backend_object_int } +\cs_new:Npn \@@_backend_object_ref:n #1 { @pdf.obj #1 } +\cs_new_eq:NN \@@_backend_object_id:n \@@_backend_object_ref:n % \end{macrocode} % \end{macro} % \end{macro} @@ -1627,16 +1606,17 @@ % % \subsubsection{Objects} % -% \begin{macro}{\@@_backend_object_new:n} -% \begin{macro}[EXP]{\@@_backend_object_ref:n} +% \begin{macro}{\@@_backend_object_new:} +% \begin{macro}[EXP]{\@@_backend_object_ref:n, \@@_backend_object_id:n} % \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:ne} % \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:ne} % \begin{macro}{\@@_backend_object_last:} % \begin{macro}[EXP]{\@@_backend_pageobject_ref:n} % All no-ops here. % \begin{macrocode} -\cs_new_protected:Npn \@@_backend_object_new:nn #1 { } +\cs_new_protected:Npn \@@_backend_object_new: { } \cs_new:Npn \@@_backend_object_ref:n #1 { } +\cs_new:Npn \@@_backend_object_id:n #1 { } \cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 { } \cs_new_protected:Npn \@@_backend_object_write:nne #1#2#3 { } \cs_new_protected:Npn \@@_backend_object_now:nn #1#2 { } diff --git a/macros/latex/contrib/l3backend/l3backend.ins b/macros/latex/required/l3backend/l3backend.ins index e24c41d236..e24c41d236 100644 --- a/macros/latex/contrib/l3backend/l3backend.ins +++ b/macros/latex/required/l3backend/l3backend.ins diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/required/l3kernel/CHANGELOG.md index 9c8c4d506c..e770f3fe36 100644 --- a/macros/latex/contrib/l3kernel/CHANGELOG.md +++ b/macros/latex/required/l3kernel/CHANGELOG.md @@ -7,6 +7,30 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-04-11] + +### Added +- `\prop_(g)put_if_not_in:Nnn` (renamed from `\prop_(g)put_if_new:Nnn`) +- `\intarray_if_exist:N(TF)` +- `\fparray_if_exist:N(TF)` +- Support for 'indexed' PDF objects + +### Changed +- Expand object names in `\pdf_object_...` functions (issue \#1521) +- Adapt `l3doc` for `ltcmd` change to handling of newlines + (see latex3/latex2e\#1304) +- Return active spaces from `\sys_get_query:n(nn)N` (issue \#1529) + +### Fixed +- False `debug` error raised by `\cctab_const:Nn` (issue \#1508) +- Undefined `\__kernel_iwo_open:Nn` used in `\iow_shell_open:Nn` + (issue \#1515) +- Naming of register functions in LuaMetaTeX 2.11+ (issue \#1518) +- Catcode applied to letters by `\sys_get_query:n(nn)N` + +### Deprecated +- `\prop_(g)put_if_new:Nnn` (renamed to `\prop_(g)put_if_not_in:Nnn`) + ## [2024-03-14] ### Added @@ -20,6 +44,7 @@ this project uses date-based 'snapshot' version identifiers. ### Fixed - Typeset `TF` of internal conditionals in current color (issue \#730) - Some functions and variables were defined locally + ## [2024-02-20] ### Changed @@ -1700,7 +1725,8 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2024-03-14...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2024-04-11...HEAD +[2024-04-11]: https://github.com/latex3/latex3/compare/2024-03-14...2024-04-11 [2024-03-14]: https://github.com/latex3/latex3/compare/2024-02-20...2024-03-14 [2024-02-20]: https://github.com/latex3/latex3/compare/2024-02-18...2024-02-20 [2024-02-18]: https://github.com/latex3/latex3/compare/2024-02-13...2024-02-18 diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/required/l3kernel/README.md index 8ef94a41ac..70d106b496 100644 --- a/macros/latex/contrib/l3kernel/README.md +++ b/macros/latex/required/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2024-03-14 +Release 2024-04-11 Overview -------- diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/required/l3kernel/expl3.dtx index 76ef8ec919..56a62010fa 100644 --- a/macros/latex/contrib/l3kernel/expl3.dtx +++ b/macros/latex/required/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2024-03-14}% +\def\ExplFileDate{2024-04-11}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/required/l3kernel/expl3.pdf Binary files differindex b36343153a..56a734d6bf 100644 --- a/macros/latex/contrib/l3kernel/expl3.pdf +++ b/macros/latex/required/l3kernel/expl3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/required/l3kernel/interface3.pdf Binary files differindex 1df60adf1a..bf177baf39 100644 --- a/macros/latex/contrib/l3kernel/interface3.pdf +++ b/macros/latex/required/l3kernel/interface3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/required/l3kernel/interface3.tex index ff8114028e..1bf31032ee 100644 --- a/macros/latex/contrib/l3kernel/interface3.tex +++ b/macros/latex/required/l3kernel/interface3.tex @@ -58,7 +58,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-03-14} +\date{Released 2024-04-11} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/required/l3kernel/l3.ins index 2940230505..bf7a75381d 100644 --- a/macros/latex/contrib/l3kernel/l3.ins +++ b/macros/latex/required/l3kernel/l3.ins @@ -105,7 +105,7 @@ and all files in that bundle must be distributed together. \from{l3regex.dtx} {package} \from{l3box.dtx} {package} \from{l3color.dtx} {package} - \from{l3pdf.dtx} {package} + \from{l3pdf.dtx} {package,tex} \from{l3coffins.dtx} {package} \from{l3luatex.dtx} {package,tex} \from{l3unicode.dtx} {package} @@ -176,6 +176,7 @@ and all files in that bundle must be distributed together. \from{l3sys.dtx}{package,lua} \from{l3token.dtx}{package,lua} \from{l3intarray.dtx}{package,lua} + \from{l3pdf.dtx}{package,lua} }} \endbatchfile diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/required/l3kernel/l3basics.dtx index 66e999fe62..eabf678caa 100644 --- a/macros/latex/contrib/l3kernel/l3basics.dtx +++ b/macros/latex/required/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -1340,8 +1340,9 @@ % only locally/globally assigned; % \item \texttt{check-expressions} that checks integer, dimension, % skip, and muskip expressions are not terminated prematurely; -% \item \texttt{deprecation} that makes soon-to-be-deprecated commands produce errors; -% \item \texttt{log-functions} that logs function definitions; +% \item \texttt{deprecation} that makes deprecated commands produce errors; +% \item \texttt{log-functions} that logs function definitions and +% variable declarations; % \item \texttt{all} that does all of the above. % \end{itemize} % Providing these as switches rather than options allows testing code @@ -1355,10 +1356,10 @@ % \cs{debug_suspend:} \ldots{} \cs{debug_resume:} % \end{syntax} % Suppress (locally) errors and logging from \texttt{debug} commands, -% except for the \texttt{deprecation} errors or warnings. These pairs +% except for the \texttt{deprecation} errors. These pairs % of commands can be nested. This can be used around pieces of code % that are known to fail checks, if such failures should be ignored. -% See for instance \pkg{l3coffins}. +% See for instance \pkg{l3cctab} and \pkg{l3coffins}. % \end{function} % % \end{documentation} @@ -1871,9 +1872,8 @@ % % \begin{macro}{\__kernel_deprecation_code:nn} % \begin{variable}{\g_@@_deprecation_on_tl, \g_@@_deprecation_off_tl} -% Some commands were more recently deprecated and not yet removed; -% only make these into errors if the user requests it. This relies on -% two token lists, filled up in \pkg{l3deprecation}. +% Make deprecated commands throw errors if the user requests it. +% This relies on two token lists, filled up in \pkg{l3deprecation}. % \begin{macrocode} \cs_gset_nopar:Npn \g_@@_deprecation_on_tl { } \cs_gset_nopar:Npn \g_@@_deprecation_off_tl { } diff --git a/macros/latex/contrib/l3kernel/l3bitset.dtx b/macros/latex/required/l3kernel/l3bitset.dtx index 3100c28463..b0bd996d26 100644 --- a/macros/latex/contrib/l3kernel/l3bitset.dtx +++ b/macros/latex/required/l3kernel/l3bitset.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/required/l3kernel/l3bootstrap.dtx index 5ff0c2e68d..2c51bf3bb0 100644 --- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx +++ b/macros/latex/required/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/required/l3kernel/l3box.dtx index 08463db56d..2d4902950f 100644 --- a/macros/latex/contrib/l3kernel/l3box.dtx +++ b/macros/latex/required/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/required/l3kernel/l3cctab.dtx index 5cdaa3dc92..dd35fb00a3 100644 --- a/macros/latex/contrib/l3kernel/l3cctab.dtx +++ b/macros/latex/required/l3kernel/l3cctab.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -286,15 +286,23 @@ % \end{macrocode} % Now the case for other engines. Here, each table is an integer % array. Following the \LuaTeX{} pattern, a new table starts with -% \IniTeX{} codes. The index base is out-by-one, so we have an +% \IniTeX{} codes. The \cs{debug_suspend:} and \cs{debug_resume:} +% functions prevent errors and logging from \texttt{debug} commands +% which are either duplicate or false when \cs{@@_new:N} is used +% by \cs{cctab_new:N} or \cs{cctab_const:Nn}. +% The index base is out-by-one, so we have an % internal function to handle that. The \IniTeX{} \tn{endlinechar} is % $13$. % \begin{macrocode} { \cs_new_protected:Npn \@@_new:N #1 - { \intarray_new:Nn #1 { 257 } } + { + \debug_suspend: + \intarray_new:Nn #1 { 257 } + \debug_resume: + } \cs_new_protected:Npn \@@_gstore:Nnn #1#2#3 - { \intarray_gset:Nnn #1 { \int_eval:n { #2 + 1 } } {#3} } + { \intarray_gset:Nnn #1 { #2 + 1 } {#3} } \cs_new_protected:Npn \cctab_new:N #1 { \__kernel_chk_if_free_cs:N #1 @@ -796,13 +804,22 @@ % \subsection{Constant category code tables} % % \begin{macro}{\cctab_const:Nn,\cctab_const:cn} -% Creates a new \meta{cctab~var} then sets it with the current and -% user-supplied codes. +% Creates a new \meta{cctab~var} then sets it with the \IniTeX{} and +% user-supplied codes. To avoid false \texttt{debug} errors, we write +% out implementation of \cs{cctab_new:N} and \cs{cctab_gset:Nn} +% instead of directly using them here. The initialization part in +% \cs{cctab_new:N} in non-\LuaTeX{} is omitted as it's covered by +% the \IniTeX{} settings. % \begin{macrocode} \cs_new_protected:Npn \cctab_const:Nn #1#2 { - \cctab_new:N #1 - \cctab_gset:Nn #1 {#2} + \__kernel_chk_if_free_cs:N #1 + \@@_new:N #1 + \group_begin: + \cctab_select:N \c_initex_cctab + #2 \scan_stop: + \@@_gset:n {#1} + \group_end: } \cs_generate_variant:Nn \cctab_const:Nn { c } % \end{macrocode} diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/required/l3kernel/l3clist.dtx index ad65a4b174..c67f70db2c 100644 --- a/macros/latex/contrib/l3kernel/l3clist.dtx +++ b/macros/latex/required/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/required/l3kernel/l3coffins.dtx index ad41224aa0..164d10019d 100644 --- a/macros/latex/contrib/l3kernel/l3coffins.dtx +++ b/macros/latex/required/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/required/l3kernel/l3color.dtx index 514ff326a4..0edc225c52 100644 --- a/macros/latex/contrib/l3kernel/l3color.dtx +++ b/macros/latex/required/l3kernel/l3color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/required/l3kernel/l3debug.dtx index 6654b6d4cd..6dbe13f96e 100644 --- a/macros/latex/contrib/l3kernel/l3debug.dtx +++ b/macros/latex/required/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -69,7 +69,7 @@ % % Standard file identification. % \begin{macrocode} -\ProvidesExplFile{l3debug.def}{2024-03-14}{}{L3 Debugging support} +\ProvidesExplFile{l3debug.def}{2024-04-11}{}{L3 Debugging support} % \end{macrocode} % % \begin{variable}{\s_@@_stop} @@ -389,10 +389,9 @@ % \end{macro} % % \begin{macro}{\@@_deprecation_on:, \@@_deprecation_off:} -% Some commands were more recently deprecated and not yet removed; -% only make these into errors if the user requests it. This relies on -% two token lists, filled up in \pkg{l3deprecation} by calls to -% \cs{__kernel_deprecation_code:nn}. +% Make deprecated commands throw errors if the user requests it. +% This relies on two token lists, filled up in \pkg{l3deprecation} by +% calls to \cs{__kernel_deprecation_code:nn}. % \begin{macrocode} \cs_new_protected:Npn \@@_deprecation_on: { \g_@@_deprecation_on_tl } @@ -781,7 +780,7 @@ \prop_pop:NnNF \prop_pop:NnNTF \prop_put:Nnn - \prop_put_if_new:Nnn + \prop_put_if_not_in:Nnn \prop_put_from_keyval:Nn \prop_remove:Nn \prop_set_eq:NN @@ -862,7 +861,7 @@ \prop_gpop:NnNF \prop_gpop:NnNTF \prop_gput:Nnn - \prop_gput_if_new:Nnn + \prop_gput_if_not_in:Nnn \prop_gput_from_keyval:Nn \prop_gremove:Nn \prop_gset_eq:NN diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/required/l3kernel/l3deprecation.dtx index 3906c6786e..7af8700df7 100644 --- a/macros/latex/contrib/l3kernel/l3deprecation.dtx +++ b/macros/latex/required/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -51,8 +51,10 @@ % % \section{\pkg{l3deprecation} documentation} % -% A few commands have had to be deprecated over the years. This module -% defines deprecated and deleted commands to produce an error. +% A few commands have had to be deprecated over the years. +% All commands deprecated before release 2022-01-12 were already +% removed; commands deprecated since then will no longer be removed. +% Instead, this module defines them to produce errors. % % \end{documentation} % @@ -74,31 +76,12 @@ % \cs{__kernel_patch_deprecation:nnNNpn} \Arg{date} \Arg{replacement} % \meta{definition} \meta{function} \meta{parameters} \Arg{code} % \end{quote} -% defines the \meta{function} to produce a warning and run its -% \meta{code}, or to produce an error and not run any \meta{code}, -% depending on the \pkg{expl3} date. -% \begin{itemize} -% \item If the \pkg{expl3} date is less than the \meta{date} (plus -% $6$~months in case \texttt{undo-recent-deprecations} is used) then -% we define the \meta{function} to produce a warning and run its code. -% The warning is actually suppressed in two cases: -% \begin{itemize} -% \item if neither \texttt{undo-recent-deprecations} nor -% \texttt{enable-debug} are in effect we may be in an end-user's -% document so it is suppressed; -% \item if the command is expandable then we cannot produce a warning. -% \end{itemize} -% \item Otherwise, we define the \meta{function} to produce an error. -% \end{itemize} -% In both cases we additionally make \cs{debug_on:n} |{deprecation}| -% turn the \meta{function} into an \tn{outer} error, and -% \cs{debug_off:n} |{deprecation}| restore whatever the behaviour was -% without \cs{debug_on:n} |{deprecation}|. -% -% In later sections we use the \pkg{l3doc} key \texttt{deprecated} with -% a date equal to that \meta{date} plus $6$~months, so that \pkg{l3doc} -% will complain if we forget to remove the stale \meta{parameters} and -% \Arg{code}. +% defines the \meta{function} to produce an error and run its +% \meta{code}. +% +% We make \cs{debug_on:n} |{deprecation}| turn the \meta{function} into +% an \tn{outer} error, and \cs{debug_off:n} |{deprecation}| restore +% whatever the behaviour was without \cs{debug_on:n} |{deprecation}|. % % In the explanations below, \meta{definition} \meta{function} % \meta{parameters} \Arg{code} or assignments that only differ in the @@ -183,8 +166,7 @@ % % \begin{macro}{\__kernel_deprecation_error:Nnn} % The \tn{outer} definition here ensures the command cannot appear -% in an argument. Use this auxiliary on all commands that have been -% removed since 2015. +% in an argument. % \begin{macrocode} \cs_new_protected:Npn \__kernel_deprecation_error:Nnn #1#2#3 { @@ -679,6 +661,27 @@ % \end{macrocode} % \end{macro} % +% \subsection{Deprecated \pkg{l3prop} functions} +% +% \begin{macro}[deprecated] +% { +% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV, +% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV, +% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV, +% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV +% } +% \begin{macrocode} +%\__kernel_patch_deprecation:nnNNpn { 2024-03-30 } { \prop_put_if_not_in:Nnn } +\cs_new_protected:Npn \prop_put_if_new:Nnn { \prop_put_if_not_in:Nnn } +%\__kernel_patch_deprecation:nnNNpn { 2024-03-30 } { \prop_gput_if_not_in:Nnn } +\cs_new_protected:Npn \prop_gput_if_new:Nnn { \prop_gput_if_not_in:Nnn } +\cs_generate_variant:Nn \prop_put_if_new:Nnn + { NnV , NV , c , cnV , cV } +\cs_generate_variant:Nn \prop_gput_if_new:Nnn + { NnV , NV , c , cnV , cV } +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} %</package> % \end{macrocode} diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/required/l3kernel/l3doc.dtx index a48a24df23..9156bd385e 100644 --- a/macros/latex/contrib/l3kernel/l3doc.dtx +++ b/macros/latex/required/l3kernel/l3doc.dtx @@ -71,7 +71,7 @@ and all files in that bundle must be distributed together. % This isn't included in the typeset documentation because it's a bit % ugly: %<*class> -\ProvidesExplClass{l3doc}{2024-03-14}{} +\ProvidesExplClass{l3doc}{2024-04-11}{} {L3 Experimental documentation class} %</class> % \fi @@ -84,7 +84,7 @@ and all files in that bundle must be distributed together. % require you to do updates, if the class changes.}} % % \author{\Team} -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % \maketitle % \tableofcontents % @@ -2181,6 +2181,8 @@ and all files in that bundle must be distributed together. { \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^M \c_percent_str } + \tl_remove_all:Ne \l_@@_tmpa_tl + { \token_to_str:N \obeyedline \c_space_tl \c_percent_str } \tl_remove_all:Ne \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } } \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^I } \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^M } diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/required/l3kernel/l3doc.pdf Binary files differindex 2f85329fdc..6ef4101a78 100644 --- a/macros/latex/contrib/l3kernel/l3doc.pdf +++ b/macros/latex/required/l3kernel/l3doc.pdf diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/required/l3kernel/l3docstrip.dtx index c973d593c5..c2733e810e 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.dtx +++ b/macros/latex/required/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/required/l3kernel/l3docstrip.pdf Binary files differindex f2e611b2c9..6ce1fc34e2 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.pdf +++ b/macros/latex/required/l3kernel/l3docstrip.pdf diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/required/l3kernel/l3expan.dtx index 7e507b7598..e79b5f32b9 100644 --- a/macros/latex/contrib/l3kernel/l3expan.dtx +++ b/macros/latex/required/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/required/l3kernel/l3file.dtx index 3a4d1c06dc..6111d270ca 100644 --- a/macros/latex/contrib/l3kernel/l3file.dtx +++ b/macros/latex/required/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -107,7 +107,7 @@ % control sequence for file access. If the \meta{stream} was already % open it is closed before the new operation begins. The % \meta{stream} is available for access immediately and will remain -% allocated to \meta{file name} until a \cs{ior_close:N} instruction +% allocated to \meta{file name} until an \cs{ior_close:N} instruction % is given or the \TeX{} run ends. % If the file is not found, an error is raised. % \end{function} @@ -167,7 +167,7 @@ % control sequence for access. If the \meta{stream} was already % open it is closed before the new operation begins. The % \meta{stream} is available for access immediately and will remain -% allocated to \meta{shell command} until a \cs{iow_close:N} instruction +% allocated to \meta{shell command} until an \cs{iow_close:N} instruction % is given or the \TeX{} run ends. % If piped system calls are disabled an error is raised. % @@ -1679,6 +1679,7 @@ % \end{variable} % % \begin{macro}{\iow_open:Nn, \iow_open:NV, \iow_open:cn, \iow_open:cV} +% \begin{macro}{\__kernel_iow_open:Nn, \__kernel_iow_open:No} % \begin{macro}{\@@_open_stream:Nn, \@@_open_stream:NV} % The same idea as for reading, but without the path and without the need % to allow for a conditional version. @@ -1687,16 +1688,21 @@ { \__kernel_tl_set:Nx \l_@@_file_name_tl { \__kernel_file_name_sanitize:n {#2} } + \__kernel_iow_open:No #1 \l_@@_file_name_tl + } +\cs_generate_variant:Nn \iow_open:Nn { NV , c , cV } +\cs_new_protected:Npn \__kernel_iow_open:Nn #1#2 + { \iow_close:N #1 \seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl - { \@@_open_stream:NV #1 \l_@@_file_name_tl } + { \@@_open_stream:Nn #1 {#2} } { \@@_new:N #1 \__kernel_tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} } - \@@_open_stream:NV #1 \l_@@_file_name_tl + \@@_open_stream:Nn #1 {#2} } } -\cs_generate_variant:Nn \iow_open:Nn { NV , c , cV } +\cs_generate_variant:Nn \__kernel_iow_open:Nn { No } \cs_new_protected:Npn \@@_open_stream:Nn #1#2 { \tex_global:D \tex_chardef:D #1 = \l_@@_stream_tl \scan_stop: @@ -1708,6 +1714,7 @@ % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\iow_shell_open:Nn} % \begin{macro}{\@@_shell_open:nN, \@@_shell_open:oN} diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/required/l3kernel/l3flag.dtx index 40614c7348..c3bd4a5085 100644 --- a/macros/latex/contrib/l3kernel/l3flag.dtx +++ b/macros/latex/required/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/required/l3kernel/l3fp-assign.dtx index 6d00047e4d..d54f092085 100644 --- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx +++ b/macros/latex/required/l3kernel/l3fp-assign.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/required/l3kernel/l3fp-aux.dtx index 1f4ea5d34d..c9d0c228f5 100644 --- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx +++ b/macros/latex/required/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/required/l3kernel/l3fp-basics.dtx index a7401407cd..d3dcb68dde 100644 --- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx +++ b/macros/latex/required/l3kernel/l3fp-basics.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/required/l3kernel/l3fp-convert.dtx index 0459331326..a0536c1299 100644 --- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx +++ b/macros/latex/required/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/required/l3kernel/l3fp-expo.dtx index 5b5f947c38..6fbc9de52c 100644 --- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx +++ b/macros/latex/required/l3kernel/l3fp-expo.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/required/l3kernel/l3fp-extended.dtx index bcd16a4b68..356c32b232 100644 --- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx +++ b/macros/latex/required/l3kernel/l3fp-extended.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-functions.dtx b/macros/latex/required/l3kernel/l3fp-functions.dtx index b26d8e7f26..f6c9ec346f 100644 --- a/macros/latex/contrib/l3kernel/l3fp-functions.dtx +++ b/macros/latex/required/l3kernel/l3fp-functions.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/required/l3kernel/l3fp-logic.dtx index c95704085c..9df6a4730a 100644 --- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx +++ b/macros/latex/required/l3kernel/l3fp-logic.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/required/l3kernel/l3fp-parse.dtx index 53b85a7cc8..ee2eedbc22 100644 --- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx +++ b/macros/latex/required/l3kernel/l3fp-parse.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/required/l3kernel/l3fp-random.dtx index cdbdf38ee1..ce5a0c48f7 100644 --- a/macros/latex/contrib/l3kernel/l3fp-random.dtx +++ b/macros/latex/required/l3kernel/l3fp-random.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/required/l3kernel/l3fp-round.dtx index bddb146be7..48ae82730c 100644 --- a/macros/latex/contrib/l3kernel/l3fp-round.dtx +++ b/macros/latex/required/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx b/macros/latex/required/l3kernel/l3fp-symbolic.dtx index 26a084733d..901ce7a27c 100644 --- a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx +++ b/macros/latex/required/l3kernel/l3fp-symbolic.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/required/l3kernel/l3fp-traps.dtx index e1a3dd89a0..5a4a3b41f9 100644 --- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx +++ b/macros/latex/required/l3kernel/l3fp-traps.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % \maketitle % % \begin{documentation} diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/required/l3kernel/l3fp-trig.dtx index 21cefc166c..d8585ebe66 100644 --- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx +++ b/macros/latex/required/l3kernel/l3fp-trig.dtx @@ -42,7 +42,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-types.dtx b/macros/latex/required/l3kernel/l3fp-types.dtx index 0d589c9549..2c23c61393 100644 --- a/macros/latex/contrib/l3kernel/l3fp-types.dtx +++ b/macros/latex/required/l3kernel/l3fp-types.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/required/l3kernel/l3fp.dtx index 11dbcdceef..7cef573970 100644 --- a/macros/latex/contrib/l3kernel/l3fp.dtx +++ b/macros/latex/required/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/required/l3kernel/l3fparray.dtx index 1517840431..24f4ac85f8 100644 --- a/macros/latex/contrib/l3kernel/l3fparray.dtx +++ b/macros/latex/required/l3kernel/l3fparray.dtx @@ -44,20 +44,20 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % % \begin{documentation} % -% \section{\pkg{l3fparray} documentation} -% % For applications requiring heavy use of floating points, this module % provides arrays which can be accessed in constant time (contrast % \pkg{l3seq}, where access time is linear). The interface is very % close to that of \pkg{l3intarray}. The size of the array is fixed and % must be given at point of initialisation % +% \section{Creating and initialising floating point array variables} +% % \begin{function}[added = 2018-05-05]{\fparray_new:Nn, \fparray_new:cn} % \begin{syntax} % \cs{fparray_new:Nn} \meta{fparray~var} \Arg{size} @@ -68,14 +68,16 @@ % assignments are always global. % \end{function} % -% \begin{function}[EXP, added = 2018-05-05]{\fparray_count:N, \fparray_count:c} +% \begin{function}[added = 2018-05-05]{\fparray_gzero:N, \fparray_gzero:c} % \begin{syntax} -% \cs{fparray_count:N} \meta{fparray~var} +% \cs{fparray_gzero:N} \meta{fparray~var} % \end{syntax} -% Expands to the number of entries in the \meta{floating point array -% variable}. This is performed in constant time. +% Sets all entries of the \meta{floating point array variable} to +% $+0$. Assignments are always global. % \end{function} % +% \section{Adding data to floating point arrays} +% % \begin{function}[added = 2018-05-05]{\fparray_gset:Nnn, \fparray_gset:cnn} % \begin{syntax} % \cs{fparray_gset:Nnn} \meta{fparray~var} \Arg{position} \Arg{value} @@ -87,17 +89,21 @@ % Assignments are always global. % \end{function} % -% \begin{function}[added = 2018-05-05]{\fparray_gzero:N, \fparray_gzero:c} +% \section{Couting entries in floating point arrays} +% +% \begin{function}[EXP, added = 2018-05-05]{\fparray_count:N, \fparray_count:c} % \begin{syntax} -% \cs{fparray_gzero:N} \meta{fparray~var} +% \cs{fparray_count:N} \meta{fparray~var} % \end{syntax} -% Sets all entries of the \meta{floating point array variable} to -% $+0$. Assignments are always global. +% Expands to the number of entries in the \meta{floating point array +% variable}. This is performed in constant time. % \end{function} % +% \section{Using a single entry} +% % \begin{function}[EXP, added = 2018-05-05] % { -% \fparray_item:Nn, \fparray_item:cn +% \fparray_item:Nn, \fparray_item:cn, % \fparray_item_to_tl:Nn, \fparray_item_to_tl:cn % } % \begin{syntax} @@ -106,8 +112,21 @@ % Applies \cs{fp_use:N} or \cs{fp_to_tl:N} (respectively) to the % floating point entry stored at the (integer expression) % \meta{position} in the \meta{floating point array variable}. If the -% \meta{position} is not between $1$ and the \cs{fparray_count:N}, an -% error occurs. +% \meta{position} is not between $1$ and the +% \cs{fparray_count:N} \meta{fparray~var}, an error occurs. +% \end{function} +% +% \section{Floating point array conditional} +% +% \begin{function}[pTF, added = 2024-03-31] +% {\fparray_if_exist:N, \fparray_if_exist:c} +% \begin{syntax} +% \cs{fparray_if_exist_p:N} \meta{fparray~var} +% \cs{fparray_if_exist:NTF} \meta{fparray~var} \Arg{true code} \Arg{false code} +% \end{syntax} +% Tests whether the \meta{fparray~var} is currently defined. This +% does not check that the \meta{fparray~var} really is a floating +% point array variable. % \end{function} % % \end{documentation} @@ -389,6 +408,16 @@ % \end{macro} % \end{macro} % +% \begin{macro}[pTF]{\fparray_if_exist:N, \fparray_if_exist:c} +% Copies of the \texttt{cs} functions defined in \pkg{l3basics}. +% \begin{macrocode} +\prg_new_eq_conditional:NNn \fparray_if_exist:N \cs_if_exist:N + { TF , T , F , p } +\prg_new_eq_conditional:NNn \fparray_if_exist:c \cs_if_exist:c + { TF , T , F , p } +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} %</package> % \end{macrocode} diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/required/l3kernel/l3int.dtx index 9fa2a547ff..a1c9458436 100644 --- a/macros/latex/contrib/l3kernel/l3int.dtx +++ b/macros/latex/required/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/required/l3kernel/l3intarray.dtx index 5704a2ab75..bbc41c0cdb 100644 --- a/macros/latex/contrib/l3kernel/l3intarray.dtx +++ b/macros/latex/required/l3kernel/l3intarray.dtx @@ -44,14 +44,12 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % % \begin{documentation} % -% \section{\pkg{l3intarray} documentation} -% % For applications requiring heavy use of integers, this module provides % arrays which can be accessed in constant time (contrast \pkg{l3seq}, % where access time is linear). These arrays have several important @@ -66,6 +64,8 @@ % The use of \texttt{intarray} data is therefore recommended for cases where % the need for fast access is of paramount importance. % +% \section{Creating and initialising integer array variables} +% % \begin{function}[added = 2018-03-29]{\intarray_new:Nn, \intarray_new:cn} % \begin{syntax} % \cs{intarray_new:Nn} \meta{intarray~var} \Arg{size} @@ -76,14 +76,27 @@ % always global. % \end{function} % -% \begin{function}[EXP, added = 2018-03-29]{\intarray_count:N, \intarray_count:c} +% \begin{function}[added = 2018-05-04] +% {\intarray_const_from_clist:Nn, \intarray_const_from_clist:cn} % \begin{syntax} -% \cs{intarray_count:N} \meta{intarray~var} +% \cs{intarray_const_from_clist:Nn} \meta{intarray~var} \meta{int expr clist} % \end{syntax} -% Expands to the number of entries in the \meta{integer array variable}. -% Contrarily to \cs{seq_count:N} this is performed in constant time. +% Creates a new constant \meta{integer array variable} or raises an +% error if the name is already taken. The \meta{integer array +% variable} is set (globally) to contain as its items the results of +% evaluating each \meta{integer expression} in the \meta{comma list}. % \end{function} % +% \begin{function}[added = 2018-05-04]{\intarray_gzero:N, \intarray_gzero:c} +% \begin{syntax} +% \cs{intarray_gzero:N} \meta{intarray~var} +% \end{syntax} +% Sets all entries of the \meta{integer array variable} to zero. +% Assignments are always global. +% \end{function} +% +% \section{Adding data to integer arrays} +% % \begin{function}[added = 2018-03-29]{\intarray_gset:Nnn, \intarray_gset:cnn} % \begin{syntax} % \cs{intarray_gset:Nnn} \meta{intarray~var} \Arg{position} \Arg{value} @@ -96,25 +109,18 @@ % global. % \end{function} % -% \begin{function}[added = 2018-05-04] -% {\intarray_const_from_clist:Nn, \intarray_const_from_clist:cn} -% \begin{syntax} -% \cs{intarray_const_from_clist:Nn} \meta{intarray~var} \meta{int expr clist} -% \end{syntax} -% Creates a new constant \meta{integer array variable} or raises an -% error if the name is already taken. The \meta{integer array -% variable} is set (globally) to contain as its items the results of -% evaluating each \meta{integer expression} in the \meta{comma list}. -% \end{function} +% \section{Couting entries in integer arrays} % -% \begin{function}[added = 2018-05-04]{\intarray_gzero:N, \intarray_gzero:c} +% \begin{function}[EXP, added = 2018-03-29]{\intarray_count:N, \intarray_count:c} % \begin{syntax} -% \cs{intarray_gzero:N} \meta{intarray~var} +% \cs{intarray_count:N} \meta{intarray~var} % \end{syntax} -% Sets all entries of the \meta{integer array variable} to zero. -% Assignments are always global. +% Expands to the number of entries in the \meta{integer array variable}. +% Contrarily to \cs{seq_count:N} this is performed in constant time. % \end{function} % +% \section{Using a single entry} +% % \begin{function}[EXP, added = 2018-03-29]{\intarray_item:Nn, \intarray_item:cn} % \begin{syntax} % \cs{intarray_item:Nn} \meta{intarray~var} \Arg{position} @@ -134,6 +140,21 @@ % \meta{integer array} is empty, produce an error. % \end{function} % +% \section{Integer array conditional} +% +% \begin{function}[pTF, added = 2024-03-31] +% {\intarray_if_exist:N, \intarray_if_exist:c} +% \begin{syntax} +% \cs{intarray_if_exist_p:N} \meta{intarray~var} +% \cs{intarray_if_exist:NTF} \meta{intarray~var} \Arg{true code} \Arg{false code} +% \end{syntax} +% Tests whether the \meta{intarray~var} is currently defined. This +% does not check that the \meta{intarray~var} really is an integer +% array variable. +% \end{function} +% +% \section{Viewing integer arrays} +% % \begin{function}[added = 2018-05-04] % {\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c} % \begin{syntax} @@ -144,7 +165,7 @@ % terminal or writes them in the log file. % \end{function} % -% \subsection{Implementation notes} +% \section{Implementation notes} % % It is a wrapper around the \tn{fontdimen} primitive, used to store % arrays of integers (with a restricted range: absolute value at most @@ -912,6 +933,16 @@ luacmd('@@_gset_range:w', function() % % \subsection{Common parts} % +% \begin{macro}[pTF]{\intarray_if_exist:N, \intarray_if_exist:c} +% Copies of the \texttt{cs} functions defined in \pkg{l3basics}. +% \begin{macrocode} +\prg_new_eq_conditional:NNn \intarray_if_exist:N \cs_if_exist:N + { TF , T , F , p } +\prg_new_eq_conditional:NNn \intarray_if_exist:c \cs_if_exist:c + { TF , T , F , p } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c} % Convert the list to a comma list (with spaces after each comma) % \begin{macrocode} diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/required/l3kernel/l3kernel-functions.dtx index 480425d730..1706bb594a 100644 --- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/required/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -333,7 +333,21 @@ % higher-level % functions which have already fully expanded the \meta{file name} and which % need to perform multiple open or close operations. See for example the -% implementation of \cs{file_get_full_name:nN}, +% implementation of \cs{ior_shell_open:Nn}. +% \end{function} +% +% \begin{function}{\__kernel_iow_open:Nn, \__kernel_iow_open:No} +% \begin{syntax} +% \cs{__kernel_iow_open:Nn} \meta{stream} \Arg{file name} +% \end{syntax} +% This function has identical syntax to the public version. However, +% is does not take precautions against active characters in the +% \meta{file name}, and it does not attempt to add a \meta{path} to +% the \meta{file name}: it is therefore intended to be used by +% higher-level +% functions which have already fully expanded the \meta{file name} and which +% need to perform multiple open or close operations. See for example the +% implementation of \cs{iow_shell_open:Nn}. % \end{function} % % \begin{function}{\__kernel_iow_with:Nnn} @@ -367,6 +381,17 @@ % |1+2| then this logs |> 1+2=3.| % \end{function} % +% \begin{function}[EXP]{\__kernel_pdf_object_id:n, \__kernel_pdf_object_id_indexed:nn} +% \begin{syntax} +% \cs{__kernel_pdf_object_id:n} \Arg{object} +% \cs{__kernel_pdf_object_id_indexed:nn} \Arg{class} \Arg{number} +% \end{syntax} +% Expands to the ID of \meta{object} (or object of \meta{number} within +% the \meta{class}), in for example page resource allocation. Depending on +% the backend, the result may be the same as +% \cs{pdf_object_id:n}/\cs{pdf_object_id_indexed:nn}. +% \end{function} +% % \begin{variable}{\g__kernel_prg_map_int} % This integer is used by non-expandable mapping functions to track % the level of nesting in force. The functions diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/required/l3kernel/l3keys.dtx index 5ea436176f..a1d2c01169 100644 --- a/macros/latex/contrib/l3kernel/l3keys.dtx +++ b/macros/latex/required/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/required/l3kernel/l3legacy.dtx index bd56f1ed3a..ed7dadf222 100644 --- a/macros/latex/contrib/l3kernel/l3legacy.dtx +++ b/macros/latex/required/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/required/l3kernel/l3luatex.dtx index 3d177f6345..f0107d465b 100644 --- a/macros/latex/contrib/l3kernel/l3luatex.dtx +++ b/macros/latex/required/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/required/l3kernel/l3msg.dtx index 3acae8d111..ab4d882dcb 100644 --- a/macros/latex/contrib/l3kernel/l3msg.dtx +++ b/macros/latex/required/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/required/l3kernel/l3names.dtx index 3e78d86acf..468481c28c 100644 --- a/macros/latex/contrib/l3kernel/l3names.dtx +++ b/macros/latex/required/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/required/l3kernel/l3news.pdf Binary files differindex 87f01af5a7..aa26629126 100644 --- a/macros/latex/contrib/l3kernel/l3news.pdf +++ b/macros/latex/required/l3kernel/l3news.pdf diff --git a/macros/latex/contrib/l3kernel/l3news.tex b/macros/latex/required/l3kernel/l3news.tex index b8f0de5c72..b8f0de5c72 100644 --- a/macros/latex/contrib/l3kernel/l3news.tex +++ b/macros/latex/required/l3kernel/l3news.tex diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/required/l3kernel/l3news01.pdf Binary files differindex 5a6d4af9e2..2eb7750066 100644 --- a/macros/latex/contrib/l3kernel/l3news01.pdf +++ b/macros/latex/required/l3kernel/l3news01.pdf diff --git a/macros/latex/contrib/l3kernel/l3news01.tex b/macros/latex/required/l3kernel/l3news01.tex index b4841ac24b..b4841ac24b 100644 --- a/macros/latex/contrib/l3kernel/l3news01.tex +++ b/macros/latex/required/l3kernel/l3news01.tex diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/required/l3kernel/l3news02.pdf Binary files differindex 8cda69f971..832e6f583d 100644 --- a/macros/latex/contrib/l3kernel/l3news02.pdf +++ b/macros/latex/required/l3kernel/l3news02.pdf diff --git a/macros/latex/contrib/l3kernel/l3news02.tex b/macros/latex/required/l3kernel/l3news02.tex index a3d5467c8e..a3d5467c8e 100644 --- a/macros/latex/contrib/l3kernel/l3news02.tex +++ b/macros/latex/required/l3kernel/l3news02.tex diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/required/l3kernel/l3news03.pdf Binary files differindex f16bb58750..dd6b7e7e9a 100644 --- a/macros/latex/contrib/l3kernel/l3news03.pdf +++ b/macros/latex/required/l3kernel/l3news03.pdf diff --git a/macros/latex/contrib/l3kernel/l3news03.tex b/macros/latex/required/l3kernel/l3news03.tex index e3e245f051..e3e245f051 100644 --- a/macros/latex/contrib/l3kernel/l3news03.tex +++ b/macros/latex/required/l3kernel/l3news03.tex diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/required/l3kernel/l3news04.pdf Binary files differindex 52c33e516a..1d20917d2b 100644 --- a/macros/latex/contrib/l3kernel/l3news04.pdf +++ b/macros/latex/required/l3kernel/l3news04.pdf diff --git a/macros/latex/contrib/l3kernel/l3news04.tex b/macros/latex/required/l3kernel/l3news04.tex index a0fc82f3de..a0fc82f3de 100644 --- a/macros/latex/contrib/l3kernel/l3news04.tex +++ b/macros/latex/required/l3kernel/l3news04.tex diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/required/l3kernel/l3news05.pdf Binary files differindex 1f6bda9687..36c813db4d 100644 --- a/macros/latex/contrib/l3kernel/l3news05.pdf +++ b/macros/latex/required/l3kernel/l3news05.pdf diff --git a/macros/latex/contrib/l3kernel/l3news05.tex b/macros/latex/required/l3kernel/l3news05.tex index 43ec2a8d19..43ec2a8d19 100644 --- a/macros/latex/contrib/l3kernel/l3news05.tex +++ b/macros/latex/required/l3kernel/l3news05.tex diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/required/l3kernel/l3news06.pdf Binary files differindex cd65bce3a6..f0e99f4727 100644 --- a/macros/latex/contrib/l3kernel/l3news06.pdf +++ b/macros/latex/required/l3kernel/l3news06.pdf diff --git a/macros/latex/contrib/l3kernel/l3news06.tex b/macros/latex/required/l3kernel/l3news06.tex index 63ee6c7c75..63ee6c7c75 100644 --- a/macros/latex/contrib/l3kernel/l3news06.tex +++ b/macros/latex/required/l3kernel/l3news06.tex diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/required/l3kernel/l3news07.pdf Binary files differindex 721252a9b0..b9cbba576a 100644 --- a/macros/latex/contrib/l3kernel/l3news07.pdf +++ b/macros/latex/required/l3kernel/l3news07.pdf diff --git a/macros/latex/contrib/l3kernel/l3news07.tex b/macros/latex/required/l3kernel/l3news07.tex index 2b433da4c4..2b433da4c4 100644 --- a/macros/latex/contrib/l3kernel/l3news07.tex +++ b/macros/latex/required/l3kernel/l3news07.tex diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/required/l3kernel/l3news08.pdf Binary files differindex 855db5bdc5..c812ae5e67 100644 --- a/macros/latex/contrib/l3kernel/l3news08.pdf +++ b/macros/latex/required/l3kernel/l3news08.pdf diff --git a/macros/latex/contrib/l3kernel/l3news08.tex b/macros/latex/required/l3kernel/l3news08.tex index 17107f8360..17107f8360 100644 --- a/macros/latex/contrib/l3kernel/l3news08.tex +++ b/macros/latex/required/l3kernel/l3news08.tex diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/required/l3kernel/l3news09.pdf Binary files differindex 5dc3a3b9ad..eff6e741fe 100644 --- a/macros/latex/contrib/l3kernel/l3news09.pdf +++ b/macros/latex/required/l3kernel/l3news09.pdf diff --git a/macros/latex/contrib/l3kernel/l3news09.tex b/macros/latex/required/l3kernel/l3news09.tex index 55ed700a2c..55ed700a2c 100644 --- a/macros/latex/contrib/l3kernel/l3news09.tex +++ b/macros/latex/required/l3kernel/l3news09.tex diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/required/l3kernel/l3news10.pdf Binary files differindex e921d2c81b..4ac02d4684 100644 --- a/macros/latex/contrib/l3kernel/l3news10.pdf +++ b/macros/latex/required/l3kernel/l3news10.pdf diff --git a/macros/latex/contrib/l3kernel/l3news10.tex b/macros/latex/required/l3kernel/l3news10.tex index 88291e848f..88291e848f 100644 --- a/macros/latex/contrib/l3kernel/l3news10.tex +++ b/macros/latex/required/l3kernel/l3news10.tex diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/required/l3kernel/l3news11.pdf Binary files differindex a4866d55e7..27011b2c4b 100644 --- a/macros/latex/contrib/l3kernel/l3news11.pdf +++ b/macros/latex/required/l3kernel/l3news11.pdf diff --git a/macros/latex/contrib/l3kernel/l3news11.tex b/macros/latex/required/l3kernel/l3news11.tex index a1fd8a129c..a1fd8a129c 100644 --- a/macros/latex/contrib/l3kernel/l3news11.tex +++ b/macros/latex/required/l3kernel/l3news11.tex diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/required/l3kernel/l3news12.pdf Binary files differindex 4b6072bca1..86b5ffa063 100644 --- a/macros/latex/contrib/l3kernel/l3news12.pdf +++ b/macros/latex/required/l3kernel/l3news12.pdf diff --git a/macros/latex/contrib/l3kernel/l3news12.tex b/macros/latex/required/l3kernel/l3news12.tex index f41e4b3690..f41e4b3690 100644 --- a/macros/latex/contrib/l3kernel/l3news12.tex +++ b/macros/latex/required/l3kernel/l3news12.tex diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/required/l3kernel/l3pdf.dtx index 7ffd0c1c05..b0b17f2690 100644 --- a/macros/latex/contrib/l3kernel/l3pdf.dtx +++ b/macros/latex/required/l3kernel/l3pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -51,6 +51,11 @@ % % \section{Objects} % +% \subsection{Named objects} +% +% An \meta{object} name should fully expand to tokens suitable for use in a +% label-like context. +% % \begin{function}[added = 2022-08-23]{\pdf_object_new:n} % \begin{syntax} % \cs{pdf_object_new:n} \Arg{object} @@ -62,7 +67,7 @@ % \begin{function}[added = 2022-08-23] % {\pdf_object_write:nnn, \pdf_object_write:nne} % \begin{syntax} -% \cs{pdf_object_write:nn} \Arg{object} \Arg{type} \Arg{content} +% \cs{pdf_object_write:nnn} \Arg{object} \Arg{type} \Arg{content} % \end{syntax} % Writes the \meta{content} as content of the \meta{object}. Depending on the % \meta{type} declared for the object, the format required for the @@ -83,9 +88,71 @@ % \cs{pdf_object_ref:n} \Arg{object} % \end{syntax} % Inserts the appropriate information to reference the \meta{object} -% in for example page resource allocation +% in for example page resource allocation. If the \meta{object} does +% not exist then the function expands to a reference to object zero; +% no PDF indirect object ever has this number, so this is a marker for +% error. +% \end{function} +% +% \begin{function}[EXP, pTF, added = 2020-05-15]{\pdf_object_if_exist:n} +% \begin{syntax} +% \cs{pdf_object_if_exist_p:n} \Arg{object} +% \cs{pdf_object_if_exist:nTF} \Arg{object} \Arg{true code} \Arg{false code} +% \end{syntax} +% Tests whether an object with name \Arg{object} has been defined. +% \end{function} +% +% \subsection{Indexed objects} +% +% Objects can also be created using a pair of \meta{class} and \emph{index}; +% the \meta{class} argument should expand to character tokens, whilst the +% \meta{index} is an \meta{int expr} and starts at $1$. For large +% families of objects, this approach is more efficient than using +% individual names. +% +% \begin{function}[added = 2024-04-01]{\pdf_object_new_indexed:nn} +% \begin{syntax} +% \cs{pdf_object_new_indexed:nn} \Arg{class} \Arg{index} +% \end{syntax} +% Declares a PDF object of \meta{class} and \meta{index}. The object may be +% referenced from this point on, and written later using +% \cs{pdf_object_write_indexed:nnnn}. % \end{function} % +% \begin{function}[added = 2024-04-01] +% {\pdf_object_write_indexed:nnnn, \pdf_object_write_indexed:nnne} +% \begin{syntax} +% \cs{pdf_object_write_indexed:nnnn} \Arg{class} \Arg{index} \Arg{type} \Arg{content} +% \end{syntax} +% Writes the \meta{content} as content of the object of \meta{class} and +% \meta{index}. Depending on the +% \meta{type} declared for the object, the format required for the +% \meta{content} will vary +% \begin{itemize} +% \item[\texttt{array}] A space-separated list of values +% \item[\texttt{dict}] Key--value pairs in the form +% \texttt{/\meta{key} \meta{value}} +% \item[\texttt{fstream}] Two brace groups: \meta{file name} and +% \meta{file content} +% \item[\texttt{stream}] Two brace groups: \meta{attributes (dictionary)} +% and \meta{stream contents} +% \end{itemize} +% \end{function} +% +% \begin{function}[EXP, added = 2024-04-01]{\pdf_object_ref_indexed:nn} +% \begin{syntax} +% \cs{pdf_object_ref_indexed:nn} \Arg{class} \Arg{index} +% \end{syntax} +% Inserts the appropriate information to reference the object of \meta{class} +% and \meta{index} in for example page resource allocation. If the +% \meta{class}/\meta{index} combination does +% not exist then the function expands to a reference to object zero; +% no PDF indirect object ever has this number, so this is a marker for +% error. +% \end{function} +% +% \subsection{General functions} +% % \begin{function}[added = 2021-02-10] % {\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne} % \begin{syntax} @@ -119,14 +186,6 @@ % Inserts the appropriate information to reference the \meta{pageobject}. % \end{function} % -% \begin{function}[EXP, pTF, added = 2020-05-15]{\pdf_object_if_exist:n} -% \begin{syntax} -% \cs{pdf_object_if_exist_p:n} \Arg{object} -% \cs{pdf_object_if_exist:nTF} \Arg{object} -% \end{syntax} -% Tests whether an object with name \Arg{object} has been defined. -% \end{function} -% % \section{Version} % % \begin{function}[pTF, EXP, added = 2021-02-10]{\pdf_version_compare:Nn} @@ -267,6 +326,10 @@ %<@@=pdf> % \end{macrocode} % +% \begin{macrocode} +%<*tex> +% \end{macrocode} +% % \begin{variable}{\s_@@_stop} % Internal scan marks. % \begin{macrocode} @@ -311,53 +374,286 @@ % % \subsection{Objects} % +% \begin{variable}{\g_@@_backend_object_int} +% For returning object numbers. +% \begin{macrocode} +\int_new:N \g_@@_backend_object_int +% \end{macrocode} +% \end{variable} +% % \begin{macro}{\pdf_object_new:n} % \begin{macro} % {\pdf_object_write:nnn, \pdf_object_write:nne, \pdf_object_write:nnx} % \begin{macro}{\pdf_object_ref:n} -% \begin{macro} -% { -% \pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne, -% \pdf_object_unnamed_write:nx -% } -% \begin{macro}{\pdf_object_ref_last:} -% \begin{macro}[pTF]{\pdf_object_if_exist:n} +% \begin{macro}{\__kernel_pdf_object_id:n} % Simple to do: all objects create a constant |int| so it is not a % backend-specific name. % \begin{macrocode} \cs_new_protected:Npn \pdf_object_new:n #1 { - \@@_backend_object_new:n {#1} - \cs_new_eq:cc - { c_@@_backend_object_ \tl_to_str:n {#1} _int } - { c_@@_object_ \tl_to_str:n {#1} _int } + \@@_backend_object_new: + \@@_object_record:nN {#1} \g_@@_backend_object_int } \cs_new_protected:Npn \pdf_object_write:nnn #1#2#3 { - \@@_backend_object_write:nnn {#1} {#2} {#3} + \exp_args:Ne \@@_backend_object_write:nnn + { \@@_object_retrieve:n {#1} } {#2} {#3} \bool_gset_true:N \g_@@_init_bool } \cs_generate_variant:Nn \pdf_object_write:nnn { nne , nnx } -\cs_new:Npn \pdf_object_ref:n #1 { \@@_backend_object_ref:n {#1} } -\cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2 +\cs_new:Npn \pdf_object_ref:n #1 { - \@@_backend_object_now:nn {#1} {#2} - \bool_gset_true:N \g_@@_init_bool + \exp_args:Ne \@@_backend_object_ref:n + { \@@_object_retrieve:n {#1} } } -\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { ne , nx } -\cs_new:Npn \pdf_object_ref_last: { \@@_backend_object_last: } +\cs_new:Npn \__kernel_pdf_object_id:n #1 + { + \exp_args:Ne \@@_backend_object_id:n + { \@@_object_retrieve:n {#1} } + } +%</tex> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\@@_object_record:nN} +% \begin{macro}[EXP]{\@@_object_retrieve:n} +% \begin{macro}{ltx.pdf.object_id} +% Object mappings are tracked in Lua for \LuaTeX{} as this makes retrieving +% them much easier; as a result, there is a split in approaches. In Lua we +% store values in a table indexed by name. The Lua function here is set up +% to deal with both named and indexed objects: fits the Lua idiom well. +% \begin{macrocode} +%<*lua> + +local scan_int = token.scan_int +local scan_string = token.scan_string +local cprint = tex.cprint + +local @@_objects_named = {} +local @@_objects_indexed = {} + +luacmd('@@_object_record:nN', function() + local name = scan_string() + local n = scan_int() + @@_objects_named[name] = n +end,'protected','global') + +local function object_id(name,index) + if index then + return @@_objects_indexed[name][index] or 0 + else + return @@_objects_named[name] or 0 + end +end + +luacmd('@@_object_retrieve:n', function() + local name = scan_string() + return cprint(12,tostring(object_id(name))) +end,'global') + +ltx.pdf = ltx.pdf or {} +ltx.pdf.object_id = object_id + +%</lua> +% \end{macrocode} +% Whereas in \TeX{} we use integer constants. +% \begin{macrocode} +%<*tex> +\sys_if_engine_luatex:F + { + \cs_new_protected:Npn \@@_object_record:nN #1#2 + { + \int_const:cn + { c_@@_object_ #1 _int } {#2} + } + \cs_new:Npn \@@_object_retrieve:n #1 + { + \int_if_exist:cTF { c_@@_object_ #1 _int } + { + \int_use:c + { c_@@_object_ #1 _int } + } + { 0 } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}[pTF,EXP]{\pdf_object_if_exist:n} +% \begin{macrocode} \prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF } { - \int_if_exist:cTF { c_@@_object_ \tl_to_str:n {#1} _int } - \prg_return_true: + \int_compare:nNnTF { \@@_object_retrieve:n {#1} } = 0 \prg_return_false: + \prg_return_true: } % \end{macrocode} % \end{macro} +% +% \begin{macro}{\pdf_object_new_indexed:nn} +% \begin{macro}{\pdf_object_write_indexed:nnnn, \pdf_object_write_indexed:nnne} +% \begin{macro}[EXP]{\pdf_object_ref_indexed:nn} +% \begin{macro}[EXP]{\__kernel_pdf_object_id_indexed:nn} +% Again we split between the common code and the macro- or Lua-based +% implementation. To make life easier for the Lua route, all of the +% potential expressions are expanded to braced numbers. +% \begin{macrocode} +\cs_new_protected:Npn \pdf_object_new_indexed:nn #1#2 + { + \@@_backend_object_new: + \@@_object_record:neN {#1} + { \int_eval:n {#2} } \g_@@_backend_object_int + } +\cs_new_protected:Npn \pdf_object_write_indexed:nnnn #1#2#3#4 + { + \exp_args:Ne \@@_backend_object_write:nnn + { \@@_object_retrieve:ne {#1} { \int_eval:n {#2} } } {#3} {#4} + \bool_gset_true:N \g_@@_init_bool + } +\cs_generate_variant:Nn \pdf_object_write_indexed:nnnn { nnne } +\cs_new:Npn \pdf_object_ref_indexed:nn #1#2 + { + \exp_args:Ne \@@_backend_object_ref:n + { \@@_object_retrieve:ne {#1} { \int_eval:n {#2} } } + } +\cs_new:Npn \__kernel_pdf_object_id_indexed:nn #1#2 + { + \exp_args:Ne \@@_backend_object_id:n + { \@@_object_retrieve:ne {#1} { \int_eval:n {#2} } } + } +%</tex> +% \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} +% \begin{macro}{\@@_object_record:nnN, \@@_object_record:neN} +% \begin{macro}[EXP]{\@@_object_retrieve:nn} +% \begin{macro}{\@@_object_record:NnN} +% \begin{macro}[EXP]{\@@_object_retrieve:Nn} +% Again we split for Lua: the same idea as above but with nested tables. +% As we've arranged above that the \TeX{} code passes a braced number, +% we can use |tonumber(scan_string())| rather than |scan_int()| +% for the index. +% \begin{macrocode} +%<*lua> + +luacmd('@@_object_record:nnN', function() + local name = scan_string() + local index = tonumber(scan_string()) + local n = scan_int() + @@_objects_indexed[name] = @@_objects_indexed[name] or {} + @@_objects_indexed[name][index] = n +end,'protected','global') + +luacmd('@@_object_retrieve:nn', function() + local name = scan_string() + local index = tonumber(scan_string()) + return cprint(12,tostring(object_id(name,index))) +end,'global') + +%</lua> +% \end{macrocode} +% The non-Lua approach is to divide the range into blocks, and store in integer +% arrays that can simulate dynamic assignment. +% \begin{macrocode} +%<*tex> +\sys_if_engine_luatex:F + { + \cs_new_protected:Npn \@@_object_record:nnN #1#2#3 + { + \use:e + { + \@@_object_record:NnN + \@@_object_index_split:nn {#1} {#2} + \exp_not:N #3 + } + } + \cs_new_protected:Npn \@@_object_record:NnN #1#2#3 + { + \intarray_if_exist:NF #1 + { \intarray_new:Nn #1 \c_@@_object_block_size_int } + \intarray_gset:Nnn #1 {#2} #3 + } + \cs_new:Npn \@@_object_retrieve:nn #1#2 + { + \use:e + { + \exp_not:N \@@_object_retrieve:Nn + \@@_object_index_split:nn {#1} {#2} + } + } + \cs_new:Npn \@@_object_retrieve:Nn #1#2 + { \intarray_item:Nn #1 {#2} } +% \end{macrocode} +% As we want blocks to start from one, and within the block for the top value +% to be \enquote{in} the block, we do a little bit of manipulation. By shifting +% down by one, we keep the values \enquote{in} the block, then we adjust the +% block/index number to get back on track. +% \begin{macrocode} + \cs_new:Npn \@@_object_index_split:nn #1#2 + { + \exp_not:c + { + g_@@_object_ #1 _ + \int_eval:n + { + \int_div_truncate:nn { #2 - 1 } + \c_@@_object_block_size_int + 1 + } + _intarray + } + { + \int_eval:n + { \int_mod:nn { #2 - 1 } \c_@@_object_block_size_int + 1 } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{variable}{\c_@@_object_block_size_int} +% Sets the block size used for managing indexed objects. +% \begin{macrocode} + \int_const:Nn \c_@@_object_block_size_int { 10000 } + } +% \end{macrocode} +% \end{variable} +% \begin{macro}{\@@_object_record:neN} +% \begin{macro}[EXP]{\@@_object_retrieve:ne} +% Common variants. +% \begin{macrocode} +\cs_generate_variant:Nn \@@_object_record:nnN { ne } +\cs_generate_variant:Nn \@@_object_retrieve:nn { ne } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { +% \pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne, +% \pdf_object_unnamed_write:nx +% } +% No tracking needed here. +% \begin{macrocode} +\cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2 + { + \exp_args:Ne \@@_backend_object_now:nn {#1} {#2} + \bool_gset_true:N \g_@@_init_bool + } +\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { ne , nx } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pdf_object_ref_last:} +% A one-step wrapper for consistency. +% \begin{macrocode} +\cs_new:Npn \pdf_object_ref_last: { \@@_backend_object_last: } +% \end{macrocode} % \end{macro} % % \begin{macro}{\pdf_pageobject_ref:n} @@ -523,6 +819,10 @@ % \end{macrocode} % % \begin{macrocode} +%</tex> +% \end{macrocode} +% +% \begin{macrocode} %</package> % \end{macrocode} % diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/required/l3kernel/l3prefixes.csv index 54fb41bdeb..54fb41bdeb 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.csv +++ b/macros/latex/required/l3kernel/l3prefixes.csv diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/required/l3kernel/l3prefixes.pdf Binary files differindex 9b2e9b407e..0506709020 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.pdf +++ b/macros/latex/required/l3kernel/l3prefixes.pdf diff --git a/macros/latex/contrib/l3kernel/l3prefixes.tex b/macros/latex/required/l3kernel/l3prefixes.tex index 6c7cf24244..6c7cf24244 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.tex +++ b/macros/latex/required/l3kernel/l3prefixes.tex diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/required/l3kernel/l3prg.dtx index 8bbdd6a587..ea76955d82 100644 --- a/macros/latex/contrib/l3kernel/l3prg.dtx +++ b/macros/latex/required/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/required/l3kernel/l3prop.dtx index 878b9eb758..6d8054e956 100644 --- a/macros/latex/contrib/l3kernel/l3prop.dtx +++ b/macros/latex/required/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -299,15 +299,15 @@ % codes are ignored. % \end{function} % -% \begin{function} +% \begin{function}[added = 2024-03-30] % { -% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV, -% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV, -% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV, -% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV +% \prop_put_if_not_in:Nnn, \prop_put_if_not_in:NVn, \prop_put_if_not_in:NnV, +% \prop_put_if_not_in:cnn, \prop_put_if_not_in:cVn, \prop_put_if_not_in:cnV, +% \prop_gput_if_not_in:Nnn, \prop_gput_if_not_in:NVn, \prop_gput_if_not_in:NnV, +% \prop_gput_if_not_in:cnn, \prop_gput_if_not_in:cVn, \prop_gput_if_not_in:cnV % } % \begin{syntax} -% \cs{prop_put_if_new:Nnn} \meta{property list} \Arg{key} \Arg{value} +% \cs{prop_put_if_not_in:Nnn} \meta{property list} \Arg{key} \Arg{value} % \end{syntax} % If the \meta{key} is present in the \meta{property list} then no % action is taken. Otherwise, a new entry is added as described for @@ -1358,7 +1358,7 @@ % in the linked case. If |#5| is |#3| itself we have to be careful % not to lose the data, and we even take the opportunity to skip the % copying step completely. To keep the correct version of the -% duplicate keys we use the code underlying \cs{prop_put_if_new:Nnn}, +% duplicate keys we use the code underlying \cs{prop_put_if_not_in:Nnn}, % which involves passing \cs{use_none:nnn} to the auxiliary instead of % nothing. % There is no need to check for the case where |#3| is equal to~|#4| @@ -1940,10 +1940,10 @@ % } % \begin{macro}[tested = m3prop002] % { -% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV, -% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV, -% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV, -% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV +% \prop_put_if_not_in:Nnn, \prop_put_if_not_in:NVn, \prop_put_if_not_in:NnV, +% \prop_put_if_not_in:cnn, \prop_put_if_not_in:cVn, \prop_put_if_not_in:cnV, +% \prop_gput_if_not_in:Nnn, \prop_gput_if_not_in:NVn, \prop_gput_if_not_in:NnV, +% \prop_gput_if_not_in:cnn, \prop_gput_if_not_in:cVn, \prop_gput_if_not_in:cnV % } % \begin{macro}[tested = m3prop002] % { @@ -1965,17 +1965,17 @@ % auxiliary to skip this checking step and avoid getting multiple % error messages for the same error. % The \meta{code} (empty for |put| and \cs{use_none:nnn} for -% |put_if_new|) is placed before the assignment in cases where the key +% |put_if_not_in|) is placed before the assignment in cases where the key % is already present, in order to suppress the assignment in the -% |put_if_new| case. +% |put_if_not_in| case. % \begin{macrocode} \cs_new_protected:Npn \prop_put:Nnn { \@@_put:nNNnn { } \cs_set_nopar:Npe } \cs_new_protected:Npn \prop_gput:Nnn { \@@_put:nNNnn { } \cs_gset_nopar:Npe } -\cs_new_protected:Npn \prop_put_if_new:Nnn +\cs_new_protected:Npn \prop_put_if_not_in:Nnn { \@@_put:nNNnn \use_none:nnn \cs_set_nopar:Npe } -\cs_new_protected:Npn \prop_gput_if_new:Nnn +\cs_new_protected:Npn \prop_gput_if_not_in:Nnn { \@@_put:nNNnn \use_none:nnn \cs_gset_nopar:Npe } \cs_generate_variant:Nn \prop_put:Nnn { @@ -2005,10 +2005,10 @@ } \cs_generate_variant:Nn \prop_gput:Nnn { cno , co , coo , cnx , cVx , cxV , cxx } -\cs_generate_variant:Nn \prop_put_if_new:Nnn - { NnV , NV , cnV , cV } -\cs_generate_variant:Nn \prop_gput_if_new:Nnn - { NnV , NV , cnV , cV } +\cs_generate_variant:Nn \prop_put_if_not_in:Nnn + { NnV , NV , c , cnV , cV } +\cs_generate_variant:Nn \prop_gput_if_not_in:Nnn + { NnV , NV , c , cnV , cV } % \end{macrocode} % Since the true branch of \cs{@@_split:NnTFn} is used as the % replacement text of an internal macro, and since the \meta{key} and diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/required/l3kernel/l3quark.dtx index 000063bc00..6dba950462 100644 --- a/macros/latex/contrib/l3kernel/l3quark.dtx +++ b/macros/latex/required/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/required/l3kernel/l3regex.dtx index 395be76907..ce85b56262 100644 --- a/macros/latex/contrib/l3kernel/l3regex.dtx +++ b/macros/latex/required/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/required/l3kernel/l3seq.dtx index 5334e8fd88..6be32f7a83 100644 --- a/macros/latex/contrib/l3kernel/l3seq.dtx +++ b/macros/latex/required/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/required/l3kernel/l3skip.dtx index 1839c8a2e5..a3d9256223 100644 --- a/macros/latex/contrib/l3kernel/l3skip.dtx +++ b/macros/latex/required/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/required/l3kernel/l3sort.dtx index 818f605e07..81a025b474 100644 --- a/macros/latex/contrib/l3kernel/l3sort.dtx +++ b/macros/latex/required/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/required/l3kernel/l3str-convert.dtx index be850b3109..75dbdd095b 100644 --- a/macros/latex/contrib/l3kernel/l3str-convert.dtx +++ b/macros/latex/required/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/required/l3kernel/l3str.dtx index 88ad33c74b..efc24fe8ea 100644 --- a/macros/latex/contrib/l3kernel/l3str.dtx +++ b/macros/latex/required/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/required/l3kernel/l3styleguide.pdf Binary files differindex 322b032a67..8b2f592339 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.pdf +++ b/macros/latex/required/l3kernel/l3styleguide.pdf diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/required/l3kernel/l3styleguide.tex index a2ffe8d770..da169cd8b1 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.tex +++ b/macros/latex/required/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-03-14} +\date{Released 2024-04-11} \begin{document} diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/required/l3kernel/l3syntax-changes.pdf Binary files differindex 2a701d8ec5..1f2f4ca513 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/required/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/required/l3kernel/l3syntax-changes.tex index 7e124576c7..85f83bf0e3 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex +++ b/macros/latex/required/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-03-14} +\date{Released 2024-04-11} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/required/l3kernel/l3sys.dtx index feec1232fd..085b5f2c97 100644 --- a/macros/latex/contrib/l3kernel/l3sys.dtx +++ b/macros/latex/required/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -333,7 +333,7 @@ % not directly available within the \TeX{} run. Note that if restricted % shell escape is disabled, no results can be obtained. % -% \begin{function}[added = 2024-03-08] +% \begin{function}[added = 2024-03-08, updated = 2024-04-08] % {\sys_get_query:nN, \sys_get_query:nnN, \sys_get_query:nnnN} % \begin{syntax} % \cs{sys_get_query:nN} \Arg{cmd} \Arg{tl var} @@ -357,6 +357,14 @@ % The \meta{spec} and \meta{options}, if given, are expanded fully % before passing to the underlying script. % +% Spaces in the output are stored as active tokens, allowing them to be +% replaced by for example a visible space easily. Other non-letter +% characters in the ASCII range are set to category code~12. The category +% codes for characters out of the ASCII range are left unchanged: typically +% this will mean that with an 8-bit engine, accented values can be typeset +% directly whilst in Unicode engines, standard category code setup will +% apply. +% % If more than one line of text is returned by the \meta{cmd}, these will be % separated by character~13 (|^^M|) tokens of category code~12. In most % cases, \cs{sys_split_query:nnnN} should be preferred when multi-line @@ -1161,7 +1169,7 @@ end { \sys_get_query:nnnN {#1} { } {#2} #3 } \cs_new_protected:Npn \sys_get_query:nnnN #1#2#3#4 { - \str_clear:N #4 + \tl_clear:N #4 \@@_get_query_auxi:neeN {#1} {#2} {#3} #4 } \cs_new:Npn \@@_get_query_auxi:nnnN #1#2#3#4 @@ -1187,10 +1195,13 @@ end \sys_get_shell:nnN { l3sys-query~#1 #2 #3 } { - \int_step_inline:nnn { 0 } { `a - 1 } + \int_step_inline:nnn { 0 } { `A - 1 } + { \char_set_catcode_other:n {##1} } + \int_step_inline:nnn { `Z + 1 } { `a - 1 } { \char_set_catcode_other:n {##1} } - \int_step_inline:nnn { `Z + 1 } { 127 } + \int_step_inline:nnn { `z + 1 } { 127 } { \char_set_catcode_other:n {##1} } + \char_set_catcode_active:n { `\ } \tex_endlinechar:D 13 \scan_stop: } \l_@@_tmp_tl diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/required/l3kernel/l3term-glossary.pdf Binary files differindex 93def3980b..721513e885 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf +++ b/macros/latex/required/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/required/l3kernel/l3term-glossary.tex index 5db9e83a45..d1b4b0082c 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.tex +++ b/macros/latex/required/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2024-03-14} +\date{Released 2024-04-11} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/required/l3kernel/l3text-case.dtx index 0547db28b1..5010114fb4 100644 --- a/macros/latex/contrib/l3kernel/l3text-case.dtx +++ b/macros/latex/required/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/required/l3kernel/l3text-map.dtx index d364c32199..213d8281a9 100644 --- a/macros/latex/contrib/l3kernel/l3text-map.dtx +++ b/macros/latex/required/l3kernel/l3text-map.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/required/l3kernel/l3text-purify.dtx index 8f92c1eae9..a713cd6e40 100644 --- a/macros/latex/contrib/l3kernel/l3text-purify.dtx +++ b/macros/latex/required/l3kernel/l3text-purify.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/required/l3kernel/l3text.dtx index 5feff565b9..56c9a5533c 100644 --- a/macros/latex/contrib/l3kernel/l3text.dtx +++ b/macros/latex/required/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/required/l3kernel/l3tl-analysis.dtx index d965050c76..a4141dcfe4 100644 --- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/required/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl-build.dtx b/macros/latex/required/l3kernel/l3tl-build.dtx index 175b7bc24f..859dd5025c 100644 --- a/macros/latex/contrib/l3kernel/l3tl-build.dtx +++ b/macros/latex/required/l3kernel/l3tl-build.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -73,7 +73,8 @@ % \end{syntax} % Clears the \meta{tl~var} and sets it up to support other % \cs[no-index]{tl_build_\ldots{}} functions. Until \cs{tl_build_end:N} -% \meta{tl~var} is called, applying any function from \pkg{l3tl} other +% \meta{tl~var} or \cs{tl_build_gend:N} \meta{tl~var} is called, +% applying any function from \pkg{l3tl} other % than \cs[no-index]{tl_build_\ldots{}} will lead to incorrect % results. The |begin| and |gbegin| functions must be used for local % and global \meta{tl~var} respectively. diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/required/l3kernel/l3tl.dtx index 0938e7cd5e..30e16636e5 100644 --- a/macros/latex/contrib/l3kernel/l3tl.dtx +++ b/macros/latex/required/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/required/l3kernel/l3token.dtx index cd538ee6d0..a38860b548 100644 --- a/macros/latex/contrib/l3kernel/l3token.dtx +++ b/macros/latex/required/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -2298,7 +2298,7 @@ % is not a primitive. % % For \LuaTeX{} we use a different implementation which just looks at the -% command code for the token and compaes it to a list of non-primitives. +% command code for the token and compares it to a list of non-primitives. % Again, \tn{nullfont} is a special case because it is the only primitive % with the normally non-primitive |set_font| command code. % @@ -2345,11 +2345,11 @@ do [cmd'outer_call' or cmd'tolerant_call'] = true, [cmd'long_outer_call' or cmd'tolerant_protected_call'] = true, [cmd'assign_glue' or cmd'register_glue'] = index_not_nil, - [cmd'assign_mu_glue' or cmd'register_mu_glue'] = index_not_nil, + [cmd'assign_mu_glue' or cmd'register_mu_glue' or cmd'register_muglue'] = index_not_nil, [cmd'assign_toks' or cmd'register_toks'] = index_not_nil, - [cmd'assign_int' or cmd'register_int'] = index_not_nil, + [cmd'assign_int' or cmd'register_int' or cmd'register_integer'] = index_not_nil, [cmd'assign_attr' or cmd'register_attribute'] = true, - [cmd'assign_dimen' or cmd'register_dimen'] = index_not_nil, + [cmd'assign_dimen' or cmd'register_dimen' or cmd'register_dimension'] = index_not_nil, } luacmd("@@_if_primitive_lua:N", function() diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/required/l3kernel/l3unicode.dtx index cd552800b0..0ee6858f5b 100644 --- a/macros/latex/contrib/l3kernel/l3unicode.dtx +++ b/macros/latex/required/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2024-03-14} +% \date{Released 2024-04-11} % % \maketitle % @@ -82,7 +82,7 @@ % range, the generated character tokens will be active (category code % $13$); for codepoints in the ASCII range, the given \meta{catcode} % will be used. To allow the result of this function to be used -% inside a expansion context, the result is protected by \cs{exp_not:n}. +% inside an expansion context, the result is protected by \cs{exp_not:n}. % % \begin{texnote} % Users of (u)p\TeX{} note that these engines are treated as $8$-bit in diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/required/l3kernel/source3.pdf Binary files differindex c6a6396503..9dda7182f4 100644 --- a/macros/latex/contrib/l3kernel/source3.pdf +++ b/macros/latex/required/l3kernel/source3.pdf diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/required/l3kernel/source3.tex index c09d75767b..f0aaeb20c8 100644 --- a/macros/latex/contrib/l3kernel/source3.tex +++ b/macros/latex/required/l3kernel/source3.tex @@ -57,7 +57,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2024-03-14} +\date{Released 2024-04-11} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/source3body.tex b/macros/latex/required/l3kernel/source3body.tex index 8471296227..8471296227 100644 --- a/macros/latex/contrib/l3kernel/source3body.tex +++ b/macros/latex/required/l3kernel/source3body.tex |