12:06 AM
5
@PauloCereda -- Spotted in a driveway just a few blocks from our house when we went out to dinner yesterdayl

6 hours later…
6:15 AM
@UlrikeFischer I have a plan for colour - told you it was not forgotten

6:26 AM
hi, folks. is this a bad idea?
\newcommand{\olditem}{}% ensure it doesn't already exist
\let\olditem\item
\RenewDocumentCommand{\item}{o}{
\IfNoValueTF{#1}
{\olditem}
{\olditem[{#1}]}%
}

to allow me to type \item[\foo[bar]] without extra braces

6:44 AM
@barbarabeeton Maybe that's "duck" the verb.

7:27 AM
@MarcelKrüger I'm just wondering here, why is it what we need to use such a construction? The old definition for say \xrightarrow in amsmath seems to work just fine in lualatex as well. What am I missing (note that I don't use lualatex much)
@DanielDiniz Exactly what problem are you trying to solve?

@daleif If you place a macro that only takes an optional argument inside the optional argument of \item, this breaks. You need to wrap this macro inside curly braces. At least this is how I understand it ...

@daleif that sometimes I need to write description's \item's like: \item[$\foo{bar}[baz]$] (\foo{m o} begin some xparse macro). but that doesn't because the 1st ] is parsed as ending \item[, so you'd have to wrap it in braces. so this redefinition I've shown seems to allow you not have to use the extra braces
but I wonder if it will generate some kind of unforeseen bug that will bite me later...
** but that doesn't work because the 1st

@DanielDiniz I'd use \NewCommandCopy to be on the safe side: we are likely to use ltcmd ourselves for \item in the foreseeable future

@JosephWright hmm i didnt know this macro. i've seen it's part of the kernel, i'm reading source2e to see how it works

7:45 AM
@DanielDiniz Provide a way to copy robust commands. . .

@daleif \xrightarrow is simply an arrow made longer with rules. That works in luatex. But \xmapsto is constructed from two chars, where the second has no counterpart in unicode-math.

8:02 AM

@DanielDiniz Yes exactly

8:29 AM
@DanielDiniz Maybe I should write a short blog post about this? You are doing best-practice so it would be good to highlight that \NewCommandCopy makes it that bit easier

Erh, how is \Uoverdelimiter 0 "2194 interpreted, what does 0 and "2194 here mean? What was not really obvious from pragma-ade.nl/general/manuals/luatex.pdf

@barbarabeeton ooh

8:49 AM
@JosephWright ah that'd be nice, I think many people don't know that some tasks have been been made easier/safer by new additions to the kernel

@daleif 0 is the font family (\symoperator or so) and "2194 the unicode codepoint fileformat.info/info/unicode/char/2194/index.htm

@DanielDiniz Cool: I'll work on it
(I've just finished a few team tasks and am waiting on feedback, so today is good)

9:17 AM
@UlrikeFischer thanks, makes sense then that it disappeared when I changed 0 to a 1 ;-) It is then interesting what exactly that primitive is doing to the symbol to make it extensible. I was kinda considering stealing the end of 21A6. But will leave it for now

(I think context uses fontfamily 0 for everything)
Trickery going on to make extensibles (recent question).

9:38 AM
@mickep I think unicode-math too (perhaps math versions use others). But copy&paste of such extensibles can look funny. From $\Uoverdelimiter 0 "2192 {ccccccc}$ I get 𝑐𝑐𝑐𝑐𝑐𝑐𝑐 →→→→→→→

2 hours later…
11:15 AM
@daleif It's the same system used for extensible delimiters: The font has a table with different components for every components and some parameters. The advantage is that every font can set individual settings and it automatically works in all compatible programs. (This also makes the distances configurable and font specific) Extracting individual components can be done in LuaTeX by reading the font data structures of course.

11:28 AM
@UlrikeFischer Ah, nice!

11:53 AM
@MarcelKrüger Devils advocat: does that mean that one can extract parts of a symbol? Like the equivalent of \mapstochar?
I'm not expecting that one could.

12:30 PM
@daleif Yes, in LuaTeX you could figure out which glyph provides this and use this separately. But you can't know generally how this part will look. It might be like \mapstochar, it might be almost a full \mapsto or only half of \mapstochar. Especially this might be different in different fonts.

2 hours later…
2:44 PM
@FaheemMitha -- That did occur to me. A college friend had a car, a Dodge; her friends suggested that was appropriate.

3:08 PM
@barbarabeeton we had smoked duck for lunch, yummy

3:29 PM
@CarLaTeX how will you get a meal now? bbc.co.uk/news/av/world-europe-62498787

@DavidCarlisle in other news, the hyperref stuff seems to work. The only open thing (apart that the new enc.def files needs to be adapted to work also with lualatex) is the support for \unichar. This is currently converted by hyperref still to some \9xxx\8xxx which then ends up in the bookmarks. Do you have any idea how to handle that? The value of unichar is a decimal (or better a number):
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{\texorpdfstring{duck}{\unichar{129414}}}
\end{document}

@UlrikeFischer yes I just wrote a \unichar for ucs.sty let me see what hyperref is doing...

@DavidCarlisle the current definition is \HyPsd@unichar,

3:46 PM
@DavidCarlisle -- Domino's doesn't have anchovies. Can't have real pizza without the possibility of anchovies.

@barbarabeeton Domino's doesn't have pizza.

@AlanMunn -- They claim to, but I've never actually tested the claim. No anchovies, no visits.

@UlrikeFischer ah version from ucs isn't expandable I could write something but @JosephWright probably has this hiding in the l3 str_convert functions somewhere (Basically you want \Uchar but working also for pdftex)

@DavidCarlisle That's \char_generate:nn then ;)
@DavidCarlisle See how the text stuff makes actives for pdfTeX :)

@JosephWright I knew it was somewhere:-)
                 ! LaTeX3 Error: Charcode requested out of engine range.
l.12 ...n{\texorpdfstring{duck}{\unichar{129414}}}
@JosephWright ^ (not what I wanted:-)

4:01 PM
@DavidCarlisle ooh

\ExplSyntaxOn
\def\HyPsd@unichar#1{\char_generate:nn{#1}{12}}
\ExplSyntaxOff

@DavidCarlisle You have to do the byte split :)
@DavidCarlisle Two minutes

