From 0e575632de338d51f1c466acc8fc7a42698c16d1 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Thu, 23 Jan 2025 17:54:28 +0100 Subject: [PATCH] Prefix-less bibliography items are blocks --- .../typst-library/src/model/bibliography.rs | 44 ++++++++++-------- tests/ref/bibliography-grid-par.png | Bin 0 -> 8757 bytes tests/ref/bibliography-indent-par.png | Bin 0 -> 9087 bytes tests/suite/model/bibliography.typ | 18 +++++++ 4 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 tests/ref/bibliography-grid-par.png create mode 100644 tests/ref/bibliography-indent-par.png diff --git a/crates/typst-library/src/model/bibliography.rs b/crates/typst-library/src/model/bibliography.rs index 762a97fd9..a391e5804 100644 --- a/crates/typst-library/src/model/bibliography.rs +++ b/crates/typst-library/src/model/bibliography.rs @@ -17,7 +17,7 @@ use hayagriva::{ use indexmap::IndexMap; use smallvec::{smallvec, SmallVec}; use typst_syntax::{Span, Spanned}; -use typst_utils::{ManuallyHash, NonZeroExt, PicoStr}; +use typst_utils::{Get, ManuallyHash, NonZeroExt, PicoStr}; use crate::diag::{bail, error, At, FileError, HintedStrResult, SourceResult, StrResult}; use crate::engine::Engine; @@ -29,7 +29,7 @@ use crate::foundations::{ use crate::introspection::{Introspector, Locatable, Location}; use crate::layout::{ BlockBody, BlockElem, Em, GridCell, GridChild, GridElem, GridItem, HElem, PadElem, - Sizing, TrackSizings, VElem, + Sides, Sizing, TrackSizings, }; use crate::loading::{DataSource, Load}; use crate::model::{ @@ -206,19 +206,20 @@ impl Show for Packed { const COLUMN_GUTTER: Em = Em::new(0.65); const INDENT: Em = Em::new(1.5); + let span = self.span(); + let mut seq = vec![]; if let Some(title) = self.title(styles).unwrap_or_else(|| { - Some(TextElem::packed(Self::local_name_in(styles)).spanned(self.span())) + Some(TextElem::packed(Self::local_name_in(styles)).spanned(span)) }) { seq.push( HeadingElem::new(title) .with_depth(NonZeroUsize::ONE) .pack() - .spanned(self.span()), + .spanned(span), ); } - let span = self.span(); let works = Works::generate(engine).at(span)?; let references = works .references @@ -226,10 +227,9 @@ impl Show for Packed { .ok_or("CSL style is not suitable for bibliographies") .at(span)?; - let row_gutter = ParElem::spacing_in(styles); - let row_gutter_elem = VElem::new(row_gutter.into()).with_weak(true).pack(); - if references.iter().any(|(prefix, _)| prefix.is_some()) { + let row_gutter = ParElem::spacing_in(styles); + let mut cells = vec![]; for (prefix, reference) in references { cells.push(GridChild::Item(GridItem::Cell( @@ -246,23 +246,27 @@ impl Show for Packed { .with_column_gutter(TrackSizings(smallvec![COLUMN_GUTTER.into()])) .with_row_gutter(TrackSizings(smallvec![row_gutter.into()])) .pack() - .spanned(self.span()), + .spanned(span), ); } else { - for (i, (_, reference)) in references.iter().enumerate() { - if i > 0 { - seq.push(row_gutter_elem.clone()); - } - seq.push(reference.clone()); + for (_, reference) in references { + let realized = reference.clone(); + let block = if works.hanging_indent { + let body = HElem::new((-INDENT).into()).pack() + realized; + let inset = Sides::default() + .with(TextElem::dir_in(styles).start(), Some(INDENT.into())); + BlockElem::new() + .with_body(Some(BlockBody::Content(body))) + .with_inset(inset) + } else { + BlockElem::new().with_body(Some(BlockBody::Content(realized))) + }; + + seq.push(block.pack().spanned(span)); } } - let mut content = Content::sequence(seq); - if works.hanging_indent { - content = content.styled(ParElem::set_hanging_indent(INDENT.into())); - } - - Ok(content) + Ok(Content::sequence(seq)) } } diff --git a/tests/ref/bibliography-grid-par.png b/tests/ref/bibliography-grid-par.png new file mode 100644 index 0000000000000000000000000000000000000000..5befbcc54160ec62b898eeaafc5649464f416d46 GIT binary patch literal 8757 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 literal 0 HcmV?d00001 diff --git a/tests/ref/bibliography-indent-par.png b/tests/ref/bibliography-indent-par.png new file mode 100644 index 0000000000000000000000000000000000000000..98a3c4d049b1759d06ca051b14ec394f6a6e7692 GIT binary patch literal 9087 zcmV-_BY@nAP)7mmZv$J`A^PgwF&*}esp5OD`T}S>PaVT+w zARwR#Xc7c80Zl-YAfR6*&^sL2f8+=B)Fk_Gkp1>7s7b_HdmeI-!9Pv=?ff1gKcIWM z&rUq`t*LcqFyFeI!u%}5*3LoulT@3@DbC+K`-vof#L&_{F1+D3@nZz$@{$=4e>rh* zC|J)xqr1l+`d^>5=MgQiOn?J@*Exs!S-&q`k0u}#>T@A4tnU}Esqb@bXmD;9-kE* zYfgbK{K7FP#5jq^K=u23eyB!7n)VL_;jryl+AX(zI_{ol`x!o44ixvgv)MFx0G-db zsH|X0K?ejG<>We08sPi`jc!z(J$C#k5*(gTUf~*_Ko1Q!SzHLLuCm<=`VIA?y80S| z;uoO5srB&oHNf0APrQzNx3$ym?7ARo@}fXjRJuZ#ouZ*EEpvT19D?)sH0?C1?&tJw zHG1MKzZ5tlqv7Tn8n4L%=!67aAfrGRm$r$jf$HJmw%rmao!cQM``#+rsr=2|3 z)4Qv|h2py}qaQsEf#)>0cw;&@(Gqr#xm^$ZQEh7WGBu|qB{N=Fhd2Pj$V3z6opv@p z4=!>o;^I%CT6@z2$&Q-@mj~z#Nf@23CJ&&I&ODw0U;!e07TJg0BB3}@W=KzpJK$0Y z2wo6ix4srS(C;Ayjq&&}L>I37+q&u)FZ|k#<)niaEDK}+2W@425+(Dr*1b+Y2%UG- zaZ%tEKlBH}J#enn8Jp8-*`M1}9z8g)>umA>dV4E8I9Lm?YHFM=a*g?Xo2yqDoJa$q z&~b4wB0b&m(j`-o=*;pmM=bV@j55s5W=u{7!J~bBX;RQRIo1&zgN6oI3@fj2h&Y zL*q|CY;SR{7g&7T>Le#$@4D{0{qnOv#KE7rU;W$fI3L3I?qUH$u70qLKJi8=YY%=# zN!CLl$p1P>5YPlP0ZoE{CZI_W&;&FAO@e?Xph*zW1T+CnLPkJuZ*Q-xti0U5wY9an zx+)91U0Pa_QP6dDb$mX*pr9ZxFR!q$u&b+UeSKZpJ3Bj@l9IB#ygW5EWn*KbtgM`v zn7DWP*w~nrm6ei`Qfg`{)zaG9T2xeY$eTn4u-R-C6%{(2E~B6q78dmN^%WEpVq#*% zVlk7+R8>_Ki9}SdP$*PXRBUT&gRZHm!7v_=w{L}#k`j!`$jG3oEEY>mP3`daiJZXe zSzBAnu60C5N8=SsOG}~a>+7LiTwL~^1SOi9n$VS;oV;&(b#?V#(3_i^|H($+MYtCK zf1kK^cs(SF?1GMqi<5!|FX-&-Z0N3K|*R*x1PBa?$uQ=;7hv%F4>5 zq$G(%LiG*|3}6Ku53a?|&JNW$H#a8`2x4PnJs`Z_u~GBY!& zk!Zwfm_9#0kLt$8MtggER#w)Z?3l|d^idec7cLt~$R$J;B8dedA{!*hy(n@Gu~8Ho zmuzGsN}?=CC^oF7nZ?vxn#&(BO*7LpHH+EKG|lX0>iyJHCym$Jyf#y2&f?c|&Uw!5 zd!Fa}JilYHSm@f_-PLF`2|y!UUS1v_AIlJqz}`+zPahv2FMd=JOan?@GxC4xNH$XTU%R!qqep-D=W)jFeCuY`HPE-84?TzsXjbBp_!Q( z)H*skz>Yn$G$BENMy{@|-rL(-U0p?`;XKTSsWvn;NW0)@Hk&yx0?bY$ zfDQ}{ASl*iPL(|194v}3Iy#!2olT0Edj4I03TCI$#^Q04Z#b$srRMKV`v? z1eq-of5@PppP%#d^IKY40)YTsY>WLJ92^J`s4XuqlUHENot>SMaYNa(udJ-dY|uAD zB#|I$(M2YX+}_^a+}zBsjoogik*@dmcW6X7O3@VaD|3d{S%svtt*wnAcmulJ^KmYu5DP{a8mJ39*{o8N9QAV0>8!U9tv8C!hTE(@)Kak$Jp1s1<*K zj;3NCe)yp=wx;lB9dizGXILO?bJN9Z8T-hcmnkBzoZ(4GnlVImBs6BdDD;_C)H5f0P85b)|2 z%n{l|kGjO}2OoU!<(FUn^UpuF@hW~e#*?V|Big3JQe z$(QsUM3>_NYg=@q`LgcRm(M--91)W^TJeN5nxac5xH9Q3NhCL=fUer*dGx!1BDMdf~f{`qI%t#<}zaYBr5Lb>Tqsv2GA zj%12uwM)d13(aktpFwX?3qwsm)qhCflMu8~iBYt{dQdJylH)@w^ZpSu#}y@on{jo9 zIUh<=`0KB~JcE;e{q=y$UZ%3dyHQkIs zGzchx=GkVoG{87}=bd-#YMZ+>6!b^#1&Yk(c*ENTJDH%~KzA%?HV&WLXk|Ux8#MSi z-am5>2U+J&KmAnyQSkTPdoL|kw5JUWBF>gAX3$iH(bh;-TUBnMk^W`45Pqzm6WkP~ z$9d@d%LFVYCnP@S(X&iJPeIQz1$}XXHkUFFGhc3odxFLE!@TqC1#P}%awgh}yU(xb zbJPd-l37}z1UFTH4pTi7M~*J{I*>Iq|AUFnUeMqP7zWgunF3t}R8+1JK?+;)fA2ZL ztQ>z5!)IQ9V71~JF3Lv36ye~?(4+6Z`;HD4duRif1UMi_@lD_vK;d^pYQ6gEtA4}E zu=O|JeA8c}Dq!7)NFCTR&cyjZO8k_&IF1jo4Y*PQxb)?hUtU&%9#OMN{TT~da0Sk< zQlJ}#M1-dek_8QRs1lsqx8Hutq#$p-C-4Vu7c=wx^Up6?s!C*lK_CS1ECn46H0m}p| zvrIuxK~F)?@~8gdSiMFD>a_5J-<#7SOfHDX|&b@Gu3*i52?gmtWe2<0A#b-?$F9mX;Bj zm)jR2zd+Lw)TUYTAqbl1pHCWb6WFx@wvrrxSr!e46q^?375OJMA}s`T%1Fx z>(0REVEY0`sE_VQyHP7xlnWH}Q%^kw_=3NXo?T3_UrA>K2k#;!0Bdplf?$~7;yu7? z=uTXY)1d7=p^Ml!X9AEVsR5rQ4lRqA0;C|~)E$`=ab-IDVl{dcgb`W?{ub;}SWpM? z8^Xh&VRB(2#Ly5T%5A^jy655(X z*j9p$5<)egDMT>EtL0&0PY60;ZH-0@>L5CzI#GIs@wLc;zGN}5&${IP{rg!Y`Rf-r z>oEMKiKF4iERE{XSrn*=geQOHl~;^wZjmx6g=2YHIbW0>ZFMqX#k#F(X2GdHX~yAU zH5m=OC^DLra0@;vb&8Ps{rBJFW8+c1Iq|5E);v1XF#*fb3sn`vNbjbgk6TO_I6kJJ zXPJVYf}Z6r1q~?xDID970{5UO{1(BG%mPh#B?>ZcM$Bypm*XqUMtEAo?jWV&dC1|*VKwA>8 z`JR6{h)+V$1e#a7LU0g-$p&6x88%1RF&=fvfOdKX!d|X?15b+Oz;hxul0M*5Rf2D9 z(Bg80be>_c3{@Dpi(S~@(Cgh4fdwc*@N(sJFs=$xEt~J{x8H{H;rJ-oHcCoE-Xdfq z<&F3^gHmV1P#Sv3wB9*t6L%*u~25{}1{YP$t3GUw?gdtqdw68@m`1gq%lZ zAFL_mh>$QN2JP9CkK8w=1_)e6ISIu}prhz8y{?0W;4nMjA{?(ayP$kAI-o!1kI=EK z8l!%lXRN^VL3y`sY+(xsT3>n`T#ZL&Fm>2%zYNjvlmcrZc%?C(A0R=4#WZfaOsMp) zSdO%hX2r(ERSAzHaV8%4?s)M>MvPvB?3w#zD(=c&8$hk#A3SCAHR}(It#n_cf|$y_c$MSu>+Sv(u7n1t#*gZM29lZVsA-0)+rA zY=krNy3<5aqlg~n%mA-53b`XD%GC?dGoX*D4`pF7qqE0L)%ay_JTqR~FsH)Bk$TI~ zGPY&8cAGou+W4kY7Kv4D%tF1(xEHsk%{GJy8v7c?p76s_lqzw%tct2i*DVj1Nhvmp zVf3n)^XUJ3%Ea+F0n2fV5hJ_Sn{5jExW!A)RD?C3f}Rk3mMQ2<7BqxyLXB54S2g82 zcJSEY(F6z;bP0(C8>yQj3$a{Pv=#f1nO`_mfkl|r-N7l;E2 zH@!DeHP1(_fqYOkDRdep6E>4_0VS#-fZ!6xV=90~yAWf)@Scuzer|7d0vdj8w;&B1 zL993s>lA4K1O%WK&H(ag4|pQq3##%fpb6+d8$md&YtWYCUaO0ImysqYS%P*OBnEl5 zwzue!Oc0dR3Q#8}XwMAAL1nZC{w7nr57`NfLm`2`qyry9fVhPS4g8tsv3v=_6PXv+ zQ@{#**wRy@fP#H!2@9xxSHX1%KYhj|rE!O~ zD6O?z%-k-BX1fTv*vmAx;Gh=fr|Di<+kiIDY-necu%;?Uo5UJoPF%7|*mpvF=}5Ch zLXE#N5o3|2G~L~qGM#|~DV~u%tlE=u*v{LX;NfO?Csx&4KoYLOY)_0 z(CSO^N=_5wi$cnnHaJExrRf%tf<_Fvp!|&zrpfv2Z2p8w-!<1Blbp=1TZ~Y&7Fw^c zTI?ROSBJHTo29LAWb~RIpupVgV&~Diib5UlW8t)60+#=BJRY_3i3}$MpJfVq3VN0! z2s+SwWr3KN^VZzBgLo@}rEm_A($w4ULpBD^R_!5eQ(F9Hb>tKUErCf$y~QN905`Y= z^1*VR76>+JMP)$hAp$d2SHW*4(Uz?eXkh|g{@S$*6v|@@okAie@~{$isl20Y;Ui~61Kh=x~EU4#11>GY0B4((@u3Sk0 zE5Z;cZ&^S@j2&*NVZ&Am$*?54WP7>553x>wyMP-bL-0nQzfzA|Um4Kjj;&V~F`(LA zA&}2L`)uS!p=)Tu(-m~VSK_R;SfFqYGAcx`lrfN(9qh|v%y+y`8GZ4ks{*(i{*4TJ zJw67fw$>3EB}xm(MgT0o$If=a=pZ}SM1^@NPYZ*J51;`cyJ!%3P5RXUI#EGW2ZCFT z`j{G0#^bOpjIZa9_AD*1Buk9Miuc(H+U1!A!uagrri$PKbU2#cTSxjxbm)J1kL+@cD(;zC->yB3m`H5O8xQPS> zJdWH&<6tRhQHq$Ox`d$7sua-Wcs>?dHG9!f-i*VxxTD&PBwe1mxEJ*o zqIT-@Xap&a|9WF$$@_4}Y)wZc)A6VS7Vn~)t%Th-=NppE*5fl7hlvbtIGw;uoJLdm zUY@oc0ZFEyXPJVYf}Vn&WeR!Ghdx`KFcOt3@v$v0 zMxXq<+PwqQK{w^P4mS$Flt+rmMWLZ?Ik9$qTY(#?rM;ZYMHB<)AgZ&cy0W0;)tpxe z2kk0sDnE!0KzazT=A&x34BZ@lgJ@_?$|qoKR&#}tT88z^a6{7e21jjl_ce)?(Mu-d&fD5&XOe zRZSIu+bCr8w}SRuMyDGY4ZOFj-P;qizUBPqf~rj(o7guL`<_?Y`$h?&s z41ZptF3kDueO2W7uEpq`z$>^Uqb1bS${eYj*)>TG!&bcZ+H1LQGVw&Lds;Y>x!~*4 zyw++Qg@@3HREgw)?e6UfTF^M%p^pMK=m-a$w(=X%l$Jv^Hu?QHko3QY^DDqVXD`k)e~Fc<#8H6D`=Ms>S``2R@O$_O5OZg<=IyOb^}xuB z`sQpIte)zz#~$0WJ|zSML$@7ldHB>+1wsKnw{dk4W9a|VzR(F8Jn_U6z=e2D(Skjs zDK;Dd5rjvuRA8Pozs@J?1}{cZRB}~X;};} zfzJWLAc>I&uj2@{P(5J%S$?6@3>tupk&(1cOoW9n2@2z$07Zg^p@F)OKKh8P6Lfe_ zNV#PQ3R=8(?_LWZ2sWgcQoT_~LX*gdi$KpEB4{y^x~B!*`X&p)$hJlb(v3JZ1kd}M zv&aqnatsm0iQpzLg3fecg&^r6Xz{+ffn;f1%RBa=3n>I;FN5p?z#w}jLa_P+1&tNJ z+sSsuINE3yFORyDOYDe%JTpOOqbt!#EzC;FBAP>tc#k1yY6Yw_6uk^Z7+-d1WdLZc9cKL22*N&g6kQx4)iI4ALCB?x(EB}8?`O)YGDF))+NZS);?f8kj}cz zkumEK0nNxX>nJ^610wQSB)zCAm(XZzqJ|-uRO=kX-UKZB3VE?b6R;e;umckr&N2l( z1w93Q!v$DB{G4MX==FQx2Rlzu&`0>jsm90*<2Pe<|y|dq4QYBHpodP zXwQRVG6I4&9^0gNNR9Wl1o4V=WdsF!2#bxKfLTaksc7IOXZ)D$*#Opa0i#D?DBKpO zxQ$i@P#1rp^naIvj=`}KYw;K!wWRev)k(6zuBev;O=KcB z@cj^-&=#i&JEBlfAAE>Hx_|%vvgUY?zNQJzAwX;_{g7&N>sIvFg;*y+5SSBxq3(#U zzCR@XkKGsne3%)lP>2{QjaP*pO26K*pi@|^0>*9#8u$i$8;n9VoZt)8eeAW*^l}#v z5V@e%T)UF&*e$?rgc?2b%ri@+?q9T&(c?HP>{WqC>b^)1O={K5{Y6|^L|94cYLkrb zGZ=P#JBFYQxH~o-DRO$P&j}irmfb{6M9kYD4)lUhymH}j8p{-W;YdbzPqnOE-}Ju1 z#HPY{mF=yKbdit7K5GM=%P;R_mt$HE@yCmz!qARSW)}cth}5Kr);kuoC&AR9mb?Q^ zo|rRZmO!=JlZzPgFPq@C?y)r&)mc28)nIXZOfb_)O!AQR4T&#Ds3<2IY7iI!*lM+9 z{m1*j=rQUIcH%=2I-(g~5^>GACpx|j?_(C0N9>X&)0|h6#p}6nx%wD;u854CfMs7) zyuP2v@VJHM8dwv8AHA5&Os->c9kWb9PeK0&6o>L zL!aK1IAfXxxj_&Qzna;uUAI_Gv0?6$)98H6$bnLKFlvOp=lt2DE;l*gU<2TUCjkfe#f56XA}Q#%t`c$vIvXnx5P@!k z#G>x-P|krz%JaYq^bLU;<9O?-0y|s6uxPFZhki;TtP?U8ktA>l&NQ^qRiJ+;oC4CyH{N)|IRppvZ=328 zp$%9OK};y85VnpH;}8+18(OXpC2(?rhLY)N7(t8+at?7?Bn>)ErcfU*NOl!Y0GNB5 zrpnfPNK8}FPf^lfJ<;gA_ziR#d(ziU!R0~^1cAWNG#aDQqN7_c3H8?>EpdlR)V5ls zcO&X(0H7}-2dww2g&KcCf*vdKu?7?nb&y#QACtkQ#gvq;#m@K(vyR&%)>RI=gTo=x z=YUFg6#UrRwfH={ED5<-S(J6^wA5cWIKmKbT>*X5mgS+XwoCIj7P~xiM8sO?FB`N0 zH+w3A)+S+z1~uBq8;sVVc&H&-#~?M#y&jE0D(R63i^(>lASN2eq?Eqd)P;K`N|Sx3 zV$Laf)ccC1Ha@(~G6-0C3Qnf_QiZyt$X%AoeOUnH6qf?M?&VhYnAwXqs98uVLfm`B z_-iRmw{SZz1MMHf)R}iL=>2ZcUAqJ~xXS)I+)rv_kF&K3`yI!1Kl^(~6!f{3{{fLyU?NyaM~(mh002ovPDHLkV1fk53P=C| literal 0 HcmV?d00001 diff --git a/tests/suite/model/bibliography.typ b/tests/suite/model/bibliography.typ index 20eb8acd9..6de44e240 100644 --- a/tests/suite/model/bibliography.typ +++ b/tests/suite/model/bibliography.typ @@ -53,6 +53,24 @@ Now we have multiple bibliographies containing @glacier-melt @keshav2007read @Zee04 #bibliography("/assets/bib/works_too.bib", style: "mla") +--- bibliography-grid-par --- +// Ensure that a grid-based bibliography does not produce paragraphs. +#show par: highlight + +@Zee04 +@keshav2007read + +#bibliography("/assets/bib/works_too.bib") + +--- bibliography-indent-par --- +// Ensure that an indent-based bibliography does not produce paragraphs. +#show par: highlight + +@Zee04 +@keshav2007read + +#bibliography("/assets/bib/works_too.bib", style: "mla") + --- issue-4618-bibliography-set-heading-level --- // Test that the bibliography block's heading is set to 2 by the show rule, // and therefore should be rendered like a level-2 heading. Notably, this