2:10 AM
@egreg Then there's New College, Oxford. Founded in 1379.

5 hours later…
6:45 AM

7:31 AM
Saturday quack!

8:15 AM
@JosephWright yet another way to get into a loop:-)

1 hour later…
9:17 AM
@DavidCarlisle We started working on English documentation of pTeX and friends; github.com/texjporg/ptex-manual/issues/6 Let me know if some additional topics are needed for you ;-)
5

10:00 AM
@HironobuYAMASHITA thanks sorry if we have pushed you in to extra work!
meanwhile what is luatex doing here??? fi glue stretch? (@JosephWright)
\directlua{
local sp=65536
tex.setglue(100, 5*sp,1*sp,0,0,0)
tex.setglue(101, 5*sp,1*sp,0,1,0)
tex.setglue(102, 5*sp,2*sp,0,2,0)
tex.setglue(103, 5*sp,3*sp,0,3,0)
tex.setglue(104, 5*sp,4*sp,0,4,0)
}

\immediate\write20{100: \the\skip100}
\immediate\write20{101: \the\skip101}
\immediate\write20{102: \the\skip102}
\immediate\write20{103: \the\skip103}
\immediate\write20{104: \the\skip104}

\skip105= 5pt plus 1fil
\immediate\write20{105: \the\skip105}

\bye

10:24 AM
I see that in one place I've nested \makeatletter & \makeatother pairs. I'm pretty sure this is unnecessary, but would like to check.
The code is:
\makeatletter
\makeatletter\@setplength{sigindent}{0.5\linewidth}\makeatother
\makeatother

@FaheemMitha It is. You can remove one pair here

@PhelypeOleinik Great. Thank you. So I can remove the interior pair?

@FaheemMitha Yes. \makeatletter is \catcode\@=11\relax. Once the catcode is 11, setting it again has no effect. Same for \makeatother.

@PhelypeOleinik Yes, that's what I thought. Thank you for the confirmation.

@PhelypeOleinik do you get fi glue with my testfile above ?

10:29 AM
@DavidCarlisle Yes
100: 5.0pt plus 1.0pt
101: 5.0pt plus 1.0fi
102: 5.0pt plus 2.0fil
103: 5.0pt plus 3.0fill
104: 5.0pt plus 4.0filll
105: 5.0pt plus 1.0fil

@DavidCarlisle LuaTeX has fi glue stretch, which stems from Omega. It is documented in doc-1.8.tex of Omega "Draft documentation for the Omega system".
(mistake)

