Fix weak spacing being ignored unconditionally in math.lr (#5477)

This commit is contained in:
Max 2024-11-27 11:16:25 +00:00 committed by GitHub
parent c29c96562d
commit 578ba640f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 12 additions and 3 deletions

View File

@ -62,7 +62,7 @@ pub fn layout_lr(
}
// Handle MathFragment::Variant fragments that should be scaled up.
for fragment in inner_fragments {
for fragment in inner_fragments.iter_mut() {
if let MathFragment::Variant(ref mut variant) = fragment {
if variant.mid_stretched == Some(false) {
variant.mid_stretched = Some(true);
@ -74,10 +74,18 @@ pub fn layout_lr(
// Remove weak SpacingFragment immediately after the opening or immediately
// before the closing.
let mut index = 0;
let opening_exists = inner_fragments
.first()
.is_some_and(|f| f.class() == MathClass::Opening);
let closing_exists = inner_fragments
.last()
.is_some_and(|f| f.class() == MathClass::Closing);
fragments.retain(|fragment| {
let discard = (index == start_idx + 1 && opening_exists
|| index + 2 == end_idx && closing_exists)
&& matches!(fragment, MathFragment::Spacing(_, true));
index += 1;
(index != start_idx + 2 && index + 1 != end_idx)
|| !matches!(fragment, MathFragment::Spacing(_, true))
!discard
});
ctx.extend(fragments);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 647 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -87,6 +87,7 @@ $ 1/(2 y (x) (2(3)) $
// Test ignoring weak spacing immediately after the opening
// and immediately before the closing.
$ [#h(1em, weak: true)A(dif x, f(x) dif x)sum#h(1em, weak: true)] $
$ lr(\[#h(1em, weak: true)lr(A dif x, f(x) dif x\))sum#h(1em, weak:true)a) $
--- math-lr-nested ---
// Test nested lr calls.