Comments (9)
Something to contemplate, for sure (and maybe decide against it), but "n" doesn't mean no expansion, it just mean no expansion before calling the base form of the command and the base form then may do all kind of expansions on its own (e.g., \int_set:Nn
etc). hooks, sockets and I guess also properties are of the kind where automatic expansion is natural (and happens in fact down the road where the argument is used to make up internal csnames which is typical for complex "named" types. As I said the "prop" type is different, there whatever you feed in becomes a key unchanged and that "kind of" makes sense, but that key is not a complex type and not intended for anything other than retrival from the prop.
It guess it needs looking at case by case, but complex, named types have the tendency that the name should be a simple ascii string with a clear set of allowed characters and as such expansion towards that at some point is the norm rather than the exception. An inthat case make the "n" expand directly in the base command saves a lot of hassle imho. But I guess something to think about and discuss further.
from latex3.
Just e-type variants to add? No problem ...
from latex3.
To be honest, I think it would be OK if such arguments generally do e-type expansion because right now anything other than string would be invalid syntax at the moment.
I would prefer this behaviour.
from latex3.
yes, I agree, some e-variants would be useful.
from latex3.
To be honest, I think it would be OK if such arguments generally do e-type expansion because right now anything other than string would be invalid syntax at the moment, but I'm also OK with just adding the extra decorations.
from latex3.
@FrankMittelbach Not sure I follow: the name at the TeX end could be \foo
and that would be fine, surely? It's just a label. But I've no real issue in changing behaviour if we feel that's useful on balance.
from latex3.
OK, I'll make it so: checkin later today.
from latex3.
@FrankMittelbach Not sure I follow: the name at the TeX end could be
\foo
and that would be fine, surely? It's just a label. But I've no real issue in changing behaviour if we feel that's useful on balance.
in my opinion that is (barely) okay for the keys on the prop type but the object names on other types are very regularly used in code to build substructures and it is basically a mess if you end up with \foo in the middle of a csname that looks like a command when displayed but is effectively a string. In my opinion such names such be fairly well regulated ... and I'm very much for duck typing in that respect. It is a bit like "can an environment contain | < > % \
what have you in its name" ... technically it can (for some of them) but the documented syntax (for good reasons) is much more restrictive, same with hooks and hook labels etc. And I think pdf objects fall into the same category. Down the road it will simplify usage a lot. (my 2 cents after midnight)
from latex3.
I quite agree that if there is a command in the name I want to expand that, but would it be in line with similar cases if we change the behaviour here and expand even if the argument is n
? E.g. hook names, socket names, property names?
from latex3.
Related Issues (20)
- `\cctab_const:Nn` raises "Inconsistent local/global assignment" errors HOT 1
- `\prop_put_if_new:Nnn` vs `\prop_put_if_not_in:Nnn` HOT 2
- Symmetry/Consistency among fparray and intarray functions HOT 3
- \IfInstanceExistTF undefined with -dev formats HOT 2
- \iow_shell_open:Nn can't work
- Loading `expl3-generic.tex` in LuaMetaTeX fails with `expl3.lua:421: table index is nil` since TeX Live 2024 HOT 6
- visible spaces in l3sys-query results HOT 6
- Can't define a new fp function based on fact() HOT 1
- New iow function that respects `\showstream`
- support of CMYK colors in dvisvgm backend HOT 9
- peek_analysis_map_inline does not work for active space HOT 7
- char_generate:nn creates new text input level now? HOT 10
- (Not a bug) \tl_gset:Nx is no longer directly mapped to \xdef? HOT 5
- Inconsistent behavior for "c"-type ...item functions HOT 11
- peek_analysis_map_inline does not unwind input level for some reason HOT 1
- Tag 2024-05-08 not merged into main branch HOT 3
- l3backend-dvips.pro not found by kpsewhich despite being present HOT 4
- `\GetDocumentCommandArgSpec` and friends cannot handle optimized m-type cmds and envs HOT 1
- Loading 'expl3.sty' aborted when I compile documentation using xelatex HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from latex3.