diff --git a/crates/typst-realize/src/lib.rs b/crates/typst-realize/src/lib.rs index c46a15351..fd43e8304 100644 --- a/crates/typst-realize/src/lib.rs +++ b/crates/typst-realize/src/lib.rs @@ -836,7 +836,9 @@ static CITES: GroupingRule = GroupingRule { tags: false, trigger: |content, _| content.elem() == CiteElem::elem(), inner: |content| content.elem() == SpaceElem::elem(), - interrupt: |elem| elem == CiteGroup::elem(), + interrupt: |elem| { + elem == CiteGroup::elem() || elem == ParElem::elem() || elem == AlignElem::elem() + }, finish: finish_cites, }; @@ -859,7 +861,7 @@ const fn list_like_grouping() -> GroupingRule { let elem = content.elem(); elem == SpaceElem::elem() || elem == ParbreakElem::elem() }, - interrupt: |elem| elem == T::elem(), + interrupt: |elem| elem == T::elem() || elem == AlignElem::elem(), finish: finish_list_like::, } } diff --git a/tests/ref/issue-5503-cite-group-interrupted-by-par-align.png b/tests/ref/issue-5503-cite-group-interrupted-by-par-align.png new file mode 100644 index 000000000..166331587 Binary files /dev/null and b/tests/ref/issue-5503-cite-group-interrupted-by-par-align.png differ diff --git a/tests/ref/issue-5503-cite-in-align.png b/tests/ref/issue-5503-cite-in-align.png new file mode 100644 index 000000000..aeb72aa0d Binary files /dev/null and b/tests/ref/issue-5503-cite-in-align.png differ diff --git a/tests/ref/issue-5503-enum-interrupted-by-par-align.png b/tests/ref/issue-5503-enum-interrupted-by-par-align.png new file mode 100644 index 000000000..9cc942b4c Binary files /dev/null and b/tests/ref/issue-5503-enum-interrupted-by-par-align.png differ diff --git a/tests/ref/issue-5503-list-interrupted-by-par-align.png b/tests/ref/issue-5503-list-interrupted-by-par-align.png new file mode 100644 index 000000000..2b785c4bd Binary files /dev/null and b/tests/ref/issue-5503-list-interrupted-by-par-align.png differ diff --git a/tests/ref/issue-5503-terms-interrupted-by-par-align.png b/tests/ref/issue-5503-terms-interrupted-by-par-align.png new file mode 100644 index 000000000..1bdacd949 Binary files /dev/null and b/tests/ref/issue-5503-terms-interrupted-by-par-align.png differ diff --git a/tests/suite/model/cite.typ b/tests/suite/model/cite.typ index 902800818..b328dda49 100644 --- a/tests/suite/model/cite.typ +++ b/tests/suite/model/cite.typ @@ -114,6 +114,28 @@ B #cite() #cite(). #show bibliography: none #bibliography("/assets/bib/works.bib", style: "chicago-author-date") +--- issue-5503-cite-in-align --- +// The two aligned elements should be displayed in separate lines. +#align(right)[@netwok] +#align(right)[b] + +#show bibliography: none +#bibliography("/assets/bib/works.bib") + +--- issue-5503-cite-group-interrupted-by-par-align --- +// `par` and `align` are block-level and should interrupt a cite group +@netwok +@arrgh +#par(leading: 5em)[@netwok] +#par[@arrgh] +@netwok +@arrgh +#align(right)[@netwok] +@arrgh + +#show bibliography: none +#bibliography("/assets/bib/works.bib") + --- cite-type-error-hint --- // Test hint for cast error from str to label // Error: 7-15 expected label, found string diff --git a/tests/suite/model/enum.typ b/tests/suite/model/enum.typ index ed33157e8..c5e562159 100644 --- a/tests/suite/model/enum.typ +++ b/tests/suite/model/enum.typ @@ -163,3 +163,15 @@ a + 0. // Enum item (pre-emptive) #enum.item(none)[Hello] #enum.item(17)[Hello] + +--- issue-5503-enum-interrupted-by-par-align --- +// `align` is block-level and should interrupt an enum +// but not a `par` ++ a ++ b +#par(leading: 5em)[+ par] ++ d +#par[+ par] ++ f +#align(right)[+ align] ++ h diff --git a/tests/suite/model/list.typ b/tests/suite/model/list.typ index aa117672c..138abf70e 100644 --- a/tests/suite/model/list.typ +++ b/tests/suite/model/list.typ @@ -218,3 +218,18 @@ World part($ x $ + parbreak() + list[A]) part($ x $ + parbreak() + parbreak() + list[A]) } + +--- issue-5503-list-interrupted-by-par-align --- +// `align` is block-level and should interrupt a list +// but not a `par` +#show list: [List] +- a +- b +#par(leading: 5em)[- c] +- d +- e +#par[- f] +- g +- h +#align(right)[- i] +- j diff --git a/tests/suite/model/terms.typ b/tests/suite/model/terms.typ index 07aa827dc..61fe20b0d 100644 --- a/tests/suite/model/terms.typ +++ b/tests/suite/model/terms.typ @@ -75,3 +75,18 @@ Not in list --- issue-2530-term-item-panic --- // Term item (pre-emptive) #terms.item[Hello][World!] + +--- issue-5503-terms-interrupted-by-par-align --- +// `align` is block-level and should interrupt a `terms` +// but not a `par` +#show terms: [Terms] +/ a: a +/ b: b +#par(leading: 5em)[/ c: c] +/ d: d +/ e: e +#par[/ f: f] +/ g: g +/ h: h +#align(right)[/ i: i] +/ j: j