From c641044380652e097ffc85d3e66873b0364ee070 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sun, 19 Nov 2023 18:55:36 +0100 Subject: Workaround for show set propagation on citations Fixes #2531 --- crates/typst-library/src/layout/mod.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'crates') 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, /// 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::() { + if self.items.is_empty() { + self.styles = styles; + } self.staged.retain(|(elem, _)| !elem.is::()); - 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) } } -- cgit v1.2.3