diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-11-19 18:55:36 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-11-19 18:57:28 +0100 |
| commit | c641044380652e097ffc85d3e66873b0364ee070 (patch) | |
| tree | 2b53f1a2d8096c511f38d4a146c7831571ab28ad /crates | |
| parent | b23914fca931b197a3f6d9c6bb80712dd176c115 (diff) | |
Workaround for show set propagation on citations
Fixes #2531
Diffstat (limited to 'crates')
| -rw-r--r-- | crates/typst-library/src/layout/mod.rs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/crates/typst-library/src/layout/mod.rs b/crates/typst-library/src/layout/mod.rs index 77e62dd3..bcbe3b2b 100644 --- a/crates/typst-library/src/layout/mod.rs +++ b/crates/typst-library/src/layout/mod.rs @@ -750,8 +750,10 @@ impl Default for ListBuilder<'_> { /// Accepts citations. #[derive(Default)] struct CiteGroupBuilder<'a> { + /// The styles. + styles: StyleChain<'a>, /// The citations. - items: StyleVecBuilder<'a, CiteElem>, + items: Vec<CiteElem>, /// Trailing content for which it is unclear whether it is part of the list. staged: Vec<(&'a Content, StyleChain<'a>)>, } @@ -766,8 +768,11 @@ impl<'a> CiteGroupBuilder<'a> { } if let Some(citation) = content.to::<CiteElem>() { + if self.items.is_empty() { + self.styles = styles; + } self.staged.retain(|(elem, _)| !elem.is::<SpaceElem>()); - self.items.push(citation.clone(), styles); + self.items.push(citation.clone()); return true; } @@ -775,9 +780,7 @@ impl<'a> CiteGroupBuilder<'a> { } fn finish(self) -> (Content, StyleChain<'a>) { - let (items, styles) = self.items.finish(); - let items = items.into_items(); - let span = items.first().map(|cite| cite.span()).unwrap_or(Span::detached()); - (CiteGroup::new(items).pack().spanned(span), styles) + let span = self.items.first().map(|cite| cite.span()).unwrap_or(Span::detached()); + (CiteGroup::new(self.items).pack().spanned(span), self.styles) } } |
