mirror of
https://github.com/typst/typst
synced 2025-05-14 17:15:28 +08:00
interrupt_styles: Check all potential style matches (#4345)
This commit is contained in:
parent
20475ab0bf
commit
a10e3324c2
@ -231,7 +231,13 @@ impl<'a> Default for BehavedBuilder<'a> {
|
||||
/// A sequence of elements with associated styles.
|
||||
#[derive(Clone, PartialEq, Hash)]
|
||||
pub struct StyleVec {
|
||||
/// The elements themselves.
|
||||
elements: EcoVec<Content>,
|
||||
/// A run-length encoded list of style lists.
|
||||
///
|
||||
/// Each element is a (styles, count) pair. Any elements whose
|
||||
/// style falls after the end of this list is considered to
|
||||
/// have an empty style list.
|
||||
styles: EcoVec<(Styles, usize)>,
|
||||
}
|
||||
|
||||
|
@ -220,16 +220,19 @@ impl<'a, 'v, 't> Builder<'a, 'v, 't> {
|
||||
{
|
||||
bail!(span, "document set rules must appear before any content");
|
||||
}
|
||||
} else if let Some(Some(span)) = local.interruption::<PageElem>() {
|
||||
}
|
||||
if let Some(Some(span)) = local.interruption::<PageElem>() {
|
||||
if self.doc.is_none() {
|
||||
bail!(span, "page configuration is not allowed inside of containers");
|
||||
}
|
||||
self.interrupt_page(outer, false)?;
|
||||
} else if local.interruption::<ParElem>().is_some()
|
||||
}
|
||||
if local.interruption::<ParElem>().is_some()
|
||||
|| local.interruption::<AlignElem>().is_some()
|
||||
{
|
||||
self.interrupt_par()?;
|
||||
} else if local.interruption::<ListElem>().is_some()
|
||||
}
|
||||
if local.interruption::<ListElem>().is_some()
|
||||
|| local.interruption::<EnumElem>().is_some()
|
||||
|| local.interruption::<TermsElem>().is_some()
|
||||
{
|
||||
|
BIN
tests/ref/issue-4340-set-document-and-page.png
Normal file
BIN
tests/ref/issue-4340-set-document-and-page.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 222 B |
@ -258,3 +258,11 @@ Default page numbers now.
|
||||
Hi
|
||||
#pagebreak()
|
||||
= Second
|
||||
|
||||
--- issue-4340-set-document-and-page ---
|
||||
// Test custom page fields being applied on the last page
|
||||
// if the document has custom fields.
|
||||
#set document(author: "")
|
||||
#set page(fill: gray)
|
||||
text
|
||||
#pagebreak()
|
||||
|
Loading…
x
Reference in New Issue
Block a user