@JosephWright as I say I was hoping you'd done it as the one I have to hand isn't expandable
@PauloCereda search up for "yummy"

@DavidCarlisle oh no

\bool_lazy_or:nnTF
{ \sys_if_engine_luatex_p: }
{ \sys_if_engine_xetex_p: }
{
\cs_new:Npn \HyPsd@unichar #1 { \char_generate:nn {#1} { 12 } }
}
{
\cs_new:Npn \HyPsd@unichar #1
{
\use:e
{
\exp_not:N \HyPsd@unichar@aux
\char_to_utfviii_bytes:n {#1}
}
}
\cs_new:Npn \HyPsd@unichar@aux #1#2#3#4
{
\tl_if_blank:nTF {#2}
{ \char_generate:nn {#1} { 12 } }
{
\char_generate:nn {#2} { 13 }
@DavidCarlisle ^^^ IF you don't need to prevent further expansion

4:06 PM
@DavidCarlisle I just looked at this question https://tex.stackexchange.com/questions/653677/using-both-packages-ltxgrid-and-pdfpages-together-rotates-body-text-90-degrees. It breaks because it loads lscape, and the ltxgrid package then patches the output. The comment in the docu "For compatibility with David Carlisle's lscape package, we need to allow the
\LS@rot procedure to mung \@outputbox. the lscape package effectively tailpatches two LATEX internals to accomplish its purpose, an approach that is not robust. It is more robust to headpatch \@outputpage, which is what we do here."

! Missing number, treated as zero

\bool_lazy_or:nnTF
{ \sys_if_engine_luatex_p: }
{ \sys_if_engine_xetex_p: }
{
\cs_new:Npn \HyPsd@unichar #1 { \char_generate:nn {#1} { 12 } }
}
{
\cs_new:Npn \HyPsd@unichar #1
{
\use:e
{
\exp_not:N \HyPsd@unichar@aux
\char_to_utfviii_bytes:n {#1}
}
}
\cs_new:Npn \HyPsd@unichar@aux #1#2#3#4
{
\tl_if_blank:nTF {#2}
{ \char_generate:nn {#1} { 12 } }
{
\exp_after:wN \exp_after:wN \exp_after:wN

@JosephWright where are the booleans?

@DavidCarlisle ^^^ IF you do
@UlrikeFischer Oh, sorry
@UlrikeFischer Try now

@JosephWright there is some other stuff at the end from your test file ;-)

4:08 PM
@UlrikeFischer :)

@UlrikeFischer does this work with your modified PU using utf-8 (mangled for me) but I'm out of time for a bit
\documentclass{article}
\usepackage{hyperref}

\makeatletter
\ExplSyntaxOn
\let\HyPsd@unichar\@undefined
\bool_lazy_or:nnTF
{ \sys_if_engine_luatex_p: }
{ \sys_if_engine_xetex_p: }
{
\cs_new:Npn \HyPsd@unichar #1 { \char_generate:nn {#1} { 12 } }
}
{
\cs_new:Npn \HyPsd@unichar #1
{
\use:e
{
\exp_not:N \HyPsd@unichar@aux
\char_to_utfviii_bytes:n {#1}
}
}
\cs_new:Npn \HyPsd@unichar@aux #1#2#3#4
{
\tl_if_blank:nTF {#2}

4:39 PM
@DavidCarlisle the one #2 must be #1 @JosephWright but after I corrected that:

@UlrikeFischer dinner

@DavidCarlisle oh no

@UlrikeFischer and presumably 🦆 would also work instead of \unichar
zoom calls...

@DavidCarlisle that always worked. macros are the problem.

@UlrikeFischer \def\unichar#1{legacy macro don't use} would be simpler

4:51 PM
@DavidCarlisle imho be able to add some char by number is quite nice (with lualatex one can naturally use the ^^-notation), often faster than wading through some char tables or searching the net for a copy&paste (windows shortcut options are imho a bit ugly here).

@DavidCarlisle They can't sell refrigerators to Eskimos :D

@UlrikeFischer I wonder if we want a generic \text_codepoint:n or \unicode_char:n or ... (we are clear that \char_... is about engine-level chars, so bytes for pdfTeX)

@DavidCarlisle Seriously, I'm sorry for those who will lose their jobs, but their pizza was disgusting. I tried it once and I would never like to repeat the experience (I think the same applies to many of my compatriots).

1 hour later…
6:01 PM
@CarLaTeX See, sometimes we do agree on what counts as a pizza. :)

@AlanMunn good :D