注意 当サイトは、Typst v0.12.0 公式ドキュメントを、日本語コミュニティが非公式に翻訳したものです。誤訳・未訳・古い情報が含まれている可能性があるため、公式ドキュメント との併用を推奨します。このサイトの内容に誤りを発見された方は、GitHubリポジトリまでご報告を頂けましたら幸いです。我々のコミュニティにご興味のある方は、ぜひ非公式Discordサーバー「くみはんクラブ」にご参加ください。
Warning: This site provides an unofficial translation of the Typst v0.12.0 documentation by the Japanese Community. Please note that there may be some inaccuracies, untranslated sections or outdated information. We highly recommend referring to the latest official documentation as well. If you find any errors in the content, please let us know through our GitHub repository. If you are interested in our community, feel free to join our unofficial Discord server, “Kumihan Club.”
Typst ドキュメント日本語版

stroke

Defines how to draw a line.

A stroke has a paint (a solid color or gradient), a thickness, a line cap, a line join, a miter limit, and a dash pattern. All of these values are optional and have sensible defaults.

Example

#set line(length: 100%)
#stack(
  spacing: 1em,
  line(stroke: 2pt + red),
  line(stroke: (paint: blue, thickness: 4pt, cap: "round")),
  line(stroke: (paint: blue, thickness: 1pt, dash: "dashed")),
  line(stroke: 2pt + gradient.linear(..color.map.rainbow)),
)
Preview

Simple strokes

You can create a simple solid stroke from a color, a thickness, or a combination of the two. Specifically, wherever a stroke is expected you can pass any of the following values:

For full control, you can also provide a dictionary or a stroke object to any function that expects a stroke. The dictionary's keys may include any of the parameters for the constructor function, shown below.

Fields

On a stroke object, you can access any of the fields listed in the constructor function. For example, (2pt + blue).thickness is 2pt. Meanwhile, stroke(red).cap is auto because it's unspecified. Fields set to auto are inherited.

Constructor
If a type has a constructor, you can call it like a function to create a new value of the type.

Converts a value to a stroke or constructs a stroke with the given parameters.

Note that in most cases you do not need to convert values to strokes in order to use them, as they will be converted automatically. However, this constructor can be useful to ensure a value has all the fields of a stroke.

#let my-func(x) = {
    x = stroke(x) // Convert to a stroke
    [Stroke has thickness #x.thickness.]
}
#my-func(3pt) \
#my-func(red) \
#my-func(stroke(cap: "round", thickness: 1pt))
Preview

paint
auto color gradient pattern
RequiredPositional
Positional parameters are specified in order, without names.

The color or gradient to use for the stroke.

If set to auto, the value is inherited, defaulting to black.

thickness
auto length
RequiredPositional
Positional parameters are specified in order, without names.

The stroke's thickness.

If set to auto, the value is inherited, defaulting to 1pt.

cap
auto str
RequiredPositional
Positional parameters are specified in order, without names.

How the ends of the stroke are rendered.

If set to auto, the value is inherited, defaulting to "butt".

join
auto str
RequiredPositional
Positional parameters are specified in order, without names.

How sharp turns are rendered.

If set to auto, the value is inherited, defaulting to "miter".

dash
none auto str array dictionary
RequiredPositional
Positional parameters are specified in order, without names.

The dash pattern to use. This can be:

If set to auto, the value is inherited, defaulting to none.

View example
#set line(length: 100%, stroke: 2pt)
#stack(
  spacing: 1em,
  line(stroke: (dash: "dashed")),
  line(stroke: (dash: (10pt, 5pt, "dot", 5pt))),
  line(stroke: (dash: (array: (10pt, 5pt, "dot", 5pt), phase: 10pt))),
)
Preview

miter-limit
auto float
RequiredPositional
Positional parameters are specified in order, without names.

Number at which protruding sharp bends are rendered with a bevel instead or a miter join. The higher the number, the sharper an angle can be before it is bevelled. Only applicable if join is "miter".

Specifically, the miter limit is the maximum ratio between the corner's protrusion length and the stroke's thickness.

If set to auto, the value is inherited, defaulting to 4.0.

View example
#let points = ((15pt, 0pt), (0pt, 30pt), (30pt, 30pt), (10pt, 20pt))
#set path(stroke: 6pt + blue)
#stack(
    dir: ltr,
    spacing: 1cm,
    path(stroke: (miter-limit: 1), ..points),
    path(stroke: (miter-limit: 4), ..points),
    path(stroke: (miter-limit: 5), ..points),
)
Preview