Improved #box baselines in math (#1755)

* Improved #box baselines in math

* add a test
This commit is contained in:
damaxwell 2023-07-20 02:59:22 -08:00 committed by GitHub
parent c72952b512
commit 51a21403ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 3 deletions

View File

@ -43,7 +43,7 @@ use self::ctx::*;
use self::fragment::*;
use self::row::*;
use self::spacing::*;
use crate::layout::{HElem, ParElem, Spacing};
use crate::layout::{BoxElem, HElem, ParElem, Spacing};
use crate::meta::Supplement;
use crate::meta::{
Count, Counter, CounterUpdate, LocalName, Numbering, Outlinable, Refable,
@ -480,8 +480,12 @@ impl LayoutMath for Content {
let mut frame = ctx.layout_content(self)?;
if !frame.has_baseline() {
let axis = scaled!(ctx, axis_height);
frame.set_baseline(frame.height() / 2.0 + axis);
if self.is::<BoxElem>() {
frame.set_baseline(frame.height());
} else {
let axis = scaled!(ctx, axis_height);
frame.set_baseline(frame.height() / 2.0 + axis);
}
}
ctx.push(FrameFragment::new(ctx, frame).with_spaced(true));

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -17,3 +17,17 @@ $ x := #table(columns: 2)[x][y]/mat(1, 2, 3)
// Test font switch.
#let here = text.with(font: "Noto Sans")
$#here[f] := #here[Hi there]$.
---
// Test boxes without a baseline act as if the baseline is at the base
#{
box(stroke: 0.2pt, $a #box(stroke: 0.2pt, $a$)$)
h(12pt)
box(stroke: 0.2pt, $a #box(stroke: 0.2pt, $g$)$)
h(12pt)
box(stroke: 0.2pt, $g #box(stroke: 0.2pt, $g$)$)
}
---
// Test boxes with a baseline are respected
#box(stroke: 0.2pt, $a #box(baseline:0.5em, stroke: 0.2pt, $a$)$)