mirror of
https://github.com/typst/typst
synced 2025-06-28 08:12:53 +08:00
Simpler and more versatile row and column gutter arguments
This commit is contained in:
parent
1d60525690
commit
c25c6a35b2
@ -251,7 +251,12 @@ pub fn stack(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
|
|||||||
/// `grid`: Arrange children into a grid.
|
/// `grid`: Arrange children into a grid.
|
||||||
pub fn grid(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
|
pub fn grid(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
|
||||||
castable! {
|
castable! {
|
||||||
Vec<TrackSizing>: "array of autos, linears, and fractionals",
|
Vec<TrackSizing>: "integer or (auto, linear, fractional, or array thereof)",
|
||||||
|
Value::Auto => vec![TrackSizing::Auto],
|
||||||
|
Value::Length(v) => vec![TrackSizing::Linear(v.into())],
|
||||||
|
Value::Relative(v) => vec![TrackSizing::Linear(v.into())],
|
||||||
|
Value::Linear(v) => vec![TrackSizing::Linear(v)],
|
||||||
|
Value::Fractional(v) => vec![TrackSizing::Fractional(v)],
|
||||||
Value::Int(count) => vec![TrackSizing::Auto; count.max(0) as usize],
|
Value::Int(count) => vec![TrackSizing::Auto; count.max(0) as usize],
|
||||||
Value::Array(values) => values
|
Value::Array(values) => values
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@ -272,21 +277,17 @@ pub fn grid(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> {
|
|||||||
let rows = args.named("rows")?.unwrap_or_default();
|
let rows = args.named("rows")?.unwrap_or_default();
|
||||||
let tracks = Gen::new(columns, rows);
|
let tracks = Gen::new(columns, rows);
|
||||||
|
|
||||||
|
let base_gutter: Vec<TrackSizing> = args.named("gutter")?.unwrap_or_default();
|
||||||
|
let column_gutter = args.named("column-gutter")?;
|
||||||
|
let row_gutter = args.named("row-gutter")?;
|
||||||
|
let gutter = Gen::new(
|
||||||
|
column_gutter.unwrap_or_else(|| base_gutter.clone()),
|
||||||
|
row_gutter.unwrap_or(base_gutter),
|
||||||
|
);
|
||||||
|
|
||||||
let column_dir = args.named("column-dir")?;
|
let column_dir = args.named("column-dir")?;
|
||||||
let row_dir = args.named("row-dir")?;
|
let row_dir = args.named("row-dir")?;
|
||||||
|
|
||||||
let gutter_columns = args.named("gutter-columns")?;
|
|
||||||
let gutter_rows = args.named("gutter-rows")?;
|
|
||||||
let gutter_default = args
|
|
||||||
.named("gutter")?
|
|
||||||
.map(|v| vec![TrackSizing::Linear(v)])
|
|
||||||
.unwrap_or_default();
|
|
||||||
|
|
||||||
let gutter = Gen::new(
|
|
||||||
gutter_columns.unwrap_or_else(|| gutter_default.clone()),
|
|
||||||
gutter_rows.unwrap_or(gutter_default),
|
|
||||||
);
|
|
||||||
|
|
||||||
let children: Vec<Template> = args.all().collect();
|
let children: Vec<Template> = args.all().collect();
|
||||||
|
|
||||||
Ok(Value::Template(Template::from_block(move |state| {
|
Ok(Value::Template(Template::from_block(move |state| {
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
---
|
---
|
||||||
#grid(
|
#grid(
|
||||||
columns: (auto, auto, 40%),
|
columns: (auto, auto, 40%),
|
||||||
gutter-columns: (1fr,),
|
column-gutter: 1fr,
|
||||||
gutter-rows: (1fr,),
|
row-gutter: 1fr,
|
||||||
rect(fill: eastern)[dddaa aaa aaa],
|
rect(fill: eastern)[dddaa aaa aaa],
|
||||||
rect(fill: conifer)[ccc],
|
rect(fill: conifer)[ccc],
|
||||||
rect(width: 100%, fill: rgb("dddddd"))[aaa],
|
rect(width: 100%, fill: rgb("dddddd"))[aaa],
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
#page(width: 12cm, height: 2.5cm)
|
#page(width: 12cm, height: 2.5cm)
|
||||||
#grid(
|
#grid(
|
||||||
columns: 5,
|
columns: 5,
|
||||||
gutter-columns: (2fr, 1fr, 1fr),
|
column-gutter: (2fr, 1fr, 1fr),
|
||||||
gutter-rows: 4 * (6pt,),
|
row-gutter: 6pt,
|
||||||
[*Quarter*],
|
[*Quarter*],
|
||||||
[Expenditure],
|
[Expenditure],
|
||||||
[External Revenue],
|
[External Revenue],
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#page(width: 5cm, height: 3cm)
|
#page(width: 5cm, height: 3cm)
|
||||||
#grid(
|
#grid(
|
||||||
columns: 2,
|
columns: 2,
|
||||||
gutter-rows: 3 * (8pt,),
|
row-gutter: 8pt,
|
||||||
[Lorem ipsum dolor sit amet.
|
[Lorem ipsum dolor sit amet.
|
||||||
|
|
||||||
Aenean commodo ligula eget dolor. Aenean massa. Penatibus et magnis.],
|
Aenean commodo ligula eget dolor. Aenean massa. Penatibus et magnis.],
|
||||||
@ -21,8 +21,8 @@
|
|||||||
#page(width: 5cm, height: 2cm)
|
#page(width: 5cm, height: 2cm)
|
||||||
#grid(
|
#grid(
|
||||||
columns: 4 * (1fr,),
|
columns: 4 * (1fr,),
|
||||||
gutter-rows: (10pt,),
|
row-gutter: 10pt,
|
||||||
gutter-columns: (0pt, 10%),
|
column-gutter: (0pt, 10%),
|
||||||
image("../../res/rhino.png"),
|
image("../../res/rhino.png"),
|
||||||
align(right, rect(width: 100%, fill: eastern)[LoL]),
|
align(right, rect(width: 100%, fill: eastern)[LoL]),
|
||||||
[rofl],
|
[rofl],
|
||||||
@ -35,8 +35,8 @@
|
|||||||
#page(width: 5cm, height: 2cm)
|
#page(width: 5cm, height: 2cm)
|
||||||
#grid(
|
#grid(
|
||||||
columns: 3 * (1fr,),
|
columns: 3 * (1fr,),
|
||||||
gutter-rows: (8pt,),
|
row-gutter: 8pt,
|
||||||
gutter-columns: (0pt, 10%),
|
column-gutter: (0pt, 10%),
|
||||||
[A], [B], [C],
|
[A], [B], [C],
|
||||||
[Ha!\ ] * 6,
|
[Ha!\ ] * 6,
|
||||||
[rofl],
|
[rofl],
|
||||||
@ -51,8 +51,8 @@
|
|||||||
#page(width: 5cm, height: 2.25cm)
|
#page(width: 5cm, height: 2.25cm)
|
||||||
#grid(
|
#grid(
|
||||||
columns: 4 * (1fr,),
|
columns: 4 * (1fr,),
|
||||||
gutter-rows: (10pt,),
|
row-gutter: 10pt,
|
||||||
gutter-columns: (0pt, 10%),
|
column-gutter: (0pt, 10%),
|
||||||
[A], [B], [C], [D],
|
[A], [B], [C], [D],
|
||||||
grid(columns: 2, [A], [B], [C\ ]*3, [D]),
|
grid(columns: 2, [A], [B], [C\ ]*3, [D]),
|
||||||
align(right, rect(width: 100%, fill: eastern)[LoL]),
|
align(right, rect(width: 100%, fill: eastern)[LoL]),
|
||||||
@ -66,7 +66,7 @@
|
|||||||
#grid(
|
#grid(
|
||||||
columns: 2 * (1fr,),
|
columns: 2 * (1fr,),
|
||||||
rows: (1fr, 2fr, auto, 1fr, 1cm),
|
rows: (1fr, 2fr, auto, 1fr, 1cm),
|
||||||
gutter-rows: 4 * (10pt,),
|
row-gutter: 10pt,
|
||||||
rect(height: 100%, width: 100%, fill: rgb("ff0000"))[No height],
|
rect(height: 100%, width: 100%, fill: rgb("ff0000"))[No height],
|
||||||
[foo],
|
[foo],
|
||||||
rect(height: 100%, width: 100%, fill: rgb("fc0030"))[Still no height],
|
rect(height: 100%, width: 100%, fill: rgb("fc0030"))[Still no height],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user