mirror of
https://github.com/typst/typst
synced 2025-07-27 14:27:56 +08:00
Compare commits
16 Commits
1d72caa709
...
9bcfb9196e
Author | SHA1 | Date | |
---|---|---|---|
|
9bcfb9196e | ||
|
7278d887cf | ||
|
cd4923f10d | ||
|
8e512bd0b1 | ||
|
d1f5a3d2d5 | ||
|
a1c01dff7f | ||
|
941c3123af | ||
|
d45a621358 | ||
|
68bf10498f | ||
|
6e7049ba32 | ||
|
c98c72847d | ||
|
7eefc19441 | ||
|
8571158b50 | ||
|
2fbed47c3e | ||
|
eabedfc61c | ||
|
615ded766b |
@ -6,7 +6,7 @@ use crate::foundations::{Array, Context, LocatableSelector, Value, func};
|
|||||||
|
|
||||||
/// Finds elements in the document.
|
/// Finds elements in the document.
|
||||||
///
|
///
|
||||||
/// The `query` functions lets you search your document for elements of a
|
/// The `query` function lets you search your document for elements of a
|
||||||
/// particular type or with a particular label. To use it, you first need to
|
/// particular type or with a particular label. To use it, you first need to
|
||||||
/// ensure that [context] is available.
|
/// ensure that [context] is available.
|
||||||
///
|
///
|
||||||
|
@ -340,7 +340,7 @@ pub struct PageElem {
|
|||||||
/// This content will overlay the page's body.
|
/// This content will overlay the page's body.
|
||||||
///
|
///
|
||||||
/// ```example
|
/// ```example
|
||||||
/// #set page(foreground: text(24pt)[🥸])
|
/// #set page(foreground: text(24pt)[🤓])
|
||||||
///
|
///
|
||||||
/// Reviewer 2 has marked our paper
|
/// Reviewer 2 has marked our paper
|
||||||
/// "Weak Reject" because they did
|
/// "Weak Reject" because they did
|
||||||
|
@ -625,7 +625,7 @@ pub struct TableVLine {
|
|||||||
/// cell(align: left)[🌴🚗],
|
/// cell(align: left)[🌴🚗],
|
||||||
/// cell(
|
/// cell(
|
||||||
/// inset: 0.06em,
|
/// inset: 0.06em,
|
||||||
/// text(1.62em)[🛖🌅🌊],
|
/// text(1.62em)[🏝️🌅🌊],
|
||||||
/// ),
|
/// ),
|
||||||
/// )
|
/// )
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -476,26 +476,18 @@ impl Curve {
|
|||||||
|
|
||||||
/// Computes the size of the bounding box of this curve.
|
/// Computes the size of the bounding box of this curve.
|
||||||
pub fn bbox_size(&self) -> Size {
|
pub fn bbox_size(&self) -> Size {
|
||||||
let mut min_x = Abs::inf();
|
let mut min = Point::splat(Abs::inf());
|
||||||
let mut min_y = Abs::inf();
|
let mut max = Point::splat(-Abs::inf());
|
||||||
let mut max_x = -Abs::inf();
|
|
||||||
let mut max_y = -Abs::inf();
|
|
||||||
|
|
||||||
let mut cursor = Point::zero();
|
let mut cursor = Point::zero();
|
||||||
for item in self.0.iter() {
|
for item in self.0.iter() {
|
||||||
match item {
|
match item {
|
||||||
CurveItem::Move(to) => {
|
CurveItem::Move(to) => {
|
||||||
min_x = min_x.min(cursor.x);
|
|
||||||
min_y = min_y.min(cursor.y);
|
|
||||||
max_x = max_x.max(cursor.x);
|
|
||||||
max_y = max_y.max(cursor.y);
|
|
||||||
cursor = *to;
|
cursor = *to;
|
||||||
}
|
}
|
||||||
CurveItem::Line(to) => {
|
CurveItem::Line(to) => {
|
||||||
min_x = min_x.min(cursor.x);
|
min = min.min(cursor).min(*to);
|
||||||
min_y = min_y.min(cursor.y);
|
max = max.max(cursor).max(*to);
|
||||||
max_x = max_x.max(cursor.x);
|
|
||||||
max_y = max_y.max(cursor.y);
|
|
||||||
cursor = *to;
|
cursor = *to;
|
||||||
}
|
}
|
||||||
CurveItem::Cubic(c0, c1, end) => {
|
CurveItem::Cubic(c0, c1, end) => {
|
||||||
@ -507,17 +499,17 @@ impl Curve {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let bbox = cubic.bounding_box();
|
let bbox = cubic.bounding_box();
|
||||||
min_x = min_x.min(Abs::pt(bbox.x0)).min(Abs::pt(bbox.x1));
|
min.x = min.x.min(Abs::pt(bbox.x0)).min(Abs::pt(bbox.x1));
|
||||||
min_y = min_y.min(Abs::pt(bbox.y0)).min(Abs::pt(bbox.y1));
|
min.y = min.y.min(Abs::pt(bbox.y0)).min(Abs::pt(bbox.y1));
|
||||||
max_x = max_x.max(Abs::pt(bbox.x0)).max(Abs::pt(bbox.x1));
|
max.x = max.x.max(Abs::pt(bbox.x0)).max(Abs::pt(bbox.x1));
|
||||||
max_y = max_y.max(Abs::pt(bbox.y0)).max(Abs::pt(bbox.y1));
|
max.y = max.y.max(Abs::pt(bbox.y0)).max(Abs::pt(bbox.y1));
|
||||||
cursor = *end;
|
cursor = *end;
|
||||||
}
|
}
|
||||||
CurveItem::Close => (),
|
CurveItem::Close => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Size::new(max_x - min_x, max_y - min_y)
|
Size::new(max.x - min.x, max.y - min.y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,9 +33,10 @@ collaborative editor and run Typst in your browser, no installation required.
|
|||||||
|
|
||||||
If you choose to use Typst on your computer instead, you can download the
|
If you choose to use Typst on your computer instead, you can download the
|
||||||
compiler as a single, small binary which any user can run, no root privileges
|
compiler as a single, small binary which any user can run, no root privileges
|
||||||
required. Unlike LaTeX, packages are downloaded when you first use them and
|
required. Unlike popular LaTeX distributions such as TeX Live, packages are
|
||||||
then cached locally, keeping your Typst installation lean. You can use your own
|
downloaded when you first use them and then cached locally, keeping your Typst
|
||||||
editor and decide where to store your files with the local compiler.
|
installation lean. You can use your own editor and decide where to store your
|
||||||
|
files with the local compiler.
|
||||||
|
|
||||||
## How do I create a new, empty document? { #getting-started }
|
## How do I create a new, empty document? { #getting-started }
|
||||||
That's easy. You just create a new, empty text file (the file extension is
|
That's easy. You just create a new, empty text file (the file extension is
|
||||||
@ -459,7 +460,7 @@ and their corresponding Typst functions.
|
|||||||
| LaTeX Package | Typst Alternative |
|
| LaTeX Package | Typst Alternative |
|
||||||
|:--------------------------------|:-------------------------------------------|
|
|:--------------------------------|:-------------------------------------------|
|
||||||
| graphicx, svg | [`image`] function |
|
| graphicx, svg | [`image`] function |
|
||||||
| tabularx | [`table`], [`grid`] functions |
|
| tabularx, tabularray | [`table`], [`grid`] functions |
|
||||||
| fontenc, inputenc, unicode-math | Just start writing! |
|
| fontenc, inputenc, unicode-math | Just start writing! |
|
||||||
| babel, polyglossia | [`text`]($text.lang) function: `[#set text(lang: "zh")]` |
|
| babel, polyglossia | [`text`]($text.lang) function: `[#set text(lang: "zh")]` |
|
||||||
| amsmath | [Math mode]($category/math) |
|
| amsmath | [Math mode]($category/math) |
|
||||||
@ -550,7 +551,7 @@ $ f(x) = (x + 1) / x $
|
|||||||
to include more than one value in a sub- or superscript, enclose their contents
|
to include more than one value in a sub- or superscript, enclose their contents
|
||||||
in parentheses: `{$x_(a -> epsilon)$}`.
|
in parentheses: `{$x_(a -> epsilon)$}`.
|
||||||
|
|
||||||
Since variables in math mode do not need to be prepended with a `#` or a `/`,
|
Since variables in math mode do not need to be prepended with a `#` or a `\`, unlike LaTeX,
|
||||||
you can also call functions without these special characters:
|
you can also call functions without these special characters:
|
||||||
|
|
||||||
```example
|
```example
|
||||||
@ -580,8 +581,8 @@ their call with a `#`. Nobody can stop you from using rectangles or emoji as
|
|||||||
your variables anymore:
|
your variables anymore:
|
||||||
|
|
||||||
```example
|
```example
|
||||||
$ sum^10_(🥸=1)
|
$ sum^10_(🤓=1)
|
||||||
#rect(width: 4mm, height: 2mm)/🥸
|
#rect(width: 4mm, height: 2mm)/🤓
|
||||||
= 🧠 maltese $
|
= 🧠 maltese $
|
||||||
```
|
```
|
||||||
|
|
||||||
|
BIN
tests/ref/curve-stroke-gradient-sharp.png
Normal file
BIN
tests/ref/curve-stroke-gradient-sharp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 399 B |
Binary file not shown.
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.3 KiB |
@ -130,6 +130,16 @@
|
|||||||
down, up, down, up, down,
|
down, up, down, up, down,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
--- curve-stroke-gradient-sharp ---
|
||||||
|
#set page(width: auto)
|
||||||
|
#let down = curve.line((40pt, 40pt), relative: true)
|
||||||
|
#let up = curve.line((40pt, -40pt), relative: true)
|
||||||
|
|
||||||
|
#curve(
|
||||||
|
stroke: 4pt + gradient.linear(red, blue).sharp(3),
|
||||||
|
down, up, down, up, down,
|
||||||
|
)
|
||||||
|
|
||||||
--- curve-fill-rule ---
|
--- curve-fill-rule ---
|
||||||
#stack(
|
#stack(
|
||||||
dir: ltr,
|
dir: ltr,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user