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.
|
||||
///
|
||||
/// 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
|
||||
/// ensure that [context] is available.
|
||||
///
|
||||
|
@ -340,7 +340,7 @@ pub struct PageElem {
|
||||
/// This content will overlay the page's body.
|
||||
///
|
||||
/// ```example
|
||||
/// #set page(foreground: text(24pt)[🥸])
|
||||
/// #set page(foreground: text(24pt)[🤓])
|
||||
///
|
||||
/// Reviewer 2 has marked our paper
|
||||
/// "Weak Reject" because they did
|
||||
|
@ -625,7 +625,7 @@ pub struct TableVLine {
|
||||
/// cell(align: left)[🌴🚗],
|
||||
/// cell(
|
||||
/// 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.
|
||||
pub fn bbox_size(&self) -> Size {
|
||||
let mut min_x = Abs::inf();
|
||||
let mut min_y = Abs::inf();
|
||||
let mut max_x = -Abs::inf();
|
||||
let mut max_y = -Abs::inf();
|
||||
let mut min = Point::splat(Abs::inf());
|
||||
let mut max = Point::splat(-Abs::inf());
|
||||
|
||||
let mut cursor = Point::zero();
|
||||
for item in self.0.iter() {
|
||||
match item {
|
||||
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;
|
||||
}
|
||||
CurveItem::Line(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);
|
||||
min = min.min(cursor).min(*to);
|
||||
max = max.max(cursor).max(*to);
|
||||
cursor = *to;
|
||||
}
|
||||
CurveItem::Cubic(c0, c1, end) => {
|
||||
@ -507,17 +499,17 @@ impl Curve {
|
||||
);
|
||||
|
||||
let bbox = cubic.bounding_box();
|
||||
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));
|
||||
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));
|
||||
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));
|
||||
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));
|
||||
cursor = *end;
|
||||
}
|
||||
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
|
||||
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
|
||||
then cached locally, keeping your Typst installation lean. You can use your own
|
||||
editor and decide where to store your files with the local compiler.
|
||||
required. Unlike popular LaTeX distributions such as TeX Live, packages are
|
||||
downloaded when you first use them and then cached locally, keeping your Typst
|
||||
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 }
|
||||
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 |
|
||||
|:--------------------------------|:-------------------------------------------|
|
||||
| graphicx, svg | [`image`] function |
|
||||
| tabularx | [`table`], [`grid`] functions |
|
||||
| tabularx, tabularray | [`table`], [`grid`] functions |
|
||||
| fontenc, inputenc, unicode-math | Just start writing! |
|
||||
| babel, polyglossia | [`text`]($text.lang) function: `[#set text(lang: "zh")]` |
|
||||
| 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
|
||||
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:
|
||||
|
||||
```example
|
||||
@ -580,8 +581,8 @@ their call with a `#`. Nobody can stop you from using rectangles or emoji as
|
||||
your variables anymore:
|
||||
|
||||
```example
|
||||
$ sum^10_(🥸=1)
|
||||
#rect(width: 4mm, height: 2mm)/🥸
|
||||
$ sum^10_(🤓=1)
|
||||
#rect(width: 4mm, height: 2mm)/🤓
|
||||
= 🧠 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,
|
||||
)
|
||||
|
||||
--- 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 ---
|
||||
#stack(
|
||||
dir: ltr,
|
||||
|
Loading…
x
Reference in New Issue
Block a user