Package Information
- Last Updated
- Minimum Typst Version
- 0.13.0
- Authors
- RubixDev
1. Get the package
Download the package using the TPIX CLI:
tpix get @preview/outrageous:0.4.12. Import in your Typst file
Add this to your .typ file:
#import "@preview/outrageous:0.4.1": *Version History
Outrageous
Easier customization of outline entries.
Examples
For the full source see examples/basic.typ and for
more examples see the examples directory.
Default Style

#import "@preview/outrageous:0.4.1"
#show outline.entry: outrageous.show-entry
Custom Settings

#import "@preview/outrageous:0.4.1"
#show outline.entry: outrageous.show-entry.with(
// the typst preset retains the normal Typst appearance
..outrageous.presets.typst,
// we only override a few things:
// level-1 entries are italic, all others keep their font style
font-style: ("italic", auto),
// no fill for level-1 entries, a thin gray line for all deeper levels
fill: (none, line(length: 100%, stroke: gray + .5pt)),
)
Usage
show-entry
Show the given outline entry with the provided styling. Should be used in a show
rule like #show outline.entry: outrageous.show-entry.
#let show-entry(
entry,
font-weight: presets.outrageous-toc.font-weight,
font-style: presets.outrageous-toc.font-style,
vspace: presets.outrageous-toc.vspace,
font: presets.outrageous-toc.font,
fill: presets.outrageous-toc.fill,
gap: presets.outrageous-toc.gap,
fill-right-pad: presets.outrageous-toc.fill-right-pad,
fill-align: presets.outrageous-toc.fill-align,
prefix-transform: presets.outrageous-toc.prefix-transform,
body-transform: presets.outrageous-toc.body-transform,
page-transform: presets.outrageous-toc.page-transform,
state-key: "outline-page-number-max-width",
) = { /* ... */ }
Arguments:
For all the arguments that take arrays, the array's first item specifies the
value for all level-one entries, the second item for level-two, and so on. The
array's last item will be used for all deeper/following levels as well.
entry:content— The
outline.entry
element from the show rule.font-weight:arrayof (strorintorautoornone) —
The entry's font weight. Setting toautoornonekeeps the context's
current style.font-style:arrayof (strorautoornone) — The entry's
font style. Setting toautoornonekeeps the context's current style.vspace:arrayof (relativeorfractionorautoornone)
— The vertical space above the entry. Setting toautoornonekeeps
the context's current setting.font:arrayof (strorarrayorautoornone) — The
entry's font. Setting toautoornonekeeps the context's current font.fill:arrayof (contentorautoornone) — The entry's
fill. Setting toautokeeps the context's current setting.gap:arrayof (lengthorautoornone) — The gap between
the entry's prefix and body. Setting toautokeeps the context's current
setting. Setting tononeis the same as0pt.fill-right-pad:relativeornone— Horizontal space to put
between the fill and page number.fill-align:bool— Whetherfill-right-padshould be relative to
the current page number or the widest page number. Setting this totruehas
the effect of all fills ending on the same vertical line.prefix-transform:functionornone— Callback for custom edits
to the entry's prefix. It gets passed the entry's level (int) and prefix
(content) and should returncontentornone. Ifnoneis returned,
no modifications are made.body-transform:functionornone— Callback for custom edits to
the entry's body. It gets passed the entry's level (int), prefix
(content) and body (content) and should returncontentornone.
Ifnoneis returned, no modifications are made.page-transform:functionornone— Callback for custom edits to
the entry's page number. It gets passed the entry's level (int) and page
number (content) and should returncontentornone. Ifnoneis
returned, no modifications are made.state-key:str— The key to use for the internal state which
tracks the maximum page number width. The state is global for the entire
document and thus applies to all outlines. If you wish to re-calculate the max
page number width forfill-align, then you must provide a different key for
each outline.
Returns: content
presets
Presets for the arguments for show-entry(). You can use them in
your show rule with
#show outline.entry: outrageous.show-entry.with(..outrageous.presets.outrageous-figures).
#let presets = (
// outrageous preset for a Table of Contents
outrageous-toc: (
// ...
),
// outrageous preset for List of Figures/Tables/Listings
outrageous-figures: (
// ...
),
// preset without any style changes
typst: (
// ...
),
)
repeat
Utility function to repeat content to fill space with a fixed size gap.
#let repeat(gap: none, justify: false, body) = { /* ... */ }
Arguments:
gap:lengthornone— The gap between repeated items.justify:bool— Whether to increase the gap to justify the items.body:content— The content to repeat.
Returns: content
align-helper
Utility function to help with aligning multiple items.
#let align-helper(state-key, what-to-measure, display) = { /* ... */ }
Arguments:
state-key:str— The key to use for thestatethat keeps track
of the maximum encountered width.what-to-measure:content— The content to measure at this call.display:function— A callback which gets passed the maximum
encountered width and the width of the current item (what was given to
what-to-measure), both aslength, and should returncontentwhich
can make use of these widths for alignment.
Returns: content