@FaheemMitha you were lucky that your "inner" code was the last line, otherwise the later lines would not work at all
@HironobuYAMASHITA thanks! (I don't suppose the luatex manual could have mentioned that:-)

@DavidCarlisle Yes, that would have been bad. I think I just mindlessly added it in there.

@HironobuYAMASHITA I subscribed to the ptex manual issue (I don't think I want to watch the repository as most comments are hard for me, but if you need any proof reading or suggestions, I am happy to be pinged in that issue)

The fi glue stretch is also available in e-pTeX/e-upTeX, but \gluestretchorder is the same as e-TeX. In LuaTeX, \gluestretchorder is different from e-TeX.

\ifx\directlua\undefined\else
\directlua{
local sp=65536
tex.setglue(100, 5*sp,1*sp,0,0,0)
tex.setglue(101, 5*sp,1*sp,0,1,0)
tex.setglue(102, 5*sp,2*sp,0,2,0)
tex.setglue(103, 5*sp,3*sp,0,3,0)
tex.setglue(104, 5*sp,4*sp,0,4,0)
}
\immediate\write20{100: \the\skip100}
\immediate\write20{101: \the\skip101}
\immediate\write20{102: \the\skip102}
\immediate\write20{103: \the\skip103}

10:34 AM

10:47 AM
@DavidCarlisle quack <3

@PauloCereda you won't be able to help with the ptex manual unfortunately

@DavidCarlisle oh

This document is written for developers of \TeX/\LaTeX, who aim to
support \pTeX/\pLaTeX\ and its variants \upTeX/\upLaTeX.
Knowledge of the followings are assumed:
\begin{itemize}
\item Basic knowledge of Western \TeX\ (Knuthian \TeX, \eTeX\ and \pdfTeX),
\item ... and its programming conventions.
\end{itemize}
@PauloCereda see the requirements ^^^ :-)

@PauloCereda don't worry it'll soon be dinner time

10:51 AM
@DavidCarlisle yay! Oh wait

@DavidCarlisle So you do ask questions. Just not here.

@FaheemMitha or rather I make bug reports that may possibly be non bugs, just undocumented incompatibilities

@DavidCarlisle don't look at my experimental branch in l3build then. :)

@JosephWright do we have a policy on what to do with gratuitously incompatible primitives should we adjust the definition of \tex_gluestretchorder:D in luatex or just note that any commands we layer on that need to adjust for luatex, this gives 2 in pdftex and ptex and 3 in luatex :(
\documentclass{article}
\usepackage{expl3}

\skip100=10pt plus 1fill

\ExplSyntaxOn
\showthe\tex_gluestretchorder:D\skip100
\ExplSyntaxOff

\begin{document}

\end{document}

@DavidCarlisle Well, at any rate, it looked like a question. As least, I could have sworn I saw a question mark in there.
Of course, I could have been hallucinating. It's been a hard month.

10:59 AM
@FaheemMitha the ? wasn't a question it was a (?) which is just the polite form of @!***!<expletive deleted>@*@*

@DavidCarlisle I see. So a form of expansion, then. Perhaps you should have written \?.
I just used hg bisect for the first time. It's very exciting. Still don't know what the bug is, though.

1 hour later…
12:17 PM
Funny thing: If I load three packages in the order: ulem, mathtools and myfunnypackage I get an \rvert already defined error in my package, if I use mathtools, ulem and myfunnypackage or mathtools, myfunnypackage and ulem I don't get any error. ulem doesn't define \rvert and doesn't load any other package. Anybody wants to guess?

@Skillmon blame @UlrikeFischer

@DavidCarlisle good idea, but still I wonder what happened (but am too lazy to really take a look)
@DavidCarlisle like what effect should ulem have on mathtools such that it defines \rvert or doesn't define \rvert

12:37 PM
@Skillmon Is myfunnypackage supposed to do \newcommand\rvert{} somewhere?

\documentclass{article}

\usepackage{ulem, mathtools}
\show\lvert

\begin{document}

\end{document}
@Skillmon compare that with the version with mathtools,ulem you will see it is rather different

@PhelypeOleinik it loads newpxmath

@Skillmon @PhelypeOleinik \DeclareMathDelimiter\lvert complains if \lvert is \delimeter.. but not otherwise (actually we should fix that for robust versions)

@DavidCarlisle Gah. I was trying to make the error with \newcommand. Makes sense now.
@DavidCarlisle I see MiKTeX's update strikes again :-)

@PhelypeOleinik I assume so, we can definitely blame @UlrikeFischer for that.

12:51 PM
@DavidCarlisle The problem seems to be \set@curr@file undefind. I just updated TL and everything works fine, so it looks like it

1:02 PM
@PhelypeOleinik I'm not using MiKTeX, got this error after I updated TL today.

@Skillmon With the MWE in the question?

@PhelypeOleinik wait, which question?

@Skillmon Oh, we're talking about a different issue :-)
@Skillmon I was referring to this one: tex.stackexchange.com/q/511060/134574

@PhelypeOleinik ah, was really confused
@DavidCarlisle oh, the graphicx update caused me an issue as well...
@DavidCarlisle but that's because I used to include files with dots in their filenames by adding an additional pair of braces, but it looks like graphicx now detokenizes its argument. \includegraphics{{some.file}.pdf} used to work, now I'd have to do \DeclareGraphicsRule{.file.pdf}{pdf}{*}{}\includegraphics{some.file.pdf}, very annoying :)

1:09 PM
@AlanMunn no.

1:22 PM
@Skillmon sounds like a bug, let me see....

@DavidCarlisle ooh

Does \NewDocumentCommand enforce (or attempt to enforce) the number of arguments? Because I forgot to add an argument, so there was one less than there should have been. And TeX did not handle it gracefully. It spewed gibberish error messages.
Gibberish to me, anyway.
And it took me a while to figure out what was going on.

@FaheemMitha arguments do not have to be marked in any way so it isn't clear what it would mean to check

@DavidCarlisle I was afraid of that.

If you forget the second argument for \frac and go \frac{1} + abc then it is not that you have omitted an argument, simply that you passed the unintended argument +

1:32 PM
Any option to add a manual checking layer somewhere?
It's passing the data, but it didn't even get as far as Lua. I think TeX got confused while parsing the syntax.

@FaheemMitha as I say it is not at all clear what it is that you want to check, It is not that the argument is missing, just that you have passed the incorrect argument, and how can the system know what you intended?

@DavidCarlisle this.

@DavidCarlisle I passed one less argument than I should have done.
There should have been 5. There were 4.

@FaheemMitha no. You passed in something unexpected as the last argument.

@DavidCarlisle You mean it grabbed stuff after the 4th intended argument. I understand that.
Still no fun to deal with, though. And imagine if I was on a deadline.

1:35 PM
@FaheemMitha so there is not anything checkable, look at my frac example above + might have been a valid denominator it takes some human guesswork to guess it is possibly an error.

@DavidCarlisle Yes, I saw your example, and I take the point.
Still it would be preferable to have something that did this kind of error checking.

@FaheemMitha but as David said, it's not TeX's fault.
It is grabbing the argument, after all.

@FaheemMitha what would you check for?

@PauloCereda Well, I'm still going to blame TeX.

@DavidCarlisle You could make all your commands delimited...

1:38 PM
@DavidCarlisle Dunno.

@Skillmon I don't think this is intended.

@AlanMunn Personally, I still think I'll stick with Emacs.

@AlanMunn yes, but not by {} (unless you use the dreaded g type:-)

@DavidCarlisle Right. I had in mind things like \def\foo(#1)(#2){...} and the like.

@AlanMunn commands delimited?

1:42 PM
@Skillmon you are falling foul of some code added with this extensive documentation:
% \changes{v1.3a}{2019/07/01} {Support UTF-8 and spaces}
%    The quoting business for graphic files needs further sorting
%    out. This should be handled differently, right now we quote and
%    unquote all over the place as we still use the old code base.
%

@DavidCarlisle ooh @JosephWright could tweet this documentation. :)

@FaheemMitha E.g. \def\foo(#1)(#2){I'm #1 and I'm #2} will force you to delimit the arguments with parentheses. So if you leave one out you'll get a somewhat more sensible error message I guess.

@AlanMunn for a broad definition of sensible. :)

@PauloCereda Well \foo(A) B gives you "Runaway argument?", which for TeX is pretty good.

@AlanMunn :)
@AlanMunn "I wish to have an argument, please"

