On 1/19/2026 2:55 PM, luigi scarso wrote:
On Wed, 14 Jan 2026 at 10:56, Udi Fogiel
mailto:udi.fogiel@proton.me> wrote: Hello,
Here is what happens when \vcenter is encountered:
staticvoidrun_vcenter(void){ scan_spec(vcenter_group); normal_paragraph(); push_nest(); mode = -vmode; prev_depth_par = ignore_depth; if(every_vbox_par != null) begin_token_list(every_vbox_par, every_vbox_text); }
So unlike other boxes is uses scan_spec and not scan_full_spec, which means it cannot accept the attr and (b)dir keywords, and the directions registers are not set to its direction inside of it.
Then when it finishes we have:
voidfinish_vcenter(void) { halfword p; unsave(); save_ptr--; p = vpack(vlink(cur_list.head_field), saved_value(0), saved_level(0), -1); pop_nest(); p = math_vcenter_group(p); tail_append(p); }
And because of the -1 in the last argument, its direction is determined by \bodydirection, unlike other boxes which in math context use \mathdirection if a (b)dir keyword was not specified.
Why is that? It feels a bit inconsistent, and makes it a bit hard to follow directions.
I guess since mathematical typesetting is quite complex and we want to maintain some degree of compatibility with pdftex, \vcenter remains largely unchanged (on the other hand, I think using the token lib it is possible to get something similar to \hbox/\vbox for \vcenter) .
also, in luatex, vcenter is a math only command and injects a noad and not a box (vlist) so introducing attr and dir there would also mean figuring out how to deal with it in the perspective of math (like what should get the attr and when); as vcenter is often used low level and can wrap any content one can mess with that instead so here compatibility is indeed the verdict (changing this after two decades is also a bit dangerous wrt compatibility) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------