Struct FigureElem

Source
pub struct FigureElem {
    pub body: Content,
    /* private fields */
}
Expand description

A figure with an optional caption.

Automatically detects its kind to select the correct counting track. For example, figures containing images will be numbered separately from figures containing tables.

§Examples

The example below shows a basic figure with an image:

@glacier shows a glacier. Glaciers
are complex systems.

#figure(
  image("glacier.jpg", width: 80%),
  caption: [A curious figure.],
) <glacier>

You can also insert tables into figures to give them a caption. The figure will detect this and automatically use a separate counter.

#figure(
  table(
    columns: 4,
    [t], [1], [2], [3],
    [y], [0.3s], [0.4s], [0.8s],
  ),
  caption: [Timing results],
)

This behaviour can be overridden by explicitly specifying the figure’s kind. All figures of the same kind share a common counter.

§Figure behaviour

By default, figures are placed within the flow of content. To make them float to the top or bottom of the page, you can use the placement argument.

If your figure is too large and its contents are breakable across pages (e.g. if it contains a large table), then you can make the figure itself breakable across pages as well with this show rule:

#show figure: set block(breakable: true)

See the block documentation for more information about breakable and non-breakable blocks.

§Caption customization

You can modify the appearance of the figure’s caption with its associated caption function. In the example below, we emphasize all captions:

#show figure.caption: emph

#figure(
  rect[Hello],
  caption: [I am emphasized!],
)

By using a where selector, we can scope such rules to specific kinds of figures. For example, to position the caption above tables, but keep it below for all other kinds of figures, we could write the following show-set rule:

#show figure.where(
  kind: table
): set figure.caption(position: top)

#figure(
  table(columns: 2)[A][B][C][D],
  caption: [I'm up here],
)

Fields§

§body: Content

Implementations§

Source§

impl FigureElem

Source

pub fn new(body: Content) -> FigureElem

Create a new instance of the element.

Source

pub fn with_placement(self, placement: Option<Smart<VAlignment>>) -> FigureElem

Builder-style setter for the placement field.

Source

pub fn with_scope(self, scope: PlacementScope) -> FigureElem

Builder-style setter for the scope field.

Source

pub fn with_caption(self, caption: Option<Packed<FigureCaption>>) -> FigureElem

Builder-style setter for the caption field.

Source

pub fn with_kind(self, kind: Smart<FigureKind>) -> FigureElem

Builder-style setter for the kind field.

Source

pub fn with_supplement( self, supplement: Smart<Option<Supplement>>, ) -> FigureElem

Builder-style setter for the supplement field.

Source

pub fn with_numbering(self, numbering: Option<Numbering>) -> FigureElem

Builder-style setter for the numbering field.

Source

pub fn with_gap(self, gap: Length) -> FigureElem

Builder-style setter for the gap field.

Source

pub fn with_outlined(self, outlined: bool) -> FigureElem

Builder-style setter for the outlined field.

Source

pub fn with_counter(self, counter: Option<Counter>) -> FigureElem

Builder-style setter for the counter field.

Source

pub fn push_placement(&mut self, placement: Option<Smart<VAlignment>>)

Setter for the placement field.

Source

pub fn push_scope(&mut self, scope: PlacementScope)

Setter for the scope field.

Source

pub fn push_caption(&mut self, caption: Option<Packed<FigureCaption>>)

Setter for the caption field.

Source

pub fn push_kind(&mut self, kind: Smart<FigureKind>)

Setter for the kind field.

Source

pub fn push_supplement(&mut self, supplement: Smart<Option<Supplement>>)

Setter for the supplement field.

Source

pub fn push_numbering(&mut self, numbering: Option<Numbering>)

Setter for the numbering field.

Source

pub fn push_gap(&mut self, gap: Length)

Setter for the gap field.

Source

pub fn push_outlined(&mut self, outlined: bool)

Setter for the outlined field.

Source

pub fn push_counter(&mut self, counter: Option<Counter>)

Setter for the counter field.

Source