1:55 PM
@PauloCereda lol
@PauloCereda I see a new dialect of Python in the offing. Monty.

@AlanMunn :D

@Skillmon Just stirring the pot. (Or adding pineapple to the pizza.) :) (But you might want to read the article...)

2:11 PM
@Skillmon this works But undoes support for UTF-8 characters in filenames which was the intent of the change.
\documentclass{article}
\usepackage{graphics}

\begin{document}
\makeatletter
\def\set@curr@file#1{\def\@curr@file{#1}}

\includegraphics{{z.z}.png}
\end{document}

@DavidCarlisle So this is the Brexit hack. #makefilenamesblueagain

It would be good if we could keep it working but actually it only worked by accident (dropping the brace) the equivalent code with \input{{z.z}.tex} would always have tried to input a file {z.z}.tex
@AlanMunn ask me if it is still needed next month

@AlanMunn LOL
@DavidCarlisle LOL
TEH LATEX3 BUS

2:31 PM
is it just me or could someone try todays update with luatex
\documentclass[12pt]{article}
\usepackage{graphicx}
\begin{document}
text is here
\begin{figure}
\centering
\includegraphics[]{example-image-a}
\caption{Test figure}
\end{figure}
\end{document}

@DavidCarlisle looks fine to me, no error

@PauloCereda no I see the problem I still have a 2018 lualatex, but not sure why fmtutil didn't remake it, checking....

@DavidCarlisle blame... @UlrikeFischer?

