Documentation

# `h`ElementQuestion markElement functions can be customized with `set` and `show` rules.

Inserts horizontal spacing into a paragraph.

The spacing can be absolute, relative, or fractional. In the last case, the remaining space on the line is distributed among all fractional spacings according to their relative fractions.

## Example

``````First #h(1cm) Second \
First #h(30%) Second \
First #h(2fr) Second #h(1fr) Third
``````

## Mathematical Spacing

In mathematical formulas, you can additionally use these constants to add spacing between elements: `thin`, `med`, `thick`, `quad`, `wide`.

## ParametersQuestion markParameters are the inputs to a function. They are specified in parentheses after the function name.

h() -> content

### `amount`relative or fractionRequiredPositionalQuestion markPositional parameters are specified in order, without names.

How much spacing to insert.

### `weak`boolSettableQuestion markSettable parameters can be customized for all following uses of the function with a `set` rule.

If `true`, the spacing collapses at the start or end of a paragraph. Moreover, from multiple adjacent weak spacings all but the largest one collapse.

Weak spacing in markup also causes all adjacent markup spaces to be removed, regardless of the amount of spacing inserted. To force a space next to weak spacing, you can explicitly write `#" "` (for a normal space) or `~` (for a non-breaking space). The latter can be useful to create a construct that always attaches to the preceding word with one non-breaking space, independently of whether a markup space existed in front or not.

Default: `false`

View example
``````#h(1cm, weak: true)
We identified a group of _weak_
specimens that fail to manifest
in most cases. However, when
#h(8pt, weak: true) supported
#h(8pt, weak: true) on both sides,
they do show up.

Further #h(0pt, weak: true) more,
even the smallest of them swallow
adjacent markup spaces.
``````