Plugins

Syntax/Embeddings

Embeddings are additions to the standard markdown syntax in An Otter Wiki. They provide capabilities beyond basic markdown, such as special layout elements, enhanced features, and entirely new functionality.
Embeddings are an experimental feature and subject to change.

Usage

An embedding starts with {{EmbeddingName and ends with }}. Between the opening and closing braces you can pass options and args.

Options are key-value pairs separated by | in the form |key=value. Each option starts with a | followed by the key, an = and the value.

Args are any remaining lines that are not options. They form the body content of the embedding and can contain regular markdown.

{{EmbeddingName
|option1=value1
|option2=value2
args content (markdown)
}}

Escaping: Use \| to include a literal | in a key, value, or args. Use \= to include a literal = in a key.

AttachmentList

Display attachments to the current page as list.
{{AttachmentList
|caption=Attachments
|filter=*
|format=full/details/minimal
|icons=true/false
}}

With format you can decide what is displayed in the table: minimal shows only the filenames, details shows filename, date and size, full shows all information.

AttachmentSizeDateAuthorComment
example.pdf110.0KiB2026-03-08 11:26AnonymousAdded AttachmentList documentation.

DataTable

The DataTable Embedding is for turning markdown tables into datatables that can be paginated, search and sorted.
{{datatable
|paging=false
|perPage=42
|searchable=false
|sortable=true
|fixedHeight=True
|caption=Python Stable
| Version | Released   |
| -------:| ---------- |
|    3.13 | 2024-10-07 |
|    3.12 | 2023-10-02 |
|    3.11 | 2022-10-24 |
|    3.10 | 2021-10-04 |
|     3.9 | 2020-10-05 |
|     3.8 | 2019-10-14 |
|     3.7 | 2018-06-27 |
|     3.0 | 2008-12-03 |
}}
Version Released
3.13 2024-10-07
3.12 2023-10-02
3.11 2022-10-24
3.10 2021-10-04
3.9 2020-10-05
3.8 2019-10-14
3.7 2018-06-27
3.0 2008-12-03

CSV attachments can also be rendered as datatables:
{{datatable
|src=data.csv
|delimiter=;
|quotechar="
|header=true
|columns=1,3
|headers=Name,Score
|caption=My Data
}}

Options specific to CSV:

  • src: filename of a CSV attachment on the page
  • delimiter field delimiter, default ;
  • quotechar character used to quote fields, default "
  • header use first row as column headers (default true)
  • columns comma-separated list of columns to include, given as 1-based indices (1 = first column) or header names
  • column0 same as columns, but using 0-based indices (0 = first column); ignored if columns is set
  • headers comma-separated list of column header labels (overrides CSV headers)

Figure

A container for emphasizing content blocks (code, tables, images, etc.) with an optional caption — similar to a LaTeX figure.
{{Figure
|caption=Figure 1: Example Python code
|align=center/left/right
|width=100%
|height=300px
|style=additional inline css
```python
#!/usr/bin/env python
print("Hello, World!")
```
}}
#!/usr/bin/env python
print("Hello, World!")
Figure 1: Example Python code

ImageFrame

Display images in frames on the wiki page.
{{ImageFrame
|caption=An Otter Wiki Logo
|width=30%
|position=right/left
|float=right/left
|text-align=center/left/right/justify
|style=custom css
[![](/static/img/otter.png)](/static/img/otter.png)
}}

Use |src= to embed an attachment directly, with an optional |alt= text:

{{ImageFrame
|caption=An Otter Wiki Logo
|src=otter.png
|alt=The Otter Wiki logo
}}

Use an absolute path to embed an attachment from another page:

{{ImageFrame
|src=/OtherPage/otter.png
}}

External images can be embedded via a full URL:

{{ImageFrame
|src=https://example.com/image.png
|alt=Description
}}
An Otter Wiki Logo

Include

Include (transclude) the content of another page, or a single section of it, into the current page. The included content is rendered inline, seamlessly.
{{include|src=Some/Page}}
{{include|src=Some/Page|section=installation}}
{{include|src=/Absolute/Page|section=installation|children=false|heading=false}}

Options:

  • src: path of the page to include. Relative to the current page unless it starts with / (absolute from the wiki root).
  • section: the anchor slug of the heading to include, matched the same way heading links ([[Page#anchor]]) are generated, independent of the heading level. If omitted the whole page is included.
  • children: include sub-sections of the section (default true). With children=false only the content directly under the heading is included.
  • heading: include the section's own heading line (default true).

Limitations:

  • Relative links and attachments (e.g. ![](image.png)) in the included content resolve against the including page, not the source page, so they may break. Use absolute paths (/Source/Page/image.png) in content that is meant to be included.
  • Headings from included content do not appear in the including page's table of contents.
  • Combining a stateful embedding such as DataTable with an include on the same page may leave the page's own DataTable uninitialised. Put such embeddings on separate pages.
  • Includes are limited to a nesting depth of 8, and include cycles (a page including itself, directly or indirectly) are detected and reported instead of being expanded.

InfoBox

An element for displaying structured data in a document.
{{InfoBox
|caption=Some Caption
|position=right/left
|float=right/left
|width=35%
|text-align=justify
|style=additional inline css
|Random Key=Value
|Answer=42
|Homepage=[otterwiki.com](https://otterwiki.com)
Lorem _ipsum_ dolor sit **amet**, consectetur
adipiscing elit.
```python
#!/usr/bin/env python
markdown=True
```
}}

Note: On small screens the box automatically expands to full width regardless of the width option. The optional |style= allows additional inline CSS overrides.

Some Caption
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
#!/usr/bin/env python
markdown=True
Random KeyValue
Answer42
Homepageotterwiki.com

PageIndex

Display a page index listing pages below the current page, optionally filtered by a glob pattern.
{{PageIndex
|src=*
|style=pageindex/list
|toc=true/false
|toggle=true/false
}}

Options:

  • src: glob pattern to filter pages by title (default *, matches all pages)
  • style: pageindex for the default letter-grouped layout, list for a plain unordered list (default pageindex)
  • toc: show page headings (default false; for style=list headings are rendered as nested sublists)
  • toggle: show the toggle for the page headings (default true, ignored for style=list)

Video

Embed a video player that supports video and audio playback in your document, or embed a YouTube video by providing a YouTube URL.
{{Video
|width=10%
|muted=false/true
|controls=true/false
|autoplay=false/true
|loop=false/true
|src=/full/path/to/video.mp4
/alternative/full/path/to/video.mp4
}}

YouTube URLs (youtube.com/watch?v=… or youtu.be/…) are rendered as embedded iframes:

{{Video
|width=100%
|muted=false/true
|controls=true/false
|autoplay=false/true
|loop=false/true
https://www.youtube.com/watch?v=dQw4w9WgXcQ
}}

Plugins Syntax/Embeddings AttachmentList DataTable Figure ImageFrame Include InfoBox PageIndex Video
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9