6:27 AM
@UlrikeFischer I mean in very general terms: if one grabs each line with the 0-127 range verbatim, a grapheme mapping could be used for the letter spacing it does whilst still printing non-ASCII chars

1 hour later…
7:34 AM
I'm guessing this example is something that needs to be reported to unicode-math?
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\begin{document}

Using unicode-math under lualatex this gives 7, without unicode-math
it gives the proper symbol

$\mapstochar$

\end{document}
I rarely use lualatex, so I'm not sure what the proper definition of \mapstochar is when unicode-math is used
Opps, \mapstochar is from the kernel, no amsmath needed

@daleif I find no \mapstochar in unicode-math. How is it supposed to look?

@mickep that is the point. It is the vertical line at the beginning of \mapsto
The kernel defines it as \DeclareMathSymbol{\mapstochar}{\mathrel}{symbols}{"37}
And then defines \DeclareRobustCommand\mapsto{\mapstochar\rightarrow}
unicode-math probably redefines \mapsto but mathtools needs \mapstochar in order to build an extensible version of the arrow.

@daleif Oh, I see. I saw some other such pieces the other day, but not this one.

7:54 AM
@daleif extensible version in lualatex shouldn't be constructed, but e.g. done like this:
\documentclass{article}
\usepackage{unicode-math}
\begin{document}

Using unicode-math under lualatex this gives 7, without unicode-math
it gives the proper symbol

$\Uoverdelimiter 0 "21A6 {\mbox{\strut overdelimiter}}$

$\Uhextensible width 4cm 0 "21A6$

\end{document}

@UlrikeFischer how do you do the amsmath \xrightarrow[over]{below} then in this system? That is not clear to me.

@daleif Section 7.6.5 in pragma-ade.nl/general/manuals/luatex.pdf might be relevant.

@daleif good question, the luatex docu shows only over or under but not both. @MarcelKrüger do you know that?

@UlrikeFischer If that construction is suppose to be used shouldn't \xrightarrow from amsmath also be redefined? The old construction for \xmapsto do work, just need the proper symbol for that start.

8:15 AM
@daleif I think there were some issues (or at least discussions) on whether to use the horizontal arrow stretching when we first updated amsmath for luatex. At the time the implementation was not very robust, and font support was patchy, things probably better now.
@UlrikeFischer use @mickep's lmtx math :-)

@daleif yes. Btw regarding the xmapsto: github.com/wspr/unicode-math/issues/197

8:27 AM
@DavidCarlisle corporate oh no

@PauloCereda corporate breakfast

@DavidCarlisle continental? oh no

8:42 AM
@UlrikeFischer That is a good thread to know

:61758723 Well, \xmapsto seems to work OK. Defined in math-stc.mkxl as \definemathextensible [\v!reverse] [xmapsto] ["21A6]. In the unpacked lucida math font one can find (not sure that it helps though):

[8614]={
["boundingbox"]=84,
["index"]=411,
["math"]={
["hparts"]={
{
["end"]=161,
["glyph"]=983125,
["start"]=0,
},
{
["end"]=457,
["extender"]=1,
["glyph"]=983122,
["start"]=457,
},
{
["end"]=0,
["glyph"]=983127,
["start"]=457,

@mickep question is can you put stuff above and below it while stretching
\documentclass{article}

\usepackage{amsmath}

\begin{document}

$A \xrightarrow[v=w=x=y=z]{a,b,c} B$

\end{document}

@DavidCarlisle Yes, \im{x\xmapsto{1+2=3}{4+5+6=7+8} gives me:
(But what goes above and below is not typeset well, should probably be scriptstyle. And there were some more problems. This is nothing that has changed during the last months.)

8:58 AM
@mickep ok thanks

@DavidCarlisle (There is also \mmapsto that inverts the order of the two arguments. Maybe the m is for mml compatibility?)

9:12 AM
@mickep don't blame me for your weird names:-)

I just happened to read

%D WARNING: If the code here changes, the export needs to be checked! Stackers are
%D rather special because the order in mathml matters, so we flush in [base under
%D over] order.

and thought that might be the reason for the m variants. This happened before my time.

9:37 AM
@mickep oh so it might be mathml:-) (the name of the command is not mathml, but as the comment says mml always has base under over positional arguments in that order

@mickep that doesn't sound as if you have some special primitive, but as if you simply stack the stuff (probably after measuring it).

2 hours later…
11:51 AM
@DavidCarlisle ConTeXt and MathML are going hand in hand... ^_^
@UlrikeFischer That is how it looks in the source, yes. And I find no Uoverunderdelimiter or similar.

12:16 PM
@DavidCarlisle, @UlrikeFischer, @MarcelKrüger, @PhelypeOleinik, @egreg Keyvals are coming ... github.com/latex3/latex2e/tree/keyval-detect

@JosephWright stop breaking stuff
:)

@PauloCereda The sillywalking will now support walking ducks? \sillywalk[character=duck].

@mickep soon :)
@mickep the sillypage taskforce team is working on interesting features
^^ @PhelypeOleinik are we? :)

12:38 PM
@PauloCereda What?
er...
i mean
yes
definitely
:)

@PauloCereda Haha

12:50 PM

1:05 PM
@yo' luatex '\end' This is LuaTeX, Version 1.15.1 (TeX Live 2023/dev) :-)

@DavidCarlisle Oooh

@DavidCarlisle ooh
@JosephWright ooh

@DavidCarlisle well, that's on your \end :-)

@yo' Exciting times

@JosephWright indeed! And we have the newest kernel, which is great! (It caused some bumps here as we do a new full benchmark whenever the TL image changes, even if the change is as cosmetic as this one.)

1:08 PM
@yo' I was just testing: I see you could drop the bit about an infinite loop from your blog as we got that one fixed in time

@yo' do people really do \usepackage[\iffoo top=1cm, \fi twoside]{geometry}? or is this only in one arcane template?

@JosephWright ^^ @PauloCereda

@UlrikeFischer People do all sorts

@yo' will do!

@UlrikeFischer I believe it's more than one template, that's why we added the line. Basically anything that worked (officially supported or not), people will do. That's what we learn from the Gallery tests :-)

1:12 PM
@yo' @JosephWright fixed. :)

@yo' What I said, just longer ;)
@PauloCereda :)

@yo' how easily can you run your tests? Do you do it also during the year?

@AlexG \sys_ensure_backend: is in release expl3 now (also @UlrikeFischer)

@UlrikeFischer we only do it when a new TeX Live image is created, which is like 5 times for the deploy (June--August), but other than that not really. We have the tools for it however.
@JosephWright \expand\JosephsComment

1:26 PM

1:43 PM
@JosephWright Great, thank you! And when will it make it into the format? (In October?)

@AlexG As soon as people update: expl3 changes get incorporated as-and-when I release

@JosephWright Er, I meant into the kernel (so loading expl3 explicitly is not needed).

@AlexG That's what I means: updating l3kernel triggers a format rebuild with both TeX Live and MiKTeX

@JosephWright Ah, I see. Thanks again!

2:11 PM
@yo' Your statement is unnecessarily restrictive. Just because something does not work does not mean that people won't do it anyway :)

2:28 PM
@samcarter especially if someone cunningly hides the error messages and shows an output anyway.

2:46 PM
@DavidCarlisle yes, that's very helpful :)

Speaking of which, can we seek and destroy all tutorials that suggest \let\clearpage\relax might end well?

@DavidCarlisle ??

oh sorry, no need. You have \let\clearpage\relax !!!! That completely breaks latex, no cross referencing can work if you do that. — David Carlisle 35 mins ago

@DavidCarlisle @JosephWright I'm pondering about hyperref and \pdfstringdef. If the cjk chars get now protected too, then they will break in hyperref. Which means either another loop to unprotect them is needed, or hyperref learns to handle protected utf8 chars. If I remove the unprotection code, then one ends with a mix of utf8 and "preconverted" stuff: grüße\80\040\9330\064\9335\073. Can the new text mapping convert that into this (at resonable speed):
\376\377%new
\000g\000r\000\374\000\337\000e%converted
\000\040%\8 ->\00
\330\064\335\073% 9 removed

did I see pdf 2 will allow utf-8 rather than 16 here? @UlrikeFischer that would simplify things as protected utf-8 would "just work"

3:00 PM
@DavidCarlisle perhaps, but it wouldn't really change the problem, that one has all these \80\040 lurking around (some of them inserted to support xspace, I wonder what that is).

@UlrikeFischer Doesn't the string conversion code already cover this?

@UlrikeFischer we should keep everything in utf-8 until the last minute

@DavidCarlisle Yes

\40 is is octal 40 so decimal 32 so a space, what is \80 ? clearly can't be octal, I'd need to read the manual again:-)

