# Typst documentation

See [typst.app/docs](https://typst.app/docs) for typst's documentation. \
All typst handouts are based on [`handout@0.1.0`](./lib/typst/local/handout/0.1.0).

The best way to start a new document is to make a copy of an existing one.

-   [Advanced/Tropical Polynomials](./src/Advanced/Tropical%20Polynomials) is a good place to start.
-   [Warm-Ups/Painting](./src/Warm-Ups/Painting) is a good example of tikz-like pictures.

## Notes

-   Typst's equivalent of tikz is cetz ([homepage](https://cetz-package.github.io), [docs](https://cetz-package.github.io/docs/api))
-   Typst handouts are always compiled with solutions. \
    Handouts without solutions are automatically compiled and published at [betalupi.com/handouts](https://betalupi.com/handouts). \
    If you'd like to compile a student handout manually, run the following command in a handout directory:

```bash
typst compile main.typ --package-path ../../../lib/typst --input show_solutions=false
```

Where `package_path` is a relative path to [./lib/typst](./lib/typst).

## Document Options

All typst handouts start with the following:

```typst
#show: handout.with(
  // Should match `meta.toml`
  title: [handout title],

  // Authors
  by: "Mark",

  // Subtitle (optional)
  subtitle: "Based on a handout by Bryant Mathews",

  // Group (optional)
  group: "Advanced 2",
)
```

## Notable commands

-   `#v(1fr)`: Like LaTeX's `\vfill`. Creates whitespace that grows automatically. \
    `fr` means "fraction". `#v(2fr)` will fill twice as much space as `#v(1fr)` on the same page.

## Utilities

-   `#note([content], type: "Note type")`: Makes a note. `type` is optional.
-   `#hint([content])`: Shorthand for `#note([content], type: "Hint")`
-   `#solution([content])`: A pretty box for solutions. Hidden in student handouts.
-   `#examplesolution([content])`: Like `#solution()`, but is never hidden.
-   `#if_solutions([content])`: Shows content only if we are showing solutions.
-   `#if_no_solutions([content])`: Shows content only if we **aren't** showing solutions.

## Sections

High-level sections are denoted with `=`. \
Subsections start with `==`, subsubsections with `===`, and so on. \
**`handout@0.1.0` is only designed to use `=`, subsections might be ugly.**

`handout@0.1.0` also provides the following commands:

-   `problem`
-   `definition`
-   `theorem`
-   `example`
-   `remark`

These all have the same syntax: `#problem("title", label: "label")`

-   `title` is the problem's title, and may be omitted.
-   `label` is the problem's label. This is optional. \
    If a label is provided, this problem can be referenced with `@label`

**Examples:**

-   `#problem()`
-   `#problem("Bonus")`
-   `#problem(label: "gcd")`, which may be referenced with `@gcd`

### Complete example:

```typst
// Import definition(), problem(), etc.
// Must be at the top of each file.
#import "@local/handout:0.1.0": *

// Make a section called "Tropical Cubic Polynomials"
= Tropical Cubic Polynomials

// Make a problem with a label
#problem(label: "imaproblem")
Consider the polynomial $f(x) = x^3 + 1x^2 + 3x + 6$.
- sketch a graph of this polynomial

// Make an untitled problem that references `problem`.
#problem()
Recall @imaproblem.
- use this graph to find the roots of $f$
```
