Outlines

Outlines

Lots of outlines examples are already available in official reference

Table of contents

#outline()

= Introduction
#lorem(5)

= Prior work
#lorem(10)
Rendered image

Outline of figures

#outline(
  title: [List of Figures],
  target: figure.where(kind: table),
)

#figure(
  table(
    columns: 4,
    [t], [1], [2], [3],
    [y], [0.3], [0.7], [0.5],
  ),
  caption: [Experiment results],
)
Rendered image

You can use arbitrary selector there, so you can do any crazy things.

Ignore low-level headings

#set heading(numbering: "1.")
#outline(depth: 2)

= Yes
Top-level section.

== Still
Subsection.

=== Nope
Not included.
Rendered image

Set indentation

#set heading(numbering: "1.a.")

#outline(
  title: [Contents (Automatic)],
  indent: auto,
)

#outline(
  title: [Contents (Length)],
  indent: 2em,
)

#outline(
  title: [Contents (Function)],
  indent: n => [] * n,
)

= About ACME Corp.
== History
=== Origins
#lorem(10)

== Products
#lorem(10)
Rendered image

Replace default dots

#outline(fill: line(length: 100%), indent: 2em)

= First level
== Second level
Rendered image

Make different outline levels look different

#set heading(numbering: "1.")

#show outline.entry.where(
  level: 1
): it => {
  v(12pt, weak: true)
  strong(it)
}

#outline(indent: auto)

= Introduction
= Background
== History
== State of the Art
= Analysis
== Setup
Rendered image

Long and short captions for the outline

// author: laurmaedje
// Put this somewhere in your template or at the start of your document.
#let in-outline = state("in-outline", false)
#show outline: it => {
  in-outline.update(true)
  it
  in-outline.update(false)
}

#let flex-caption(long, short) = context if in-outline.get() { short } else { long }

// And this is in the document.
#outline(title: [Figures], target: figure)

#figure(
  rect(),
  caption: flex-caption(
    [This is my long caption text in the document.],
    [This is short],
  )
)
Rendered image

Ignore citations and footnotes

That's a workaround a problem that if you make a footnote a heading, its number will be displayed in outline:


= Heading #footnote[A footnote]

Text

#outline() // bad :(

#pagebreak()
#{
  set footnote.entry(
    separator: none
  )
  show footnote.entry: hide
  show ref: none
  show footnote: none

  outline()
}
Rendered image
Rendered image