@JosephWright no, conversion of grüße works fine, but if you have the hyperref commands in the mix you get nonsense:
\documentclass{article}
\begin{document}
\ExplSyntaxOn
\str_gset_convert:Nnnn \blub{grüße}
{default}
{utf16/string}
\show\blub %fine
\str_gset_convert:Nnnn \blub{grüße\80\040\9330\064\9335\073}
{default}
{utf16/string}
\show\blub %nonsense
\ExplSyntaxOff
\end{document}
@DavidCarlisle the \8 is only a marker for later (and then replaced by \00 in the last step).

3:08 PM
@UlrikeFischer ys but we could make hyperref write utf8 not 16 then do a utf-8 to 16 conversion at the end, if needed.

@DavidCarlisle Yup

@UlrikeFischer ah OK so that's a utf-16 space, written in octal. I'd rather read xii

@DavidCarlisle the problem is that we don't start with utf8. I made the example with \pdfstringdef\blub{grüße \textGaPa} . And in between hyperref injects various of this stuff too (the xspace was not a joke).

@UlrikeFischer I know, but we could change that
@UlrikeFischer what breaks if you define \pdfstringdef to be \text_purify followed by utf-8 to utf-16 conversion?
@UlrikeFischer but doesn't the existing un-protect loop work for now? I only needed a different one for utf8x as it defines active characters taking arguments.
@UlrikeFischer which package defines \textGaPa not simply CJK ?