@PauloCereda I chose subtle and precise error correction: rm -r /home/davidc/.texlive2019/texmf-var/web2c

@DavidCarlisle ooh

2:39 PM
@AlanMunn Now that I read it: I myself use the arrow keys in VIM, but only because my keyboard layout gives me arrow keys on the home position of the left hand with a modifier for the right hand (as well as backspace and stuff) and makes hjkl harder to reach (though other often used keystrokes much easier to reach), so I'm none of the hardcore use-only-vim-vim users, I think you should use VIM with the key combinations you find handy.

@Skillmon could I use Ctrl-f ctrl-p, and ctrl-x ctrl-s to save?

@PauloCereda three blames one day - I shouldn't go on holiday.

@UlrikeFischer oh no

@AlanMunn Um. Not sure exactly what you mean.
Why does it force one to delimit the arguments with parens? And would whatever this is work with \NewDocumentCommand?
I'm tempted to ask a question...

@PauloCereda Only one duck at Taormina

2:49 PM
@UlrikeFischer ooh

@FaheemMitha because tex at the lowest level strips braces. you really can not tell the difference between \fbox{x} and \fbox x tex does not report the braces were there so \fbox can not be defined to check they are (well it can but not without completely changing the way the argument is parsed)

@DavidCarlisle So, adding round brackets does what, exactly? Do the round brackets become part of the argument?

@DavidCarlisle ooh parse tree

@FaheemMitha no but thy are mandatory syntax. if you define \foo(#1)(#2){....} then when you use \foo there has to be two pairs of () or you get an error.
@PauloCereda with a partridge in it

@DavidCarlisle LOL

2:52 PM
@DavidCarlisle Oh. Would that work with \NewDocumentCommand? Though it's not defined with that syntax at all.

@FaheemMitha yes or perhaps better just to make them optional and then give a custom error if they are not there, you could do the same with {} arguments using g

@DavidCarlisle oh no G

@DavidCarlisle It just needs to check for the right number of arguments. I realise type checking, or anything like it, is impossible. Since TeX doesn't have types.

@FaheemMitha "right number of arguments" is such a tricky concept.

@FaheemMitha I really don't follow. You want to force argument delimiters. It's not about right number of arguments IMHO.

2:58 PM
@PauloCereda Isn't putting argument delimiters effectively forcing TeX to check for the number of arguments? Though I'm still unclear how it works.

@FaheemMitha as said before you are not checking the right number of arguments you want to check that the final arguments have the expected type. If you go {.. \frac{1}} then you will get an error that the second argument is missing, but otherwise \frac always gets two arguments, it takes whatever the next two things are, so if you forget to supply the correct arguments it takes whatever is there unless you close the group with } so there are not two things at all.

@DavidCarlisle damn those partridges! :)

@PauloCereda they are not so bad but the lords-a-leaping do get in the way sometimes.
@Skillmon I've raised your \includegraphics issue with the team, we should probably make that work again.

@DavidCarlisle oh
@DavidCarlisle Blame @JosephWright?

@PauloCereda @UlrikeFischer

3:11 PM
@DavidCarlisle ooh

@PauloCereda 6611

1 hour later…
4:35 PM
@DavidCarlisle thanks :)
@FaheemMitha but TeX has types, there are different types of registers, and it got tokens and boxes and ....

4:54 PM
@Skillmon characters are made "safe" so \input{Gruß Welt} doesn't try to input Gru\IeC{\ss} Welt.tex but ...

@Skillmon Do those count as types?

@FaheemMitha depends on how you define type.

@PauloCereda a box of lead bits with impressions of letters on them.

@DavidCarlisle touché. :)
@DavidCarlisle sounds too old

4:59 PM
@DavidCarlisle ooh French

@FaheemMitha yesn't. Well a skip is a different type than a length than an integer, though one could convert a length to an integer and vice versa, but the stretch and shrink is unique to shrinks, and token registers are different from the afore mentioned and boxes are pretty special, too. So I'd say yes, there are types in TeX, just not the conventional types one knows from general purpose programming languages.

2 hours later…
7:17 PM
@DavidCarlisle Ooh Schönfinkelization.

