注意 / Info
本站经 Typst GmbH 许可,提供 Typst v0.10.0+后期随缘更新 官方文档的翻译,由中文社区维护。建议与官方文档一同阅读,因为可能存在错译、漏译或过时信息。如有意改进翻译内容或网站本身,可在GitHub上提出 Issue、发起 Pull Requests。此外,也欢迎加入「Typst 非官方中文交流群」(QQ 793548390)
This site provides a Chinese translation of the Typst v0.10.0+后期随缘更新 documentation maintained by the “Typst Chinese Community” with permission from Typst GmbH. We recommend using this alongside the official documentation. We welcome contributions through Issues and Pull Requests on our GitHub repository for both translation improvements and website enhancements. Feel free to join our QQ chat group “Typst 非官方中文交流群” (793548390).
Typst文档简体中文版
v0.10.0+后期随缘更新

gradient

A color gradient.

Typst supports linear gradients through the gradient.linear function, radial gradients through the gradient.radial function, and conic gradients through the gradient.conic function.

A gradient can be used for the following purposes:

  • As a fill to paint the interior of a shape: rect(fill: gradient.linear(..))
  • As a stroke to paint the outline of a shape: rect(stroke: 1pt + gradient.linear(..))
  • As the fill of text: set text(fill: gradient.linear(..))
  • As a color map you can sample from: gradient.linear(..).sample(0.5)

Examples

#stack(
  dir: ltr,
  spacing: 1fr,
  square(fill: gradient.linear(..color.map.rainbow)),
  square(fill: gradient.radial(..color.map.rainbow)),
  square(fill: gradient.conic(..color.map.rainbow)),
)
Preview

Gradients are also supported on text, but only when setting the relativeness to either auto (the default value) or "parent". To create word-by-word or glyph-by-glyph gradients, you can wrap the words or characters of your text in boxes manually or through a show rule.

#set text(fill: gradient.linear(red, blue))
#let rainbow(content) = {
  set text(fill: gradient.linear(..color.map.rainbow))
  box(content)
}

This is a gradient on text, but with a #rainbow[twist]!
Preview

Stops

A gradient is composed of a series of stops. Each of these stops has a color and an offset. The offset is a ratio between 0% and 100% or an angle between 0deg and 360deg. The offset is a relative position that determines how far along the gradient the stop is located. The stop's color is the color of the gradient at that position. You can choose to omit the offsets when defining a gradient. In this case, Typst will space all stops evenly.

Relativeness

The location of the 0% and 100% stops depends on the dimensions of a container. This container can either be the shape that it is being painted on, or the closest surrounding container. This is controlled by the relative argument of a gradient constructor. By default, gradients are relative to the shape they are being painted on, unless the gradient is applied on text, in which case they are relative to the closest ancestor container.

Typst determines the ancestor container as follows:

  • For shapes that are placed at the root/top level of the document, the closest ancestor is the page itself.
  • For other shapes, the ancestor is the innermost block or box that contains the shape. This includes the boxes and blocks that are implicitly created by show rules and elements. For example, a rotate will not affect the parent of a gradient, but a grid will.

Color spaces and interpolation

Gradients can be interpolated in any color space. By default, gradients are interpolated in the Oklab color space, which is a perceptually uniform color space. This means that the gradient will be perceived as having a smooth progression of colors. This is particularly useful for data visualization.

However, you can choose to interpolate the gradient in any supported color space you want, but beware that some color spaces are not suitable for perceptually interpolating between colors. Consult the table below when choosing an interpolation space.

Color spacePerceptually uniform?
OklabYes
OklchYes
sRGBNo
linear-RGBYes
CMYKNo
GrayscaleYes
HSLNo
HSVNo

Direction

Some gradients are sensitive to direction. For example, a linear gradient has an angle that determines its direction. Typst uses a clockwise angle, with 0° being from left to right, 90° from top to bottom, 180° from right to left, and 270° from bottom to top.

#stack(
  dir: ltr,
  spacing: 1fr,
  square(fill: gradient.linear(red, blue, angle: 0deg)),
  square(fill: gradient.linear(red, blue, angle: 90deg)),
  square(fill: gradient.linear(red, blue, angle: 180deg)),
  square(fill: gradient.linear(red, blue, angle: 270deg)),
)
Preview

Presets

Typst predefines color maps that you can use with your gradients. See the color documentation for more details.

定义
定义
这些函数和类型带有附属定义。要访问这种定义,请先写上函数或类型的名称,再加上定义的名称,并用句点在中间分隔。

linear

Creates a new linear gradient, in which colors transition along a straight line.

展开例子
#rect(
  width: 100%,
  height: 20pt,
  fill: gradient.linear(
    ..color.map.viridis,
  ),
)
Preview

stops
必需参数
必需参数
必需参数在调用函数时必须传入。
位置参数
位置参数
位置参数按顺序传入,不带参数名。
变长参数
变长参数
变长参数可以传入多次。

The color stops of the gradient.

space
any

The color space in which to interpolate the gradient.

Defaults to a perceptually uniform color space called Oklab.

默认值:

oklab

relative

The relative placement of the gradient.

For an element placed at the root/top level of the document, the parent is the page itself. For other elements, the parent is the innermost block, box, column, grid, or stack that contains the element.

默认值:

auto

