pub struct MatElem {
pub rows: Vec<Vec<Content>>,
/* private fields */
}
Expand description
A matrix.
The elements of a row should be separated by commas, while the rows themselves should be separated by semicolons. The semicolon syntax merges preceding arguments separated by commas into an array. You can also use this special syntax of math function calls to define custom functions that take 2D data.
Content in cells can be aligned with the align
parameter, or content in cells that are in the same row can be aligned with
the &
symbol.
§Example
$ mat(
1, 2, ..., 10;
2, 2, ..., 10;
dots.v, dots.v, dots.down, dots.v;
10, 10, ..., 10;
) $
Fields§
§rows: Vec<Vec<Content>>
Implementations§
Source§impl MatElem
impl MatElem
Sourcepub fn with_delim(self, delim: DelimiterPair) -> Self
pub fn with_delim(self, delim: DelimiterPair) -> Self
Builder-style setter for the delim
field.
Sourcepub fn with_align(self, align: HAlignment) -> Self
pub fn with_align(self, align: HAlignment) -> Self
Builder-style setter for the align
field.
Sourcepub fn with_augment(self, augment: Option<Augment>) -> Self
pub fn with_augment(self, augment: Option<Augment>) -> Self
Builder-style setter for the augment
field.
Sourcepub fn with_row_gap(self, row_gap: Rel<Length>) -> Self
pub fn with_row_gap(self, row_gap: Rel<Length>) -> Self
Builder-style setter for the row-gap
field.
Sourcepub fn with_column_gap(self, column_gap: Rel<Length>) -> Self
pub fn with_column_gap(self, column_gap: Rel<Length>) -> Self
Builder-style setter for the column-gap
field.
Sourcepub fn push_delim(&mut self, delim: DelimiterPair)
pub fn push_delim(&mut self, delim: DelimiterPair)
Setter for the delim
field.
Sourcepub fn push_align(&mut self, align: HAlignment)
pub fn push_align(&mut self, align: HAlignment)
Setter for the align
field.
Sourcepub fn push_augment(&mut self, augment: Option<Augment>)
pub fn push_augment(&mut self, augment: Option<Augment>)
Setter for the augment
field.
Sourcepub fn push_row_gap(&mut self, row_gap: Rel<Length>)
pub fn push_row_gap(&mut self, row_gap: Rel<Length>)
Setter for the row-gap
field.
Sourcepub fn push_column_gap(&mut self, column_gap: Rel<Length>)
pub fn push_column_gap(&mut self, column_gap: Rel<Length>)
Setter for the column-gap
field.
Sourcepub fn delim(&self, styles: StyleChain<'_>) -> DelimiterPair
pub fn delim(&self, styles: StyleChain<'_>) -> DelimiterPair
The delimiter to use.
Can be a single character specifying the left delimiter, in which case the right delimiter is inferred. Otherwise, can be an array containing a left and a right delimiter.
#set math.mat(delim: "[")
$ mat(1, 2; 3, 4) $
Sourcepub fn align(&self, styles: StyleChain<'_>) -> <HAlignment as Resolve>::Output
pub fn align(&self, styles: StyleChain<'_>) -> <HAlignment as Resolve>::Output
The horizontal alignment that each cell should have.
#set math.mat(align: right)
$ mat(-1, 1, 1; 1, -1, 1; 1, 1, -1) $
Sourcepub fn augment(
&self,
styles: StyleChain<'_>,
) -> <Option<Augment> as Resolve>::Output
pub fn augment( &self, styles: StyleChain<'_>, ) -> <Option<Augment> as Resolve>::Output
Draws augmentation lines in a matrix.
{none}
: No lines are drawn.- A single number: A vertical augmentation line is drawn after the specified column number. Negative numbers start from the end.
- A dictionary: With a dictionary, multiple augmentation lines can be
drawn both horizontally and vertically. Additionally, the style of the
lines can be set. The dictionary can contain the following keys:
hline
: The offsets at which horizontal lines should be drawn. For example, an offset of2
would result in a horizontal line being drawn after the second row of the matrix. Accepts either an integer for a single line, or an array of integers for multiple lines. Like for a single number, negative numbers start from the end.vline
: The offsets at which vertical lines should be drawn. For example, an offset of2
would result in a vertical line being drawn after the second column of the matrix. Accepts either an integer for a single line, or an array of integers for multiple lines. Like for a single number, negative numbers start from the end.stroke
: How to stroke the line. If set to{auto}
, takes on a thickness of 0.05em and square line caps.
$ mat(1, 0, 1; 0, 1, 2; augment: #2) $
// Equivalent to:
$ mat(1, 0, 1; 0, 1, 2; augment: #(-1)) $
$ mat(0, 0, 0; 1, 1, 1; augment: #(hline: 1, stroke: 2pt + green)) $
Sourcepub fn row_gap(
&self,
styles: StyleChain<'_>,
) -> <Rel<Length> as Resolve>::Output
pub fn row_gap( &self, styles: StyleChain<'_>, ) -> <Rel<Length> as Resolve>::Output
The gap between rows.
#set math.mat(row-gap: 1em)
$ mat(1, 2; 3, 4) $
Sourcepub fn column_gap(
&self,
styles: StyleChain<'_>,
) -> <Rel<Length> as Resolve>::Output
pub fn column_gap( &self, styles: StyleChain<'_>, ) -> <Rel<Length> as Resolve>::Output
The gap between columns.
#set math.mat(column-gap: 1em)
$ mat(1, 2; 3, 4) $
Sourcepub fn delim_in(styles: StyleChain<'_>) -> DelimiterPair
pub fn delim_in(styles: StyleChain<'_>) -> DelimiterPair
Access the delim
field in the given style chain.
Sourcepub fn align_in(styles: StyleChain<'_>) -> <HAlignment as Resolve>::Output
pub fn align_in(styles: StyleChain<'_>) -> <HAlignment as Resolve>::Output
Access the align
field in the given style chain.
Sourcepub fn augment_in(
styles: StyleChain<'_>,
) -> <Option<Augment> as Resolve>::Output
pub fn augment_in( styles: StyleChain<'_>, ) -> <Option<Augment> as Resolve>::Output
Access the augment
field in the given style chain.
Sourcepub fn row_gap_in(styles: StyleChain<'_>) -> <Rel<Length> as Resolve>::Output
pub fn row_gap_in(styles: StyleChain<'_>) -> <Rel<Length> as Resolve>::Output
Access the row-gap
field in the given style chain.
Sourcepub fn column_gap_in(styles: StyleChain<'_>) -> <Rel<Length> as Resolve>::Output
pub fn column_gap_in(styles: StyleChain<'_>) -> <Rel<Length> as Resolve>::Output
Access the column-gap
field in the given style chain.
Sourcepub fn set_delim(delim: DelimiterPair) -> Property
pub fn set_delim(delim: DelimiterPair) -> Property
Create a style property for the delim
field.
Sourcepub fn set_align(align: HAlignment) -> Property
pub fn set_align(align: HAlignment) -> Property
Create a style property for the align
field.
Sourcepub fn set_augment(augment: Option<Augment>) -> Property
pub fn set_augment(augment: Option<Augment>) -> Property
Create a style property for the augment
field.
Sourcepub fn set_row_gap(row_gap: Rel<Length>) -> Property
pub fn set_row_gap(row_gap: Rel<Length>) -> Property
Create a style property for the row-gap
field.
Sourcepub fn set_column_gap(column_gap: Rel<Length>) -> Property
pub fn set_column_gap(column_gap: Rel<Length>) -> Property
Create a style property for the column-gap
field.
Trait Implementations§
Source§impl Fields for MatElem
impl Fields for MatElem
Source§fn field(&self, id: u8) -> Result<Value, FieldAccessError>
fn field(&self, id: u8) -> Result<Value, FieldAccessError>
Source§fn field_with_styles(
&self,
id: u8,
styles: StyleChain<'_>,
) -> Result<Value, FieldAccessError>
fn field_with_styles( &self, id: u8, styles: StyleChain<'_>, ) -> Result<Value, FieldAccessError>
Source§fn field_from_styles(
id: u8,
styles: StyleChain<'_>,
) -> Result<Value, FieldAccessError>
fn field_from_styles( id: u8, styles: StyleChain<'_>, ) -> Result<Value, FieldAccessError>
Source§fn materialize(&mut self, styles: StyleChain<'_>)
fn materialize(&mut self, styles: StyleChain<'_>)
Source§impl NativeElement for MatElem
impl NativeElement for MatElem
Auto Trait Implementations§
impl Freeze for MatElem
impl !RefUnwindSafe for MatElem
impl Send for MatElem
impl Sync for MatElem
impl Unpin for MatElem
impl !UnwindSafe for MatElem
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
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) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSync for T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> IntoResult for Twhere
T: IntoValue,
impl<T> IntoResult for Twhere
T: IntoValue,
Source§fn into_result(self, _: Span) -> Result<Value, EcoVec<SourceDiagnostic>>
fn into_result(self, _: Span) -> Result<Value, EcoVec<SourceDiagnostic>>
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more