pub struct TableElem {
pub columns: Settable<Self, 0u8>,
pub rows: Settable<Self, 1u8>,
pub column_gutter: Settable<Self, 3u8>,
pub row_gutter: Settable<Self, 4u8>,
pub inset: Settable<Self, 5u8>,
pub align: Settable<Self, 6u8>,
pub fill: Settable<Self, 7u8>,
pub stroke: Settable<Self, 8u8>,
pub children: Vec<TableChild>,
pub summary: Settable<Self, 10u8>,
pub grid: Option<Arc<CellGrid>>,
}Expand description
A table of items.
Tables are used to arrange content in cells. Cells can contain arbitrary content, including multiple paragraphs and are specified in row-major order. For a hands-on explanation of all the ways you can use and customize tables in Typst, check out the Table Guide.
Because tables are just grids with different defaults for some cell
properties (notably stroke and inset), refer to the grid
documentation for more information on how to size the
table tracks and specify the cell appearance properties.
If you are unsure whether you should be using a table or a grid, consider
whether the content you are arranging semantically belongs together as a set
of related data points or similar or whether you are just want to enhance
your presentation by arranging unrelated content in a grid. In the former
case, a table is the right choice, while in the latter case, a grid is more
appropriate. Furthermore, Assistive Technology (AT) like screen readers will
announce content in a table as tabular while a grid’s content will be
announced no different than multiple content blocks in the document flow. AT
users will be able to navigate tables two-dimensionally by cell.
Note that, to override a particular cell’s properties or apply show rules on
table cells, you can use the [table.cell] element. See its documentation
for more information.
Although the table and the grid share most properties, set and show
rules on one of them do not affect the other. Locating most of your styling
in set and show rules is recommended, as it keeps the table’s actual usages
clean and easy to read. It also allows you to easily change the appearance
of all tables in one place.
To give a table a caption and make it referenceable, put it into a [figure].
§Example
The example below demonstrates some of the most common table options.
#table(
columns: (1fr, auto, auto),
inset: 10pt,
align: horizon,
table.header(
[], [*Volume*], [*Parameters*],
),
image("cylinder.svg"),
$ pi h (D^2 - d^2) / 4 $,
[
$h$: height \
$D$: outer radius \
$d$: inner radius
],
image("tetrahedron.svg"),
$ sqrt(2) / 12 a^3 $,
[$a$: edge length]
)Much like with grids, you can use [table.cell] to customize the appearance
and the position of each cell.
>>> #set page(width: auto)
>>> #set text(font: "IBM Plex Sans")
>>> #let gray = rgb("#565565")
>>>
#set table(
stroke: none,
gutter: 0.2em,
fill: (x, y) =>
if x == 0 or y == 0 { gray },
inset: (right: 1.5em),
)
#show table.cell: it => {
if it.x == 0 or it.y == 0 {
set text(white)
strong(it)
} else if it.body == [] {
// Replace empty cells with 'N/A'
pad(..it.inset)[_N/A_]
} else {
it
}
}
#let a = table.cell(
fill: green.lighten(60%),
)[A]
#let b = table.cell(
fill: aqua.lighten(60%),
)[B]
#table(
columns: 4,
[], [Exam 1], [Exam 2], [Exam 3],
[John], [], a, [],
[Mary], [], a, a,
[Robert], b, a, b,
)§Accessibility
Tables are challenging to consume for users of Assistive Technology (AT). To
make the life of AT users easier, we strongly recommend that you use
[table.header] and [table.footer] to mark the header and footer sections
of your table. This will allow AT to announce the column labels for each
cell.
Because navigating a table by cell is more cumbersome than reading it visually, you should consider making the core information in your table available as text as well. You can do this by wrapping your table in a [figure] and using its caption to summarize the table’s content.
Fields§
§columns: Settable<Self, 0u8>§rows: Settable<Self, 1u8>§column_gutter: Settable<Self, 3u8>§row_gutter: Settable<Self, 4u8>§inset: Settable<Self, 5u8>§align: Settable<Self, 6u8>§fill: Settable<Self, 7u8>§stroke: Settable<Self, 8u8>§children: Vec<TableChild>§summary: Settable<Self, 10u8>§grid: Option<Arc<CellGrid>>Implementations§
Source§impl TableElem
impl TableElem
Sourcepub fn new(children: Vec<TableChild>) -> Self
pub fn new(children: Vec<TableChild>) -> Self
Create a new instance of the element.
Sourcepub fn with_columns(self, columns: TrackSizings) -> Self
pub fn with_columns(self, columns: TrackSizings) -> Self
Builder-style setter for the columns field.
Sourcepub fn with_rows(self, rows: TrackSizings) -> Self
pub fn with_rows(self, rows: TrackSizings) -> Self
Builder-style setter for the rows field.
Sourcepub fn with_column_gutter(self, column_gutter: TrackSizings) -> Self
pub fn with_column_gutter(self, column_gutter: TrackSizings) -> Self
Builder-style setter for the column-gutter field.
Sourcepub fn with_row_gutter(self, row_gutter: TrackSizings) -> Self
pub fn with_row_gutter(self, row_gutter: TrackSizings) -> Self
Builder-style setter for the row-gutter field.
Sourcepub fn with_inset(self, inset: Celled<Sides<Option<Rel<Length>>>>) -> Self
pub fn with_inset(self, inset: Celled<Sides<Option<Rel<Length>>>>) -> Self
Builder-style setter for the inset field.
Sourcepub fn with_align(self, align: Celled<Smart<Alignment>>) -> Self
pub fn with_align(self, align: Celled<Smart<Alignment>>) -> Self
Builder-style setter for the align field.
Sourcepub fn with_fill(self, fill: Celled<Option<Paint>>) -> Self
pub fn with_fill(self, fill: Celled<Option<Paint>>) -> Self
Builder-style setter for the fill field.
Sourcepub fn with_stroke(
self,
stroke: Celled<Sides<Option<Option<Arc<Stroke>>>>>,
) -> Self
pub fn with_stroke( self, stroke: Celled<Sides<Option<Option<Arc<Stroke>>>>>, ) -> Self
Builder-style setter for the stroke field.
Sourcepub fn with_summary(self, summary: Option<EcoString>) -> Self
pub fn with_summary(self, summary: Option<EcoString>) -> Self
Builder-style setter for the summary field.
Source§impl TableElem
impl TableElem
pub const columns: Field<Self, 0u8>
pub const rows: Field<Self, 1u8>
pub const column_gutter: Field<Self, 3u8>
pub const row_gutter: Field<Self, 4u8>
pub const inset: Field<Self, 5u8>
pub const align: Field<Self, 6u8>
pub const fill: Field<Self, 7u8>
pub const stroke: Field<Self, 8u8>
pub const children: Field<Self, 9u8>
pub const summary: Field<Self, 10u8>
pub const grid: Field<Self, 11u8>
Trait Implementations§
Source§impl ExternalField<2> for TableElem
impl ExternalField<2> for TableElem
const FIELD: ExternalFieldData<Self, 2u8>
type Type = TrackSizings
Source§impl FromValue for TableElem
impl FromValue for TableElem
Source§fn from_value(value: Value) -> HintedStrResult<Self>
fn from_value(value: Value) -> HintedStrResult<Self>
Self.Source§impl NativeElement for TableElem
impl NativeElement for TableElem
Source§impl NativeScope for TableElem
impl NativeScope for TableElem
Source§fn constructor() -> Option<&'static NativeFuncData>
fn constructor() -> Option<&'static NativeFuncData>
Source§impl RequiredField<9> for TableElem
impl RequiredField<9> for TableElem
const FIELD: RequiredFieldData<Self, 9u8>
type Type = Vec<TableChild>
Source§impl SettableField<0> for TableElem
impl SettableField<0> for TableElem
const FIELD: SettableFieldData<Self, 0u8>
type Type = TrackSizings
Source§impl SettableField<1> for TableElem
impl SettableField<1> for TableElem
const FIELD: SettableFieldData<Self, 1u8>
type Type = TrackSizings
Source§impl SettableField<10> for TableElem
impl SettableField<10> for TableElem
Source§impl SettableField<3> for TableElem
impl SettableField<3> for TableElem
const FIELD: SettableFieldData<Self, 3u8>
type Type = TrackSizings
Source§impl SettableField<4> for TableElem
impl SettableField<4> for TableElem
const FIELD: SettableFieldData<Self, 4u8>
type Type = TrackSizings
Source§impl SettableField<5> for TableElem
impl SettableField<5> for TableElem
Source§impl SettableField<6> for TableElem
impl SettableField<6> for TableElem
Source§impl SettableField<7> for TableElem
impl SettableField<7> for TableElem
Source§impl SettableField<8> for TableElem
impl SettableField<8> for TableElem
Source§impl SynthesizedField<11> for TableElem
impl SynthesizedField<11> for TableElem
impl RefableProperty<0> for TableElem
impl RefableProperty<1> for TableElem
impl RefableProperty<10> for TableElem
impl RefableProperty<3> for TableElem
impl RefableProperty<4> for TableElem
impl RefableProperty<6> for TableElem
impl RefableProperty<7> for TableElem
Auto Trait Implementations§
impl Freeze for TableElem
impl !RefUnwindSafe for TableElem
impl Send for TableElem
impl Sync for TableElem
impl Unpin for TableElem
impl !UnwindSafe for TableElem
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> 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> FromValue<Spanned<Value>> for Twhere
T: FromValue,
impl<T> FromValue<Spanned<Value>> for Twhere
T: FromValue,
Source§fn from_value(value: Spanned<Value>) -> Result<T, HintedString>
fn from_value(value: Spanned<Value>) -> Result<T, HintedString>
Self.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> IntoValue for Twhere
T: NativeElement,
impl<T> IntoValue for Twhere
T: NativeElement,
Source§fn into_value(self) -> Value
fn into_value(self) -> Value
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, const I: u8> SettableProperty<I> for Twhere
T: SettableField<I>,
impl<T, const I: u8> SettableProperty<I> for Twhere
T: SettableField<I>,
const FIELD: SettablePropertyData<T, I> = const FIELD: SettablePropertyData<Self, I> = <Self as SettableField::<I>>::FIELD.property;
type Type = <T as SettableField<I>>::Type
const FOLD: Option<FoldFn<Self::Type>> = _
Source§fn default_ref() -> &'static Self::Type
fn default_ref() -> &'static Self::Type
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