If there is no delemiter in the parameters, will TeX only grab one single token (or group)? For example, if I have \cs_new:Npn \my_strange_function:w #1#2#3 { ... } will this grab the first three single tokens (which is what I want)? Or is there some caveat here?
For example with \my_strange_function:w abcde, I would then have #1 = a, #2 = b and #3 = c?
@DavidCarlisle I finally got something to work, although it didn't actually do anything. but then it disappeared completely and I have no idea what I did :(.
@JasperHabicht no. I think it is just like \def \mystrangefunction#1#2#3{...}, isn't it?
@cfr With \def\myfn#1#2#3{first is #1, second is #2, third is #3 .} \myfn abcde I get : "first is a, second is b, third is c .de". So, this means that #3 is only c.
But maybe I am wrong ... Sure, I normally would use stops, but in this very case I can't.
It seems that TeX just grabs the smalles possible match, lazy, not greedy so to say
@JasperHabicht that is not a little thing and I should know it :-). I should know it because I have code which explicitly does stuff to make tex grab more than one token ....
@cfr Why would you have more? If you try \def\gobble#1{} \gobble abcde you get bcde. A single character of most catcodes is grabbed as #1 if it's the next thing in the file. The exceptions are quite clear, and in normal situations they would be `, %, and {` and then whitespace (whitespace is complicated).
how do I get my github action to find the tex live binaries I finally persuaded it to install?
Run l3build ctan
l3build ctan
shell: /usr/bin/bash -e {0}
Running l3build with target "check" for module "."
sh: 1: texlua: not found
====================
Tests failed, zip stage skipped!
====================
Error: Process completed with exit code 1.
^^ never mind. I know why. at least, I know one reason.
@cfr Getting actions to work is just a matter of time and patience :D
@cfr See github.com/pablgonz/enumext-tmp for example It took me endless attempts to get it working with lulatex-dev and everything else I needed...but it works :D
@PabloGonzálezL thanks. I was unreasonably happy to get the green tick ;).
@PabloGonzálezL I would like it better if I could edit them locally, but I haven't figured out how to do that. I couldn't even persuade github to let me create it where I wanted it. but it does work. (though this is mostly due to copy-pasting @JosephWright and @UlrikeFischer's code ...) and eventually getting the enough of the right bits ....
@JasperHabicht what I meant was that I explicitly do things to pick up 'all the rest' when splitting arguments. nfssext-cfr works partly by splitting the names of fonts named strictly according to the Berry naming scheme. (well, I guess it would split the names anyhow, but it only works correctly if they use that scheme.) but I am generally picking single tokens and saving the rest. that's why I said I should have known better. I don't do anything weird. just the same stuff you find all over.
@JasperHabicht Yes, it is, but #1#2#3 can be NNN or nnn or a combination, depending ont he underlying meaning - TeX will always accept a 'balanced text` here
Cf. something like the \unexpanded primitive, where you have to brace the argument
@JosephWright Okay, thanks! Alright, then it will be NNN I guess ...
... or is the logic: If it technically allows braced arguments, it should be nnn? I am not going to feed it braced arguments, because things won't work then. The command will be internal anyways ...
@JosephWright Alright. Well, it is supposed to only and exactly take four single characters actually, hex digits to be precise. (I only used three, to easier understand the way it works)
This was not a bug in cfr-lm and the update of cfr-lm does nothing to fix it. At least, it does nothing more than insisting on an updated version of nfssext-cfr.
The fix is accidental. In order to eliminate a dependency on ifthen on newer kernels, nfssext-cfr uses a different definition of an int...
[obviously in one sense it is wrong, in that it produces an error in \text{}, but I'm not clear why.]
@daleif it's one at the start then it's empty after \documentclass[article} I'm not sure that's intended, looking....
@daleif hmm \renewcommand\baselinestretch{} would do it... (article.cls line 116)
@daleif ah this is explained in classes.dtx
% \begin{macro}{\baselinestretch} % This is used as a multiplier for |\baselineskip|. The default is % to \emph{not} stretch the baselines. Note that if this command % doesn't resolve to ``empty'' any \texttt{plus} or \texttt{minus} % part in the specification of |\baselineskip| is ignored. % \begin{macrocode} \renewcommand\baselinestretch{}
@DavidCarlisle ahh, and I mostly use memoir, who does not. Seems strange to def it to nothing. I also know it has done so for a while. Just means that a calculation in a font package just got a bit more complicated.
@DavidCarlisle Have a macro that should counter act \baselinestretch for a construction. But apparently the fp module does not like dividing by empty....
@JosephWright it isn't the most weird thing in latex, and if we change it we are bound to break some local class using it as a number, so just leaving it (or documenting it) might be best
@mickep It just's a simple macro that gets used as a <factor> to multiply the requested baselineskip value while setting the actual \baselineskip but \empty\dimexr 12pt plus 1pt is 12pt plus 1pt whereas 1\dimexpr 12pt plus 1pt is 12pt, so they are different.
@mickep no as i say it's a primitive Tex <factor> so is used directly as \baselinestretch\dimen@ which is equal to \dimen@ if it is empty but equal to dimen@ without the stretch and shrink if it is 1 (because that's what teX does)