summaryrefslogtreecommitdiff
path: root/docs/reference/groups.yml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/reference/groups.yml')
-rw-r--r--docs/reference/groups.yml53
1 files changed, 53 insertions, 0 deletions
diff --git a/docs/reference/groups.yml b/docs/reference/groups.yml
index e5aa7e99..c7e3d996 100644
--- a/docs/reference/groups.yml
+++ b/docs/reference/groups.yml
@@ -137,6 +137,59 @@
In addition to the functions listed below, the `calc` module also defines
the constants `pi`, `tau`, `e`, and `inf`.
+- name: std
+ title: Standard library
+ category: foundations
+ path: ["std"]
+ details: |
+ A module that contains all globally accessible items.
+
+ # Using "shadowed" definitions
+ The `std` module is useful whenever you overrode a name from the global
+ scope (this is called _shadowing_). For instance, you might have used the
+ name `text` for a parameter. To still access the `text` element, write
+ `std.text`.
+
+ ```example
+ >>> #set page(margin: (left: 3em))
+ #let par = [My special paragraph.]
+ #let special(text) = {
+ set std.text(style: "italic")
+ set std.par.line(numbering: "1")
+ text
+ }
+
+ #special(par)
+
+ #lorem(10)
+ ```
+
+ # Conditional access
+ You can also use this in combination with the [dictionary
+ constructor]($dictionary) to conditionally access global definitions. This
+ can, for instance, be useful to use new or experimental functionality when
+ it is available, while falling back to an alternative implementation if
+ used on an older Typst version. In particular, this allows us to create
+ [polyfills](https://en.wikipedia.org/wiki/Polyfill_(programming)).
+
+ This can be as simple as creating an alias to prevent warning messages, for
+ example, conditionally using `pattern` in Typst version 0.12, but using
+ [`tiling`] in newer versions. Since the parameters accepted by the `tiling`
+ function match those of the older `pattern` function, using the `tiling`
+ function when available and falling back to `pattern` otherwise will unify
+ the usage across all versions. Note that, when creating a polyfill,
+ [`sys.version`]($category/foundations/sys) can also be very useful.
+
+ ```typ
+ #let tiling = if "tiling" in dictionary(std) {
+ tiling
+ } else {
+ pattern
+ }
+
+ ...
+ ```
+
- name: sys
title: System
category: foundations