Fix auto hanging-indent for centered headings (#6839)
This commit is contained in:
parent
1f41a9f2a1
commit
3d64f7b659
|
|
@ -10,11 +10,11 @@ use typst_library::foundations::{
|
||||||
};
|
};
|
||||||
use typst_library::introspection::{Counter, Locator, LocatorLink};
|
use typst_library::introspection::{Counter, Locator, LocatorLink};
|
||||||
use typst_library::layout::{
|
use typst_library::layout::{
|
||||||
Abs, AlignElem, Alignment, Axes, BlockBody, BlockElem, ColumnsElem, Em, GridCell,
|
Abs, AlignElem, Alignment, Axes, BlockBody, BlockElem, ColumnsElem, Em,
|
||||||
GridChild, GridElem, GridItem, HAlignment, HElem, HideElem, InlineElem, LayoutElem,
|
FixedAlignment, GridCell, GridChild, GridElem, GridItem, HAlignment, HElem, HideElem,
|
||||||
Length, MoveElem, OuterVAlignment, PadElem, PlaceElem, PlacementScope, Region, Rel,
|
InlineElem, LayoutElem, Length, MoveElem, OuterVAlignment, PadElem, PlaceElem,
|
||||||
RepeatElem, RotateElem, ScaleElem, Sides, Size, Sizing, SkewElem, Spacing,
|
PlacementScope, Region, Rel, RepeatElem, RotateElem, ScaleElem, Sides, Size, Sizing,
|
||||||
StackChild, StackElem, TrackSizings, VElem,
|
SkewElem, Spacing, StackChild, StackElem, TrackSizings, VElem,
|
||||||
};
|
};
|
||||||
use typst_library::math::EquationElem;
|
use typst_library::math::EquationElem;
|
||||||
use typst_library::model::{
|
use typst_library::model::{
|
||||||
|
|
@ -240,8 +240,9 @@ const HEADING_RULE: ShowFn<HeadingElem> = |elem, engine, styles| {
|
||||||
let numbering = Counter::of(HeadingElem::ELEM)
|
let numbering = Counter::of(HeadingElem::ELEM)
|
||||||
.display_at_loc(engine, location, styles, numbering)?
|
.display_at_loc(engine, location, styles, numbering)?
|
||||||
.spanned(span);
|
.spanned(span);
|
||||||
|
let align = styles.resolve(AlignElem::alignment);
|
||||||
|
|
||||||
if hanging_indent.is_auto() {
|
if hanging_indent.is_auto() && align.x == FixedAlignment::Start {
|
||||||
let pod = Region::new(Axes::splat(Abs::inf()), Axes::splat(false));
|
let pod = Region::new(Axes::splat(Abs::inf()), Axes::splat(false));
|
||||||
|
|
||||||
// We don't have a locator for the numbering here, so we just
|
// We don't have a locator for the numbering here, so we just
|
||||||
|
|
|
||||||
|
|
@ -177,12 +177,16 @@ pub struct HeadingElem {
|
||||||
|
|
||||||
/// The indent all but the first line of a heading should have.
|
/// The indent all but the first line of a heading should have.
|
||||||
///
|
///
|
||||||
/// The default value of `{auto}` indicates that the subsequent heading
|
/// The default value of `{auto}` uses the width of the numbering as indent
|
||||||
/// lines will be indented based on the width of the numbering.
|
/// if the heading is aligned at the [start]($direction.start) of the [text
|
||||||
|
/// direction]($text.dir), and no indent for center and other alignments.
|
||||||
///
|
///
|
||||||
/// ```example
|
/// ```example
|
||||||
/// #set heading(numbering: "1.")
|
/// #set heading(numbering: "1.")
|
||||||
/// #heading[A very, very, very, very, very, very long heading]
|
/// = A very, very, very, very, very, very long heading
|
||||||
|
///
|
||||||
|
/// #show heading: set align(center)
|
||||||
|
/// == A very long heading\ with center alignment
|
||||||
/// ```
|
/// ```
|
||||||
#[default(Smart::Auto)]
|
#[default(Smart::Auto)]
|
||||||
pub hanging_indent: Smart<Length>,
|
pub hanging_indent: Smart<Length>,
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 860 B |
|
|
@ -101,6 +101,11 @@ comment spans lines
|
||||||
#set heading(numbering: "1.1.a.")
|
#set heading(numbering: "1.1.a.")
|
||||||
= State of the Art
|
= State of the Art
|
||||||
|
|
||||||
|
--- heading-hanging-indent-auto-center-align ---
|
||||||
|
#set heading(numbering: "1.1.a.")
|
||||||
|
#show heading: set align(center)
|
||||||
|
= Center aligned
|
||||||
|
|
||||||
--- heading-hanging-indent-zero ---
|
--- heading-hanging-indent-zero ---
|
||||||
#set heading(numbering: "1.1.a.", hanging-indent: 0pt)
|
#set heading(numbering: "1.1.a.", hanging-indent: 0pt)
|
||||||
= State of the Art
|
= State of the Art
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue