diff options
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 Binary files differindex ba7abfc3295..067151191bc 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex aa9a16c2af8..48a2260cf0d 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf 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 Binary files differindex 8905a206617..20e93c99a9d 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf Binary files differindex fc4c48aefc0..dda09e21379 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf Binary files differindex 8c00d845e85..a024c70236d 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news01.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf Binary files differindex 9a15e6f09eb..1be81998eed 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news02.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf Binary files differindex eef685088a3..d3fb37b0ab5 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news03.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf Binary files differindex cd9b45d7fd2..94255ae3dac 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news04.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf Binary files differindex 850660fd970..6b899baf03a 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news05.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf Binary files differindex 9543481f2f3..00355e0e959 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news06.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf Binary files differindex 8d45eb668a8..3c622d11572 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news07.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf Binary files differindex ca357556baf..450b99f51c1 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news08.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf Binary files differindex 462495b61b0..9c0c61bb183 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news09.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf Binary files differindex af9e3ed9738..4ab0051120f 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news10.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf Binary files differindex 4139046bb28..22d9abcc6aa 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news11.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf Binary files differindex 7609ae164aa..b1601aef362 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3news12.pdf 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 Binary files differindex 038c80e6bdd..c2608d4d1b2 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex 5137403b927..6aa7e3c926b 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf 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 Binary files differindex 3f5d9029d31..ee618dbe883 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf 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 Binary files differindex 9d0739ae266..801ca39d2c6 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf 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 Binary files differindex ff8e66a7f04..2dc02a32560 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf 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 Binary files differindex be9b3fe7455..542dc679c6f 100644 --- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf Binary files differindex a604056d35e..fd2d9d07656 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf Binary files differindex c76c0074e74..f02a8829d92 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf Binary files differindex 7b088cc47ee..c176bacedc7 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf Binary files differindex 1b2b03dca1a..839e221f6c9 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf 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~>~ } |