3:25 PM
@DavidCarlisle arbitrary symbol taken from puenc.def. And cjk errors I tried. Simply using \text_purify:n would basically work, but imho change lots of details (e.g. --- and xspace, so can not be done shortly). But what could work could be to change the puenc.def definitions. If one does \DeclareTextCommand{\textGaPa}{PU}{𝄻}, then the char is preserved.

@UlrikeFischer and presumably if 𝄻 used a \protected definition it woud never have expanded to \textGaPa and so the PU definition wouldn't have been looked at at all.

@DavidCarlisle yes, using them directly is fine, but the problem is that users use also commands.
But I think there is a bug in str_convert here. This doesn't look right:
\ExplSyntaxOn
\str_gset_convert:Nnnn \blub{𝄻}
{default}
{utf16/string}
\show\blub

\ExplSyntaxOff
> \blub=macro:
->\376\377\3304\335;.

@UlrikeFischer Guess I need to look at that (unless you or @DavidCarlisle want to)

@UlrikeFischer BOM \330 \064 \335 \073 is BOM \330 4 \335 ; so it is right (@JosephWright)

@DavidCarlisle Phew

3:39 PM
@DavidCarlisle oh. good

@JosephWright utf-16 written as octal-or-accidental-ascii is such a pleasant encoding, it should be used more often.
5

@DavidCarlisle I think replacing puenc could work. They would be still a few more changes needed but imho that could be managed. Do you have a script to replace all the \8xxx by the proper unicode chars?

@UlrikeFischer So we go with \text_purify:n?

@UlrikeFischer I could get @PauloCereda to provide some suitable emacs lisp:-)
@UlrikeFischer I could come up with something
@UlrikeFischer utf8x good to go to ctan?

4:00 PM
@DavidCarlisle U﻿n﻿і﻿с﻿о﻿d﻿е﻿‚﻿ ​w﻿h﻿а﻿t﻿ ​g﻿о﻿о﻿d﻿ ​h﻿а﻿ѕ﻿ ​і﻿t﻿ ​d﻿о﻿n﻿е﻿ ​t﻿о﻿ ​u﻿ѕ﻿?

4:25 PM
@DavidCarlisle I hope ;-)

4:37 PM
@mickep οι ωραίοι άνθρωποι της Unicode μας δίνουν ένα ξύλινο άλογο

@DavidCarlisle arara has a hidden Lua interpreter, we could add a Lisp one for you :)
@mickep albatross :)

@UlrikeFischer we could convert all the octal utf-16 in puenc.def to utf-8 but wouldn't that just make it the same as tuenc.def ?

@DavidCarlisle hm, tuenc.def has around 500 line, puenc.def over 2000 (and there is also the greek stuff) so I think there would something missing (no that I claim everything is needed, but I bet the day we remove \textGaPa a user would pop up). Also tuenc.def uses char numbers, while I would need the actual utf8 char.

