diff --git a/tests/ref/grid-subheaders-alone-with-footer-no-orphan-prevention.png b/tests/ref/grid-subheaders-alone-with-footer-no-orphan-prevention.png new file mode 100644 index 000000000..74de3e168 Binary files /dev/null and b/tests/ref/grid-subheaders-alone-with-footer-no-orphan-prevention.png differ diff --git a/tests/ref/grid-subheaders-alone-with-footer.png b/tests/ref/grid-subheaders-alone-with-footer.png new file mode 100644 index 000000000..41bf88bc4 Binary files /dev/null and b/tests/ref/grid-subheaders-alone-with-footer.png differ diff --git a/tests/ref/grid-subheaders-basic-non-consecutive-with-footer.png b/tests/ref/grid-subheaders-basic-non-consecutive-with-footer.png new file mode 100644 index 000000000..6f2a57beb Binary files /dev/null and b/tests/ref/grid-subheaders-basic-non-consecutive-with-footer.png differ diff --git a/tests/ref/grid-subheaders-basic-with-footer.png b/tests/ref/grid-subheaders-basic-with-footer.png new file mode 100644 index 000000000..521656146 Binary files /dev/null and b/tests/ref/grid-subheaders-basic-with-footer.png differ diff --git a/tests/ref/grid-subheaders-multi-page-row-right-after-with-footer.png b/tests/ref/grid-subheaders-multi-page-row-right-after-with-footer.png new file mode 100644 index 000000000..119a2c22b Binary files /dev/null and b/tests/ref/grid-subheaders-multi-page-row-right-after-with-footer.png differ diff --git a/tests/ref/grid-subheaders-multi-page-row-with-footer.png b/tests/ref/grid-subheaders-multi-page-row-with-footer.png new file mode 100644 index 000000000..a440eac40 Binary files /dev/null and b/tests/ref/grid-subheaders-multi-page-row-with-footer.png differ diff --git a/tests/ref/grid-subheaders-multi-page-rowspan-with-footer.png b/tests/ref/grid-subheaders-multi-page-rowspan-with-footer.png new file mode 100644 index 000000000..b91046675 Binary files /dev/null and b/tests/ref/grid-subheaders-multi-page-rowspan-with-footer.png differ diff --git a/tests/ref/grid-subheaders-repeat-replace-with-footer-orphan.png b/tests/ref/grid-subheaders-repeat-replace-with-footer-orphan.png new file mode 100644 index 000000000..b50fae716 Binary files /dev/null and b/tests/ref/grid-subheaders-repeat-replace-with-footer-orphan.png differ diff --git a/tests/ref/grid-subheaders-repeat-replace-with-footer.png b/tests/ref/grid-subheaders-repeat-replace-with-footer.png new file mode 100644 index 000000000..7191bfb64 Binary files /dev/null and b/tests/ref/grid-subheaders-repeat-replace-with-footer.png differ diff --git a/tests/ref/grid-subheaders-repeat-with-footer.png b/tests/ref/grid-subheaders-repeat-with-footer.png new file mode 100644 index 000000000..39f8465e7 Binary files /dev/null and b/tests/ref/grid-subheaders-repeat-with-footer.png differ diff --git a/tests/suite/layout/grid/subheaders.typ b/tests/suite/layout/grid/subheaders.typ index 208c79102..72bc55579 100644 --- a/tests/suite/layout/grid/subheaders.typ +++ b/tests/suite/layout/grid/subheaders.typ @@ -95,6 +95,37 @@ [z], ) +--- grid-subheaders-basic-with-footer --- +#grid( + grid.header( + [a] + ), + grid.header( + level: 2, + [b] + ), + [c], + grid.footer( + [d] + ) +) + +--- grid-subheaders-basic-non-consecutive-with-footer --- +#grid( + grid.header( + [a] + ), + [x], + grid.header( + level: 2, + [b] + ), + [y], + grid.footer( + [f] + ) +) + --- grid-subheaders-repeat --- #set page(height: 8em) #grid( @@ -122,6 +153,23 @@ ..([y],) * 10, ) +--- grid-subheaders-repeat-with-footer --- +#set page(height: 8em) +#grid( + grid.header( + [a] + ), + [m], + grid.header( + level: 2, + [b] + ), + ..([c],) * 10, + grid.footer( + [f] + ) +) + --- grid-subheaders-repeat-replace --- #set page(height: 8em) #grid( @@ -225,6 +273,54 @@ ..([z],) * 4, ) +--- grid-subheaders-repeat-replace-with-footer --- +#set page(height: 8em) +#grid( + grid.header( + [a] + ), + [x], + grid.header( + level: 2, + [b] + ), + grid.header( + level: 3, + [c] + ), + ..([y],) * 10, + grid.header( + level: 2, + [d] + ), + ..([z],) * 6, + grid.footer( + [f] + ) +) + +--- grid-subheaders-repeat-replace-with-footer-orphan --- +#set page(height: 8em) +#grid( + grid.header( + [a] + ), + [x], + grid.header( + level: 2, + [b] + ), + ..([y],) * 10, + grid.header( + level: 2, + [c] + ), + ..([z],) * 10, + grid.footer( + [f] + ) +) + --- grid-subheaders-repeat-replace-short-lived --- // No orphan prevention for short-lived headers // (followed by replacing headers). @@ -376,6 +472,89 @@ grid.cell(x: 0)[done.] ) +--- grid-subheaders-multi-page-row-with-footer --- +#set page(height: 8em) +#grid( + columns: 2, + grid.header( + [a] + ), + [x], + grid.header( + level: 2, + [b] + ), + [y], + grid.header( + level: 3, + [c] + ), + [a], [b], + grid.cell( + block(fill: red, width: 1.5em, height: 6.4em) + ), + [y], + ..([z],) * 10, + grid.footer( + [f] + ) +) + +--- grid-subheaders-multi-page-rowspan-with-footer --- +#set page(height: 8em) +#grid( + columns: 2, + grid.header( + [a] + ), + [x], + grid.header( + level: 2, + [b] + ), + [y], + grid.header( + level: 3, + [c] + ), + [z], [z], + grid.cell( + rowspan: 5, + block(fill: red, width: 1.5em, height: 6.4em) + ), + [cell], + [cell], + grid.footer( + [f] + ) +) + +--- grid-subheaders-multi-page-row-right-after-with-footer --- +#set page(height: 8em) +#grid( + columns: 1, + grid.header( + [a] + ), + [x], + grid.header( + level: 2, + [b] + ), + grid.header( + level: 3, + [c] + ), + grid.cell( + block(fill: red, width: 1.5em, height: 6.4em) + ), + [done.], + [done.], + grid.footer( + [f] + ) +) + --- grid-subheaders-short-lived-no-orphan-prevention --- // No orphan prevention for short-lived headers. #set page(height: 8em) @@ -451,3 +630,32 @@ [L2] ), ) + +--- grid-subheaders-alone-with-footer --- +#table( + table.header( + [a] + ), + table.header( + level: 2, + [b] + ), + table.footer( + [c], + ) +) + +--- grid-subheaders-alone-with-footer-no-orphan-prevention --- +#set page(height: 5.3em) +#table( + table.header( + [L1] + ), + table.header( + level: 2, + [L2] + ), + table.footer( + [a], + ) +)