From fb99090208c9aface707f9d4526f411fcb67f705 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Tue, 25 Apr 2023 02:22:32 -0700 Subject: [PATCH] Support implicit alignment (#749) --- library/src/math/align.rs | 14 ++++++++++---- tests/ref/math/alignment.png | Bin 6413 -> 8064 bytes tests/ref/math/matrix-alignment.png | Bin 15027 -> 15065 bytes tests/typ/math/alignment.typ | 1 + 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/library/src/math/align.rs b/library/src/math/align.rs index 4e4a76e97..aee89a893 100644 --- a/library/src/math/align.rs +++ b/library/src/math/align.rs @@ -28,13 +28,13 @@ pub(super) fn alignments(rows: &[MathRow]) -> AlignmentResult { for row in rows { let mut width = Abs::zero(); let mut alignment_index = 0; + for fragment in row.iter() { if matches!(fragment, MathFragment::Align) { if alignment_index < widths.len() { widths[alignment_index].set_max(width); } else { - widths.push(width); - pending_width = Abs::zero(); + widths.push(width.max(pending_width)); } width = Abs::zero(); alignment_index += 1; @@ -42,7 +42,13 @@ pub(super) fn alignments(rows: &[MathRow]) -> AlignmentResult { width += fragment.width(); } } - pending_width.set_max(width); + if widths.is_empty() { + pending_width.set_max(width); + } else if alignment_index < widths.len() { + widths[alignment_index].set_max(width); + } else { + widths.push(width.max(pending_width)); + } } let mut points = widths; @@ -51,7 +57,7 @@ pub(super) fn alignments(rows: &[MathRow]) -> AlignmentResult { points[i] += prev; } AlignmentResult { - width: points.last().copied().unwrap_or_default() + pending_width, + width: points.last().copied().unwrap_or(pending_width), points, } } diff --git a/tests/ref/math/alignment.png b/tests/ref/math/alignment.png index 917c49e11ccf8a07af93e09ce2488b9f13a93ae6..5d7560e1b423526f405f2682ca5957cd5f62def8 100644 GIT binary patch literal 8064 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 KUoQJH@V@|0Q;uB# diff --git a/tests/ref/math/matrix-alignment.png b/tests/ref/math/matrix-alignment.png index 1449553da33a044bbf07558afa6c4b443325e0cb..b15412d69c435bfa669ebeb35b7a7a7f65573f92 100644 GIT binary patch delta 6953 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 E02u<7TmS$7 delta 6914 zcmai&WmMErx5kH1|MZM>GedVM2omBj2m(qoLx_}0N=e6`7&?_y8YPsF4q;#z7+O$~ zMi@XqKuSRn5U%fgKiv2B`Eb@cYdzog`R!-#XWFOUCslwfuvTz{7rY+tC&QHY# zmY9FzqlCd|?;)8{_BV;Tt?~O0MRW|+4fy~gW++O1rbJXHg^!FJ_=I`~4SXsD)j=LV z?A)mc8hOw2_+dTgv*(Z6M-Lf(7~k-bY{m#~j0 zCR3SOsGIFxG~BhrsDcp3`S*~!&y?LkDUBfHd5@#15`vhIa{}!xX9r~ky$`+(2Ifue9 z22BdmC2R;+(Tl3ieWZ!fOLn9{3{y3Izqta6O-d@f;;CEENc(32*DKM0p4%S_3|Grx zNMFaj<9sr77P#WUiFlGF%C?$plbg10?4Ubb@R8CK1KsWD5jQXtxEn)&A0~&s1|0K%X2v(iC1faligz|8n_zDGUs9#bMkGv zcM4`3FCiC|=nYI>+uvyJnayOSnV`1`z7#v&+;=xp4 zZwzA7pH)EEq|p>9wEI3^_c*`IbNI4A%rbOpMada+$add`p%ld?NXC*p0=S0-_GoPS zn<2;x6{_Ipo4?)$?G{bCP^8kr^VAjf8h~=YpxnGXmce@!ux7J=TA&Uo%&eq*`Dyqs#ZA z_h?t658{_uzI-@c^7f$d{V}QT7sU2f5O`Q(WJTT$k}31|n5x8rS#)AcJ>`E=`exaRPJ-APU(&Ro z-(KjY3!d!&3`=$bgLG|z@sx>emd*)oFb;i6E8_fKB2@Iy>NGOQJ71S9jB0d>*%nRm zvC4CvIKah8>IbSHedt_EmE!KgDR1Q@uXk{TZHBkG#eb-iucl|sx%f7InForD|K9f$ zlzI&2Rm%YLl~j-_%NfQ+U%ZahcqPrgSh6fKn50emIPz-E)nMqhMU^O|Mvl}Z3G3Kv zqk=39IN{UWNn*t_1sT#ulikXY8pH3=Jz>9IHLDK`;c`M3{!(~P-s&I~z4#(Gt|EO5 zR5<+I$@3V37Y^XAxtT18llpP-v8l@=EfCv)z;$sW!}hINl!5}&j*n6g#y(bjI*w>yCsSd6+Y+McK%;1 z2Bgc_5nRCn@I9iLXp4K`F4OmQ4|25D*Q~!Vik(5wy0eFKOtS}h_H2ln>OY*|{a4{Z zo%=iEEA<$UgBUJn4eZ@edKISM`oV*XlLOJfC^ONR>f@2w$2Hejg9F*R#=bWjZL0_0 zApb1?AJ`icA28|cIRgEHd7U@^hUjpvc zgKiJ`O40?kRAs7y4a_miFvF#=n&T-(+Xr2g5UJHIvIa-2KDf2V*_{-1AWfEP;E{0$ zR<6PuwrD5*iustWfJ3a!XQxwu2eOLpss_&K?@~BEA0-PS3I%Wces)^cK#FS8ESxq8 zdsIPT?=5`mF)?OloQ&ib_IlLzK9=S|HMxcuf%r`S<2Hxd)%q4jj3Rl9#ddKL?5KL% zt>xe-F=~r76Es(0yYJPs)#P%!uNA*lhPHV`*+CN*`I)y_QIR7mB`>=ZP8D0xNgl*s zBN}}o@i3vI$^1U4>i^@AgY2k4T|1FLP!N6{=Fz;4tb?yfSAcvplCJqSsz|#?B?qm^ zz|)uDb#o`*WrrcyF sD#Ja?K~^FhhU?fik~7fsxJ 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