pub fn placement(&self, styles: StyleChain<'_>) -> Option<Smart<VAlignment>>

The figure’s placement on the page.

  • {none}: The figure stays in-flow exactly where it was specified like other content.
  • {auto}: The figure picks {top} or {bottom} depending on which is closer.
  • {top}: The figure floats to the top of the page.
  • {bottom}: The figure floats to the bottom of the page.

The gap between the main flow content and the floating figure is controlled by the clearance argument on the place function.

#set page(height: 200pt)

= Introduction
#figure(
  placement: bottom,
  caption: [A glacier],
  image("glacier.jpg", width: 60%),
)
#lorem(60)
Source

pub fn scope(&self, styles: StyleChain<'_>) -> PlacementScope

Relative to which containing scope the figure is placed.

Set this to {"parent"} to create a full-width figure in a two-column document.

Has no effect if placement is {none}.

#set page(height: 250pt, columns: 2)

= Introduction
#figure(
  placement: bottom,
  scope: "parent",
  caption: [A glacier],
  image("glacier.jpg", width: 60%),
)
#lorem(60)
Source

pub fn caption<'a>( &'a self, styles: StyleChain<'a>, ) -> &'a Option<Packed<FigureCaption>>

The figure’s caption.

Source

pub fn kind(&self, styles: StyleChain<'_>) -> Smart<FigureKind>

The kind of figure this is.

All figures of the same kind share a common counter.

If set to {auto}, the figure will try to automatically determine its kind based on the type of its body. Automatically detected kinds are tables and code. In other cases, the inferred kind is that of an image.

Setting this to something other than {auto} will override the automatic detection. This can be useful if

  • you wish to create a custom figure type that is not an image, a [table] or code,
  • you want to force the figure to use a specific counter regardless of its content.

You can set the kind to be an element function or a string. If you set it to an element function other than {table}, {raw} or {image}, you will need to manually specify the figure’s supplement.

#figure(
  circle(radius: 10pt),
  caption: [A curious atom.],
  kind: "atom",
  supplement: [Atom],
)
Source

pub fn supplement<'a>( &'a self, styles: StyleChain<'a>, ) -> &'a Smart<Option<Supplement>>

The figure’s supplement.

If set to {auto}, the figure will try to automatically determine the correct supplement based on the kind and the active text language. If you are using a custom figure type, you will need to manually specify the supplement.

If a function is specified, it is passed the first descendant of the specified kind (typically, the figure’s body) and should return content.

#figure(
  [The contents of my figure!],
  caption: [My custom figure],
  supplement: [Bar],
  kind: "foo",
)
Source

pub fn numbering<'a>(&'a self, styles: StyleChain<'a>) -> &'a Option<Numbering>

How to number the figure. Accepts a numbering pattern or function.

Source