@AlanMunn that makes you a "nobody"
yesterday, by Harald Hanche-Olsen
@DavidCarlisle Currying was really invented by Schönfinkel – Curry merely popularised it. For some reason, nobody calls it Schönfinkelisation. (Oh wait, Frege did it first?)

@DavidCarlisle Well in linguistics, most of us who know what currying is also know the term Schönfinkelization, because a well-known semantics textbook by two of the most important people in the field (who are also German) made a point of it. :)
@DavidCarlisle And checking out the Wikipedia page you linked to, it seems a linguist edited it, since that textbook is the reference they give.

@DavidCarlisle Need a low-level abstraction I guess: that's bloody annoying

@JosephWright interesting I looked up the omega doc and it says that they chose fi specifically to undercut fil glue without being incompatible with existing macros then luatex imported it undocumented and incompatible....

@DavidCarlisle Why did that suddenly came up?

7:32 PM
@UlrikeFischer I tried to answer a question on how to set a skip length from lua so I used tex.setglue and used 1 and 2 for the stretch and shrink order components but got fi and fil not fil and fill
5

The following shows the skip register \zzz being set to a stretchy value from Lua. It produces a log of \zzz has value 5.0pt plus 1.0pt minus 2.0pt lualatex document: \documentclass{article} \newlength\zzz \directlua{ local sp=65536 tex.setglue("zzz", 5*sp, 1*sp,2*sp,0,0) } \typeout{\z...

@FaheemMitha -- Agreed. But anyone else who wants to switch, it's their choice.

@DavidCarlisle hm. Why was there a need for fi in omega? Why not adding filll (or whatever would have come next)?

\subsection{New infinity level}

A new infinity level \texttt{fi} has been added.  It is smaller than
\texttt{fil} but bigger than any finite quantity.  Its original intention
was for inter-letter stretching: either \emph{filling-in-the-black},
as is done for calligraphic scripts such as Arabic; or for emphasis,
as in Russian; all this without having to rewrite existing macro packages.
There is therefore a new keyword, \texttt{fi}, and two new primitives,
\verb|\hfi| and~\verb|\vfi|.
@UlrikeFischer ^^

@DavidCarlisle -- That means "When is it needed?" I think you really mean "Ask me next month if it is still needed."

@barbarabeeton don't confuse @AlanMunn with linguistic details

8:00 PM
@barbarabeeton Surely the original sentence is ambiguous. Unless you're concerned about commas...

@AlanMunn -- Eschew obfuscation.

@barbarabeeton Especially in vocabulary. :) And you're asking @DavidCarlisle to do this! :)

@DavidCarlisle so the main point was "existing packages " and now we have the incompatibility ; -(

@UlrikeFischer I did wonder about asking for an option to change this to use -1 for fi but it seems to have always been this way in luatex so I'm not sure they will want to change things now (@JosephWright)
@JosephWright @UlrikeFischer not that tabu isn't broken anyway but things like \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip are completely broken in luatex

8:15 PM
@DavidCarlisle Yeah, we need a low-level abstraction in expl3 I guess

@DavidCarlisle does anyone actually use that fi stretch?

@UlrikeFischer given that omega is only available as a compressed tar archive on ctan, and its existence is not documented in the luatex manual, I doubt it, but the real pain is that gluestretchorder for fill glue is 3 not 2

@DavidCarlisle As Hans for a change I think

@JosephWright OK, see what happens....

@DavidCarlisle If we don't get one, we should add an expl3 wrapper that 'knows' about this: probably to the core, for the LaTeX2020 business

8:31 PM
@DavidCarlisle yes, I was only wondering if it would break much if we request a change. I found only one hit in context and it seems not to do anything.

@AlanMunn ooh

@JosephWright overloading \gluestretchorder would be easy enough but unless we change tex.setglue as well to take the same numbers it might just get more confusing
@UlrikeFischer looking for fi specifically or for any use of fill numbers in tex.setglue?

@DavidCarlisle I was thinking of a wrapper precisely so we have proper control; we could alter the Lua table too ...

@JosephWright ooh

@DavidCarlisle just thought that one should look for this too ... there are a number, but not much.
which number does ptex use for fi?

8:43 PM
@JosephWright yes I know we could but it would be better if they did it, and changed the manual:-) it's easier to sell a latex3 named tex_glue_stretch_order: being different from the manual primitive than overloading the documented lua functions. grrr
@UlrikeFischer 0 as far as I can see (so you can't tell it is stretchy if you use that) (I suggested -1 in mail just sent)

@DavidCarlisle hm 0 isn't a good value too ;-). This reminds me a lot one of my math course about infinity types ;-)

@UlrikeFischer the Continuum Hypothesis states that there are no infinite stretch orders with \gluestretchorder below 1
5

@DavidCarlisle we could assign 0.9999... to fi.

@UlrikeFischer might need a few changes to the integer type to support that:-)