5:02 PM
@UlrikeFischer using a number with \DeclareUnicodeComposite is the same as using text with \DeclareTextCompositeCommand so that's just a detail.
@UlrikeFischer much of the extra PU definitions are math (which we can use the unicode-math table (and probably need to do that anyway, not just for hyperref)

@DavidCarlisle what I mean is that I need a protected utf8 char so that hyperref leaves it untouched.

@UlrikeFischer, @DavidCarlisle All of these seems to fit into what I said on the team list ...

@JosephWright well currently I'm trying to avoid to change too much. While I would like to use \text_purify etc, I think that there are too many small things that would change if one simply change \pdfstringdef to use it. This should be tested first with the generic driver, but for this I would have write the bookmark code first.

5:18 PM
@UlrikeFischer ooh cleanse the impure text

@UlrikeFischer yes but you can get that from the TU definition easily enough.

@DavidCarlisle Ohh, what have the gr... never mind.

@UlrikeFischer Oh yes, I meant longer term

@UlrikeFischer i'll make a version of puenc with utf8, safer first step

5:40 PM
@DavidCarlisle I have a nearly usable file here github.com/u-fischer/putfenc/blob/master/putfenc.def. But it doesn't work with unicode engines.

5:55 PM
@UlrikeFischer no you'd need numeric input, or real characters, not ^^
@UlrikeFischer how did you make that?

@DavidCarlisle with pdflatex it works fine, but yes naturally not with the unicode engines.

@DavidCarlisle I was thinking codepoints with auto-conversion set up

@DavidCarlisle more or less manually long time ago to get some qrcodes working.

@DavidCarlisle More or less what I've done for various Unicode things and suggested for the case ddata longer-term

6:00 PM
@JosephWright puenc with codepoints is essentially tuenc and \DeclareUnicodeComposite{\'} {a}{"00E1} is data you must have already in text_purify I guess, so long term it should all collapse down to nothing at the 2e/hyperref level?

^^ cjk works

@UlrikeFischer :-)
@UlrikeFischer and ducks?

@DavidCarlisle Sounds good to me
\group_begin:
\cs_set_protected:Npn \@@_loop:Nn #1#2
{
\quark_if_recursion_tail_stop:N #1
\tl_const:cx { c_@@_purify_ \token_to_str:N #1 _tl }
{ \@@_tmp:n {#2} }
\@@_loop:Nn
}
\bool_lazy_or:nnTF
{ \sys_if_engine_luatex_p: }
{ \sys_if_engine_xetex_p: }
{
\cs_set:Npn \@@_tmp:n #1
{
\char_generate:nn { "#1 }
{ \char_value_catcode:n { "#1 } }
}
}
{
\cs_set:Npn \@@_tmp:n #1
{
\exp_args:Ne \@@_tmp_aux:n
@DavidCarlisle ^^ For example
%   Now we handle the pre-composed accents: the list here is taken from
%   \texttt{puenc.def}

@DavidCarlisle there unproblematic anyway
5

6:19 PM
@UlrikeFischer, @DavidCarlisle Need me to do anything?

6:32 PM
@UlrikeFischer ooh
@JosephWright quacks in joy? :)

7:29 PM
@mickep -- "Embellishments should definitely be scriptstyle. Should also be a bit closer, and should also never extend beyond the length of the arrow. Also, I'm pretty sure that "over" embellishments occur more frequently than "under" ones so (in my opinion) the input order you show is logically backwards.

Weird site icon at small magnifications for the hot questions list. (FF Mac)

@AlanMunn looks like the icons of webmasters.stackexchange.com

@JasperHabicht Yes I think that's what it is.
Also in other places.
I've reported it on meta
0

The favicon of the TeX.se site uses the one for webmasters.stackexchange.com: Hot questions list: Your communities list:

7:50 PM
@AlanMunn It looks like they use some kind of sprite where all site icons are combined and the shift is somehow off.
But using a chromium browser on Windows I cannot reproduce this. Strange

@JasperHabicht Yes, that seems to be the case. My question is already closed as a duplicate of meta.stackexchange.com/questions/381137/…

2 hours later…
9:37 PM
@barbarabeeton Yes indeed. Regarding the order I did not yest with one argument, but I guess/hope it will appear then on top. There was also \mapsto for which the order of the argument are reversed with respect to \xmapsto. Regarding the other issues I already sent suggestions to Hans.
(as usual, thanks for the comment!)

2 hours later…
11:18 PM
@UlrikeFischer @daleif This would need a \Uunderoverdelimiter primitive which doesn't exists. Of course this is LuaTeX, so missing primitives are very much a solvable issue. You can do something like github.com/zauguin/Uunderoverdelimiter/blob/trunk/mathstack.pdf