pub fn gap(&self, styles: StyleChain<'_>) -> Length

The vertical gap between the body and caption.

Source

pub fn outlined(&self, styles: StyleChain<'_>) -> bool

Whether the figure should appear in an [outline] of figures.

Source

pub fn counter(&self) -> Option<&Option<Counter>>

Convenience field to get access to the counter for this figure.

The counter only depends on the kind:

  • For (tables)[@table]: {counter(figure.where(kind: table))}
  • For (images)[@image]: {counter(figure.where(kind: image))}
  • For a custom kind: {counter(figure.where(kind: kind))}

These are the counters you’ll need to modify if you want to skip a number or reset the counter.

Source

pub fn placement_in(styles: StyleChain<'_>) -> Option<Smart<VAlignment>>

Access the placement field in the given style chain.

Source

pub fn scope_in(styles: StyleChain<'_>) -> PlacementScope

Access the scope field in the given style chain.

Source

pub fn caption_in(styles: StyleChain<'_>) -> &Option<Packed<FigureCaption>>

Access the caption field in the given style chain.

Source

pub fn kind_in(styles: StyleChain<'_>) -> Smart<FigureKind>

Access the kind field in the given style chain.

Source

pub fn supplement_in(styles: StyleChain<'_>) -> &Smart<Option<Supplement>>

Access the supplement field in the given style chain.

Source

pub fn numbering_in(styles: StyleChain<'_>) -> &Option<Numbering>

Access the numbering field in the given style chain.

Source

pub fn gap_in(styles: StyleChain<'_>) -> Length

Access the gap field in the given style chain.

Source

pub fn outlined_in(styles: StyleChain<'_>) -> bool

Access the outlined field in the given style chain.

Source

pub fn set_placement(placement: Option<Smart<VAlignment>>) -> Property

Create a style property for the placement field.

Source

pub fn set_scope(scope: PlacementScope) -> Property

Create a style property for the scope field.

Source

pub fn set_caption(caption: Option<Packed<FigureCaption>>) -> Property

Create a style property for the caption field.

Source

pub fn set_kind(kind: Smart<FigureKind>) -> Property

Create a style property for the kind field.

Source

pub fn set_supplement(supplement: Smart<Option<Supplement>>) -> Property

Create a style property for the supplement field.

Source

pub fn set_numbering(numbering: Option<Numbering>) -> Property

Create a style property for the numbering field.

Source

pub fn set_gap(gap: Length) -> Property

Create a style property for the gap field.

Source

pub fn set_outlined(outlined: bool) -> Property

Create a style property for the outlined field.

Trait Implementations§

Source§

impl Capable for FigureElem

Source§

fn vtable(capability: TypeId) -> Option<NonNull<()>>

Get the pointer to the vtable for the given capability / trait.
Source§

impl Clone for FigureElem

Source§

fn clone(&self) -> FigureElem

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Construct for FigureElem

Source§

fn construct( engine: &mut Engine<'_>, args: &mut Args, ) -> Result<Content, EcoVec<SourceDiagnostic>>

Construct an element from the arguments. Read more
Source§

impl Debug for FigureElem

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Fields for FigureElem

Source§

type Enum = Fields

An enum with the fields of the element.
Source§

fn has(&self, id: u8) -> bool

Whether the element has the given field set.
Source§

fn field(&self, id: u8) -> Result<Value, FieldAccessError>

Get the field with the given field ID.
Source§

fn field_with_styles( &self, id: u8, styles: StyleChain<'_>, ) -> Result<Value, FieldAccessError>

Get the field with the given ID in the presence of styles.
Source§

fn field_from_styles( id: u8, styles: StyleChain<'_>, ) -> Result<Value, FieldAccessError>

Get the field with the given ID from the styles.
Source§

fn materialize(&mut self, styles: StyleChain<'_>)

Resolve all fields with the styles and save them in-place.
Source§

fn fields(&self) -> Dict

Get the fields of the element.
Source§

impl Hash for FigureElem

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl IntoValue for FigureElem

Source§

fn into_value(self) -> Value

Cast this type into a value.
Source§

impl NativeElement for FigureElem

Source§

fn data() -> &'static NativeElementData

Get the element data for the native Rust element.
Source§

fn elem() -> Element
where Self: Sized,

Get the element for the native Rust element.
Source§

fn pack(self) -> Content
where Self: Sized,

Pack the element into type-erased content.
Source§

impl NativeScope for FigureElem

Source§

fn constructor() -> Option<&'static NativeFuncData>

The constructor function for the type, if any.
Source§

fn scope() -> Scope

Get the associated scope for the type.
Source§

impl PartialEq for FigureElem

Source§

fn eq(&self, other: &FigureElem) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Repr for FigureElem

Source§

fn repr(&self) -> EcoString

Return the debug representation of the value.
Source§

impl Set for FigureElem

Source§

fn set( engine: &mut Engine<'_>, args: &mut Args, ) -> Result<Styles, EcoVec<SourceDiagnostic>>

Parse relevant arguments into style properties for this element.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> Filterable for T

Source§

fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>

Creates a filterable data provider with the given name for debugging. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoResult for T
where T: IntoValue,

Source§

fn into_result(self, _: Span) -> Result<Value, EcoVec<SourceDiagnostic>>

Cast this type into a value.
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T
where T: Send + Sync,