8:59 PM
@DavidCarlisle ;-). Okay then 666. Larger than one and it is improbable that some \filll will ever reach it.

9:41 PM
I think, "gratuitously incompatible primitives" can be applied to \currentiftype. e-pTeX does not support \ifpdfabsnum and \ifpdfabsdim of pdfTeX, but supports \iftdir and \ifydir etc. Therefore, hardcoded test \ifnum\currentiftype=25 ... \fi will never be safe. List of \currentiftype of e-pTeX is described in eptexdoc.pdf, and the value will change from TL2019 to TL2020 by addition of \ifincsname to e-pTeX.

@HironobuYAMASHITA Useful to know: at some stage we may need to abstract that, then

Changing \gluestretchorder/\glueshrinkorder of "fi" to something like -1 or 666 may be problematic; what will happen if you use \ifnum\gluestretchorder>1 to test if we have more than fil? I suggest it should be better to provide some wrapper on the macro layer, such as __gluestretchorder_fil to always point to \gluestretchorder of fil.

9:59 PM
For example, pLaTeX has a macro \removejfmglue which uses \lastnodetype and \lastnodesubtype (the latter is e-pTeX specific primitive). In the implementation, we stock \lastnodetype and co on-the-fly, not by using documented value of glue (21):
\ifdefined\ucs\jfont\tenmin=upjisr-h at 9.62216pt
\else\jfont\tenmin=min10\fi
\tenmin\char\jis"214B\null\setbox0\lastbox%"
\global\chardef\pltx@gluetype\lastnodetype
\global\chardef\pltx@jfmgluesubtype\lastnodesubtype
\protected\def\removejfmglue{%

@HironobuYAMASHITA Like I said, need to abstract these over time

10:25 PM
@HironobuYAMASHITA yes I couldn't think of anything better, as you say a wrapper macro might be better (but I was worried about keeping something with the Lua interface) I wanted to put forward some suggestion so I suggested -1,1,2,3 but it is not ideal and certainly open to other suggestions, I suspect luatex won't change and we have some time to experiment with finding some reasonably compatible wrapper.

@DavidCarlisle We probably should think about this more widely; I'm not sure about the \if... business, but for glue stretch we could have something symbolic

@JosephWright you mean we could have symbolic names like \c_fil_order \c_fill_order that are 1 and 2 in pdftex and 2 and 3 in luatex, then if you only check against the variables not literal numbers it all works out?

@DavidCarlisle Yes, that would do it, although I was thinking \skip_compare_fill_order:nNn(TF) or something, with one argument being fi()(l)(ll)(lll)

10:42 PM
@schtandard The rant storm seems to have subsided. :)

@AlanMunn Yeah. Amazing how entitled some people can feel on the internet (or offline as well, I guess).
@DavidCarlisle What would have been be problem with 0, 1, 2, 3? Wouldn't it be rather intuitive to just use the number of l's as the argument?

@schtandard Indeed.

@schtandard because 0 already means finite stretch, like 5pt plus 2pt`
@AlanMunn did we miss an argument:(

@DavidCarlisle Oh, tricky..

@AlanMunn ah so I didn't miss much then, I'll stick to being an expert on languages, as we know nothing of tex

10:54 PM
@DavidCarlisle Seems like a wise choice.
@DavidCarlisle I'm quite surprised that the chat above isn't going on in Japanese, but I understand it's hard for the rest of us, so you're being very considerate.

@AlanMunn ジョセフのために譲歩しなければなりません

@DavidCarlisle very fluent Japanese ;-)