summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xBuild/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl164
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md12
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin584220 -> 584483 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1539482 -> 1539255 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin262909 -> 263206 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news.pdfbin379209 -> 379209 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news01.pdfbin113529 -> 113529 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news02.pdfbin140777 -> 140777 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news03.pdfbin137983 -> 137983 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news04.pdfbin107122 -> 107122 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news05.pdfbin105090 -> 105090 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news06.pdfbin140797 -> 140797 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news07.pdfbin119092 -> 119092 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news08.pdfbin152413 -> 152413 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news09.pdfbin235516 -> 235516 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news10.pdfbin140297 -> 140297 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news11.pdfbin159154 -> 159154 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3news12.pdfbin192383 -> 192383 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdfbin59390 -> 59390 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin279681 -> 279939 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin227409 -> 227669 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdfbin186184 -> 186456 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin5763155 -> 5763810 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md9
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdfbin326755 -> 347451 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdfbin309522 -> 309823 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdfbin453950 -> 454245 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdfbin501615 -> 501908 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdfbin416037 -> 416332 bytes
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3debug.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx433
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex389
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.ltx2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3debug.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty8
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty2
107 files changed, 612 insertions, 581 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl b/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
index 275ebbe903b..66476199bb1 100755
--- a/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
+++ b/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
@@ -78,10 +78,14 @@ if $ddebug {set dbg_log {}}
proc do_debug {s} {
if $::ddebug {
- puts stderr $s
+ if {$::tcl_platform(platform) ne "windows"} {puts stderr $s}
# On windows, stderr output goes nowhere.
# Therefore also debug output for the log dialog.
lappend ::dbg_log $s
+ file mkdir ${::instroot}/temp
+ set dbg [open "${::instroot}/temp/mydbglog" a]
+ puts $dbg "TCL: $s"
+ close $dbg
# Track debug output in the log dialog if it is running:
if [winfo exists .tllg.dbg.tx] {
.tllg.dbg.tx configure -state normal
@@ -328,20 +332,22 @@ set ::show_output 0
# EOF is indicated by a return value of -1.
proc read_err_tempfile {} {
- set len 0
- while 1 {
- set len [chan gets $::err l]
- if {$len >= 0} {
- lappend ::err_log $l
- } else {
- break
+ if [info exists ::err] {
+ set len 0
+ while 1 {
+ set len [chan gets $::err l]
+ if {$len >= 0} {
+ lappend ::err_log $l
+ } else {
+ break
+ }
}
}
} ; # read_err_tempfile
proc err_exit {{m ""}} {
do_debug "error exit"
- if [info exists ::err] read_err_tempfile
+ read_err_tempfile
if {$m ne ""} {
set ::err_log [linsert $::err_log 0 $m]
}
@@ -678,22 +684,19 @@ proc collect_filtered {} {
display_packages_info
} ; # collect_filtered
-# derive the set of platforms from the dictionary of packages:
-# collect the values $plname from packages 'tex\.$plname'
proc get_platforms {} {
# guarantee fresh start
foreach k $::platforms {dict unset ::platforms $k}
set ::platforms [dict create]
- # glob-style matching: $k should start with "tex."
- foreach k [dict keys $::pkgs "tex.*"] {
- set plname [string range $k 4 end]
- if {$plname eq ""} continue
- set pl [dict create "cur" 0 "fut" 0]
- if {[dict get $::pkgs $k "localrev"] > 0} {
- dict set pl "cur" 1
- dict set pl "fut" 1
+ run_cmd_waiting "platform list"
+ foreach l $::out_log {
+ if [regexp {^\(i\)\s+(\S+)\s*$} $l dum plname] {
+ set pl [dict create "cur" 1 "fut" 1]
+ dict set ::platforms $plname $pl
+ } elseif [regexp {^\s+(\S+)\s*$} $l dum plname] {
+ set pl [dict create "cur" 0 "fut" 0]
+ dict set ::platforms $plname $pl
}
- dict set ::platforms $plname $pl
}
}
@@ -749,13 +752,11 @@ proc abort_load {} {
catch {exec -ignorestderr taskkill /pid [pid] /t /f}
} else {
catch {exec -ignorestderr kill -9 [pid]}
- # kill -9 should also be ok for darwin
}
} ; # abort load
-# activate abort button
# toplevel with abort button in case loading of a repository takes too long.
-# it should disappear if loading finishes
+# it can be closed when loading finishes
proc splash_loading {} {
create_dlg .loading .
@@ -765,37 +766,23 @@ proc splash_loading {} {
# wallpaper
pack [ttk::frame .loading.bg -padding 3] -fill both -expand 1
- set ::do_track_loading \
- [expr {[dict get $::pkgs texlive.infra localrev] >= 51676}]
-
- if $::do_track_loading {
- set lbl [__ \
- "If loading takes too long, press Abort and choose another repository."]
- } else {
- set lbl [__ "Trying to load %s.
-
-If this takes too long, press Abort and choose another repository." \
- $::repos(main)]
- }
+ set lbl [__ \
+ "If loading takes too long, press Abort and choose another repository."]
append lbl "\n([__ "Options"] \/ [__ "Repositories"] ...)"
ppack [ttk::label .loading.l0 -text $lbl \
- -wraplength [expr {60*$::cw}] -justify left] \
- -in .loading.bg -anchor w
-
- if $::do_track_loading {
- pack [ttk::frame .loading.tfr] -in .loading.bg -expand 1 -fill x
- pack [ttk::scrollbar .loading.scroll -command ".loading.tx yview"] \
- -in .loading.tfr -side right -fill y
- ppack [text .loading.tx -height 5 -wrap word \
- -yscrollcommand ".loading.scroll set"] \
- -in .loading.tfr -expand 1 -fill both
- }
+ -wraplength [expr {60*$::cw}] -justify left] \
+ -in .loading.bg -anchor w
+
+ pack [ttk::frame .loading.tfr] -in .loading.bg -expand 1 -fill x
+ pack [ttk::scrollbar .loading.scroll -command ".loading.tx yview"] \
+ -in .loading.tfr -side right -fill y
+ ppack [text .loading.tx -height 5 -wrap word \
+ -yscrollcommand ".loading.scroll set"] \
+ -in .loading.tfr -expand 1 -fill both
pack [ttk::frame .loading.buttons] -in .loading.bg -expand 1 -fill x
- if $::do_track_loading {
- ttk::button .loading.close -text [__ "Close"] -command {end_dlg "" .loading}
- ppack .loading.close -in .loading.buttons -side right
- .loading.close configure -state disabled
- }
+ ttk::button .loading.close -text [__ "Close"] -command {end_dlg "" .loading}
+ ppack .loading.close -in .loading.buttons -side right
+ .loading.close configure -state disabled
ttk::button .loading.abo -text [__ "Abort"] -command abort_load
ppack .loading.abo -in .loading.buttons -side right
wm protocol .loading {cancel_or_destroy .loading.abo .loading}
@@ -803,22 +790,24 @@ If this takes too long, press Abort and choose another repository." \
place_dlg .loading .
} ; # splash_loading
+
proc track_err {} {
- if $::do_track_loading {
- set inx0 [llength $::err_log]
- #puts stderr "track_err: $inx0"
- read_err_tempfile
+ set inx0 [llength $::err_log]
+ read_err_tempfile
+ .loading.tx configure -state normal
+ for {set i $inx0} {$i < [llength $::err_log]} {incr i} {
+ .loading.tx insert end "[lindex $::err_log $i]\n"
+ }
+ .loading.tx configure -state disabled
+ update idletasks
+ if {![info exists ::loaded]} {
+ after 500 track_err
+ } else {
+ .loading.close state !disabled
+ .loading.abo state disabled
.loading.tx configure -state normal
- for {set i $inx0} {$i < [llength $::err_log]} {incr i} {
- .loading.tx insert end "[lindex $::err_log $i]\n"
- }
+ .loading.tx insert end [__ "Done loading"]
.loading.tx configure -state disabled
- if {![info exists ::loaded]} {
- after 500 track_err
- } else {
- .loading.close state !disabled
- .loading.abo state disabled
- }
}
}
@@ -837,7 +826,7 @@ proc get_packages_info_remote {} {
splash_loading
unset -nocomplain ::loaded
- track_err ; # is a no-op unless $::do_track_loading
+ track_err
if [catch {run_cmd \
"info --data name,localrev,remoterev,cat-version,category,shortdesc"}] {
do_debug [get_stacktrace]
@@ -846,9 +835,6 @@ proc get_packages_info_remote {} {
}
vwait ::done_waiting
set ::loaded 1
- if {! $::do_track_loading} {
- destroy .loading
- } ; # otherwise, .loading destroyed by close button of track_err
set re {^([^,]+),([0-9]+),([0-9]+),([^,]*),([^,]*),(.*)$}
foreach l $::out_log {
if [regexp $re $l m nm lrev rrev rcatv catg pdescr] {
@@ -1136,10 +1122,11 @@ proc show_repos {} {
proc repos_commit {} {
set changes 0
# set repositories then add pinning if appropriate
- if {! [regexp {^\s*$} [.tlr.new get]]} {
- # repository entry widget non-empty: retrieve it
- if {$::repos(main) ne [.tlr.new get]} {
- set ::repos(main) [.tlr.new get]
+ set new_repo [forward_slashify [.tlr.new get]]
+ if {! [regexp {^\s*$} $new_repo]} {
+ # repository entry widget non-empty: use it
+ if {$::repos(main) ne $new_repo} {
+ set ::repos(main) $new_repo
set changes 1
}
}
@@ -1587,16 +1574,27 @@ proc restore_backups_dialog {} {
##### package-related #####
-proc update_self_w32 {} {
- if $::multiuser {
- set mess \
- [__ "Close this shell and run in an administrative command-prompt:"]
- } else {
- set mess [__ "Close this shell and run in a command-prompt:"]
- }
- set mess [string cat $mess "\n\ntlmgr update --self"]
- tk_messageBox -message $mess
- return
+### updating
+
+proc update_tlmgr_w32 {} {
+ close_tlmgr
+ # cannot overwrite runscript.dll because it is in use.
+ # move it aside instead and put a copy in its place.
+ set runbk [file join $::instroot "temp" "runbk"]
+ if [file exists $runbk] {
+ file delete -force $runbk
+ }
+ file mkdir $runbk
+ file rename -force -- "${::instroot}/bin/win32/runscript.dll" $runbk
+ file copy "$runbk/runscript.dll" "${::instroot}/bin/win32"
+ # tell tlmgr via an environment variable that it was invoked by tlshell
+ set ::env(from_tcl) 1
+ # don't try pipes or capturing, because of
+ # tlmgr's acrobatics with nested command prompts
+ wm iconify .
+ exec -ignorestderr cmd /k "start cmd /k tlmgr update --self"
+ exec $::progname &
+ destroy .
}
proc update_tlmgr {} {
@@ -1605,7 +1603,7 @@ proc update_tlmgr {} {
return
}
if {$::tcl_platform(platform) eq "windows"} {
- update_self_w32
+ update_tlmgr_w32
return
}
run_cmd "update --self" 1
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
index 2993075c0db..65317903f74 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2020-02-08]
+
+### Added
+- `\l_keys_key_str` and `\l_keys_path_str`
+
+### Deprecated
+- `\l_keys_key_tl` and `\l_keys_path_tl`, replaced by `\l_keys_key_str` and
+ `\l_keys_path_str`, respectively
+
## [2020-02-03]
### Changed
@@ -586,7 +595,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step func­tions have been added for dim vari­ables,
e.g. `\dim_step_in­line:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-02-03...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-02-08...HEAD
+[2020-02-08]: https://github.com/latex3/latex3/compare/2020-02-03...2020-02-08
[2020-02-03]: https://github.com/latex3/latex3/compare/2020-01-31...2020-02-03
[2020-01-31]: https://github.com/latex3/latex3/compare/2020-01-22...2020-01-31
[2020-01-22]: https://github.com/latex3/latex3/compare/2020-01-12...2020-01-22
diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md
index a004f57138a..3fe9fde9d1f 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/README.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2020-02-03
+Release 2020-02-08
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index ba7abfc3295..067151191bc 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
index aa9a16c2af8..48a2260cf0d 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
index f9242b5fdc5..e815ff55b79 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2020-02-03}
+\date{Released 2020-02-08}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index 8905a206617..20e93c99a9d 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
index fc4c48aefc0..dda09e21379 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
index 8c00d845e85..a024c70236d 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
index 9a15e6f09eb..1be81998eed 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
index eef685088a3..d3fb37b0ab5 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
index cd9b45d7fd2..94255ae3dac 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
index 850660fd970..6b899baf03a 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
index 9543481f2f3..00355e0e959 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
index 8d45eb668a8..3c622d11572 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
index ca357556baf..450b99f51c1 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
index 462495b61b0..9c0c61bb183 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
index af9e3ed9738..4ab0051120f 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
index 4139046bb28..22d9abcc6aa 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
index 7609ae164aa..b1601aef362 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
index bef029d5403..3ca1989e72e 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt
@@ -58,6 +58,8 @@ Function Expires end
\etex_....:D 2019
\hbox_unpack_clear:c 2020
\hbox_unpack_clear:N 2020
+\l_keys_key_tl 2022
+\l_keys_path_tl 2022
\lua_escape_x:n 2019
\luatex_...:D 2019
\msg_interrupt:nn 2019
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
index 038c80e6bdd..c2608d4d1b2 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index 5137403b927..6aa7e3c926b 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
index aa8aec5ef37..2465a4b070b 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2020-02-03}
+\date{Released 2020-02-08}
\begin{document}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
index 3f5d9029d31..ee618dbe883 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
index 2bbeb7d28ea..f50d11264cc 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
+++ b/Master/texmf-dist/doc/latex/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 2020-02-03}
+\date{Released 2020-02-08}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
index 9d0739ae266..801ca39d2c6 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
index 4bc519c592a..773ed8878a7 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
+++ b/Master/texmf-dist/doc/latex/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 2020-02-03}
+\date{Released 2020-02-08}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
index ff8e66a7f04..2dc02a32560 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
index 8219b182a8d..d2349d9a0a9 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2020-02-03}
+\date{Released 2020-02-08}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
index b889b474e55..73d98156b1a 100644
--- a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
@@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2020-02-08]
+
+### Changed
+- Document that `\CurrentOption` is available and should be used in
+ `l3keys2e`
+
## [2020-02-03]
### Fixed
@@ -65,7 +71,8 @@ this project uses date-based 'snapshot' version identifiers.
- Switch to ISO date format
- Improve cross-module use of internal functions
-[Unreleased]: https://github.com/latex3/latex3/compare/2020-02-03...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-02-08...HEAD
+[2020-02-08]: https://github.com/latex3/latex3/compare/2020-02-03...2020-02-08
[2020-02-03]: https://github.com/latex3/latex3/compare/2020-01-12...2020-02-03
[2020-01-12]: https://github.com/latex3/latex3/compare/2019-10-11...2020-01-12
[2019-10-11]: https://github.com/latex3/latex3/compare/2019-05-28...2019-10-11
diff --git a/Master/texmf-dist/doc/latex/l3packages/README.md b/Master/texmf-dist/doc/latex/l3packages/README.md
index 2aee64937dc..b221eec8a1c 100644
--- a/Master/texmf-dist/doc/latex/l3packages/README.md
+++ b/Master/texmf-dist/doc/latex/l3packages/README.md
@@ -1,7 +1,7 @@
LaTeX3 High-Level Concepts
==========================
-Release 2020-02-03
+Release 2020-02-08
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
index be9b3fe7455..542dc679c6f 100644
--- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
index a604056d35e..fd2d9d07656 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
index c76c0074e74..f02a8829d92 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
index 7b088cc47ee..c176bacedc7 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
index 1b2b03dca1a..839e221f6c9 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 0c0648295d8..babef7f652f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2020-02-03}%
+\def\ExplFileDate{2020-02-08}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
index 85e2575abf7..9a3b5177cb0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 46bb4854d18..8f49503a0e0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3basics.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index e9bcf427ac9..6ae17167e28 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index 7580ff736dd..c9024402d4d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index a8cc3a6a977..d6877849c57 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 37d3ffb1f1e..f50ff2bc9af 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index 34604bea8e9..532a8b251a8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
index 8b43ac18df3..b190d376f4f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
index c1eda3e360c..80762d306f4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
@@ -969,7 +969,7 @@
%<@@=keys>
\__kernel_patch:nnn
{
- \cs_if_exist:cF { \c_@@_code_root_tl #1 }
+ \cs_if_exist:cF { \c_@@_code_root_str #1 }
{ \__kernel_debug_log:x { Defining~key~#1~\msg_line_context: } }
}
{ }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index 13a4840144f..5d11e7a4ef7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index 0c1ea2db565..7a00967fb37 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -79,7 +79,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
% \maketitle
% \tableofcontents
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index 230c61104f5..d0e19f8a7c8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index 254424b6575..96dada827dd 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index b7b55dcd96c..6716358b3c8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
index adf058cfe48..92f3b10a84a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index c248c611be3..9b780c36d70 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index b0ab980cef1..778fe9dbd64 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index 1c41c2a4f4a..25e6201161d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index faacc62e3eb..402fcb60eff 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index 1cff3270bbd..74462f5fa26 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index 8e68782976a..da844067555 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index 2e21c63d1a7..91f9e03d1c1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index 32a020ac762..c2805a4ea81 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 40e6816acd4..a798e341317 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index c44a6e7e5c7..9538e327f24 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 3be1a6ea324..dd0ed9a63df 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index ce14dd7fd72..a05bf42c872 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index 0b7c7fc8d89..3988dbe455c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index c068c5bf84e..22514c2959e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index 0803bbc4778..c5f9d80b498 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 2a6cb64cbe0..f1b64fcbe18 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 7f5fccc6545..0ba79b13891 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index 19fcba0f057..a49e49d62fb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index 7f2b4ad391b..d172a1a041c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
@@ -639,8 +639,8 @@
% later.
% \end{function}
%
-% \begin{variable}[updated = 2015-07-14]
-% {\l_keys_key_tl, \l_keys_path_tl, \l_keys_value_tl}
+% \begin{variable}[updated = 2020-02-08]
+% {\l_keys_key_str, \l_keys_path_str, \l_keys_value_tl}
% For each key processed, information of the full \emph{path} of the
% key, the \emph{name} of the key and the \emph{value} of the key is
% available within three token list variables. These may be used within
@@ -661,13 +661,12 @@
% \keys_set:nn { mymodule } { subset / key-a = some-value }
% \end{verbatim}
% has path \texttt{mymodule/subset/key-a}. This information is stored in
-% \cs{l_keys_path_tl}, and will have been processed by \cs{tl_to_str:n}.
+% \cs{l_keys_path_str}.
%
% The \emph{name} of the key is the part of the path after the last
% \texttt{/}, and thus is not unique. In the preceding examples, both keys
% have name \texttt{key-a} despite having different paths. This information
-% is stored in \cs{l_keys_key_tl}, and will have been processed by
-% \cs{tl_to_str:n}.
+% is stored in \cs{l_keys_key_str}.
% \end{variable}
%
% \section{Handling of unknown keys}
@@ -681,7 +680,7 @@
% \keys_define:nn { mymodule }
% {
% unknown .code:n =
-% You~tried~to~set~key~'\l_keys_key_tl'~to~'#1'.
+% You~tried~to~set~key~'\l_keys_key_str'~to~'#1'.
% }
% \end{verbatim}
%
@@ -1169,28 +1168,28 @@
%
% \begin{variable}
% {
-% \c_@@_code_root_tl ,
-% \c_@@_default_root_tl ,
-% \c_@@_groups_root_tl ,
-% \c_@@_inherit_root_tl ,
-% \c_@@_type_root_tl ,
-% \c_@@_validate_root_tl
+% \c_@@_code_root_str ,
+% \c_@@_default_root_str ,
+% \c_@@_groups_root_str ,
+% \c_@@_inherit_root_str ,
+% \c_@@_type_root_str ,
+% \c_@@_validate_root_str
% }
% Various storage areas for the different data which make up keys.
% \begin{macrocode}
-\tl_const:Nn \c_@@_code_root_tl { key~code~>~ }
-\tl_const:Nn \c_@@_default_root_tl { key~default~>~ }
-\tl_const:Nn \c_@@_groups_root_tl { key~groups~>~ }
-\tl_const:Nn \c_@@_inherit_root_tl { key~inherit~>~ }
-\tl_const:Nn \c_@@_type_root_tl { key~type~>~ }
-\tl_const:Nn \c_@@_validate_root_tl { key~validate~>~ }
+\str_const:Nn \c_@@_code_root_str { key~code~>~ }
+\str_const:Nn \c_@@_default_root_str { key~default~>~ }
+\str_const:Nn \c_@@_groups_root_str { key~groups~>~ }
+\str_const:Nn \c_@@_inherit_root_str { key~inherit~>~ }
+\str_const:Nn \c_@@_type_root_str { key~type~>~ }
+\str_const:Nn \c_@@_validate_root_str { key~validate~>~ }
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\c_@@_props_root_tl}
+% \begin{variable}{\c_@@_props_root_str}
% The prefix for storing properties.
% \begin{macrocode}
-\tl_const:Nn \c_@@_props_root_tl { key~prop~>~ }
+\str_const:Nn \c_@@_props_root_str { key~prop~>~ }
% \end{macrocode}
% \end{variable}
%
@@ -1212,17 +1211,19 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_keys_key_tl}
-% The name of a key itself: needed when setting keys.
+% \begin{variable}{\l_keys_key_str, \l_keys_key_tl}
+% The name of a key itself: needed when setting keys. The |tl| version
+% is deprecated but has to be handled manually.
% \begin{macrocode}
+\str_new:N \l_keys_key_str
\tl_new:N \l_keys_key_tl
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_module_tl}
+% \begin{variable}{\l_@@_module_str}
% The module for an entire set of keys.
% \begin{macrocode}
-\tl_new:N \l_@@_module_tl
+\str_new:N \l_@@_module_str
% \end{macrocode}
% \end{variable}
%
@@ -1241,33 +1242,36 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_keys_path_tl}
+% \begin{variable}{\l_keys_path_str, \l_keys_path_tl}
% The \enquote{path} of the current key is stored here: this is
-% available to the programmer and so is public.
+% available to the programmer and so is public. The older version is
+% deprecated but has to be handled manually.
% \begin{macrocode}
+\str_new:N \l_keys_path_str
\tl_new:N \l_keys_path_tl
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_inherit_tl}
+% \begin{variable}{\l_@@_inherit_str}
% \begin{macrocode}
-\tl_new:N \l_@@_inherit_tl
+\str_new:N \l_@@_inherit_str
% \end{macrocode}
% \end{variable}
%
% \begin{variable}{\l_@@_relative_tl}
-% The relative path for passing keys back to the user.
+% The relative path for passing keys back to the user. As this can
+% be explicitly no-value, it must be a token list.
% \begin{macrocode}
\tl_new:N \l_@@_relative_tl
\tl_set:Nn \l_@@_relative_tl { \q_no_value }
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_property_tl}
+% \begin{variable}{\l_@@_property_str}
% The \enquote{property} begin set for a key at definition time is
% stored here.
% \begin{macrocode}
-\tl_new:N \l_@@_property_tl
+\str_new:N \l_@@_property_str
% \end{macrocode}
% \end{variable}
%
@@ -1321,12 +1325,12 @@
% removing any leading |/| (which is not needed here).
% \begin{macrocode}
\cs_new_protected:Npn \keys_define:nn
- { \@@_define:onn \l_@@_module_tl }
+ { \@@_define:onn \l_@@_module_str }
\cs_new_protected:Npn \@@_define:nnn #1#2#3
{
- \tl_set:Nx \l_@@_module_tl { \@@_trim_spaces:n {#2} }
+ \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} }
\keyval_parse:NNn \@@_define:n \@@_define:nn {#3}
- \tl_set:Nn \l_@@_module_tl {#1}
+ \str_set:Nn \l_@@_module_str {#1}
}
\cs_generate_variant:Nn \@@_define:nnn { o }
% \end{macrocode}
@@ -1354,14 +1358,13 @@
\cs_new_protected:Npn \@@_define_aux:nn #1#2
{
\@@_property_find:n {#1}
- \cs_if_exist:cTF { \c_@@_props_root_tl \l_@@_property_tl }
- { \@@_define_code:n {#2}
- }
+ \cs_if_exist:cTF { \c_@@_props_root_str \l_@@_property_str }
+ { \@@_define_code:n {#2} }
{
- \tl_if_empty:NF \l_@@_property_tl
+ \str_if_empty:NF \l_@@_property_str
{
\__kernel_msg_error:nnxx { kernel } { key-property-unknown }
- { \l_@@_property_tl } { \l_keys_path_tl }
+ { \l_@@_property_str } { \l_keys_path_str }
}
}
}
@@ -1378,43 +1381,44 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_property_find:n #1
{
- \tl_set:Nx \l_@@_property_tl { \@@_trim_spaces:n {#1} }
- \exp_after:wN \@@_property_find:w \l_@@_property_tl . .
+ \str_set:Nx \l_@@_property_str { \@@_trim_spaces:n {#1} }
+ \exp_after:wN \@@_property_find:w \l_@@_property_str . .
\q_stop {#1}
}
\cs_new_protected:Npn \@@_property_find:w #1 . #2 . #3 \q_stop #4
{
\tl_if_blank:nTF {#3}
{
- \tl_clear:N \l_@@_property_tl
+ \str_clear:N \l_@@_property_str
\__kernel_msg_error:nnn { kernel } { key-no-property } {#4}
}
{
\str_if_eq:nnTF {#3} { . }
{
- \tl_set:Nx \l_keys_path_tl
+ \str_set:Nx \l_keys_path_str
{
- \tl_if_empty:NF \l_@@_module_tl
- { \l_@@_module_tl / }
+ \str_if_empty:NF \l_@@_module_str
+ { \l_@@_module_str / }
\tl_trim_spaces:n {#1}
}
- \tl_set:Nn \l_@@_property_tl { . #2 }
+ \str_set:Nn \l_@@_property_str { . #2 }
}
{
- \tl_set:Nx \l_keys_path_tl { \l_@@_module_tl / #1 . #2 }
+ \str_set:Nx \l_keys_path_str { \l_@@_module_str / #1 . #2 }
\@@_property_search:w #3 \q_stop
}
+ \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
}
}
\cs_new_protected:Npn \@@_property_search:w #1 . #2 \q_stop
{
\str_if_eq:nnTF {#2} { . }
{
- \tl_set:Nx \l_keys_path_tl { \l_keys_path_tl }
- \tl_set:Nn \l_@@_property_tl { . #1 }
+ \str_set:Nx \l_keys_path_str { \l_keys_path_str }
+ \str_set:Nn \l_@@_property_str { . #1 }
}
{
- \tl_set:Nx \l_keys_path_tl { \l_keys_path_tl . #1 }
+ \str_set:Nx \l_keys_path_str { \l_keys_path_str . #1 }
\@@_property_search:w #2 \q_stop
}
}
@@ -1435,15 +1439,15 @@
\bool_if:NTF \l_@@_no_value_bool
{
\exp_after:wN \@@_define_code:w
- \l_@@_property_tl \q_stop
- { \use:c { \c_@@_props_root_tl \l_@@_property_tl } }
+ \l_@@_property_str \q_stop
+ { \use:c { \c_@@_props_root_str \l_@@_property_str } }
{
\__kernel_msg_error:nnxx { kernel }
- { key-property-requires-value } { \l_@@_property_tl }
- { \l_keys_path_tl }
+ { key-property-requires-value } { \l_@@_property_str }
+ { \l_keys_path_str }
}
}
- { \use:c { \c_@@_props_root_tl \l_@@_property_tl } {#1} }
+ { \use:c { \c_@@_props_root_str \l_@@_property_str } {#1} }
}
\exp_last_unbraced:NNNNo
\cs_new:Npn \@@_define_code:w #1 \c_colon_str #2 \q_stop
@@ -1463,14 +1467,14 @@
{
\bool_if_exist:NF #1 { \bool_new:N #1 }
\@@_choice_make:
- \@@_cmd_set:nx { \l_keys_path_tl / true }
+ \@@_cmd_set:nx { \l_keys_path_str / true }
{ \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
- \@@_cmd_set:nx { \l_keys_path_tl / false }
+ \@@_cmd_set:nx { \l_keys_path_str / false }
{ \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
- \@@_cmd_set:nn { \l_keys_path_tl / unknown }
+ \@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_tl }
+ { \l_keys_key_str }
}
\@@_default_set:n { true }
}
@@ -1485,14 +1489,14 @@
{
\bool_if_exist:NF #1 { \bool_new:N #1 }
\@@_choice_make:
- \@@_cmd_set:nx { \l_keys_path_tl / true }
+ \@@_cmd_set:nx { \l_keys_path_str / true }
{ \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
- \@@_cmd_set:nx { \l_keys_path_tl / false }
+ \@@_cmd_set:nx { \l_keys_path_str / false }
{ \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
- \@@_cmd_set:nn { \l_keys_path_tl / unknown }
+ \@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_tl }
+ { \l_keys_key_str }
}
\@@_default_set:n { true }
}
@@ -1514,14 +1518,14 @@
\cs_new_protected:Npn \@@_choice_make:N #1
{
\cs_if_exist:cTF
- { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_type_root_str \@@_parent:o \l_keys_path_str }
{
\str_if_eq:vnTF
- { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_type_root_str \@@_parent:o \l_keys_path_str }
{ choice }
{
\__kernel_msg_error:nnxx { kernel } { nested-choice-key }
- { \l_keys_path_tl } { \@@_parent:o \l_keys_path_tl }
+ { \l_keys_path_tl } { \@@_parent:o \l_keys_path_str }
}
{ \@@_choice_make_aux:N #1 }
}
@@ -1529,13 +1533,13 @@
}
\cs_new_protected:Npn \@@_choice_make_aux:N #1
{
- \cs_set_nopar:cpn { \c_@@_type_root_tl \l_keys_path_tl }
+ \cs_set_nopar:cpn { \c_@@_type_root_str \l_keys_path_str }
{ choice }
- \@@_cmd_set:nn { \l_keys_path_tl } { #1 {##1} }
- \@@_cmd_set:nn { \l_keys_path_tl / unknown }
+ \@@_cmd_set:nn { \l_keys_path_str } { #1 {##1} }
+ \@@_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnxx { kernel } { key-choice-unknown }
- { \l_keys_path_tl } {##1}
+ { \l_keys_path_str } {##1}
}
}
% \end{macrocode}
@@ -1560,7 +1564,7 @@
{
\int_incr:N \l_keys_choice_int
\@@_cmd_set:nx
- { \l_keys_path_tl / \@@_trim_spaces:n {##1} }
+ { \l_keys_path_str / \@@_trim_spaces:n {##1} }
{
\tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
\int_set:Nn \exp_not:N \l_keys_choice_int
@@ -1579,7 +1583,7 @@
% defining a new key, then saves the code.
% \begin{macrocode}
\cs_new_protected:Npn \@@_cmd_set:nn #1#2
- { \cs_set_protected:cpn { \c_@@_code_root_tl #1 } ##1 {#2} }
+ { \cs_set_protected:cpn { \c_@@_code_root_str #1 } ##1 {#2} }
\cs_generate_variant:Nn \@@_cmd_set:nn { nx , Vn , Vo }
% \end{macrocode}
% \end{macro}
@@ -1593,12 +1597,12 @@
\tl_if_empty:nTF {#1}
{
\cs_set_eq:cN
- { \c_@@_default_root_tl \l_keys_path_tl }
+ { \c_@@_default_root_str \l_keys_path_str }
\tex_undefined:D
}
{
\cs_set_nopar:cpx
- { \c_@@_default_root_tl \l_keys_path_tl }
+ { \c_@@_default_root_str \l_keys_path_str }
{ \exp_not:n {#1} }
\@@_value_requirement:nn { required } { false }
}
@@ -1618,11 +1622,11 @@
\clist_set:Nn \l_@@_groups_clist {#1}
\clist_if_empty:NTF \l_@@_groups_clist
{
- \cs_set_eq:cN { \c_@@_groups_root_tl \l_keys_path_tl }
+ \cs_set_eq:cN { \c_@@_groups_root_str \l_keys_path_str }
\tex_undefined:D
}
{
- \cs_set_eq:cN { \c_@@_groups_root_tl \l_keys_path_tl }
+ \cs_set_eq:cN { \c_@@_groups_root_str \l_keys_path_str }
\l_@@_groups_clist
}
}
@@ -1636,7 +1640,7 @@
\cs_new_protected:Npn \@@_inherit:n #1
{
\@@_undefine:
- \cs_set_nopar:cpn { \c_@@_inherit_root_tl \l_keys_path_tl } {#1}
+ \cs_set_nopar:cpn { \c_@@_inherit_root_str \l_keys_path_str } {#1}
}
% \end{macrocode}
% \end{macro}
@@ -1647,11 +1651,11 @@
\cs_new_protected:Npn \@@_initialise:n #1
{
\cs_if_exist:cTF
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{ \@@_execute_inherit: }
{
- \tl_clear:N \l_@@_inherit_tl
- \cs_if_exist_use:cT { \c_@@_code_root_tl \l_keys_path_tl } { {#1} }
+ \str_clear:N \l_@@_inherit_str
+ \cs_if_exist_use:cT { \c_@@_code_root_str \l_keys_path_str } { {#1} }
}
}
% \end{macrocode}
@@ -1663,14 +1667,14 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_meta_make:n #1
{
- \@@_cmd_set:Vo \l_keys_path_tl
+ \@@_cmd_set:Vo \l_keys_path_str
{
\exp_after:wN \keys_set:nn
- \exp_after:wN { \l_@@_module_tl } {#1}
+ \exp_after:wN { \l_@@_module_str } {#1}
}
}
\cs_new_protected:Npn \@@_meta_make:nn #1#2
- { \@@_cmd_set:Vn \l_keys_path_tl { \keys_set:nn {#1} {#2} } }
+ { \@@_cmd_set:Vn \l_keys_path_str { \keys_set:nn {#1} {#2} } }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1684,8 +1688,8 @@
\exp_after:wN \@@_find_key_module:NNw
\exp_after:wN \l_@@_tmpa_tl
\exp_after:wN \l_@@_tmpb_tl
- \l_keys_path_tl / \q_stop
- \@@_cmd_set:nx { \l_keys_path_tl }
+ \l_keys_path_str / \q_stop
+ \@@_cmd_set:nx { \l_keys_path_str }
{
\exp_not:c { prop_ #2 put:Nnn }
\exp_not:N #1
@@ -1707,7 +1711,7 @@
{ code , default , groups , inherit , type , validate }
{
\cs_set_eq:cN
- { \tl_use:c { c_@@_ ##1 _root_tl } \l_keys_path_tl }
+ { \tl_use:c { c_@@_ ##1 _root_str } \l_keys_path_str }
\tex_undefined:D
}
}
@@ -1730,17 +1734,17 @@
{ true }
{
\cs_set_eq:cc
- { \c_@@_validate_root_tl \l_keys_path_tl }
+ { \c_@@_validate_root_str \l_keys_path_str }
{ @@_validate_ #1 : }
}
{ false }
{
\cs_if_eq:ccT
- { \c_@@_validate_root_tl \l_keys_path_tl }
+ { \c_@@_validate_root_str \l_keys_path_str }
{ @@_validate_ #1 : }
{
\cs_set_eq:cN
- { \c_@@_validate_root_tl \l_keys_path_tl }
+ { \c_@@_validate_root_str \l_keys_path_str }
\tex_undefined:D
}
}
@@ -1756,7 +1760,7 @@
\bool_if:NF \l_@@_no_value_bool
{
\__kernel_msg_error:nnxx { kernel } { value-forbidden }
- { \l_keys_path_tl } { \l_keys_value_tl }
+ { \l_keys_path_str } { \l_keys_value_tl }
\@@_validate_cleanup:w
}
}
@@ -1765,7 +1769,7 @@
\bool_if:NT \l_@@_no_value_bool
{
\__kernel_msg_error:nnx { kernel } { value-required }
- { \l_keys_path_tl }
+ { \l_keys_path_str }
\@@_validate_cleanup:w
}
}
@@ -1783,7 +1787,7 @@
\cs_new_protected:Npn \@@_variable_set:NnnN #1#2#3#4
{
\use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 }
- \@@_cmd_set:nx { \l_keys_path_tl }
+ \@@_cmd_set:nx { \l_keys_path_str }
{
\exp_not:c { #2 _ #3 set:N #4 }
\exp_not:N #1
@@ -1816,13 +1820,13 @@
% \begin{macro}{.bool_gset:N, .bool_gset:c}
% One function for this.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_set:N } #1
{ \@@_bool_set:Nn #1 { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_set:c } #1
{ \@@_bool_set:cn {#1} { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_gset:N } #1
{ \@@_bool_set:Nn #1 { g } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_gset:c } #1
{ \@@_bool_set:cn {#1} { g } }
% \end{macrocode}
% \end{macro}
@@ -1832,13 +1836,13 @@
% \begin{macro}{.bool_gset_inverse:N, .bool_gset_inverse:c}
% One function for this.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_set_inverse:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_set_inverse:N } #1
{ \@@_bool_set_inverse:Nn #1 { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_set_inverse:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_set_inverse:c } #1
{ \@@_bool_set_inverse:cn {#1} { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_gset_inverse:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_gset_inverse:N } #1
{ \@@_bool_set_inverse:Nn #1 { g } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .bool_gset_inverse:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .bool_gset_inverse:c } #1
{ \@@_bool_set_inverse:cn {#1} { g } }
% \end{macrocode}
% \end{macro}
@@ -1848,7 +1852,7 @@
% Making a choice is handled internally, as it is also needed by
% \texttt{.generate_choices:n}.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .choice: }
+\cs_new_protected:cpn { \c_@@_props_root_str .choice: }
{ \@@_choice_make: }
% \end{macrocode}
% \end{macro}
@@ -1859,13 +1863,13 @@
% Here, |#1| consists of two separate
% arguments, hence the slightly odd-looking implementation.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .choices:nn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:nn } #1
{ \@@_choices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .choices:Vn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:Vn } #1
{ \exp_args:NV \@@_choices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .choices:on } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:on } #1
{ \exp_args:No \@@_choices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .choices:xn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:xn } #1
{ \exp_args:Nx \@@_choices_make:nn #1 }
% \end{macrocode}
% \end{macro}
@@ -1874,21 +1878,21 @@
% Creating code is simply a case of passing through to the underlying
% \texttt{set} function.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .code:n } #1
- { \@@_cmd_set:nn { \l_keys_path_tl } {#1} }
+\cs_new_protected:cpn { \c_@@_props_root_str .code:n } #1
+ { \@@_cmd_set:nn { \l_keys_path_str } {#1} }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{.clist_set:N, .clist_set:c}
% \begin{macro}{.clist_gset:N, .clist_gset:c}
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .clist_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .clist_set:N } #1
{ \@@_variable_set:NnnN #1 { clist } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .clist_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .clist_set:c } #1
{ \@@_variable_set:cnnN {#1} { clist } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .clist_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .clist_gset:N } #1
{ \@@_variable_set:NnnN #1 { clist } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .clist_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .clist_gset:c } #1
{ \@@_variable_set:cnnN {#1} { clist } { g } n }
% \end{macrocode}
% \end{macro}
@@ -1897,13 +1901,13 @@
% \begin{macro}{.default:n, .default:V, .default:o, .default:x}
% Expansion is left to the internal functions.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .default:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .default:n } #1
{ \@@_default_set:n {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .default:V } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .default:V } #1
{ \exp_args:NV \@@_default_set:n #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .default:o } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .default:o } #1
{ \exp_args:No \@@_default_set:n {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .default:x } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .default:x } #1
{ \exp_args:Nx \@@_default_set:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1912,13 +1916,13 @@
% \begin{macro}{.dim_gset:N, .dim_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .dim_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .dim_set:N } #1
{ \@@_variable_set_required:NnnN #1 { dim } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .dim_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .dim_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { dim } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .dim_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .dim_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { dim } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .dim_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .dim_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { dim } { g } n }
% \end{macrocode}
% \end{macro}
@@ -1928,13 +1932,13 @@
% \begin{macro}{.fp_gset:N, .fp_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .fp_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .fp_set:N } #1
{ \@@_variable_set_required:NnnN #1 { fp } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .fp_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .fp_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { fp } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .fp_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .fp_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { fp } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .fp_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .fp_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { fp } { g } n }
% \end{macrocode}
% \end{macro}
@@ -1943,7 +1947,7 @@
% \begin{macro}{.groups:n}
% A single property to create groups of keys.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .groups:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .groups:n } #1
{ \@@_groups_set:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1951,7 +1955,7 @@
% \begin{macro}{.inherit:n}
% Nothing complex: only one variant at the moment!
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .inherit:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .inherit:n } #1
{ \@@_inherit:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1959,13 +1963,13 @@
% \begin{macro}{.initial:n, .initial:V, .initial:o, .initial:x}
% The standard hand-off approach.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .initial:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:n } #1
{ \@@_initialise:n {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .initial:V } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:V } #1
{ \exp_args:NV \@@_initialise:n #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .initial:o } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:o } #1
{ \exp_args:No \@@_initialise:n {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .initial:x } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:x } #1
{ \exp_args:Nx \@@_initialise:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1974,13 +1978,13 @@
% \begin{macro}{.int_gset:N, .int_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .int_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .int_set:N } #1
{ \@@_variable_set_required:NnnN #1 { int } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .int_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .int_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { int } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .int_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .int_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { int } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .int_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .int_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { int } { g } n }
% \end{macrocode}
% \end{macro}
@@ -1989,7 +1993,7 @@
% \begin{macro}{.meta:n}
% Making a meta is handled internally.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .meta:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .meta:n } #1
{ \@@_meta_make:n {#1} }
% \end{macrocode}
% \end{macro}
@@ -1998,7 +2002,7 @@
% Meta with path: potentially lots of variants, but for the moment
% no so many defined.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .meta:nn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .meta:nn } #1
{ \@@_meta_make:nn #1 }
% \end{macrocode}
% \end{macro}
@@ -2012,15 +2016,15 @@
% The same idea as \texttt{.choice:} and \texttt{.choices:nn}, but
% where more than one choice is allowed.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoice: }
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoice: }
{ \@@_multichoice_make: }
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoices:nn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:nn } #1
{ \@@_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoices:Vn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:Vn } #1
{ \exp_args:NV \@@_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoices:on } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:on } #1
{ \exp_args:No \@@_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_tl .multichoices:xn } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:xn } #1
{ \exp_args:Nx \@@_multichoices_make:nn #1 }
% \end{macrocode}
% \end{macro}
@@ -2029,13 +2033,13 @@
% \begin{macro}{.muskip_set:N, .muskip_set:c, .muskip_gset:N, .muskip_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .muskip_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .muskip_set:N } #1
{ \@@_variable_set_required:NnnN #1 { muskip } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .muskip_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .muskip_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { muskip } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .muskip_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .muskip_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { muskip } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .muskip_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .muskip_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { muskip } { g } n }
% \end{macrocode}
% \end{macro}
@@ -2043,13 +2047,13 @@
% \begin{macro}{.prop_put:N, .prop_put:c, .prop_gput:N, .prop_gput:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .prop_put:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .prop_put:N } #1
{ \@@_prop_put:Nn #1 { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .prop_put:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .prop_put:c } #1
{ \@@_prop_put:cn {#1} { } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .prop_gput:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .prop_gput:N } #1
{ \@@_prop_put:Nn #1 { g } }
-\cs_new_protected:cpn { \c_@@_props_root_tl .prop_gput:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .prop_gput:c } #1
{ \@@_prop_put:cn {#1} { g } }
% \end{macrocode}
% \end{macro}
@@ -2058,13 +2062,13 @@
% \begin{macro}{.skip_gset:N, .skip_gset:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .skip_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .skip_set:N } #1
{ \@@_variable_set_required:NnnN #1 { skip } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .skip_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .skip_set:c } #1
{ \@@_variable_set_required:cnnN {#1} { skip } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .skip_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .skip_gset:N } #1
{ \@@_variable_set_required:NnnN #1 { skip } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .skip_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .skip_gset:c } #1
{ \@@_variable_set_required:cnnN {#1} { skip } { g } n }
% \end{macrocode}
% \end{macro}
@@ -2076,21 +2080,21 @@
% \begin{macro}{.tl_gset_x:N, .tl_gset_x:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_set:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set:N } #1
{ \@@_variable_set:NnnN #1 { tl } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_set:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_set_x:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:N } #1
{ \@@_variable_set:NnnN #1 { tl } { } x }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_set_x:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { } x }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_gset:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:N } #1
{ \@@_variable_set:NnnN #1 { tl } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_gset:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_gset_x:N } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:N } #1
{ \@@_variable_set:NnnN #1 { tl } { g } x }
-\cs_new_protected:cpn { \c_@@_props_root_tl .tl_gset_x:c } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { g } x }
% \end{macrocode}
% \end{macro}
@@ -2101,7 +2105,7 @@
% \begin{macro}{.undefine:}
% Another simple wrapper.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .undefine: }
+\cs_new_protected:cpn { \c_@@_props_root_str .undefine: }
{ \@@_undefine: }
% \end{macrocode}
% \end{macro}
@@ -2110,9 +2114,9 @@
% \begin{macro}{.value_required:n}
% These are very similar, so both call the same function.
% \begin{macrocode}
-\cs_new_protected:cpn { \c_@@_props_root_tl .value_forbidden:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .value_forbidden:n } #1
{ \@@_value_requirement:nn { forbidden } {#1} }
-\cs_new_protected:cpn { \c_@@_props_root_tl .value_required:n } #1
+\cs_new_protected:cpn { \c_@@_props_root_str .value_required:n } #1
{ \@@_value_requirement:nn { required } {#1} }
% \end{macrocode}
% \end{macro}
@@ -2150,12 +2154,12 @@
}
\cs_generate_variant:Nn \keys_set:nn { nV , nv , no }
\cs_new_protected:Npn \@@_set:nn #1#2
- { \exp_args:No \@@_set:nnn \l_@@_module_tl {#1} {#2} }
+ { \exp_args:No \@@_set:nnn \l_@@_module_str {#1} {#2} }
\cs_new_protected:Npn \@@_set:nnn #1#2#3
{
- \tl_set:Nx \l_@@_module_tl { \@@_trim_spaces:n {#2} }
+ \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} }
\keyval_parse:NNn \@@_set_keyval:n \@@_set_keyval:nn {#3}
- \tl_set:Nn \l_@@_module_tl {#1}
+ \str_set:Nn \l_@@_module_str {#1}
}
% \end{macrocode}
% \end{macro}
@@ -2354,12 +2358,12 @@
\cs_new_protected:Npn \@@_set_keyval:n #1
{
\bool_set_true:N \l_@@_no_value_bool
- \@@_set_keyval:onn \l_@@_module_tl {#1} { }
+ \@@_set_keyval:onn \l_@@_module_str {#1} { }
}
\cs_new_protected:Npn \@@_set_keyval:nn #1#2
{
\bool_set_false:N \l_@@_no_value_bool
- \@@_set_keyval:onn \l_@@_module_tl {#1} {#2}
+ \@@_set_keyval:onn \l_@@_module_str {#1} {#2}
}
% \end{macrocode}
% The key path here can be fully defined, after which there is a search
@@ -2370,33 +2374,34 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_keyval:nnn #1#2#3
{
- \tl_set:Nx \l_keys_path_tl
+ \tl_set:Nx \l_keys_path_str
{
\tl_if_blank:nF {#1}
{ #1 / }
\@@_trim_spaces:n {#2}
}
- \tl_clear:N \l_@@_module_tl
- \tl_clear:N \l_@@_inherit_tl
+ \str_clear:N \l_@@_module_str
+ \str_clear:N \l_@@_inherit_str
\exp_after:wN \@@_find_key_module:NNw
- \exp_after:wN \l_@@_module_tl
- \exp_after:wN \l_keys_key_tl
- \l_keys_path_tl / \q_stop
+ \exp_after:wN \l_@@_module_str
+ \exp_after:wN \l_keys_key_str
+ \l_keys_path_str / \q_stop
+ \tl_set_eq:NN \l_keys_key_tl \l_keys_key_str
\@@_value_or_default:n {#3}
\bool_if:NTF \l_@@_selective_bool
{ \@@_set_selective: }
{ \@@_execute: }
- \tl_set:Nn \l_@@_module_tl {#1}
+ \str_set:Nn \l_@@_module_str {#1}
}
\cs_generate_variant:Nn \@@_set_keyval:nnn { o }
\cs_new_protected:Npn \@@_find_key_module:NNw #1#2#3 / #4 \q_stop
{
\tl_if_blank:nTF {#4}
- { \tl_set:Nn #2 {#3} }
+ { \str_set:Nn #2 {#3} }
{
- \tl_put_right:Nx #1
+ \str_put_right:Nx #1
{
- \tl_if_empty:NF #1 { / }
+ \str_if_empty:NF #1 { / }
#3
}
\@@_find_key_module:NNw #1#2 #4 \q_stop
@@ -2410,10 +2415,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_selective:
{
- \cs_if_exist:cTF { \c_@@_groups_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c_@@_groups_root_str \l_keys_path_str }
{
\clist_set_eq:Nc \l_@@_groups_clist
- { \c_@@_groups_root_tl \l_keys_path_tl }
+ { \c_@@_groups_root_str \l_keys_path_str }
\@@_check_groups:
}
{
@@ -2469,16 +2474,16 @@
{
\bool_if:NTF \l_@@_no_value_bool
{
- \cs_if_exist:cTF { \c_@@_default_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c_@@_default_root_str \l_keys_path_str }
{
\tl_set_eq:Nc
\l_keys_value_tl
- { \c_@@_default_root_tl \l_keys_path_tl }
+ { \c_@@_default_root_str \l_keys_path_str }
}
{
\tl_clear:N \l_keys_value_tl
\cs_if_exist:cT
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{ \@@_default_inherit: }
}
}
@@ -2487,14 +2492,14 @@
\cs_new_protected:Npn \@@_default_inherit:
{
\clist_map_inline:cn
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{
\cs_if_exist:cT
- { \c_@@_default_root_tl ##1 / \l_keys_key_tl }
+ { \c_@@_default_root_str ##1 / \l_keys_key_str }
{
\tl_set_eq:Nc
\l_keys_value_tl
- { \c_@@_default_root_tl ##1 / \l_keys_key_tl }
+ { \c_@@_default_root_str ##1 / \l_keys_key_str }
\clist_map_break:
}
}
@@ -2514,15 +2519,15 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_execute:
{
- \cs_if_exist:cTF { \c_@@_code_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c_@@_code_root_str \l_keys_path_str }
{
- \cs_if_exist_use:c { \c_@@_validate_root_tl \l_keys_path_tl }
- \cs:w \c_@@_code_root_tl \l_keys_path_tl \exp_after:wN \cs_end:
+ \cs_if_exist_use:c { \c_@@_validate_root_str \l_keys_path_str }
+ \cs:w \c_@@_code_root_str \l_keys_path_str \exp_after:wN \cs_end:
\exp_after:wN { \l_keys_value_tl }
}
{
\cs_if_exist:cTF
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{ \@@_execute_inherit: }
{ \@@_execute_unknown: }
}
@@ -2535,14 +2540,14 @@
\cs_new_protected:Npn \@@_execute_inherit:
{
\clist_map_inline:cn
- { \c_@@_inherit_root_tl \@@_parent:o \l_keys_path_tl }
+ { \c_@@_inherit_root_str \@@_parent:o \l_keys_path_str }
{
\cs_if_exist:cT
- { \c_@@_code_root_tl ##1 / \l_keys_key_tl }
+ { \c_@@_code_root_str ##1 / \l_keys_key_str }
{
- \tl_set:Nn \l_@@_inherit_tl {##1}
- \cs_if_exist_use:c { \c_@@_validate_root_tl ##1 / \l_keys_key_tl }
- \cs:w \c_@@_code_root_tl ##1 / \l_keys_key_tl
+ \str_set:Nn \l_@@_inherit_str {##1}
+ \cs_if_exist_use:c { \c_@@_validate_root_str ##1 / \l_keys_key_str }
+ \cs:w \c_@@_code_root_str ##1 / \l_keys_key_str
\exp_after:wN \cs_end: \exp_after:wN
{ \l_keys_value_tl }
\clist_map_break:n { \use_none:n }
@@ -2556,22 +2561,22 @@
{ \@@_store_unused: }
{
\cs_if_exist:cTF
- { \c_@@_code_root_tl \l_@@_module_tl / unknown }
+ { \c_@@_code_root_str \l_@@_module_str / unknown }
{
- \cs:w \c_@@_code_root_tl \l_@@_module_tl / unknown
+ \cs:w \c_@@_code_root_str \l_@@_module_str / unknown
\exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl }
}
{
\__kernel_msg_error:nnxx { kernel } { key-unknown }
- { \l_keys_path_tl } { \l_@@_module_tl }
+ { \l_keys_path_str } { \l_@@_module_str }
}
}
}
\cs_new:Npn \@@_execute:nn #1#2
{
- \cs_if_exist:cTF { \c_@@_code_root_tl #1 }
+ \cs_if_exist:cTF { \c_@@_code_root_str #1 }
{
- \cs:w \c_@@_code_root_tl #1 \exp_after:wN \cs_end:
+ \cs:w \c_@@_code_root_str #1 \exp_after:wN \cs_end:
\exp_after:wN { \l_keys_value_tl }
}
{#2}
@@ -2589,7 +2594,7 @@
{
\clist_put_right:Nx \l_@@_unused_clist
{
- \exp_not:o \l_keys_key_tl
+ \exp_not:o \l_keys_key_str
\bool_if:NF \l_@@_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -2599,7 +2604,7 @@
{
\clist_put_right:Nx \l_@@_unused_clist
{
- \exp_not:o \l_keys_path_tl
+ \exp_not:o \l_keys_path_str
\bool_if:NF \l_@@_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -2622,7 +2627,7 @@
\tl_if_blank:nF {##1}
{
\__kernel_msg_error:nnxx { kernel } { bad-relative-key-path }
- \l_keys_path_tl
+ \l_keys_path_str
\l_@@_relative_tl
}
\clist_put_right:Nx \l_@@_unused_clist
@@ -2634,7 +2639,7 @@
}
\use:x
{
- \@@_store_unused:w \l_keys_path_tl
+ \@@_store_unused:w \l_keys_path_str
\l_@@_relative_tl / \l_@@_relative_tl /
\exp_not:N \q_stop
}
@@ -2655,18 +2660,18 @@
% \begin{macrocode}
\cs_new:Npn \@@_choice_find:n #1
{
- \tl_if_empty:NTF \l_@@_inherit_tl
- { \@@_choice_find:nn { \l_keys_path_tl } {#1} }
+ \str_if_empty:NTF \l_@@_inherit_str
+ { \@@_choice_find:nn { \l_keys_path_str } {#1} }
{
\@@_choice_find:nn
- { \l_@@_inherit_tl / \l_keys_key_tl } {#1}
+ { \l_@@_inherit_str / \l_keys_key_str } {#1}
}
}
\cs_new:Npn \@@_choice_find:nn #1#2
{
- \cs_if_exist:cTF { \c_@@_code_root_tl #1 / \@@_trim_spaces:n {#2} }
- { \use:c { \c_@@_code_root_tl #1 / \@@_trim_spaces:n {#2} } {#2} }
- { \use:c { \c_@@_code_root_tl #1 / unknown } {#2} }
+ \cs_if_exist:cTF { \c_@@_code_root_str #1 / \@@_trim_spaces:n {#2} }
+ { \use:c { \c_@@_code_root_str #1 / \@@_trim_spaces:n {#2} } {#2} }
+ { \use:c { \c_@@_code_root_str #1 / unknown } {#2} }
}
\cs_new:Npn \@@_multichoice_find:n #1
{ \clist_map_function:nN {#1} \@@_choice_find:n }
@@ -2742,7 +2747,7 @@
\prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF }
{
\cs_if_exist:cTF
- { \c_@@_code_root_tl \@@_trim_spaces:n { #1 / #2 } }
+ { \c_@@_code_root_str \@@_trim_spaces:n { #1 / #2 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -2756,7 +2761,7 @@
{ p , T , F , TF }
{
\cs_if_exist:cTF
- { \c_@@_code_root_tl \@@_trim_spaces:n { #1 / #2 / #3 } }
+ { \c_@@_code_root_str \@@_trim_spaces:n { #1 / #2 / #3 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -2781,7 +2786,7 @@
{
\exp_args:Nc \cs_replacement_spec:N
{
- \c_@@_code_root_tl
+ \c_@@_code_root_str
\@@_trim_spaces:n { #2 / #3 }
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
index 14caa9430df..140f678de4f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 1623be1c5db..4e248880c32 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index fd8fb7bbd86..46571537f4f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 225410545d8..c835f888afc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 4e7e4316709..e6b2b228143 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 1eadfa8a3e7..53f4a3f5efa 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index f79131bb423..aa5e0059c8d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index 084cac8c28a..d754599b20e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 10cec387fa2..3e3bd7dd23c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 06d877cddbb..0346f67316c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index 09d914f7bcf..a0d100e2f28 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
index d9cce61c5bd..64b3500fee5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index 8481b1e9963..92c86e36a98 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index a10a9c8c58f..fcf809f839c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
index c8fab265b8b..e48d969759b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
index 56881e290fe..72f91af2f13 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index b67c36be9df..7e29a8a3a96 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 0659d6ddb35..0d134636343 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index 14a8a568ef7..2bafe7fb427 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index 22ab4a5fe32..63ea9f7a4e8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
index 2a2d4c2686b..5753e388c9c 100644
--- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
@@ -25,8 +25,8 @@
%<*driver|package>
% The version of expl3 required is tested as early as possible, as
% some really old versions do not define \ProvidesExplPackage.
-\RequirePackage{expl3}[2018/02/21]
-%<package>\@ifpackagelater{expl3}{2018/02/21}
+\RequirePackage{expl3}[2020/02/08]
+%<package>\@ifpackagelater{expl3}{2020/02/08}
%<package> {}
%<package> {%
%<package> \PackageError{l3keys2e}{Support package l3kernel too old}
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
@@ -118,6 +118,12 @@
% \LaTeXe{} kernel function \cs{ProcessOptions}).
% \end{function}
%
+% When passing unknown keys to other packages, the standard \LaTeX{}
+% \tn{CurrentOption} command is available and should be used. In contrast
+% to \cs{l_keys_key_str}, \cs{CurrentOption} is a token list and thus retains
+% category code information. Depending on how options are used by third-party
+% packages, this may be essential for the option to be recognised.
+%
%\end{documentation}
%
%\begin{implementation}
@@ -133,7 +139,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2020-02-03}{}
+\ProvidesExplPackage{l3keys2e}{2020-02-08}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
@@ -180,7 +186,7 @@
unknown .code:n =
{
\msg_error:nnxx { keyvalue } { option-unknown }
- { \l_keys_key_tl } { \@currname }
+ { \l_keys_key_str } { \@currname }
}
}
\AtEndOfPackage
diff --git a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
index 4ff775e3a88..854a3067090 100644
--- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
@@ -167,7 +167,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2020-02-03}{}
+\ProvidesExplPackage{xfp}{2020-02-08}{}
{L3 Floating point unit}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
index 15dedf7641d..9765c75eb1d 100644
--- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
@@ -65,7 +65,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
@@ -535,7 +535,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2020-02-03}{}
+\ProvidesExplPackage{xfrac}{2020-02-08}{}
{L3 Experimental split-level fractions}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
index 81bb4a270a4..1f0f4832717 100644
--- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
@@ -67,7 +67,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
@@ -916,7 +916,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2020-02-03}{}
+\ProvidesExplPackage{xparse}{2020-02-08}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
index d5a97836233..32e8fbbd333 100644
--- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2020-02-03}
+% \date{Released 2020-02-08}
%
% \maketitle
%
@@ -682,7 +682,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2020-02-03}{}
+\ProvidesExplPackage{xtemplate}{2020-02-08}{}
{L3 Experimental prototype document functions}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index f416769c1db..043647b1a45 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -67,7 +67,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-02-03}%
+\def\ExplFileDate{2020-02-08}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -12660,25 +12660,27 @@
LaTeX~is~attempting~to~parse~some~key-value~input~but~found~
two~equals~signs~not~separated~by~a~comma.
}
-\tl_const:Nn \c__keys_code_root_tl { key~code~>~ }
-\tl_const:Nn \c__keys_default_root_tl { key~default~>~ }
-\tl_const:Nn \c__keys_groups_root_tl { key~groups~>~ }
-\tl_const:Nn \c__keys_inherit_root_tl { key~inherit~>~ }
-\tl_const:Nn \c__keys_type_root_tl { key~type~>~ }
-\tl_const:Nn \c__keys_validate_root_tl { key~validate~>~ }
-\tl_const:Nn \c__keys_props_root_tl { key~prop~>~ }
+\str_const:Nn \c__keys_code_root_str { key~code~>~ }
+\str_const:Nn \c__keys_default_root_str { key~default~>~ }
+\str_const:Nn \c__keys_groups_root_str { key~groups~>~ }
+\str_const:Nn \c__keys_inherit_root_str { key~inherit~>~ }
+\str_const:Nn \c__keys_type_root_str { key~type~>~ }
+\str_const:Nn \c__keys_validate_root_str { key~validate~>~ }
+\str_const:Nn \c__keys_props_root_str { key~prop~>~ }
\int_new:N \l_keys_choice_int
\tl_new:N \l_keys_choice_tl
\clist_new:N \l__keys_groups_clist
+\str_new:N \l_keys_key_str
\tl_new:N \l_keys_key_tl
-\tl_new:N \l__keys_module_tl
+\str_new:N \l__keys_module_str
\bool_new:N \l__keys_no_value_bool
\bool_new:N \l__keys_only_known_bool
+\str_new:N \l_keys_path_str
\tl_new:N \l_keys_path_tl
-\tl_new:N \l__keys_inherit_tl
+\str_new:N \l__keys_inherit_str
\tl_new:N \l__keys_relative_tl
\tl_set:Nn \l__keys_relative_tl { \q_no_value }
-\tl_new:N \l__keys_property_tl
+\str_new:N \l__keys_property_str
\bool_new:N \l__keys_selective_bool
\bool_new:N \l__keys_filtered_bool
\seq_new:N \l__keys_selective_seq
@@ -12688,12 +12690,12 @@
\tl_new:N \l__keys_tmpa_tl
\tl_new:N \l__keys_tmpb_tl
\cs_new_protected:Npn \keys_define:nn
- { \__keys_define:onn \l__keys_module_tl }
+ { \__keys_define:onn \l__keys_module_str }
\cs_new_protected:Npn \__keys_define:nnn #1#2#3
{
- \tl_set:Nx \l__keys_module_tl { \__keys_trim_spaces:n {#2} }
+ \str_set:Nx \l__keys_module_str { \__keys_trim_spaces:n {#2} }
\keyval_parse:NNn \__keys_define:n \__keys_define:nn {#3}
- \tl_set:Nn \l__keys_module_tl {#1}
+ \str_set:Nn \l__keys_module_str {#1}
}
\cs_generate_variant:Nn \__keys_define:nnn { o }
\cs_new_protected:Npn \__keys_define:n #1
@@ -12709,56 +12711,56 @@
\cs_new_protected:Npn \__keys_define_aux:nn #1#2
{
\__keys_property_find:n {#1}
- \cs_if_exist:cTF { \c__keys_props_root_tl \l__keys_property_tl }
- { \__keys_define_code:n {#2}
- }
+ \cs_if_exist:cTF { \c__keys_props_root_str \l__keys_property_str }
+ { \__keys_define_code:n {#2} }
{
- \tl_if_empty:NF \l__keys_property_tl
+ \str_if_empty:NF \l__keys_property_str
{
\__kernel_msg_error:nnxx { kernel } { key-property-unknown }
- { \l__keys_property_tl } { \l_keys_path_tl }
+ { \l__keys_property_str } { \l_keys_path_str }
}
}
}
\cs_new_protected:Npn \__keys_property_find:n #1
{
- \tl_set:Nx \l__keys_property_tl { \__keys_trim_spaces:n {#1} }
- \exp_after:wN \__keys_property_find:w \l__keys_property_tl . .
+ \str_set:Nx \l__keys_property_str { \__keys_trim_spaces:n {#1} }
+ \exp_after:wN \__keys_property_find:w \l__keys_property_str . .
\q_stop {#1}
}
\cs_new_protected:Npn \__keys_property_find:w #1 . #2 . #3 \q_stop #4
{
\tl_if_blank:nTF {#3}
{
- \tl_clear:N \l__keys_property_tl
+ \str_clear:N \l__keys_property_str
\__kernel_msg_error:nnn { kernel } { key-no-property } {#4}
}
{
\str_if_eq:nnTF {#3} { . }
{
- \tl_set:Nx \l_keys_path_tl
+ \str_set:Nx \l_keys_path_str
{
- \tl_if_empty:NF \l__keys_module_tl
- { \l__keys_module_tl / }
+ \str_if_empty:NF \l__keys_module_str
+ { \l__keys_module_str / }
\tl_trim_spaces:n {#1}
}
- \tl_set:Nn \l__keys_property_tl { . #2 }
+ \str_set:Nn \l__keys_property_str { . #2 }
}
{
- \tl_set:Nx \l_keys_path_tl { \l__keys_module_tl / #1 . #2 }
+ \str_set:Nx \l_keys_path_str { \l__keys_module_str / #1 . #2 }
\__keys_property_search:w #3 \q_stop
}
+ \tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
}
}
\cs_new_protected:Npn \__keys_property_search:w #1 . #2 \q_stop
{
\str_if_eq:nnTF {#2} { . }
{
- \tl_set:Nx \l_keys_path_tl { \l_keys_path_tl }
- \tl_set:Nn \l__keys_property_tl { . #1 }
+ \str_set:Nx \l_keys_path_str { \l_keys_path_str }
+ \str_set:Nn \l__keys_property_str { . #1 }
}
{
- \tl_set:Nx \l_keys_path_tl { \l_keys_path_tl . #1 }
+ \str_set:Nx \l_keys_path_str { \l_keys_path_str . #1 }
\__keys_property_search:w #2 \q_stop
}
}
@@ -12767,15 +12769,15 @@
\bool_if:NTF \l__keys_no_value_bool
{
\exp_after:wN \__keys_define_code:w
- \l__keys_property_tl \q_stop
- { \use:c { \c__keys_props_root_tl \l__keys_property_tl } }
+ \l__keys_property_str \q_stop
+ { \use:c { \c__keys_props_root_str \l__keys_property_str } }
{
\__kernel_msg_error:nnxx { kernel }
- { key-property-requires-value } { \l__keys_property_tl }
- { \l_keys_path_tl }
+ { key-property-requires-value } { \l__keys_property_str }
+ { \l_keys_path_str }
}
}
- { \use:c { \c__keys_props_root_tl \l__keys_property_tl } {#1} }
+ { \use:c { \c__keys_props_root_str \l__keys_property_str } {#1} }
}
\exp_last_unbraced:NNNNo
\cs_new:Npn \__keys_define_code:w #1 \c_colon_str #2 \q_stop
@@ -12784,14 +12786,14 @@
{
\bool_if_exist:NF #1 { \bool_new:N #1 }
\__keys_choice_make:
- \__keys_cmd_set:nx { \l_keys_path_tl / true }
+ \__keys_cmd_set:nx { \l_keys_path_str / true }
{ \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
- \__keys_cmd_set:nx { \l_keys_path_tl / false }
+ \__keys_cmd_set:nx { \l_keys_path_str / false }
{ \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
- \__keys_cmd_set:nn { \l_keys_path_tl / unknown }
+ \__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_tl }
+ { \l_keys_key_str }
}
\__keys_default_set:n { true }
}
@@ -12800,14 +12802,14 @@
{
\bool_if_exist:NF #1 { \bool_new:N #1 }
\__keys_choice_make:
- \__keys_cmd_set:nx { \l_keys_path_tl / true }
+ \__keys_cmd_set:nx { \l_keys_path_str / true }
{ \exp_not:c { bool_ #2 set_false:N } \exp_not:N #1 }
- \__keys_cmd_set:nx { \l_keys_path_tl / false }
+ \__keys_cmd_set:nx { \l_keys_path_str / false }
{ \exp_not:c { bool_ #2 set_true:N } \exp_not:N #1 }
- \__keys_cmd_set:nn { \l_keys_path_tl / unknown }
+ \__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnx { kernel } { boolean-values-only }
- { \l_keys_key_tl }
+ { \l_keys_key_str }
}
\__keys_default_set:n { true }
}
@@ -12819,14 +12821,14 @@
\cs_new_protected:Npn \__keys_choice_make:N #1
{
\cs_if_exist:cTF
- { \c__keys_type_root_tl \__keys_parent:o \l_keys_path_tl }
+ { \c__keys_type_root_str \__keys_parent:o \l_keys_path_str }
{
\str_if_eq:vnTF
- { \c__keys_type_root_tl \__keys_parent:o \l_keys_path_tl }
+ { \c__keys_type_root_str \__keys_parent:o \l_keys_path_str }
{ choice }
{
\__kernel_msg_error:nnxx { kernel } { nested-choice-key }
- { \l_keys_path_tl } { \__keys_parent:o \l_keys_path_tl }
+ { \l_keys_path_tl } { \__keys_parent:o \l_keys_path_str }
}
{ \__keys_choice_make_aux:N #1 }
}
@@ -12834,13 +12836,13 @@
}
\cs_new_protected:Npn \__keys_choice_make_aux:N #1
{
- \cs_set_nopar:cpn { \c__keys_type_root_tl \l_keys_path_tl }
+ \cs_set_nopar:cpn { \c__keys_type_root_str \l_keys_path_str }
{ choice }
- \__keys_cmd_set:nn { \l_keys_path_tl } { #1 {##1} }
- \__keys_cmd_set:nn { \l_keys_path_tl / unknown }
+ \__keys_cmd_set:nn { \l_keys_path_str } { #1 {##1} }
+ \__keys_cmd_set:nn { \l_keys_path_str / unknown }
{
\__kernel_msg_error:nnxx { kernel } { key-choice-unknown }
- { \l_keys_path_tl } {##1}
+ { \l_keys_path_str } {##1}
}
}
\cs_new_protected:Npn \__keys_choices_make:nn
@@ -12855,7 +12857,7 @@
{
\int_incr:N \l_keys_choice_int
\__keys_cmd_set:nx
- { \l_keys_path_tl / \__keys_trim_spaces:n {##1} }
+ { \l_keys_path_str / \__keys_trim_spaces:n {##1} }
{
\tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
\int_set:Nn \exp_not:N \l_keys_choice_int
@@ -12865,19 +12867,19 @@
}
}
\cs_new_protected:Npn \__keys_cmd_set:nn #1#2
- { \cs_set_protected:cpn { \c__keys_code_root_tl #1 } ##1 {#2} }
+ { \cs_set_protected:cpn { \c__keys_code_root_str #1 } ##1 {#2} }
\cs_generate_variant:Nn \__keys_cmd_set:nn { nx , Vn , Vo }
\cs_new_protected:Npn \__keys_default_set:n #1
{
\tl_if_empty:nTF {#1}
{
\cs_set_eq:cN
- { \c__keys_default_root_tl \l_keys_path_tl }
+ { \c__keys_default_root_str \l_keys_path_str }
\tex_undefined:D
}
{
\cs_set_nopar:cpx
- { \c__keys_default_root_tl \l_keys_path_tl }
+ { \c__keys_default_root_str \l_keys_path_str }
{ \exp_not:n {#1} }
\__keys_value_requirement:nn { required } { false }
}
@@ -12887,47 +12889,47 @@
\clist_set:Nn \l__keys_groups_clist {#1}
\clist_if_empty:NTF \l__keys_groups_clist
{
- \cs_set_eq:cN { \c__keys_groups_root_tl \l_keys_path_tl }
+ \cs_set_eq:cN { \c__keys_groups_root_str \l_keys_path_str }
\tex_undefined:D
}
{
- \cs_set_eq:cN { \c__keys_groups_root_tl \l_keys_path_tl }
+ \cs_set_eq:cN { \c__keys_groups_root_str \l_keys_path_str }
\l__keys_groups_clist
}
}
\cs_new_protected:Npn \__keys_inherit:n #1
{
\__keys_undefine:
- \cs_set_nopar:cpn { \c__keys_inherit_root_tl \l_keys_path_tl } {#1}
+ \cs_set_nopar:cpn { \c__keys_inherit_root_str \l_keys_path_str } {#1}
}
\cs_new_protected:Npn \__keys_initialise:n #1
{
\cs_if_exist:cTF
- { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl }
+ { \c__keys_inherit_root_str \__keys_parent:o \l_keys_path_str }
{ \__keys_execute_inherit: }
{
- \tl_clear:N \l__keys_inherit_tl
- \cs_if_exist_use:cT { \c__keys_code_root_tl \l_keys_path_tl } { {#1} }
+ \str_clear:N \l__keys_inherit_str
+ \cs_if_exist_use:cT { \c__keys_code_root_str \l_keys_path_str } { {#1} }
}
}
\cs_new_protected:Npn \__keys_meta_make:n #1
{
- \__keys_cmd_set:Vo \l_keys_path_tl
+ \__keys_cmd_set:Vo \l_keys_path_str
{
\exp_after:wN \keys_set:nn
- \exp_after:wN { \l__keys_module_tl } {#1}
+ \exp_after:wN { \l__keys_module_str } {#1}
}
}
\cs_new_protected:Npn \__keys_meta_make:nn #1#2
- { \__keys_cmd_set:Vn \l_keys_path_tl { \keys_set:nn {#1} {#2} } }
+ { \__keys_cmd_set:Vn \l_keys_path_str { \keys_set:nn {#1} {#2} } }
\cs_new_protected:Npn \__keys_prop_put:Nn #1#2
{
\prop_if_exist:NF #1 { \prop_new:N #1 }
\exp_after:wN \__keys_find_key_module:NNw
\exp_after:wN \l__keys_tmpa_tl
\exp_after:wN \l__keys_tmpb_tl
- \l_keys_path_tl / \q_stop
- \__keys_cmd_set:nx { \l_keys_path_tl }
+ \l_keys_path_str / \q_stop
+ \__keys_cmd_set:nx { \l_keys_path_str }
{
\exp_not:c { prop_ #2 put:Nnn }
\exp_not:N #1
@@ -12942,7 +12944,7 @@
{ code , default , groups , inherit , type , validate }
{
\cs_set_eq:cN
- { \tl_use:c { c__keys_ ##1 _root_tl } \l_keys_path_tl }
+ { \tl_use:c { c__keys_ ##1 _root_str } \l_keys_path_str }
\tex_undefined:D
}
}
@@ -12953,17 +12955,17 @@
{ true }
{
\cs_set_eq:cc
- { \c__keys_validate_root_tl \l_keys_path_tl }
+ { \c__keys_validate_root_str \l_keys_path_str }
{ __keys_validate_ #1 : }
}
{ false }
{
\cs_if_eq:ccT
- { \c__keys_validate_root_tl \l_keys_path_tl }
+ { \c__keys_validate_root_str \l_keys_path_str }
{ __keys_validate_ #1 : }
{
\cs_set_eq:cN
- { \c__keys_validate_root_tl \l_keys_path_tl }
+ { \c__keys_validate_root_str \l_keys_path_str }
\tex_undefined:D
}
}
@@ -12979,7 +12981,7 @@
\bool_if:NF \l__keys_no_value_bool
{
\__kernel_msg_error:nnxx { kernel } { value-forbidden }
- { \l_keys_path_tl } { \l_keys_value_tl }
+ { \l_keys_path_str } { \l_keys_value_tl }
\__keys_validate_cleanup:w
}
}
@@ -12988,7 +12990,7 @@
\bool_if:NT \l__keys_no_value_bool
{
\__kernel_msg_error:nnx { kernel } { value-required }
- { \l_keys_path_tl }
+ { \l_keys_path_str }
\__keys_validate_cleanup:w
}
}
@@ -12996,7 +12998,7 @@
\cs_new_protected:Npn \__keys_variable_set:NnnN #1#2#3#4
{
\use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 }
- \__keys_cmd_set:nx { \l_keys_path_tl }
+ \__keys_cmd_set:nx { \l_keys_path_str }
{
\exp_not:c { #2 _ #3 set:N #4 }
\exp_not:N #1
@@ -13010,145 +13012,145 @@
\__keys_value_requirement:nn { required } { true }
}
\cs_generate_variant:Nn \__keys_variable_set_required:NnnN { c }
-\cs_new_protected:cpn { \c__keys_props_root_tl .bool_set:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .bool_set:N } #1
{ \__keys_bool_set:Nn #1 { } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .bool_set:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .bool_set:c } #1
{ \__keys_bool_set:cn {#1} { } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .bool_gset:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .bool_gset:N } #1
{ \__keys_bool_set:Nn #1 { g } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .bool_gset:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .bool_gset:c } #1
{ \__keys_bool_set:cn {#1} { g } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .bool_set_inverse:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .bool_set_inverse:N } #1
{ \__keys_bool_set_inverse:Nn #1 { } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .bool_set_inverse:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .bool_set_inverse:c } #1
{ \__keys_bool_set_inverse:cn {#1} { } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .bool_gset_inverse:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .bool_gset_inverse:N } #1
{ \__keys_bool_set_inverse:Nn #1 { g } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .bool_gset_inverse:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .bool_gset_inverse:c } #1
{ \__keys_bool_set_inverse:cn {#1} { g } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .choice: }
+\cs_new_protected:cpn { \c__keys_props_root_str .choice: }
{ \__keys_choice_make: }
-\cs_new_protected:cpn { \c__keys_props_root_tl .choices:nn } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .choices:nn } #1
{ \__keys_choices_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .choices:Vn } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .choices:Vn } #1
{ \exp_args:NV \__keys_choices_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .choices:on } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .choices:on } #1
{ \exp_args:No \__keys_choices_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .choices:xn } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .choices:xn } #1
{ \exp_args:Nx \__keys_choices_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .code:n } #1
- { \__keys_cmd_set:nn { \l_keys_path_tl } {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .clist_set:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .code:n } #1
+ { \__keys_cmd_set:nn { \l_keys_path_str } {#1} }
+\cs_new_protected:cpn { \c__keys_props_root_str .clist_set:N } #1
{ \__keys_variable_set:NnnN #1 { clist } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .clist_set:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .clist_set:c } #1
{ \__keys_variable_set:cnnN {#1} { clist } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .clist_gset:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .clist_gset:N } #1
{ \__keys_variable_set:NnnN #1 { clist } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .clist_gset:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .clist_gset:c } #1
{ \__keys_variable_set:cnnN {#1} { clist } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .default:n } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .default:n } #1
{ \__keys_default_set:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .default:V } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .default:V } #1
{ \exp_args:NV \__keys_default_set:n #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .default:o } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .default:o } #1
{ \exp_args:No \__keys_default_set:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .default:x } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .default:x } #1
{ \exp_args:Nx \__keys_default_set:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .dim_set:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .dim_set:N } #1
{ \__keys_variable_set_required:NnnN #1 { dim } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .dim_set:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .dim_set:c } #1
{ \__keys_variable_set_required:cnnN {#1} { dim } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .dim_gset:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .dim_gset:N } #1
{ \__keys_variable_set_required:NnnN #1 { dim } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .dim_gset:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .dim_gset:c } #1
{ \__keys_variable_set_required:cnnN {#1} { dim } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .fp_set:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .fp_set:N } #1
{ \__keys_variable_set_required:NnnN #1 { fp } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .fp_set:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .fp_set:c } #1
{ \__keys_variable_set_required:cnnN {#1} { fp } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .fp_gset:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .fp_gset:N } #1
{ \__keys_variable_set_required:NnnN #1 { fp } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .fp_gset:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .fp_gset:c } #1
{ \__keys_variable_set_required:cnnN {#1} { fp } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .groups:n } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .groups:n } #1
{ \__keys_groups_set:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .inherit:n } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .inherit:n } #1
{ \__keys_inherit:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .initial:n } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .initial:n } #1
{ \__keys_initialise:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .initial:V } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .initial:V } #1
{ \exp_args:NV \__keys_initialise:n #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .initial:o } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .initial:o } #1
{ \exp_args:No \__keys_initialise:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .initial:x } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .initial:x } #1
{ \exp_args:Nx \__keys_initialise:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .int_set:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .int_set:N } #1
{ \__keys_variable_set_required:NnnN #1 { int } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .int_set:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .int_set:c } #1
{ \__keys_variable_set_required:cnnN {#1} { int } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .int_gset:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .int_gset:N } #1
{ \__keys_variable_set_required:NnnN #1 { int } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .int_gset:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .int_gset:c } #1
{ \__keys_variable_set_required:cnnN {#1} { int } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .meta:n } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .meta:n } #1
{ \__keys_meta_make:n {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .meta:nn } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .meta:nn } #1
{ \__keys_meta_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .multichoice: }
+\cs_new_protected:cpn { \c__keys_props_root_str .multichoice: }
{ \__keys_multichoice_make: }
-\cs_new_protected:cpn { \c__keys_props_root_tl .multichoices:nn } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .multichoices:nn } #1
{ \__keys_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .multichoices:Vn } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .multichoices:Vn } #1
{ \exp_args:NV \__keys_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .multichoices:on } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .multichoices:on } #1
{ \exp_args:No \__keys_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .multichoices:xn } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .multichoices:xn } #1
{ \exp_args:Nx \__keys_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c__keys_props_root_tl .muskip_set:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .muskip_set:N } #1
{ \__keys_variable_set_required:NnnN #1 { muskip } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .muskip_set:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .muskip_set:c } #1
{ \__keys_variable_set_required:cnnN {#1} { muskip } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .muskip_gset:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .muskip_gset:N } #1
{ \__keys_variable_set_required:NnnN #1 { muskip } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .muskip_gset:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .muskip_gset:c } #1
{ \__keys_variable_set_required:cnnN {#1} { muskip } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .prop_put:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .prop_put:N } #1
{ \__keys_prop_put:Nn #1 { } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .prop_put:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .prop_put:c } #1
{ \__keys_prop_put:cn {#1} { } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .prop_gput:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .prop_gput:N } #1
{ \__keys_prop_put:Nn #1 { g } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .prop_gput:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .prop_gput:c } #1
{ \__keys_prop_put:cn {#1} { g } }
-\cs_new_protected:cpn { \c__keys_props_root_tl .skip_set:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .skip_set:N } #1
{ \__keys_variable_set_required:NnnN #1 { skip } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .skip_set:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .skip_set:c } #1
{ \__keys_variable_set_required:cnnN {#1} { skip } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .skip_gset:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .skip_gset:N } #1
{ \__keys_variable_set_required:NnnN #1 { skip } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .skip_gset:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .skip_gset:c } #1
{ \__keys_variable_set_required:cnnN {#1} { skip } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .tl_set:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set:N } #1
{ \__keys_variable_set:NnnN #1 { tl } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .tl_set:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set:c } #1
{ \__keys_variable_set:cnnN {#1} { tl } { } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .tl_set_x:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:N } #1
{ \__keys_variable_set:NnnN #1 { tl } { } x }
-\cs_new_protected:cpn { \c__keys_props_root_tl .tl_set_x:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_set_x:c } #1
{ \__keys_variable_set:cnnN {#1} { tl } { } x }
-\cs_new_protected:cpn { \c__keys_props_root_tl .tl_gset:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset:N } #1
{ \__keys_variable_set:NnnN #1 { tl } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .tl_gset:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset:c } #1
{ \__keys_variable_set:cnnN {#1} { tl } { g } n }
-\cs_new_protected:cpn { \c__keys_props_root_tl .tl_gset_x:N } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:N } #1
{ \__keys_variable_set:NnnN #1 { tl } { g } x }
-\cs_new_protected:cpn { \c__keys_props_root_tl .tl_gset_x:c } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .tl_gset_x:c } #1
{ \__keys_variable_set:cnnN {#1} { tl } { g } x }
-\cs_new_protected:cpn { \c__keys_props_root_tl .undefine: }
+\cs_new_protected:cpn { \c__keys_props_root_str .undefine: }
{ \__keys_undefine: }
-\cs_new_protected:cpn { \c__keys_props_root_tl .value_forbidden:n } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .value_forbidden:n } #1
{ \__keys_value_requirement:nn { forbidden } {#1} }
-\cs_new_protected:cpn { \c__keys_props_root_tl .value_required:n } #1
+\cs_new_protected:cpn { \c__keys_props_root_str .value_required:n } #1
{ \__keys_value_requirement:nn { required } {#1} }
\cs_new_protected:Npn \keys_set:nn #1#2
{
@@ -13172,12 +13174,12 @@
}
\cs_generate_variant:Nn \keys_set:nn { nV , nv , no }
\cs_new_protected:Npn \__keys_set:nn #1#2
- { \exp_args:No \__keys_set:nnn \l__keys_module_tl {#1} {#2} }
+ { \exp_args:No \__keys_set:nnn \l__keys_module_str {#1} {#2} }
\cs_new_protected:Npn \__keys_set:nnn #1#2#3
{
- \tl_set:Nx \l__keys_module_tl { \__keys_trim_spaces:n {#2} }
+ \str_set:Nx \l__keys_module_str { \__keys_trim_spaces:n {#2} }
\keyval_parse:NNn \__keys_set_keyval:n \__keys_set_keyval:nn {#3}
- \tl_set:Nn \l__keys_module_tl {#1}
+ \str_set:Nn \l__keys_module_str {#1}
}
\cs_new_protected:Npn \keys_set_known:nnN #1#2#3
{
@@ -13294,42 +13296,43 @@
\cs_new_protected:Npn \__keys_set_keyval:n #1
{
\bool_set_true:N \l__keys_no_value_bool
- \__keys_set_keyval:onn \l__keys_module_tl {#1} { }
+ \__keys_set_keyval:onn \l__keys_module_str {#1} { }
}
\cs_new_protected:Npn \__keys_set_keyval:nn #1#2
{
\bool_set_false:N \l__keys_no_value_bool
- \__keys_set_keyval:onn \l__keys_module_tl {#1} {#2}
+ \__keys_set_keyval:onn \l__keys_module_str {#1} {#2}
}
\cs_new_protected:Npn \__keys_set_keyval:nnn #1#2#3
{
- \tl_set:Nx \l_keys_path_tl
+ \tl_set:Nx \l_keys_path_str
{
\tl_if_blank:nF {#1}
{ #1 / }
\__keys_trim_spaces:n {#2}
}
- \tl_clear:N \l__keys_module_tl
- \tl_clear:N \l__keys_inherit_tl
+ \str_clear:N \l__keys_module_str
+ \str_clear:N \l__keys_inherit_str
\exp_after:wN \__keys_find_key_module:NNw
- \exp_after:wN \l__keys_module_tl
- \exp_after:wN \l_keys_key_tl
- \l_keys_path_tl / \q_stop
+ \exp_after:wN \l__keys_module_str
+ \exp_after:wN \l_keys_key_str
+ \l_keys_path_str / \q_stop
+ \tl_set_eq:NN \l_keys_key_tl \l_keys_key_str
\__keys_value_or_default:n {#3}
\bool_if:NTF \l__keys_selective_bool
{ \__keys_set_selective: }
{ \__keys_execute: }
- \tl_set:Nn \l__keys_module_tl {#1}
+ \str_set:Nn \l__keys_module_str {#1}
}
\cs_generate_variant:Nn \__keys_set_keyval:nnn { o }
\cs_new_protected:Npn \__keys_find_key_module:NNw #1#2#3 / #4 \q_stop
{
\tl_if_blank:nTF {#4}
- { \tl_set:Nn #2 {#3} }
+ { \str_set:Nn #2 {#3} }
{
- \tl_put_right:Nx #1
+ \str_put_right:Nx #1
{
- \tl_if_empty:NF #1 { / }
+ \str_if_empty:NF #1 { / }
#3
}
\__keys_find_key_module:NNw #1#2 #4 \q_stop
@@ -13337,10 +13340,10 @@
}
\cs_new_protected:Npn \__keys_set_selective:
{
- \cs_if_exist:cTF { \c__keys_groups_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c__keys_groups_root_str \l_keys_path_str }
{
\clist_set_eq:Nc \l__keys_groups_clist
- { \c__keys_groups_root_tl \l_keys_path_tl }
+ { \c__keys_groups_root_str \l_keys_path_str }
\__keys_check_groups:
}
{
@@ -13379,16 +13382,16 @@
{
\bool_if:NTF \l__keys_no_value_bool
{
- \cs_if_exist:cTF { \c__keys_default_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c__keys_default_root_str \l_keys_path_str }
{
\tl_set_eq:Nc
\l_keys_value_tl
- { \c__keys_default_root_tl \l_keys_path_tl }
+ { \c__keys_default_root_str \l_keys_path_str }
}
{
\tl_clear:N \l_keys_value_tl
\cs_if_exist:cT
- { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl }
+ { \c__keys_inherit_root_str \__keys_parent:o \l_keys_path_str }
{ \__keys_default_inherit: }
}
}
@@ -13397,29 +13400,29 @@
\cs_new_protected:Npn \__keys_default_inherit:
{
\clist_map_inline:cn
- { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl }
+ { \c__keys_inherit_root_str \__keys_parent:o \l_keys_path_str }
{
\cs_if_exist:cT
- { \c__keys_default_root_tl ##1 / \l_keys_key_tl }
+ { \c__keys_default_root_str ##1 / \l_keys_key_str }
{
\tl_set_eq:Nc
\l_keys_value_tl
- { \c__keys_default_root_tl ##1 / \l_keys_key_tl }
+ { \c__keys_default_root_str ##1 / \l_keys_key_str }
\clist_map_break:
}
}
}
\cs_new_protected:Npn \__keys_execute:
{
- \cs_if_exist:cTF { \c__keys_code_root_tl \l_keys_path_tl }
+ \cs_if_exist:cTF { \c__keys_code_root_str \l_keys_path_str }
{
- \cs_if_exist_use:c { \c__keys_validate_root_tl \l_keys_path_tl }
- \cs:w \c__keys_code_root_tl \l_keys_path_tl \exp_after:wN \cs_end:
+ \cs_if_exist_use:c { \c__keys_validate_root_str \l_keys_path_str }
+ \cs:w \c__keys_code_root_str \l_keys_path_str \exp_after:wN \cs_end:
\exp_after:wN { \l_keys_value_tl }
}
{
\cs_if_exist:cTF
- { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl }
+ { \c__keys_inherit_root_str \__keys_parent:o \l_keys_path_str }
{ \__keys_execute_inherit: }
{ \__keys_execute_unknown: }
}
@@ -13427,14 +13430,14 @@
\cs_new_protected:Npn \__keys_execute_inherit:
{
\clist_map_inline:cn
- { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl }
+ { \c__keys_inherit_root_str \__keys_parent:o \l_keys_path_str }
{
\cs_if_exist:cT
- { \c__keys_code_root_tl ##1 / \l_keys_key_tl }
+ { \c__keys_code_root_str ##1 / \l_keys_key_str }
{
- \tl_set:Nn \l__keys_inherit_tl {##1}
- \cs_if_exist_use:c { \c__keys_validate_root_tl ##1 / \l_keys_key_tl }
- \cs:w \c__keys_code_root_tl ##1 / \l_keys_key_tl
+ \str_set:Nn \l__keys_inherit_str {##1}
+ \cs_if_exist_use:c { \c__keys_validate_root_str ##1 / \l_keys_key_str }
+ \cs:w \c__keys_code_root_str ##1 / \l_keys_key_str
\exp_after:wN \cs_end: \exp_after:wN
{ \l_keys_value_tl }
\clist_map_break:n { \use_none:n }
@@ -13448,22 +13451,22 @@
{ \__keys_store_unused: }
{
\cs_if_exist:cTF
- { \c__keys_code_root_tl \l__keys_module_tl / unknown }
+ { \c__keys_code_root_str \l__keys_module_str / unknown }
{
- \cs:w \c__keys_code_root_tl \l__keys_module_tl / unknown
+ \cs:w \c__keys_code_root_str \l__keys_module_str / unknown
\exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl }
}
{
\__kernel_msg_error:nnxx { kernel } { key-unknown }
- { \l_keys_path_tl } { \l__keys_module_tl }
+ { \l_keys_path_str } { \l__keys_module_str }
}
}
}
\cs_new:Npn \__keys_execute:nn #1#2
{
- \cs_if_exist:cTF { \c__keys_code_root_tl #1 }
+ \cs_if_exist:cTF { \c__keys_code_root_str #1 }
{
- \cs:w \c__keys_code_root_tl #1 \exp_after:wN \cs_end:
+ \cs:w \c__keys_code_root_str #1 \exp_after:wN \cs_end:
\exp_after:wN { \l_keys_value_tl }
}
{#2}
@@ -13474,7 +13477,7 @@
{
\clist_put_right:Nx \l__keys_unused_clist
{
- \exp_not:o \l_keys_key_tl
+ \exp_not:o \l_keys_key_str
\bool_if:NF \l__keys_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -13484,7 +13487,7 @@
{
\clist_put_right:Nx \l__keys_unused_clist
{
- \exp_not:o \l_keys_path_tl
+ \exp_not:o \l_keys_path_str
\bool_if:NF \l__keys_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
@@ -13507,7 +13510,7 @@
\tl_if_blank:nF {##1}
{
\__kernel_msg_error:nnxx { kernel } { bad-relative-key-path }
- \l_keys_path_tl
+ \l_keys_path_str
\l__keys_relative_tl
}
\clist_put_right:Nx \l__keys_unused_clist
@@ -13519,7 +13522,7 @@
}
\use:x
{
- \__keys_store_unused:w \l_keys_path_tl
+ \__keys_store_unused:w \l_keys_path_str
\l__keys_relative_tl / \l__keys_relative_tl /
\exp_not:N \q_stop
}
@@ -13527,18 +13530,18 @@
\cs_new_protected:Npn \__keys_store_unused:w { }
\cs_new:Npn \__keys_choice_find:n #1
{
- \tl_if_empty:NTF \l__keys_inherit_tl
- { \__keys_choice_find:nn { \l_keys_path_tl } {#1} }
+ \str_if_empty:NTF \l__keys_inherit_str
+ { \__keys_choice_find:nn { \l_keys_path_str } {#1} }
{
\__keys_choice_find:nn
- { \l__keys_inherit_tl / \l_keys_key_tl } {#1}
+ { \l__keys_inherit_str / \l_keys_key_str } {#1}
}
}
\cs_new:Npn \__keys_choice_find:nn #1#2
{
- \cs_if_exist:cTF { \c__keys_code_root_tl #1 / \__keys_trim_spaces:n {#2} }
- { \use:c { \c__keys_code_root_tl #1 / \__keys_trim_spaces:n {#2} } {#2} }
- { \use:c { \c__keys_code_root_tl #1 / unknown } {#2} }
+ \cs_if_exist:cTF { \c__keys_code_root_str #1 / \__keys_trim_spaces:n {#2} }
+ { \use:c { \c__keys_code_root_str #1 / \__keys_trim_spaces:n {#2} } {#2} }
+ { \use:c { \c__keys_code_root_str #1 / unknown } {#2} }
}
\cs_new:Npn \__keys_multichoice_find:n #1
{ \clist_map_function:nN {#1} \__keys_choice_find:n }
@@ -13582,7 +13585,7 @@
\prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF }
{
\cs_if_exist:cTF
- { \c__keys_code_root_tl \__keys_trim_spaces:n { #1 / #2 } }
+ { \c__keys_code_root_str \__keys_trim_spaces:n { #1 / #2 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -13590,7 +13593,7 @@
{ p , T , F , TF }
{
\cs_if_exist:cTF
- { \c__keys_code_root_tl \__keys_trim_spaces:n { #1 / #2 / #3 } }
+ { \c__keys_code_root_str \__keys_trim_spaces:n { #1 / #2 / #3 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -13609,7 +13612,7 @@
{
\exp_args:Nc \cs_replacement_spec:N
{
- \c__keys_code_root_tl
+ \c__keys_code_root_str
\__keys_trim_spaces:n { #2 / #3 }
}
}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 7bad8ed4589..8fa72ac8795 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-02-03}%
+\def\ExplFileDate{2020-02-08}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
index 30aca55eb9a..ffd8f808985 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-02-03}%
+\def\ExplFileDate{2020-02-08}%
\let\ExplLoaderFileDate\ExplFileDate
\everyjob\expandafter{\the\everyjob
\message{L3 programming layer <\ExplFileDate>}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 46ead0078bf..ac5465681ca 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2020-02-03}%
+\def\ExplFileDate{2020-02-08}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
index 604332530cf..cfe9bcf7de7 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3debug.def
@@ -605,7 +605,7 @@
{ \__cs_generate_variant:wwNN }
\__kernel_patch:nnn
{
- \cs_if_exist:cF { \c__keys_code_root_tl #1 }
+ \cs_if_exist:cF { \c__keys_code_root_str #1 }
{ \__kernel_debug_log:x { Defining~key~#1~\msg_line_context: } }
}
{ }
diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
index 0d03092246a..8f66812c5dc 100644
--- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
@@ -19,8 +19,8 @@
%% and all files in that bundle must be distributed together.
%%
%% File: l3keys2e.dtx
-\RequirePackage{expl3}[2018/02/21]
-\@ifpackagelater{expl3}{2018/02/21}
+\RequirePackage{expl3}[2020/02/08]
+\@ifpackagelater{expl3}{2020/02/08}
{}
{%
\PackageError{l3keys2e}{Support package l3kernel too old}
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3keys2e}{2020-02-03}{}
+\ProvidesExplPackage{l3keys2e}{2020-02-08}{}
{LaTeX2e option processing using LaTeX3 keys}
\cs_generate_variant:Nn \clist_put_right:Nn { Nv }
\cs_generate_variant:Nn \keys_if_exist:nnT { nx }
@@ -51,7 +51,7 @@
unknown .code:n =
{
\msg_error:nnxx { keyvalue } { option-unknown }
- { \l_keys_key_tl } { \@currname }
+ { \l_keys_key_str } { \@currname }
}
}
\AtEndOfPackage
diff --git a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
index efbf1298f3e..5b890cd5d30 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
@@ -33,7 +33,7 @@
\endinput
}
\RequirePackage{xparse}
-\ProvidesExplPackage{xfp}{2020-02-03}{}
+\ProvidesExplPackage{xfp}{2020-02-08}{}
{L3 Floating point unit}
\NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
\NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }
diff --git a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
index fb5312611ea..0874931afee 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
@@ -33,7 +33,7 @@
\endinput
}
\RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate}
-\ProvidesExplPackage{xfrac}{2020-02-03}{}
+\ProvidesExplPackage{xfrac}{2020-02-08}{}
{L3 Experimental split-level fractions}
\keys_define:nn { xfrac }
{
diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
index ab69601d463..27ba207434f 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{xparse}{2020-02-03}{}
+\ProvidesExplPackage{xparse}{2020-02-08}{}
{L3 Experimental document command parser}
\tl_new:N \l__xparse_arg_spec_tl
\tl_new:N \l__xparse_args_tl
diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
index 37c4cd512ba..488eb3d7c48 100644
--- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
+++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{xtemplate}{2020-02-03}{}
+\ProvidesExplPackage{xtemplate}{2020-02-08}{}
{L3 Experimental prototype document functions}
\tl_const:Nn \c__xtemplate_code_root_tl { template~code~>~ }
\tl_const:Nn \c__xtemplate_defaults_root_tl { template~defaults~>~ }