From 219c1c9ed0f4d5755becd9f679b4cf7cfa670b5a Mon Sep 17 00:00:00 2001 From: Jakob Sachs Date: Mon, 27 Nov 2023 11:12:04 +0100 Subject: [PATCH] Added vertical number alignment to enum (#2742) Fixes #2441 --- crates/typst/src/model/enum.rs | 28 +++++++++++++++------------- tests/ref/layout/enum-align.png | Bin 8335 -> 18701 bytes tests/typ/layout/enum-align.typ | 17 ++++++++++++----- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/crates/typst/src/model/enum.rs b/crates/typst/src/model/enum.rs index f4583f8d8..bd266bc24 100644 --- a/crates/typst/src/model/enum.rs +++ b/crates/typst/src/model/enum.rs @@ -6,8 +6,8 @@ use crate::foundations::{ cast, elem, scope, Array, Content, Fold, NativeElement, Smart, StyleChain, }; use crate::layout::{ - Axes, BlockElem, Em, Fragment, GridLayouter, HAlign, Layout, Length, Regions, Sizing, - Spacing, VAlign, + Align, Axes, BlockElem, Em, Fragment, GridLayouter, HAlign, Layout, Length, Regions, + Sizing, Spacing, VAlign, }; use crate::model::{Numbering, NumberingPattern, ParElem}; use crate::text::TextElem; @@ -155,18 +155,20 @@ pub struct EnumElem { /// If set to `{auto}`, uses the spacing [below blocks]($block.below). pub spacing: Smart, - /// The horizontal alignment that enum numbers should have. + /// The alignment that enum numbers should have. /// - /// By default, this is set to `{end}`, which aligns enum numbers + /// By default, this is set to `{end + top}`, which aligns enum numbers /// towards end of the current text direction (in left-to-right script, - /// for example, this is the same as `{right}`). The choice of `{end}` - /// for horizontal alignment of enum numbers is usually preferred over - /// `{start}`, as numbers then grow away from the text instead of towards - /// it, avoiding certain visual issues. This option lets you override this - /// behavior, however. + /// for example, this is the same as `{right}`) and at the top of the line. + /// The choice of `{end}` for horizontal alignment of enum numbers is + /// usually preferred over `{start}`, as numbers then grow away from the + /// text instead of towards it, avoiding certain visual issues. This option + /// lets you override this behavior, however. (Also to note is that the + /// [unordered list]($list) uses a different method for this, by giving the + /// `marker` content an alignment directly.). /// /// ````example - /// #set enum(number-align: start) + /// #set enum(number-align: start + bottom) /// /// Here are some powers of two: /// 1. One @@ -176,8 +178,8 @@ pub struct EnumElem { /// 16. Sixteen /// 32. Thirty two /// ```` - #[default(HAlign::End)] - pub number_align: HAlign, + #[default(HAlign::End + VAlign::Top)] + pub number_align: Align, /// The numbered list's items. /// @@ -233,7 +235,7 @@ impl Layout for EnumElem { // Vertically align to the top to avoid inheriting `horizon` or `bottom` // alignment from the context and having the number be displaced in // relation to the item it refers to. - let number_align = self.number_align(styles) + VAlign::Top; + let number_align = self.number_align(styles); for item in self.children() { number = item.number(styles).unwrap_or(number); diff --git a/tests/ref/layout/enum-align.png b/tests/ref/layout/enum-align.png index 5f3f66f9160627ab561742529fd009b2aac1c7b6..18e392f2f48d9519b308101d55544d95df64c4e4 100644 GIT binary patch literal 18701 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 diff --git a/tests/typ/layout/enum-align.typ b/tests/typ/layout/enum-align.typ index 7cfa5505d..d64ee3746 100644 --- a/tests/typ/layout/enum-align.typ +++ b/tests/typ/layout/enum-align.typ @@ -20,7 +20,13 @@ 16. c --- -// Number align option should not be affected by the context +#set enum(number-align: center + horizon) +1. #box(fill: teal, inset: 10pt )[a] +8. #box(fill: teal, inset: 10pt )[b] +16. #box(fill: teal,inset: 10pt )[c] + +--- +// Number align option should not be affected by the context. #set align(center) #set enum(number-align: start) @@ -32,13 +38,14 @@ 64. h --- -// Test valid number align values (horizontal) +// Test valid number align values (horizontal and vertical) // Ref: false #set enum(number-align: start) #set enum(number-align: end) #set enum(number-align: left) +#set enum(number-align: center) #set enum(number-align: right) - ---- -// Error: 25-28 expected `start`, `left`, `center`, `right`, or `end`, found top #set enum(number-align: top) +#set enum(number-align: horizon) +#set enum(number-align: bottom) +