可填写的值
  • self

    The gradient is relative to itself (its own bounding box).

  • parent

    The gradient is relative to its parent (the parent's bounding box).

dir
位置参数
位置参数
位置参数按顺序传入,不带参数名。

The direction of the gradient.

默认值:

ltr

angle
必需参数
必需参数
必需参数在调用函数时必须传入。
位置参数
位置参数
位置参数按顺序传入,不带参数名。

The angle of the gradient.

radial

Creates a new radial gradient, in which colors radiate away from an origin.

The gradient is defined by two circles: the focal circle and the end circle. The focal circle is a circle with center focal-center and radius focal-radius, that defines the points at which the gradient starts and has the color of the first stop. The end circle is a circle with center center and radius radius, that defines the points at which the gradient ends and has the color of the last stop. The gradient is then interpolated between these two circles.

Using these four values, also called the focal point for the starting circle and the center and radius for the end circle, we can define a gradient with more interesting properties than a basic radial gradient.

展开例子
#stack(
  dir: ltr,
  spacing: 1fr,
  circle(fill: gradient.radial(
    ..color.map.viridis,
  )),
  circle(fill: gradient.radial(
    ..color.map.viridis,
    focal-center: (10%, 40%),
    focal-radius: 5%,
  )),
)
Preview

stops
必需参数
必需参数
必需参数在调用函数时必须传入。
位置参数
位置参数
位置参数按顺序传入,不带参数名。
变长参数
变长参数
变长参数可以传入多次。

The color stops of the gradient.

space
any

The color space in which to interpolate the gradient.

Defaults to a perceptually uniform color space called Oklab.

默认值:

oklab

relative

The relative placement of the gradient.

For an element placed at the root/top level of the document, the parent is the page itself. For other elements, the parent is the innermost block, box, column, grid, or stack that contains the element.

默认值:

auto

可填写的值
  • self

    The gradient is relative to itself (its own bounding box).

  • parent

    The gradient is relative to its parent (the parent's bounding box).

center

The center of the end circle of the gradient.

A value of (50%, 50%) means that the end circle is centered inside of its container.

默认值:

(50%, 50%)

radius

The radius of the end circle of the gradient.

By default, it is set to 50%. The ending radius must be bigger than the focal radius.

默认值:

50%

focal-center

The center of the focal circle of the gradient.

The focal center must be inside of the end circle.

A value of (50%, 50%) means that the focal circle is centered inside of its container.

By default it is set to the same as the center of the last circle.

默认值:

auto

focal-radius

The radius of the focal circle of the gradient.

The focal center must be inside of the end circle.

By default, it is set to 0%. The focal radius must be smaller than the ending radius`.

默认值:

0%

conic

Creates a new conic gradient, in which colors change radially around a center point.

You can control the center point of the gradient by using the center argument. By default, the center point is the center of the shape.

展开例子
#stack(
  dir: ltr,
  spacing: 1fr,
  circle(fill: gradient.conic(
    ..color.map.viridis,
  )),
  circle(fill: gradient.conic(
    ..color.map.viridis,
    center: (20%, 30%),
  )),
)
Preview

stops
必需参数
必需参数
必需参数在调用函数时必须传入。
位置参数
位置参数
位置参数按顺序传入,不带参数名。
变长参数
变长参数
变长参数可以传入多次。

The color stops of the gradient.

angle

The angle of the gradient.

默认值:

0deg

space
any

The color space in which to interpolate the gradient.

Defaults to a perceptually uniform color space called Oklab.

默认值:

oklab

relative

The relative placement of the gradient.

For an element placed at the root/top level of the document, the parent is the page itself. For other elements, the parent is the innermost block, box, column, grid, or stack that contains the element.

默认值:

auto

可填写的值
  • self

    The gradient is relative to itself (its own bounding box).

  • parent

    The gradient is relative to its parent (the parent's bounding box).

center

The center of the last circle of the gradient.

A value of (50%, 50%) means that the end circle is centered inside of its container.

默认值:

(50%, 50%)

sharp

Creates a sharp version of this gradient.

Sharp gradients have discrete jumps between colors, instead of a smooth transition. They are particularly useful for creating color lists for a preset gradient.

展开例子
#set rect(width: 100%, height: 20pt)
#let grad = gradient.linear(..color.map.rainbow)
#rect(fill: grad)
#rect(fill: grad.sharp(5))
#rect(fill: grad.sharp(5, smoothness: 20%))
Preview

steps
必需参数
必需参数
必需参数在调用函数时必须传入。
位置参数
位置参数
位置参数按顺序传入,不带参数名。

The number of stops in the gradient.

smoothness

How much to smooth the gradient.

默认值:

0%

repeat

Repeats this gradient a given number of times, optionally mirroring it at each repetition.

self.repeat()->
展开例子
#circle(
  radius: 40pt,
  fill: gradient
    .radial(aqua, white)
    .repeat(4),
)
Preview

repetitions
必需参数
必需参数
必需参数在调用函数时必须传入。
位置参数
位置参数
位置参数按顺序传入,不带参数名。

The number of times to repeat the gradient.

mirror

Whether to mirror the gradient at each repetition.

默认值:

false

kind

Returns the kind of this gradient.

self.kind(
)->

stops

Returns the stops of this gradient.

self.stops(
)->

space

Returns the mixing space of this gradient.

self.space(
)->
any

relative

Returns the relative placement of this gradient.

self.relative(
)->

angle

Returns the angle of this gradient.

self.angle(
)->

sample

Sample the gradient at a given position.

The position is either a position along the gradient (a ratio between 0% and 100%) or an angle. Any value outside of this range will be clamped.

self.sample()->

t
必需参数
必需参数
必需参数在调用函数时必须传入。
位置参数
位置参数
位置参数按顺序传入,不带参数名。

The position at which to sample the gradient.

samples

Samples the gradient at multiple positions at once and returns the results as an array.

self.samples()->

ts
必需参数
必需参数
必需参数在调用函数时必须传入。
位置参数
位置参数
位置参数按顺序传入,不带参数名。
变长参数
变长参数
变长参数可以传入多次。

The positions at which to sample the gradient.

转到官方文档(英文)

搜索