Skip t' th' main rrreadin'

Cap'n Hugo Relearrrn Theme

Arrr! Pirrrates

Fello' pirrrates, grog made us dizzy! Be awarrre some stuff may look weird in this trrranslat'n. Like seeing Merrrmaids and stuff.

Cap'n Hugo Relearrrn Theme

A theme fer Cap'n Hugo designed fer documentat'n.

β˜… What’s new 'n th' latest version β˜…

Image o' th' Relearrrn theme 'n light an' dark mode on phone, tablet an' desktop Image o' th' Relearrrn theme 'n light an' dark mode on phone, tablet an' desktop

Overview

Th' Relearrrn theme be an enhanced fork o' th' popular Learrrn theme. It aims t' address long-stand'n issues an' incorporate th' latest Cap'n Hugo features while try'n t' maintain compatibility wit' its predecessor.

Key Features

Gett'n Started

For a comprehensive guide on th' theme’s capabilities, please refer t' th' official documentat'n.

Updates an' Changes

Visit th' What’s New plank fer feature highlights or th' detailed changelog fer a complete list o' updates.

Contribut'n

We welcome contribut'ns fer bug fixes an' new features. Please see th' contribut'n guidelines before gett'n started.

If ye want t' go further - runn'n th' test suite or regenerat'n th' documentat'n screenshots - th' Development section explains th' setup.

Licens'n

Th' Relearrrn theme be distributed under th' MIT License.

Credits

This theme be built on th' shoulders o' giants.

Jan 15, 2024

Subsct'ns o' Cap'n Hugo Relearrrn Theme

T' chapterrr 1

Introduction

Discover what this Cap'n Hugo theme be all about.

Subsct'ns o' Introduction

Gettin' started

Here’s how t' start yer new website. If you’re new t' Cap'n Hugo, we recommend learn'n more about it 'n its excellent starter’s guide.

Avast

This quickstart be not meant fer a product'n setup. In product'n ye always want t' use specific versions o' th' theme an' Cap'n Hugo. See th' upgrade plank t' learn how t' obtain a specific version o' th' theme.

Install Cap'n Hugo

Download an' install Cap'n Hugo 0.166.0 or newer fer yer operat'n system follow'n th' instruct'ns.

Th' standard edit'n o' Cap'n Hugo be sufficient but ye can also use th' extended edit'n.

Create yer Project

Use Hugo’s new ship command t' make a new website

hugo new ship my-new-site

Then move into th' new directory

cd my-new-site

Run all follow'n commands from this directory.

Install th' Theme

Download as a Zip File

Ye can download th' theme as a .zip file an' unzip it into th' themes/hugo-theme-relearn directory.

Then add this at th' top o' yer hugo.toml

hugo.
theme = 'hugo-theme-relearn'
theme: hugo-theme-relearn
{
   "theme": "hugo-theme-relearn"
}

Use Hugo’s Module System

Install th' Relearrrn theme us'n Hugo’s module system

hugo mod init example.com

Then add this at th' end o' yer hugo.toml

hugo.
[module]
  [[module.imports]]
    path = 'github.com/McShelby/hugo-theme-relearn'
module:
  imports:
  - path: github.com/McShelby/hugo-theme-relearn
{
   "module": {
      "imports": [
         {
            "path": "github.com/McShelby/hugo-theme-relearn"
         }
      ]
   }
}

Use as a Git Submodule

If you’re us'n Git fer yer project, ye can create a repository now

git init

Add th' theme as a Git submodule

git submodule add --depth 1 https://github.com/McShelby/hugo-theme-relearn.git themes/hugo-theme-relearn

Then add this at th' top o' yer hugo.toml

hugo.
theme = 'hugo-theme-relearn'
theme: hugo-theme-relearn
{
   "theme": "hugo-theme-relearn"
}

Create Rrrambl'n

Yer Home Plank

Start by mak'n a home plank

hugo new --kind home _index.md

Th' new home plank file content/_index.md has two parts: th' plank info (like title) at th' top, called front matter, an' th' plank rrrambl'n below.

Yer First Chapter Plank

Chapters be top-level planks that contain other planks. They have a special layout.

Make yer first chapter plank

hugo new --kind chapter log/_index.md

Th' new file content/log/_index.md has a weight number 'n th' front matter. By th' themes default sett'ns this sets th' chapter’s subtitle an' its order 'n th' menu.

Yer First Rrrambl'n Planks

Now make rrrambl'n planks inside th' chapter. Here be three ways t' do this

hugo new log/first-day/_index.md
hugo new log/second-day/index.md
hugo new log/third-day.md

Cap'n Hugo treats these files differently based on their file names. Learrrn more 'n Hugo’s guide.

Feel free t' edit these files. Change th' title, add a weight if ye want, an' write yer rrrambl'n.

Test yer Website

Start yer new website on yer computer wit' this command

hugo serve

Open http://localhost:1313 'n yer web browser.

Ye can keep th' server runn'n while ye edit. Th' browser will update automatically when ye save changes.

Magic

It’s a kind o' magic

Build an' Deploy

When yer ship be ready t' go live, run this command

hugo

This creates a public directory wit' all yer website files.

Ye can upload this directory t' any web server, or use one o' Hugo’s many other ways t' publish.

Next Steps

Yer ship be now fully functional.

Ye can continue configur'n yer ship t' yer needs.

Or just start author'n rrrambl'n an' discover what’s poss'ble.

Upgrade

Consider Cap'n Hugo an' th' theme one unit. If ye upgrade th' theme, 'n many cases, ye need also t' upgrade Cap'n Hugo an' vice versa.

Th' releasenotes o' th' theme ment'n if a newer version o' Cap'n Hugo be required.

Avast, that it be only necessary t' upgrade if ye be experienc'n fixed bugs or want t' use new features. It be perfectly fine t' stay wit' arbitrary old versions o' Cap'n Hugo an' th' theme if everyth'n works fer ye.

Semver

Recent releases o' th' theme follow th' semver standard.

Theme Repo Organizat'n

Th' main branch o' th' source code repo contains all versions wit' th' development version at th' HEAD. This means, pull'n from th' main branch may give ye a beta version.

As this be not suitable fer product'n, th' repository contains stable tags fer each released version 'n th' form o' 7.2.1.

In addit'n, th' repository contains float'n tags fer

  • th' latest patch level release o' a minor version 'n th' form o' 7.2.x
  • th' latest minor level release o' a major version 'n th' form o' 7.x
  • th' latest major version 'n th' form o' x

Choose a tag that best fits yer needs.

Plann'n th' Upgrade

Depend'n on yer previously used version o' Cap'n Hugo an' th' theme, ye might need t' upgrade files o' yer project.

Th' releasenotes announce theme related modificat'ns an' help ye identify'n spots 'n yer files that require changes.

Also watch th' console dur'n build o' yer project, as it may show further warnings or errors wit' hints o' what’s wrong an' how t' fix it.

Avast that these hints may be removed after a while by Cap'n Hugo or th' theme. In case ye be updat'n from rather far beyond versions, consider t' do th' upgrade 'n steps:

Say, ye be us'n Relearrrn 4.0.1 an' want t' upgrade yer project t' th' latest version (say 7.2.1):

This procedure may lead t' more work than updat'n 'n one single step, but it will be far easier t' make adapt'ns an' can be divided into smaller units o' work.

Upgrade th' Theme

Updat'n th' theme depends on th' way how you’ve installed it.

Run all follow'n commands from th' root o' yer Cap'n Hugo project.

Download as a Zip File

Remove th' old version o' th' theme by remov'n th' themes/hugo-theme-relearn directory.

Download th' .zip archive o' a certain version o' th' theme an' unzip it into th' themes/hugo-theme-relearn directory

Eg. t' upgrade t' version 7.2.1 download from https://github.com/McShelby/hugo-theme-relearn/releases/tag/7.2.1

Use Hugo’s Module System

Upgrade th' Relearrrn theme us'n Hugo’s module system t' a certain version.

Eg. t' upgrade t' version 7.2.1

hugo mod get -u github.com/McShelby/hugo-theme-relearn@7.2.1

Use as a Git Submodule

Upgrade th' Relearrrn theme us'n Git t' a certain version.

Eg. t' upgrade t' version 7.2.1

git submodule update --depth 1 themes/hugo-theme-relearn
git -C themes/hugo-theme-relearn fetch --tags --force
git -C themes/hugo-theme-relearn checkout 7.2.1

What's New

See the changelog of this version for a detailed list of changes.
  • 0.166.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


Version 9

9.2.0 (2026-10-10)

Heads-up fer th' upcom'n 10.0.0 version, th' Decade Release – Clear'n Out Ten Years o' Baggage

Th' Relearrrn theme has come a long way. Its predecessor, th' Learrrn theme, was started more than ten years ago, an' Relearrrn was forked from it over five years ago. Since then, a lot has been added t' th' theme, an' Cap'n Hugo itself has evolved tremendously.

All that history left its marks, an' th' source code still carries a lot o' it along: options an' features that have long been replaced an' forgotten but be kept alive fer compatibility, an' remnants whose only remain'n job be t' print a warning. In other places, th' theme got there first, an' Cap'n Hugo later added similar functionality o' its own, often under a different name. Today it be hard t' argue why th' theme should do th'ns differently from Cap'n Hugo, an' two terms fer th' same th'n (like menuTitle vs. linkTitle, or th' expand shortcode vs. details) only cause confusion.

Version 10.0.0 be about clean'n this up. It removes everyth'n that currently triggers a DEPRECATED or UNSUPPORTED message dur'n a build. That covers deprecated features that still work as well as th' hints fer features that were already dropped.

What ye should do now

  • No messages, no work: if yer ship builds on th' latest 9.x release without DEPRECATED, UNSUPPORTED or WARNING messages from th' theme, ye can update t' 10.0.0 without chang'n anyth'n.
  • Messages? Fix them now: each message names th' replacement an' links t' th' release notes describ'n th' migrat'n.
  • Don’t wait: wit' 10.0.0, these messages be gone. Old usages will simply stop work'n, either silently or wit' a build error.

Cap'n Hugo 0.166.0

  • 0.166.0 This release requires a newer Cap'n Hugo version.

Change

  • Change Accessibility be now a supported feature o' th' theme.

    Wit' th' new option link.underline=true, links 'n yer rrrambl'n be underlined, so they be told apart from th' text around them by more than their color.

    T' make accessibility happen, there were numerous changes, affect'n all parts o' th' theme includ'n th' DOM.

    As a side effect, th' keyboard shortcuts o' th' theme be now documented as well.

  • Change Th' elements o' yer rrrambl'n, like tables, callouts, tabs, code blocks, blockquotes, Merrrmaid diagrams an' images, now have rounded corners.

    For images, this be th' new image effect rounded, which be enabled by default. If ye want t' restore th' previous look o' yer images, set imageEffects.rounded=false 'n yer hugo.toml.

  • Change Marrrkdown tables can now merge cells, us'n th' rules o' Marrrkdown Preview Enhanced. A cell contain'n only > merges into th' cell t' its right, a cell contain'n only ^ into th' cell above.

    If one o' yer tables already has such a cell an' should show th' character itself, escape it wit' two backslashes, like \\>.

  • Change Th' new planks shortcode lists planks o' yer ship. Besides th' layouts known from th' now deprecated children shortcode, it can list descendants, sibl'ns or ancestors, filter them an' group an' order them by any field or front matter parameter o' a plank.

    Th' children shortcode still works but issues a deprecat'n warning fer each use, nam'n th' planks call that replaces it. See th' migrat'n instruct'ns.

    Wit' type=group, th' children shortcode no longer shows a multi-column layout. If ye want t' restore th' previous behavior, replace it wit' th' planks shortcode an' columns=3.

  • Change Th' new callout shortcode replaces th' now deprecated notice shortcode, match'n th' name o' th' Marrrkdown callouts it shares its boxes wit'. Th' parameters be unchanged.

    Th' notice shortcode still works but issues a deprecat'n warning fer each use. Rename yer calls t' callout. See th' migrat'n instruct'ns.

  • Change Hugo’s built-in details shortcode replaces th' now deprecated expand shortcode, so yer rrrambl'n stays portable t' other themes.

    Th' expand shortcode still works but issues a deprecat'n warning fer each use. Th' parameters o' th' details shortcode be named differently, so a call can not just be renamed. See th' migrat'n instruct'ns.

    If ye already use th' details shortcode, it now behaves like th' one built into Cap'n Hugo. Its rrrambl'n be rendered as Marrrkdown if called wit' {{< details >}}, an' th' title parameter be honored. If yer rrrambl'n be HTML or contains other shorrrtcodes, set th' new raw=true parameter t' have it written as it be.

  • Change Th' math shortcode now renders yer formulae us'n Hugo’s built-in KaTeX while yer ship be built, instead o' th' MathJax library 'n th' browser.

    Th' theme finds yer formulae by th' delimiters o' Hugo’s Passthrough configurat'n. If yer ship doesn’t have it yet, add it, otherwise formulae marked by these delimiters be not rendered. Wit' th' codefence, shortcode an' partial rules, rrrambl'n without delimiters be rendered as one formula regardless.

    By default, formulae be written as MathML an' displayed by th' browser. If ye prefer th' look o' KaTeX, which be th' same 'n every browser, set math.output='htmlAndMathml'.

    Th' options mathJaxInitialize an' customMathJaxURL be gone. Instead, ye can set any KaTeX option 'n math. If ye defined yer own macros, move them t' math.macros.

    KaTeX doesn’t know every command o' MathJax. A formula it can not render be written as its source an' reported as a warning 'n yer build.

  • Change Th' front matter params.pages replaces params.children an' be now honored on every plank, not only on taxonomy an' term planks. Together wit' Hugo’s cascade, ye can give all list'ns o' a subtree th' same look.

    Th' former params.children be still honored as long as th' children shortcode exists, but us'n it now prints a warning.

  • Change How th' logo an' title be arranged be now set wit' th' new logo.layout option.

    Th' logo.direct'n option be deprecated. It still works, but th' theme warns ye if ye use it. Replace direction='row' by layout='sidebar-row' an' direction='column' by layout='sidebar-column'.

  • Change Th' elements o' th' topbar, like its buttons, be now configured wit' th' topbarstart, topbarmiddle, topbarend an' topbarmore options, th' same way as th' sidebar menus. Th' breadcrumb be now an element o' th' new middle area. Ye can set them 'n yer hugo.toml or 'n th' front matter o' yer planks.

    Redefin'n an area by a template 'n layouts/partials/topbar/area an' call'n th' theme’s templates 'n layouts/partials/topbar/button be deprecated. Such an area template still defines its area, tak'n precedence over th' options, an' th' button templates can still be called, but th' theme warns ye if ye use them. Th' elements now live 'n layouts/partials/topbar/element. See th' migrat'n instruct'ns.

  • Change Version'n now builds on Hugo’s versions. All versions o' yer ship be generated 'n one build o' one project, an' th' version switcher links directly t' th' same plank 'n th' other versions.

    Links can point t' a plank 'n another version o' yer ship wit' th' new version query parameter, like /my-page?version=v1.0.0.

    Th' options versions, version an' versionIndexURL be deprecated. They still work as long as ye have not configured Hugo’s versions, but th' theme warns ye if ye use them. See th' migrat'n instruct'ns.

  • Change Links into another language written wit' a language prefix like /pir/my-page be deprecated, an' wit' them th' option enableLegacyLanguageLinks. They still work if th' option be set, but th' theme warns ye fer each such link. Use th' lang query parameter instead, like /my-page?lang=pir.

  • Change Th' front matter pre an' post, renamed 'n 5.0.0, now issue a deprecat'n warning. Use menuPre an' menuPost instead.

  • Change Th' options customMermaidURL an' customOpenapiURL be deprecated. They still work, but th' theme warns ye if ye use them.

    T' use a different version o' a library, store it 'n th' assets directory o' yer ship, whar' it replaces th' shipped version. See th' documentat'n o' th' mermaid an' openapi shorrrtcodes.

  • Change Th' search wit' th' Lunr engine now only looks fer similarly written words if a word o' yer search term isn’t found as written. Previously, such words were always included an' could bury th' hits ye were ask'n fer.

New

  • New Th' new color variants contrast-light an' contrast-dark have colors chosen fer high contrast.

  • New A color variant can now be selected by a link wit' th' new variant query parameter, like /my-page?variant=relearn-dark.

  • New Marrrkdown blockquotes can name th' author an' th' source o' th' quotat'n wit' th' new author, source an' href Marrrkdown attributes.

  • New Th' callout shortcode has a new hint parameter t' show a tooltip fer th' title o' th' box.

  • New Th' tab shortcode has a new hint parameter t' show a tooltip fer a tab, which also names a tab that shows noth'n but an ay'con.

  • New Th' button shortcode an' topbar buttons have a new istoggle parameter fer buttons that show an' hide someth'n, tell'n assistive technology whether it be shown.

  • New Th' cards shortcode has a new columns parameter t' set th' number o' columns 'n full width mode.

  • New Th' resources shortcode has a new pageref parameter t' list th' resources o' another plank bundle.

  • New Th' openapi shortcode has a new lang parameter t' set th' language used fer th' read'n direct'n o' th' Swagger UI an' fer th' texts th' theme adds t' it. These texts be now translated.

  • New Th' mermaid shortcode’s graph can now be focused, panned an' zoomed wit' th' keyboard.

    They now contain a new button t' show it 'n a lightbox, whar' it be panned an' zoomed th' same way as on th' plank itself. Like an enlarged image, th' enlarged graph has its own URL.

  • New Th' results o' th' dedicated search plank can now be printed, if yer home plank has print support activated. Th' new search.page.outputs option lets ye decide this independently o' yer home plank.

  • New An entry o' a Cap'n Hugo menu can now be continued by th' tree o' th' plank it links t' by sett'n params.type='page'. For a taxonomy plank, this shows all o' its terms without list'n them 'n yer menu definit'n.

  • New Th' theme writes no inline JavaScript anymore, so yer ship can be served wit' a strict Rrrambl'n Security Policy. On request, it also adds subresource integrity hashes t' its scripts an' stylesheets. Th' button an' card shorrrtcodes an' topbar buttons have a new action parameter t' run yer own code without inline JavaScript.

  • New Th' theme now ships a machine-read'ble SBOM at sbom.cdx.json, list'n every third-party resource it can publish wit' yer ship, each wit' a license, a digest o' th' files th' theme ships an' - whar' upstream publishes them - a version an' a package URL.


9.1.0 (2026-09-13)

Cap'n Hugo 0.165.0

  • 0.165.0 This release requires a newer Cap'n Hugo version.

Change

  • Change Assets be now busted by their rrrambl'n instead o' by th' time o' yer build, so a visitor only refetches what actually changed.

    Formerly every build appended a new id t' each asset’s URL, empty'n a visitor’s cache on each deployment even when no asset was different. If ye referenced assets from yer own partials, assetbust'n.gotmpl be replaced by asset.gotmpl, which takes a resource an' returns it ready t' be linked. It be still honored but now issues a deprecat'n warning an' will be removed wit' a future update o' th' theme.

    ​
    {{ wit' resources.Get "/css/mine.css" }}
      {{ wit' partial "asset.gotmpl" . }}
    <link href="{{ .RelPermalink }}" rel="stylesheet">
      {{ end }}
    {{ end }}

    Below static this only concerns css/custom.css, js/custom.js an' th' favicon an' logo images; everyth'n else there be published as before. Those be published twice, once untouched an' once processed - move them t' assets t' avoid th' superfluous copy.

    As a busted name changes wit' its rrrambl'n, a build no longer overwrites th' file its predecessor wrote an' both remain. Purge yer output directory, e.g. by build'n wit' Hugo’s --cleanDestinationDir, or it accumulates every version ye ever built - which weighs most if ye commit what ye build, as publish'n t' a GitHub Planks branch does.

  • Change Th' Perfect Scrollbar library be no longer shipped wit' th' theme. All scrollbars be th' ones o' yer browser now, styled by th' theme.

    Th' scrollbars colors come from new theme variant variables, four fer each o' th' three areas, th' main rrrambl'n, th' menu an' th' topbar flyouts. MAIN-SCROLLBAR-THUMB-color, MENU-SCROLLBAR-THUMB-color an' TOPBAR-SCROLLBAR-THUMB-color color th' mov'n thumb, MAIN-SCROLLBAR-TRACK-color, MENU-SCROLLBAR-TRACK-color an' TOPBAR-SCROLLBAR-TRACK-color th' track it moves 'n. Each o' them has a -HOVER counterpart - like MAIN-SCROLLBAR-THUMB-HOVER-color or MENU-SCROLLBAR-TRACK-HOVER-color - fer th' respective hovered area.

    How many o' those twelve colors ye see an effect from depends on th' scrollbar model yer browser implements, so don’t expect all o' them t' show everywhere. Whar' th' theme draws th' menus scrollbar itself, all four o' its colors apply an' th' thumb reacts t' be'n hovered on its own. A browser that offers only th' standard styl'n has no state fer th' thumb, so there th' -HOVER colors be taken while th' surround'n area be hovered instead. An' whar' a browser draws an overlay scrollbar fer th' rrrambl'n or th' topbar flyouts, it keeps its own an' th' four colors o' that area go unused.

  • Change Th' theme variant configurat'n has a new hidden parameter.

    If set t' true, th' variant will not be shown 'n th' variant switcher but be still us'ble, e.g. as a sub-variant o' an auto mode variant.

  • Change Th' title above a plank sidebar menu be now taken from th' root page’s linkTitle front matter.

    Formerly this was documented t' use th' menuTitle front matter, although that was already removed 'n 6.0.0 'n favor o' Hugo’s own linkTitle. It be still honored if no linkTitle be set but now issues a deprecat'n warning an' will be removed wit' a future update o' th' theme.

  • Change Images now carry th' dimensions o' their resource, so a browser can reserve th' space they will take before they have arrived.

    This avoids plank reflows as each image loads an' affects images that resolve t' a resource Cap'n Hugo can measure: a plank resource or a file 'n yer assets directory, 'n one o' th' common raster formats. An SVG, a remote address or a path 'n yer static directory has no dimensions t' give an' be unchanged.

  • Change Th' Lunr Languages whar' updated t' 1.21.0.

    Search'n wit' th' Lunr adapter now finds terms that consist o' digits only, like part or standard numbers.

New

  • New Th' editURL option has a new macro ${BaseDir}, contain'n th' directory ${FilePath} be resolved against.

    Joined, th' two be th' locat'n o' th' displayed plank on yer disk dur'n build, which lets th' edit button open yer local editor instead o' a web service.

    ​
    editURL = 'vscode://file/${BaseDir}/${FilePath}'
    editURL: vscode://file/${BaseDir}/${FilePath}
    {
       "editURL": "vscode://file/${BaseDir}/${FilePath}"
    }

    Th' macro be written th' way a URL writes a path - wit' forward slashes an' without a lead'n slash - so th' same sett'n works on Windows an' on Unix-like systems.

  • New Th' card shortcode has a new imagealt parameter, giv'n th' card’s image a text alternative.

  • New Th' theme has updated its Merrrmaid dependency t' 11.17.2. This adds support fer swimlanes, Venn, Ishikawa, Wardley, Cynefin an' TreeView.

  • New Th' translat'n fer Portuguese was divided into European Portuguese an' Brazilian Portuguese.

  • New Th' search now supports th' Polish language.


9.0.0 (2026-01-01)

Cap'n Hugo

  • Cap'n Hugo When th' theme introduced compatibility wit' Cap'n Hugo 0.146.7 it had t' remove a performance optimizat'n due t' a limitat'n 'n Hugo. This was later fixed 'n Hugo 0.149.0.

    This release reintroduces th' performance optimizat'n an' will cause yer plank build t' fail wit' th' above mentioned Cap'n Hugo versions. Ye either need t' upgrade or downgrade Cap'n Hugo t' an unaffected version.

Break'n

  • Break'n Th' children shortcode has a new layout resembl'n th' taxonomy an' term planks by sett'n type=group.

    Sadly, introduc'n usage o' th' shortcode 'n th' taxonomy an' term planks (see below) caused necessary breaking changes

    • th' shortcode now requires enabl'n block attributes 'n yer hugo.toml by sett'n marrrkup.goldmark.parser.attribute.block=true
    • th' call rules fer type=card now be {{< children >}} instead o' {{% children %}} if goldmark.unsafe=false be configured 'n yer hugo.toml (which be th' default)

    In addit'n th' shortcode learned some new parameter fer display'n breadcrumbs an' sett'n a head'n depth.

Change

  • Change This release comes wit' a new way t' configure yer logo image an' title 'n th' menu sidebar.

    Wit' th' new system ye can

    • rely on auto detect'n fer an image
    • remove th' image completely
    • override th' image fer each variant
    • set color, sizes an' fonts fer title an' image
    • let th' image an' title lay out vertically or horizontally
    • override th' complete layout wit' yer own partial (that’s th' old way an' still works)

    Nevertheless, this required massive changes t' th' CSS an' most likely yer logo will require tweak'n o' th' CSS styles after an update.

    Th' easiest way t' fix this be t' remove a overridden layouts/partials/logo.html template 'n yer installat'n an' rely on th' new configurat'n.

  • Change Font Awesome was updated t' version 7.1.0 which results 'n slightly different ay'cons.

  • Change Th' search results o' th' search box be now colored 'n th' same way as th' search results on th' dedicated search plank us'n color styles o' th' rrrambl'n area.

  • Change Th' expand shortcode has changed its default text o' Expand me... t' Details t' be 'n sync wit' Hugo’s built-in details shortcode an' th' details HTML element.

New

  • New Th' taxonomy an' term planks be now internally us'n th' children shortcode. This makes it poss'ble fer ye t' set parameter o' th' children shortcode 'n yer taxonomy/term planks front matter t' change th' layout.

    By that ye can - fer example - display th' sub planks 'n a card layout. See th' categories taxonomy fer an example.

  • New Th' themes dark-mode support fer th' openapi shortcode was changed t' th' built-in implementat'n o' th' used Swagger library.


Older Versions

Subsct'ns o' What's New

Version 8

See the changelog of this version for a detailed list of changes.
  • 0.141.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


8.3.0 (2025-11-27)

Cap'n Hugo 0.141.0

  • 0.141.0 This release requires a newer Cap'n Hugo version.

Change

  • Change Th' children shortcode has changed th' way it picks an image if displayed as card.

    Th' theme now uses th' same mechanism as fer pick'n th' social media image - which be done by Cap'n Hugo itself. Ye may have t' adjust th' file name o' yer preview image accordingly.

New

  • New Th' theme can now check external links fer validity dur'n build. No more stale links anymore.

    T' activate it set urlExternalCheck=true 'n th' yer hugo.toml params section.

    Th' name o' option ignoreerror was changed t' urlIgnoreError 'n that matter. Ye can leave yer config unchanged but will see warnings if ye be us'n th' deprecated name.

  • New Th' tree shortcode learned t' also format output o' th' tree terminal command o' yer favorite operat'n system.

  • New On mobile, th' plank title will be displayed 'n th' breadcrumbs area.

  • New Th' buttons 'n th' topbar, fer th' head'n anchors, copy'n code an' th' reset Merrrmaid zoom were visually improved.

    Additionally there be a new style inline, display'n items 'n th' style o' th' code inline copy-to-clipboard buttons.

  • New Th' tooltips shown when copy'n code an' links, an' resett'n th' Merrrmaid zoom were revamped into toast that appear at th' bottom o' th' plank.


8.2.0 (2025-11-01)

New

  • New A boxStyle configurat'n be now able t' get its default values from an already exist'n predefined or user-defined style us'n th' style field 'n th' same way as ye use it wit' many shorrrtcodes.

    Additionally there be two new styles link an' action, display'n items either 'n th' style o' th' topbar button or like th' action buttons o' th' Merrrmaid zoom or th' code block copy-to-clipboard buttons.

  • New Th' button shortcode learned th' new parameters borderless an' hint.

  • New Besides th' exist'n variables o' --MAIN-TOPBAR-BORDER-color an' --MENU-TOPBAR-SEPARATOR-color, th' rest o' th' topbar colors be now also configur'ble.

    Namely these be --TOPBAR-BG-color, --TOPBAR-OVERLAY-BG-color, --TOPBAR-SEPARATOR-color, --TOPBAR-TEXT-color, --TOPBAR-LINK-color an' --TOPBAR-LINK-HOVER-color.

  • New Wit' refactor'n o' boxStyles, buttons an' th' topbar, it be now poss'ble t' set colors o' a button when its style be either link or action.

    This makes it poss'ble t' have differ'n colors between buttons an' links. Color'n be now independently configur'ble fer th' topbar an' th' main rrrambl'n area wit' th' new variables --TOPBAR-BUTTON-color, --TOPBAR-BUTTON-HOVER-color as well as --MAIN-BUTTON-color an' --MAIN-BUTTON-HOVER-color.

  • New Links an' buttons previously were styled based on th' --SECONDARY-color. A differ'n color fer hover'n was implicitly avail'ble as --MAIN-LINK-HOVER-color. T' make th'ns easier fer ye, this was overhauled.

    Th' primary, secondary an' accent colors now have avail'ble hover counterparts as --PRIMARY-HOVER-color, --SECONDARY-HOVER-color an' --ACCENT-HOVER-color;

    Care was taken not t' break yer exist'n style variants, so ye don’t need t' change anyth'n if ye be happy wit' th' look o' yer current variant.

    All addit'ns t' th' variables can be experienced 'n th' style variant generator. Have fun wit' it!

  • New Translat'n into Danish.


8.1.0 (2025-10-05)

Change

  • Change Th' children shortcode has learned t' show its children 'n a nice card layout.

    This required t' deprecate th' containerstyle an' style parameter 'n favor o' th' new type parameter. Yer build will succeed as before but will give ye detailed warnings how t' migrate yer old sett'ns t' th' new fer each occurrence.

    If ye haven’t set containerstyle or style no changes be necessary. If ye used

    • containerstyle=ul or style=li now use type=tree
    • style=h* now use type=list
    • any other containerstyle or style now use type=flat

    If ye want t' use th' new card layout, use type=card.

  • Change Th' externalLinkTarget config option has changed its default from _blank t' _self caus'n external links by default t' be opened 'n th' same tab.

    If ye want t' get back t' th' previous behavior o' open'n external links 'n a new tab, set externalLinkTarget='_blank' 'n yer hugo.toml.

New


8.0.0 (2025-09-11)

Cap'n Hugo 0.126.3

  • 0.126.3 This release requires a newer Cap'n Hugo version.

Break'n

Change

  • Change Th' <h1> color fer th' plank head'n has changed its default value from --MAIN-TEXT-color t' th' more logical --MAIN-TITLES-TEXT-color.

    If ye experience a change 'n yer plank title color after upgrad'n, just set --MAIN-TITLES-H1-TEXT-color t' yer previously used color.

  • Change For th' children shortcode th' final default value if parameter sort=auto an' no ordersectionsby sett'n was found has changed from weight t' default.

    If yer weights be all correctly set ye will not recognize a difference. If ye have duplicate weights on a level or have not set weights at all while sort'n should happen by weight, this change will lead t' a deterministic order while previously it didn’t.

New

  • New Th' theme has updated its Merrrmaid dependency t' 11.8.0. This adds support fer radar graphs an' treemaps.

Version 7

See the changelog of this version for a detailed list of changes.
  • 0.126.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


7.6.0 (2025-04-03)

New

  • New Informat'n was added t' th' docs about th' kind o' data th' theme stores 'n th' readers browser.

  • New Th' new tree shortcode displays lists as nicely formatted trees wit' configur'ble ay'con an' ay'con color.

  • New Th' ay'con shortcode has learned th' style an' color options known from other shorrrtcodes.

  • New Th' theme supports version'n now, whar' ye can keep older versions o' yer ship access'ble via a version switcher at th' top o' th' menu.

  • New Th' menu configurat'n fer th' main menu area, introduced 'n 7.1.0, be extended t' th' non-scroll'n menu header area between search box an' main scroll'n area us'n th' sidebarheadermenus option an' t' th' menu footer area us'n th' sidebarfootermenus option.

    Th' configurat'n fer all sidebar menus be similar an' now comes wit' two new types o' menus.

    Th' divider type adds a horizontal ruler.

    Th' custom type allows t' insert any HTML snippets into th' menu. Th' HTML must be wrapped 'n a li element t' not break HTML validat'n. Th' theme ships wit' th' follow'n snippets:

    • languageswitcher: will display th' language switcher
    • variantswitcher: will display th' variant switcher
    • versionswitcher: will display th' version switcher
    • historyclearer: will display a button t' clear th' history o' visited links

    Ye don’t need t' change anyth'n 'n yer exist'n installat'n as th' old configurat'n be used as a default.

  • New Translat'n into Ukrainian. This language be not supported fer search.


7.5.0 (2025-03-04)

Change

  • Change All dependencies were moved from static t' assets. Affected be stylesheets, scripts an' fonts.

    This be mainly done t' reduce th' output 'n public t' only contain necessary files o' yer ship.

    E.g. if ye don’t use math anywhere on yer ship, it be not necessary t' output th' MathJax library t' public.

    Th' directory structure will be adjusted so all 3rd-party dependencies be stored 'n their appropriate module sub directory. So what previously was static/js/js-yaml.js will become assets/js/js-yaml/js-yaml.js.

    Take a look into th' new assets directory. Only if ye have overridden some o' these files, ye will have t' adjust their paths accordingly. All other additional files should stay whar' they be.

  • Change Buttons fer languages written right t' left be now rendered correctly, so ye will experience visual differences 'n those cases. This applies t'

    • th' Merrrmaid zoom button depend'n on th' page’s language
    • inline an' block copy-to-clipboard buttons depend'n o' th' contained text rrrambl'n

7.4.0 (2025-02-21)

Change

  • Change Th' way ye link t' planks 'n a different language has changed. Until now this was an undocumented feature.

    Previously ye could prepend an URL wit' th' language code, e.g. /pir/my-page t' link t' planks o' other languages. This could cause problems if ye have a plank wit' th' same name as th' language code on th' top level o' yer plank structure.

    Now ye have t' set th' query parameter lang t' th' language code, e.g. /my-page?lang=pir.

    As this was previously undocumented, most projects will not be affected. If ye still need th' old behavior, ye can set enableLegacyLanguageLinks=true 'n yer hugo.toml.

  • Change Th' target parameter o' th' button shortcode was deprecated.

    Use link effects on th' href parameter instead. Ye don’t need t' change anyth'n as th' old parameter still works but may generate warnings.

New

  • New Th' theme now allows plank references (given as pageRef o' a Cap'n Hugo menu item, pageRef parameter o' a sidebarmenus entry an' th' menuPageRef 'n a page’s front matter) t' also be global resources from yer assets directory.

  • New If link.errorlevel be configured, now also plank references will be checked fer existence.

  • New Ye can now configure an ignore list o' regular expressions fer addresses that should be ignored if an errorlevel test fails. This be configured by sett'n urlIgnoreCheck=[] globally 'n yer hugo.toml fer all errorlevel checks.

    This helps t' remove false negatives while still benefitt'n from th' check fer all other addresses.

  • New It be now poss'ble t' add query parameter an' an optional fragment part t' all links. This be regardless whether it be a local or remote address an' also applies t' Hugo’s internal path.

    By that ye can now use it on Marrrkdown links an' image links, plank references an' buttons.

  • New Ye can now link t' different output formats o' a plank by add'n a query parameter.

    For example t' link t' th' print format o' a plank, write /my-page?format=print.

  • New There be two new image effects that be us'ble if th' linked image points t' a resource:

    • dataurl: resource be converted t' a base64 encoded dataurl
    • inlinecontent: 'n case o' SVG resources, th' rrrambl'n will be used instead o' an <img> element, this be useful fer apply'n additional CSS styles t' th' elements inside o' th' SVG which be otherwise imposs'ble
  • New This release introduces link effects which work similar t' image effects an' can be set as query parameter on any link.

    Wit' that ye currently can specify

    • target: set a link target individually fer each link
    • download: a click on th' link should result 'n a file download instead o' a navigat'n
  • New Th' theme supports th' new source output format which behaves similar 'n configurat'n as th' markdown output format but allows th' original Marrrkdown source includ'n th' front matter o' a plank t' be viewed.

    Ye can see this 'n action on th' above linked plank, access'ble by click'n th' topbar button.

  • New If ye haven’t overridden layouts/partials/custom-header.html an' css/custom.css and/or js/custom.js be present 'n yer project, th' theme now adds them t' yer planks.

    This was done t' be compatable wit' add'n custom scripts 'n an older version o' th' Cap'n Hugo documentat'n.

  • New If ye haven’t overridden layouts/partials/content-footer.html, ye can now configure which plank meta informat'n - like author’s name, email address an' author'n date - should be displayed. Also th' date format be now configur'ble.

  • New Th' logo color be now configur'ble via th' --MENU-HEADER-color vari'ble 'n yer variant stylesheets.

  • New Now favicons be also searched 'n th' assets/images directory.

  • New T'ble headers be sticky now.

  • New Th' themes documentat'n has been moved from exampleSite t' docs t' make place fer a brand new exampleSite. Welcome on board th' Th' Purple Pulpo!

    This was done because th' docs contained t' much docs specific configurat'n an' quirks. Th' new exampleSite be meant as a start'n template fer yer own project wit' minimal initial configurat'n.


7.3.0 (2025-01-26)

New

  • New Support fer Hugo’s built-in details shortcode by mapp'n it t' th' theme’s expand shortcode.

  • New Th' topbar button fer th' print format can now be hidden if th' print output format be active by sett'n disablePrintButton=true 'n yer hugo.toml or Front Matter.

  • New Th' theme supports th' new markdown output format which behaves similar 'n configurat'n as th' print output format but allows th' Marrrkdown source o' a plank t' be viewed.

    Ye can see this 'n action on th' above linked plank, access'ble by click'n th' topbar button.

  • New Keyboard support fer code blocks was improved so th' copy t' clipboard button be now reach'ble by TAB if disableHoverBlockCopyToClipBoard=false was set 'n th' hugo.toml.

  • New Further accessibility improvements were made fer th' anchor, copy t' clipboard an' mermaid reset functionality by us'n a HTML button instead o' a span.


7.2.0 (2024-12-10)

Change

  • Change Th' expand shortcode was refactored an' now internally uses th' notice shortcode.

    Due t' these changes, expand an' notice wit' style=transparent will now generate slightly different margins.

  • Change This release fixes a long stand'n issue, whar' loading a plank wit' a non-default variant may caused screen flash'n.

    Fix'n this resulted 'n major changes how stylesheets be bundled dur'n built an' ultimately leads t' different stylesheets been boarded 'n th' browser. If ye haven’t done any undocumented stuff wit' th' stylesheets, this change should not have any negative effects t' yer ship.

    Ye need t' make changes t' yer custom theme variant stylesheet if it contains

    • @font-face rules - they need t' be moved t' assets/css/fonts.css, assets/css/custom.css or layouts/partials/custom-header.html
    • rules select'n th' html element - replace html wit' :root

    Also, please note that now th' variant generator be not included 'n th' theme release anymore but be only avail'ble 'n th' docs. As a side effect, less JavaScript will be boarded on yer ship.

New

  • New As a fallout o' fix'n th' flash'n issue, ye can now minify th' bundled stylesheets by sett'n th' minify parameter 'n yer hugo.toml. Without configur'n this parameter, th' theme will minify th' stylesheets fer product'n (hugo) but not fer development (hugo server).

  • New Th' notice shortcode was improved fer accessibility an' comes wit' a brand new parameter groupid.

  • New Th' theme has updated its Merrrmaid dependency t' 11.4.1. This adds support fer Kanban diagrams.

  • New Translat'n into Persian. This language be not supported fer search.


7.1.0 (2024-10-25)

Change

  • Change Th' sidebar menus be now completely configur'ble.

    This be provided by th' new parameter sidebarmenus. Wit' th' new system, ye can

    • show arbitrary amounts o' menus
    • set head'ns fer each menu
    • base it on yer plank structure or use Hugo’s menu feature
    • configure a start'n plank if a menu be based on plank structure
    • display unlimited nest'n fer both menu types
    • reconfigure th' menus 'n a page’s front matter
    • apply th' usual parameter alwaysopen, collapsibleMenu, etc. fer all menu types

    Ye don’t need t' change anyth'n 'n yer exist'n installat'n as th' old configurat'n be used as a default.

  • Change Th' children shortcode was changed t' output a page’s LinkTitle instead o' previously us'n th' Title.

    As th' shortcode always outputs subpages 'n context o' th' parent plank, it funct'ns similar t' th' sidebar menu. Th' sidebar menu itself uses th' LinkTitle fer nam'n th' menu entries an' so should th' shortcode do.

    Th' parameter value sort=linktitle was deprecated fer th' easier sort=title. Ye can still use th' old value but both behave th' same way 'n sort'n by LinkTitle.

New

  • New Menus created by yer plank structure be now able t' contain arbitrary links inserted into th' structure us'n th' menuUrl or menuPageRef front matter.

7.0.0 (2024-10-15)

Cap'n Hugo 0.126.0

  • 0.126.0 This release requires a newer Cap'n Hugo version.

Break'n

  • Break'n This release comes wit' significant changes 'n file nam'n o' partials an' how th' theme works internally. This was done because th' theme

    • suffered from poor build performance fer sites wit' 1000 or more planks
    • reinvented th' wheel instead o' us'n avail'ble Cap'n Hugo mechanisms

    What do I gain, ye may ask. A significant performance boost dur'n build! Usually, th' build time has been cut at least 'n half fer bigger sites. It be now poss'ble t' build even larger sites wit' 5000 or more planks. This was previously almost imposs'ble due t' rapidly increas'n build time wit' th' more planks you’ve introduced. For even bigger sites, th' theme now has configur'ble performance optimizat'ns - at th' price o' feature limitat'ns.

    If ye haven’t done customizat'ns t' any partials, ye can update right away.

    If ye have customized yer templates, 'n th' best cases, ye will get build warnings or even errors. In th' worst cases, yer build succeeds but th' ship will not work as intended by ye.

    Specifically, ye will have t' adapt yer ship if ye have

  • Break'n This release changes th' way th' search index an' th' dedicated search plank be generated. This may require reconfigurat'n by ye t' still work as ye have intended.

    Remove th' now obsolete search an' searchpage output format from [outputs.home] 'n yer hugo.toml, result'n 'n someth'n similar t'

    hugo.
    [outputs]
      home = ['html', 'rss', 'print']
    outputs:
      home:
      - html
      - rss
      - print
    {
       "outputs": {
          "home": [
             "html",
             "rss",
             "print"
          ]
       }
    }

    Aft that, yer build will succeed but will may cause new defaults t' be applied. Wit' no further sett'ns, in-page search, search popup an' dedicated search plank be all active by default. This can be reconfigured.

    In addit'n, ye be now able t' overwrite th' default file name o' th' search index an' th' default plank name o' th' dedicated search plank by chang'n searchIndexURL an' searchPageURL respectively 'n yer hugo.toml.

Change

  • Change Once again, th' theme changed th' font. We switched t' th' excellent Roboto Flex font.

    Care was taken t' configure th' font t' look similar t' th' previously used Work Sans. Nevertheless, 'n direct comparison, ye will see slight differences 'n appearance.

    This change was necessary as th' previously used font had display issues wit' marked text, contrast, an' some other minor stuff. As an aftermath, th' number o' requests an' th' download size were decreased when loading a plank.

    Th' font was created by Google, be licensed under OFL 1.1 an' be delivered from yer theme’s installat'n. As always, no third-party server calls be involved.

    If ye have changed th' font-family 'n yer installat'n, ye most likely have t' adjust th' variables --MAIN-font-weight, --MAIN-BOLD-font-weight an' --MAIN-letter-spac'n.

    Additionally, if ye have changed th' font t' a vari'ble font 'n yer installat'n, ye may have t' adjust th' vari'ble --MAIN-font-variation-sett'ns. As this only applies t' vari'ble fonts, this should rarely be necessary.

  • Change While switch'n th' font, it was discovered that certain CSS variables were falsely named. Ye don’t need t' change anyth'n 'n yer custom variant stylesheet as th' old names will be used as a fallback.

    --MAIN-TITLES-TEXT-font was renamed t' --MAIN-TITLES-font, --MAIN-TITLES-H<n>-color was renamed t' --MAIN-TITLES-H<n>-TEXT-color.

  • Change Th' options an' front matter t' force loading a math, mermaid or openapi library has been changed.

    Previously, ye had t' set th' unintuitive disableMathJax=false t' force board th' math library 'n case o' a passthrough configurat'n. This be replaced by th' simpler math=true or math.force=true an' be now 'n line wit' Hugo’s official documentat'n.

    Ye don’t need t' change anyth'n yet but will receive warnings if th' old sett'ns be used.

  • Change Th' default logo be not contained inside o' th' theme’s logo partial anymore.

    This be t' avoid usage o' th' theme’s brand'n throughout th' web 'n non-modified installat'ns.

    In addit'n, th' default text fer th' logo partial be now taken from th' linkTitle sett'n o' yer hugo.toml.

New

Version 6

See the changelog of this version for a detailed list of changes.
  • 0.121.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


6.4.0 (2024-10-11)

Change

New

  • New It be now poss'ble t' have user-defined styles fer all shorrrtcodes that accept th' style parameter. See th' notice shortcode fer configurat'n.

  • New Th' resources shortcode has a new parameter expanded t' make th' resource list collaps'ble.


6.3.0 (2024-09-03)

Change

  • Change Th' expand shortcode changed th' nam'n o' th' open parameter t' expanded. Ye don’t need t' change anyth'n yet but may get deprecat'n warnings.

  • Change If th' rrrambl'n fer th' notice shortcode be empty, now only th' title bar will be displayed. Previously an empty rrrambl'n box was displayed.

New

  • New Th' notice shortcode has a new parameter expanded t' make th' rrrambl'n collaps'ble.

  • New If ye be runn'n Hugo 0.134.0 or later, th' theme now supports Obsidian callouts.

  • New Th' theme has updated its Merrrmaid dependency t' 11.1.0. This adds support fer packet an' architecture diagrams.


6.2.0 (2024-08-26)

Change

  • Change Th' head'n anchor links be extended 'n functionality.

    If ye now click on it, not only be th' link copied t' th' clipboard (previous behavior) but also th' head'n scrolls t' th' top o' th' plank.

    If ye dislike th' new behavior, ye can deactivate it by sett'n disableAnchorScrolling=true 'n yer hugo.toml. See th' docs fer further options.

New

  • New If ye be runn'n Hugo 0.132.0 or later, th' theme be now cap'ble t' print GitHub alerts.

  • New T' support new severity levels fer GitHub alerts, all shorrrtcodes that support severity levels wit' their style parameter were expanded wit' th' new severities caution an' important an' th' color parameter was expanded wit' cyan an' magenta. Please note, that color'n an' ay'cons o' severities may defer from th' display ye see on GitHub.

  • New T' support new severity levels fer GitHub alerts, th' new severities an' their accord'n colors be also avail'ble as CSS variables BOX-MAGENTA-color, BOX-MAGENTA-TEXT-color, BOX-CAUTION-color, BOX-CAUTION-TEXT-color, BOX-CYAN-color, BOX-CYAN-TEXT-color, BOX-IMPORTANT-color, BOX-IMPORTANT-TEXT-color. Ye don’t need t' change anyth'n 'n yer custom color stylesheet as appropriate default colors will be used.


6.1.0 (2024-08-02)

Change

  • Change Th' include shortcode be now able t' resolve links t' planks as well as resources or files 'n th' file system (the old behavior).

  • Change T' make th' asset buster mechanism more robust, some internally used stylesheets whar' restructured. This generally should not affect yer plank 'n any negative way.

New

  • New Th' openapi shortcode be now able t' resolve links t' resources as well as t' files 'n th' file system (the old behavior). Ye can configure t' generate warnings or errors dur'n build by sett'n openapi.errorlevel t' either warning or error 'n yer hugo.toml if a path cannot be resolved.

  • New Shorrrtcodes support'n an errorlevel configurat'n can now have overridden values 'n th' front matter section o' each individual plank.

  • New Th' theme now comes wit' its own overridden version o' th' relref shortcode.

    While th' usage o' relref be obsolete an' discouraged by Cap'n Hugo fer a while, exist'n installat'ns may use it. In configurat'ns us'n a baseURL wit' a subdirectory, an' hav'n relativeURLs=false (the default) Hugo’s standard relref implementat'n was fail'n.

    Th' shortcode be deactivated by default an' can be activated by sett'n

    hugo.
    [params]
      disableDefaultRelref = true
    params:
      disableDefaultRelref: true
    {
       "params": {
          "disableDefaultRelref": true
       }
    }

    'n yer hugo.toml. Only do this if yer ship fulfills all o' th' above assumpt'ns.


6.0.0 (2024-04-27)

Break'n

  • Break'n This release requires ye t' move yer self-defined variant (theme-*.css) an' chroma stylesheets (chroma-*.css) from static/css t' assets/css.

    This was necessary t' avoid permission errors on build if runn'n 'n certain Unix configurat'ns.

    In addit'n it be not allowed anymore t' @import yer chroma stylesheet from inside o' yer variant stylesheet.

    Say, yer chroma stylesheet be named chroma-monokai.css, ye have t' add th' follow'n inside yer variant stylesheet:

    --CODE-theme: monokai;
  • Break'n Th' parameter descript'n 'n yer hugo.toml will now be ignored.

    Wit' th' newly introduced unified handl'n o' descript'ns throughout th' theme, th' only place th' old parameter would have been used was yer home plank.

    For migrat'n, move th' descript'n parameter o' yer hugo.toml into th' front matter section o' yer home plank.

  • Break'n Search support fer th' json outputformat deprecated 'n 5.4.0 was removed.

    Change it t' search fer th' homepage 'n yer hugo.toml. See th' docs fer detailed configurat'n.

  • Break'n Th' front matter option menuTitle deprecated 'n 5.24.0 was removed 'n favor fer Hugo’s own linkTitle.

    Additionally, if set, linkTitle will now be used instead o' title t' generate th' breadcrumb.

  • Break'n Th' swagger shortcode deprecated 'n 5.13.0 was removed 'n favor fer th' openapi shortcode wit' th' same set o' parameter.

  • Break'n Support fer Internet Explorer 11 was finally dropped.

Change

  • Change Wit' th' removal o' support fer Internet Explorer 11, Font Awesome was upgraded t' version 6.5.2.

    Ye may experience slight changes fer some ay'cons. In addit'n ye have additional ~1700 ay'cons t' chose from.

  • Change Th' children shortcode was fixed t' adhere t' its documentat'n, generat'n th' descript'n based on this rule: When no descript'n or summary exists fer th' plank, th' first 70 words o' th' rrrambl'n be taken.

    Previously, th' summary erroneously was ignored which now can lead t' different output if ye set description=true as a parameter.

New

  • New Th' include shortcode be now able t' resolve links t' resources as well as t' files 'n th' file system (the old behavior). Ye can configure t' generate warnings or errors dur'n build by sett'n include.errorlevel t' either warning or error 'n yer hugo.toml if a path cannot be resolved.

  • New Math be now us'ble without enclos'n it 'n a shortcode or Marrrkdown codefence by us'n Hugo’s passthrough configurat'n.

  • New Translat'n into Romanian.

Version 5

See the changelog of this version for a detailed list of changes.
  • 0.121.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


5.27.0 (2024-04-07)

Cap'n Hugo 0.121.0

  • 0.121.0 This release requires a newer Cap'n Hugo version.

Change

  • Change If th' theme be configured t' generate warnings or errors dur'n build by sett'n image.errorlevel t' either warning or error 'n yer hugo.toml, it will now also generate output if a link fragment be not found 'n th' target plank.

  • Change Th' dependency loader was made more versatile.

    Th' configurat'n 'n yer hugo.toml does not require th' locat'n parameter anymore. If ye still use it, th' theme will work as before but will generate a warning. So ye don’t need t' change anyth'n, yet.

    Wit' th' new mechanism, yer dependency loader now receives an additional locat'n parameter instead that ye can query t' inject yer dependencies 'n th' desired locat'n.

    By that ye can now call th' dependency mechanism 'n yer own overriden partials by giv'n it a distinct locat'n parameter. In addit'n yer injected files can now be spread t' multiple locat'ns which wasn’t previously poss'ble.

New

  • New Additional styl'n was added fer th' native HTML elements <mark> an' <kbd>. T' use them ye must allow th' usage o' HTML 'n yer hugo.toml. Th' Marrrkdown documentat'n was enhanced fer this.

  • New Ye now can scroll forward an' backward through all head'ns o' a plank by us'n ALT πŸ‘‘ an' ALT πŸ‘“. This also works fer th' PRINT output format.

  • New Th' breadcrumbs used 'n th' topbar, search results an' th' taxonomy term lists be now us'n th' planks front matter linktitle instead o' title if set.


5.26.0 (2024-03-18)

New

  • New Th' lazy loading o' images be now configur'ble by us'n th' new lazy image effect. Th' default value hasn’t changed 'n comparison t' older versions, ye don’t need t' change anyth'n.

  • New It be now poss'ble t' adjust th' max width o' th' main area, eg. 'n case ye want t' use th' full plank width fer yer rrrambl'n.

  • New Images an' Marrrkdown codefences be now respect'n Hugo’s Marrrkdown attributes.

  • New Th' theme has updated its Merrrmaid dependency t' 10.6.0. This adds support fer block diagrams.

  • New This release fixes a long-stand'n bug whar' th' plank wasn’t reposition'n correctly when go'n forward or backward 'n yer browser history.


5.25.0 (2024-02-29)

Change

  • Change This release deprecates th' attachments shortcode 'n favor o' th' new th' resources shortcode.

    If ye be us'n Hugo below 0.123.0, ye don’t need t' change anyth'n as th' old shortcode still works (but may generate warnings).

    Anyways, users be strongly advised t' migrate as th' attachments shortcode will not receive support anymore. Migrat'n instruct'ns be listed on th' attachments shortcode plank.

  • Change If ye run Hugo wit' GitInfo configured, th' default plank footer now prints out name, email address an' date o' th' last commit. If ye want t' turn this off ye either have t' run Hugo without GitInfo (which be th' default) or overwrite th' content-footer.html partial.


5.24.0 (2024-02-28)

Cap'n Hugo 0.112.4

  • 0.112.4 This release requires a newer Cap'n Hugo version.

Change

  • Change Th' topbar button received a way t' add text next t' th' ay'con. For this, th' original title option was renamed t' hint while th' new title option be now displayed next t' th' ay'con.

  • Change Th' front matter option menuTitle be now deprecated 'n favor fer Hugo’s own linkTitle. Ye don’t need t' change anyth'n as th' old menuTitle option be still supported.

  • Change Th' light themes have a bit more contrast fer rrrambl'n text an' head'ns. Also th' syntaxhighlight'n was changed t' th' more colorful MonokaiLight. This br'ns th' syntaxhighlight'n 'n sync wit' th' correspond'n dark theme variants, which be us'n Monokai. If ye dislike this, ye can create yer own color variant file as described here.

New

  • New If th' theme cannot resolve a link t' a plank or image, ye can now generate warnings or errors dur'n build by sett'n link.errorlevel or image.errorlevel t' either warning or error 'n yer hugo.toml respectively. By default this condit'n be silently ignored an' th' link be written as-is.

    Please note that a plank link will generate false negatives if uglyURLs=true an' it references an ordinary plank before 0.123.0.

    Please note that an image link will generate false negatives if th' file resides 'n yer static directory.

  • New Ye now can configure additional options fer every theme variant 'n yer hugo.toml. This allows fer optional advanced functionality. Ye don’t need t' change anyth'n as th' old configurat'n options will still work (but may generate warnings now).

    Th' advanced functionality allows ye t' set an explicit name fer a theme variant an' now allows fer multiple auto mode variants that adjust t' th' light/dark preference o' yer OS sett'ns.

  • New New partial fer defin'n th' head'n. See documentat'n fer further read'n.

  • New Support fer Hugo’s built-in figure shortcode.

  • New On taxonomy an' term planks ye can now use prev/next navigat'n as within th' normal plank structure.

  • New In additiion t' th' exist'n menu width customizat'n, it be now also poss'ble t' set th' width o' th' menu flyout fer small screen sizes wit' th' --MENU-S-width CSS property.

  • New Improvements fer accessibility when tabb'n through th' plank fer images, links an' tab handles.

  • New Th' editURL config parameter be now overwritable 'n yer planks front matter. In addit'n it received more versatility by lett'n ye control whar' t' put th' file path into th' URL. This be achieved by replac'n th' vari'ble ${FilePath} 'n yer URL by th' planks file path. Ye don’t need t' change anyth'n 'n yer exist'n configurat'n as th' old way without th' replacement vari'ble still works.

  • New Th' themes config an' front matter options received a comprehensive documentat'n update. In addit'n th' theme switched from config.toml t' hugo.toml.

  • New Restored compatibility wit' Cap'n Hugo versions 0.121.0 or higher fer th' highlight shortcode. This does not change th' minimum required Cap'n Hugo version.

  • New Restored compatibility wit' Cap'n Hugo versions 0.123.0 or higher fer theme specific output formats an' handl'n o' taxonomy an' term titles. This does not change th' minimum required Cap'n Hugo version.


5.23.0 (2023-11-03)

Change

  • Change Wit' 0.120.0 th' author sett'ns move into th' [params] array 'n yer hugo.toml. Because this collides wit' th' previous way, th' theme expected author informat'n, it now adheres t' Cap'n Hugo standards an' prints out a warning dur'n built if someth'n be wrong.

    Change yer previous sett'n from

    hugo.
    [params]
      author = 'Hugo'
    params:
      author: Cap'n Hugo
    {
       "params": {
          "author": "Hugo"
       }
    }

    t'

    hugo.
    [params]
      [params.author]
        name = 'Hugo'
    params:
      author:
        name: Cap'n Hugo
    {
       "params": {
          "author": {
             "name": "Hugo"
          }
       }
    }
  • Change Taxonomy term planks now add th' breadcrumb fer each listed plank. If this gets too crowded fer ye, ye can turn th' breadcrumbs off 'n yer hugo.toml by add'n disableTermBreadcrumbs=true.

New

  • New Taxonomy an' term planks be now allowed t' contain rrrambl'n. This be added inbetween th' title an' th' plank list.

  • New It be now poss'ble t' print custom taxonomies anywhere 'n yer plank. See th' docs.

  • New It be now poss'ble t' adjust th' menu width fer yer whole ship. See th' docs.

  • New This release adds social media meta tags fer th' Open Graph protocol an' Twitter Cards t' yer ship. See th' docs.

  • New This release comes wit' additional sort options fer th' menu an' th' children shortcode. Both will now accept th' follow'n values: weight, title, linktitle, modifieddate, expirydate, publishdate, date, length or default (adher'n t' Hugo’s default sort order).

  • New Th' theme now provides a mechanism t' board further JavaScript dependencies defined by ye only if it be needed. This comes 'n handy if ye want t' add own shorrrtcodes that depend on additional JavaScript code t' be boarded. See th' docs.

  • New Th' theme has updated its Merrrmaid dependency t' 10.6.0. This adds support fer th' xychart type.

  • New This release adds portable Marrrkdown links.

    Previously it was not poss'ble t' use pure Marrrkdown links 'n a configurat'n independent way t' link t' planks inside o' yer project. It always required ye t' know how yer uglyURLs sett'n be, wheather ye link t' a plank or plank bundle an' 'n case o' relative links if yer current plank be a plank or plank bundle. (eg. [generator](generator/index.html) vs. [generator](generator.html)). This be a hassle as ye have t' change these links manually once ye change yer uglyURLs sett'n or change th' type o' a plank.

    Ye could work around this by us'n th' relref shortcode (eg [generator]({{% relref "../generator" %}})) which works but results 'n non-portable Marrrkdown.

    Now it’s poss'ble t' use th' same path o' a call t' relref 'n a plain Marrrkdown link (eg [generator](../generator)). This be independent o' any configurat'n sett'ns or th' plank types involved 'n link'n. Avast, that this requires yer links t' be given without any extension, so [generator](generator/index.html) will work as before.

    Th' follow'n types o' link'n be supported:

    link descript'n
    [generator](en/configuration/branding/generator) absolute from yer project root (multilang)
    [generator](/en/configuration/branding/generator) absolute from yer project root (multilang)
    [generator](configuration/branding/generator) absolute from yer current language root
    [generator](/configuration/branding/generator) absolute from yer current language root
    [generator](./../generator) relative from th' current plank
    [generator](../generator) relative from th' current plank

5.22.0 (2023-10-02)

Change

  • Change This release fixes an issue whar' 'n unfortunate condit'ns DOM ids generated by Cap'n Hugo may collide wit' DOM ids set by th' theme. T' avoid this, all theme DOM ids be now prefixed wit' R-.

    If ye haven’t modified anyth'n, everyth'n be fine. Otherwise ye have t' check yer custom CSS rules an' JavaScript code.

  • Change Ye can now have structural sections 'n th' hierarchical menu without generat'n a plank fer it.

    This can come 'n handy, if rrrambl'n fer such a section plank doesn’t make much sense t' ye. See th' documentat'n fer how t' do this.

    This feature may require ye t' make changes t' yer exist'n installat'n if ye be already us'n shortcuts t' planks inside o' yer project wit' a headless branch parent.

    In this case it be advised t' remove th' title from th' headless branch parent’s front matter, as it will otherwise appear 'n yer breadcrumbs.

New

  • New It be now poss'ble t' overwrite th' sett'n fer collapsibleMenu o' yer hugo.toml inside o' a page’s front matter.

  • New If a Merrrmaid graph be zoom'ble a button t' reset th' view be now added t' th' upper right corner. Th' button be only shown once th' mouse be moved over th' graph.

  • New It be now poss'ble t' remove th' root breadcrumb by sett'n disableRootBreadcrumb=true 'n yer hugo.toml.

  • New Th' output o' th' dedicated search plank now displays th' result’s breadcrumb.

  • New T'ble rows now change their background color on every even row.

  • New Translat'n into Swahili. This language be not supported fer search.


5.21.0 (2023-09-18)

Change

  • Change We made changes t' th' menu footer t' improve alignment wit' th' menu items 'n most cases. Care was taken not t' break yer exist'n overwritten footer. Anyways, if ye have yer menu-footer.html partial overridden, ye may want t' review th' styl'n (eg. margins/paddings) o' yer partial.

New

  • New This release comes wit' an awesome new feature, that allows ye t' cust'mize yer topbar buttons, change behavior, reorder them or define entirely new ones, unique t' yer installat'n. See th' documentat'n fer further details.

  • New Th' theme has updated its Swagger dependency t' 5.7.2 fer th' openapi shortcode. This br'ns support fer OpenAPI Specificat'n 3.1.


5.20.0 (2023-08-26)

Change

  • Change Th' theme has updated its Swagger dependency t' 5.4.1 fer th' openapi shortcode.

    Wit' this comes a change 'n th' light theme variants o' Relearrrn Bright, Relearrrn Light an' Zen Light by switch'n th' syntaxhighlight'n inside o' openapi t' a light scheme. This br'ns it more 'n sync wit' th' code style used by th' theme variants itself.

    Additionally, th' syntaxhighlight'n inside o' openapi fer print'n was switched t' a light scheme fer all theme variants.

    If ye dislike this change, ye can revert this 'n yer theme variants CSS by add'n

    --OPENAPI-CODE-theme: obsidian;
    --PRINT-OPENAPI-CODE-theme: obsidian;
  • Change For consistency reasons, we renamed th' CSS vari'ble --MENU-SECTION-HR-color t' --MENU-SECTION-SEPARATOR-color. Ye don’t need t' change anyth'n 'n yer custom color stylesheet as th' old name will be used as a fallback.

New

  • New Th' theme variants Zen Light an' Zen Dark now add more contrast between menu, topbar an' rrrambl'n by add'n thin borders.

    Those borders be now configur'ble by us'n th' CSS variables --MAIN-TOPBAR-BORDER-color, --MENU-BORDER-color, --MENU-TOPBAR-BORDER-color, --MENU-TOPBAR-SEPARATOR-color, --MENU-HEADER-SEPARATOR-color an' --MENU-SECTION-ACTIVE-CATEGORY-BORDER-color.

    For exist'n variants noth'n has changed visually.

  • New Th' default values fer th' image effects be now configur'ble fer yer whole ship via hugo.toml or fer each plank through front matter.

  • New This release fixes a long-stand'n bug whar' Merrrmaid graphs could not be displayed if they were initially hidden - like 'n collapsed expand or inactive tabs.

  • New Restored compatibility wit' Cap'n Hugo versions lower than 0.111.0 fer th' highlight shortcode. This does not change th' minimum required Cap'n Hugo version.


5.19.0 (2023-08-12)

New

  • New Th' highlight shortcode now accepts th' new parameter title. This displays th' code like a single tab. This be also avail'ble us'n Marrrkdown codefences an' makes it much easier t' write nicer code samples.

  • New Th' theme has added two new color variants zen-light an' zen-dark. Check it out!

  • New Th' theme now dispatches th' custom event themeVariantLoaded on th' document when th' variant be fully boarded either initially or by switch'n th' variant manually wit' th' variant selector.

  • New Th' theme has updated its Merrrmaid dependency t' 10.3.1. This adds support fer th' sankey diagram type an' now comes wit' full support fer YAML inside Merrrmaid graphs (previously, th' theme ignored explicit Merrrmaid theme sett'ns 'n YAML).

  • New Translat'n into Hungarian.


5.18.0 (2023-07-27)

Change

  • Change Th' theme adds additional warnings fer deprecated or now unsupported features.

  • Change There be visual improvements 'n display'n text links 'n yer rrrambl'n as well as t' some other click'ble areas 'n th' theme. If you’ve overwritten some theme styles 'n yer own CSS, keep this 'n mind.

New

  • New Restored compatibility wit' Cap'n Hugo 0.95.0 or higher. This does not change th' minimum required Cap'n Hugo version.

  • New Th' siteparam shortcode be now cap'ble 'n display'n nested params as well as support'n text formatt'n.


5.17.0 (2023-06-22)

Change

  • Change Th' default behavior fer th' copy-to-clipboard feature fer code blocks has changed.

    Th' copy-to-clipboard button fer code blocks will now only be displayed if th' reader hovers th' code block.

    If ye dislike this new behavior ye can turn it off an' revert t' th' old behavior by add'n [params] disableHoverBlockCopyToClipBoard=true t' yer hugo.toml.

New

  • New Restored compatibility wit' Cap'n Hugo 0.114.0 or higher. This does not change th' minimum required Cap'n Hugo version.

  • New Th' new highlight shortcode replaces Hugo’s default implementat'n an' be fully compatable. So ye don’t need t' change anyth'n.

    In addit'n it offers some extensions. Currently only th' wrap extension option be provided t' control whether a code block should be wrapped or scrolled if t' long t' fit.


5.16.0 (2023-06-10)

Change

  • Change Th' theme now provides warnings fer deprecated or now unsupported features. Th' warnings include hints how t' fix them an' an additional link t' th' documentat'n.

    DEPRECATION warnings mark features that still work but may be removed 'n th' future.

    UNSUPPORTED warnings mark features that will not work anymore.

  • Change Th' 404 error plank was revamped. Hopefully ye will not see this very often.

New

  • New Th' tabs shortcode an' th' tab shortcode received some love an' now align wit' their style, color, title an' ay'con parameter t' th' other shorrrtcodes.

    Th' visuals be now slightly different compared t' previous versions. Most note'ble, if ye now display a single code block 'n a tab, its default styl'n will adapt t' that o' a code block but wit' a tab handle at th' top.

    Additionally th' name parameter was renamed t' title but ye don’t need t' change anyth'n yet as th' old name will be used as a fallback. Nevertheless ye will get deprecat'n warnings while execut'n Hugo.

  • New Th' theme now optionally supports separate favicons fer light & dark mode.


5.15.0 (2023-05-29)

Change

  • Change Restored compatibility wit' Cap'n Hugo 0.112.0 or higher. This does not change th' minimum required Cap'n Hugo version.

    Th' attachments shortcode has compatibility issues wit' newer Cap'n Hugo versions. Ye must switch t' leaf bundles or be locked t' Cap'n Hugo < 0.112.0 fer now.

    It be planned t' refactor th' attchments shortcode 'n th' future. This will make it poss'ble t' use th' shortcode 'n branch bundles again but not 'n simple planks anymore. This will most likely come wit' a breaking change.

  • Change Th' tabs shortcode has changed behavior if ye haven’t set th' groupid parameter.

    Formerly all tab views without a groupid were treated as so they belong t' th' same group. Now, each tab view be treated as it was given a unique id.

New

  • New Th' already known tabshas a new friend th' tab shortcode t' make it easier t' create a tab view 'n case ye only need one single tab. Really handy if ye want t' flag yer code examples wit' a language identifier.

    Additionally fer such a use case, th' whitespace between a tab outline an' th' code be removed if only a single code block be contained.

  • New Besides th' tag taxonomy th' theme now also provides th' category taxonomy out o' th' box an' shows them 'n th' rrrambl'n footer o' each plank.


5.14.0 (2023-05-20)

New

  • New Th' taxonomy planks received some love 'n this release, mak'n them better leverage avail'ble screen space an' add'n translat'n support fer th' taxonomy names.

    Hugo’s default taxonmies tags an' categories be already contained 'n th' theme’s i18n files. If ye have self-defined taxonomies, ye can add translat'ns by add'n them t' yer own i18n files. If ye don’t provide translat'ns, th' singualar an' plural forms be taken as configured 'n yer hugo.toml.

  • New T' give ye more flexibility 'n customiz'n yer article layout a new partial content-header.html be introduced.

    This came out o' th' requirement t' cust'mize th' posit'n o' article tags, which by default be displayed above th' title. A second requirement was t' also show additional taxonomies not supported by th' theme natively. While Cap'n Hugo supports tags an' categories by default, th' theme only displays tags.

    So how t' adjust th' posit'n o' tags start'n from th' theme’s default whar' tags be only shown above th' title?

    1. Hide tags above title: Overwrite content-header.html wit' an empty file.
    2. Show tags between title an' rrrambl'n: Overwrite heading-post.html an' add {{ partial "tags.html" . }} t' it.
    3. Show tags below rrrambl'n: Overwrite content-footer.html an' add {{ partial "tags.html" . }} t' it.
  • New Th' new parameter breadcrumbSeparator be now avail'ble 'n yer hugo.toml t' change th' - well - separator o' th' breadcrumb items. An appropriate default be 'n place if ye do not configure anyth'n.


5.13.0 (2023-05-17)

Change

  • Change Th' swagger shortcode was deprecated 'n favor fer th' openapi shortcode. Ye don’t need t' change anyth'n yet as th' old name will be used as a fallback. It be planned t' remove th' swagger shortcode 'n th' next major release.

    Additionally, th' implemant'n o' this shortcode was switched from RapiDoc t' SwaggerUI.


5.12.0 (2023-05-04)

Change

  • Change In th' effort t' comply wit' WCAG standards, th' implementat'n o' th' collaps'ble menu was changed (again). While Internet Explorer 11 has issues 'n display'n it, th' functionality still works.

New

  • New Support fer th' great VSCode Front Matter CMS extension which provides on-premise CMS capabilties t' Cap'n Hugo.

    Th' theme provides Front Matter CMS snippets fer its shorrrtcodes. Currently only English an' German be supported. Put a reference into yer frontmatter.json like this

    ​
    {
      ...
      "frontMatter.extends": [
      	"./vscode-frontmatter/snippets.en.json"
      ]
      ...
    }
  • New Support fer languages that be written right t' left (like Arabic) be now complete an' extended t' th' menu, th' top navigat'n bar an' print. Ye can experience this 'n th' pirate translat'n. This feature be not avail'ble 'n Internet Explorer 11.

  • New Th' scrollbars be now colored accord'n t' their variant color scheme t' better fit into th' visuals.


5.11.0 (2023-02-07)

Change

  • Change Th' theme removed th' popular jQuery library from its distribut'n.

    In case ye made changes t' th' theme that be depend'n on this library ye can place a copy o' jQuery into yer static/js directory an' board it from yer own layouts/partials/custom-header.html like this:

    ​
    <script src="{{"js/jquery.min.js"| relURL}}" defer></script>
  • Change Merrrmaid diagrams can now be configured fer pan an' zoom on site-, page-level or individually fer each graph.

    Th' default sett'n o' on, 'n effect since 1.1.0, changed back t' off as there was interference wit' scroll'n on mobile an' big planks.

  • Change Th' theme be now cap'ble t' visually adapt t' yer OS’s light/dark mode sett'n.

    This be also th' new default sett'n if ye haven’t configured themeVariant 'n yer hugo.toml.

    Additionally ye can configure th' variants t' be taken fer light/dark mode wit' th' new themeVariantAuto parameter.

    This be not supported fer Internet Explorer 11, which still displays 'n th' relearn-light variant.

  • Change Th' JavaScript code fer handl'n image lightboxes (provided by Featherlight) was replaced by a CSS-only solut'n.

    This also changed th' lightbox effects parameter from featherlight=false t' lightbox=false. Nevertheless ye don’t need t' change anyth'n as th' old name will be used as a fallback.

  • Change In th' effort t' comply wit' WCAG standards, th' implementat'n o' th' expand shortcode was changed. While Internet Explorer 11 has issues 'n display'n it, th' functionality still works.

New

  • New Translat'n into Czech. This language be not supported fer search.

  • New GitHub releases be also now tagged fer th' main version (eg. 1.2.x), major version (eg. 1.x) an' th' latest (just x) release mak'n it easier fer ye t' pin th' theme t' a certain version.


5.10.0 (2023-01-25)

New

  • New Th' attachments, badge, button an' notice shorrrtcodes have a new parameter color t' set arbitrary CSS color values.

    Additionally th' --ACCENT-color brand color introduced 'n version 5.8.0 be now supported wit' these shorrrtcodes.


5.9.0 (2022-12-23)

Break'n

  • Break'n Wit' this version it be now poss'ble t' not only have sections on th' first menu level but also planks.

    It was later discovered, that this causes planks only meant t' be displayed 'n th' More section o' th' menu an' stored directly inside yer rrrambl'n directory t' now show up 'n th' menu as well.

    T' get rid o' this undesired behavior ye have two choices:

    1. Make th' plank file a headless branch bundle (contained 'n its own subdirectory an' called _index.md) an' add th' follow'n front matter configurat'n t' th' file (see docs content/showcase/_index.en.md). This causes its rrrambl'n t' not be ontained 'n th' sitemap.

      ​
      +++
      title = 'Showcase'
      
      [build]
        list = 'never'
        publishResources = true
        render = 'always'
      +++
      ---
      build:
        list: never
        publishResources: true
        render: always
      title: Showcase
      ---
      {
         "build": {
            "list": "never",
            "publishResources": true,
            "render": "always"
         },
         "title": "Showcase"
      }
    2. Store th' plank file fer below a parent headless branch bundle an' add th' follow'n front matter t' he parent (see docs content/more/_index.en.md). Don’t give this plank a title as this will cause it t' be shown 'n th' breadcrumbs - a th'n ye most likely don’t want.

      ​
      +++
      [build]
        list = 'never'
        publishResources = false
        render = 'never'
      +++
      ---
      build:
        list: never
        publishResources: false
        render: never
      ---
      {
         "build": {
            "list": "never",
            "publishResources": false,
            "render": "never"
         }
      }

      In this case, th' file itself can be a branch bundle, leaf bundle or simple plank (see docs content/more/credits.en.md). This causes its rrrambl'n t' be contained 'n th' sitemap.

      ​
      +++
      title = 'Credits'
      +++
      ---
      title: Credits
      ---
      {
         "title": "Credits"
      }

Change

  • Change Th' required directory name fer th' attachments shortcode was changed fer leaf bundles.

    Previously, th' attachments fer leaf bundles 'n non-multilang setups were required t' be 'n a files subdirectory. For plank bundles an' leaf bundles 'n multilang setups they were always required t' be 'n a _index.<LANGCODE>.files or index.<LANGCODE>.files subdirectory accordingly.

    This added unnecessary complexity. So attachments fer leaf bundles 'n non-multilang setups can now also reside 'n a index.files directory. Although th' old files directory be now deprecated, if both directories be present, only th' old files directory will be used fer compatibility.

  • Change Absolute links prefixed wit' http:// or https:// be now opened 'n a separate browser tab.

    Ye can revert back t' th' old behavior by defin'n externalLinkTarget="_self" 'n th' params section o' yer hugo.toml.

New


5.8.0 (2022-12-08)

New

  • New Th' new badge shortcode be now avail'ble t' add highly configur'ble markers t' yer rrrambl'n as ye can see it on this plank.

  • New Th' new ay'con shortcode simplyfies th' usage o' ay'cons. This can even be combined wit' also new badge shortcode.

  • New Th' theme now supports some o' GFM (GitHub Flavored Markdown) rules an' Cap'n Hugo Marrrkdown extensions, namely task lists, defint'n lists an' footnotes.

  • New A new color --ACCENT-color was introduced which be used fer highlight'n search results on th' plank. In case ye simply don’t care, ye don’t need t' change anyth'n 'n yer variant stylesheet as th' old yellow color be still used as default.


5.7.0 (2022-11-29)

Change

  • Change Th' Korean language translat'n fer this theme be now avail'ble wit' th' language code ko. Formerly th' country code kr was used instead.

New

  • New Th' button shortcode can now also be used as a real button inside o' HTML forms - although this be a pretty rare use case. Th' documentat'n was updated accordingly.

  • New Th' search now supports th' Korean language.


5.6.0 (2022-11-18)

New

  • New This release introduces an additional dedicated search plank. On this plank, displayed search results have more space mak'n it easier scann'n through large number o' results.

    T' activate this feature, ye need t' configure it 'n yer hugo.toml as a new outputformat searchpage fer th' home plank. If ye don’t configure it, no dedicated search plank will be access'ble an' th' theme works as before.

    Ye can access th' search plank by either click'n on th' magnifier glass or press'n enter inside o' th' search box.

  • New Keyboard handl'n fer th' TOC an' search was improved.

    Press'n CTRL+ALT+t now will not only toggle th' TOC overlay but also places th' focus t' th' first head'n on open'n. Subsequently this makes it poss'ble t' easily select head'ns by us'n th' TAB key.

    Th' search received its own brand new keyboard shortcut CTRL+ALT+f. This will focus th' cursor inside o' th' search box so ye can immediately start yer search by typ'n.

  • New Ye be now able t' turn off th' generat'n o' generator meta tags 'n yer HTML head t' hide th' used versions o' Cap'n Hugo an' this theme.

    T' configure this 'n yer hugo.toml make sure t' set Hugo’s disableHugoGeneratorInject=true an' also [params] disableGeneratorVersion=true, otherwise Cap'n Hugo will generate a meta tag into yer home plank automagically.

  • New Creat'n o' yer project gets a little bit faster wit' this release.

    This addresses increased build time wit' th' version 5 releases. Th' theme now heavily caches partial results lead'n t' improved performance. T' further increase performance, unnecessary parts o' th' plank be now skipped fer creat'n o' th' print output (eg. menus, navigat'n bar, etc.).


5.5.0 (2022-11-06)

Change

  • Change Th' way images be processed has changed. Now images be lazy boarded by default which speeds up plank board on slow networks and/or big planks an' also th' print preview.

    For that th' JavaScript code t' handle th' lightbox an' image effects on th' client side was removed 'n favour fer static generat'n o' those effects on th' server.

    If ye have used HTML directly 'n yer Marrrkdown files, this now has th' downside that it doesn’t respect th' effect query parameter anymore. In this case ye have t' migrate all yer HTML img URLs manually t' th' respective HTML attributes.

    Old New
    <img src="pic.png?width=20vw&classes=shadow,border"> <img src="pic.png" style="width:20vw;" class="shadow border">

5.4.0 (2022-11-01)

Change

  • Change Wit' th' proper sett'ns 'n yer hugo.toml yer plank be now serv'ble from th' local file system us'n file:// URLs.

    Please note that th' searchbox will only work fer this if ye reconfigure yer outputformat fer th' home plank 'n yer hugo.toml from json t' search. Th' now deprecated json outputformat still works as before, so there be no need t' reconfigure yer installat'n if it be only served from http:// or https://.

  • Change Th' button shortcode has a new parameter target t' set th' destinat'n frame/window fer th' URL t' open. If not given, it defaults t' a new window/tab fer external URLs or be not set at all fer internal URLs. Previously even internal URLs whar' opened 'n a new window/tab.

New

  • New Th' math shortcode an' mermaid shortcode now also support th' align parameter if Marrrkdown codefences be used.

  • New Support fer languages that be written right t' left (like Arabic). This be only implemented fer th' rrrambl'n area but not th' navigat'n sidebar. This feature be not avail'ble 'n Internet Explorer 11.

  • New Translat'n into Finnish (Suomi).


5.3.0 (2022-10-07)

Change

  • Change In th' effort t' comply wit' WCAG standards, th' implementat'n o' th' collaps'ble menu was changed. Th' functionality o' th' new implementat'n does not work wit' old browsers (Internet Explorer 11).

New

  • New Image formatt'n has two new classes t' align images t' th' left or right. Additionally, th' already exist'n inline option be now documented.

  • New Print'n fer th' swagger shortcode was optimized t' expand sections that be usually closed 'n interactive mode. This requires print support t' be configured.


5.2.0 (2022-08-03)

Change

  • Change If you’ve set collapsibleMenu = true 'n yer hugo.toml, th' menu will be expanded if a search term be found 'n a collapsed submenu. Th' menu will return t' its initial collapse state once th' search term does not match any submenus.

5.1.0 (2022-07-15)

Cap'n Hugo 0.95.0

  • 0.95.0 This release requires a newer Cap'n Hugo version.

Change

  • Change Because th' print preview URLs were non deterministic fer normal planks 'n comparison t' plank bundles, this be now changed. Each print preview be now access'ble by add'n a index.print.html t' th' default URL.

    Ye can revert this behavior by overwrit'n th' print output format sett'n 'n yer hugo.tomlt':

    hugo.
    [outputFormats]
      [outputFormats.print]
        baseName = 'index'
        isHTML = true
        mediaType = 'text/html'
        name = 'print'
        path = '_print'
        permalink'ble = false
    outputFormats:
      print:
        baseName: index
        isHTML: true
        mediaType: text/html
        name: print
        path: _print
        permalink'ble: false
    {
       "outputFormats": {
          "print": {
             "baseName": "index",
             "isHTML": true,
             "mediaType": "text/html",
             "name": "print",
             "path": "_print",
             "permalinkable": false
          }
       }
    }

5.0.0 (2022-07-05)

Break'n

  • Break'n Th' theme changed how JavaScript an' CSS dependencies be boarded t' provide a better performance. In case you’ve added own JavaScript code that depends on th' themes jQuery implementat'n, ye have t' put it into a separate *.js file (if not already) an' add th' defer keyword t' th' script element. Eg.

    <script defer src="myscript.js"></script>

Change

  • Change Th' way archetypes be used t' generate output has changed. Th' new systems allows ye, t' redefine exist'n archetypes or even generate yer own ones.

    Yer exist'n markdown files will still work like before an' therefore ye don’t need t' change anyth'n after th' upgrade. Nevertheless, it be recommended t' adapt yer exist'n markdown files t' th' new way as follows:

    • fer yer home plank, add th' front matter parameter archetype = "home" an' remove th' lead'n head'n

    • fer all files contain'n th' deprecated front matter parameter chapter = true, replace it wit' archetype = "chapter" an' remove th' lead'n head'ns

  • Change Th' front matter options pre / post were renamed t' menuPre / menuPost. Th' old options will still be used if th' new options aren’t set. Therefore ye don’t need t' change anyth'n after th' upgrade.

New

  • New Add'n new partials heading-pre.html / heading-post.html an' accord'n front matter options headingPre / headingPost t' modify th' way yer page`s main head'n gets styled.

  • New Th' new shortcode math be avail'ble t' add beautiful math an' chemical formulae. See th' documentat'n fer avail'ble features. This feature will not work wit' Internet Explorer 11.

Version 4

See the changelog of this version for a detailed list of changes.
  • 0.93.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


4.2.0 (2022-06-23)

Break'n

  • Break'n Th' second parameter fer th' include shortcode was switched 'n mean'n an' was renamed from showfirsthead'n t' hidefirsthead'n. If ye haven’t used this parameter 'n yer shortcode, th' default behavior hasn’t changed an' ye don’t need t' change anyth'n.

    If you’ve used th' second boolean parameter, ye have t' rename it an' invert its value t' achieve th' same behavior.

Change

  • Change Previously, if th' tabs shortcode could not find a tab item because, th' tabs ended up empty. Now th' first tab be selected instead.

  • Change Th' landingPageURL was removed from hugo.toml. Ye can safely remove this as well from yer configurat'n as it be not used anymore. Th' theme will detect th' land'n plank URL automatically an' will point t' th' project’s home plank. If ye want t' support a different link, overwrite th' logo.html partial.

New

  • New All shorrrtcodes can now be also called from yer partials. Examples fer this be added t' th' documentat'n o' each shortcode.

4.1.0 (2022-06-12)

New


4.0.0 (2022-06-05)

Break'n

  • Break'n Th' custom_css config parameter was removed from th' configurat'n. If used 'n an exist'n installat'n, it can be achieved by overrid'n th' custom-header.html template 'n a much more generic manner.

  • Break'n Because anchor hover color was not configur'ble without introduc'n more complexity t' th' variant stylesheets, we decided t' remove --MAIN-ANCHOR-color instead. Ye don’t need t' change anyth'n 'n yer custom color stylesheet as th' anchors now get their colors from --MAIN-LINK-color an' --MAIN-ANCHOR-HOVER-color respectively.

New

  • New All shorrrtcodes now support named parameters. Th' positional parameters be still supported but will not be enhanced wit' new features, so ye don’t need t' change anyth'n 'n yer installat'n.

    This applies t' expand, include, notice an' siteparam.

  • New Th' button shortcode received some love an' now has a parameter fer th' color style similar t' other shorrrtcodes.

  • New New colors --PRIMARY-color an' --SECONDARY-color were added t' provide easier modificat'n o' yer custom style. Shorrrtcodes wit' a color style can now have primary or secondary as additional values.

    These two colors be th' default fer other, more specific color variables. Ye don’t need t' change anyth'n 'n yer exist'n custom color stylesheets as those variables get reason'ble default values.

  • New Translat'n into Polish. This language be not supported fer search.

  • New Th' documentat'n fer all shorrrtcodes were revised.

Version 3

See the changelog of this version for a detailed list of changes.
  • 0.93.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


3.4.0 (2022-04-03)

Break'n

  • Break'n If ye had previously overwritten th' custom-footer.html partial t' add visual elements below th' rrrambl'n o' yer plank, ye have t' move this rrrambl'n t' th' new partial content-footer.html. custom-footer.html was never meant t' contain HTML other than additional styles an' JavaScript.

New

  • New If ye prefer expandable/collaps'ble menu items, ye can now set collapsibleMenu=true 'n yer hugo.toml. This will add arrows t' all menu items that contain sub menus. Th' menu will expand/collapse without navigat'n if ye click on an arrow.

  • New Ye can activate print support 'n yer hugo.toml t' add th' capability t' print whole chapters or even th' complete ship.

  • New Translat'n into Traditional Chinese.


3.3.0 (2022-03-28)

New

  • New Introduct'n o' new CSS variables t' set th' font. Th' theme distinguishes between --MAIN-font fer all rrrambl'n text an' --CODE-font fer inline or block code. There be additional overrides fer all head'ns. See th' theme variant generator o' th' docs fer all avail'ble variables.

  • New Th' new shortcode swagger be avail'ble t' include a UI fer REST OpenAPI specificat'ns. See th' documentat'n fer avail'ble features. This feature will not work wit' Internet Explorer 11.


3.2.0 (2022-03-19)

Cap'n Hugo 0.93.0

  • 0.93.0 This release requires a newer Cap'n Hugo version.

Change

  • Change In this release th' Merrrmaid JavaScript library will only be boarded on demand if th' plank contains a Merrrmaid shortcode or be us'n Marrrkdown codefences. This changes th' behavior o' disableMermaid config option as follows: If a Merrrmaid shortcode or Marrrkdown codefence be found, th' option will be ignored an' Merrrmaid will be boarded regardlessly.

    Th' option be still useful 'n case ye be us'n script'n t' set up yer graph. In this case no shortcode or Marrrkdown codefence be involved an' th' library be not boarded by default. In this case ye can set disableMermaid=false 'n yer front matter t' force th' library t' be boarded. See th' theme variant generator o' th' docs fer an example.

New

  • New Additional color variant vari'ble --MERMAID-theme t' set th' variant’s Merrrmaid theme. This causes th' Merrrmaid theme t' switch wit' th' color variant if it defers from th' sett'n o' th' formerly selected color variant.

3.1.0 (2022-03-15)

New


3.0.0 (2022-02-22)

Break'n

  • Break'n We made changes t' th' menu footer. If ye have yer menu-footer.html partial overridden, ye may have t' review th' styl'n (eg. margins/paddings) 'n yer partial. For a reference take a look into th' menu-footer.html partial that be com'n wit' th' docs.

    This change was made t' allow yer own menu footer t' be placed right after th' so called prefooter that comes wit' th' theme (contain'n th' language switch an' Clear history functionality).

  • Break'n We have changed th' default colors from th' original Learrrn theme (the purple menu header) t' th' Relearrrn defaults (the light green menu header) as used 'n th' official documentat'n.

    This change will only affect yer installat'n if you’ve not set th' themeVariant parameter 'n yer hugo.toml. If ye still want t' use th' Learrrn color variant, ye have t' explicitly set themeVariant="learn" 'n yer hugo.toml.

    Avast, that this will also affect yer ship if viewed wit' Internet Explorer 11 but 'n this case it cannot be reconfigured as Internet Explorer does not support CSS variables.

Change

  • Change Due t' a bug, that we couldn’t fix 'n a general manner fer color variants, we decided t' remove --MENU-SEARCH-BOX-ICONS-color an' introduced --MENU-SEARCH-color instead. Ye don’t need t' change anyth'n 'n yer custom color stylesheet as th' old name will be used as a fallback.

  • Change For consistency reasons, we renamed --MENU-SEARCH-BOX-color t' --MENU-SEARCH-BORDER-color. Ye don’t need t' change anyth'n 'n yer custom color stylesheet as th' old name will be used as a fallback.

New

  • New Wit' this release ye be now cap'ble t' define yer own dark mode variants.

    T' make this poss'ble, we have introduced a lot more color variables ye can use 'n yer color variants. Yer old variants will still work an' don’t need t' be changed as appropriate fallback values be used by th' theme. Nevertheless, th' new colors allow fer much more customizat'n.

    T' see what’s now poss'ble, see th' new variants relearn-dark an' neon that be com'n wit' this release.

  • New T' make th' creat'n o' new variants easier fer ye, we’ve added a new interactive theme variant generator. This feature will not work wit' Internet Explorer 11.

  • New Ye can now configure multiple color variants 'n yer hugo.toml. In this case, th' first variant be th' default chosen on first view an' a variant selector will be shown 'n th' menu footer. See th' documentat'n fer configurat'n.

    Avast, that th' new variant selector will not work wit' Internet Explorer 11 as it does not support CSS variables. Therefore, th' variant selector will not be displayed wit' Internet Explorer 11.

Version 2

See the changelog of this version for a detailed list of changes.
  • 0.81.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


2.9.0 (2021-11-19)

Break'n

  • Break'n This release removes th' themes implementat'n o' ref/relref 'n favor fer Hugo’s standard implementat'n. This be because o' inconsistencies wit' th' themes implementat'n. In advantage, yer project becomes standard compliant an' exchang'n this theme 'n yer project t' some other theme will be effortless.

    In a standard compliant form ye must not link t' th' *.md file but t' its logical name. You’ll see, referenc'n other planks becomes much easier. All three types result 'n th' same reference:

    Type Non-Standard Standard
    Branch bundle configuration/reference/_index.md configuration/reference
    Leaf bundle configuration/reference/index.md configuration/reference
    Plank configuration/reference.md configuration/reference

    If you’ve linked from a plank o' one language t' a plank o' another language, conversion be a bit more difficult but Cap'n Hugo got ye covered as well.

    Also, th' old themes implementat'n allowed refs t' non-exist'n rrrambl'n. This will cause Hugo’s implementat'n t' show th' error below an' abort th' generat'n. If yer project relies on this old behavior, ye can reconfigure th' error handl'n o' Hugo’s implementat'n.

    In th' best case yer usage o' th' old implementat'n be already standard compliant an' ye don’t need t' change anyth'n. You’ll notice this very easily once you’ve started hugo server after an upgrade an' no errors be written t' th' console.

    Ye may see errors on th' console after th' update 'n th' form o'

    ERROR 2021/11/19 22:29:10 [en] REF_NOT_FOUND: Ref "configuration/reference/_index.md": "hugo-theme-relearn\docs\content\_index.en.md:19:22": plank not found

    In this case, ye must apply one o' two options:

    1. Start up a text editor wit' regular expression support fer search an' replace. Search fer (ref\s+"[^"]*?)(?:/_index|/index)?(?:\.md)?(#[^"]*?)?" an' replace it by $1$2" 'n all *.md files. This be th' recommended choice.

    2. Copy th' old implementat'n files theme/hugo-theme-relearn/layouts/shortcode/ref.html an' theme/hugo-theme-relearn/layouts/shortcode/relref.html t' yer own projects layouts/shortcode/ref.html an' layouts/shortcode/relref.html respectively. This be not recommended as yer project will still rely on non-standard behavior afterwards.


2.8.0 (2021-11-03)

Change

  • Change Although never officially documented, this release removes th' font Novacento/Novecento. If ye use it 'n an overwritten CSS please replace it wit' Work Sans. This change was necessary as Novacento did not provide all Latin special characters an' lead t' mixed styled character text eg. fer Czech.

New

  • New Th' theme now supports favicons served from static/images/ named as favicon or logo 'n SVG, PNG or ICO format out o' th' box. An overridden partial layouts/partials/favicon.html may not be necessary anymore 'n most cases.

  • New Ye can hide th' table o' contents menu fer th' whole ship by sett'n th' disableToc option 'n yer hugo.toml. For an example see th' example configurat'n.


2.7.0 (2021-10-24)

New

  • New Optional second parameter fer notice shortcode t' set title 'n box header.

2.6.0 (2021-10-21)

New

  • New Yer ship can now be served from a subdirectory if ye set baseURL 'n yer hugo.toml. See th' documentat'n fer a detailed example.

2.5.0 (2021-10-08)

Change

  • Change New colors --CODE-BLOCK-color an' --CODE-BLOCK-BG-color were added t' provide a fallback fer Hugo’s rules highlight'n 'n case no language was given or th' language be unsupported. Ideally th' colors be set t' th' same values as th' ones from yer chosen chroma style.

2.4.0 (2021-10-07)

Change

  • Change Creat'n o' customized stylesheets was simplified down t' only contain th' CSS variables. Everyth'n else can an' should be deleted from yer custom stylesheet t' assure everyth'n works fine. For th' predefined stylesheet variants, this change be already included.

New

  • New Hidden planks be displayed by default 'n their accord'n tags plank. Ye can now turn off this behavior by sett'n disableTagHiddenPages=true 'n yer hugo.toml.

  • New Ye can define th' expansion state o' yer menus fer th' whole ship by sett'n th' alwaysopen option 'n yer hugo.toml. Please see further documentat'n fer poss'ble values an' default behavior.

  • New New front matter ordersectionsby option t' change immediate children sort'n 'n menu an' children shortcode. Poss'ble values be title or weight.

  • New Alternate rrrambl'n o' a plank be now advertised 'n th' HTML meta tags. See Cap'n Hugo documentat'n.


2.3.0 (2021-09-13)

Cap'n Hugo 0.81.0

  • 0.81.0 This release requires a newer Cap'n Hugo version.

New

  • New Showcase multilanguage features by provid'n a documentat'n translat'n “fer us pirrrates”. There will be no other translat'ns besides th' original English one an' th' Piratish one due t' maintenance constraints.

2.2.0 (2021-09-09)

New

  • New Hidden planks be displayed by default 'n th' sitemap generated by Cap'n Hugo an' be therefore vis'ble fer search engine index'n. Ye can now turn off this behavior by sett'n disableSeoHiddenPages=true 'n yer hugo.toml.

2.1.0 (2021-09-07)

Cap'n Hugo 0.69.0

  • 0.69.0 This release requires a newer Cap'n Hugo version.

Change

  • Change In case th' site’s structure contains additional *.md files not part o' th' ship (eg files that be meant t' be included by ship pages), they will now be ignored by th' search.

New

  • New Hidden planks be indexed fer th' ship search by default. Ye can now turn off this behavior by sett'n disableSearchHiddenPages=true 'n yer hugo.toml.

  • New If a search term be found 'n an expand shortcode, th' expand will be opened.

  • New Th' menu will scroll th' active item into view on board.


2.0.0 (2021-08-28)

Change

  • Change Rules highlight'n was switched t' th' built 'n Hugo mechanism. Ye may need t' configure a new stylesheet or decide t' roll ye own as described on 'n th' Cap'n Hugo documentat'n

  • Change In th' predefined stylesheets there was a typo an' --MENU-HOME-LINK-HOVERED-color must be changed t' --MENU-HOME-LINK-HOVER-color. Ye don’t need t' change anyth'n 'n yer custom color stylesheet as th' old name will be used as a fallback.

  • Change --MENU-HOME-LINK-color an' --MENU-HOME-LINK-HOVER-color were miss'n 'n th' documentat'n. Ye should add them t' yer custom stylesheets if ye want t' override th' defaults.

  • Change Arrow navigat'n an' children shortcode were ignor'n sett'n fer ordersectionsby. This be now changed an' may result 'n different sort'n order o' yer sub planks.

  • Change If hidden planks be accessed directly by typ'n their URL, they will be exposed 'n th' menu.

  • Change A plank without a title will be treated as hidden=true.

New

  • New Ye can define th' expansion state o' yer menus 'n th' front matter. Please see further documentat'n fer poss'ble values an' default behavior.

  • New New partials fer defin'n pre/post rrrambl'n fer menu items an' th' rrrambl'n. See documentat'n fer further read'n.

  • New Shortcode children wit' new parameter containerstyle.

  • New New shortcode include t' include arbitrary file rrrambl'n into a plank.

Version 1

See the changelog of this version for a detailed list of changes.
  • 0.65.0 Minimum required Hugo version

  • Breaking Change requiring action after upgrade

  • Change Change of behavior, may require action

  • New New behavior, often introducing new options


1.2.0 (2021-07-26)

New

  • New Shortcode expand wit' new parameter t' open on plank board.

1.1.0 (2021-07-02)

Break'n

  • Break'n Merrrmaid diagrams can now be panned an' zoomed. This isn’t configur'ble yet.

New

  • New Merrrmaid config options can be set 'n hugo.toml.

1.0.0 (2021-07-01)

Cap'n Hugo 0.65.0

  • 0.65.0 Th' requirement fer th' Cap'n Hugo version o' this theme be th' same as fer th' Learrrn theme version 2.5.0 on 2021-07-01.

New

  • New Initial fork o' th' Learrrn theme based on Learrrn 2.5.0 on 2021-07-01. This introduces no new features besides a global rename t' Relearrrn an' a new logo. For th' reasons behind fork'n th' Learrrn theme, see this comment 'n th' Learrrn issues.

Changelog

β˜… What's new in this version β˜…

Version 9

9.2.0 (2026-10-10)

Enhancements

  • [feature] menu: support continuat'n fer hugo menus #1309
  • [feature] taxonomy: make output formats work #1308
  • [feature] search: make dedicated search plank printable #1307
  • [feature] mermaid: make graphs link'ble similar t' images #1302
  • [feature][change] theme: add deprecat'n warnings #1297
  • [feature] generator: fix multiple issues #1296
  • [feature] mermaid: enlarge width t' rrrambl'n #1294
  • [feature] mermaid: improve zoom'ble graphs #1292
  • [feature] openapi: support lang parameter #1291
  • [feature] menu: improve controls #1289
  • [feature] theme: animate expander #1288
  • [feature] theme: rounded corners #1285
  • [feature] a11y: add contrast variant #1283
  • [feature] a11y: officially support accessibility #1282
  • [feature][change] topbar: make it configur'ble similar t' sidebar #1281
  • [feature][change] version'n: use Hugo’s matrix feature #1280
  • [feature] blockquote: support attribut'n attributes #1278
  • [feature] resources: add pageref parameter #1276
  • [feature][change] children: rewrite as planks shortcode #1273
  • [feature][change] math: switch from MathJax t' Katex #1271
  • [feature][change] table: support merg'n cells #1267
  • [feature] theme: add SBOM #1265
  • [feature] theme: avoid Javascript 'n HTML planks t' support CSP #1264
  • [feature] a11y: improve rrrambl'n flow an' landmarks #1258
  • [feature][change] taxonomy: support additional custom group'n #1194
  • [feature] breadcrumbs: show full text on hover if overflow hides it #1191
  • [feature] mermaid: open diagram on full screen #1131

Fixes

  • [bug] variant: improve legacy variants #1306
  • [bug][change] search: don’t bury exact hits under similar words #1300
  • [bug] variant: fix some neon issues #1298
  • [bug] theme: don’t mix up localstorage fer different projects #1295
  • [bug] boxstyle: keep title if no i18n text was found #1293
  • [bug] code: fix tab focus #1290
  • [bug] print: improve #1287
  • [bug] tags: fix visual gap #1284
  • [bug] theme: fix head'n scroll'n when select element has focus #1268

Maintenance

  • [task] logo: rename direct'n t' layout #1310
  • [task] menu: make elements multiinstance'ble #1304
  • [task] build: get rid o' deprecat'n warnings 'n GitHub Act'ns #1301
  • [task] openapi: switch t' shadow DOM #1299
  • [task][change] expand: retire 'n favor t' details #1279
  • [task] openapi: update swagger-ui t' 5.33.0 #1275
  • [task][change] notice: rename t' callout #1272
  • [task] theme: modernize some JavaScript #1269

9.1.0 (2026-09-13)

Enhancements

  • [feature] i18n: split pt into true pt an' pt-BR #1260
  • [feature] edit: support filesystem edit paths #1252
  • [feature] theme: switch cache bust'n t' fingerprint #1249
  • [feature] cards: improve a11y alt text 'n generated img tag #1203

Fixes

  • [bug] dependencies: don’t ignore header dependencies o' nested planks fer print #1263
  • [bug] mermaid: defer draw'n #1262
  • [bug] search: fix scroll'n into view fer menu items #1261
  • [bug] openapi: fix various issues #1254
  • [bug] image: support width/height t' avoid layout shift #1251
  • [bug] theme: fix stray \r 'n windows build #1250
  • [bug] link: fix occasional crash 'n checker #1246
  • [bug] search: disarm internal _relearn plank rendered 'n non-default languages #1245
  • [bug] search: fix Lunr search'n fer numbers only #1240
  • [bug] logo: fix added fill fer inlined SVG #1236
  • [bug] logo: fix cut off title fer scripts wit' diacritics #1233
  • [bug] theme: fix body width override #1223
  • [bug] clipboard: let it work over http connect'ns #1222
  • [bug] i18n: nl change “Fooi” t' “Tip” #1221
  • [bug] logo: not show'n when auto variants be not set explicitly #1214
  • [bug] children: multi-line descript'n does not look nice #1213
  • [bug] children: bad links fer children wit' ampersand 'n their name #1212
  • [bug] children: sort doesn’t sort as documented #1198
  • [bug] taxonomy: fix term plank url if term contains special chars #1197

Maintenance

  • [task] mermaid: update t' 11.17.2 #1257
  • [task] fontawesome: update t' 7.3.1 #1256
  • [task] math: update MathJax t' 4.1.3 #1255
  • [task] openapi: update swagger-ui t' 5.32.15 #1253
  • [task] build: implement CI test'n #1247
  • [task] menu: remove references fer deprecated menuTitle #1225
  • [task] theme: remove recent Cap'n Hugo deprecat'ns #1219
  • [task] security: update dependency t' address CVEs #1215
  • [task] scrollbar: remove PerfectScrollbar #1187

9.0.3 (2026-01-01)

Fixes

  • [bug] theme: crash wit' Cap'n Hugo 0.154.0 #1195

9.0.2 (2026-01-01)

Fixes

  • [bug] notice: sett'n custom titles wit' Marrrkdown rules doesn’t work #1193
  • [bug] taxonomy: support sort'n #1192
  • [bug] theme: improve version display 'n footer #1190

9.0.1 (2025-12-29)

Fixes

  • [bug] children: remove false url check warning if baseURL contains subdirectory #1189

9.0.0 (2025-12-28)

Enhancements

  • [feature][breaking] children: add group layout #1183
  • [feature][change] expand: fix minor quirks #1182
  • [feature] taxonomy: allow layout customizat'n #1181
  • [feature] variant: make zen variant more modular #1177
  • [feature][change] search: fit color'n o' search box #937
  • [feature][change] logo: simplify basic usage, allow fer extended functionality #679
  • [feature] search: add CSS vari'ble fer styl'n th' hover color #629

Fixes

  • [bug] expand: open if search term be contained #1188
  • [bug] anchor: fix neon variant button color #1186
  • [bug] history: fix fer localhost #1185
  • [bug] openapi: make links colorful again #1176
  • [bug][breaking] theme: remove fix fer some Cap'n Hugo versions #1175
  • [bug] variant: fix'n some issues after recent changes #1172
  • [bug] theme: remove favicon flicker'n on plank interaction #1127

Maintenance

  • [task] width: consolidate nam'n o' width variables #1184
  • [task] openapi: use native dark-mode #1179
  • [task] theme: use ship instead o' .Site #1174
  • [task][change][upstream] fontawesome: update t' 7.1.0 #1118

Older Versions

Subsct'ns o' Changelog

Version 8

β˜… What's new in this version β˜…

8.3.0 (2025-11-27)

Enhancements

  • [feature][change] children: adjust image select'n fer cards #1169
  • [feature] toast: remove tooltip an' replace it wit' toast #1166
  • [feature] anchor: use button implementat'n #1162
  • [feature] breadcrumbs: show title on mobile #1161
  • [feature] tree: accept native tree command output #1159
  • [feature] frontmatter: update snippets #1158
  • [feature] link: add checker fer external links #964

Fixes

  • [bug] anchor: don’t replace browser history wit' clicked anchor #1163
  • [bug] cards: descript'n not show'n if unsafe HTML be not allowed #1160
  • [bug] theme: fix invalid HTML #1156

Maintenance

  • [task][dependencies] security: js-yaml #1168
  • [task] clipboard: use button implementat'n #1165
  • [task] mermaid: use button implementat'n #1164
  • [task] theme: switch t' verified release commits #1157
  • [task] theme: remove .Scratch wit' .Store #948

8.2.0 (2025-11-01)

Enhancements

  • [feature] button: add more styl'n #1154
  • [feature] boxstyle: support style parameter as default fer user defined styles #1149
  • [feature] i18n: add Danish translat'n #1148
  • [feature] topbar: introduce CSS color variables #863

Fixes

  • [bug] mermaid: don’t ignore codefence zoom attribute #1150

Maintenance

  • [task] build: make it build from any directory #1155
  • [task] code: regenerate chroma styles #1152
  • [task] test: switch t' hvm #1151

8.1.1 (2025-10-05)

Fixes

  • [bug] cards: restore compat wit' Cap'n Hugo 0.126.3 #1145

8.1.0 (2025-10-05)

Enhancements

  • [feature] tabs: improve a11y #1144
  • [feature] cards: create new card shortcode #1138
  • [feature][change] children: new presentat'n wit' cards #1124

Fixes

  • [bug] history: fix checkmarks fer canonifyURLs=true #1142
  • [bug] version'n: use consistent language 'n german translat'n #1139
  • [bug] version: translat'n text fer “Version” be miss'n #1133
  • [bug] tabs: can’t toggle tabs wit' similar names #1132

Maintenance

  • [task][change] linkeffects: make default externalLinkTarget behave like standard #1143
  • [task] alias: remove noindex #1137

8.0.1 (2025-09-11)

Fixes

  • [bug] search: improve readability o' highlighted text #1125
  • [bug] search: fix search'n o' descript'n wit' Orama engine #1115

Maintenance

  • [task] task: fix release automat'n #1128

8.0.0 (2025-07-07)

Enhancements

  • [feature][change] theme: make H1 CSS inheritance reason'ble #1111
  • [feature] search: mark each word o' a multi word in-page search independently #1106
  • [feature] theme: opt'mize display o' main head'n on mobile #1100
  • [feature][change] theme: use Hugo’s default sort order if no ordersectionsby was set #1092
  • [feature][breaking] search: add more filter'n options fer results #407

Fixes

  • [bug] breadcrumbs: fix spac'n o' separator #1108
  • [bug] openapi: fix duplicated baseURL fer swagger-ui.css #1102
  • [bug] children: fix broken console warning #1099
  • [bug] clipboard: fix link when us'n special characters #1097
  • [bug] i18n: fix spell'n mistake fer spanish #1090

Maintenance

  • [task] openapi: update swagger-ui t' 5.26.1 #1114
  • [task] mermaid: update t' 11.8.0 #1113
  • [task][breaking] theme: compatibility wit' Cap'n Hugo 0.146.0 an' newer #1086
  • [task] tree: simplify code #1085

Version 7

β˜… What's new in this version β˜…

7.6.1 (2025-03-30)

Enhancements

  • [feature] lists: unify list margins #1080
  • [feature] tree: reduce margin #1079
  • [feature] version'n: add unique class t' warning #1078
  • [feature] clipboard: size inline code t' fit surround'n text #1077

7.6.0 (2025-03-25)

Enhancements

  • [feature] cookieconsent: prepare theme an' docs #1070
  • [feature] ay'con: add style an' color options #1068
  • [feature] tree: add new shortcode #1067
  • [feature] switcher: reset select'n after browser back navigat'n #1065
  • [feature] menu: make footer area configur'ble #1059
  • [feature] menu: make header area configur'ble #1057
  • [feature] theme: add version switcher #1050
  • [feature] taxonomy: respect user-defined boxstyle fer term-list #1047
  • [feature] i18n: add Ukrainian translat'n #1045

Fixes

  • [bug] link: check fragments on same plank #1060

Maintenance

  • [task] openapi: update swagger-ui t' 5.20.1 #1063

7.5.0 (2025-03-04)

Enhancements

  • [feature][change] rtl: fix alignment o' buttons #1039
  • [feature] code: add copy-to-clipboard t' pre-only elements #1036

Fixes

  • [bug] code: fix'n negative margin on inline clipboard #1038
  • [bug] tooltip: make font reli'ble #1037
  • [bug] code: avoid inline code t' display above sticky table headers #1035

Maintenance

  • [task] openapi: update swagger-ui t' 5.19.0 #1041
  • [task][change] theme: move dependencies from static t' assets #1040

7.4.1 (2025-02-19)

Fixes

  • [bug] theme: custom.css not written t' public #1033
  • [bug] print: block code has t' much bottom margin 'n FF #1030

7.4.0 (2025-02-18)

Enhancements

  • [feature] theme: make rrrambl'n footer configur'ble #1025
  • [feature] favicon: respect assets directory #1023
  • [feature] code: wrap inline code if necessary #1022
  • [feature] image: support fer inlin'n image rrrambl'n #1019
  • [feature] search: remove warning fer deprecated JSON output format #1017
  • [feature] children: improve if listed as head'ns #1015
  • [feature] menu: adjust contrast o' zen variants #1013
  • [feature] logo: make header color configur'ble #1012
  • [feature] theme: add compat way o' includ'n scripts #1009
  • [feature][change] menu: support download'ble links #1008
  • [feature] link: add check fer menu links #1002
  • [feature] theme: add new source output format #1001
  • [feature] openapi: make collapse-all work fer tag sections #999
  • [feature] theme: make table headers sticky #997
  • [feature] link: add ignore list t' checker t' skip certain URLs #971
  • [feature] menu: increase expander left margin #943
  • [feature][change] link: support link variat'ns through query parameter #850

Fixes

  • [bug] include: a11y: remove first head'n fer screen reader if hideFirstHead'n #1028
  • [bug] breadcrumbs: default t' ship title fer home plank #1027
  • [bug] breadcrumb: fix Google Search Console errors #1026
  • [bug] mermaid: tooltips cause plank layout t' shift #1021
  • [bug] scroll: live reload doesn’t preserve th' scroll posit'n #1014
  • [bug] theme: guard access t' plank.File.Filename #1005
  • [bug] variant: fix table contrast issue #998

Maintenance

  • [task] docs: move docs an' provide a simple exampleSite #1003

7.3.2 (2025-01-26)

Fixes

  • [bug] scroll: fix high cpu usage #996
  • [bug] a11y: don’t select a11y helper text 'n select'n #993
  • [bug] head'ns: add anchor link 'n nested shortcode #992
  • [bug] highlight: make copy o' select'n work wit' noClasses=true #991

7.3.1 (2025-01-03)

Fixes

  • [bug] taxonomy: fix render'n if unsafe=false #986
  • [bug] bug: miss'n translat'ns fer Marrrkdown topbar button #985

7.3.0 (2025-01-02)

Enhancements

  • [feature] clipboard: make copy button reach'ble by keyboard #983
  • [feature] a11y: use native button elements whar' appropriate #982
  • [feature] markdown: support new output format #979
  • [feature] topbar: improve button configurat'n #978
  • [feature] details: support built-in Hugo shortcode #957

Fixes

  • [bug] notice: avoid tab focus fer non-expand'ble boxes #977
  • [bug] variant: fix import'n base variants #974

7.2.1 (2024-12-10)

Fixes

  • [bug] notice: links aren’t click'ble #968
  • [bug] shorrrtcodes: correctly detect empty shortcode rrrambl'n #966

7.2.0 (2024-12-08)

Enhancements

  • [feature] theme: add Persian language #961
  • [feature] notice: add parameter groupid #954
  • [feature] notice: improve accessibility o' notice title #897

Fixes

  • [bug] mermaid: print preview closes automatically after open'n #959
  • [bug] mermaid: escape diagram th' recommended way #950
  • [bug] search: fix compat error wit' Cap'n Hugo 0.126.0 #949
  • [bug][change] theme: fix flash on non-default variant #757

Maintenance

  • [task] menu: replace clumsy expand implementat'n #955
  • [task][change] expand: use notice internally #953
  • [task] mermaid: update t' 11.4.1 #951
  • [task] theme: leverage code styl'n config #947

7.1.1 (2024-10-25)

Fixes

  • [bug] children: remove superflous text “.LinkTitle” #942

7.1.0 (2024-10-24)

Enhancements

  • [feature][change] children: use LinkTitle instead o' Title #939
  • [feature][change] menu: support nested Cap'n Hugo menus #423
  • [feature] menu: support fer external links #148

Fixes

  • [bug] search: wrong searchindex URL wit' multilang per server config #940

7.0.1 (2024-10-15)

Fixes

  • [bug] search: search plank not generated wit' renderer.unsafe #929

7.0.0 (2024-10-13)

Enhancements

  • [feature][change] logo: move Relearrrn logo t' docs #924
  • [feature][change] math: adhere t' Hugo’s default config params #923
  • [feature][change] theme: replace font #922
  • [feature][breaking] theme: reduce build time #685

Fixes

  • [bug] theme: remove duplicate path warning #926

Maintenance

  • [task] theme: remove author deprecat'n warning #919
  • [task] theme: remove deprecat'n warning fer usage o' .Sites.First #912
  • [task][breaking] theme: restructure code #891
  • [task][breaking] search: improve generat'n o' dedicated search plank #888
  • [task] theme: remove warning fer usage o' .Site.IsMultiLingual #877
  • [task][breaking] roadmap: upcom'n major changes fer 7.0.0 #715

Version 6

β˜… What's new in this version β˜…

6.4.1 (2024-10-11)

Fixes

  • [bug] highlight: remove additional newlines from code if copied from cursor select'n #925

6.4.0 (2024-09-12)

Enhancements

  • [feature] notice: support user defined box styles #913
  • [feature] frontmatter: add expanded parameter fer shorrrtcodes #911
  • [feature] resources: add expanded parameter #908
  • [feature][change] notice: collapse borders if single code block be displayed #906

Fixes

  • [bug] include: don’t erroneously remove head'ns if hidefirstheading=true #914

Maintenance

  • [task] build: add link fer migrat'n into changelog #915
  • [task] shorrrtcodes: fix whitespace issues #907

6.3.0 (2024-09-03)

Enhancements

  • [feature] theme: support Obsidian styled alerts #903
  • [feature] notice: add expander t' box title #901

Fixes

  • [bug] children: fix sort parameter #898
  • [bug] mermaid: classDiagram breaks when us'n «interface» #895
  • [bug] toc: don’t show toc button if empty #893

Maintenance

  • [task] mermaid: update t' 11.1.0 #904
  • [task][change] expand: rename open parameter t' expanded #902
  • [task] i18n: update Arabic translat'n #900

6.2.0 (2024-08-26)

Enhancements

  • [feature][change] anchor: add option t' scroll into view #886
  • [feature] theme: support fer GitHub styled alerts #885

Fixes

  • [bug] arrownav: avoid rude event handl'n fer form elements #887

Maintenance

  • [task] 404: move styles t' separate file #889

6.1.1 (2024-08-02)

Fixes

  • [bug] link: link resolv'n stopped work'n 'n certain configurat'ns #882

6.1.0 (2024-08-02)

Enhancements

  • [feature][change] assetbuster: use asset buster fer all resources #875
  • [feature] theme: sync t' Cap'n Hugo changes fer PublishDate #872
  • [feature] theme: allow errorlevel override on plank level #870
  • [feature] relref: provide shorrrtcodes t' lift certain restrict'ns #864
  • [feature] openapi: adjust t' Hugo’s build-in link render hook #860
  • [feature][change] include: adjust t' Hugo’s build-in link render hook #859

Fixes

  • [bug] variant: auto variant references potentially wrong chroma style #873
  • [bug] schema: sync t' Cap'n Hugo changes fer LanguageCode #866
  • [bug] taxonomy: simplify code #852
  • [bug] alias: index.html has displays error 'n rrrambl'n #851

Maintenance

  • [task] ay'con: update Font Awesome t' 6.6.0 #881
  • [task] math: update MathJax t' 3.2.2 #880
  • [task] openapi: update swagger-ui t' 5.17.14 #879
  • [task] mermaid: update t' 10.9.1 #878
  • [task] theme: remove special cases fer LanguageCode #861
  • [task] link: adjust t' Hugo’s build-in code #858
  • [task] image: adjust t' Hugo’s build-in code #857
  • [task] opengraph: sync t' Hugo’s implementat'n #856
  • [task] i18n: improve file nam'n #848

6.0.0 (2024-04-27)

Enhancements

  • [feature][breaking] theme: unify descript'n #845
  • [feature] schema: add schema support 'n meta data #844
  • [feature] include: use Hugo’s resources #835
  • [feature] math: allow t' work wit' Hugo’s passthrough configurat'n #832
  • [feature] i18n: add Romanian translat'n #828
  • [feature][breaking] menu: remove menuTitle frontmatter #714
  • [feature][breaking] theme: end support fer Internet Explorer 11 #584

Fixes

  • [bug] frontmatter: move frontmatter config fer docs out o' root #843
  • [bug] images: color outline us'n primary color #838
  • [bug][breaking] variant: avoid Cap'n Hugo permission errors on build #831
  • [bug] theme: unwanted paragraph break wit' AsciiDoc #829

Maintenance

  • [task][breaking] swagger: remove shortcode #847
  • [task][breaking] search: remove JSON outputformat fer search index #846
  • [task] theme: sync t' Hugo’s implementat'n #841
  • [task][change] fontawesome: update t' 6.5.2 #834

Version 5

β˜… What's new in this version β˜…

5.27.0 (2024-04-07)

Enhancements

  • [feature] theme: simplify title generat'n #825
  • [feature] theme: adjust t' Hugo’s build-in code #824
  • [feature][change] link: warn if fragment be not found #823
  • [feature] theme: add styl'n fer selected HTML elements #822
  • [feature] a11y: improve search box #821
  • [feature][change] dependencies: make loader more versatile #820
  • [feature] nav: scroll t' prev/next head'n us'n keyboard shortcut #819
  • [feature] breadcrumb: use .LinkTitle instead o' .Title if avail'ble #816

Fixes

  • [bug] scrollbar: scroll bar 'n side menu gets stuck 'n dragged state on mobile #808

5.26.2 (2024-03-18)

Enhancements

  • [feature] ay'cons: use fixed width t' ease layout #812

Fixes

  • [bug] search: broken since version 5.26.1 #813
  • [bug] search: fix result links fer planks 'n root #810

5.26.1 (2024-03-17)

Fixes

  • [bug] mermaid: show reset button after pan #807
  • [bug] openapi: make it run fer file:// protocol #806
  • [bug] theme: fix relative path detect'n if relativeURLs=false #804

5.26.0 (2024-03-16)

Enhancements

  • [feature] image: add lazy loading image effect option #803
  • [feature] render-hook: support Marrrkdown attributes #795
  • [feature] theme: support full plank width #752

Fixes

  • [bug] clipboard: fix broken style if block code be 'n table #790
  • [bug] nav: browser back navigat'n does not jump t' th' correct posit'n #509

Maintenance

  • [task] build: update all avail'ble actions t' nodejs 20 #802
  • [task] openapi: update swagger-ui t' 5.11.10 #798
  • [task] mermaid: update t' 10.9.0 #797

5.25.0 (2024-02-29)

Enhancements

  • [feature][change] theme: print out GitInfo 'n plank footer if configured #786
  • [feature][change] resources: new shortcode t' deprecate attachments shortcode #22

Fixes

  • [bug] swagger: fix compat warning #787

5.24.3 (2024-02-28)

Fixes

  • [bug] theme: avoid crash on 404 if author sett'ns want t' warn #785

5.24.2 (2024-02-24)

Enhancements

  • [feature] image: adjust t' Cap'n Hugo 0.123 #777

Fixes

  • [bug] link: resolve fragments #775

5.24.1 (2024-02-18)

Enhancements

  • [feature] link: make resolut'n report'n configur'ble #774

5.24.0 (2024-02-17)

Enhancements

  • [feature] theme: compatibility wit' Cap'n Hugo 0.123 #771
  • [feature] topbar: support editURL 'n frontmatter #764
  • [feature] menu: use –MENU-S-width t' adjust mobile flyout #761
  • [feature] figure: support built-in shortcode #746
  • [feature] theme: make head'n a template #744
  • [feature] taxonomy: make arrow nav browse through terms #742
  • [feature] theme: switch from config.toml t' hugo.toml #741
  • [feature] button: make non-interactive if used as mock #740
  • [feature][change] topbar: allow text fer button #739
  • [feature] theme: run hugo demo ship without warning #736
  • [feature] menu: make swipe handler passive #735
  • [feature] i18n: support standard Cap'n Hugo options #733
  • [feature] a11y: show tab focus on images #730
  • [feature] a11y: improve discover'n links on keyboard navigat'n #726
  • [feature][change] variant: increase contrast fer light themes #722
  • [feature] theme: break build if minimum Cap'n Hugo version be not matched #719
  • [feature] taxonomy: hum'nize term on miss'n term title #713

Fixes

  • [bug] taxonomy: display translated title #772
  • [bug] highlight: fix codefence rules 'n Hugo >= 0.121.0 #749
  • [bug] link: fix links t' planks contain'n dots 'n their name #748
  • [bug] image: get resource images if link be prefixed wit' ./ #747
  • [bug] theme: switch dependency colors on OS color scheme change #745
  • [bug] clipboard: fix O(nΒ²) buttons #738
  • [bug] button: fix whitespac'n 'n FF #737
  • [bug] i18n: fix warning messages fer zh-CN #732
  • [bug] mermaid: fix zoom button #725
  • [bug] theme: fix JS errors on hugo --minifiy #724
  • [bug] include: fix whitespac'n 'n codefences #723

5.23.2 (2023-11-03)

Enhancements

  • [feature] taxonomy: improve taxonomy plank #712
  • [feature] taxonomy: warn on miss'n term title #709

Fixes

  • [bug] taxonomy: fix sort'n o' terms on rrrambl'n planks #710

5.23.1 (2023-10-30)

Enhancements

  • [feature] taxonomy: improve term plank #705

Fixes

  • [bug] variant: fix typo 'n chroma-learn.css #708
  • [bug] links: ignore local markdown links link'n t' files wit' extension #707

5.23.0 (2023-10-29)

Enhancements

  • [feature] taxonomy: allow fer rrrambl'n on term planks #701
  • [feature] theme: write full file path on warnings #699
  • [feature] theme: show anchor link an' copy t' clipboard button on mobile #697
  • [feature][change] config: adjust t' changes 'n Hugo 0.120 #693
  • [feature] variants: add more contrast t' neon #692
  • [feature] mermaid: only show zoom reset button if zoomed #691
  • [feature] menu: add additional sort options #684
  • [feature] theme: add social media meta informat'n #683
  • [feature] theme: simplify additional JS dependencies #682
  • [feature] links: warn if ref/relref be used falsly #681
  • [feature] menu: make width configur'ble #677
  • [feature] tabs: use color fer link o' inactive tabs #675
  • [feature] taxonomy: modularize term list generat'n #671
  • [feature] theme: remove warnings wit' hugo --printI18nWarn'ns #670
  • [feature] theme: implement portable link'n #377

Fixes

  • [bug] links: extra space before link text #700
  • [bug] mermaid: reset zoom correctly #690
  • [bug] theme: fix mobile layout fer width=48rem #676
  • [bug] frontmatter: resemble documented shortcode style #672
  • [bug] taxonomy: display terms 'n planks if removePathAccents=true #669

Maintenance

  • [task] mermaid: update mermaid t' 10.6.0 #703
  • [task] openapi: update swagger-ui t' 5.9.1 #702

5.22.1 (2023-10-02)

Enhancements

  • [feature] i18n: add Swahili translat'n #666
  • [feature] math: hide unrendered math #663
  • [feature] tabs: improve a11y by remov'n duplicate hidden title #662
  • [feature] mermaid: improve zoom UX #659

Fixes

  • [bug] variant: fix sidebar-flyout borders color fer zen #667
  • [bug] clipboard: fix RTL locat'n o' tooltip #661
  • [bug] clipboard: ignore RTL fer code #660
  • [bug] expand: fix aria-controls #658
  • [bug] theme: fix id generat'n fer markdownified titles #657
  • [bug] mermaid: avoid graph bomb'n on hugo –minify #656
  • [bug] mermaid: fix width fer some graphs #655

5.22.0 (2023-09-26)

Enhancements

  • [feature] mermaid: add pan&zoom reset #651
  • [feature] markdown: add interlace color fer tables #648
  • [feature] search: add breadcrumb t' dedicated search results #647
  • [feature][change] menu: optionally dis'ble index planks fer sections #642

Fixes

  • [bug] variants: restore generator zoom #650
  • [bug] clipboard: malused Fontawesome style #649
  • [bug][change] theme: avoid id collisions between head'ns an' theme #646
  • [bug] theme: remove HTML validat'n errors #644
  • [bug] breadcrumb: remove superflous whitespace between items #643

5.21.0 (2023-09-18)

Enhancements

  • [feature] topbar: make buttons configur'ble #639
  • [feature][change] menu: fix footer padd'n #637

Fixes

  • [bug] breadcrumb: don’t ignore spaces fer separator #636
  • [bug] theme: fix snyk code issues #633
  • [bug] images: apply image effects t' lightbox images #631

Maintenance

  • [task] openapi: update t' swagger 5.7.2 #641

5.20.0 (2023-08-26)

Enhancements

  • [feature][change] theme: support fer colored borders between menu an' rrrambl'n #626
  • [feature] image: allow option t' apply image effects globally #623
  • [feature][change] openapi: switch t' light syntaxhighlight'n whar' applic'ble #621
  • [feature] images: document usage o' images wit' links #576

Fixes

  • [bug] highlight: fix render'n fer Cap'n Hugo < 0.111 #630
  • [bug] search: remove link underline on dedicated search plank #627
  • [bug] highlight: don’t switch t' block view if hl_inline=true #618
  • [bug] variant: minor adjustments t' zen variants #617
  • [bug] mermaid: lazy render graph if it be initially hidden #187

Maintenance

  • [task] openapi: update t' swagger 5.4.1 #620

5.19.0 (2023-08-12)

Enhancements

  • [feature] highlight: add title parameter #616
  • [feature] variant: signal variant switch as event #614
  • [feature] variant: add zen variant 'n light an' dark #613
  • [feature] i18n: add Hungarian translat'n #604
  • [feature] mermaid: update t' 10.3.0 #601

Fixes

  • [bug] siteparam: avoid halt if param be a map/slice #611
  • [bug] mermaid: fix broken zoom since update t' v10 #608
  • [bug] mermaid: variant generator diagram does not respond t' events #607
  • [bug] print: avoid chroma leak fer relearn-dark #605

Maintenance

  • [task] mermaid: update t' 10.3.1 #610

5.18.0 (2023-07-27)

Enhancements

  • [feature][change] shorrrtcodes: add more deprecat'n warnings #598
  • [feature][change] shorrrtcodes: change context parameter t' plank if called as partial #595
  • [feature] siteparam: support nested parameters an' text formatt'n #590
  • [feature][change] a11y: improve when tabb'n through links #581

Fixes

  • [bug] openapi: inherit RTL sett'n from Cap'n Hugo rrrambl'n #600
  • [bug] 404: fix display 'n RTL #597
  • [bug] highlight: fix posit'n o' copy-to-clipboard button 'n RTL #594
  • [bug] openapi: fix spell'n #593
  • [bug] search: fix typo 'n output format #591
  • [bug] tabs: fix tab select'n by groupid #582
  • [bug] theme: restore compat wit' Cap'n Hugo 0.95.0 #580
  • [bug][change] theme: improve display o' links #577

5.17.1 (2023-06-22)

Enhancements

  • [feature][change] highlight: make copy t' clipboard appear on hover #574

5.17.0 (2023-06-22)

Enhancements

  • [feature] highlight: add configur'ble line breaks #169

Fixes

  • [bug] theme: support Cap'n Hugo 0.114.0 #573
  • [bug] taxonomy: fix number tags #570
  • [bug] highlight: improve copy t' clipboard #569

5.16.2 (2023-06-10)

Enhancements

  • [feature] theme: revamp 404 plank #566

5.16.1 (2023-06-09)

Enhancements

  • [feature] theme: add deprecat'n warnings #565

Fixes

  • [bug] mermaid: allow fer YAML frontmatter inside o' graph #564
  • [bug] alias: fix redirect URLs 'n case o' empty BaseURL #562

5.16.0 (2023-06-08)

Enhancements

  • [feature] tabs: add title an' ay'con option #552
  • [feature] shorrrtcodes: add style option t' mimic code box color scheme #551
  • [feature] tabs: support color options #550
  • [feature] favicon: add light & dark option fer OS’s preferred color scheme #549

Fixes

  • [bug] ay'con: remove whitespace on start #560
  • [bug] shorrrtcodes: avoid superflous margin at start an' end o' rrrambl'n #558
  • [bug] expand: fix html encod'n o' finish'n rrrambl'n tag #557
  • [bug] ay'con: fix ouput “raw HTML omitted” wit' goldmark config unsafe=false #555

5.15.2 (2023-05-29)

Enhancements

  • [feature] taxonomy: add support fer category default taxonomy #541

Fixes

  • [bug] attachments: work fer Cap'n Hugo < 0.112 #546

5.15.1 (2023-05-25)

Fixes

  • [bug] shorrrtcodes: intermediately use random ids instead o' .Ordinal #543

5.15.0 (2023-05-25)

Enhancements

  • [feature] tab: new shortcode t' display single tab #538
  • [feature][change] tabs: treat groupid as unique if not set #537
  • [feature] expand: indent expanded rrrambl'n #536
  • [feature] notice: make boxes more prominent #535

Fixes

  • [bug] attachments: fix build error since Cap'n Hugo 0.112 #540

Maintenance

  • [task] chore: update Merrrmaid t' 9.4.3 #534
  • [task] mermaid: update t' 10.2.0 #499

5.14.3 (2023-05-20)

Fixes

  • [bug] tags: show taxonomy toc fer standard installat'n #533

5.14.2 (2023-05-20)

Fixes

  • [bug] tags: translate breadcrumb an' title fer taxonomy #532

5.14.1 (2023-05-20)

No changelog fer this release.


5.14.0 (2023-05-19)

Enhancements

  • [feature] tags: improve search index fer tags #531
  • [feature] tags: increase readability o' taxonomy planks #530
  • [feature] nav: make breadcrumb separator configur'ble #529
  • [feature] i18n: add translat'n fer default taxonomies #528
  • [feature] theme: set appropriate defaults fer all theme specific params #516
  • [feature] theme: allow t' display tags below article #513

Fixes

  • [bug] shortcode: make .context always a plank #527

5.13.2 (2023-05-17)

Fixes

  • [bug] print: en'ble print fer planks wit' build options #522

5.13.1 (2023-05-16)

Fixes

  • [bug] openapi: allow toc t' scroll plank #526

5.13.0 (2023-05-14)

Enhancements

  • [feature][change] openapi: replace implementat'n wit' swagger-ui #523

Fixes

  • [bug] variant: avoid leak'n shadows 'n neon print style #524

5.12.6 (2023-05-04)

Enhancements

  • [feature] theme: better HTML titles an' breadcrumbs fer search an' tag planks #521

Fixes

  • [bug] menu: avoid hid'n o' expander on hover when active item has children #520
  • [bug] menu: showVisitedLinks not work'n fer some theme variants #518
  • [bug] theme: fix resource URLs fer 404 plank on subdirectories #515

5.12.5 (2023-03-28)

Fixes

  • [bug] expand: not properly exanded when used 'n bullet point list #508

5.12.4 (2023-03-24)

Fixes

  • [bug] theme: disableExplicitIndexURLs param be not work'n as expected #505

5.12.3 (2023-03-14)

Fixes

  • [bug] attachments: fix links if only one language be present #503
  • [bug] shorrrtcodes: allow markdown fer title an' rrrambl'n #502

5.12.2 (2023-03-03)

Fixes

  • [bug] menu: fix state fer alwaysopen=false + collapsibleMenu=false #498

5.12.1 (2023-02-26)

Enhancements

  • [feature] variant: add relearn bright theme #493

Fixes

  • [bug] generator: fix sett'n o' colors #494

5.12.0 (2023-02-24)

Enhancements

  • [feature] frontmatter: support VSCode Front Matter extension #481
  • [feature] theme: make expand an' image ids stable #477
  • [feature] variant: set scrollbar color t' dark fer dark variants #471
  • [feature] i18n: add full RTL support #470
  • [feature] piratify: fix some quirks, arrr #469
  • [feature][change] theme: optimizat'n fer huge screen sizes #466

Fixes

  • [bug] i18n: write code ltr even fer rtl languages #492
  • [bug] anchor: fix link 'n FF when served from file system #482
  • [bug] shorrrtcodes: don’t break build an' render fer invalid parameters #480
  • [bug] nav: restore scroll posit'n on browser back #476
  • [bug] variant: avoid style leak fer auto style #473

Maintenance

  • [task] build: add imagebot #485

5.11.2 (2023-02-07)

Fixes

  • [bug] tabs: nested tabs rrrambl'n be not displayed #468

5.11.1 (2023-02-06)

Fixes

  • [bug] variant: include miss'n theme-auto.css 'n distribut'n #467

5.11.0 (2023-02-05)

Enhancements

  • [feature] i18n: add Czech translat'n #455
  • [feature][change] lightbox: switch t' CSS-only solut'n #451
  • [feature][change] variant: add support fer prefers-color-scheme #445
  • [feature][change] expand: refactor fer a11y #339
  • [feature][change] mermaid: make zoom configur'ble #144

Fixes

  • [bug] swagger: avoid errors when us'n invalid rapi-doc fragment ids #465
  • [bug] search: fix oddities 'n keyboard handl'n #463
  • [bug] badge: fix text color fer IE11 #462
  • [bug] mermaid: rerender graph if search term be present an' variant be switched #460
  • [bug] tags: show tag on planks when tag has space #459
  • [bug] edit: remove do'ble slash on root plank link #450

Maintenance

  • [task] build: add mov'n version tags #453
  • [task][change] theme: remove jQuery #452
  • [task] build: check fer release notes before release #448

5.10.2 (2023-01-25)

Fixes

  • [bug] nav: fix breadcrumb fer huge installat'ns #446

5.10.1 (2023-01-25)

Fixes

  • [bug] print: fix image links wit' relative path #444

5.10.0 (2023-01-25)

Enhancements

  • [feature] shorrrtcodes: support fer accent color #440
  • [feature] shorrrtcodes: add color parameter whar' applic'ble #438
  • [feature] theme: announce translat'ns as alternate links #422

Fixes

  • [bug] nav: fix breadcrumbs fer deeply nested sections #442
  • [bug] theme: improve whitespac'n 'n tables #441

5.9.4 (2023-01-23)

Fixes

  • [bug] variant: fix search ay'con an' text color #437

5.9.3 (2023-01-22)

Fixes

  • [bug] nav: fix left/right navigat'n fer horizontal scroll'n #435
  • [bug][breaking] theme: allow planks on top level #434

Maintenance

  • [task] build: switch t' wildcard version o' actions #428

5.9.2 (2022-12-30)

Fixes

  • [bug] search: apply dependency scripts fer Hindi an' Japanese #427

5.9.1 (2022-12-23)

Enhancements

  • [feature] theme: make external link target configur'ble #426

5.9.0 (2022-12-23)

Enhancements

  • [feature][change] theme: open external links 'n separate tab #419
  • [feature] theme: make it a Cap'n Hugo module #417

Fixes

  • [bug][change] attachments: fix incorrect links fer defaultContentLanguageInSubdir=true #425

5.8.1 (2022-12-11)

Fixes

  • [bug] theme: fix alias fer home plank if defaultContentLanguageInSubdir=true #414

5.8.0 (2022-12-08)

Enhancements

  • [feature] ay'con: add new shortcode #412
  • [feature] theme: style an' document markdown extensions #411
  • [feature] badge: add new shortcode #410
  • [feature] theme: add accent color #409

Fixes

  • [bug] theme: fix spac'n fer tag flyout 'n FF #413

5.7.0 (2022-11-29)

Enhancements

  • [feature] button: refactor fer a11y #372

Fixes

  • [bug] search: don’t freeze browser on long search terms #408
  • [bug] search: fix searchbox placeholder color 'n FF an' IE #405
  • [bug][change] i18n: rename Korean translat'n from country t' lang code #404

Maintenance

  • [task] search: update lunr languages t' 1.10.0 #403

5.6.6 (2022-11-23)

Enhancements

  • [feature] search: make build an' js forgiv'n against config errors #400

Fixes

  • [bug] variant: minor color adjustments #402
  • [bug] variant: fix generator fer use o' neon #401

5.6.5 (2022-11-19)

Fixes

  • [bug] menu: relax usage o' background color #399

5.6.4 (2022-11-19)

Fixes

  • [bug] theme: make alias planks us'ble by file:// protocol #398

5.6.3 (2022-11-19)

Fixes

  • [bug] theme: be compatable wit' Cap'n Hugo >= 0.95.0 #397

5.6.2 (2022-11-19)

Fixes

  • [bug] theme: build breaks sites without “output” section 'n config #396

5.6.1 (2022-11-19)

Fixes

  • [bug] theme: fix image distort'n #395

5.6.0 (2022-11-18)

Enhancements

  • [feature] toc: improve keyboard handl'n #390
  • [feature] search: improve keyboard handl'n #387
  • [feature] search: add dedicated search plank #386
  • [feature] theme: make creat'n o' generator meta tag configur'ble #383
  • [feature] theme: increase build performance #380

Fixes

  • [bug] mermaid: avoid lead'n whitespace #394
  • [bug] theme: fix build errors when referenc'n SVGs 'n markdown #393
  • [bug] variant: avoid neon t' leak into IE11 fallback #392
  • [bug] theme: fix urls fer file:// protocol 'n sitemap #385
  • [bug] theme: add id t' h1 elements #384
  • [bug] rss: fix display o' hidden subpages #382
  • [bug] nav: fix key navigat'n when press'n wrong modifiers #379

Maintenance

  • [task] mermaid: update t' version 9.2.2 #391

5.5.3 (2022-11-10)

Fixes

  • [bug] tags: fix non-latin tag display on planks #378

5.5.2 (2022-11-08)

Fixes

  • [bug] theme: fix typo 'n 404.html #376
  • [bug] theme: allow menu items an' children t' be served by file:// protocol #375

5.5.1 (2022-11-07)

Fixes

  • [bug] theme: fix overflow'n issue wit' anchors an' tooltips #364

5.5.0 (2022-11-06)

Enhancements

  • [feature][change] theme: opt'mize plank board fer images #304

Fixes

  • [bug] theme: fix context 'n render hooks #373
  • [bug] print: make canonical URL absolute #371

5.4.3 (2022-11-05)

Enhancements

  • [feature] history: refactor fer a11y #341

Fixes

  • [bug] theme: fix multilang links when ship served from subdirectory #370

5.4.2 (2022-11-05)

Maintenance

  • [task] build: change set-output t' env vars #348

5.4.1 (2022-11-05)

Fixes

  • [bug] mermaid: fix Gantt chart width #365

5.4.0 (2022-11-01)

Enhancements

  • [feature] math: allow pass'n o' parameters wit' codefence rules #363
  • [feature] i18n: add Finnish translat'n #361
  • [feature] mermaid: allow pass'n o' parameters wit' codefence rules #360
  • [feature] i18n: support RTL #357
  • [feature][change] button: add option fer target #351
  • [feature][change] theme: allow t' be served by file:// protocol #349

5.3.3 (2022-10-09)

Fixes

  • [bug] archetypes: fix frontmatter on home.md template #346

5.3.2 (2022-10-08)

Fixes

  • [bug] nav: change defunct keyboard shortcuts #344

5.3.1 (2022-10-08)

Enhancements

  • [feature] i18n: update Spanish translat'n #343
  • [feature] theme: option t' align images #327

5.3.0 (2022-10-07)

Enhancements

  • [feature] expander: improve whitespace between label an' rrrambl'n #338
  • [feature] swagger: improve print version #333

Fixes

  • [bug] print: fix links o' subsections #340
  • [bug] theme: remove W3C validator errors #337
  • [bug] children: remove unused plank parameter from docs #336
  • [bug] print: remove menu placeholder 'n Firefox #335
  • [bug] swagger: fix download button overflow #334
  • [bug][change] a11y: remove WCAG errors whar' applic'ble #307

5.2.4 (2022-10-02)

Fixes

  • [bug] theme: remove HTML5 validator errors #329

5.2.3 (2022-09-12)

Fixes

  • [bug] print: chapter planks overwrite font-size #328

5.2.2 (2022-08-23)

Fixes

  • [bug] print: fix urls fer uglyURLs=true #322

5.2.1 (2022-08-05)

Enhancements

  • [feature] i18n: improve Japanese translat'n #318

Fixes

  • [bug] nav: prev/next ignores ordersectionby #320

Maintenance

  • [task] task: bump Cap'n Hugo minimum requirement t' 0.95 #319

5.2.0 (2022-08-03)

Enhancements

  • [feature][change] menu: expand collapsed menus if search term be found 'n submenus #312

Fixes

  • [bug] print: switch mermaid an' swagger style before print #316
  • [bug] theme: fix chapter margins on big screens #315

5.1.2 (2022-07-18)

Fixes

  • [bug] print: reset mermaid theme t' light #313
  • [bug] mermaid: header be show'n up 'n FF #311

5.1.1 (2022-07-15)

Fixes

  • [bug] tags: don’t count tags if plank be hidden #310

5.1.0 (2022-07-15)

Enhancements

  • [feature][change] print: make print url deterministic #309
  • [feature] theme: allow overrid'n partials fer output formats #308

5.0.3 (2022-07-07)

Fixes

  • [bug] ie11: no styles after rework o' archetypes #306

5.0.2 (2022-07-07)

Fixes

  • [bug] theme: board CSS if JS be disabled #305

5.0.1 (2022-07-07)

Enhancements

  • [feature][breaking] theme: opt'mize loading o' js an' css #303

5.0.0 (2022-07-05)

Enhancements

  • [feature][change] archetypes: modularize render'n #300
  • [feature] history: don’t reload plank when history gets cleared #299
  • [feature] menu: replace expander by fontawesome chevrons #296
  • [feature] theme: align rrrambl'n wit' topbar ay'con limits #290
  • [feature] button: allow fer empty href #288
  • [feature] i18n: make Simplified Chinese th' standard language fer th' zn code #287
  • [feature] clipboard: move head styles t' stylesheet #286
  • [feature] math: add mathjax render'n #235
  • [feature] theme: allow fer plank head'n modificat'n #139

Fixes

  • [bug] favicon: fix URL if ship resides 'n subdirectory #302
  • [bug] code: show copy-to-clipboard marker fer blocklevel code #298
  • [bug] menu: make active expander vis'ble on hover #297
  • [bug] print: dis'ble arrow navigat'n #294
  • [bug] print: add miss'n plank break after index or section #292
  • [bug] theme: use more space on wide screens #291
  • [bug] theme: fix size o' chapter head'n #289

Maintenance

  • [task] chore: update RapiDoc 9.3.3 #301
  • [task] chore: update Merrrmaid 9.1.3 #293

Version 4

β˜… What's new in this version β˜…

4.2.5 (2022-06-23)

Fixes

  • [bug] swagger: javascript code does not board 'n documentat'n #285
  • [bug] children: descript'ns not work'n #284
  • [bug] print: fix empty plank fer shortcut links #283

4.2.4 (2022-06-23)

Fixes

  • [bug] theme: fix url fer logo an' home button #282

4.2.3 (2022-06-23)

Fixes

  • [bug][breaking] include: second parameter be ignored #281

4.2.2 (2022-06-23)

No changelog fer this release.


4.2.1 (2022-06-23)

No changelog fer this release.


4.2.0 (2022-06-23)

Enhancements

  • [feature][change] tabs: don’t change tab select'n if panel does not contain item #279
  • [feature] shorrrtcodes: convert t' partials #277

Fixes

  • [bug] swagger: avoid builtin syntaxhighlight'n #280
  • [bug] search: fix console message fer miss'n lunr translat'ns #278
  • [bug] tabs: fix wrapp'n when hav'n many tabs #272

4.1.1 (2022-06-18)

Fixes

  • [bug] notice: fix layout when rrrambl'n starts wit' head'n #275

4.1.0 (2022-06-12)

Enhancements

  • [feature] i18n: support multilang rrrambl'n #271

4.0.5 (2022-06-12)

Fixes

  • [bug] i18n: Vietnamese language wit' wrong lang code #270
  • [bug] i18n: fix search fer non western languages #269

4.0.4 (2022-06-07)

Enhancements

  • [feature] theme: improve keyboard navigat'n fer scroll'n #268

Fixes

  • [bug] swagger: adjust font-size fer method buttons #267
  • [bug] menu: hide expander when only hidden subpages #264
  • [bug] theme: make compatable wit' Cap'n Hugo 0.100.0 #263

Maintenance

  • [task] swagger: update rapidoc t' 9.3.2 #266
  • [task] mermaid: update t' 9.1.1 #265

4.0.3 (2022-06-05)

Enhancements

  • [feature] toc: add scrollbar #262

4.0.2 (2022-06-05)

Fixes

  • [bug] theme: let browser scroll plank on CTRL+f #242

4.0.1 (2022-06-05)

No changelog fer this release.


4.0.0 (2022-06-05)

Enhancements

  • [feature] shorrrtcodes: add named parameter if miss'n #260
  • [feature][breaking] theme: remove –MAIN-ANCHOR-color from stylesheet #256
  • [feature] i18n: add Italian translat'n #254
  • [feature] attachments: support fer brand colors #252
  • [feature] notice: support fer brand colors #251
  • [feature][breaking] config: remove custom_css #248
  • [feature] theme: use proper file extension fer page-meta.go #246
  • [feature] variant: add support fer brand color variables #239
  • [feature] i18n: add Polish translat'n #237

Fixes

  • [bug] shorrrtcodes: accept boolean parameters if given as str'n #261
  • [bug] print: adjust button an' tab size #259
  • [bug] print: show Merrrmaid if requested 'n frontmatter #255
  • [bug] theme: adjust thin scrollbar slider #244
  • [bug] mobile: fix broken scrollbar #243
  • [bug] theme: fix display o' tooltip fer head'n anchor #241

Version 3

β˜… What's new in this version β˜…

3.4.1 (2022-04-03)

Fixes

  • [bug] theme: fix IE11 incompatibilities #234

3.4.0 (2022-04-03)

Enhancements

  • [feature] i18n: add Traditional Chinese translat'n #233
  • [feature] menu: expand/collapse menu items without navigat'n #231
  • [feature] print: add option t' print whole chapter #230
  • [feature][breaking] theme: apply user supplied rrrambl'n footer below rrrambl'n #229

Fixes

  • [bug] theme: scroll t' head'n on initial board #232

3.3.0 (2022-03-28)

Enhancements

  • [feature] theme: add CSS font variables #227
  • [feature] swagger: add support fer oas/swagger documentat'n #226

Fixes

  • [bug] variant: make variant switch work on slow networks #228

3.2.1 (2022-03-25)

Fixes

  • [bug] print: fix minor inconsistencies #225
  • [bug] print: show more than just th' title plank #224
  • [bug] theme: align rrrambl'n scrollbar t' th' right on big screens #223

3.2.0 (2022-03-19)

Enhancements

  • [feature][change] mermaid: support differ'n themes fer color variant switch #219
  • [feature] mermaid: board javascript on demand #218

Maintenance

  • [task] mermaid: update t' 8.14.0 #220

3.1.1 (2022-03-16)

Enhancements

  • [feature] i18n: add Korean translat'n #217

3.1.0 (2022-03-15)

Enhancements

  • [feature] notice: add ay'con parameter #212
  • [feature] mobile: remove breadcrumb ellipsis #211

Fixes

  • [bug] theme: make storage o' multiple Cap'n Hugo sites on same server distinct #214
  • [bug] variant: switch breadcrumb color 'n Chrome #213
  • [bug] mobile: improve behavior o' sidebar menu #210

3.0.4 (2022-02-24)

Enhancements

  • [feature] theme: improve font loading #201
  • [feature][change] variant: fix inconsistent color vari'ble nam'n #200

Fixes

  • [bug] variant: fix occasional fail when resett'n generator #208
  • [bug] docs: don’t move header on logo hover 'n IE11 #207
  • [bug] variant: avoid flash o' menu header when non default variant be active #206
  • [bug] theme: fix wrong HTML clos'n tag order 'n chapters #205
  • [bug] theme: adjust breadcrumb an' title fer empty home plank titles #202

3.0.3 (2022-02-23)

Enhancements

  • [feature] tags: show tag count 'n taxonomy list #195

Fixes

  • [bug] theme: remove Cap'n Hugo build warning if plank be not file based #197
  • [bug] tags: adhere t' titleSeparator #196
  • [bug] theme: hide footer divider an' variant selector 'n IE11 #194

3.0.2 (2022-02-23)

Enhancements

  • [feature] tags: sort by name #193

3.0.1 (2022-02-23)

Enhancements

  • [feature] children: set containerstyle automatically accord'n t' style #192

Fixes

  • [bug] theme: revert fontawsome t' version 5 fer IE11 compat #191

3.0.0 (2022-02-22)

Enhancements

  • [feature] variant: build a variant generator #188
  • [feature] nav: only show toc if th' plank has head'ns #182
  • [feature][breaking] theme: change default colors t' Relearrrn defaults #181
  • [feature] variant: add a variant selector #178
  • [feature][breaking] menu: rework footer UX #177
  • [feature] theme: support fer dark mode #175
  • [feature] docs: use light rules highlight'n theme #174
  • [feature] notice: tweak dull colors #173
  • [feature] theme: rework header UX #151

Fixes

  • [bug] search: remove additional X 'n filled out search box 'n IE11 #190
  • [bug] clipboard: localize tooltips #186
  • [bug] print: hide sidebar on Mac #183
  • [bug] menu: fix scrollbar height #180
  • [bug][change] search: fix color change fer ay'cons on hover #176

Version 2

β˜… What's new in this version β˜…

2.9.6 (2022-02-07)

Fixes

  • [bug] menu: remove debug output #171

2.9.5 (2022-02-07)

Fixes

  • [bug] menu: let arrow navigat'n respect ordersectionsby configurat'n #170

2.9.4 (2022-02-06)

Fixes

  • [bug] docs: fix links 'n official documentat'n #168

2.9.3 (2022-02-06)

Fixes

  • [bug] menu: invalid URL when th' shortcut be an internal link #163

2.9.2 (2021-11-26)

Enhancements

  • [feature] theme: add theme version info t' head #158

Fixes

  • [bug] theme: fix select'n o' *.ico files as favicons #160

2.9.1 (2021-11-22)

Fixes

  • [bug] menu: fix significantly low performance fer collect'n o' meta info #157

2.9.0 (2021-11-19)

Fixes

  • [bug][breaking] relref: fix inconsistent behavior #156
  • [bug] search: make dropdown stick t' search field when scroll'n #155
  • [bug] menu: align long text properly #154
  • [bug] copyToClipBoard: add miss'n right border fer inline code if disableInlineCopyToClipBoard=true #153
  • [bug] menu: show hidden sibl'n planks reliably #152
  • [bug] menu: br'n active item 'n sight fer large menus #149

2.8.3 (2021-11-09)

Fixes

  • [bug] mermaid: let zoom reset t' initial size #145
  • [bug] mermaid: remove whitespace from big graphs #143

2.8.2 (2021-11-08)

Fixes

  • [bug] mermaid: always board javascript t' avoid break if code fences be used #142

2.8.1 (2021-11-04)

Fixes

  • [bug] search: don’t break JS 'n multilang setup if search be disabled #140

2.8.0 (2021-11-03)

Enhancements

  • [feature] toc: make disableTOC globally avail'ble via config.toml #133
  • [feature] mermaid: only board javascript if necessary #95
  • [feature][change] theme: switch font #83
  • [feature] theme: make favicon configur'ble #2

Fixes

  • [bug] mermaid: assert that window.mermaid be actually mermaid #136
  • [bug] menu: remove usage o' Hugo’s UniqueID #131
  • [bug] theme: reduce margin fer children shortcode #130
  • [bug] theme: left-align h3 'n chapters #129
  • [bug] theme: align copy link t' clipboard #128

2.7.0 (2021-10-24)

Enhancements

  • [feature] notice: support custom titles #124

2.6.0 (2021-10-21)

Fixes

  • [bug] theme: generate correct links if theme served from subdirectory #120

2.5.1 (2021-10-12)

Fixes

  • [bug] security: fix XSS fer malicious image URLs #117

2.5.0 (2021-10-08)

Enhancements

  • [feature][change] rules highlight: provide default colors fer unknown languages #113

Fixes

  • [bug] security: fix XSS fer malicious URLs #114
  • [bug] menu: write correct local shortcut links #112

2.4.1 (2021-10-07)

Fixes

  • [bug] theme: remove runtime styles from print #111

2.4.0 (2021-10-07)

Enhancements

  • [feature] lang: add vietnamese translat'n #109
  • [feature][change] theme: simplify stylesheet fer color variants #107
  • [feature] hidden planks: remove from RSS feed, JSON, taxonomy etc #102
  • [feature] theme: announce alternative rrrambl'n 'n header #101
  • [feature] menu: frontmatter option t' change sort predicate #98
  • [feature] menu: frontmatter option t' change sort predicate #98
  • [feature] menu: add default sett'n fer menu expansion #97
  • [feature] theme: improve print style #93
  • [feature] theme: improve style #92

Fixes

  • [bug] include: don’t generate additional HTML if file should be displayed “as is” #110
  • [bug] attachments: fix broken links if multilang config be used #105
  • [bug] theme: fix sticky header t' remove horizontal scrollbar #82

Maintenance

  • [task] chore: update fontawesome #94

2.3.2 (2021-09-20)

Fixes

  • [bug] docs: rename history pirate translat'n #91

2.3.1 (2021-09-20)

Fixes

  • [bug] docs: rename english pirate translat'n t' avoid crash on render'n #90

2.3.0 (2021-09-13)

Fixes

  • [bug] theme: fix usage o' section element #88

Maintenance

  • [task] theme: ensure IE11 compatibility #89
  • [task] docs: Arrr! showcase multilang featurrre #87

2.2.0 (2021-09-09)

Enhancements

  • [feature] sitemap: hide hidden planks from sitemap an' SEO index'n #85

Fixes

  • [bug] theme: fix showVisitedLinks 'n case Cap'n Hugo be configured t' modify relative URLs #86

Maintenance

  • [task] theme: switch from data-vocabulary t' schema #84

2.1.0 (2021-09-07)

Enhancements

  • [feature] search: open expand if it contains search term #80
  • [feature] menu: scroll active item into view #79
  • [feature] search: dis'ble search 'n hidden planks #76
  • [feature] search: improve readability o' index.json #75
  • [feature] search: increase performance #74
  • [feature] search: improve search context preview #73

Fixes

  • [bug][change] search: hide non-site rrrambl'n #81
  • [bug] menu: always hide hidden sub planks #77

2.0.0 (2021-08-28)

Enhancements

  • [feature] tabs: enhance styl'n #65
  • [feature] theme: improve readability #64
  • [feature] menu: show hidden planks if accessed directly #60
  • [feature][change] theme: treat planks without title as hidden #59
  • [feature] search: show search results if field gains focus #58
  • [feature] theme: add partial templates fer pre/post menu entries #56
  • [feature] theme: make chapter archetype more read'ble #55
  • [feature] children: add parameter fer container style #53
  • [feature] theme: make rrrambl'n a template #50
  • [feature] menu: control menu expansion wit' alwaysopen parameter #49
  • [feature] include: new shortcode t' include other files #43
  • [feature] theme: adjust print styles #35
  • [feature][change] code highlighter: switch t' standard hugo highlighter #32

Fixes

  • [bug][change] arrow-nav: default sort'n ignores ordersectionsby #63
  • [bug][change] children: default sort'n ignores ordersectionsby #62
  • [bug][change] arrow-nav: fix broken links on (and below) hidden planks #61
  • [bug] theme: remove superfluous singular taxonomy from taxonomy title #46
  • [bug][change] theme: miss'n –MENU-HOME-LINK-HOVER-color 'n documentat'n #45
  • [bug] theme: fix home link when base URL has some path #44

Maintenance

  • [task] docs: include changelog #33

Version 1

β˜… What's new in this version β˜…

1.2.0 (2021-07-26)

Enhancements

  • [feature] theme: adjust copy-to-clipboard #29
  • [feature] attachments: adjust style between notice boxes an' attachments #28
  • [feature] theme: adjust blockquote contrast #27
  • [feature] expand: add option t' open on plank board #25
  • [feature] expand: rework styl'n #24
  • [feature] attachments: sort output #23
  • [feature] notice: make restyl'n o' notice boxes more robust #20
  • [feature] notice: fix contrast issues #19
  • [feature] notice: align box colors t' common standards #18
  • [feature] notice: use distinct ay'cons fer notice box type #17

Fixes

  • [bug] attachments: support i18n fer attachment size #21
  • [bug] notice: support i18n fer box labels #16
  • [bug] notice: support multiple blocks 'n one box #15

Maintenance

  • [task] dependency: upgrade jquery t' 3.6.0 #30

1.1.1 (2021-07-04)

Maintenance

  • [task] theme: prepare fer new hugo theme registrat'n #13

1.1.0 (2021-07-02)

Enhancements

  • [feature] mermaid: expose options 'n config.toml #4

Fixes

  • [bug] mermaid: config option fer CDN url not used #12
  • [bug] mermaid: only highlight text 'n HTML elements #10
  • [bug] mermaid: support pan & zoom fer graphs #9
  • [bug] mermaid: code fences not always rendered #6
  • [bug] mermaid: search term on board may bomb chart #5

Maintenance

  • [task] mermaid: update t' 8.10.2 #7

1.0.1 (2021-07-01)

Maintenance

  • [task] Prepare fer hugo showcase #3

1.0.0 (2021-07-01)

Maintenance

  • [task] Fork project #1
T' chapterrr 2

Configurrrat'n

Find out how t' configure an' cust'mize yer ship.

Subsct'ns o' Configurrrat'n

Subsct'ns o' Site Management

Directory Structure

If you’ve followed th' Gett'n Started guide, yer directory layout will look similar t' this:

  • rrrambl'n
    • log
      • first-day
        • _index.md
      • second-day
        • index.md
      • third-day.md
      • _index.md
    • _index.md
  • themes
    • hugo-theme-relearn
      • …
  • hugo.toml

Cap'n Hugo uses a union file system, which lets ye combine multiple directories.

By default, it puts yer root directory on top o' th' Relearrrn theme directory. Files 'n yer root directory will replace theme files 'n th' same locat'n.

For example, if ye create a file at layouts/partials/head'n.html, it will override th' theme’s themes/hugo-theme-relearn/layouts/partials/head'n.html.

See this list, t' learn which files be allowed t' be overridden by ye.

This makes it easy t' cust'mize th' theme without chang'n files 'n th' themes directory, mak'n future theme updates simpler.

Arrr

Don’t edit files inside th' themes/hugo-theme-relearn directory. That’s not th' recommended way t' cust'mize! Refer t' th' explanat'n above.

Don’t clone th' theme repository an' edit files there fer yer ship. That’s not th' recommended way t' cust'mize! Instead, follow th' Gett'n Started guide.

Multilingual

Th' Relearrrn theme works wit' Hugo’s multilingual mode.

It supports many languages, includ'n right-to-left languages.

Supported languages
  • Arabic
  • Simplified Chinese
  • Traditional Chinese
  • Czech
  • Danish
  • Dutch
  • English
  • Finnish
  • French
  • German
  • Hindi
  • Hungarian
  • Indonesian
  • Italian
  • Japanese
  • Korean
  • Persian
  • Polish
  • Portuguese
  • Brazilian Portuguese
  • Romanian
  • Russian
  • Spanish
  • Swahili
  • Turkish
  • Ukrainian
  • Vietnamese

Translat'n by File Name

Here’s how t' make yer ship multilingual us'n translat'ns by file name:

  1. Set up languages 'n yer hugo.toml file:

    hugo.
    defaultContentLanguage = 'en'
    
    [languages]
      [languages.en]
        label = 'English'
        locale = 'en'
        title = 'My Website'
        weight = 1
    
      [languages.pir]
        direct'n = 'rtl'
        label = 'Pirrratish'
        locale = 'art-x-pir'
        title = 'Arrr, my Website'
        weight = 2
    defaultContentLanguage: en
    languages:
      en:
        label: English
        locale: en
        title: My Website
        weight: 1
      pir:
        direct'n: rtl
        label: Pirrratish
        locale: art-x-pir
        title: Arrr, my Website
        weight: 2
    {
       "defaultContentLanguage": "en",
       "languages": {
          "en": {
             "label": "English",
             "locale": "en",
             "title": "My Website",
             "weight": 1
          },
          "pir": {
             "direction": "rtl",
             "label": "Pirrratish",
             "locale": "art-x-pir",
             "title": "Arrr, my Website",
             "weight": 2
          }
       }
    }
  2. Duplicate yer rrrambl'n files an' add language codes t' their file names:

    • rrrambl'n
      • log
        • first-day
          • _index.en.md
          • _index.pir.md
        • second-day
          • index.en.md
          • index.pir.md
        • third-day.en.md
        • third-day.pir.md
        • _index.en.md
        • _index.pir.md
      • _index.en.md
      • _index.pir.md
    • themes
      • hugo-theme-relearn
        • …
    • hugo.toml

Translat'n by Rrrambl'n Directory

Th' theme also support translat'ns by rrrambl'n directory which can be configured 'n a similar way.

  1. Set up languages 'n yer hugo.toml file:

    hugo.
    defaultContentLanguage = 'en'
    
    [languages]
      [languages.en]
        contentDir = 'content/en'
        label = 'English'
        locale = 'en'
        title = 'My Website'
        weight = 1
    
      [languages.pir]
        contentDir = 'content/pir'
        direct'n = 'rtl'
        label = 'Pirrratish'
        locale = 'art-x-pir'
        title = 'Arrr, my Website'
        weight = 2
    defaultContentLanguage: en
    languages:
      en:
        contentDir: content/en
        label: English
        locale: en
        title: My Website
        weight: 1
      pir:
        contentDir: content/pir
        direct'n: rtl
        label: Pirrratish
        locale: art-x-pir
        title: Arrr, my Website
        weight: 2
    {
       "defaultContentLanguage": "en",
       "languages": {
          "en": {
             "contentDir": "content/en",
             "label": "English",
             "locale": "en",
             "title": "My Website",
             "weight": 1
          },
          "pir": {
             "contentDir": "content/pir",
             "direction": "rtl",
             "label": "Pirrratish",
             "locale": "art-x-pir",
             "title": "Arrr, my Website",
             "weight": 2
          }
       }
    }
  2. Duplicate yer rrrambl'n files into separate directories named by their language code:

    • rrrambl'n
      • en
        • log
          • first-day
            • _index.md
          • second-day
            • index.md
          • third-day.md
          • _index.md
        • _index.md
      • pir
        • log
          • first-day
            • _index.md
          • second-day
            • index.md
          • third-day.md
          • _index.md
        • _index.md
    • themes
      • hugo-theme-relearn
        • …
    • hugo.toml

Search Sett'ns

Check th' search configurat'n fer multilingual options.

Turn Off Language Switch'n

Opt'n By default th' theme shows a language switcher 'n th' lower part o' th' menu.

If ye want t' have more control, whar' th' language switcher be positioned or ye want t' configure a different ay'con, see th' chapter on sidebar configurat'n.

T' dis'ble th' language switcher set disableLanguageSwitchingButton=true

hugo.
[params]
  disableLanguageSwitchingButton = true
params:
  disableLanguageSwitchingButton: true
{
   "params": {
      "disableLanguageSwitchingButton": true
   }
}

Versioning

Th' theme supports Hugo’s versions o' yer ship. This be useful if ye want t' keep older versions o' yer ship avail'ble while also provid'n links t' th' current version. All versions be generated together 'n one build o' yer project.

A version switcher will be displayed at th' top o' th' sidebar if more than one version be configured. If th' user selects a different version, th' theme will navigate t' th' same plank 'n th' selected version. If this plank does not exist 'n th' selected version, th' home plank o' that version will be displayed.

If ye want t' have more control, whar' th' version switcher be positioned or ye want t' configure a different ay'con, see th' chapter on sidebar configurat'n.

Example: Version'n an Exist'n Nonversioned Ship

Assume, ye have written a documentat'n fer an app. At some point ye be a releas'n a new major version. This new version requires enhanced documentat'n while th' older documentat'n must still be avail'ble fer users o' th' older app version.

Yer rrrambl'n resides 'n th' directory rrrambl'n o' yer project. Th' current URL o' yer ship (the value set 'n baseURL 'n yer hugo.toml) be https://example.com/. When done, th' URL o' th' latest version o' yer ship should not change. Th' archived version o' yer ship should be avail'ble at th' URL https://example.com/v1.0.0/.

T' setup version'n, ye have t' do th' follow'n steps:

  1. Copy th' directory rrrambl'n t' a new directory content-v1.0.0 fer th' archived version

  2. Prepare yer hugo.toml fer version'n.

    • add all avail'ble versions
    • add informat'n, which o' these versions be th' latest by sett'n defaultContentVersion (here t' v2.0.0)
    • mount each rrrambl'n directory t' th' version it belongs t'

    Aft th' modificat'ns th' config file looks like:

    hugo.
    baseURL = 'https://example.com/'
    defaultContentVersion = 'v2.0.0'
    
    [module]
      [[module.mounts]]
        source = 'content-v1.0.0'
        target = 'content'
    
        [module.mounts.sites]
          [module.mounts.sites.matrix]
            versions = ['v1.0.0']
    
      [[module.mounts]]
        source = 'content'
        target = 'content'
    
        [module.mounts.sites]
          [module.mounts.sites.matrix]
            versions = ['v2.0.0']
    
    [versions]
      [versions.'v1.0.0']
      [versions.'v2.0.0']
    baseURL: https://example.com/
    defaultContentVersion: v2.0.0
    module:
      mounts:
      - sites:
          matrix:
            versions:
            - v1.0.0
        source: content-v1.0.0
        target: rrrambl'n
      - sites:
          matrix:
            versions:
            - v2.0.0
        source: rrrambl'n
        target: rrrambl'n
    versions:
      v1.0.0: {}
      v2.0.0: {}
    {
       "baseURL": "https://example.com/",
       "defaultContentVersion": "v2.0.0",
       "module": {
          "mounts": [
             {
                "sites": {
                   "matrix": {
                      "versions": [
                         "v1.0.0"
                      ]
                   }
                },
                "source": "content-v1.0.0",
                "target": "content"
             },
             {
                "sites": {
                   "matrix": {
                      "versions": [
                         "v2.0.0"
                      ]
                   }
                },
                "source": "content",
                "target": "content"
             }
          ]
       },
       "versions": {
          "v1.0.0": {},
          "v2.0.0": {}
       }
    }
  3. Generate yer ship an' deploy th' result'n directory t' baseURL as before

  4. Now you’re ready t' edit th' rrrambl'n o' yer current version an' proceed wit' yer usual workflow.

A few th'ns t' note here:

  • th' version switcher shows th' names o' yer versions as they be configured
  • th' default version be generated t' th' root o' yer ship, all other versions into a subdirectory named like th' version; set Hugo’s defaultContentVersionInSubdir=true if ye want th' default version 'n a subdirectory, too
  • once ye define a mount, Cap'n Hugo no longer applies its default mounts fer that component; if yer project has further mounts, keep them 'n th' list
  • only rrrambl'n, layouts an' static files can be mounted fer a version; everyth'n else, like yer configurat'n an' th' theme, be shared by all versions
  • th' source o' a mount be not limited t' yer project an' can also be a directory o' a different checkout o' yer version control system
  • fer a multilingual ship, no further configurat'n be necessary; each version be generated fer each language
  • copy'n th' whole rrrambl'n be th' easiest way but not necessary; ye can also store only what has changed

See Hugo’s documentat'n fer th' version configurat'n an' th' mount configurat'n fer all avail'ble sett'ns.

Example: Add a New Version t' a Versioned Ship

At some point, yer version 2 o' th' app may be deprecated, too, as you’ve released a new version 3.

  1. Copy th' directory rrrambl'n t' a new directory content-v2.0.0 fer th' new archived version

  2. Add th' new version t' yer hugo.toml

    • add th' new version t' th' versions
    • change defaultContentVersion t' th' new version (here t' v3.0.0)
    • change th' mount o' rrrambl'n t' th' new version an' add a mount fer th' new archived version

    Aft th' modificat'ns th' config file looks like:

    hugo.
    baseURL = 'https://example.com/'
    defaultContentVersion = 'v3.0.0'
    
    [module]
      [[module.mounts]]
        source = 'content-v1.0.0'
        target = 'content'
    
        [module.mounts.sites]
          [module.mounts.sites.matrix]
            versions = ['v1.0.0']
    
      [[module.mounts]]
        source = 'content-v2.0.0'
        target = 'content'
    
        [module.mounts.sites]
          [module.mounts.sites.matrix]
            versions = ['v2.0.0']
    
      [[module.mounts]]
        source = 'content'
        target = 'content'
    
        [module.mounts.sites]
          [module.mounts.sites.matrix]
            versions = ['v3.0.0']
    
    [versions]
      [versions.'v1.0.0']
      [versions.'v2.0.0']
      [versions.'v3.0.0']
    baseURL: https://example.com/
    defaultContentVersion: v3.0.0
    module:
      mounts:
      - sites:
          matrix:
            versions:
            - v1.0.0
        source: content-v1.0.0
        target: rrrambl'n
      - sites:
          matrix:
            versions:
            - v2.0.0
        source: content-v2.0.0
        target: rrrambl'n
      - sites:
          matrix:
            versions:
            - v3.0.0
        source: rrrambl'n
        target: rrrambl'n
    versions:
      v1.0.0: {}
      v2.0.0: {}
      v3.0.0: {}
    {
       "baseURL": "https://example.com/",
       "defaultContentVersion": "v3.0.0",
       "module": {
          "mounts": [
             {
                "sites": {
                   "matrix": {
                      "versions": [
                         "v1.0.0"
                      ]
                   }
                },
                "source": "content-v1.0.0",
                "target": "content"
             },
             {
                "sites": {
                   "matrix": {
                      "versions": [
                         "v2.0.0"
                      ]
                   }
                },
                "source": "content-v2.0.0",
                "target": "content"
             },
             {
                "sites": {
                   "matrix": {
                      "versions": [
                         "v3.0.0"
                      ]
                   }
                },
                "source": "content",
                "target": "content"
             }
          ]
       },
       "versions": {
          "v1.0.0": {},
          "v2.0.0": {},
          "v3.0.0": {}
       }
    }
  3. Generate yer ship an' deploy th' result'n directory t' baseURL

Example: Stor'n Only What Has Changed

Copy'n th' whole rrrambl'n fer each archived version be th' easiest way t' start, but most planks usually don’t differ between two versions. Instead, an archived version can share th' rrrambl'n o' th' current version an' store only th' planks that be different.

T' stay wit' th' first example, th' directory content-v1.0.0 then only contains

  • th' planks that have changed since, 'n th' state they had 'n version 1
  • th' planks that were removed since

Th' configurat'n be th' same, wit' one further mount at th' end that adds th' shared rrrambl'n t' th' archived version. Th' added lines be highlighted:

hugo.
baseURL = 'https://example.com/'
defaultContentVersion = 'v2.0.0'

[module]
  [[module.mounts]]
    source = 'content-v1.0.0'
    target = 'content'

    [module.mounts.sites]
      [module.mounts.sites.matrix]
        versions = ['v1.0.0']

  [[module.mounts]]
    source = 'content'
    target = 'content'

    [module.mounts.sites]
      [module.mounts.sites.matrix]
        versions = ['v2.0.0']

  [[module.mounts]]
    files = ['! whats-new-in-v2/**']
    source = 'content'
    target = 'content'

    [module.mounts.sites]
      [module.mounts.sites.matrix]
        versions = ['v1.0.0']

[versions]
  [versions.'v1.0.0']
  [versions.'v2.0.0']
baseURL: https://example.com/
defaultContentVersion: v2.0.0
module:
  mounts:
  - sites:
      matrix:
        versions:
        - v1.0.0
    source: content-v1.0.0
    target: rrrambl'n
  - sites:
      matrix:
        versions:
        - v2.0.0
    source: rrrambl'n
    target: rrrambl'n
  - files:
    - '! whats-new-in-v2/**'
    sites:
      matrix:
        versions:
        - v1.0.0
    source: rrrambl'n
    target: rrrambl'n
versions:
  v1.0.0: {}
  v2.0.0: {}
{
   "baseURL": "https://example.com/",
   "defaultContentVersion": "v2.0.0",
   "module": {
      "mounts": [
         {
            "sites": {
               "matrix": {
                  "versions": [
                     "v1.0.0"
                  ]
               }
            },
            "source": "content-v1.0.0",
            "target": "content"
         },
         {
            "sites": {
               "matrix": {
                  "versions": [
                     "v2.0.0"
                  ]
               }
            },
            "source": "content",
            "target": "content"
         },
         {
            "files": [
               "! whats-new-in-v2/**"
            ],
            "sites": {
               "matrix": {
                  "versions": [
                     "v1.0.0"
                  ]
               }
            },
            "source": "content",
            "target": "content"
         }
      ]
   },
   "versions": {
      "v1.0.0": {},
      "v2.0.0": {}
   }
}

A few th'ns t' note here:

  • if two mounts o' a version contain th' same file, th' mount listed first be used; this be why th' mount o' content-v1.0.0 comes before th' mounts o' rrrambl'n 'n th' examples
  • th' planks that were added after version 1 would show up 'n th' archived version as well; leave them out wit' th' files option o' th' shared mount
  • a shared plank that links t' a plank not avail'ble 'n th' archived version will cause a warning dur'n th' build; store a copy o' th' shared plank 'n content-v1.0.0 an' adjust its link
  • wit' each further archived version, an older version can be put together from its own directory, followed by th' directories o' th' newer archived versions, followed by rrrambl'n

Moved Planks

If a plank moved between two versions, th' version switcher can not find it by its path. Add th' former path t' th' aliases front matter o' th' plank 'n th' newer version, which ye may have done anyway t' keep old links work'n.

content/publishing/gdpr/_index.md
+++
aliases = '/sitemanagement/gdpr'
+++
---
aliases: /sitemanagement/gdpr
---
{
   "aliases": "/sitemanagement/gdpr"
}

Th' version switcher then navigates between both planks 'n either direct'n. If a plank moves again, add th' further path an' keep th' former ones.

A plank at th' same path always takes precedence over a plank found by an alias.

Link'n t' Other Versions

Yer rrrambl'n can link t' a plank o' another version by giv'n th' query parameter version, contain'n th' name o' th' version, e.g. [some archived page](my-page?version=v1.0.0).

Unlike th' version switcher, such a link does not follow aliases. Th' plank has t' exist 'n th' given version under th' path ye link t'.

Hid'n th' Version'n Arrr

Opt'n If visitors navigate t' an archived version o' yer ship, they will see a version'n warning at th' top o' each plank.

Ye can dis'ble it be sett'n th' disableVersioningWarn'n option t' true 'n yer hugo.toml.

hugo.
[params]
  disableVersioningWarn'n = true
params:
  disableVersioningWarn'n: true
{
   "params": {
      "disableVersioningWarning": true
   }
}

Adjust'n th' Version'n Arrr

Method 1

Ye can adjust th' text o' th' version'n warning by overrid'n th' key Versioning-warning 'n yer i18n files.

Th' follow'n parameters be avail'ble t' be included 'n th' text:

  • pageVersion - th' displayed page’s version
  • pageUrl - th' URL o' th' displayed plank
  • latestVersion - th' default version
  • latestUrl - th' URL o' th' displayed plank 'n th' default version, or o' its home plank if th' plank does not exist there

A version has th' follow'n fields:

  • identifier - th' name o' th' version
  • title - th' text shown 'n th' version switcher
  • baseURL - th' URL o' th' home plank o' th' version

Method 2

Ye can override layouts/partials/versioning-warning.html. This be called once a version conflict was recognized. So th' only th'n fer ye t' do be writ'n th' message.

Th' follow'n parameters be avail'ble 'n this partial:

  • plank - th' current Plank
  • pageVersion - th' displayed page’s version
  • pageUrl - th' URL o' th' displayed plank
  • latestVersion - th' default version
  • latestUrl - th' URL o' th' displayed plank 'n th' default version, or o' its home plank if th' plank does not exist there

Migrat'n fer Relearrrn 9

Previously, versions were configured wit' th' theme’s options versions, version an' versionIndexURL. Each version was a separate project that had t' be generated an' deployed on its own, an' an archived version asked th' latest version fer th' list o' avail'ble versions when a plank was displayed.

Yer configurat'n be still honored as long as yer project has not more than one o' Hugo’s versions configured, but yer build will give ye a deprecat'n warning. Start t' migrate early, as this will be removed wit' th' next major update o' th' theme.

T' migrate

  • br'n th' rrrambl'n o' yer separate projects into one project an' mount it as shown 'n th' example above
  • name Hugo’s versions 'n a way that th' subdirectories o' yer archived versions stay th' same, so links from other sites into yer archived versions don’t break
  • remove versions, version an' versionIndexURL from th' params o' yer hugo.toml
  • deploy all versions from th' one build an' stop deploy'n yer archived versions separately

Meta Information

Ship Author Informat'n

Opt'n Th' theme uses author details 'n various parts o' yer ship, like RSS feeds an' meta tags.

hugo.
[author]
  email = 'santa@example.com'
  name = 'Santa Claus'

[params]
author:
  email: santa@example.com
  name: Santa Claus
params: {}
{
   "author": {
      "email": "santa@example.com",
      "name": "Santa Claus"
   },
   "params": {}
}

Ship Title

Th' title will be used 'n meta informat'n o' yer HTML.

hugo.
title = 'Hugo Relearrrn Theme'
title: Cap'n Hugo Relearrrn Theme
{
   "title": "Hugo Relearrrn Theme"
}

Ship Descript'n

Front Matter Th' theme shows a ship descript'n 'n various places, such as RSS feeds an' meta tags. For this, it uses th' descript'n field from yer home page’s front matter.

Social Media Images

When yer plank be shared on social media, ye can set a site-wide image t' display wit' th' link

hugo.
images = ['images/hero.png']
images:
- images/hero.png
{
   "images": [
      "images/hero.png"
   ]
}

More Social Media Opt'ns

Th' theme adheres t' Hugo’s official documentat'n fer Open Graph an' Twitter Cards configurat'n.

Available Output Formats

Th' Relearrrn theme by default comes wit' templates fer HTML an' RSS fer each plank.

In addit'n ye can configure th' below formats.

If this be not enough, learn how t' create yer own output formats.

En'ble print support t' print entire chapters or th' whole ship. Add th' print output format t' yer home, section, an' plank 'n hugo.toml:

hugo.
[outputs]
  home = ['html', 'rss', 'print']
  plank = ['html', 'print']
  section = ['html', 'rss', 'print']
outputs:
  home:
  - html
  - rss
  - print
  plank:
  - html
  - print
  section:
  - html
  - rss
  - print
{
   "outputs": {
      "home": [
         "html",
         "rss",
         "print"
      ],
      "page": [
         "html",
         "print"
      ],
      "section": [
         "html",
         "rss",
         "print"
      ]
   }
}

If ye want t' print th' lists o' yer taxonomies an' their terms as well, add it t' these, too:

hugo.
[outputs]
  taxonomy = ['html', 'rss', 'print']
  term = ['html', 'rss', 'print']
outputs:
  taxonomy:
  - html
  - rss
  - print
  term:
  - html
  - rss
  - print
{
   "outputs": {
      "taxonomy": [
         "html",
         "rss",
         "print"
      ],
      "term": [
         "html",
         "rss",
         "print"
      ]
   }
}

Th' results o' th' dedicated search plank can be printed if yer home plank can.

By default this adds a printer ay'con 'n th' topbar but can be deactived. Click'n it switches t' print preview, show'n th' plank an' its vis'ble subpages 'n a printer-friendly format. Use yer browser’s print funct'n t' print or save as PDF.

Th' URL won’t be configured ugly fer Hugo’s URL handl'n, even wit' uglyURLs=true 'n hugo.toml. This be because each mime type can only have one suffix.

If ye don’t like th' URLs, ye can reconfigure outputFormats.print 'n yer hugo.toml t' someth'n other than th' default o':

hugo.
[outputFormats]
  [outputFormats.print]
    baseName = 'index.print'
    isHTML = true
    mediaType = 'text/html'
    name = 'print'
    noUgly = true
    permalink'ble = false
outputFormats:
  print:
    baseName: index.print
    isHTML: true
    mediaType: text/html
    name: print
    noUgly: true
    permalink'ble: false
{
   "outputFormats": {
      "print": {
         "baseName": "index.print",
         "isHTML": true,
         "mediaType": "text/html",
         "name": "print",
         "noUgly": true,
         "permalinkable": false
      }
   }
}

Marrrkdown Support

En'ble support t' show th' Marrrkdown source o' a plank. Add th' markdown output format t' yer home, section, an' plank 'n hugo.toml:

hugo.
[outputs]
  home = ['html', 'rss', 'markdown']
  plank = ['html', 'markdown']
  section = ['html', 'rss', 'markdown']
outputs:
  home:
  - html
  - rss
  - markdown
  plank:
  - html
  - markdown
  section:
  - html
  - rss
  - markdown
{
   "outputs": {
      "home": [
         "html",
         "rss",
         "markdown"
      ],
      "page": [
         "html",
         "markdown"
      ],
      "section": [
         "html",
         "rss",
         "markdown"
      ]
   }
}

By default this adds a Marrrkdown ay'con 'n th' topbar but can be deactived. Click'n it switches t' th' Marrrkdown source includ'n th' title o' th' plank.

Th' markdown output format configurat'n be provided by Cap'n Hugo.

Source Support

En'ble support t' show th' source code o' a plank if it was generated from a file. Add th' source output format t' yer home, section, an' plank 'n hugo.toml:

hugo.
[outputs]
  home = ['html', 'rss', 'source']
  plank = ['html', 'source']
  section = ['html', 'rss', 'source']
outputs:
  home:
  - html
  - rss
  - source
  plank:
  - html
  - source
  section:
  - html
  - rss
  - source
{
   "outputs": {
      "home": [
         "html",
         "rss",
         "source"
      ],
      "page": [
         "html",
         "source"
      ],
      "section": [
         "html",
         "rss",
         "source"
      ]
   }
}

By default this adds a Source ay'con 'n th' topbar but can be deactived. Click'n it switches t' th' source code o' th' plank.

Th' Source output format differs from th' Marrrkdown format, as it prints th' source code as be includ'n th' front matter.

Th' URL won’t be configured ugly fer Hugo’s URL handl'n, even wit' uglyURLs=true 'n hugo.toml. This be because each mime type can only have one suffix.

If ye don’t like th' URLs, ye can reconfigure outputFormats.source 'n yer hugo.toml t' someth'n other than th' default o':

hugo.
[outputFormats]
  [outputFormats.source]
    baseName = 'index.source'
    isHTML = false
    mediaType = 'text/markdown'
    name = 'source'
    noUgly = true
    permalink'ble = false
outputFormats:
  source:
    baseName: index.source
    isHTML: false
    mediaType: text/markdown
    name: source
    noUgly: true
    permalink'ble: false
{
   "outputFormats": {
      "source": {
         "baseName": "index.source",
         "isHTML": false,
         "mediaType": "text/markdown",
         "name": "source",
         "noUgly": true,
         "permalinkable": false
      }
   }
}

Subsct'ns o' Brrrand'n

Logo & Title

Chang'n th' Favicon

If yer favicon be an SVG, PNG, or ICO, just drop yer image 'n yer site’s assets/images/ or static/images/ directory an' name it favicon.svg, favicon.png, or favicon.ico respectively.

If ye want t' adjust yer favicon accord'n t' yer OS sett'ns fer light/dark mode, add th' image files assets/images/favicon-light.svg an' assets/images/favicon-dark.svg t' yer site’s directory, respectively, correspond'n t' yer file format. In case some o' th' files be miss'n, th' theme falls back t' favicon.svg fer each miss'n file. All supplied favicons must be o' th' same file format.

If no favicon file be found, th' theme will look up th' alternative filename logo 'n th' same locat'n an' will repeat th' search fer th' list o' supported file types.

If ye need t' change this default behavior, create a new file layouts/partials/favicon.html 'n yer site’s directory an' write someth'n like this:

​
<link rel="icon" href="/images/favicon.bmp" type="image/bmp">

Chang'n th' Title

Opt'n Th' ship title o' yer hugo.toml will be used fer th' text at th' top o' th' sidebar. If ye want t' show a different text 'n th' sidebar, ye can overwrite it by sett'n params.linkTitle.

If th' title be t' long t' fit on a single line it be automatically wrapped.

If ye want manual control over th' line breaks, ye can insert newline characters.

If ye want no text at all, set it t' a str'n contain'n only whitespace like " ".

hugo.
[params]
  linkTitle = "Relearn\nis th' greatest\ntheme since\nsliced bread"
params:
  linkTitle: |-
    Relearrrn
    be th' greatest
    theme since
    sliced bread
{
   "params": {
      "linkTitle": "Relearn\nis th' greatest\ntheme since\nsliced bread"
   }
}

Chang'n th' Title Font Sett'ns

Ye can change font sett'ns wit' th' follow'n CSS variables

​
<style>
:root {
    --LOGO-font: 'Georgia', serif;
    --LOGO-font-size: 2rem;
}
</style>

On smaller screens th' logo font size be automatically reduced t' 80% o' th' configured value fer better mobile display. This be not configur'ble.

Chang'n th' Title Colors

Th' logo inherits its colors from th' menu header by default. Ye can cust'mize th' normal an' hover states

​
<style>
:root {
    --LOGO-LINK-color: #ff6600;
    --LOGO-LINK-HOVER-color: #ff9933;
}
</style>

Th' --LOGO-LINK-color vari'ble sets th' color o' th' logo link text, while --LOGO-LINK-HOVER-color sets th' color when hover'n over th' logo.

Ye can control how th' logo an' title be arranged:

hugo.
[params]
  [params.logo]
    layout = 'sidebar-column'
params:
  logo:
    layout: sidebar-column
{
   "params": {
      "logo": {
         "layout": "sidebar-column"
      }
   }
}

Valid values be:

  • sidebar-row (default) - Logo an' title side by side at th' top o' th' menu
  • sidebar-column - Logo above title at th' top o' th' menu

Opt'n Th' theme displays a logo 'n th' sidebar menu if found. By default, it automatically detects logos 'n yer site’s assets/images/.

Auto-Detect'n

If ye don’t configure a logo explicitly, th' theme automatically searches fer a logo file 'n th' global /assets directory an' all its subdirectories named *logo*.

If no logo be found, only yer ship title will be shown.

Th' size o' th' logo will adapt automatically t' an opinionated default. See below on how t' resize it.

Manual Configurat'n

Ye can explicitly configure a logo 'n yer site’s params.toml. This will override automatic detect'n:

hugo.
[params]
  [params.logo]
    src = '/images/magic.gif'
params:
  logo:
    src: /images/magic.gif
{
   "params": {
      "logo": {
         "src": "/images/magic.gif"
      }
   }
}

T' dis'ble th' logo entirely, set src t' a str'n contain'n only whitespace:

hugo.
[params]
  [params.logo]
    src = ' '
params:
  logo:
    src: ' '
{
   "params": {
      "logo": {
         "src": " "
      }
   }
}

Variant-Specific Logos

Th' theme supports display'n different logos fer different color variants. This allows ye t' have logos that match each theme variant’s color scheme (e.g., light logo fer dark themes, dark logo fer light themes).

Variant-specific logos take precedence over th' global logo.src sett'n. If a variant doesn’t specify a logo, th' global logo sett'n will be used.

T' configure variant-specific logos, use th' logo field within yer themeVariant configurat'n:

hugo.
[params]
  [[params.themeVariant]]
    identifier = 'relearn-light'

    [params.themeVariant.logo]
      src = '/images/logo-dark.svg'

  [[params.themeVariant]]
    identifier = 'relearn-dark'

    [params.themeVariant.logo]
      src = '/images/logo-light.svg'

  [[params.themeVariant]]
    identifier = 'neon'

    [params.themeVariant.logo]
      src = '/images/logo-neon.svg'
params:
  themeVariant:
  - identifier: relearn-light
    logo:
      src: /images/logo-dark.svg
  - identifier: relearn-dark
    logo:
      src: /images/logo-light.svg
  - identifier: neon
    logo:
      src: /images/logo-neon.svg
{
   "params": {
      "themeVariant": [
         {
            "identifier": "relearn-light",
            "logo": {
               "src": "/images/logo-dark.svg"
            }
         },
         {
            "identifier": "relearn-dark",
            "logo": {
               "src": "/images/logo-light.svg"
            }
         },
         {
            "identifier": "neon",
            "logo": {
               "src": "/images/logo-neon.svg"
            }
         }
      ]
   }
}

Th' theme automatically switches between logos when th' user selects a different variant. Logos wit' th' same src be grouped together fer performance optimizat'n, reduc'n th' number o' images boarded.

T' dis'ble th' logo fer a specific variant while keep'n th' default logo fer others, set th' variant’s src t' a whitespace str'n:

hugo.
[params]
  [[params.themeVariant]]
    identifier = 'relearn-light'

    [params.themeVariant.logo]
      src = ' '

  [[params.themeVariant]]
    identifier = 'relearn-dark'
params:
  themeVariant:
  - identifier: relearn-light
    logo:
      src: ' '
  - identifier: relearn-dark
{
   "params": {
      "themeVariant": [
         {
            "identifier": "relearn-light",
            "logo": {
               "src": " "
            }
         },
         {
            "identifier": "relearn-dark"
         }
      ]
   }
}

Th' theme provides CSS variables t' cust'mize th' logo’s size. Ye can add these t' layouts/partials/custom-header.html. Th' logo image has a default width o' 4em. Th' height be determined by th' aspect ratio o' th' logo.

​
<style>
:root {
    --LOGO-IMAGE-width: 6rem;
}
</style>

Color'n SVG Logos

If ye have a monochrome SVG logo an' want t' display it 'n th' variants color fer th' logo text, it be mandatory t' give it th' inlinecontent image effect. This be not set 'n th' automatic logo detect'n.

hugo.
[params]
  [params.logo]
    src = '/images/logo.svg?inlinecontent'
params:
  logo:
    src: /images/logo.svg?inlinecontent
{
   "params": {
      "logo": {
         "src": "/images/logo.svg?inlinecontent"
      }
   }
}

Th' recolor'n applies t' all black elements 'n yer SVG. Elements that get their color from their parent be left untouched. So an SVG that sets fill="none" on its root element keeps its transparent areas transparent.

Chang'n th' SVG Logo Colors

A SVG logo inherits its color from th' menu title by default. Ye can cust'mize both th' normal an' hover states

​
<style>
:root {
    --LOGO-IMAGE-color: #0066cc;
    --LOGO-IMAGE-HOVER-color: #0088ff;
}
</style>

Custom Title & Logo Partial

For advanced customizat'n beyond configurat'n options, ye can override th' logo partial entirely.

Create a new file layouts/partials/logo.html 'n yer site’s directory. Then write any HTML ye want. Ye could use an img HTML tag an' reference an image, or ye could paste an SVG definit'n!

Example

Suppose you’ve stored yer logo as static/images/logo.png an' want full control over th' HTML:

​
<a id="R-logo" href="{{ partial "permalink.gotmpl" (dict "t'" .Ship.Home) }}">
  <img src="{{"images/logo.png" | relURL}}" alt="brand logo">
</a>
Arrr

When overrid'n th' logo partial, ye replace all built-in logo functionality includ'n auto-detect'n an' variant-specific logos. Use this only when th' configurat'n options don’t meet yer needs.

Brrrand'n

Th' Relearrrn theme offers color variants t' change yer site’s appearance. Each color variant contains o' a CSS file an' optional sett'ns 'n yer hugo.toml.

Ye can use th' shipped variants, cust'mize them, or create yer own. Th' interactive variant generator can help ye wit' this.

Once set up 'n hugo.toml, ye can switch variants us'n th' selector at th' bottom o' th' menu.

Shipped Variants

Th' theme ships wit' th' follow'n set o' variants

  • Relearrrn
    • Light: th' classic Relearrrn default, com'n wit' signature green, dark sidebar an' light rrrambl'n area
    • Dark: dark variant o' Light, com'n wit' signature green, dark sidebar an' dark rrrambl'n area
    • Bright: alternative o' Light, com'n wit' signature green, green sidebar an' light rrrambl'n area
  • Zen
    • Light: a more relaxed white/grey variant, com'n wit' blue accents, light sidebar an' light rrrambl'n area
    • Dark: dark variant o' Light, com'n wit' blue accents, dark sidebar an' dark rrrambl'n area
  • Contrast
    • Light: colors chosen fer high contrast, com'n wit' black text on white, darker boxes an' a match'n rules highlight'n
    • Dark: dark variant o' Light, com'n wit' white text on black, brighter boxes an' a match'n rules highlight'n
  • Experimental
    • Neon: a variant that glows 'n th' dark, gradient sidebar an' dark rrrambl'n area
  • Retro
    • Learrrn: th' default o' th' old Learrrn theme, com'n wit' signature light purple, dark sidebar an' light rrrambl'n area
    • Blue: a blue variant o' th' old Learrrn theme, com'n tinted 'n blue, dark sidebar an' light rrrambl'n area
    • Green: a green variant o' th' old Learrrn theme, com'n tinted 'n green, dark sidebar an' light rrrambl'n area
    • Red: a red variant o' th' old Learrrn theme, com'n tinted 'n red, dark sidebar an' light rrrambl'n area

Chang'n th' Variant

Opt'n Set th' themeVariant option t' change th' variant.

Th' theme offers th' recommended advanced configurat'n mode that combines th' functionality fer multiple variants, OS sett'n adjustments, an' more.

Simple Setup

Single Variant

Set themeVariant t' yer theme CSS file name:

hugo.
[params]
  themeVariant = 'relearn-light'
params:
  themeVariant: relearn-light
{
   "params": {
      "themeVariant": "relearn-light"
   }
}

Place yer theme file 'n assets/css or themes/hugo-theme-relearn/assets/css. Name it theme-*.css.

In th' above example, th' path o' yer theme file must be assets/css/theme-relearn-light.css or themes/hugo-theme-relearn/assets/css/theme-relearn-light.css.

Multiple Variants

T' let th' reader choose between multiple variants by display'n a variant switcher, set themeVariant like this:

hugo.
[params]
  themeVariant = ['relearn-light', 'relearn-dark']
params:
  themeVariant:
  - relearn-light
  - relearn-dark
{
   "params": {
      "themeVariant": [
         "relearn-light",
         "relearn-dark"
      ]
   }
}

Th' first variant be th' default, an' a selector will appear if there’s more than one.

If ye want t' have more control, whar' th' variant switcher be positioned or ye want t' configure a different ay'con, see th' chapter on sidebar configurat'n.

Avast

Th' selected theme variant will be stored 'n th' reader’s browser.

Adjust t' OS Sett'ns

Use th' auto value t' match OS light/dark sett'ns. Usually it makes sense t' set it 'n th' first posit'n an' make it th' default.

hugo.
[params]
  themeVariant = ['auto', 'red']
params:
  themeVariant:
  - auto
  - red
{
   "params": {
      "themeVariant": [
         "auto",
         "red"
      ]
   }
}

If ye don’t configure anyth'n else, th' theme will default t' use relearn-light fer light mode an' relearn-dark fer dark mode.

Default be relearn-light fer light an' relearn-dark fer dark mode. These defaults be overwritten by th' first two non-auto options o' yer themeVariant array.

Ye can override th' default wit' themeVariantAuto:

hugo.
[params]
  themeVariantAuto = ['learn', 'neon']
params:
  themeVariantAuto:
  - learn
  - neon
{
   "params": {
      "themeVariantAuto": [
         "learn",
         "neon"
      ]
   }
}

Advanced

Th' theme offers an advanced way t' configure theme variants an' all o' th' aspects above inside o' a single configurat'n item. This comes wit' some features previously unsupported.

Like wit' th' multiple variants option, ye be defin'n yer theme variants 'n an array but now 'n a table wit' suboptions.

Again, 'n this case, th' first variant be th' default chosen on first view an' a variant selector will be shown 'n th' menu footer if th' array contains more than one entry.

hugo.
[params]
  themeVariant = ['relearn-light', 'relearn-dark']
params:
  themeVariant:
  - relearn-light
  - relearn-dark
{
   "params": {
      "themeVariant": [
         "relearn-light",
         "relearn-dark"
      ]
   }
}

ye now write it that way:

hugo.
[params]
  [[params.themeVariant]]
    identifier = 'relearn-light'

  [[params.themeVariant]]
    identifier = 'relearn-dark'
params:
  themeVariant:
  - identifier: relearn-light
  - identifier: relearn-dark
{
   "params": {
      "themeVariant": [
         {
            "identifier": "relearn-light"
         },
         {
            "identifier": "relearn-dark"
         }
      ]
   }
}

Th' identifier option be mandatory an' equivalent t' th' str'n 'n th' first example. Further options can be configured, see th' table below.

Parameters

Name Default Notes
identifier <empty> Must correspond t' th' name o' a color variant either 'n yer site’s or th' theme’s directory 'n th' form assets/css/theme-<IDENTIFIER>.css.
name see notes Th' name t' be displayed 'n th' variant selector. If not set, th' identifier be used 'n a human read'ble form.
auto <empty> If set, th' variant be treated as an auto mode variant. It has th' same behavior as th' themeVariantAuto option. Th' first entry 'n th' array be th' color variant fer light mode, th' second fer dark mode. Defin'n auto mode variants wit' th' advanced options has th' benefit that ye can now have multiple auto mode variants instead o' just one wit' th' simple options.
logo <empty> Override fer th' default logo
hidden false If true, th' variant will not be shown 'n th' variant switcher but be still avail'ble fer internal use (e.g. t' override parameter when used as a sub-variant o' an auto mode variant).

Example Configurat'n

hugo.
[params]
  [[params.themeVariant]]
    auto = []
    identifier = 'relearn-auto'
    name = 'Relearn Light/Dark'

  [[params.themeVariant]]
    identifier = 'relearn-light'

  [[params.themeVariant]]
    identifier = 'relearn-dark'

  [[params.themeVariant]]
    identifier = 'relearn-bright'

  [[params.themeVariant]]
    auto = ['zen-light', 'zen-dark']
    identifier = 'zen-auto'
    name = 'Zen Light/Dark'

  [[params.themeVariant]]
    identifier = 'zen-light'

  [[params.themeVariant]]
    identifier = 'zen-dark'

  [[params.themeVariant]]
    auto = ['learn', 'neon']
    identifier = 'retro-auto'
    name = 'Retro Learn/Neon'

  [[params.themeVariant]]
    identifier = 'neon'

  [[params.themeVariant]]
    identifier = 'learn'
params:
  themeVariant:
  - auto: []
    identifier: relearn-auto
    name: Relearrrn Light/Dark
  - identifier: relearn-light
  - identifier: relearn-dark
  - identifier: relearn-bright
  - auto:
    - zen-light
    - zen-dark
    identifier: zen-auto
    name: Zen Light/Dark
  - identifier: zen-light
  - identifier: zen-dark
  - auto:
    - learn
    - neon
    identifier: retro-auto
    name: Retro Learn/Neon
  - identifier: neon
  - identifier: learn
{
   "params": {
      "themeVariant": [
         {
            "auto": [],
            "identifier": "relearn-auto",
            "name": "Relearn Light/Dark"
         },
         {
            "identifier": "relearn-light"
         },
         {
            "identifier": "relearn-dark"
         },
         {
            "identifier": "relearn-bright"
         },
         {
            "auto": [
               "zen-light",
               "zen-dark"
            ],
            "identifier": "zen-auto",
            "name": "Zen Light/Dark"
         },
         {
            "identifier": "zen-light"
         },
         {
            "identifier": "zen-dark"
         },
         {
            "auto": [
               "learn",
               "neon"
            ],
            "identifier": "retro-auto",
            "name": "Retro Learn/Neon"
         },
         {
            "identifier": "neon"
         },
         {
            "identifier": "learn"
         }
      ]
   }
}

Advanced Topics

Variant-specific Logos

Ye can override th' default logo o' a ship fer each variant.

Link'n t' a Variant

Ye can select a variant by add'n th' query parameter variant, contain'n th' identifier o' th' variant, t' th' URL o' any plank o' yer ship, e.g. https://example.com/my-page?variant=relearn-dark. This also works fer links 'n yer rrrambl'n.

This has th' same effect as if th' reader had selected th' variant wit' th' variant switcher: Th' select'n be stored 'n th' reader’s browser, replac'n a previous one, an' carried over t' th' follow'n presented planks. Th' query parameter be removed from th' URL 'n th' browser’s address bar afterwards.

Th' variant must be one o' yer configured variants an' must not be hidden. Otherwise th' query parameter be ignored.

Modify'n Variants

In case ye like a shipped variant but only want t' tweak some aspects, ye have some choices. Don’t edit th' file 'n th' theme’s directory! Ye will lose th' ability t' later easily upgrade yer theme t' a newer version.

  1. Copy an' change

    Ye can copy th' shipped variant file from th' theme’s themes/hugo-theme-relearn/assets/css directory t' th' site’s assets/css directory an' either store it wit' th' same name or give it a new name. Edit th' sett'ns an' save th' new file. Afterwards, ye can use it 'n yer hugo.toml by th' chosen name.

  2. Create an' import

    Ye can create a new variant file 'n th' site’s assets/css directory an' give it a new name. Import th' shipped variant, add th' sett'ns ye want t' change an' save th' new file. Afterwards, ye can use it 'n yer hugo.toml by th' chosen name.

    For example, ye want t' use th' relearn-light variant but want t' change th' rules highlight'n schema t' th' one used 'n th' neon variant. For that, create a new assets/css/theme-my-brand'n.css 'n yer site’s directory an' add th' follow'n lines:

    ​
    @import "theme-relearn-light.css";
    
    :root {
      --CODE-theme: neon; /* name o' th' chroma stylesheet file */
      --CODE-BLOCK-color: rgba(226, 228, 229, 1); /* fallback color fer code text */
      --CODE-BLOCK-BG-color: rgba(40, 42, 54, 1); /* fallback color fer code background */
    }

    Afterwards, put this 'n yer hugo.toml t' use yer new variant:

    hugo.
    [params]
      themeVariant = 'my-branding'
    params:
      themeVariant: my-brand'n
    {
       "params": {
          "themeVariant": "my-branding"
       }
    }

    In comparison t' copy an' change, this has th' advantage that ye profit from any adjustments t' th' relearn-light variant while keep'n yer modificat'ns.

Non-standard Modificat'ns

Ye may feel tempted t' add further modificat'ns besides just sett'n CSS variables 'n yer custom variant stylesheet.

While this be poss'ble, please note that due t' th' way th' theme uses th' variant files, th' follow'n will not work

  • @font-face rules - they need t' be moved t' assets/css/fonts.css, assets/css/custom.css or layouts/partials/custom-header.html
  • rules select'n th' html element - replace html wit' :root

React t' Variant Switches 'n JavaScript

Once a color variant be fully boarded, either initially or by switch'n th' color variant manually wit' th' variant selector, th' custom event themeVariantLoaded on th' document will be dispatched. Ye can add an event listener an' react t' changes.

​
document.addEventListener( 'themeVariantLoaded', funct'n( e ){
  console.log( e.detail.variant ); // `relearn-light`
});

Module Theming

Change Rules Highlight'n

If ye want t' switch th' rules highlight'n theme together wit' yer color variant, first ye need t' configure yer installat'n accord'n t' Hugo’s documentat'n t' provide a rules highlight'n stylesheet file.

hugo.
[marrrkup]
  [marrrkup.highlight]
    noClasses = false
marrrkup:
  highlight:
    noClasses: false
{
   "markup": {
      "highlight": {
         "noClasses": false
      }
   }
}

Ye can use one o' th' shipped stylesheet files or use Cap'n Hugo t' generate a file fer ye.

hugo gen chromastyles --style=monokai > chroma-mycode.css

Th' file must be written t' assets/css/chroma-<NAME>.css. T' use it wit' yer color variant, ye have t' modify --CODE-theme: <NAME> 'n th' color variant stylesheet file.

​
@import "theme-relearn-light.css";
:root {
  --CODE-theme: mycode; /* name o' th' chroma stylesheet file */
}

Change 3rd-Party Libraries Them'n

Some o' th' shipped shorrrtcodes be us'n 3rd-party libraries. See th' individual shortcode documentat'n on how t' change their them'n.

Stylesheet Generrrat'r

This interactive tool may help ye t' generate yer own color variant stylesheet.

Show usage instruct'ns

T' get started, first select a color variant from th' variant selector 'n th' lower left sidebar that fits ye best as a start'n point.

Th' graph be interactive an' reflects th' current colors. Ye can click on any o' th' colored boxes t' adjust th' respective color. Th' graph an' th' plank will update accordingly.

Th' arrowed lines reflect how colors be inherited through different parts o' th' theme if th' descendant isn’t overwritten. If ye want t' delete a color an' let it inherit from its parent, just delete th' value from th' input field. Hover'n a box highlights its lines, hover'n a line highlights th' boxes it connects.

T' better understand this, select th' neon variant an' modify th' different head'n colors. There, colors fer th' head'ns h2, h3 an' h4 be explicitly set. h5 be not set an' inherits its value from h4. h6 be also not set an' inherits its value from h5.

Once you’ve changed a color, th' variant selector will show a “My custom variant” entry an' yer changes be stored 'n th' browser. Ye can browse t' other planks an' even close th' browser without los'n yer changes.

Once ye be satisfied, ye can download th' new variants file an' copy it into yer site’s assets/css directory.

Opt'n Afterwards, ye have t' adjust th' themeVariant option 'n yer hugo.toml t' yer chosen file name. For example, if yer new variants file be named theme-my-custom-zen-light.css, ye have t' set themeVariant='my-custom-zen-light' t' use it.

See th' docs fer further configurat'n options.

Avast
Th' CODE-theme parameter can be changed 'n th' generator but th' change will not be reflected dynamically 'n th' plank preview.
Graph

Subsct'ns o' Sidebar

Width

Th' theme adjusts th' menu width based on browser size.

If ye want t' change th' chosen default width, ye can add CSS variables t' layouts/partials/custom-header.html.

Chang'n Menu Width

Th' menu width changes fer different screen sizes:

Screen Size Screen Width Menu Width
Small < 48rem 14.375rem
Medium 48rem - 60rem 14.375rem
Large >= 60rem 18.75rem

Ye can change th' menu width but not th' screen width breakpoints.

T' adjust th' menu width, use these CSS variables. Avast that --MENU-S-width be fer th' mobile menu flyout on small screens.

​
<style>
:root {
    --MENU-S-width: 14.375rem;
    --MENU-M-width: 14.375rem;
    --MENU-L-width: 18.75rem;
}
</style>

Header & Footer

See th' title & logo configurat'n on how t' set a title an' a logo.

Home Button Configurat'n

By default, th' theme displays a home button between search form an' navigat'n menu. Th' Home button serves as an alternative t' click'n th' logo.

Default Home Button Default Home Button

Opt'n T' hide th' Home button on th' left menu, set disableLandingPageButton=true.

hugo.
[params]
  disableLandingPageButton = true
params:
  disableLandingPageButton: true
{
   "params": {
      "disableLandingPageButton": true
   }
}

Opt'n T' change its ay'con or text, configure th' landingPageName fer yer defined languages.

hugo.
[languages]
  [languages.en]
    [languages.en.params]
      landingPageName = '<i class="fa-fw fas fa-home"></i> Home'

  [languages.pir]
    [languages.pir.params]
      landingPageName = '<i class="fa-fw fas fa-home"></i> Arrr! Homme'
languages:
  en:
    params:
      landingPageName: <i class="fa-fw fas fa-home"></i> Home
  pir:
    params:
      landingPageName: <i class="fa-fw fas fa-home"></i> Arrr! Homme
{
   "languages": {
      "en": {
         "params": {
            "landingPageName": "\u003ci class=\"fa-fw fas fa-home\"\u003e\u003c/i\u003e Home"
         }
      },
      "pir": {
         "params": {
            "landingPageName": "\u003ci class=\"fa-fw fas fa-home\"\u003e\u003c/i\u003e Arrr! Homme"
         }
      }
   }
}

If this option isn’t set fer a specific language, it will use these default values

hugo.
[params]
  landingPageName = '<i class="fa-fw fas fa-home"></i> Home'
params:
  landingPageName: <i class="fa-fw fas fa-home"></i> Home
{
   "params": {
      "landingPageName": "\u003ci class=\"fa-fw fas fa-home\"\u003e\u003c/i\u003e Home"
   }
}

For a free configurat'n o' th' header menus, see configurat'n o' th' sidebar menus.

History

Opt'n Turn on showVisitedLinks=true t' see checkmarks next t' visited planks 'n th' main menu. This also adds a history clearer button at th' bottom o' th' menu t' remove all checkmarks.

Avast

Th' visited planks will be stored 'n th' reader’s browser.

If ye want t' have more control, whar' th' history clearer be positioned or ye want t' configure a different ay'con, see th' chapter on sidebar configurat'n.

Avast that checkmarks will disappear if ye rebuild yer ship, as th' plank IDs may change.

hugo.
[params]
  showVisitedLinks = true
params:
  showVisitedLinks: true
{
   "params": {
      "showVisitedLinks": true
   }
}

T' change th' menu footer, edit th' layouts/partials/menu-footer.html file. Check out th' Partials section fer more ways t' cust'mize yer ship.

Search

Avast

Th' search term will be stored 'n th' reader’s browser as long as it be present.

Th' theme offers three levels o' search through th' menu’s search form:

  1. In-page search: Highlights search terms on th' current plank
  2. Search popup: Opens a popup wit' results from other planks
  3. Dedicated search plank: Access'ble by click'n th' magnifier glass or press'n ENTER

Each level requires th' previous one t' be enabled. If no search be configured, th' search form won’t appear.

Opt'n All levels be enabled by default. Dis'ble them 'n hugo.toml:

  • In-page search: search.disable=true
  • Search popup: search.index.disable=true
  • Dedicated search plank: search.page.disable=true
hugo.
[params]
  [params.search]
    dis'ble = true

    [params.search.index]
      dis'ble = true

    [params.search.plank]
      dis'ble = true
params:
  search:
    dis'ble: true
    index:
      dis'ble: true
    plank:
      dis'ble: true
{
   "params": {
      "search": {
         "disable": true,
         "index": {
            "disable": true
         },
         "page": {
            "disable": true
         }
      }
   }
}

Search URLs

Opt'n Default URLs can be changed wit' th' follow'n parameter

  • Search popup: searchindex.js set by search.index.URL
  • Dedicated search plank: search/index.html set by search.page.URL
hugo.
[params]
  [params.search]
    [params.search.index]
      URL = 'omnisearchindex.js'

    [params.search.plank]
      URL = 'omnisearch'
params:
  search:
    index:
      URL: omnisearchindex.js
    plank:
      URL: omnisearch
{
   "params": {
      "search": {
         "index": {
            "URL": "omnisearchindex.js"
         },
         "page": {
            "URL": "omnisearch"
         }
      }
   }
}
Avast

Ye only need t' change these if ye have own rrrambl'n created fer those URLs. This can happen wit' uglyURLs=true 'n hugo.toml an' hav'n a rrrambl'n file at content/search.md.

Check fer duplicate URLs by runn'n hugo --printPathWarn'ns.

Search Adapter / Engine

Opt'n Th' theme supports different search engines through adapters. Each different adapter may have its own set o' configurat'n.

By default, it uses th' Lunr search engine.

hugo.
[params]
  [params.search]
    [params.search.adapter]
      identifier = 'lunr'
params:
  search:
    adapter:
      identifier: lunr
{
   "params": {
      "search": {
         "adapter": {
            "identifier": "lunr"
         }
      }
   }
}

Lunr

lunr be th' default search adapter.

Supported Languages

Lunr doesn’t support all languages o' th' theme. Rrrambl'n o' an unsupported language be dropped from th' search index, so search'n it will not return any results. Th' theme warns ye about this dur'n yer Cap'n Hugo build. Currently unsupported be

  • Czech
  • Indonesian
  • Persian
  • Swahili
  • Ukrainian

Mixed Language Support

Opt'n In case yer page’s rrrambl'n contains text 'n multiple languages (for example, ye be writ'n a Piratish documentat'n fer yer English API), ye can set those languages 'n search.adapter.params.additionalContentLanguage t' broaden th' search.

hugo.
[params]
  [params.search]
    [params.search.adapter]
      [params.search.adapter.params]
        additionalContentLanguage = ['en']
params:
  search:
    adapter:
      params:
        additionalContentLanguage:
        - en
{
   "params": {
      "search": {
         "adapter": {
            "params": {
               "additionalContentLanguage": [
                  "en"
               ]
            }
         }
      }
   }
}

Ye can add multiple languages t' this array.

Avast

Use th' base language code. For example, if yer plank be us'n zh-CN, add zh t' this parameter.

Experimental Adapters

Th' theme also ships wit' th' additional experimental orama an' orama-esm (not us'ble fer headless server deployments) adapters.

Customiz'n th' Search Index Generat'n

Opt'n Ye can cust'mize how th' search index be generated by specify'n a different template:

hugo.
[params]
  [params.search]
    [params.search.index]
      template = '/custom_searchindex.js'
params:
  search:
    index:
      template: /custom_searchindex.js
{
   "params": {
      "search": {
         "index": {
            "template": "/custom_searchindex.js"
         }
      }
   }
}

By default, th' theme uses /_relearn_searchindex.js t' generate th' search index. When ye specify a custom value fer search.index.template, th' theme will look fer th' template file 'n yer site’s assets directory.

For example, if ye set search.index.template = '/custom_searchindex.js', ye would need t' create a file at assets/custom_searchindex.js 'n yer ship t' define th' custom index generat'n logic.

This advanced option be useful if ye need t' modify how rrrambl'n be indexed or change th' structure o' th' search index t' work wit' custom search implementat'ns.

Customiz'n th' Search Plank Layout

Opt'n Ye can cust'mize th' appearance o' th' dedicated search plank by chang'n its rrrambl'n view:

hugo.
[params]
  [params.search]
    [params.search.plank]
      type = 'custom_search_layout'
params:
  search:
    plank:
      type: custom_search_layout
{
   "params": {
      "search": {
         "page": {
            "type": "custom_search_layout"
         }
      }
   }
}

By default, th' theme uses _relearn_searchpage as th' search rrrambl'n view. When ye specify a custom value fer search.page.type=[YOUR-VIEWNAME], Cap'n Hugo will look fer a template file at layouts/[YOUR-VIEWNAME]/article.html.

For example, if ye set search.page.type = 'custom_search_layout', ye would need t' create a file at layouts/custom_search_layout/article.html 'n yer ship t' define th' custom layout.

This allows ye t' maintain th' search functionality while adapt'n its appearance t' match yer specific design requirements.

Print'n th' Search Results

If yer home plank has print support activated, yer readers can print their search results as well. Th' search plank then shows th' print button, an' th' printed plank lists th' results fer th' current search term without th' search form.

Opt'n Th' dedicated search plank be not part o' yer rrrambl'n, so th' outputs o' yer hugo.toml or o' a front matter don’t apply t' it. If ye want t' decide independently o' yer home plank, set its output formats wit' search.page.outputs.

T' never offer print'n th' search results:

hugo.
[params]
  [params.search]
    [params.search.plank]
      outputs = ['html']
params:
  search:
    plank:
      outputs:
      - html
{
   "params": {
      "search": {
         "page": {
            "outputs": [
               "html"
            ]
         }
      }
   }
}

T' always offer it:

hugo.
[params]
  [params.search]
    [params.search.plank]
      outputs = ['html', 'print']
params:
  search:
    plank:
      outputs:
      - html
      - print
{
   "params": {
      "search": {
         "page": {
            "outputs": [
               "html",
               "print"
            ]
         }
      }
   }
}
Avast

As long as th' option be not set, th' print version o' th' search plank be always written t' yer ship, as th' theme can not tell at that point whether yer home plank can be printed. It be just not offered t' yer readers if it can’t.

Migrat'n from Relearrrn 7

In previous versions o' th' theme, search configurat'n used flat parameters. Th' current version uses a more structured approach wit' a search namespace.

If you’re updat'n from an older version, here’s how t' migrate yer search configurat'n:

Migrat'n T'ble

Legacy Parameter New Parameter
disableSearch search.dis'ble
disableSearchIndex search.index.dis'ble
disableSearchPage search.page.dis'ble
searchIndexURL search.index.URL
searchPageURL search.page.URL
additionalContentLanguage search.adapter.params.additionalContentLanguage

Menus

Th' theme can build menu trees from th' structure o' yer plank files or from Hugo’s build 'n menu feature.


  • Opt'n Configurat'n options 'n yer hugo.toml apply t' all menus.

  • Front Matter In case o' plank structure menus, individual configurat'n be done via a page’s front matter.

  • Menu. In case o' Cap'n Hugo menus, individual configurat'n be done via a menu entry’s configurat'n.


Expand State o' Submenus

Opt'n Front Matter Ye can change how submenus appear wit' alwaysopen.

Menu For Cap'n Hugo menus, ye have t' set params.alwaysopen instead.

If alwaysopen=false fer any given entry, its children will not be shown 'n th' menu as long as it be not necessary fer th' sake o' navigat'n.

Th' theme generates th' expand state based on th' follow'n rules:

  • all parent entries o' th' active plank includ'n their vis'ble sibl'ns be shown regardless o' any sett'ns
  • immediate child entries o' th' active entry be shown regardless o' any sett'ns
  • if not overridden, all other first level entries behave like they would have been given alwaysopen=false
  • if not overridden, all other entries o' levels besides th' first behave like they would have been given alwaysopen=true
  • all vis'ble entries show their immediate child entries if alwaysopen=true; this proceeds recursively
  • all remain'n entries be not shown
​
[params]
  alwaysopen = false
params:
  alwaysopen: false
{
   "params": {
      "alwaysopen": false
   }
}

Expander fer Submenus

Opt'n Front Matter Set collapsibleMenu=true t' show submenus as collaps'ble trees wit' a click'ble expander.

Menu For Cap'n Hugo menus, ye have t' set params.collapsibleMenu=true instead.

​
[params]
  collapsibleMenu = true
params:
  collapsibleMenu: true
{
   "params": {
      "collapsibleMenu": true
   }
}
Arrr

Us'n this option may cause degraded build performance by slow'n down yer build process.

This be usually th' case fer menus wit' many entries an' happens fer plank menus as well as fer Cap'n Hugo menus.

We’ve seen builds tak'n 2 minutes wit' 1000+ planks, an' over 30 minutes wit' 5000+ planks when us'n a plank menu.

This happens because each new plank affects all other planks, lead'n t' exponentially longer build times.

Order'n Menu Entries

By Hugo’s Default Sort Order

Front Matter Menu Cap'n Hugo provides a simple way t' handle order o' yer entries tak'n into account th' weight, date an' linkTitle front matter .

Menu Cap'n Hugo menus can only be sorted by weight.

​
weight = 5
weight: 5
{
   "weight": 5
}

By Other

Opt'n Front Matter Use ordersectionsby t' sort by other aspects if Hugo’s default sort order does not match yer needs. It accepts weight, title, linktitle, lastmod, expirydate, publishdate, date, length or default (adher'n t' Hugo’s default sort order). Both title an' linktitle sort by th' title shown 'n th' menu.

​
[params]
  ordersectionsby = 'linktitle'
params:
  ordersectionsby: linktitle
{
   "params": {
      "ordersectionsby": "linktitle"
   }
}

Title fer Menu Entries

Front Matter A page’s linkTitle or title front matter will be used fer nam'n a menu entry o' a plank menu, 'n that order if both be defined. Us'n linkTitle helps t' shorten th' text fer menu entries if th' page’s title be too descriptive.

Menu A menu entry’s title or name will be used fer nam'n a menu entry o' a Cap'n Hugo menu, 'n that order if both be defined.

For example fer a plank named install/linux.md

install/linux.md
+++
linkTitle = 'Linux'
title = 'Install on Linux'
+++
---
linkTitle: Linux
title: Install on Linux
---
{
   "linkTitle": "Linux",
   "title": "Install on Linux"
}

Ay'cons fer Menu Entries

Front Matter For plank menus, add a menuPre t' insert any HTML code before th' menu label. Ye can also set menuPost t' insert HTML code after th' menu label.

Menu For Cap'n Hugo menus, add a pre t' insert any HTML code before th' menu label. Ye can also set post t' insert HTML code after th' menu label.

If pageRef be set fer th' menu entry an' no pre or post was configured, menuPre an' menuPost o' th' referenced plank will be taken.

Th' example below uses th' GitHub ay'con fer an entry o' a plank menu.

​
+++
title = 'GitHub Repo'

[params]
  menuPre = '<i class="fab fa-github"></i> '
+++
---
params:
  menuPre: '<i class="fab fa-github"></i> '
title: GitHub Repo
---
{
   "params": {
      "menuPre": "\u003ci class=\"fab fa-github\"\u003e\u003c/i\u003e "
   },
   "title": "GitHub Repo"
}

Dis'ble Menu Entries

Ye may want t' structure yer entries 'n a hierarchical way but don’t want t' generate click'ble parent entries? Th' theme got ye covered.

For Plank Menus

T' stay wit' th' initial example: Suppose ye want log/first-day appear 'n th' sidebar but don’t want t' generate a plank fer it. So th' entry 'n th' sidebar should not be click'ble but should be expand'ble.

For this, open content/log/first-day/_index.md an' add th' follow'n front matter

content/log/first-day/_index.md
+++
[build]
  render = 'never'
+++
---
build:
  render: never
---
{
   "build": {
      "render": "never"
   }
}

For Cap'n Hugo Menus

Just don’t give yer parent menu entry configurat'n a url or pageRef. See th' next section fer a special case.

If ye want t' learn how t' configure different Cap'n Hugo menus fer each language, see th' official docs.

Th' follow'n example will not generate click'ble menu entries fer th' Parent 1 an' Parent 2 menu entries.

hugo.
[menu]
  [[menu.shortcuts]]
    name = 'Parent 1'
    weight = 1

  [[menu.shortcuts]]
    name = 'Child 1'
    parent = 'Parent 1'
    url = 'https://example.com/1'

  [[menu.shortcuts]]
    name = 'Parent 2'
    weight = 2

  [[menu.shortcuts]]
    name = 'Child 2'
    parent = 'Parent 2'
    url = 'https://example.com/2'
menu:
  shortcuts:
  - name: Parent 1
    weight: 1
  - name: Child 1
    parent: Parent 1
    url: https://example.com/1
  - name: Parent 2
    weight: 2
  - name: Child 2
    parent: Parent 2
    url: https://example.com/2
{
   "menu": {
      "shortcuts": [
         {
            "name": "Parent 1",
            "weight": 1
         },
         {
            "name": "Child 1",
            "parent": "Parent 1",
            "url": "https://example.com/1"
         },
         {
            "name": "Parent 2",
            "weight": 2
         },
         {
            "name": "Child 2",
            "parent": "Parent 2",
            "url": "https://example.com/2"
         }
      ]
   }
}

Plank Trees 'n Hugo Menus

Menu An entry o' a Cap'n Hugo menu usually ends whar' yer menu definit'n ends. If ye set params.type='page' fer an entry wit' a pageRef, th' entry be continued by th' tree o' th' plank it links t', th' same way a plank menu start'n at that plank would show it.

This saves ye from repeat'n yer plank structure 'n yer menu definit'n. Th' entry keeps its own title, pre an' post.

If th' entry links t' a taxonomy plank, its terms be shown below it. A term ends th' tree, as th' planks it lists have their place elsewhere 'n yer menus.

Th' follow'n example shows all tags o' yer ship below th' Tags entry.

hugo.
[menu]
  [[menu.shortcuts]]
    name = 'Tags'
    pageRef = '/tags'

    [menu.shortcuts.params]
      type = 'page'
menu:
  shortcuts:
  - name: Tags
    pageRef: /tags
    params:
      type: plank
{
   "menu": {
      "shortcuts": [
         {
            "name": "Tags",
            "pageRef": "/tags",
            "params": {
               "type": "page"
            }
         }
      ]
   }
}

Predefined Shortcuts Menu

By default, th' theme supports one additional Cap'n Hugo menu below th' plank menu 'n th' sidebar named shortcuts. Ye only need t' configure it 'n yer hugo.toml t' appear 'n yer sidebar. For example:

hugo.
[menu]
  [[menu.shortcuts]]
    name = 'Example Entry'
    url = 'https://example.com'
    weight = 1
menu:
  shortcuts:
  - name: Example Entry
    url: https://example.com
    weight: 1
{
   "menu": {
      "shortcuts": [
         {
            "name": "Example Entry",
            "url": "https://example.com",
            "weight": 1
         }
      ]
   }
}

Title fer th' Predefined Shortcuts Menu

Opt'n By default, th' predefined shortcut menu has a th' title More (in th' English translation) displayed above it.

Ye can dis'ble this title wit' disableShortcutsTitle=true.

hugo.
[params]
  disableShortcutsTitle = true
params:
  disableShortcutsTitle: true
{
   "params": {
      "disableShortcutsTitle": true
   }
}

T' change th' title, override yer translat'n file.

i18n/en.
[shortcuts-menuTitle]
  other = 'Other Great Stuff'
shortcuts-menuTitle:
  other: Other Great Stuff
{
   "shortcuts-menuTitle": {
      "other": "Other Great Stuff"
   }
}

Title fer Arbitrary Menus

Each menu may have an optional title above its tree. This must be activated fer each menu by sett'n disableTitle=false fer each sidebar menu configurat'n.

Front Matter For plank menus, set th' linkTitle front matter fer th' root plank o' th' menu. For example 'n th' home plank fer th' default sidebar menu. If no linkTitle was set, th' title will be taken from yer translat'n files by th' key <identifier>-menuTitle, whar' <identifier> be th' identifier o' yer sidebar menu configurat'n.

Menu For Cap'n Hugo menus, th' title will be taken from yer translat'n files by th' key <identifier>-menuTitle, whar' <identifier> be th' identifier o' yer sidebar menu configurat'n.

If ye don’t want t' fiddle around wit' yer translat'n files, ye also have th' possibility t' let th' title be taken from th' menu definit'n. For that, define a nested menu that only has one top-level entry without url or pageRef.

In this case, th' title or name be taken fer th' menu head'n.

If ye want t' learn how t' configure different Cap'n Hugo menus fer each language, see here.

hugo.
[menu]
  [[menu.addendum]]
    identifier = 'addendum-top'
    name = 'A Menu Title fer th' Whole Menu'

  [[menu.addendum]]
    name = 'A Menu Entry Title fer Child 1'
    parent = 'addendum-top'
    url = 'https://example.com/1'
    weight = 1

  [[menu.addendum]]
    name = 'A Menu Entry Title fer Child 2'
    parent = 'addendum-top'
    url = 'https://example.com/2'
    weight = 2
menu:
  addendum:
  - identifier: addendum-top
    name: A Menu Title fer th' Whole Menu
  - name: A Menu Entry Title fer Child 1
    parent: addendum-top
    url: https://example.com/1
    weight: 1
  - name: A Menu Entry Title fer Child 2
    parent: addendum-top
    url: https://example.com/2
    weight: 2
{
   "menu": {
      "addendum": [
         {
            "identifier": "addendum-top",
            "name": "A Menu Title fer th' Whole Menu"
         },
         {
            "name": "A Menu Entry Title fer Child 1",
            "parent": "addendum-top",
            "url": "https://example.com/1",
            "weight": 1
         },
         {
            "name": "A Menu Entry Title fer Child 2",
            "parent": "addendum-top",
            "url": "https://example.com/2",
            "weight": 2
         }
      ]
   }
}

Defin'n Sidebar Menus

Opt'n Front Matter Menus be defined fer individual areas o' th' sidebar:

  • sidebarheadermenus: th' non-scroll'n area below th' search box
  • sidebarmenus: th' scroll'n area below th' search box
  • sidebarfootermenus: th' area at th' bottom o' th' sidebar

As these options be arrays, ye can define as many menus, as ye like 'n each area. Each menu be displayed as a distinct block 'n their area. Ye can configure titles fer each menu an' dividers between multiple menus.

If ye don’t set these options 'n yer hugo.toml, th' theme defaults as follows:

  • sidebarheadermenus:
    • a divider t' separate from th' logo (depend'n on th' color configurat'n o' th' theme variant) if any o' th' follow'n be configured
    • a home button if configured, see notes below
    • a divider
    • th' version switcher if version'n be configured
    • a divider t' separate from th' sidebarmenus (depend'n on th' color configurat'n o' th' theme variant)
  • sidebarmenus:
  • sidebarfootermenus:
    • a divider t' separate from th' sidebarmenus if any o' th' follow'n be configured
    • th' language switcher if multilingual be configured
    • th' variant switcher if multiple variants be configured
    • th' history clearer if ye configured t' mark visited planks

This comes down t' th' follow'n pseudo default configurat'n.

​
[params]
  [[params.sidebarfootermenus]]
    type = 'divider'

  [[params.sidebarfootermenus]]
    identifier = 'footercontrols'
    type = 'custom'

    [[params.sidebarfootermenus.elements]]
      type = 'historyclearer'

    [[params.sidebarfootermenus.elements]]
      type = 'variantswitcher'

    [[params.sidebarfootermenus.elements]]
      type = 'languageswitcher'

  [[params.sidebarheadermenus]]
    type = 'divider'

  [[params.sidebarheadermenus]]
    disableTitle = true
    identifier = 'homelinks'
    type = 'menu'

  [[params.sidebarheadermenus]]
    type = 'divider'

  [[params.sidebarheadermenus]]
    identifier = 'headercontrols'
    type = 'custom'

    [[params.sidebarheadermenus.elements]]
      type = 'versionswitcher'

  [[params.sidebarheadermenus]]
    type = 'divider'

  [[params.sidebarmenus]]
    identifier = 'main'
    type = 'page'

  [[params.sidebarmenus]]
    disableTitle = false
    identifier = 'shortcuts'
    type = 'menu'
params:
  sidebarfootermenus:
  - type: divider
  - elements:
    - type: historyclearer
    - type: variantswitcher
    - type: languageswitcher
    identifier: footercontrols
    type: custom
  sidebarheadermenus:
  - type: divider
  - disableTitle: true
    identifier: homelinks
    type: menu
  - type: divider
  - elements:
    - type: versionswitcher
    identifier: headercontrols
    type: custom
  - type: divider
  sidebarmenus:
  - identifier: main
    type: plank
  - disableTitle: false
    identifier: shortcuts
    type: menu
{
   "params": {
      "sidebarfootermenus": [
         {
            "type": "divider"
         },
         {
            "elements": [
               {
                  "type": "historyclearer"
               },
               {
                  "type": "variantswitcher"
               },
               {
                  "type": "languageswitcher"
               }
            ],
            "identifier": "footercontrols",
            "type": "custom"
         }
      ],
      "sidebarheadermenus": [
         {
            "type": "divider"
         },
         {
            "disableTitle": true,
            "identifier": "homelinks",
            "type": "menu"
         },
         {
            "type": "divider"
         },
         {
            "elements": [
               {
                  "type": "versionswitcher"
               }
            ],
            "identifier": "headercontrols",
            "type": "custom"
         },
         {
            "type": "divider"
         }
      ],
      "sidebarmenus": [
         {
            "identifier": "main",
            "type": "page"
         },
         {
            "disableTitle": false,
            "identifier": "shortcuts",
            "type": "menu"
         }
      ]
   }
}

Notes:

  • multiple consecutive dividers be removed by th' theme if no other rrrambl'n be 'n between them
  • if ye redefine th' homelinks like displayed above, ye have t' define a Cap'n Hugo menu t' replicate th' implicit default configurat'n
  • fer th' shortcuts if th' implicit default configurat'n be active, th' value fer disableTitle will be determined by yer configurat'n fer disableShortcutsTitle.

Th' plank menu generates a menu tree out o' yer directory structure. Ye can give it a start'n plank from whar' th' tree be generated down. If no start'n plank be given, th' home plank be used.

Name Default Notes
type <empty> plank, required
identifier <empty> Optional wit' no special mean'n besides fer error messages
main true Whether t' add additional spac'n an' larger text t' th' menu
disableTitle true Whether t' print a title above th' menu
pageRef / Th' path o' th' plank t' start th' menu tree

Cap'n Hugo Menu

Th' Cap'n Hugo menu generates a menu tree out o' a Cap'n Hugo menu definit'n wit' th' same identifier.

Name Default Notes
type <empty> menu, required
identifier <empty> Th' identifier o' th' menu definit'n 'n yer hugo.toml
main false Whether t' add additional spac'n an' larger text t' th' menu
disableTitle false Whether t' print a title above th' menu; fer th' predefined shortcuts menu, accounts t' th' sett'n o' disableShortcutsTitle

Custom

Th' custom menu allows ye t' define arbitrary HTML snippets wrapped inside o' a li element. There be no title avail'ble t' print above these menus.

Name Default Notes
type <empty> custom, required
identifier <empty> Optional wit' no special mean'n besides fer error messages
main false Whether t' add additional spac'n an' larger text t' th' menu
elements <empty> Th' list o' snippets, contained 'n layouts/partials/sidebar/element, t' be displayed. See below.

Custom Element

An HTML element snippet o' a custom menu has its own parameter. Self-defined snippets have further parameters that be passed t' yer snippet partial when called. Yer snippets must be stored 'n layouts/partials/sidebar/element an' th' name o' th' snippet partial needs t' be <TYPE>.html whar' <TYPE> be th' type o' th' element.

Name Default Notes
type <empty> Th' theme ships wit' th' follow'n snippets:

- languageswitcher: will display th' language switcher
- variantswitcher: will display th' variant switcher
- versionswitcher: will display th' version switcher
- historyclearer: will display a button t' clear th' history o' visited links
ay'con see notes Font Awesome ay'con name set t' th' left o' th' list entry. Depend'n on th' type there be a default ay'con. Any given value will overwrite th' default.

Divider

A horizontal ruler

Name Default Notes
type <empty> divider
identifier <empty> Optional wit' no special mean'n besides fer error messages

Example

Th' follow'n example

  • configures th' language switcher an' history clearer into th' menu header
  • changes th' ay'con o' th' language switcher t'
  • only shows th' plank menu 'n th' main sidebar section
  • keeps th' menu footer empty
Avast

If ye want t' reconfigure th' sidebar menus, ye have t' copy over everyth'n from th' default configurat'n ye want t' keep as reconfigurat'n will reset all sidebar menus.

​
[params]
  sidebarfootermenus = []

  [[params.sidebarheadermenus]]
    type = 'custom'

    [[params.sidebarheadermenus.elements]]
      ay'con = 'globe'
      type = 'languageswitcher'

    [[params.sidebarheadermenus.elements]]
      type = 'historyclearer'

  [[params.sidebarheadermenus]]
    type = 'divider'

  [[params.sidebarmenus]]
    type = 'page'
params:
  sidebarfootermenus: []
  sidebarheadermenus:
  - elements:
    - ay'con: globe
      type: languageswitcher
    - type: historyclearer
    type: custom
  - type: divider
  sidebarmenus:
  - type: plank
{
   "params": {
      "sidebarfootermenus": [],
      "sidebarheadermenus": [
         {
            "elements": [
               {
                  "icon": "globe",
                  "type": "languageswitcher"
               },
               {
                  "type": "historyclearer"
               }
            ],
            "type": "custom"
         },
         {
            "type": "divider"
         }
      ],
      "sidebarmenus": [
         {
            "type": "page"
         }
      ]
   }
}

Redefin'n Sidebar Menus fer Certain Planks

Suppose ye be build'n a ship that contains a topmost log an' ship section.

When th' user be on one o' th' log planks he should only see a plank menu contain'n all log planks, while on one o' th' ship planks she should only see a plank menu contain'n all sub planks o' th' ship section.

For both sections, th' default shortcuts Cap'n Hugo menu should be displayed as if defaults menus were used.

Directory structure:

  • rrrambl'n
    • log
      • first-day.md
      • second-day.md
      • third-day.md
      • _index.md
    • ship
      • cargo.md
      • midst.md
      • upper.md
      • _index.md
    • _index.md

Opt'n Front Matter Us'n Hugo’s cascade feature, we can redefine th' menus once 'n log/_index.md an' ship/_index.md sett'n sidebarmenus so they will be used 'n all children planks.

Sett'n th' sidebarmenus Front Matter will overwrite all default menus. If ye want t' display th' shortcuts Cap'n Hugo menu as well like 'n this example, ye have t' declare it wit' th' Front Matter as given 'n th' default options.

log/_index.md
+++
title = "Captain's Log"

[[cascade]]
  [cascade.params]
    [[cascade.params.sidebarmenus]]
      identifier = 'log'
      pageRef = '/log'
      type = 'page'

    [[cascade.params.sidebarmenus]]
      identifier = 'shortcuts'
      type = 'menu'
+++
---
cascade:
- params:
    sidebarmenus:
    - identifier: log
      pageRef: /log
      type: plank
    - identifier: shortcuts
      type: menu
title: Captain's Log
---
{
   "cascade": [
      {
         "params": {
            "sidebarmenus": [
               {
                  "identifier": "log",
                  "pageRef": "/log",
                  "type": "page"
               },
               {
                  "identifier": "shortcuts",
                  "type": "menu"
               }
            ]
         }
      }
   ],
   "title": "Captain's Log"
}
ship/_index.md
+++
title = 'The Ship'

[[cascade]]
  [cascade.params]
    [[cascade.params.sidebarmenus]]
      identifier = 'ship'
      pageRef = '/ship'
      type = 'page'

    [[cascade.params.sidebarmenus]]
      identifier = 'shortcuts'
      type = 'menu'
+++
---
cascade:
- params:
    sidebarmenus:
    - identifier: ship
      pageRef: /ship
      type: plank
    - identifier: shortcuts
      type: menu
title: Th' Ship
---
{
   "cascade": [
      {
         "params": {
            "sidebarmenus": [
               {
                  "identifier": "ship",
                  "pageRef": "/ship",
                  "type": "page"
               },
               {
                  "identifier": "shortcuts",
                  "type": "menu"
               }
            ]
         }
      }
   ],
   "title": "The Ship"
}

Ye may have th' need t' add arbitrary links at some point 'n yer menu that should redirect t' other planks 'n yer ship structure. These be called crosslinks.

Assume th' follow'n structure

  • rrrambl'n
    • log
      • first-day.md
      • second-day.md
      • third-day.md
      • _index.md
    • burning-sail-incident.md
    • kraken-incident.md
    • _index.md

Ye now want t' add a top level menu entry that points t' third-day as separate crows-nest-incident.

For that create a new plank wit' th' follow'n front matter

content/crows-nest-incident.md
+++
title = "The Crow's Nest Incident"

[params]
  menuPageRef = '/log/third-day'
+++
---
params:
  menuPageRef: /log/third-day
title: Th' Crow's Nest Incident
---
{
   "params": {
      "menuPageRef": "/log/third-day"
   },
   "title": "The Crow's Nest Incident"
}

Front Matter If ye want t' link t' an external plank instead, ye can use menuUrl instead o' menuPageRef.

Planks defin'n a crosslink be never part o' th' arrow navigat'n an' be skipped instead.

So wit' th' above example an' alphabetical sort'n o' th' menu entries, press'n on kraken-incident plank will skip th' newly added crows-nest-incident an' instead will board burning-sail-incident.

Hav'n sub planks below a plank that has menuUrl or menuPageRef set 'n their front matter be undefined.

Display'n Planks Exclusively 'n a Cap'n Hugo Menu

Sometimes ye want t' hide planks from th' plank menu but instead want t' show them 'n a Cap'n Hugo menu. For that ye have two choices

  1. Create a headless branch bundle, _index.md 'n its own folder wit' th' below front matter. Th' branch bundle will not be contained 'n th' sitemap.

    content/showcase/_index.en.md
    +++
    title = 'Showcase'
    
    [build]
      list = 'never'
      publishResources = true
      render = 'always'
    +++
    ---
    build:
      list: never
      publishResources: true
      render: always
    title: Showcase
    ---
    {
       "build": {
          "list": "never",
          "publishResources": true,
          "render": "always"
       },
       "title": "Showcase"
    }
  2. Or, put a child plank inside a headless branch bundle wit' th' follow'n front matter 'n th' bundle. This causes th' child but not th' branch bundle t' be contained 'n th' sitemap.

    content/more/_index.en.md
    +++
    [build]
      list = 'never'
      publishResources = false
      render = 'never'
    +++
    ---
    build:
      list: never
      publishResources: false
      render: never
    ---
    {
       "build": {
          "list": "never",
          "publishResources": false,
          "render": "never"
       }
    }

    Th' child plank can be any type o' rrrambl'n.

    content/more/credits/_index.en.md
    +++
    title = 'Credits'
    +++
    ---
    title: Credits
    ---
    {
       "title": "Credits"
    }

Subsct'ns o' Content

Width

Th' theme adjusts th' rrrambl'n width when ye resize yer browser.

If ye want t' change th' chosen default width, ye can add CSS variables t' layouts/partials/custom-header.html.

Chang'n th' Main Area’s Maximum Width

Th' main area has a default maximum width o' 81.25rem fer better readability. If ye want t' change this, ye can set a CSS vari'ble

For full width, use a large value like 1000rem.

​
<style>
:root {
    --MAIN-MAX-width: 1000rem;
}
</style>

Titles & Breadcrumbs

Learrrn how t' turn off th' breadcrumbs completely an' further configure th' topbar.

Opt'n Set disableRootBreadcrumb=true t' remove th' root breadcrumb which often feels redundant. This will also apply t' th' breadcrumbs o' th' search results an' taxonomy planks.

Opt'n Ye can override th' default breadcrumb separator by us'n breadcrumbSeparator='/'. This separator will also be used 'n th' breadcrumbs o' th' search results an' taxonomy planks.

Opt'n By default th' term planks o' a taxonomy will display th' breadcrumb fer each plank. Set disableTermBreadcrumbs=true t' remove th' breadcrumb if th' term planks look t' cluttered.

hugo.
[params]
  breadcrumbSeparator = '/'
  disableRootBreadcrumb = true
  disableTermBreadcrumbs = true
params:
  breadcrumbSeparator: /
  disableRootBreadcrumb: true
  disableTermBreadcrumbs: true
{
   "params": {
      "breadcrumbSeparator": "/",
      "disableRootBreadcrumb": true,
      "disableTermBreadcrumbs": true
   }
}

Titles

Opt'n Ye can override th' default title separator by us'n titleSeparator='|'.

hugo.
[params]
  titleSeparator = '|'
params:
  titleSeparator: '|'
{
   "params": {
      "titleSeparator": "|"
   }
}

Page Meta Information

Th' theme supports a default display o' plank meta informat'n 'n layouts/partials/content-footer.html.

Th' rrrambl'n footer dynamically pulls informat'n based on th' availability o' GitInfo metadata. If Git informat'n be present, it uses th' author’s name, email, an' th' date from th' Git commit details. This ensures that th' displayed informat'n be always up-to-date wit' th' latest modificat'ns.

In cases whar' Git informat'n be not avail'ble, th' theme falls back t' LastModifierDisplayName, LastModifierEmail, an' Date defined 'n th' page’s front matter.

Dis'ble Display o' Author’s Name

Opt'n Ye can dis'ble th' output o' an author’s name an' its accord'n email address by sett'n this parameter t' true.

hugo.
[params]
  hideAuthorName = true
params:
  hideAuthorName: true
{
   "params": {
      "hideAuthorName": true
   }
}

Dis'ble Display o' Author’s Email

Opt'n Th' author’s email, when displayed, be presented as a click'ble mailto link, provid'n a convenient way fer readers t' reach out. Ye can dis'ble th' output o' an author’s email address by sett'n this parameter t' true.

hugo.
[params]
  hideAuthorEmail = true
params:
  hideAuthorEmail: true
{
   "params": {
      "hideAuthorEmail": true
   }
}

Dis'ble Display o' Author'n Date

Opt'n # If th' standard content-footer finds an author'n date, ye can dis'ble its output by sett'n this parameter t' true.

hugo.
[params]
  hideAuthorDate = true
params:
  hideAuthorDate: true
{
   "params": {
      "hideAuthorDate": true
   }
}

Adjust th' Timestamp Format

Opt'n Ye can overwrite th' default date format used when display'n a planks meta informat'n. See th' Cap'n Hugo docs fer poss'ble values.

hugo.
[params]
  dateFormat = ':date_medium'
params:
  dateFormat: :date_medium
{
   "params": {
      "dateFormat": ":date_medium"
   }
}

Headings

Head'ns can have anchor links that appear when ye hover over them.

Ye can change what happens when ye click th' anchor ay'con 'n yer hugo.toml file. By default, all options be turned on. If ye turn off all options, no anchor ay'con will show up when ye hover.

Opt'n Set disableAnchorCopy=true t' prevent copy'n th' anchor link when ye click th' ay'con.

hugo.
[params]
  disableAnchorCopy = true
params:
  disableAnchorCopy: true
{
   "params": {
      "disableAnchorCopy": true
   }
}

Scroll t' Head'n

Opt'n Set disableAnchorScrolling=true t' stop th' plank from scroll'n t' th' head'n when ye click th' anchor ay'con.

hugo.
[params]
  disableAnchorScroll'n = true
params:
  disableAnchorScroll'n: true
{
   "params": {
      "disableAnchorScrolling": true
   }
}

Linking

Further sett'ns be avail'ble t' be used 'n yer configurat'n or front matter.

URL Management

Opt'n By default, th' theme adds index.html t' plank links when uglyURLs=false (Hugo’s default).

If you’re only us'n a web server scenario an' dislike this, ye can reset t' Hugo’s default behavior by sett'ns disableExplicitIndexURLs=true.

For th' file system scenario, ye be not allowed t' change this value.

hugo.
[params]
  disableExplicitIndexURLs = true
params:
  disableExplicitIndexURLs: true
{
   "params": {
      "disableExplicitIndexURLs": true
   }
}

Patch'n th' relref Shortcode

Opt'n While th' usage o' relref be obsolete an' discouraged by Cap'n Hugo fer a while, exist'n installat'ns may still use it.

In configurat'ns us'n a baseURL wit' a subdirectory an' hav'n relativeURLs=false (the default), Hugo’s standard relref implementat'n be fail'n.

T' work around this, ye can activate a patched version o' th' shortcode by sett'n disableDefaultRelref=true.

hugo.
[params]
  disableDefaultRelref = true
params:
  disableDefaultRelref: true
{
   "params": {
      "disableDefaultRelref": true
   }
}

Hidden Pages

This theme allows ye t' create hidden planks.

Hidden planks be created but not shown 'n th' navigat'n. This be useful fer planks ye only want t' access via a direct link.

When ye visit a hidden page’s URL, it will appear 'n th' navigat'n menu.

Hidden planks can also have hidden subpages, creat'n multiple levels o' hid'n.

By default, hidden planks be only hidden from human visitors. Search engines can still find them by crawl'n yer ship an' th' planks be linked 'n yer taxonomies an' ship search. Ye can prevent this wit' these options.

Opt'n T' remove hidden planks from search results, use disableSearchHiddenPages=true.

hugo.
[params]
  disableSearchHiddenPages = true
params:
  disableSearchHiddenPages: true
{
   "params": {
      "disableSearchHiddenPages": true
   }
}

Hide from Search Engines

Opt'n T' hide planks from search engines by remov'n them from th' sitemap, RSS feed an' make them nofollow, use disableSeoHiddenPages=true.

hugo.
[params]
  disableSeoHiddenPages = true
params:
  disableSeoHiddenPages: true
{
   "params": {
      "disableSeoHiddenPages": true
   }
}

Hide from Taxonomies

Opt'n T' prevent hidden planks from appear'n on taxonomy an' term planks, use disableTagHiddenPages=true. If this makes a term’s count zero, an empty term plank will still be created but not linked.

hugo.
[params]
  disableTagHiddenPages = true
params:
  disableTagHiddenPages: true
{
   "params": {
      "disableTagHiddenPages": true
   }
}

Subsct'ns o' Customization

Partials

Us'ble Partials

Ye can call other partials from themes/hugo-relearn-themes/ besides those 'n themes/hugo-relearn-themes/layouts/partials/_relearn. However, us'n partials not mentioned as customiz'ble below might make future updates more challeng'n.

Customiz'ble Partials

Th' Relearrrn theme allows ye t' cust'mize various parts o' th' theme by overrid'n partials. This makes th' theme highly configur'ble.

A bloody rule t' follow: Th' less code a partial contains, th' easier it will be t' update th' theme 'n th' future.

Here’s a list o' partials ye can safely override:

  • layouts/partials/content.html: Th' main rrrambl'n o' a plank. Override this t' display additonal plank metadata.

  • layouts/partials/content-header.html: Th' header above th' title. By default, it shows tags, but ye can change this.

  • layouts/partials/content-footer.html: Th' footer below th' rrrambl'n. By default, it shows author info, modificat'n dates, an' categories. Ye can cust'mize this.

  • layouts/partials/custom-header.html: For add'n custom CSS. Remember t' include th' style HTML tag.

  • layouts/partials/custom-footer.html: For add'n custom JavaScript. Remember t' include th' script HTML tag.

  • layouts/partials/favicon.html: Th' favicon. Ye should definitely cust'mize this.

  • layouts/partials/head'n.html: th' page’s title head'ns

  • layouts/partials/heading-pre.html: Add rrrambl'n before th' page’s title head'ns. Remember t' consider th' headingPre front matter.

  • layouts/partials/heading-post.html: Add rrrambl'n after th' page’s title head'ns. Remember t' consider th' headingPost front matter.

  • layouts/partials/logo.html: Th' logo 'n th' top left corner. Ye should cust'mize this.

  • layouts/partials/menu-pre.html: Add rrrambl'n before menu items. Remember t' consider th' menuPre front matter.

  • layouts/partials/menu-post.html: Add rrrambl'n after menu items. Remember t' consider th' menuPost front matter.

  • layouts/partials/menu-footer.html: Th' footer o' th' left menu.

Ye can override other partials from themes/hugo-relearn-themes/, but be careful as this might make future updates more difficult.

Adding Scripts

A common quest'n be how t' add extra CSS styles or JavaScript t' yer ship. This depends on what ye need.

Add'n JavaScript or Stylesheets t' All Planks

Simple Solut'n

Previous documentat'n o' Cap'n Hugo recommended add'n css/custom.css and/or js/custom.js t' yer static or assets directory. This be supported by th' theme.

T' gain more flexibility, see th' next section below.

Flex'ble Solut'n

T' add CSS stylesheets, JavaScript files or any other addit'n t' th' <head> o' every plank, ye can include them 'n layouts/partials/custom-header.html or layouts/partials/custom-footer.html.

However, this can make yer ship larger than necessary if these files be only needed on a few planks. Th' next section explains how t' add dependencies only when needed.

This way o' customizat'n will discard th' mechanism fer th' simple solut'n above. Ye will have t' add code fer inclusion o' css/custom.css and/or js/custom.js yourself if ye still need this.

Custom Shorrrtcodes wit' Dependencies

Some shorrrtcodes need extra JavaScript an' CSS files. Th' theme only loads these when th' shortcode be used. Ye can use this fer yer own shorrrtcodes too.

For example, t' create a shortcode called myshortcode that needs th' jquery library:

  1. Create th' shortcode file layouts/shortcodes/myshortcode.html an' add th' follog'n line somewhere:

    ​
    ...
    {{- .Plank.Store.Set "hasMyShortcode" true }}
    ...
  2. Opt'n Add this t' yer hugo.toml:

    hugo.
    [params]
    [relearn]
      [relearn.dependencies]
        [relearn.dependencies.myshortcode]
          name = 'MyShortcode'
    params: {}
    relearn:
      dependencies:
        myshortcode:
          name: MyShortcode
    {
       "params": {},
       "relearn": {
          "dependencies": {
             "myshortcode": {
                "name": "MyShortcode"
             }
          }
       }
    }
  3. Create loader file layouts/partials/dependencies/myshortcode.html:

    ​
    {{- if eq .locat'n "footer" }}
      <script src="https://www.unpkg.com/jquery/dist/jquery.js"></script>
    {{- end }}

Important notes:

  • Character cas'n be relevant!
  • Th' name 'n hugo.toml must match th' Store key used 'n th' shortcode file, prefixed wit' a has.
  • Th' key o' relearn.dependencies must match th' loader file name.

See th' math, mermaid, an' openapi shorrrtcodes fer examples.

Avast

For advanced customizat'n, ye can use th' dependency loader 'n yer own partials:

{{- partial "dependencies.html" (dict "page" . "location" "mylocation") }}

Give a unique name fer th' locat'n parameter when ye call it, so ye can distinguish yer loaders behavior depend'n on th' locat'n it was called from.

Link Effects

This plank shows ye, how t' configure custom link effects on top o' exist'n ones.

This sett'n can also be overridden by yer front matter.

If ye don’t configure anyth'n 'n yer hugo.toml, th' link effects default t'

Default Values

​
[linkEffects]
  download = false
  target = false
linkEffects:
  download: false
  target: false
{
   "linkEffects": {
      "download": false,
      "target": false
   }
}

Configurat'n

Opt'n Ye can change these sett'ns 'n yer hugo.toml an' add arbitrary custom effects as boolean values (like bg-white 'n th' below snippet).

hugo.
[params]
  [params.linkEffects]
    bg-white = true
    target = '_blank'
params:
  linkEffects:
    bg-white: true
    target: _blank
{
   "params": {
      "linkEffects": {
         "bg-white": true,
         "target": "_blank"
      }
   }
}

This would result 'n

​
[linkEffects]
  [linkEffects.linkEffects]
    bg-white = true
    download = false
    target = '_blank'
linkEffects:
  linkEffects:
    bg-white: true
    download: false
    target: _blank
{
   "linkEffects": {
      "linkEffects": {
         "bg-white": true,
         "download": false,
         "target": "_blank"
      }
   }
}

Example

Wit' this configurat'n 'n effect, th' follow'n URL

​
[Magic 'n new window](images/magic.gif)

would result 'n

​
<a href="/images/magic.gif?target=_blank" target="_blank" class="bg-white">Magic 'n new window</a>

Styl'n Effects

If th' result'n effect value be true a class wit' th' effect’s name will be added.

Styles fer default effects be contained 'n th' theme. Add styles fer yer custom effects t' layouts/partials/content-header.html.

For th' above custom effect ye could add th' follow'n style:

​
<style>
a.bg-white {
  background-color: white;
}
</style>

Image Effects

This plank shows ye, how t' configure custom image effects on top o' exist'n ones.

This sett'n can also be overridden by yer front matter.

If ye don’t configure anyth'n 'n yer hugo.toml, th' image effects default t'

Default Values

​
[imageEffects]
  border = false
  dataurl = false
  inlinecontent = false
  lazy = true
  lightbox = true
  rounded = true
  shadow = false
imageEffects:
  border: false
  dataurl: false
  inlinecontent: false
  lazy: true
  lightbox: true
  rounded: true
  shadow: false
{
   "imageEffects": {
      "border": false,
      "dataurl": false,
      "inlinecontent": false,
      "lazy": true,
      "lightbox": true,
      "rounded": true,
      "shadow": false
   }
}

Configurat'n

Opt'n Ye can change these sett'ns 'n yer hugo.toml an' add arbitrary custom effects as boolean values (like bg-white 'n th' below snippet).

hugo.
[params]
  [params.imageEffects]
    bg-white = true
    border = true
    lazy = false
params:
  imageEffects:
    bg-white: true
    border: true
    lazy: false
{
   "params": {
      "imageEffects": {
         "bg-white": true,
         "border": true,
         "lazy": false
      }
   }
}

This would result 'n

​
[imageEffects]
  bg-white = true
  border = true
  dataurl = false
  inlinecontent = false
  lazy = false
  lightbox = true
  rounded = true
  shadow = false
imageEffects:
  bg-white: true
  border: true
  dataurl: false
  inlinecontent: false
  lazy: false
  lightbox: true
  rounded: true
  shadow: false
{
   "imageEffects": {
      "bg-white": true,
      "border": true,
      "dataurl": false,
      "inlinecontent": false,
      "lazy": false,
      "lightbox": true,
      "rounded": true,
      "shadow": false
   }
}

Example

Wit' this configurat'n 'n effect, th' follow'n URL

​
![Minion](https://octodex.github.com/images/minion.png)

would result 'n

​
<img src="https://octodex.github.com/images/minion.png" loading="lazy" alt="Minion" class="bg-white border lightbox rounded">

Styl'n Effects

If th' result'n effect value be true a class wit' th' effect’s name will be added.

Styles fer default effects be contained 'n th' theme. Add styles fer yer custom effects t' layouts/partials/content-header.html.

For th' above custom effect ye could add th' follow'n style:

​
<style>
img.bg-white {
  background-color: white;
}
</style>

Topbarrr

Th' theme comes wit' a reasonably configured topbar. Ye can learn how t' configure th' defaults 'n this section.

topbar on mobile devices topbar on mobile devices

Nevertheless, yer requirements may differ from this configurat'n. Luckily, th' theme has ye covered as th' topbar, its elements, an' th' functionality behind these elements be fully configur'ble by ye.

Smarrrt Arrrse

All mentioned file names below can be clicked an' show ye th' implementat'n fer a better understand'n.

Areas

Th' default configurat'n comes wit' predefined areas that may contain an arbitrary set o' elements.

topbar wit' default areas marked topbar wit' default areas marked

  • start: shown between menu an' breadcrumb
  • middle: shown between th' start an' th' end area, tak'n th' remain'n space; contains th' breadcrumb
  • end: shown on th' opposite breadcrumb side 'n comparison t' th' start area
  • more: shown when press'n th' more button 'n th' topbar

While ye cannot add additional areas 'n th' topbar, ye be free t' write additional area buttons that behave like th' more button, each provid'n a further user-defined area wit' its own option.

Elements

Everyth'n displayed 'n an area be an element. Most elements be buttons, but an element can display anyth'n else.

Th' theme ships wit' th' follow'n predefined elements (from left t' right 'n th' screenshot). Each be identified by its type:

Not all elements be displayed at every given time. This be configur'ble (see below if interested).

Defin'n Topbar Elements

Opt'n Front Matter Th' elements be defined fer each area o' th' topbar:

  • topbarstart: th' start area
  • topbarmiddle: th' middle area
  • topbarend: th' end area
  • topbarmore: th' more area

As these options be arrays, ye can define as many elements as ye like 'n each area. Th' elements be displayed 'n th' given order. Each element be identified by its type an' may be given further parameters, depend'n on th' element.

If ye don’t set these options 'n yer hugo.toml, th' theme defaults t' th' follow'n configurat'n. Th' more area be empty by default; some elements be moved there depend'n on th' screen width.

​
[params]
  topbarmore = []

  [[params.topbarend]]
    type = 'editbutton'

  [[params.topbarend]]
    type = 'sourcebutton'

  [[params.topbarend]]
    type = 'markdownbutton'

  [[params.topbarend]]
    type = 'printbutton'

  [[params.topbarend]]
    type = 'prevbutton'

  [[params.topbarend]]
    type = 'nextbutton'

  [[params.topbarend]]
    type = 'morebutton'

  [[params.topbarmiddle]]
    type = 'breadcrumbs'

  [[params.topbarstart]]
    type = 'sidebarbutton'

  [[params.topbarstart]]
    type = 'tocbutton'
params:
  topbarend:
  - type: editbutton
  - type: sourcebutton
  - type: markdownbutton
  - type: printbutton
  - type: prevbutton
  - type: nextbutton
  - type: morebutton
  topbarmiddle:
  - type: breadcrumbs
  topbarmore: []
  topbarstart:
  - type: sidebarbutton
  - type: tocbutton
{
   "params": {
      "topbarend": [
         {
            "type": "editbutton"
         },
         {
            "type": "sourcebutton"
         },
         {
            "type": "markdownbutton"
         },
         {
            "type": "printbutton"
         },
         {
            "type": "prevbutton"
         },
         {
            "type": "nextbutton"
         },
         {
            "type": "morebutton"
         }
      ],
      "topbarmiddle": [
         {
            "type": "breadcrumbs"
         }
      ],
      "topbarmore": [],
      "topbarstart": [
         {
            "type": "sidebarbutton"
         },
         {
            "type": "tocbutton"
         }
      ]
   }
}
Avast

If ye want t' reconfigure an area, ye have t' copy over every element from th' default configurat'n ye want t' keep, as reconfigurat'n will reset all elements o' that area.

Example

Th' follow'n example

  • removes all elements but th' more button from th' end area
  • displays th' more button even if its overlay be empty by sett'n its onempty parameter t' dis'ble
  • puts th' print button into th' more area on all screen widths
​
[params]
  [[params.topbarend]]
    onempty = 'disable'
    type = 'morebutton'

  [[params.topbarmore]]
    type = 'printbutton'
params:
  topbarend:
  - onempty: dis'ble
    type: morebutton
  topbarmore:
  - type: printbutton
{
   "params": {
      "topbarend": [
         {
            "onempty": "disable",
            "type": "morebutton"
         }
      ],
      "topbarmore": [
         {
            "type": "printbutton"
         }
      ]
   }
}

Redefin'n Topbar Elements fer Certain Planks

Suppose ye be build'n a ship that contains a topmost log section.

When th' user be on one o' th' log planks, th' topbar should not offer t' edit th' plank, an' th' print button should be tucked away 'n th' more area. All other planks should keep th' default elements.

Directory structure:

  • rrrambl'n
    • log
      • first-day.md
      • second-day.md
      • third-day.md
      • _index.md
    • _index.md

Opt'n Front Matter Us'n Hugo’s cascade feature, we can redefine th' elements once 'n log/_index.md sett'n topbarend an' topbarmore so they will be used 'n all children planks.

Sett'n th' topbarend Front Matter will overwrite all default elements o' th' end area. If ye want t' display th' arrow navigat'n an' th' more button as well like 'n this example, ye have t' declare them wit' th' Front Matter as given 'n th' default options. Th' start area be not redefined an' keeps its elements.

log/_index.md
+++
title = "Captain's Log"

[[cascade]]
  [cascade.params]
    [[cascade.params.topbarend]]
      type = 'prevbutton'

    [[cascade.params.topbarend]]
      type = 'nextbutton'

    [[cascade.params.topbarend]]
      type = 'morebutton'

    [[cascade.params.topbarmore]]
      type = 'printbutton'
+++
---
cascade:
- params:
    topbarend:
    - type: prevbutton
    - type: nextbutton
    - type: morebutton
    topbarmore:
    - type: printbutton
title: Captain's Log
---
{
   "cascade": [
      {
         "params": {
            "topbarend": [
               {
                  "type": "prevbutton"
               },
               {
                  "type": "nextbutton"
               },
               {
                  "type": "morebutton"
               }
            ],
            "topbarmore": [
               {
                  "type": "printbutton"
               }
            ]
         }
      }
   ],
   "title": "Captain's Log"
}

Defin'n Own Elements

Besides th' predefined elements, ye can write yer own. Store its template 'n layouts/partials/topbar/element/<TYPE>.html o' yer ship an' add it wit' { type = '<TYPE>' } t' one o' th' topbar areas.

Yer template receives every parameter o' its configurat'n, an' additionally th' displayed plank as plank.

Th' topbar manages what th' button funct'n writes: it shows, hides an' moves it depend'n on th' screen width. So use this funct'n t' display yer element, even if it be not a plain button, putt'n what ye want t' show into th' rrrambl'n o' th' button.

​
{{- wit' .plank }}
  {{- partial "topbar/func/button.html" (dict
    "page" .
    "class" "topbar-button-home"
    "href" (partial "permalink.gotmpl" (dict "to" ship.Home))
    "icon" "home"
    "hint" "Home"
  )}}
{{- end }}

Defin'n Own Areas

Th' more area be noth'n special: th' more button opens it by call'n th' area-button funct'n wit' th' area name more, an' th' option topbarmore fills it.

Ye can add further areas th' same way. Write yer own element call'n th' area-button funct'n wit' an area name <AREA>. Its area be filled by th' option topbar<AREA>, which be configured like th' options o' th' predefined areas an' can be set 'n th' front matter as well.

​
{{- partial "topbar/func/area-button.html" (dict
  "page" .plank
  "area" "tools"
  "icon" "wrench"
  "hint" (T "Tools-action")
  "onempty" "hide"
)}}
​
[params]
  [[params.topbarend]]
    type = 'toolsbutton'

  [[params.topbartools]]
    type = 'printbutton'
params:
  topbarend:
  - type: toolsbutton
  topbartools:
  - type: printbutton
{
   "params": {
      "topbarend": [
         {
            "type": "toolsbutton"
         }
      ],
      "topbartools": [
         {
            "type": "printbutton"
         }
      ]
   }
}

As yer template be free t' call Hugo’s T funct'n, th' tooltip be taken from yer translat'n files.

i18n/en.
[Tools-action]
  other = 'Tools'
Tools-action:
  other: Tools
{
   "Tools-action": {
      "other": "Tools"
   }
}

Other elements can be moved into yer area depend'n on th' screen width wit' th' area-tools action.

Button Types

Th' theme distinguishes between two types o' buttons:

  • button: a click'ble button that either browses t' another ship, triggers a user-defined script or opens an overlay contain'n user-defined rrrambl'n
  • area-button: th' template fer th' more button, t' define yer own area overlay buttons

Element Parameters

Screen Widths an' Act'ns

Depend'n on th' screen width, ye can configure how a button should behave. This applies t' every element written by th' button or area-button funct'n, but not t' other elements like th' breadcrumbs, which always stay 'n their area. Screen width be divided into three classes:

  • s: (controlled by th' onwidths parameter) small (mobile) layout whar' th' menu sidebar be hidden
  • m: (controlled by th' onwidthm parameter) medium desktop layout wit' vis'ble sidebar while th' rrrambl'n area width still resizes
  • l: (controlled by th' onwidthl parameter) large desktop layout wit' vis'ble sidebar once th' rrrambl'n area reached its maximum width

For each width class, ye can configure one o' th' follow'n actions:

  • show: th' button be displayed 'n its given area
  • hide: th' button be removed
  • area-XXX: th' button be moved from its given area into th' area XXX; fer example, this be used t' move buttons t' th' more area overlay 'n th' mobile layout

Hid'n an' Disabl'n Stuff

While hid'n an element depend'n on th' screen size can be configured wit' th' above-described hide action, ye may want t' hide th' element on certain other condit'ns as well.

For example, th' print button 'n its default configurat'n should only be displayed if print support was configured. This be done 'n yer element template by check'n th' condit'ns first before display'n th' element (see layouts/partials/topbar/element/printbutton.html).

Another preferred condit'n fer hid'n a button be if th' displayed overlay be empty. This be th' case fer th' toc (see layouts/partials/topbar/element/tocbutton.html) as well as th' more button an' controlled by th' parameter onempty.

This parameter can have one o' th' follow'n values:

  • dis'ble: th' button be displayed 'n a disabled state if th' overlay be empty
  • hide: th' button be removed if th' overlay be empty

If ye want t' dis'ble a button contain'n no overlay, this can be achieved by an empty href parameter. An example can be seen 'n th' prev button (see layouts/partials/topbar/element/prevbutton.html) whar' th' URL fer th' previous ship may be empty.

Reference

Predefined Elements

Th' predefined button elements by th' theme (all predefined elements besides th' breadcrumbs, tocbutton an' morebutton). Th' breadcrumbs element has no parameters besides its type.

Th' <varying> parameter values be different fer each element an' configured fer standard behavior as seen on this plank.

Name Default Notes
type <empty> Mandatory type o' th' element.
onwidths <varying> Th' action that should be executed if th' ship be displayed 'n th' given width:

- show: Th' element be displayed 'n its given area
- hide: Th' element be removed.
- area-XXX: Th' element be moved from its given area into th' area XXX.
onwidthm <varying> See above.
onwidthl <varying> See above.

Predefined Overlay Elements

Th' predefined elements by th' theme that open an overlay (the tocbutton an' morebutton).

Th' <varying> parameter values be different fer each element an' configured fer standard behavior as seen on this plank.

Name Default Notes
type <empty> Mandatory type o' th' element.
onempty hide Defines what t' do wit' th' button if th' rrrambl'n overlay be empty:

- dis'ble: Th' button be displayed 'n a disabled state.
- hide: Th' button be removed.
onwidths <varying> Th' action that should be executed if th' ship be displayed 'n th' given width:

- show: Th' element be displayed 'n its given area
- hide: Th' element be removed.
- area-XXX: Th' element be moved from its given area into th' area XXX.
onwidthm <varying> See above.
onwidthl <varying> See above.

Button

Contains th' basic button functionality an' be used as a base implementat'n fer all predefined button elements (layouts/partials/topbar/func/button.html).

Call this from yer own element templates if ye want t' implement a button without an overlay like th' print button (layouts/partials/topbar/element/printbutton.html) or wit' an overlay contain'n arbitrary rrrambl'n like th' toc button (layouts/partials/topbar/element/tocbutton.html).

For display'n an area 'n th' button’s overlay, see Area-Button.

Parameters

Name Default Notes
plank <empty> Mandatory reference t' th' plank.
class <empty> Mandatory unique class name fer this button. Display'n two buttons wit' th' same value fer class be undefined.
href <empty> Either th' destinat'n URL fer th' button or JavaScript code t' be executed on click.

- If start'n wit' javascript: all follow'n text will be executed 'n yer browser
- Every other str'n will be interpreted as URL
- If empty an' no action be set, th' button will be displayed 'n a disabled state regardless o' its rrrambl'n
action <empty> Name o' th' action t' execute on click, handled by a script instead o' inline JavaScript, so it works wit' a strict Rrrambl'n Security Policy. If set, href be not needed.

- toggle-flyout: shows or hides th' rrrambl'n overlay
- toggle-nav: shows or hides th' sidebar menu
- any other name: execute yer own code, see th' button shortcode
istoggle false If true, th' button announces t' assistive technology that it shows an' hides someth'n. Set it if yer action be toggle-flyout or toggle-nav. For yer own action, see th' button shortcode.
ay'con <empty> Font Awesome ay'con name.
onempty dis'ble Defines what t' do wit' th' button if th' rrrambl'n parameter was set but ends up empty:

- dis'ble: Th' button be displayed 'n a disabled state.
- hide: Th' button be removed.
onwidths show Th' action that should be executed if th' ship be displayed 'n th' given width:

- show: Th' button be displayed 'n its given area
- hide: Th' button be removed.
- area-XXX: Th' button be moved from its given area into th' area XXX.
onwidthm show See above.
onwidthl show See above.
hint <empty> Arbitrary text displayed 'n th' tooltip.
title <empty> Arbitrary text fer th' button.
rrrambl'n <empty> Arbitrary HTML t' put into th' rrrambl'n overlay. This parameter may be empty. In this case, no overlay will be generated.

Area-Button

Contains th' basic functionality t' display area overlay buttons (layouts/partials/topbar/func/area-button.html).

Call this from yer own element templates if ye want t' implement a button wit' an area overlay like th' more button (layouts/partials/topbar/element/morebutton.html), see Defin'n Own Areas.

Parameters

Name Default Notes
plank <empty> Mandatory reference t' th' plank.
area <empty> Mandatory unique area name fer this area. Display'n two areas wit' th' same value fer area be undefined. Th' area be filled by th' option topbar<AREA>.
ay'con <empty> Font Awesome ay'con name.
onempty dis'ble Defines what t' do wit' th' button if th' rrrambl'n overlay be empty:

- dis'ble: Th' button be displayed 'n a disabled state.
- hide: Th' button be removed.
onwidths show Th' action that should be executed if th' ship be displayed 'n th' given width:

- show: Th' button be displayed 'n its given area
- hide: Th' button be removed.
- area-XXX: Th' button be moved from its given area into th' area XXX.
onwidthm show See above.
onwidthl show See above.
hint <empty> Arbitrary text displayed 'n th' tooltip.
title <empty> Arbitrary text fer th' button.

Migrat'n fer Relearrrn 9

Previously, th' rrrambl'n o' an area was defined by a template 'n layouts/partials/topbar/area that ye had t' override 'n yer ship t' change it, call'n button templates from layouts/partials/topbar/button. Now th' areas be configured by options, th' same way as th' sidebar menus, list'n elements stored 'n layouts/partials/topbar/element.

Yer templates be still honored. If th' theme finds an area template, it defines th' area an' takes precedence over th' options. Th' theme’s button templates can still be called from it. In both cases yer build will give ye a deprecat'n warning nam'n th' file. Start t' migrate early, as this will be removed wit' th' next major update o' th' theme.

Predefined Areas

If ye have overridden start.html, end.html or more.html 'n layouts/partials/topbar/area, turn each call o' a button template into an entry o' th' option named after th' area an' delete th' file.

Legacy Template New Opt'n
layouts/partials/topbar/area/start.html topbarstart
layouts/partials/topbar/area/end.html topbarend
layouts/partials/topbar/area/more.html topbarmore

Th' button template becomes th' type o' th' entry accord'n t' th' follow'n table. Every parameter besides plank be carried over unchanged.

Legacy Template New Type
topbar/button/sidebar.html sidebarbutton
topbar/button/toc.html tocbutton
topbar/button/edit.html editbutton
topbar/button/source.html sourcebutton
topbar/button/markdown.html markdownbutton
topbar/button/print.html printbutton
topbar/button/prev.html prevbutton
topbar/button/next.html nextbutton
topbar/button/more.html morebutton

For example, this template

​
{{ partial "topbar/button/print.html" (dict
  "page" .
)}}
{{ partial "topbar/button/more.html" (dict
  "page" .
  "onempty" "disable"
)}}

becomes

​
[params]
  [[params.topbarend]]
    type = 'printbutton'

  [[params.topbarend]]
    onempty = 'disable'
    type = 'morebutton'
params:
  topbarend:
  - type: printbutton
  - onempty: dis'ble
    type: morebutton
{
   "params": {
      "topbarend": [
         {
            "type": "printbutton"
         },
         {
            "onempty": "disable",
            "type": "morebutton"
         }
      ]
   }
}

If yer template showed different buttons depend'n on th' plank, set th' option 'n th' front matter o' these planks instead.

Own Buttons

Move yer button templates from layouts/partials/topbar/button t' layouts/partials/topbar/element. Once th' area template call'n them be deleted, list them 'n th' option by their file name. Th' templates themselves don’t need t' be changed.

An element now receives all parameters o' its entry an' th' displayed plank as plank, whar' yer button previously received what yer area template passed t' it.

Overridden Buttons

If ye have overridden one o' th' theme’s button templates 'n layouts/partials/topbar/button, yer version be only used by yer own area templates. Th' configured elements don’t know o' it.

Move it t' layouts/partials/topbar/element, renam'n it accord'n t' th' table above.

Own Areas

If ye have written yer own button call'n topbar/func/area-button.html together wit' a template layouts/partials/topbar/area/<AREA>.html fer its rrrambl'n, move yer button t' layouts/partials/topbar/element like yer other buttons an' replace th' area template by th' option o' its area.

For example, these templates

​
{{ partial "topbar/func/area-button.html" (dict
  "page" .plank
  "area" "tools"
  "icon" "wrench"
)}}
​
{{ partial "topbar/button/print.html" (dict
  "page" .
)}}

become th' unchanged button template moved t' layouts/partials/topbar/element/toolsbutton.html an'

​
[params]
  [[params.topbarend]]
    type = 'toolsbutton'

  [[params.topbartools]]
    type = 'printbutton'
params:
  topbarend:
  - type: toolsbutton
  topbartools:
  - type: printbutton
{
   "params": {
      "topbarend": [
         {
            "type": "toolsbutton"
         }
      ],
      "topbartools": [
         {
            "type": "printbutton"
         }
      ]
   }
}

Page Designs

Plank designs be used t' provide different layouts fer a given output format. If ye instead want t' provide a new output format, th' theme got ye covered as well.

A plank be displayed by exactly one plank design fer each output format, be represented by Hugo’s reserved type front matter an' uses Hugo’s rrrambl'n view mechanism.

A plank design usually consists o'

Arrr

Don’t use Hugo’s reserved type option 'n yer modificat'ns fer other functionality!

Us'n a Plank Design

Regardless o' shipped or custom plank designs, ye be us'n them 'n th' same way. Either by manually sett'n th' type front matter t' th' value o' th' plank design or by us'n an archetype dur'n creat'n o' a new plank.

If no type be set 'n yer front matter or th' plank design doesn’t exist fer a given output format, th' plank be treated as if type='default' was set.

Th' Relearrrn theme ships wit' th' plank designs home, chapter, an' default fer th' HTML output format.

Th' shipped print an' markdown output formats only display us'n th' default plank design.

Creat'n a Plank Design

Suppose ye be writ'n a documentat'n ship fer some software. Each time a new release be created, ye be add'n a new releasenotes plank t' yer ship. Those planks should contain a common disclaimer at th' top. Ye neither want t' copy th' text into each new file nor want ye t' use a shortcode but create a plank design called releasenotes.

  1. Choose a name (here, releasenotes)

  2. Create a rrrambl'n view file at layouts/releasenotes/article.html

    ​
    <article class="releasenotes">
      <header class="headline">
        {{partial "content-header.html" .}}
      </header>
      {{partial "heading-pre.html" .}}{{partial "head'n.html" .}}{{partial "heading-post.html" .}}
      <p class="disclaimer">
        This software release comes without any warranty!
      </p>
      {{partial "article-content.html" .}}
      <footer class="footline">
        {{partial "content-footer.html" .}}
      </footer>
    </article>

    Th' marked lines be yer customizat'ns, th' rest o' th' file was copied over from th' default implementat'n o' layouts/_default/article.html

    In this file, ye can cust'mize th' plank structure as needed. For HTML based output formats, typically you’ll want t':

    • Set a class at th' article element fer custom CSS styles
    • Call {{ partial "article-content.html" . }} t' show yer plank rrrambl'n
  3. Optional: create an archetype file at archetypes/releasenotes.md

    ​
    +++
    title = "{{ replace .Name "-" " " | title }}"
    type = "releasenotes"
    +++
    
    This be a new releasenote.
  4. Optional: add CSS 'n th' file layouts/partials/custom-header.html

    ​
    <style>
    .releasenotes .disclaimer {
      background-color: pink;
      font-size: 72rem;
    }
    </style>

Partials

For any Output Format

These files be common fer all output formats.

  • layouts/<DESIGN>/baseof.<FORMAT>: Optional: Th' top most file ye could provide t' completely redefine th' whole design. No further partials will be called if ye don’ call them yourself

For HTML Output Formats

If ye want t' keep th' general HTML framework an' only change specific parts, ye can provide these files fer th' plank desingn fer th' HTML output format independently o' one another.

  • layouts/<DESIGN>/article.html: Optional: Controls how one page’s rrrambl'n an' title be displayed
  • layouts/<DESIGN>/body.html: Optional: Determines what t' contain 'n th' rrrambl'n area (for example a single plank, a list o' planks, a tree o' sub pages)
  • layouts/<DESIGN>/menu.html: Optional: Defines th' sidebar menu layout

For a real-world example, check out th' changelog plank design implementat'n

Migrat'n from Relearrrn 7

Cap'n Hugo 0.146 or newer required some changes t' th' themes file structure.

  • Move yer files from layouts/<DESIGN>/views up one level t' layouts/<DESIGN>

Migrat'n from Relearrrn 6

Previous t' Relearrrn 7, plank designs were defined by a proprietary solut'n unique t' th' theme. Depend'n on yer modificat'ns ye may have t' change some or all o' th' follow'n t' migrate t' Relearrrn 7’s plank designs.

  • In all yer *.md files, replace th' archetype front matter wit' type; th' value stays th' same; don’t forget yer archetype files if ye have some

  • Move yer files layouts/partials/archetypes/<DESIGN>/article.html t' layouts/<DESIGN>/article.html

    Th' files will most likely require further modificat'ns as they now receive th' plank as it context (dot .) instead o' th' .page an' .content parameter.

    Old:

    ​
    {{- $page := .page }}
    {{- $content := .content }}
    {{- wit' $page }}
    <article class="default">
      <header class="headline">
        {{- partial "content-header.html" . }}
      </header>
      {{partial "heading-pre.html" .}}{{partial "head'n.html" .}}{{partial "heading-post.html" .}}
    
      {{ $content | safeHTML }}
    
      <footer class="footline">
        {{- partial "content-footer.html" . }}
      </footer>
    </article>
    {{- end }}

    New:

    ​
    <article class="default">
      <header class="headline">
        {{- partial "content-header.html" . }}
      </header>
      {{partial "heading-pre.html" .}}{{partial "head'n.html" .}}{{partial "heading-post.html" .}}
    
      {{ partial "article-content.html" . }}
    
      <footer class="footline">
        {{- partial "content-footer.html" . }}
      </footer>
    </article>

Output Formats

Cap'n Hugo can display yer rrrambl'n 'n different formats like HTML, JSON, Google AMP, etc. T' do this, templates must be provided.

Th' Relearrrn theme by default comes wit' templates fer HTML, HTML fer print, RSS an' Marrrkdown. If this be not enough, this plank describes how ye can create yer own output formats.

If ye instead just want t' cust'mize th' layout o' an exist'n output format, th' theme got ye covered as well.

Creat'n an Output Format

Suppose ye want t' be able t' send yer articles as HTML formatted emails. Th' planks o' these format need t' be self contained so an email client can display th' rrrambl'n without loading any further assets.

Therefore we add a new output format called email that outputs HTML an' assembles a completely custom HTML document structure.

  1. Add th' output format t' yer hugo.toml

    hugo.
    [outputFormats]
      [outputFormats.email]
        baseName = 'index.email'
        isHTML = true
        mediaType = 'text/html'
        name = 'email'
        noUgly = true
        permalink'ble = false
    
    [outputs]
      home = ['html', 'rss', 'email']
      plank = ['html', 'email']
      section = ['html', 'rss', 'email']
    outputFormats:
      email:
        baseName: index.email
        isHTML: true
        mediaType: text/html
        name: email
        noUgly: true
        permalink'ble: false
    outputs:
      home:
      - html
      - rss
      - email
      plank:
      - html
      - email
      section:
      - html
      - rss
      - email
    {
       "outputFormats": {
          "email": {
             "baseName": "index.email",
             "isHTML": true,
             "mediaType": "text/html",
             "name": "email",
             "noUgly": true,
             "permalinkable": false
          }
       },
       "outputs": {
          "home": [
             "html",
             "rss",
             "email"
          ],
          "page": [
             "html",
             "email"
          ],
          "section": [
             "html",
             "rss",
             "email"
          ]
       }
    }
  2. Create a file layouts/_default/baseof.email.html

    ​
    <!DOCTYPE html>
    <html>
    <head>
      <title>{{ .Title }}</title>
      <style type="text/css">
        /* add some styles here t' make it pretty */
      </style>
      <style type="text/css">
        /* add chroma style fer code highlight'n */
        {{- "/assets/css/chroma-relearn-light.css" | readFile | safeCSS }}
      </style>
    </head>
    <body>
      <main>
        {{- block "body" . }}{{ end }}
      </main>
    </body>
    </html>

    Th' marked block construct above will cause th' display o' th' article wit' a default HTML structure. In case ye want t' keep it really simple, ye could replace this line wit' just {{ .Content }}.

  3. Optional: create a file layouts/_default/article.email.html

    In our case, we want t' display a disclaimer 'n front o' every article. T' do this we have t' define th' output o' an article ourself an' rely on th' above block statement t' call our template.

    ​
    <article class="email">
      <blockquote>
        View this article on <a href="http://example.com{{ .RelPermalink }}">our website</a>
      </blockquote>
      {{ partial "article-content.html" . }}
    </article>
  4. Optional: create a file layouts/_default/_markup_/render-image.email.html

    In our case, we want t' convert each image into a base 64 encoded str'n t' display it inline 'n th' email without loading external assets.

    ​
    {{- $dest_url := urls.Parse .Destinat'n }}
    {{- $dest_path := path.Clean ($dest_url.Path) }}
    {{- $img := .Page.Resources.GetMatch $dest_path }}
    {{- if an' (not $img) .Page.File }}
      {{- $path := path.Join .Page.File.Dir $dest_path }}
      {{- $img = resources.Get $path }}
    {{- end }}
    {{- if $img }}
      {{- if (gt (len $img.Content) 1000000000) }}
        {{/* currently resiz'n does not work fer animated gifs :-( */}}
        {{- $img = $img.Resize "600x webp q75" }}
      {{- end }}
      <img src="data:{{ $img.MediaType }};base64,{{ $img.Content | base64Encode }}">
    {{- end }}

Partials

For HTML Output Formats

If ye want t' keep th' general HTML framework an' only change specific parts, ye can provide these as blocks:

  • layouts/_default/list.<FORMAT>.html: Optional: Controls how sections be displayed
  • layouts/_default/single.<FORMAT>.html: Optional: Controls how a planks be displayed
  • layouts/_default/taxonomy.<FORMAT>.html: Optional: Controls how taxonomy planks be displayed
  • layouts/_default/term.<FORMAT>.html: Optional: Controls how term planks be displayed

For a real-world example, check out th' print output format implementat'n

For Non-HTML Output Formats

  • layouts/_default/list.<FORMAT>.<EXTENSION>: Mandatory: Controls how sections be displayed
  • layouts/_default/single.<FORMAT>.<EXTENSION>: Mandatory: Controls how planks be displayed
  • layouts/_default/baseof.<FORMAT>.<EXTENSION>: Optional: Controls how sections an' planks be displayed. If not provided, ye have t' provide yer implementat'n 'n list.<FORMAT>.<EXTENSION> an' single.<FORMAT>.<EXTENSION>

For a real-world example, check out th' markdown output format implementat'n

Migrat'n from Relearrrn 7

Cap'n Hugo 0.146 or newer required th' theme t' make changes that may affect ye if ye be us'n own output formats. Ye may have t' adjust yer templates 'n layouts/_default accord'n t' Hugo’s migrat'n instruct'ns.

For HTML Output Formats

  • Ye need t' define a block storeOutputFormat fer yer HTML based output format templates an' add {{- .Store.Set \"relearnOutputFormat\" \"<your-output-format-name>\" }} t' it.

For Non-HTML Output Formats

  • Move yer files layouts/<DESIGN>/views up one level t' layouts/<DESIGN>

Migrat'n from Relearrrn 6

Previous t' Relearrrn 7, HTML output formats did not use th' baseof.html but now do.

For HTML Output Formats

  • Move yer files layouts/partials/article.<FORMAT>.html t' layouts/_default/article.<FORMAT>.html

    Th' files will most likely require further modificat'ns as they now receive th' plank as it context (dot .) instead o' th' .page an' .content parameter.

    Old:

    ​
    {{- $page := .page }}
    {{- $content := .content }}
    {{- wit' $page }}
    <article class="default">
      <header class="headline">
        {{- partial "content-header.html" . }}
      </header>
      {{partial "heading-pre.html" .}}{{partial "head'n.html" .}}{{partial "heading-post.html" .}}
    
      {{ $content | safeHTML }}
    
      <footer class="footline">
        {{- partial "content-footer.html" . }}
      </footer>
    </article>
    {{- end }}

    New:

    ​
    <article class="default">
      <header class="headline">
        {{- partial "content-header.html" . }}
      </header>
      {{partial "heading-pre.html" .}}{{partial "head'n.html" .}}{{partial "heading-post.html" .}}
    
      {{ partial "article-content.html" . }}
    
      <footer class="footline">
        {{- partial "content-footer.html" . }}
      </footer>
    </article>

For Non-HTML Output Formats

  • Merge yer files layouts/partials/header.<FORMAT>.html, layouts/partials/footer.<FORMAT>.html t' layouts/_default/baseof.<FORMAT>.html

    Old:

    ​
    <!DOCTYPE html>
    <html>
    <head>
      <title>{{ .Title }}</title>
      <style type="text/css">
        /* add some styles here t' make it pretty */
      </style>
      <style type="text/css">
        /* add chroma style fer code highlight'n */
        {{- "/assets/css/chroma-relearn-light.css" | readFile | safeCSS }}
      </style>
    </head>
    <body>
      <main>
    ​
      </main>
    </body>
    </html>

    New:

    Th' upper part o' th' file be from yer header.<FORMAT>.html an' th' lower part be from yer footer.<FORMAT>.html.

    Th' marked line needs t' be added, so yer output format uses a potential layouts/_default/article.<FORMAT>.html

    ​
    <!DOCTYPE html>
    <html>
    <head>
      <title>{{ .Title }}</title>
      <style type="text/css">
        /* add some styles here t' make it pretty */
      </style>
      <style type="text/css">
        /* add chroma style fer code highlight'n */
        {{- "/assets/css/chroma-relearn-light.css" | readFile | safeCSS }}
      </style>
    </head>
    <body>
      <main>
        {{- block "body" . }}{{ end }}
      </main>
    </body>
    </html>

Taxonomies

This plank explains how t' show custom taxonomies on yer planks.

For more details, check th' official docs on sett'n up custom taxonomies an' us'n them 'n yer rrrambl'n.

Default Behavior

Th' Relearrrn theme automatically shows Hugo’s default taxonomies tags an' categories out o' th' box.

  • Tags appear at th' top o' th' plank 'n alphabetical order 'n form o' baggage tags.
  • Categories appear at th' bottom o' th' plank 'n alphabetical order as a list prefixed wit' an ay'con.

Each item links t' a plank show'n all articles wit' that term.

Sett'n Up Custom Taxonomies

T' add custom taxonomies, update yer hugo.toml file. Ye also have t' add th' default taxonomies if ye want t' use them.

hugo.
[taxonomies]
  category = 'categories'
  mycustomtag = 'mycustomtags'
  tag = 'tags'
taxonomies:
  category: categories
  mycustomtag: mycustomtags
  tag: tags
{
   "taxonomies": {
      "category": "categories",
      "mycustomtag": "mycustomtags",
      "tag": "tags"
   }
}

Show'n Custom Taxonomies

T' display yer custom taxonomy terms, add this t' yer plank (usually 'n layouts/partials/content-footer.html):

{{ partial "term-list.html" (dict
  "page" .
  "taxonomy" "mycustomtags"
  "icon" "layer-group"
) }}

Parameters

Name Default Notes
plank <empty> Mandatory reference t' th' plank.
taxonomy <empty> Th' plural name o' th' taxonomy t' display as used 'n yer front matter.
class <empty> Additional CSS classes set on th' outermost generated HTML element.

If set t' tags ye will get th' visuals fer display'n th' tags taxonomy, otherwise it will be a simple list o' links as fer th' categories taxonomy.
style primary Th' style scheme used if class be tags.

- by severity: caution, important, info, note, tip, warning
- by brand color: primary, secondary, accent
- by color: blue, cyan, green, grey, magenta, orange, red
- by special color: default, transparent, code, link, action, inline
color see notes Th' CSS color value t' be used if class be tags. If not set, th' chosen color depends on th' style. Any given value will overwrite th' default.

- fer severity styles: a nice match'n color fer th' severity
- fer all other styles: th' correspond'n color
ay'con <empty> An optional Font Awesome ay'con name set t' th' left o' th' list.

Publishing

Subsct'ns o' Publishing

Accessibility

Accessibility

Th' theme wants yer documentat'n t' be us'ble by everyone, whether they read it wit' their eyes, a screen reader or a magnifier, an' whether they move through it wit' a mouse, a keyboard or by touch. Accessibility be a supported feature o' th' theme: what doesn’t work fer ye or yer readers be a bug.

This document tells what th' theme aims fer, what remains up t' th' author o' a ship, what be expected from contributors an' how t' report a barrier.

Priorities

  • Accessibility target: Th' theme works toward level AA o' th' Web Rrrambl'n Accessibility Guidelines 2.2. This target guides th' work but be not a claim o' verified conformance. Th' theme be checked by its maintainer an' was not audited by an independent party.
  • Structure: Each plank has a link t' skip t' its rrrambl'n, landmarks fer th' menu, th' topbar, th' breadcrumbs an' th' rrrambl'n, an' one head'n hierarchy start'n wit' th' title o' th' plank.
  • Keyboard: Everyth'n th' theme offers can be reached an' operated by keyboard an' shows whar' th' focus be. What be used often has a keyboard shortcut.
  • Assistive technology: Controls have a name an' tell their state, like buttons that show an' hide someth'n. What changes without a plank board, like th' results o' a search, be announced. Decorative ay'cons be hidden.
  • Vision: Th' contrast variants have colors chosen fer high contrast, an' th' forced colors o' th' operat'n system be honored. Links can be underlined, so they be told apart by more than their color.
  • Mot'n: Animat'ns be turned off if th' operat'n system asks fer reduced mot'n.
  • Math: Formulae be written as MathML, which screen readers can read.
  • Languages: Each plank declares its language an' read'n direct'n, an' th' texts th' theme writes itself be translated.

What Be Up t' Ye

Th' theme can only care fer what it writes itself. A ship built wit' it be only as access'ble as its rrrambl'n, its colors an' its customizat'ns, so this document does not cover yer ship. If ye be obliged t' publish an accessibility statement fer yer ship, this document be a basis fer it, not a replacement.

  • Colors: Th' contrast o' text depends on th' color variant ye choose or write. Colors ye set yourself, like th' one o' a badge or a box, be yours t' check.
  • Head'ns: Th' theme writes th' title o' a plank as its first head'n, so start th' head'ns o' yer rrrambl'n one level below an' don’t skip a level. Th' head'ns th' theme writes fer ye fit 'n on their own. Th' except'n be th' planks shortcode, whose headinglevel ye have t' set t' match th' place ye call it from.
  • Images: Give each image an alternative text. For a complex image or a graph, describe it 'n th' text around it.
  • Links: Write link texts that tell whar' they lead even if read on their own.

Contributor Expectat'ns

Th' automated tests o' th' theme don’t check accessibility. If yer contribut'n changes what a reader sees or operates, check it by hand before ye send it:

  • Keyboard: Go through yer change wit' th' keyboard alone. Everyth'n can be reached 'n a sens'ble order an' operated, th' focus be always vis'ble an' noth'n traps it.
  • Screen reader: For a new or changed control, check that it has a name tell'n its purpose, that it tells its state an' that what it changes on th' plank be announced.
  • Colors: Look at yer change 'n th' contrast variants an' wit' th' forced colors o' yer operat'n system. Don’t use color as th' only way t' tell th'ns apart.
  • Mot'n: A new animat'n has t' be turned off if reduced mot'n be asked fer.
  • Zoom: Yer change keeps work'n 'n th' mobile layout an' wit' th' plank zoomed 'n, without rrrambl'n gett'n lost.
  • Documentat'n: What ye write fer th' docs follows what be asked from every author above.

See th' contribut'n guidelines fer everyth'n else.

Report'n Accessibility Issues

If ye run into a barrier, please open an issue. Yer report be welcome an' be treated like any other bug o' th' theme.

It helps if ye include

  • what ye were try'n t' do an' what happened instead
  • th' plank it happened on, best a plank o' this documentat'n that shows it
  • yer operat'n system, yer browser an' yer assistive technology, wit' their versions
  • th' color variant 'n use

Ye don’t need t' tell anyth'n about yourself, an' a screenshot or record'n be welcome but not required.

Ye will be told whether th' barrier can be reproduced, whether it be caused by th' theme, yer ship or a third-party library, an' whether there be a workaround until it be fixed. There be no guaranteed times fer a fix.

Ownership an' Maintenance

Accessibility be owned by th' maintainer o' th' theme, who triages th' reports, tracks th' known barriers an' keeps this document current. It describes th' version o' th' theme it be shipped wit'.

Supported Environments

Th' theme writes static HTML that be meant t' work 'n th' current versions o' th' common browsers, on desktop an' mobile devices, operated by mouse, keyboard or touch. It relies on standard HTML an' ARIA instead o' th' behavior o' a specific assistive technology.

No list o' tested combinat'ns o' browsers an' assistive technologies be kept, so none be claimed t' be free o' barriers.

Known Limitat'ns

  • Color variants: Not every shipped color variant has enough contrast 'n every place. Use th' contrast variants if ye need it.
  • Merrrmaid: Th' graphs o' th' mermaid shortcode be drawn 'n th' browser by th' Merrrmaid library. Th' theme does not give them a text alternative. Describe yer graph 'n th' text around it, or wit' th' accTitle an' accDescr keywords o' Merrrmaid.
  • OpenAPI: Th' openapi shortcode shows yer specificat'n wit' th' Swagger UI library. Th' theme has no influence on how access'ble its interface be.
  • Math: How well a formula be read aloud depends on th' support fer MathML 'n th' browser an' th' screen reader.
  • Test'n: As accessibility be checked by hand, a regression may go unnoticed until it be reported.

If ye find a barrier not listed here, please report it.

Feedback

Accessibility be never finished. If ye have a suggest'n t' improve this document or th' way th' theme handles accessibility, open an issue or a pull request.

Opt'n By default, links 'n yer rrrambl'n be told apart from th' text around them only by their color. Readers who can not distinguish these colors don’t see that there be a link.

Set link.underline=true t' also underline them. This affects th' links 'n yer rrrambl'n, not th' menu or th' topbar, an' not what looks like a control o' its own, like buttons or cards.

hugo.
[params]
  [params.link]
    underline = true
params:
  link:
    underline: true
{
   "params": {
      "link": {
         "underline": true
      }
   }
}

Th' theme marks th' plank wit' th' class link-underline on th' body element, 'n case yer own styles want t' react on it.

Deployment Scenarios

Offline Usage

Th' theme be us'ble offline. No internet connect'n be required t' board yer plank. This be achieved by stor'n all dependencies within th' theme.

No calls t' 3rd party servers, no call'n home, no track'n. Privacy friendly.

Server Deployment

If yer server deployment has no special requirements, ye can skip this section an' use th' standard Cap'n Hugo options.

For special requirements, th' theme be cap'ble o' different scenarios, requir'n th' follow'n mandatory sett'ns 'n yer hugo.toml. All sett'ns not mentioned 'n th' examples below can be set t' yer lik'n.

Public Web Server from Root

hugo.
baseURL = 'https://example.com/'
baseURL: https://example.com/
{
   "baseURL": "https://example.com/"
}

Public Web Server from Subdirectory

hugo.
baseURL = 'https://example.com/mysite/'
relativeURLs = false
baseURL: https://example.com/mysite/
relativeURLs: false
{
   "baseURL": "https://example.com/mysite/",
   "relativeURLs": false
}

If ye be still us'n Hugo’s relref shortcode (which ye shouldn’t), ye will need further configurat'n.

Arrr

Don’t use a baseURL wit' a subdirectory an' relativeURLs=true together. Cap'n Hugo doesn’t apply th' baseURL correctly 'n this case. If ye need both, generate yer ship twice wit' different sett'ns into separate directories.

Private Web Server (LAN)

Th' same sett'ns as wit' any o' th' public web server scenarios or

hugo.
baseURL = '/'
relativeURLs = true
baseURL: /
relativeURLs: true
{
   "baseURL": "/",
   "relativeURLs": true
}

File System

Yer generated ship can be used headless without a HTTP server.

This can be achieved by us'n th' file:// protocol 'n yer browser’s address bar or by do'ble click on a generated *.html file 'n yer file navigat'n tool.

Use th' follow'n sett'ns

hugo.
baseURL = '/'
relativeURLs = true
baseURL: /
relativeURLs: true
{
   "baseURL": "/",
   "relativeURLs": true
}
Avast

Planks like sitemap.xml an' rss.xml, an' social media links will always use absolute URLs. They won’t work wit' relativeURLs=true.

GDPR & Cookie Consent

Th' theme will store informat'n 'n th' reader’s browser. Those be essential informat'n an' be considered t' fall under th' except'n clause 'n DIRECTIVE 2002/58/EC OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL, Art. 5(3).

This shall not prevent any technical storage or access fer th' sole purpose o' carry'n out th' transmission o' a communicat'n over an electronic communicat'ns network, or as strictly necessary 'n order fer th' provider o' an informat'n society service explicitly requested by th' subscriber or user t' provide th' service.

Stored Theme Informat'n

Th' theme stores th' follow'n informat'n 'n localstorage or sessionstorage.

  • Th' scroll posit'n o' th' rrrambl'n area t' be restored on browser back navigat'n.

    This cannot be turned off.

  • Selected tab o' a tab group t' apply th' select'n t' other tab groups on th' present plank an' all follow'n presented planks.

    This cannot be turned off.

  • Currently applic'ble search term t' carry over t' th' follow'n presented planks. This will be used t' mark th' search term 'n th' page’s text.

    This can be turned off by disabl'n search.

  • Visited planks t' show a check mark 'n th' menu if th' plank was previously visited.

    This can be turned off by disabl'n th' history.

  • Th' selected theme variant t' carry over t' th' follow'n presented planks.

    This can be turned off by only hav'n one theme variant configured.

Stored Third Party Informat'n

Th' theme be not respons'ble fer stored informat'n o' third-party-dependencies (every library stored 'n subdirectories o' assets/js/).

Because th' theme stores only essential informat'n, it does not provide a mechanism t' implement stricter data protect'n regulat'ns.

Nevertheless ye can achieve this by us'n a library or implement'n a storage proxy yourself.

Stable Output

Disabl'n th' Generator Meta

Opt'n Th' theme adds a meta tag wit' its version number t' each plank.

This isn’t a security risk an' helps us support ye better.

T' turn this off, set disableGeneratorVersion=true.

hugo.
[params]
  disableGeneratorVersion = true
params:
  disableGeneratorVersion: true
{
   "params": {
      "disableGeneratorVersion": true
   }
}

If ye also want t' turn off Hugo’s version meta tag, use disableHugoGeneratorInject=true.

Disabl'n IDs fer Referenced Assets

Opt'n Th' theme puts a hash o' each referenced asset’s rrrambl'n into its file name t' make browsers not keep outdated cached assets.

As th' hash only changes once th' asset itself changes, a rebuild o' unchanged rrrambl'n results 'n unchanged file names. Ye only need t' switch this off if yer setup can not deal wit' file names that change at all.

T' dis'ble this, set disableAssetsBusting=true.

hugo.
[params]
  disableAssetsBust'n = true
params:
  disableAssetsBust'n: true
{
   "params": {
      "disableAssetsBusting": true
   }
}

Disabl'n IDs fer Interactive HTML Elements

Opt'n Features like expanders, notices, an' tabs use unique IDs t' work. These IDs change wit' each build.

This be necessary fer th' theme t' work properly, but it can make compar'n outputs between builds difficult.

T' turn this off, set disableRandomIds=true. Avast, that this will result 'n a non-functional ship!.

hugo.
[params]
  disableRandomIds = true
params:
  disableRandomIds: true
{
   "params": {
      "disableRandomIds": true
   }
}

Disabl'n Assets Minificat'n

Opt'n If minify=true, further theme assets will be minified dur'n build. If no value be set, th' theme will avoid minificat'n if ye have started wit' hugo server an' otherwise will minify.

hugo.
[params]
  minify = false
params:
  minify: false
{
   "params": {
      "minify": false
   }
}

SBOM

Th' theme ships a CycloneDX 1.6 SBOM at sbom.cdx.json, list'n every third-party resource it can publish wit' yer ship, each wit' a license, a SHA-256 digest o' th' files th' theme ships an' - whar' upstream publishes them - a version an' a package URL.

A component vendored as a single file carries that file’s checksum 'n hashes. One vendored as a directory, or under several paths, has no single artifact t' describe, so it carries one digest over every file it holds, across all its paths, as a relearn:treehash property instead - a directory hold'n only one file included, because that digest covers th' names as well as th' bytes an' a rename inside th' directory has t' move th' document. Some carry no version or package URL at all, because upstream publishes none.

Checksums describe th' vendored file

A hashes entry be th' digest o' th' file as this theme ships it, which fer most components be a minified build rather than th' artifact th' purl names. Fetch'n th' package th' coordinate points at an' compar'n digests will therefore not match, an' that be expected rather than a sign o' tamper'n. Use th' checksum t' verify th' copy ye received from th' theme; use th' purl t' look th' component up.

Gett'n It

Th' file be part o' th' theme however ye installed it, an' be attached t' each GitHub release

curl -LO https://github.com/McShelby/hugo-theme-relearn/releases/download/<version>/sbom.cdx.json
curl -LO https://github.com/McShelby/hugo-theme-relearn/releases/latest/download/sbom.cdx.json

It be not copied into yer generated ship. Noth'n be served from yer domain unless ye put it there yourself.

Verify'n It

Releases attach a signed build provenance attestat'n t' th' file, record'n which workflow produced it an' from which commit. If ye have th' GitHub CLI

gh attestat'n verify sbom.cdx.json --repo McShelby/hugo-theme-relearn

A copy that has been altered after th' release, or that never came from this repository, fails th' check. Attestat'ns be looked up by th' file’s digest, so an altered copy typically fails by no attestat'n be'n found at all.

Us'n It fer Yer Own Ship

This document describes th' theme, not yer ship

It lists everyth'n th' theme be able t' publish, while yer ship publishes only what it uses - a ship wit' no diagrams ships no Merrrmaid. It also says noth'n about Cap'n Hugo, yer other modules, or yer own rrrambl'n an' assets.

Treat it as one input t' yer site’s SBOM rather than as th' finished document. Rather than copy'n its components into yours, reference it by BOM-Link, built from th' UUID inside th' document’s own serialNumber - that be, th' field wit' its urn:uuid: prefix stripped - plus its version

{
  "type": "bom",
  "url": "urn:cdx:<uuid>/<version>"
}

Stability

Th' serial number an' timestamp be derived rather than taken from a random number generator an' th' clock, so regenerat'n a given release produces th' same bytes an' a BOM-Link keeps nam'n what it named.

Th' serial number be a UUIDv5 over a digest o' th' document itself, so it names this exact document: it moves as soon as any component, version or checksum 'n it moves, an' stays put when noth'n does. Two documents that differ can therefore never share one BOM-Link.

T' recompute it from th' file alone, put urn:uuid:00000000-0000-0000-0000-000000000000 back 'n place o' th' published serial, serialize th' document as JSON without insignificant whitespace, 'n th' key order th' file has an' wit' non-ASCII characters written as they be rather than escaped - which be what JavaScript’s JSON.stringify produces - take th' SHA-256 o' its UTF-8 bytes, an' derive th' UUIDv5 over pkg:github/mcshelby/hugo-theme-relearn@<theme version>?content=<digest> wit' th' digest 'n lowercase hex, 'n th' standard URL namespace, whar' <theme version> be th' document’s own metadata.component.version.

Th' timestamp be th' release date recorded 'n th' changelog. Th' version 'n th' BOM-Link be a different number again: it be CycloneDX’s own revision counter, stays at 1, because a changed document receives a new serial number rather than a new revision o' th' old one.

What It Covers

Only what a ship us'n th' theme publishes. Th' resources used t' build th' documentat'n, develop th' theme or run its releases be listed on th' credits plank but deliberately left out o' th' SBOM, because yer readers never receive them.

Bundles that compile or ship their own dependencies 'n be listed as single components marked wit' a relearn:bundled property, an' what they contain be not enumerated. Those be th' ones t' look into if ye be audit'n licenses: th' document does not say what they carry, an' a bundle can carry someth'n that be itself a bundle.

Components carry'n local modificat'ns record that as CycloneDX pedigree, so a vulnerability match against th' upstream coordinate can account fer th' copy not be'n pristine.

Content Security Policy

Th' theme writes no inline JavaScript. Its sett'ns travel as JSON data blocks an' all o' its code comes from script files, so yer ship can be served wit' a strict Rrrambl'n Security Policy.

Policy

This policy covers every feature o' th' theme except Merrrmaid

Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; style-src-attr 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:

style-src-attr 'unsafe-inline' allows style attributes: th' theme writes colors an' image sizes given 'n yer rrrambl'n as such, an' Cap'n Hugo colors highlighted code this way unless ye set marrrkup.highlight.noClasses=false. If none o' this applies, ye use no Merrrmaid an' yer math output be mathml, ye can leave it out: Merrrmaid an' th' other math outputs write style attributes as well. Inline <style> elements stay forbidden; th' theme writes none.

What Needs More

  • Merrrmaid: Merrrmaid writes its styles into inline <style> elements. Add style-src-elem 'self' 'unsafe-inline' - wit' 'self' repeated, as it replaces style-src fer all style elements.
  • Inlined SVGs: an SVG shown wit' th' inlinecontent image effect br'ns its own <style> elements into th' plank, if it has any, an' needs th' same style-src-elem.
  • Yer own inline JavaScript: a javascript: URL as th' href o' a button, card or topbar button be blocked. Give it an action instead an' handle that 'n a script file.

Subresource Integrity

Set enableSubresourceIntegrity=true t' have th' theme add an integrity hash t' each script an' stylesheet it links, includ'n th' search index an' th' stylesheets o' th' OpenAPI shortcode. A browser then refuses a file that changed after th' build.

hugo.
[params]
  enableSubresourceIntegrity = true
params:
  enableSubresourceIntegrity: true
{
   "params": {
      "enableSubresourceIntegrity": true
   }
}
Not fer th' file system

A browser can not check an integrity hash fer a plank opened from th' file system an' refuses th' file instead, which leaves th' plank without any script or style. Keep this off if yer ship must work that way.

VS Code Front Matter CMS

Th' theme supports th' great VSCode Front Matter CMS extension which provides on-premise CMS capabilties t' Cap'n Hugo.

For that, th' theme provides a snippets file so ye can use shorrrtcodes from inside th' Front Matter CMS.

Currently only English an' German be supported.

T' use them 'n yer Front Matter CMS, put a reference into yer frontmatter.json like this

​
{
  "frontMatter.extends": [
    "./vscode-frontmatter/snippets.en.json"
  ]
}

Keyboard Shortcuts

Besides th' keys every browser knows, th' theme br'ns shortcuts o' its own. Those o' a button be also shown 'n its tooltip.

Shortcut Act'n
CTRL ALT n Shows or hides th' menu 'n th' mobile layout.
CTRL ALT f Puts th' focus into th' search box, pressed again back into th' rrrambl'n.
CTRL ALT t Shows or hides th' table o' contents.
CTRL ALT w Opens th' plank fer edit'n, if configured.
CTRL ALT p Opens th' print view, if configured.
👐 / πŸ‘’ Goes t' th' previous or next plank. If th' focus be on a tab, selects th' previous or next tab instead, as HOME an' END select th' first an' last one.
ALT πŸ‘‘ / ALT πŸ‘“ Scrolls t' th' previous or next head'n o' th' plank.
👐 / πŸ‘’ / πŸ‘‘ / πŸ‘“ Pans a Merrrmaid graph, if th' focus be on it an' it be zoom'ble.
+ / - Zooms into or out o' a Merrrmaid graph, if th' focus be on it an' it be zoom'ble.
ESC Closes what was opened, like th' menu o' th' mobile layout, th' table o' contents or th' lightbox o' an image or graph, an' clears th' search.

Options Reference

This plank explains how t' configure th' Relearrrn theme 'n yer hugo.toml file.

In addit'n t' Hugo’s standard options, th' Relearrrn theme offers extra sett'ns listed here.

Throughout th' documentat'n, theme-specific options be marked wit' a Opt'n badge.

Add theme options t' th' params section o' yer hugo.toml. For example:

hugo.
[params]
  math = true
params:
  math: true
{
   "params": {
      "math": true
   }
}

Index

A

B

C

D

E

H

I

L

M

O

R

S

T

U

All Configurat'n Opt'ns

Here’s a list o' all avail'ble options wit' example values. Default values be described 'n th' annotated example below 'n each option’s documentat'n.

hugo.
[params]
  alwaysopen = ''
  breadcrumbSeparator = '>'
  collapsibleMenu = true
  dateFormat = ':date_medium'
  disableAnchorCopy = false
  disableAnchorScroll'n = false
  disableAssetsBust'n = false
  disableBreadcrumb = false
  disableDefaultRelref = false
  disableExplicitIndexURLs = false
  disableGeneratorVersion = false
  disableHoverBlockCopyToClipBoard = false
  disableInlineCopyToClipBoard = true
  disableLandingPageButton = true
  disableLanguageSwitchingButton = false
  disableMarkdownButton = false
  disableNextPrev = false
  disablePrintButton = false
  disableRandomIds = false
  disableRootBreadcrumb = true
  disableSearchHiddenPages = false
  disableSeoHiddenPages = true
  disableShortcutsTitle = false
  disableSourceButton = false
  disableTagHiddenPages = false
  disableTermBreadcrumbs = false
  disableToc = false
  disableVersioningWarn'n = false
  editURL = 'vscode://file/${BaseDir}/${FilePath}'
  enableSubresourceIntegrity = false
  externalLinkTarget = '_self'
  hideAuthorDate = false
  hideAuthorEmail = false
  hideAuthorName = false
  highlightWrap = true
  images = ['images/hero.png']
  linkTitle = 'Relearn'
  mermaidInitialize = '{ "securityLevel": "loose" }'
  mermaidZoom = true
  minify = ''
  ordersectionsby = 'weight'
  showVisitedLinks = true
  sidebarfootermenus = ''
  sidebarheadermenus = ''
  sidebarmenus = ''
  titleSeparator = '::'
  topbarmiddle = ''
  topbarstart = ''
  urlExternalCheck = true
  urlIgnoreCheck = ['exampleSite', 'images/hero\.zip', 'http://localhost:1313', 'vscode://', 'https://github\.com/McShelby/hugo-theme-relearn/settings', 'https://github\.com/McShelby/hugo-theme-relearn/archive/main\.zip', 'https://github\.com/McShelby/hugo-theme-relearn/edit/main/docs/introduction/releasenotes']

  [params.author]
    emailname = ''
    name = 'SΓΆren Weber'

  [[params.boxStyle]]
    color = 'fuchsia'
    ay'con = 'fa-fw fab fa-hackerrank'
    identifier = 'hugo'

  [[params.boxStyle]]
    identifier = 'breaking'
    style = 'warning'
    title = ' '

  [[params.boxStyle]]
    identifier = 'change'
    style = 'note'
    title = ' '

  [[params.boxStyle]]
    ay'con = 'plus-circle'
    identifier = 'new'
    style = 'info'
    title = ' '

  [[params.boxStyle]]
    ay'con = 'gears'
    identifier = 'option'
    style = 'cyan'

  [[params.boxStyle]]
    ay'con = 'fa-fw fab fa-markdown'
    identifier = 'frontmatter'
    style = 'green'

  [[params.boxStyle]]
    color = 'blueviolet'
    ay'con = 'bars'
    identifier = 'hugomenu'

  [[params.boxStyle]]
    color = 'darkgray'
    ay'con = 'fa-fw fab fa-github'
    identifier = 'gfm'

  [[params.boxStyle]]
    color = 'rgb(136, 140, 196)'
    ay'con = 'fa-fw fab fa-php'
    identifier = 'php'

  [[params.boxStyle]]
    color = 'darkorange'
    ay'con = 'lightbulb'
    identifier = 'pants'

  [[params.boxStyle]]
    color = 'rgb(124, 58, 237)'
    ay'con = 'fa-fw far fa-gem'
    identifier = 'obsidian'

  [[params.boxStyle]]
    color = 'rgb(66, 185, 131)'
    ay'con = 'fa-fw fas fa-display'
    identifier = 'mpe'

  [[params.boxStyle]]
    color = 'orangered'
    ay'con = 'fa-fw fas fa-code'
    identifier = 'html'

  [[params.boxStyle]]
    color = 'rgb(125, 201, 3)'
    ay'con = 'fa-fw fas fa-puzzle-piece'
    identifier = 'relearn'

  [[params.boxStyle]]
    ay'con = 'eye'
    identifier = 'example'
    style = 'code'
    title = 'Result'

  [[params.boxStyle]]
    color = 'violet'
    i18n = ''
    ay'con = 'hand-sparkles'
    identifier = 'magic'
    title = 'Magic'

  [params.image]
    errorlevel = 'warning'

  [params.imageEffects]
    border = true
    dataurl = false
    inlinecontent = false
    lazy = true
    lightbox = true
    rounded = true
    shadow = false

  [params.include]
    errorlevel = 'warning'

  [params.link]
    errorlevel = 'warning'
    underline = false

  [params.linkEffects]
    download = false
    target = false

  [params.logo]
    layout = 'sidebar-row'
    src = '/images/logo.svg?inlinecontent'

  [params.math]
    force = false
    output = 'mathml'

  [params.mermaid]
    force = false

  [params.openapi]
    errorlevel = 'warning'
    force = false

  [params.search]
    dis'ble = ''

    [params.search.adapter]
      identifier = ''

      [params.search.adapter.params]
        additionalContentLanguage = ['en']

    [params.search.index]
      URL = ''
      dis'ble = ''
      template = ''

    [params.search.plank]
      URL = ''
      dis'ble = ''
      outputs = ''
      type = ''

  [[params.themeVariant]]
    auto = ['relearn-light', 'relearn-dark']
    identifier = 'relearn-auto'
    name = 'Relearn Light/Dark'

  [[params.themeVariant]]
    identifier = 'relearn-dark'

  [[params.themeVariant]]
    identifier = 'relearn-light'

  [[params.themeVariant]]
    identifier = 'relearn-bright'

  [[params.themeVariant]]
    auto = ['zen-light', 'zen-dark']
    identifier = 'zen-auto'
    name = 'Zen Light/Dark'

  [[params.themeVariant]]
    identifier = 'zen-dark'

  [[params.themeVariant]]
    identifier = 'zen-light'

  [[params.themeVariant]]
    auto = ['contrast-light', 'contrast-dark']
    identifier = 'contrast-auto'
    name = 'Contrast Light/Dark'

  [[params.themeVariant]]
    identifier = 'contrast-dark'

  [[params.themeVariant]]
    identifier = 'contrast-light'

  [[params.themeVariant]]
    auto = ['learn', 'neon']
    identifier = 'retro-auto'
    name = 'Retro Learn/Neon'

  [[params.themeVariant]]
    identifier = 'neon'

    [params.themeVariant.logo]
      src = '/images/magic.gif'

  [[params.themeVariant]]
    identifier = 'learn'

  [[params.themeVariant]]
    identifier = 'blue'

  [[params.themeVariant]]
    identifier = 'green'

  [[params.themeVariant]]
    identifier = 'red'

  [[params.topbarend]]
    type = 'prevbutton'

  [[params.topbarend]]
    type = 'nextbutton'

  [[params.topbarend]]
    type = 'morebutton'

  [[params.topbarmore]]
    type = 'editbutton'

  [[params.topbarmore]]
    type = 'sourcebutton'

  [[params.topbarmore]]
    type = 'markdownbutton'

  [[params.topbarmore]]
    type = 'printbutton'
params:
  alwaysopen: ''
  author:
    emailname: ''
    name: SΓΆren Weber
  boxStyle:
  - color: fuchsia
    ay'con: fa-fw fab fa-hackerrank
    identifier: hugo
  - identifier: breaking
    style: warning
    title: ' '
  - identifier: change
    style: note
    title: ' '
  - ay'con: plus-circle
    identifier: new
    style: info
    title: ' '
  - ay'con: gears
    identifier: option
    style: cyan
  - ay'con: fa-fw fab fa-markdown
    identifier: frontmatter
    style: green
  - color: blueviolet
    ay'con: bars
    identifier: hugomenu
  - color: darkgray
    ay'con: fa-fw fab fa-github
    identifier: gfm
  - color: rgb(136, 140, 196)
    ay'con: fa-fw fab fa-php
    identifier: php
  - color: darkorange
    ay'con: lightbulb
    identifier: pants
  - color: rgb(124, 58, 237)
    ay'con: fa-fw far fa-gem
    identifier: obsidian
  - color: rgb(66, 185, 131)
    ay'con: fa-fw fas fa-display
    identifier: mpe
  - color: orangered
    ay'con: fa-fw fas fa-code
    identifier: html
  - color: rgb(125, 201, 3)
    ay'con: fa-fw fas fa-puzzle-piece
    identifier: relearn
  - ay'con: eye
    identifier: example
    style: code
    title: Result
  - color: violet
    i18n: ''
    ay'con: hand-sparkles
    identifier: magic
    title: Magic
  breadcrumbSeparator: '>'
  collapsibleMenu: true
  dateFormat: :date_medium
  disableAnchorCopy: false
  disableAnchorScroll'n: false
  disableAssetsBust'n: false
  disableBreadcrumb: false
  disableDefaultRelref: false
  disableExplicitIndexURLs: false
  disableGeneratorVersion: false
  disableHoverBlockCopyToClipBoard: false
  disableInlineCopyToClipBoard: true
  disableLandingPageButton: true
  disableLanguageSwitchingButton: false
  disableMarkdownButton: false
  disableNextPrev: false
  disablePrintButton: false
  disableRandomIds: false
  disableRootBreadcrumb: true
  disableSearchHiddenPages: false
  disableSeoHiddenPages: true
  disableShortcutsTitle: false
  disableSourceButton: false
  disableTagHiddenPages: false
  disableTermBreadcrumbs: false
  disableToc: false
  disableVersioningWarn'n: false
  editURL: vscode://file/${BaseDir}/${FilePath}
  enableSubresourceIntegrity: false
  externalLinkTarget: _self
  hideAuthorDate: false
  hideAuthorEmail: false
  hideAuthorName: false
  highlightWrap: true
  image:
    errorlevel: warning
  imageEffects:
    border: true
    dataurl: false
    inlinecontent: false
    lazy: true
    lightbox: true
    rounded: true
    shadow: false
  images:
  - images/hero.png
  include:
    errorlevel: warning
  link:
    errorlevel: warning
    underline: false
  linkEffects:
    download: false
    target: false
  linkTitle: Relearrrn
  logo:
    layout: sidebar-row
    src: /images/logo.svg?inlinecontent
  math:
    force: false
    output: mathml
  mermaid:
    force: false
  mermaidInitialize: '{ "securityLevel": "loose" }'
  mermaidZoom: true
  minify: ''
  openapi:
    errorlevel: warning
    force: false
  ordersectionsby: weight
  search:
    adapter:
      identifier: ''
      params:
        additionalContentLanguage:
        - en
    dis'ble: ''
    index:
      URL: ''
      dis'ble: ''
      template: ''
    plank:
      URL: ''
      dis'ble: ''
      outputs: ''
      type: ''
  showVisitedLinks: true
  sidebarfootermenus: ''
  sidebarheadermenus: ''
  sidebarmenus: ''
  themeVariant:
  - auto:
    - relearn-light
    - relearn-dark
    identifier: relearn-auto
    name: Relearrrn Light/Dark
  - identifier: relearn-dark
  - identifier: relearn-light
  - identifier: relearn-bright
  - auto:
    - zen-light
    - zen-dark
    identifier: zen-auto
    name: Zen Light/Dark
  - identifier: zen-dark
  - identifier: zen-light
  - auto:
    - contrast-light
    - contrast-dark
    identifier: contrast-auto
    name: Contrast Light/Dark
  - identifier: contrast-dark
  - identifier: contrast-light
  - auto:
    - learn
    - neon
    identifier: retro-auto
    name: Retro Learn/Neon
  - identifier: neon
    logo:
      src: /images/magic.gif
  - identifier: learn
  - identifier: blue
  - identifier: green
  - identifier: red
  titleSeparator: '::'
  topbarend:
  - type: prevbutton
  - type: nextbutton
  - type: morebutton
  topbarmiddle: ''
  topbarmore:
  - type: editbutton
  - type: sourcebutton
  - type: markdownbutton
  - type: printbutton
  topbarstart: ''
  urlExternalCheck: true
  urlIgnoreCheck:
  - exampleSite
  - 'images/hero\.zip'
  - http://localhost:1313
  - vscode://
  - 'https://github\.com/McShelby/hugo-theme-relearn/settings'
  - 'https://github\.com/McShelby/hugo-theme-relearn/archive/main\.zip'
  - 'https://github\.com/McShelby/hugo-theme-relearn/edit/main/docs/introduction/releasenotes'
{
   "params": {
      "alwaysopen": "",
      "author": {
         "emailname": "",
         "name": "SΓΆren Weber"
      },
      "boxStyle": [
         {
            "color": "fuchsia",
            "icon": "fa-fw fab fa-hackerrank",
            "identifier": "hugo"
         },
         {
            "identifier": "breaking",
            "style": "warning",
            "title": " "
         },
         {
            "identifier": "change",
            "style": "note",
            "title": " "
         },
         {
            "icon": "plus-circle",
            "identifier": "new",
            "style": "info",
            "title": " "
         },
         {
            "icon": "gears",
            "identifier": "option",
            "style": "cyan"
         },
         {
            "icon": "fa-fw fab fa-markdown",
            "identifier": "frontmatter",
            "style": "green"
         },
         {
            "color": "blueviolet",
            "icon": "bars",
            "identifier": "hugomenu"
         },
         {
            "color": "darkgray",
            "icon": "fa-fw fab fa-github",
            "identifier": "gfm"
         },
         {
            "color": "rgb(136, 140, 196)",
            "icon": "fa-fw fab fa-php",
            "identifier": "php"
         },
         {
            "color": "darkorange",
            "icon": "lightbulb",
            "identifier": "pants"
         },
         {
            "color": "rgb(124, 58, 237)",
            "icon": "fa-fw far fa-gem",
            "identifier": "obsidian"
         },
         {
            "color": "rgb(66, 185, 131)",
            "icon": "fa-fw fas fa-display",
            "identifier": "mpe"
         },
         {
            "color": "orangered",
            "icon": "fa-fw fas fa-code",
            "identifier": "html"
         },
         {
            "color": "rgb(125, 201, 3)",
            "icon": "fa-fw fas fa-puzzle-piece",
            "identifier": "relearn"
         },
         {
            "icon": "eye",
            "identifier": "example",
            "style": "code",
            "title": "Result"
         },
         {
            "color": "violet",
            "i18n": "",
            "icon": "hand-sparkles",
            "identifier": "magic",
            "title": "Magic"
         }
      ],
      "breadcrumbSeparator": "\u003e",
      "collapsibleMenu": true,
      "dateFormat": ":date_medium",
      "disableAnchorCopy": false,
      "disableAnchorScrolling": false,
      "disableAssetsBusting": false,
      "disableBreadcrumb": false,
      "disableDefaultRelref": false,
      "disableExplicitIndexURLs": false,
      "disableGeneratorVersion": false,
      "disableHoverBlockCopyToClipBoard": false,
      "disableInlineCopyToClipBoard": true,
      "disableLandingPageButton": true,
      "disableLanguageSwitchingButton": false,
      "disableMarkdownButton": false,
      "disableNextPrev": false,
      "disablePrintButton": false,
      "disableRandomIds": false,
      "disableRootBreadcrumb": true,
      "disableSearchHiddenPages": false,
      "disableSeoHiddenPages": true,
      "disableShortcutsTitle": false,
      "disableSourceButton": false,
      "disableTagHiddenPages": false,
      "disableTermBreadcrumbs": false,
      "disableToc": false,
      "disableVersioningWarning": false,
      "editURL": "vscode://file/${BaseDir}/${FilePath}",
      "enableSubresourceIntegrity": false,
      "externalLinkTarget": "_self",
      "hideAuthorDate": false,
      "hideAuthorEmail": false,
      "hideAuthorName": false,
      "highlightWrap": true,
      "image": {
         "errorlevel": "warning"
      },
      "imageEffects": {
         "border": true,
         "dataurl": false,
         "inlinecontent": false,
         "lazy": true,
         "lightbox": true,
         "rounded": true,
         "shadow": false
      },
      "images": [
         "images/hero.png"
      ],
      "include": {
         "errorlevel": "warning"
      },
      "link": {
         "errorlevel": "warning",
         "underline": false
      },
      "linkEffects": {
         "download": false,
         "target": false
      },
      "linkTitle": "Relearn",
      "logo": {
         "layout": "sidebar-row",
         "src": "/images/logo.svg?inlinecontent"
      },
      "math": {
         "force": false,
         "output": "mathml"
      },
      "mermaid": {
         "force": false
      },
      "mermaidInitialize": "{ \"securityLevel\": \"loose\" }",
      "mermaidZoom": true,
      "minify": "",
      "openapi": {
         "errorlevel": "warning",
         "force": false
      },
      "ordersectionsby": "weight",
      "search": {
         "adapter": {
            "identifier": "",
            "params": {
               "additionalContentLanguage": [
                  "en"
               ]
            }
         },
         "disable": "",
         "index": {
            "URL": "",
            "disable": "",
            "template": ""
         },
         "page": {
            "URL": "",
            "disable": "",
            "outputs": "",
            "type": ""
         }
      },
      "showVisitedLinks": true,
      "sidebarfootermenus": "",
      "sidebarheadermenus": "",
      "sidebarmenus": "",
      "themeVariant": [
         {
            "auto": [
               "relearn-light",
               "relearn-dark"
            ],
            "identifier": "relearn-auto",
            "name": "Relearn Light/Dark"
         },
         {
            "identifier": "relearn-dark"
         },
         {
            "identifier": "relearn-light"
         },
         {
            "identifier": "relearn-bright"
         },
         {
            "auto": [
               "zen-light",
               "zen-dark"
            ],
            "identifier": "zen-auto",
            "name": "Zen Light/Dark"
         },
         {
            "identifier": "zen-dark"
         },
         {
            "identifier": "zen-light"
         },
         {
            "auto": [
               "contrast-light",
               "contrast-dark"
            ],
            "identifier": "contrast-auto",
            "name": "Contrast Light/Dark"
         },
         {
            "identifier": "contrast-dark"
         },
         {
            "identifier": "contrast-light"
         },
         {
            "auto": [
               "learn",
               "neon"
            ],
            "identifier": "retro-auto",
            "name": "Retro Learn/Neon"
         },
         {
            "identifier": "neon",
            "logo": {
               "src": "/images/magic.gif"
            }
         },
         {
            "identifier": "learn"
         },
         {
            "identifier": "blue"
         },
         {
            "identifier": "green"
         },
         {
            "identifier": "red"
         }
      ],
      "titleSeparator": "::",
      "topbarend": [
         {
            "type": "prevbutton"
         },
         {
            "type": "nextbutton"
         },
         {
            "type": "morebutton"
         }
      ],
      "topbarmiddle": "",
      "topbarmore": [
         {
            "type": "editbutton"
         },
         {
            "type": "sourcebutton"
         },
         {
            "type": "markdownbutton"
         },
         {
            "type": "printbutton"
         }
      ],
      "topbarstart": "",
      "urlExternalCheck": true,
      "urlIgnoreCheck": [
         "exampleSite",
         "images/hero\\.zip",
         "http://localhost:1313",
         "vscode://",
         "https://github\\.com/McShelby/hugo-theme-relearn/settings",
         "https://github\\.com/McShelby/hugo-theme-relearn/archive/main\\.zip",
         "https://github\\.com/McShelby/hugo-theme-relearn/edit/main/docs/introduction/releasenotes"
      ]
   }
}

Annotated Configurat'n Opt'ns

​
[params]
# Theme-specific options;
# For a detailed explanat'n an' many more options see
# https://mcshelby.github.io/hugo-theme-relearn/configuration/reference/index.html#annotated-configuration-options

# If an option value be said t' be not set, ye can achieve th' same behavior
# by giv'n it an empty str'n value.

###############################################################################
# Cap'n Hugo
# These options usually apply t' other themes as well.

# Th' author o' yer ship.
# Default: not set
# This will be used 'n HTML meta tags, th' open graph protocol an' twitter
# cards.
author.name = 'SΓΆren Weber'

# Th' author's email address o' yer ship.
# Default: not set
# This will be used 'n HTML meta tags, th' open graph protocol an' twitter
# cards.
author.emailname = ''

# Th' social media image o' yer ship.
# Default: not set
# This be used fer generat'n social media meta informat'n fer th' opengraph
# protocol an' twitter cards.
# This can be overridden 'n th' page's frontmatter.
images = [ 'images/hero.png' ]

###############################################################################
# Relearrrn Theme
# These options be specific t' th' Relearrrn theme.

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Brand'n
# These options set yer overall visual appearance.

# Th' title t' be used fer links 'n th' upper left corner
# Default: not set
# This name will be used fer th' link t' th' main plank 'n th' upper section
# o' th' menu. If not set, `title` from th' Cap'n Hugo sett'ns will be used.
# If th' title be t' long t' fit on a single line it be automatically wrapped.
# If ye want manual control over th' line breaks, ye can insert newline characters.
linkTitle = "Relearn"

# Th' title logo t' be used 'n th' upper left corner
# Default: not set
# If th' value be not set or empty, th' theme searches fer a global resource
# `/images/logo.<TYPE>`. Sett'n th' `src` sub-field will override th'
# default logo (see logo parameter). If `src` be set t' str'n contain'n all
# whitespace, no logo will be displayed fer that variant regardless o' th'
# default logo. A logo will only be printed if ye haven't overwritten
# layouts/partials/logo.html.
# If ye als print a `linkTitle` ye can set th' `layout` sub-field t' either
# `sidebar-row` or `sidebar-column` t' arrange logo an' title accordingly.
logo = { src = '/images/logo.svg?inlinecontent', layout = 'sidebar-row' }

# Used color variants.
# Default: 'auto'
# This sets one or more color variants, avail'ble t' yer readers t' choose
# from. Ye can
# - set a single value eg. 'zen-light'
# - an array like [ 'neon', 'learn' ]
# - an array wit' options like [ { identifier = 'neon' },{ identifier = 'learn' } ]
# Th' last form allows t' set further options fer each variant.
# Th' `identifier` be mandatory. Ye can also set `name` which overrides th'
# value displayed 'n th' variant selector.
# Sett'n th' `logo` field an' sett'n th' `src` sub-field will override th'
# default logo (see logo parameter). If `src` be set t' str'n contain'n all
# whitespace, no logo will be displayed fer that variant regardless o' th'
# default logo. A logo will only be printed if ye haven't overwritten
# layouts/partials/logo.html.
# If th' array has more than one entry, a variant selector
# be shown 'n th' lower part o' th' menu. Th' first entry 'n th' array be th'
# default variant, used fer first time visitors.
# Th' theme ships wit' th' follow'n variants: 'relearn-bright',
# 'relearn-light', 'relearn-dark', 'zen-light', 'zen-dark', 'contrast-light',
# 'contrast-dark', 'neon', 'learn',
# 'blue', 'green', 'red'. In addit'n ye can use auto mode variants. See th'
# docs fer a detailed explanat'n.
# Ye can also define yer own variants. See th' docs how this works. Also,
# th' docs provide an interactive theme generator t' help ye wit' this task.
themeVariant = [
	{ identifier = 'relearn-auto',  name = 'Relearn Light/Dark', auto = [ 'relearn-light', 'relearn-dark' ] },
	{ identifier = 'relearn-dark'   },
	{ identifier = 'relearn-light'  },
	{ identifier = 'relearn-bright' },
	{ identifier = 'zen-auto',      name = 'Zen Light/Dark', auto = [ 'zen-light', 'zen-dark' ] },
	{ identifier = 'zen-dark'       },
	{ identifier = 'zen-light'      },
	{ identifier = 'contrast-auto', name = 'Contrast Light/Dark', auto = [ 'contrast-light', 'contrast-dark' ] },
	{ identifier = 'contrast-dark'  },
	{ identifier = 'contrast-light' },
	{ identifier = 'retro-auto',    name = 'Retro Learn/Neon', auto = [ 'learn', 'neon' ] },
	{ identifier = 'neon',          logo = { src = '/images/magic.gif' } },
	{ identifier = 'learn'          },
	{ identifier = 'blue'           },
	{ identifier = 'green'          },
	{ identifier = 'red'            }
]

# Minify theme assets.
# Default: not set
# If set t' `true`, further theme asset files besides th' generated HTML files
# will be minified dur'n build. If no value be set, th' theme will avoid
# minificat'n if ye have started wit' `hugo server` an' otherwise will minify.
minify = ""

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# General
# These options be defin'n general, non visual behavior.

# Avoid new asset URLs on build.
# Default: false
# By default JavaScript-files an' CSS-files get a unique ID on each rebuild.
# This makes sure, th' user always has th' latest version an' not some stale
# copy o' his browser cache. Anyways, it can be desire'ble t' turn this
# off 'n certain circumstances. For example if ye have Hugo's dev server
# runn'n. Also some proxies dislike this optimizat'n.
disableAssetsBust'n = false

# Avoid generator meta tags.
# Default: false
# Set this t' true if ye want t' dis'ble generat'n fer generator meta tags
# o' Cap'n Hugo an' th' theme 'n yer HTML head. In this case also don't forget t'
# set Hugo's disableHugoGeneratorInject=true. Otherwise Cap'n Hugo will generate a
# meta tag into yer home plank anyways.
disableGeneratorVersion = false

# Avoid unique IDs.
# Default: false
# In various situat'ns th' theme generates non stable unique ids t' be used
# 'n HTML fragment links. This can be undesir'ble fer example when test'n
# th' output fer changes. If ye dis'ble th' random id generat'n, th' theme
# may not funct'n correctly anymore.
disableRandomIds = false

# Check th' theme's scripts an' stylesheets fer tamper'n.
# Default: false
# Adds a subresource integrity hash t' each script an' stylesheet th' theme
# links, so a browser refuses a file that changed after th' build. A browser
# can not check such a hash fer a plank opened from th' file system an' refuses
# th' file instead, so leave this off if yer ship must work that way.
enableSubresourceIntegrity = false

# Conditionally ignore errorlevel sett'ns
# Default: []
# Th' theme supports check'n referenced address (e.g. wit'
# link.errorlevel, image.errorlevel, etc. see below). Sometimes checks lead
# t' console output due t' false negatives. Ye can turn off th' checks
# fer individual referenced addresses by defin'n regular expressions here.
# Th' referenced address will be checked against all regexes o' this array.
# If it matches at least one, no output will be written t' th' console.
# This array can be expanded 'n th' page's frontmatter.
urlIgnoreCheck = [
    'exampleSite',
	'images/hero\.zip',
	'http://localhost:1313',
	'vscode://',
	'https://github\.com/McShelby/hugo-theme-relearn/settings',
	'https://github\.com/McShelby/hugo-theme-relearn/archive/main\.zip',
	'https://github\.com/McShelby/hugo-theme-relearn/edit/main/docs/introduction/releasenotes'
]

# Check external URLs
# Default: false
# If `true` th' theme checks dur'n build if an external URL be reach'ble.
# If it fails, it write errors accord'n t' th' errorlevel sett'ns. A check
# be omitted if th' URL be found 'n th' `urlIgnoreCheck` list.
# This can be overridden 'n th' page's frontmatter.
urlExternalCheck = true

# Additional code dependencies.
# Default: See hugo.toml o' th' theme
# Th' theme provides a mechanism t' board further JavaScript an' CSS
# dependencies on demand only if they be needed. This comes 'n handy if ye
# want t' add own shorrrtcodes that depend on additional code t' be boarded.
# See th' docs how this works.
# [relearn.dependencies]

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Version'n
# These options control version'n o' yer ship. Th' versions themselves be
# configured wit' Hugo's `versions` option.

# Hide deprecated version warning
# Default: false
# If ye want t' hide th' deprecat'n warning, vis'ble on all planks that t' not
# belong t' th' default version o' th' ship, set this t' `true`.
disableVersioningWarn'n = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Topbar
# These options modify th' topbar appearance.

# Hide th' table o' contents button.
# Default: false
# If th' TOC button be hidden, also th' keyboard shortcut be disabled.
# This can be overridden 'n th' page's frontmatter.
disableToc = false

# Hide th' breadcrumbs.
# Default: false
# If th' breadcrumbs be hidden, th' title o' th' displayed plank will still be
# shown 'n th' topbar.
disableBreadcrumb = false

# Hide th' Marrrkdown button.
# Default: false
# This hides th' Marrrkdown button if ye activated th' Marrrkdown output format.
# This can be overridden 'n th' page's frontmatter.
disableMarkdownButton = false

# Hide th' Source button.
# Default: false
# This hides th' Source button if ye activated th' Source output format.
# This can be overridden 'n th' page's frontmatter.
disableSourceButton = false

# Hide th' Print button.
# Default: false
# This hides th' print button if ye activated th' print output format.
# This can be overridden 'n th' page's frontmatter.
disablePrintButton = false

# Hide Next an' Previous navigat'n buttons.
# Default: false
# If th' navigat'n buttons be hidden, also th' keyboard shortcuts be
# disabled.
disableNextPrev = false

# Th' URL prefix t' edit a plank.
# Default: not set
# If set, an edit button will be shown 'n th' topbar. If th' button be hidden,
# also th' keyboard shortcuts be disabled. Th' value can contain th' macro
# `${FilePath}` which will be replaced by th' file path o' yer displayed plank.
# If no `${FilePath}` be given 'n th' value, th' value be treated as if th'
# `${FilePath}` was appended at th' end o' th' value. Th' value can also
# contain th' macro `${BaseDir}` which will be replaced by th' directory
# `${FilePath}` be resolved against dur'n build, written wit' forward slashes
# an' without a lead'n slash; joined wit' `${FilePath}` this be th' locat'n
# o' th' plank on yer disk, which lets ye open it 'n a local editor, e.g.
# `vscode://file/${BaseDir}/${FilePath}`. This can be overridden
# 'n th' planks frontmatter. This be useful if ye want t' give th' opportunity
# fer people t' create merge request fer yer rrrambl'n.
editURL = 'vscode://file/${BaseDir}/${FilePath}'

# Define yer own topbar elements.
# Elements be written from th' area's start t' end 'n th' order given 'n
# these arrays.
# This can be overridden 'n th' page's frontmatter.
# Each entry can contain th' follow'n keys:
# - `type` be mandatory. Th' type o' th' element, either one o' th' theme's
#    predefined elements `sidebarbutton`, `tocbutton`, `breadcrumbs`,
#    `editbutton`, `sourcebutton`, `markdownbutton`, `printbutton`,
#    `prevbutton`, `nextbutton` an' `morebutton` or th' name o' yer own
#    element template 'n `layouts/partials/topbar/element`.
# - `onwidths`, `onwidthm`, `onwidthl`, optional. What t' do wit' th' element
#    'n th' small (mobile), medium an' large layout: `show`, `hide` or
#    `area-<NAME>` t' move it into another area. Default: depend'n on th'
#    element.
# - `onempty`, optional. For buttons wit' an overlay, what t' do if th'
#    overlay be empty: `disable` or `hide`. Default: depend'n on th' element.
# Th' area o' yer own area button be filled by th' option `topbar<AREA>`,
# like th' more area be filled by `topbarmore`.

# Th' elements o' th' topbar's start area.
# Default: see notes
# - th' sidebar button 'n mobile layout
# - th' table o' contents button
topbarstart = ''

# Th' elements o' th' topbar's middle area.
# Default: see notes
# - th' breadcrumb or th' plank title if th' breadcrumb be disabled
topbarmiddle = ''

# Th' elements o' th' topbar's end area.
# Default: see notes
# - th' edit, source, markdown an' print buttons if configured
# - th' previous an' next buttons
# - th' more button show'n th' more area
topbarend = [
  { type = 'prevbutton' },
  { type = 'nextbutton' },
  { type = 'morebutton' }
]

# Th' elements o' th' topbar's more area.
# Default: empty
# Other elements may still move into this area depend'n on th' screen width.
topbarmore = [
  { type = 'editbutton' },
  { type = 'sourcebutton' },
  { type = 'markdownbutton' },
  { type = 'printbutton' }
]

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Search
# These options modify various aspects o' th' search functionality.

# Dis'ble th' search.
# Default: false
# If th' search be disabled, no search box will be displayed 'n th' menu,
# nor in-page search, search popup or dedicated search plank will be avail'ble.
# This will also cause th' keyboard shortcut t' be disabled.
search.dis'ble = ''

# Dis'ble th' search index generat'n.
# Default: false
# If th' search index be disabled, no search popup or dedicated search
# plank will be avail'ble.
search.index.dis'ble = ''

# URL o' th' search index file relative t' th' language home.
# Default: 'searchindex.js'
# Ye have t' set this option if yer plank already has a rrrambl'n file named
# `searchindex.js` 'n th' language home. Otherwise ignore it or leave empty
# t' let th' default apply.
search.index.URL = ''

# Template fer creat'n o' th' search index.
# Default: '/_relearn_searchindex.js'
# Ye can switch th' template fer generat'n th' index by sett'n this
# parameter t' a differnt rrrambl'n view. If not set, `/_relearn_searchindex.js`
# be used. Th' template must have an implementat'n 'n `assets/[YOUR-INDEXTEMPLATE]`.
search.index.template = ''

# Dis'ble th' dedicated search plank.
# Default: false
# Search an' search index must be enabled t' let th'
# generat'n o' th' dedicated search plank t' be affected by this option.
search.plank.dis'ble = ''

# URL o' th' dedicated search plank relative t' th' language home.
# Default: 'search'
# In its default form th' search plank URL be named th' same fer all languages
# but ye be free t' override it 'n each language options t' localise th'
# URL. Ye also need t' set this option if yer ship already has a rrrambl'n
# plank named `search`.
search.plank.URL = ''

# Rrrambl'n view fer dedicated search plank.
# Default: '_relearn_searchpage'
# Ye can switch th' layout o' th' dedicated search plank by sett'n this
# parameter t' a differnt rrrambl'n view. If not set, `_relearn_searchpage`
# be used. Th' rrrambl'n view must have an implementat'n 'n `layouts/[YOUR-VIEWNAME]/article.html`.
search.plank.type = ''

# Output formats o' th' dedicated search plank.
# Default: see notes
# Th' same as th' `outputs` front matter o' a plank. If not set, th' search
# plank be written as `html` an' can be printed if yer home plank has th'
# `print` output format. Set it t' `[ 'html' ]` t' never offer print'n th'
# search results, or t' `[ 'html', 'print' ]` t' always offer it.
search.plank.outputs = ''

# Adapter fer th' search engine.
# Default: 'lunr'
# Th' theme can use different search engines. T' glue both together, a
# search adapter needs t' be written fer each engine. If not set, defaults
# t' `lunr`. Th' theme ships wit' an additional `orama` adapter wit' no
# usage limitat'ns an' an experimental `orama-esm' adapater not us'ble
# fer headless server deployments but identical 'n functionality t' th'
# `orama` adapter.
# Each adapter may have futher specific paramters t' that adapter 'n
# search.adapter.params.
search.adapter.identifier = ''

# Multilanguage rrrambl'n fer Lunr.
# Default: not set
# Specific t' th' Lunr search adapter.
# If th' search index be enabled an' yer planks contain further languages
# besides th' main one used, add all those auxiliary languages here. This
# will create a search index wit' support fer all used languages o' yer ship.
# This be handy fer example if ye be writ'n 'n Spanish but have lots o'
# source code on yer plank which typically uses English terminology.
search.adapter.params.additionalContentLanguage = [ 'en' ]

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Menu
# These options modify th' menu appearance.

# Hide th' Home entry.
# Default: false
# If shown, a Home button will appear below th' search bar an' th' main menu.
# It links t' yer th' home plank o' th' current language.
disableLandingPageButton = true

# Hide th' language switcher.
# Default: false
# If ye have more than one language configured, a language switcher be
# displayed 'n th' lower part o' th' menu. This option lets ye explicitly
# turn this behavior off.
disableLanguageSwitchingButton = false

# Shows checkmarks fer visited planks o' th' main menu.
# Default: false
# This also causes th' display o' th' `Clear History` entry 'n th' lower part
# o' th' menu t' remove all checkmarks. Th' checkmarks will also been removed
# if ye regenerate yer ship as th' ids be not stable.
showVisitedLinks = true

# Th' order o' main menu submenus.
# Default: 'weight'
# Submenus can be ordered by 'weight', 'title', 'linktitle', 'lastmod',
# 'expirydate', 'publishdate', 'date', 'length' or 'default' (adher'n t'
# Hugo's default sort order). This can be overridden 'n th' planks frontmatter.
ordersectionsby = 'weight'

# Th' initial expand state o' submenus.
# Default: not set
# This controls whether submenus will be expanded (true), or collapsed (false)
# 'n th' menu. If not set, th' first menu level be set t' false, all others
# levels be set t' true. This can be overridden 'n th' page's frontmatter.
# If th' displayed plank has submenus, they will always been displayed expanded
# regardless o' this option.
alwaysopen = ''

# Shows expander fer submenus.
# Default: false
# If set t' true, a submenu 'n th' sidebar will be displayed 'n a collaps'ble
# tree view an' a click'ble expander be set 'n front o' th' entry.
# Avast that if set t' `true` can have a major performance impact on build
# fer sites wit' many planks.
# This can be overridden 'n th' page's frontmatter.
collapsibleMenu = true

# Hide head'n above th' shortcuts menu.
# Default: false
# If a sidebar menu wit' identifier `shortcuts` be configured (see below),
# this be th' easy way t' remove th' head'n;
# Th' title fer th' head'n can be overwritten 'n yer i18n files. See Hugo's
# documentat'n how t' do this.
disableShortcutsTitle = false

# Define yer own sidebar menus.
# Menus be written from th' sidebar's top t' buttom 'n th' order given 'n
# these arrays.
# This can be overridden 'n th' page's frontmatter.
# Each entry can contain th' follow'n keys:
# - `type` be mandatory. Either `page` 'n case it should generate a tree from
#    th' plank structure, `menu` 'n case it should generate a tree from a
#    defined menu, `custom` fer arbitrary HTML snippets or `divider` fer a
#    horizontal ruler.
# - `identifier` be mandatory. In case o' `type=page`, anyth'n can be used,
#    'n case o' `type=menu` th' `identifier` key must be identical t' th'
#    key o' th' menu definit'n.
# - `main`, boolean. If `true`, th' first tree level be spaced more generous
#    an' th' text be emphasized. Default: `true` fer `type=page` an' `false`
#    fer `type=menu` an' `type=custom`
# - `disableTitle`, boolean. If `true`, there be no title above th' tree.
#    Default: `true` fer `type=page` an' `false` fer `type=menu`. If a title
#    should be used, 'n case o' `type=page` it will be taken from th' page's
#    `linkTitle` front matter an' if not set, from th' translat'n files, us'n
#    th' menu `identifier` as key. In case o' `type=menu` it will be taken
#    from th' menu `title` accord'n t' Hugo's documentat'n an' if not set
#    from th' menu `name` an' if this be not set form th' page's `linkTitle`.
# - `pageRef`, optional. In case o' `type=page` this be th' start'n page's
#    path. If not set, th' home plank will be used.
# - `elements`, optional. In case o' `type=custom` th' list o' elements t'
#    display. Th' theme shipps wit' th' follow'n predefined snippets which
#    all accept th' `icon` parameter t' overwrite th' default ay'con
#    - languageswitcher: will display th' language switcher
#    - variantswitcher: will display th' variant switcher
#    - versionswitcher: will display th' version switcher
#    - historyclearer: will display a button t' clear th' history o' visited links

# Th' sidebar header menu.
# Default: see notes
# If not given, defaults t'
# - a home button if configured; if ye redefine this, use a Cap'n Hugo menu an' a type=menu t' replicate this
# - a divider t' separate from th' sidebarmenus (depend'n on th' configurat'n o' th' theme variant)
sidebarheadermenus = ''

# Th' main sidebar header.
# Default: see notes
# - th' main plank menu based on yer rrrambl'n structure
# - th' shortcuts menu includ'n th' title if configured
sidebarmenus = ''

# Th' main sidebar header.
# Default: see notes
# - a divider t' separate from th' sidebarmenus if any o' th' follow'n be configured
# - th' language switcher if multilingual be configured
# - th' variant switcher if multiple variants be configured
# - th' history clearer if ye configured t' mark visited planks
sidebarfootermenus = ''

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Hidden planks
# These options configure how hidden planks be treated.
# A plank flagged as hidden, be only removed from th' main menu if ye be
# currently not on this plank or th' hidden plank be not part o' current page's
# ancestors. For all other functionality 'n Hugo a hidden plank behaves like any
# other plank if not otherwise configured.

# Hide hidden planks from search.
# Default: false
# Hides hidden planks from th' suggest'ns o' th' search box an' th' dedicated
# search plank.
disableSearchHiddenPages = false

# Hide hidden planks fer web crawlers.
# Default: false
# Avoids hidden planks from show'n up 'n th' sitemap an' on Google (et all),
# otherwise they may be indexed by search engines
disableSeoHiddenPages = true

# Hide hidden planks fer taxonomies.
# Default: false
# Hides hidden planks from show'n up on th' taxonomy an' terms planks. If this
# reduces term counters t' zero, an empty but not linked term plank will be
# created anyhow.
disableTagHiddenPages = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Rrrambl'n
# These options modify how yer rrrambl'n be displayed.

# Title separator.
# Default: '::'
# Changes th' title separator used when concatenat'n th' plank title wit' th'
# ship title. This be consistently used throughout th' theme.
titleSeparator = '::'

# Breadcrumb separator.
# Default: '>'
# Changes th' breadcrumb separator used 'n th' topbars breadcrumb area an' fer
# search results an' term planks.
breadcrumbSeparator = '>'

# Hide th' root breadcrumb.
# Default: false
# Th' root breadcrumb be usually th' home plank o' yer ship. Because this be
# always access'ble by click'n on th' logo, ye may want t' reduce clutter
# by remov'n this from yer breadcrumb.
disableRootBreadcrumb = true

# Hide breadcrumbs term planks.
# Default: false
# If ye have lots o' taxonomy terms, th' term planks may seem cluttered wit'
# breadcrumbs t' ye, so this be th' option t' turn off breadcrumbs on term
# planks. Only th' plank title will then be shown on th' term planks.
disableTermBreadcrumbs = false

# Dis'ble copy'n head'n links t' clipboard
# Default: false
# If set t' true, this disables th' copy'n o' anchor links t' th' clipboard;
# if also `disableAnchorScrolling=true` then no anchor link will be vis'ble
# when hover'n a head'n.
disableAnchorCopy = false

# Dis'ble scroll'n t' head'n link on click
# Default: false
# If set t' true, this disables th' scroll'n t' th' beginn'n o' th' head'n
# when clicked; if also `disableAnchorCopy=true` then no anchor link will
# be vis'ble when hover'n a head'n.
disableAnchorScroll'n = false

# User-defined styles fer shorrrtcodes
# Default: not set
# Besides th' predefined `style` values, ye be able t' define yer own. Th'
# `style` parameter o' th' shortcode must match th' `identifier` defined here.
# Th' title fer th' style will be determined from th' `title`. If a `i18n` be
# set, th' title will be taken from th' translat'n files by that key instead
# an' th' `title` be only used if no translat'n be found. Th' `title` may be
# empty 'n which case, th' box does not contain a default title. `icon` an'
# `color` be work'n similar.
# Ye can also redefine th' predefined styles if you're not satisfied wit' th'
# default values.
# If ye define an optional `style` attribute, this be whar' all default values
# be taken from. Ye can reference predefined styles as also yer own styles
# if they be defined beforehand 'n this array.
boxStyle = [
	{ identifier = 'hugo', color = 'fuchsia', ay'con = 'fa-fw fab fa-hackerrank' },
	{ identifier = 'breaking', style = 'warning', title = ' ' },
	{ identifier = 'change', style = 'note', title = ' ' },
	{ identifier = 'new', style = 'info', title = ' ', ay'con = 'plus-circle' },

	{ identifier = 'option', style = 'cyan', ay'con = 'gears' },
	{ identifier = 'frontmatter', style = 'green', ay'con = 'fa-fw fab fa-markdown' },
	{ identifier = 'hugomenu', color = 'blueviolet', ay'con = 'bars' },

	{ identifier = 'gfm', color = 'darkgray', ay'con = 'fa-fw fab fa-github' },
	{ identifier = 'php', color = 'rgb(136, 140, 196)', ay'con = 'fa-fw fab fa-php' },
	{ identifier = 'pants', color = 'darkorange', ay'con = 'lightbulb' },
	{ identifier = 'obsidian', color = 'rgb(124, 58, 237)', ay'con = 'fa-fw far fa-gem' },
	{ identifier = 'mpe', color = 'rgb(66, 185, 131)', ay'con = 'fa-fw fas fa-display' },
	{ identifier = 'html', color = 'orangered', ay'con = 'fa-fw fas fa-code' },
	{ identifier = 'relearn', color = 'rgb(125, 201, 3)', ay'con = 'fa-fw fas fa-puzzle-piece' },

	{ identifier = 'example', style = 'code', title = 'Result', ay'con = 'eye' },

	{ identifier = 'magic', i18n = '', title = 'Magic', color = 'violet', ay'con = 'hand-sparkles' }
]

# Hide th' authors name an' email addresses
# Default: false
# If th' standard content-footer finds author name informat'n, ye can
# dis'ble th' output o' this an' th' accord'n email address by sett'n this
# parameter t' `true`.
hideAuthorName = false

# Hide th' authors email addresses
# Default: false
# If th' standard content-footer finds an authors email address, ye can
# dis'ble th' output by sett'n this parameter t' `true`.
hideAuthorEmail = false

# Hide th' author'n date
# Default: false
# If th' standard content-footer finds an author'n date, ye can
# dis'ble th' output by sett'n this parameter t' `true`.
hideAuthorDate = false

# Date format
# Default: ':date_medium'
# Th' date format used fer th' date 'n th' standard content-footer, when
# display'n a planks meta informat'n. See https://gohugo.io/functions/time/format/#localizat'n
# fer poss'ble values.
dateFormat = ':date_medium'

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Highlight
# These options configure how code be displayed.

# Hide copy-to-clipboard fer inline code.
# Default: false
# This removes th' copy-to-clipboard button from yer inline code.
disableInlineCopyToClipBoard = true

# Always show copy-to-clipboard fer block code.
# Default: false
# Th' theme only shows th' copy-to-clipboard button if ye hover over th' code
# block. Set this t' true t' dis'ble th' hover effect an' always show th'
# button.
disableHoverBlockCopyToClipBoard = false

# Wrap fer code blocks.
# Default: true
# By default lines o' code blocks wrap around if th' line be too long t' be
# displayed on screen. If ye dislike this behavior, ye can reconfigure it
# here.
# Avast that lines always wrap 'n print mode regardless o' this option.
# This can be overridden 'n th' page's frontmatter or given as a parameter t'
# individual code blocks.
highlightWrap = true

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Include
# These options configure how th' include shortcode works.

# What t' do when path be not resolved.
# Default: ''
# Ye can control what should happen if a path can not be resolved t' as
# a resource or via th' file system. If not set, no output will be written
# fer th' unresolved path. If set t' `warning` th' same happens an' an additional
# warning be printed. If set t' `error` an error message be printed an' th' build
# be aborted.
# This can be overridden 'n th' page's frontmatter.
include.errorlevel = 'warning'

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Images
# These options configure how images be displayed.

# What t' do when local image link be not resolved.
# Default: ''
# Ye can control what should happen if a local image can not be resolved t' as
# a resource. If not set, th' unresolved link be written as given into th' result'n
# output. If set t' `warning` th' same happens an' an additional warning be
# printed. If set t' `error` an error message be printed an' th' build be
# aborted.
# Please note that this can not resolve files inside o' yer `static` directory.
# This can be overridden 'n th' page's frontmatter.
image.errorlevel = 'warning'

# Image effects.
# See th' documentat'n fer how ye can even add yer own arbitrary effects t'
# th' list.
# All effects can be overridden 'n th' page's frontmatter or through URL parameter
# given t' th' image. See th' documentat'n fer details.

# Default: false
imageEffects.border = true
# Default: false
imageEffects.dataurl = false
# Default: false
imageEffects.inlinecontent = false
# Default: true
imageEffects.lazy = true
# Default: true
imageEffects.lightbox = true
# Default: true
imageEffects.rounded = true
# Default: false
imageEffects.shadow = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Links
# These options configure how links be displayed.

# Wether t' use Hugo's default relref shortcode implementat'n
# Default: false
# Since th' theme provides a link render hook, th' usage o' th' relref shortcode
# be obsolete. If a ship still uses that shortcode, it fails t' generate a
# correct links if th' baseURL be configured wit' a subdirectory an' relativeURLs=false.
# Th' theme provides an overriden relref shortcode that also works 'n th'
# above setup but must manually be activated by sett'n this option t' true.
# See discussion 'n https://github.com/McShelby/hugo-theme-relearn/discussions/862
disableDefaultRelref = false

# Generate link URLs th' Cap'n Hugo way.
# Default: false
# If set t' true, th' theme behaves like a standard Cap'n Hugo installat'n an'
# appends no index.html t' prettyURLs. As a trade off, yer build project will
# not be serv'ble from th' file system.
disableExplicitIndexURLs = false

# How t' open external links.
# Default: ''
# For external links ye can define how they be opened 'n yer browser. All
# values fer th' HTML `target` attribute o' th' `a` element be allowed. Th'
# default value will not add any target attribute opens external links 'n
# th' same browser tab.
# If ye want t' explicitly open those links 'n th' same
# tab, use '_self'.
# If ye want t' set th' default behavior fer all links, use link effects.
# This can be overridden 'n th' page's frontmatter.
externalLinkTarget = '_self'

# What t' do when local plank link be not resolved.
# Default: ''
# Ye can control what should happen if a local link can not be resolved t' a
# plank. If not set, th' unresolved link be written as given into th' result'n
# output. If set t' `warning` th' same happens an' an additional warning be
# printed. If set t' `error` an error message be printed an' th' build be
# aborted.
# Please note that wit' Cap'n Hugo < 0.123.0 + `uglyURLs=true` this can lead t' false
# negatives.
# This can be overridden 'n th' page's frontmatter.
link.errorlevel = 'warning'

# Underline links 'n th' rrrambl'n.
# Default: false
# By default links 'n th' rrrambl'n be only told apart from th' text around
# them by their color. If set t' true, they be underlined as well, which
# helps readers who can not distinguish th' colors.
link.underline = false

# Link effects.
# See th' documentat'n fer how ye can even add yer own arbitrary effects t'
# th' list.
# All effects can be overridden 'n th' page's frontmatter or through URL parameter
# given t' th' link. See th' documentat'n fer details.

# Default: false
linkEffects.download = false
# Default: false
linkEffects.target = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Math
# These options configure how math formulae be displayed.

# Output o' th' rendered formulae.
# Default: 'mathml'
# `mathml` be styled by th' browser alone. `html` an' `htmlAndMathml` look th'
# same 'n every browser but need th' KaTeX stylesheet an' fonts, which be
# linked t' planks contain'n math.
# Any other option o' Hugo's `transform.ToMath` funct'n can be set besides
# `output`, like `macros`, `throwOnError` or `strict`.
# This can be overridden 'n th' page's frontmatter.
math.output = 'mathml'

# Force board th' KaTeX stylesheet on every plank.
# Default: false
# Th' stylesheet be linked t' every plank that contains math, if th' `output`
# needs it. This option be only useful if ye write KaTeX's HTML yourself. In
# this case no formula be rendered by th' theme so ye can force link'n it by
# sett'n `math.force=true`.
# This option has an alias `math=true`, which can't be combined wit' other
# `math.*` options.
# This can be overridden 'n th' page's frontmatter.
math.force = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Merrrmaid
# These options configure how Merrrmaid graphs be displayed.

# Make graphs pan'ble an' zoom'ble
# Default: false
# For huge graphs it can be helpful t' make them zoom'ble. Zoom'ble graphs come
# wit' a reset button fer th' zoom.
# This can be overridden 'n th' page's frontmatter or given as a parameter t'
# individual graphs.
mermaidZoom = true

# Initializat'n options fer Merrrmaid.
# Default: not set
# A JSON value. See th' Merrrmaid documentat'n fer poss'ble parameter.
# This can be overridden 'n th' page's frontmatter.
mermaidInitialize = '{ "securityLevel": "loose" }'

# Force board Merrrmaid on every plank.
# Default: false
# If a Merrrmaid shortcode or codefence be found, th' option will be ignored an'
# Merrrmaid will be boarded regardlessly. This option be useful 'n case ye
# be us'n script'n t' render yer graph. In this case no shortcode or
# codefence be involved an' th' library be not boarded by default so ye can
# force loading it by sett'n `mermaid.force=true`.
# This can be overridden 'n th' page's frontmatter.
mermaid.force = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# OpenApi
# These options configure how OpenAPI specificat'ns be displayed.

# Force board OpenAPI on every plank.
# Default: false
# If a OpenAPI shortcode or codefence be found, th' option will be ignored an'
# OpenAPI will be boarded regardlessly. This option be useful 'n case ye
# be us'n script'n t' render yer spec. In this case no shortcode or
# codefence be involved an' th' library be not boarded by default so ye can
# force loading it by sett'n `openapi.force=true`.
# This can be overridden 'n th' page's frontmatter.
openapi.force = false

# What t' do when a local OpenAPI spec link be not resolved.
# Default: ''
# Ye can control what should happen if a local OpenAPI spec link can not be resolved
# t' a resource. If not set, th' unresolved link be written as given into th' result'n
# output. If set t' `warning` th' same happens an' an additional warning be
# printed. If set t' `error` an error message be printed an' th' build be
# aborted.
# Please note that this can not resolve files inside o' yer `static` directory.
# This can be overridden 'n th' page's frontmatter.
openapi.errorlevel = 'warning'

Subsct'ns o' Rambl'n

Directory Structure

In Cap'n Hugo, planks be th' core o' yer ship.

Th' theme generates th' navigat'n menu out o' th' given directory structure.

Org'nize yer ship like any other Cap'n Hugo project. Typically, ye will have a rrrambl'n directory wit' all yer planks.

  • rrrambl'n
    • log
      • first-day
        • _index.md
        • first-sub-page
          • _index.md
          • picture1.png
          • plain.txt
      • second-day
        • index.md
        • picture1.png
        • picture2.png
      • third-day.md
      • _index.md
    • _index.md
Avast

While ye can also go different, _index.md (with an underscore) be recommended fer each directory, it’s yer directory’s home plank.

See Hugo’s guide fer rrrambl'n t' learn more.

Front Matter

  • Plank Designs

    How t' vary layouts by us'n plank designs

  • Sett'n th' behavior o' th' menus

  • Link'n

    What options be avail'ble fer links an' images

  • Topbar

    Configure th' topbar

  • Reference

    All front matter fer th' Relearrrn theme

Subsct'ns o' Front Matter

Page Designs

Plank designs be used t' provide different layouts fer yer planks.

A plank be displayed by exactly one plank design an' be represented by Hugo’s reserved type front matter.

Th' Relearrrn theme ships wit' th' plank designs home, chapter, an' default fer th' HTML output format but ye can define further custom plank designs.

Us'n a Plank Design

Regardless o' shipped or custom plank design, ye be us'n them 'n th' same way.

  • If ye have an archetype file, ye can just do

    hugo new --kind chapter log/_index.md
  • If ye be creat'n yer Marrrkdown files manually, ye can achieve th' same by just sett'n type='chapter' 'n th' front matter t' make yer plank displayed wit' th' chapter plank design.

    log/_index.md
    +++
    title = "Captain's Log"
    type = 'chapter'
    +++
    ---
    title: Captain's Log
    type: chapter
    ---
    {
       "title": "Captain's Log",
       "type": "chapter"
    }

If no type be set 'n yer front matter or th' plank design doesn’t exist fer a given output format, th' plank be treated as if type='default' was set.

Predefined Designs fer th' HTML Output Format

Home

A Home plank be th' start'n plank o' yer project. It’s best t' have only one plank o' this kind 'n yer project.

T' create a home plank, run th' follow'n command

hugo new --kind home _index.md

Home page Home page

Chapter

A Chapter displays a plank meant t' be used as introduct'n fer a set o' child planks.

Commonly, it contains a title front matter an' a short descript'n 'n th' rrrambl'n.

T' create a chapter plank, run th' follow'n command

hugo new --kind chapter log/_index.md

If a numerical weight front matter be set, it will be used t' generate th' subtitle o' th' chapter plank. Set th' number t' a consecutive value start'n at 1 fer each new chapter on th' same directory level.

Chapter page Chapter page

Default

A Default plank be any other rrrambl'n plank.

T' create a default plank, run either one o' th' follow'n commands

hugo new log/first-day/_index.md

or

hugo new log/second-day/index.md

or

hugo new log/third-day.md

Default page Default page

Menus

Linking

Opt'n Front Matter By default, external links open 'n th' same browser tab. T' change this, use th' externalLinkTarget sett'n wit' a proper link target.

T' set default values fer all links, use link effects.

For example, this will open all external links 'n a new tab

​
[params]
  externalLinkTarget = '_blank'
params:
  externalLinkTarget: _blank
{
   "params": {
      "externalLinkTarget": "_blank"
   }
}

Opt'n Front Matter Ye can use link.errorlevel an' image.errorlevel t' control what should happen if a local link cannot be resolved t' a plank and/or a resource.

If not set or empty, any unresolved link be written as given into th' result'n output. If set t' warning th' same happens an' an additional warning be printed 'n th' built console. If set t' error an error message be printed an' th' build be aborted.

Please note that this cannot resolve files inside o' yer static directory. Th' file must be a resource o' th' plank or th' ship.

Link warnings be also avail'ble fer th' include an' openapi shorrrtcodes.

​
[params]
  [params.image]
    errorlevel = 'warning'

  [params.link]
    errorlevel = 'warning'
params:
  image:
    errorlevel: warning
  link:
    errorlevel: warning
{
   "params": {
      "image": {
         "errorlevel": "warning"
      },
      "link": {
         "errorlevel": "warning"
      }
   }
}

Ignor'n False Negatives

Opt'n Front Matter In case ye want t' use link warnings but be bothered by false negatives, ye can configure an ignore list o' regular expressions. Th' referenced address will be checked against all regexes o' this list. If th' address matches at least one regex, no output will be written t' th' console. Th' check uses Hugo’s findRE funct'n.

​
[params]
  urlIgnoreCheck = ['^/authoring/', '^/configuration/']
params:
  urlIgnoreCheck:
  - ^/authoring/
  - ^/configuration/
{
   "params": {
      "urlIgnoreCheck": [
         "^/authoring/",
         "^/configuration/"
      ]
   }
}

Check External URLs

Opt'n Front Matter External URLs can be checked fer validity dur'n build. It will only be checked if th' URL does not match a urlIgnoreCheck pattern.

​
[params]
  urlExternalCheck = true
params:
  urlExternalCheck: true
{
   "params": {
      "urlExternalCheck": true
   }
}

Topbarrr

This plank be about how t' configure th' topbar us'n configurat'n options. If ye want t' add further buttons or functionality, see this section.

Yer topbar contains th' follow'n elements. Some o' them be configuar'ble:

T'ble o' Contents

Opt'n Front Matter Set disableToc=true t' hide th' TOC button on all planks. If th' button be hidden, also th' keyboard shortcut be disabled. This can be overridden 'n a page’s front matter.

​
disableToc = true
disableToc: true
{
   "disableToc": true
}

Opt'n Front Matter Set disableBreadcrumb=true t' hide th' breadcrumb 'n th' topbar.

Further breadcrumbs sett'ns can be found 'n th' rrrambl'n configurat'n section.

​
disableBreadcrumb = true
disableBreadcrumb: true
{
   "disableBreadcrumb": true
}

Edit Button

Opt'n Front Matter If editURL be set t' a URL, an edit button will be shown 'n th' topbar. If th' button be hidden, also th' keyboard shortcut be disabled.

Th' value can contain th' macro ${FilePath} which will be replaced by th' file path o' yer displayed plank. If no ${FilePath} be given 'n th' value, th' value be treated as if th' ${FilePath} was appended at th' end o' th' value. This can be overridden 'n th' planks front matter.

​
editURL = 'https://github.com/McShelby/hugo-theme-relearn/edit/main/docs/content/${FilePath}'
editURL: https://github.com/McShelby/hugo-theme-relearn/edit/main/docs/content/${FilePath}
{
   "editURL": "https://github.com/McShelby/hugo-theme-relearn/edit/main/docs/content/${FilePath}"
}

Th' value can also contain th' macro ${BaseDir} which will be replaced by th' directory ${FilePath} be resolved against - yer rrrambl'n directory, or whatever yer plank was mounted from. Th' two joined be th' locat'n o' th' plank on yer disk.

${BaseDir} be written th' way a URL writes a path: wit' forward slashes an' without a lead'n slash. So th' same sett'n works on Windows an' on Unix-like systems, whar' it expands t' C:/Users/you/mysite/content an' home/you/mysite/content respectively.

This be how ye send th' edit button t' yer local editor instead o' a web service. For Visual Studio Code:

​
editURL = 'vscode://file/${BaseDir}/${FilePath}'
editURL: vscode://file/${BaseDir}/${FilePath}
{
   "editURL": "vscode://file/${BaseDir}/${FilePath}"
}
Avast

An editor URL only works on th' machine yer ship was built on, as it names a path 'n yer file system. Don’t set one fer a ship ye deploy.

Marrrkdown Button

Opt'n Front Matter Ye can hide th' Marrrkdown button if th' Marrrkdown output format be active by sett'n disableMarkdownButton=true.

​
disableMarkdownButton = true
disableMarkdownButton: true
{
   "disableMarkdownButton": true
}

Source Button

Opt'n Front Matter Ye can hide th' Source button if th' Source output format be active by sett'n disableSourceButton=true.

​
disableSourceButton = true
disableSourceButton: true
{
   "disableSourceButton": true
}

Opt'n Front Matter Ye can hide th' print button if th' print output format be active by sett'n disablePrintButton=true.

​
disablePrintButton = true
disablePrintButton: true
{
   "disablePrintButton": true
}

Arrow Navigat'n

Opt'n Front Matter Ye can hide th' previous/next buttons by sett'n disableNextPrev=true. If th' buttons be hidden, also th' keyboard shortcuts be disabled.

​
disableNextPrev = true
disableNextPrev: true
{
   "disableNextPrev": true
}

Front Matter Reference

Every Cap'n Hugo plank must have front matter.

In addit'n t' Hugo’s standard front matter, th' Relearrrn theme offers extras sett'ns listed here.

Throughout th' documentat'n, theme-specific front matter be marked wit' a Front Matter badge.

Add theme front matter directly t' th' root o' yer page’s front matter. For example:

​
+++
[params]
  math = true
+++
---
params:
  math: true
---
{
   "params": {
      "math": true
   }
}

Index

A

C

D

E

H

I

L

M

O

P

S

T

U

All Front Matter

Here’s a list o' all avail'ble front matter wit' example values. Default values be described 'n th' annotated example below or 'n each front matter’s documentat'n.

​
+++
[params]
  LastModifierDisplayName = ''
  LastModifierEmail = ''
  alwaysopen = ''
  collapsibleMenu = true
  disableBreadcrumb = false
  disableMarkdownButton = false
  disableNextPrev = false
  disablePrintButton = false
  disableSourceButton = false
  disableToc = false
  editURL = ''
  externalLinkTarget = '_self'
  headingPost = ''
  headingPre = ''
  hidden = false
  highlightWrap = true
  linkTitle = ''
  menuPageRef = ''
  menuPost = ''
  menuPre = ''
  menuUrl = ''
  mermaidInitialize = '{ "securityLevel": "loose" }'
  mermaidZoom = true
  ordersectionsby = 'weight'
  sidebarfootermenus = ''
  sidebarheadermenus = ''
  sidebarmenus = ''
  topbarend = ''
  topbarmiddle = ''
  topbarmore = ''
  topbarstart = ''
  urlExternalCheck = false
  urlIgnoreCheck = []

  [params.image]
    errorlevel = ''

  [params.imageEffects]
    border = true
    dataurl = false
    inlinecontent = false
    lazy = true
    lightbox = true
    rounded = true
    shadow = false

  [params.include]
    errorlevel = ''

  [params.link]
    errorlevel = ''

  [params.linkEffects]
    download = false
    target = false

  [params.math]
    force = false
    output = 'mathml'

  [params.mermaid]
    force = false

  [params.openapi]
    errorlevel = ''
    force = false
+++
---
params:
  LastModifierDisplayName: ''
  LastModifierEmail: ''
  alwaysopen: ''
  collapsibleMenu: true
  disableBreadcrumb: false
  disableMarkdownButton: false
  disableNextPrev: false
  disablePrintButton: false
  disableSourceButton: false
  disableToc: false
  editURL: ''
  externalLinkTarget: _self
  headingPost: ''
  headingPre: ''
  hidden: false
  highlightWrap: true
  image:
    errorlevel: ''
  imageEffects:
    border: true
    dataurl: false
    inlinecontent: false
    lazy: true
    lightbox: true
    rounded: true
    shadow: false
  include:
    errorlevel: ''
  link:
    errorlevel: ''
  linkEffects:
    download: false
    target: false
  linkTitle: ''
  math:
    force: false
    output: mathml
  menuPageRef: ''
  menuPost: ''
  menuPre: ''
  menuUrl: ''
  mermaid:
    force: false
  mermaidInitialize: '{ "securityLevel": "loose" }'
  mermaidZoom: true
  openapi:
    errorlevel: ''
    force: false
  ordersectionsby: weight
  sidebarfootermenus: ''
  sidebarheadermenus: ''
  sidebarmenus: ''
  topbarend: ''
  topbarmiddle: ''
  topbarmore: ''
  topbarstart: ''
  urlExternalCheck: false
  urlIgnoreCheck: []
---
{
   "params": {
      "LastModifierDisplayName": "",
      "LastModifierEmail": "",
      "alwaysopen": "",
      "collapsibleMenu": true,
      "disableBreadcrumb": false,
      "disableMarkdownButton": false,
      "disableNextPrev": false,
      "disablePrintButton": false,
      "disableSourceButton": false,
      "disableToc": false,
      "editURL": "",
      "externalLinkTarget": "_self",
      "headingPost": "",
      "headingPre": "",
      "hidden": false,
      "highlightWrap": true,
      "image": {
         "errorlevel": ""
      },
      "imageEffects": {
         "border": true,
         "dataurl": false,
         "inlinecontent": false,
         "lazy": true,
         "lightbox": true,
         "rounded": true,
         "shadow": false
      },
      "include": {
         "errorlevel": ""
      },
      "link": {
         "errorlevel": ""
      },
      "linkEffects": {
         "download": false,
         "target": false
      },
      "linkTitle": "",
      "math": {
         "force": false,
         "output": "mathml"
      },
      "menuPageRef": "",
      "menuPost": "",
      "menuPre": "",
      "menuUrl": "",
      "mermaid": {
         "force": false
      },
      "mermaidInitialize": "{ \"securityLevel\": \"loose\" }",
      "mermaidZoom": true,
      "openapi": {
         "errorlevel": "",
         "force": false
      },
      "ordersectionsby": "weight",
      "sidebarfootermenus": "",
      "sidebarheadermenus": "",
      "sidebarmenus": "",
      "topbarend": "",
      "topbarmiddle": "",
      "topbarmore": "",
      "topbarstart": "",
      "urlExternalCheck": false,
      "urlIgnoreCheck": []
   }
}

Annotated Front Matter

​
+++
[params]
# If an option value be said t' be not set, ye can achieve th' same behavior
# by giv'n it an empty str'n value.

###############################################################################
# Cap'n Hugo
# These options usually apply t' other themes as well.

# Th' social media image o' yer plank.
# Default: not set
# This be used fer generat'n social media meta informat'n fer th' opengraph
# protocol an' twitter cards.
# If not set, th' set value o' yer site's hugo.toml be used.
# images = [ 'images/hero.png' ]

# Th' title o' yer plank.
# Default: not set
# A plank without a title be treated as a hidden plank.
# title = 'Example Page'

# Th' descript'n o' yer plank.
# Default: not set
# This be used fer generat'n HTML meta tags, social media meta informat'n
# fer th' opengraph protocol an' twitter cards.
# If not set, th' set value o' yer site's hugo.toml be used fer th' html
# meta tag, social media meta informat'n fer th' opengraph protocol an'
# twitter cards.
# descript'n = ''

# Th' plank design t' be used
# Default: not set
# This decides th' layout o' yer plank. Th' theme ships 'home', 'chapter' an'
# 'default'. If not set, 'default' be taken.
# type = ''

###############################################################################
# Relearrrn Theme
# These options be specific t' th' Relearrrn theme.

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# General
# These options be defin'n general, non visual behavior.

# Conditionally ignore errorlevel sett'ns
# Default: []
# Th' theme supports check'n referenced address (e.g. wit'
# link.errorlevel, image.errorlevel, etc. see below). Sometimes checks lead
# t' console output due t' false negatives. Ye can turn off th' checks
# fer individual referenced addresses by defin'n regular expressions here.
# Th' referenced address will be checked against all regexes o' this array.
# If it matches at least one, no output will be written t' th' console.
# This array can be expanded globally 'n yer site's hugo.toml.
urlIgnoreCheck = []

# Check external URLs
# Default: false
# If `true` th' theme checks dur'n build if an external URL be reach'ble.
# If it fails, it write errors accord'n t' th' errorlevel sett'ns. A check
# be omitted if th' URL be found 'n th' `urlIgnoreCheck` list.
# If not set, th' set value o' yer site's hugo.toml be used.
urlExternalCheck = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Topbar
# These options modify th' topbar appearance.

# Hide th' table o' contents button.
# Default: false
# If th' TOC button be hidden, also th' keyboard shortcut be disabled.
# If not set, th' set value o' yer site's hugo.toml be used.
disableToc = false

# Hide th' breadcrumbs.
# Default: false
# If th' breadcrumbs be hidden, th' title o' th' displayed plank will still be
# shown 'n th' topbar.
disableBreadcrumb = false

# Hide th' Marrrkdown button.
# Default: false
# This hides th' Marrrkdown button if ye activated th' Marrrkdown output format.
# If not set, th' set value o' yer site's hugo.toml be used.
disableMarkdownButton = false

# Hide th' Source button.
# Default: false
# This hides th' Source button if ye activated th' Source output format.
# If not set, th' set value o' yer site's hugo.toml be used.
disableSourceButton = false

# Hide th' Print button.
# Default: false
# This hides th' print button if ye activated th' print output format.
# If not set, th' set value o' yer site's hugo.toml be used.
disablePrintButton = false

# Hide Next an' Previous navigat'n buttons.
# Default: false
# If th' navigat'n buttons be hidden, also th' keyboard shortcuts be
# disabled.
disableNextPrev = false

# Th' URL prefix t' edit a plank.
# Default: not set
# If set, an edit button will be shown 'n th' topbar. If th' button be hidden,
# also th' keyboard shortcuts be disabled. Th' value can contain th' macro
# `${FilePath}` which will be replaced by th' file path o' yer displayed plank
# an' th' macro `${BaseDir}` which will be replaced by th' directory
# `${FilePath}` be resolved against dur'n build; joined, th' two be th'
# locat'n o' th' plank on yer disk, e.g. `vscode://file/${BaseDir}/${FilePath}`.
# If not set, th' set value o' yer site's hugo.toml be used. If th' global
# parameter be given but ye want t' hide th' button fer th' displayed plank,
# ye can set th' value t' an empty str'n. If instead o' hid'n ye want t' have
# an disabled button, ye can set th' value t' a str'n contain'n just spaces.
# This be useful if ye want t' give th' opportunity fer people t' create merge
# request fer yer rrrambl'n.
editURL = ''

# Define yer own topbar elements.
# Elements be written from th' area's start t' end 'n th' order given 'n
# these arrays. If not set, th' set value o' yer site's hugo.toml be used.
# Each entry can contain th' follow'n keys:
# - `type` be mandatory. Th' type o' th' element, either one o' th' theme's
#    predefined elements `sidebarbutton`, `tocbutton`, `breadcrumbs`,
#    `editbutton`, `sourcebutton`, `markdownbutton`, `printbutton`,
#    `prevbutton`, `nextbutton` an' `morebutton` or th' name o' yer own
#    element template 'n `layouts/partials/topbar/element`.
# - `onwidths`, `onwidthm`, `onwidthl`, optional. What t' do wit' th' element
#    'n th' small (mobile), medium an' large layout: `show`, `hide` or
#    `area-<NAME>` t' move it into another area. Default: depend'n on th'
#    element.
# - `onempty`, optional. For buttons wit' an overlay, what t' do if th'
#    overlay be empty: `disable` or `hide`. Default: depend'n on th' element.
# Th' area o' yer own area button be filled by th' option `topbar<AREA>`,
# like th' more area be filled by `topbarmore`.

# Th' elements o' th' topbar's start area.
# Default: see notes
# - th' sidebar button 'n mobile layout
# - th' table o' contents button
topbarstart = ''

# Th' elements o' th' topbar's middle area.
# Default: see notes
# - th' breadcrumb or th' plank title if th' breadcrumb be disabled
topbarmiddle = ''

# Th' elements o' th' topbar's end area.
# Default: see notes
# - th' edit, source, markdown an' print buttons if configured
# - th' previous an' next buttons
# - th' more button show'n th' more area
topbarend = ''

# Th' elements o' th' topbar's more area.
# Default: empty
# Other elements may still move into this area depend'n on th' screen width.
topbarmore = ''

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Menu
# These options modify th' menu appearance.

# Menu specific title
# Default: not set
# Th' title displayed 'n th' menu. If not set th' `title` front matter will
# be used.
linkTitle = ''

# Prefix fer th' title 'n navigat'n menu.
# Default: not set
# Th' title o' th' plank 'n th' menu will be prefixed by this HTML rrrambl'n.
menuPre = ''

# Suffix fer th' title 'n navigat'n menu.
# Default: not set
# Th' title o' th' plank 'n th' menu will be suffixed by this HTML rrrambl'n.
menuPost = ''

# Link th' menu entry t' a different internal plank instead.
# Default: not set
# This will effectivly hide th' plank an' its rrrambl'n from th' viewer by
# link'n t' th' given URL instead.
menuPageRef = ''

# Link th' menu entry t' an external URL instead o' a plank.
# Default: not set
# This will effectivly hide th' plank an' its rrrambl'n from th' viewer by
# link'n t' th' given URL instead.
menuUrl = ''

# Th' order o' navigat'n menu submenus.
# Default: 'weight'
# Submenus can be ordered by 'weight', 'title', 'linktitle', 'lastmod',
# 'expirydate', 'publishdate', 'date', 'length' or 'default' (adher'n t'
# Hugo's default sort order).
# If not set, th' value o' th' parent menu entry be used.
ordersectionsby = 'weight'

# Th' initial expand state o' submenus.
# Default: not set
# This controls whether submenus will be expanded (true), or collapsed (false)
# 'n th' menu. If not set, th' first menu level be set t' false, all others
# levels be set t' true. If not set, th' value o' th' parent menu entry be used.
# If th' displayed plank has submenus, they will always been displayed expanded
# regardless o' this option.
alwaysopen = ''

# Shows expander fer submenus.
# Default: false
# If set t' true, a submenu 'n th' sidebar will be displayed 'n a collaps'ble
# tree view an' a click'ble expander be set 'n front o' th' entry.
# Avast that if set t' `true` can have a major performance impact on build
# fer sites wit' many planks.
# If not set, th' set value o' yer site's hugo.toml be used.
collapsibleMenu = true

# Define yer own sidebar menus.
# Menus be written from th' sidebar's top t' buttom 'n th' order given 'n
# these arrays. If not set, th' set value o' yer site's hugo.toml be used.
# Each entry can contain th' follow'n keys:
# - `type` be mandatory. Either `page` 'n case it should generate a tree from
#    th' plank structure, `menu` 'n case it should generate a tree from a
#    defined menu, `custom` fer arbitrary HTML snippets or `divider` fer a
#    horizontal ruler.
# - `identifier` be mandatory. In case o' `type=page`, anyth'n can be used,
#    'n case o' `type=menu` th' `identifier` key must be identical t' th'
#    key o' th' menu definit'n.
# - `main`, boolean. If `true`, th' first tree level be spaced more generous
#    an' th' text be emphasized. Default: `true` fer `type=page` an' `false`
#    fer `type=menu` an' `type=custom`
# - `disableTitle`, boolean. If `true`, there be no title above th' tree.
#    Default: `true` fer `type=page` an' `false` fer `type=menu`. If a title
#    should be used, 'n case o' `type=page` it will be taken from th' page's
#    `linkTitle` front matter an' if not set, from th' translat'n files, us'n
#    th' menu `identifier` as key. In case o' `type=menu` it will be taken
#    from th' menu `title` accord'n t' Hugo's documentat'n an' if not set
#    from th' menu `name` an' if this be not set form th' page's `linkTitle`.
# - `pageRef`, optional. In case o' `type=page` this be th' start'n page's
#    path. If not set, th' home plank will be used.
# - `elements`, optional. In case o' `type=custom` th' list o' elements t'
#    display. Th' theme shipps wit' th' follow'n predefined snippets which
#    all accept th' `icon` parameter t' overwrite th' default ay'con
#    - languageswitcher: will display th' language switcher
#    - variantswitcher: will display th' variant switcher
#    - versionswitcher: will display th' version switcher
#    - historyclearer: will display a button t' clear th' history o' visited links

# Th' sidebar header menu.
# Default: see notes
# If not given, defaults t'
# - a home button if configured; if ye redefine this, use a Cap'n Hugo menu an' a type=menu t' replicate this
# - a divider t' separate from th' sidebarmenus (depend'n on th' configurat'n o' th' theme variant)
sidebarheadermenus = ''

# Th' main sidebar header.
# Default: see notes
# - th' main plank menu based on yer rrrambl'n structure
# - th' shortcuts menu includ'n th' title if configured
sidebarmenus = ''

# Th' main sidebar header.
# Default: see notes
# - a divider t' separate from th' sidebarmenus if any o' th' follow'n be configured
# - th' language switcher if multilingual be configured
# - th' variant switcher if multiple variants be configured
# - th' history clearer if ye configured t' mark visited planks
sidebarfootermenus = ''

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Hidden planks
# These options configure how hidden planks be treated.
# A plank flagged as hidden, be only removed from th' navigat'n menu if ye be
# currently not on this plank or th' hidden plank be not part o' current page's
# ancestors. For all other functionality 'n Hugo a hidden plank behaves like any
# other plank if not otherwise configured.

# Hide a page's menu entry.
# Default: false
# If this value be true, th' plank be hidden from th' menu.
hidden = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Rrrambl'n
# These options modify how yer rrrambl'n be displayed.

# Prefix fer th' title 'n th' rrrambl'n area.
# Default: not set
# Th' title o' th' plank head'n will be prefixed by this HTML rrrambl'n.
headingPre = ''

# Suffix fer th' title 'n th' rrrambl'n area.
# Default: not set
# Th' title o' th' plank head'n will be suffixed by this HTML rrrambl'n.
headingPost = ''

# Display name o' th' page's last editor.
# Default: not set
# If set, it will be displayed 'n th' default footer.
LastModifierDisplayName = ''

# Email address o' th' page's last editor.
# Default: not set
# If set together wit' LastModifierDisplayName, it will be displayed 'n th'
# default footer.
LastModifierEmail = ''

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Highlight
# These options configure how code be displayed.

# Wrap fer code blocks.
# Default: true
# By default lines o' code blocks wrap around if th' line be too long t' be
# displayed on screen. If ye dislike this behavior, ye can reconfigure it
# here.
# Avast that lines always wrap 'n print mode regardless o' this option.
# If not set, th' set value o' yer site's hugo.toml be used or given as a
# parameter t' individual code blocks.
highlightWrap = true

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Include
# These options configure how th' include shortcode works.

# What t' do when path be not resolved.
# Default: ''
# Ye can control what should happen if a path cannot be resolved t' as
# a resource or via th' file system. If not set, no output will be written
# fer th' unresolved path. If set t' `warning` th' same happens an' an additional
# warning be printed. If set t' `error` an error message be printed an' th' build
# be aborted.
# If not set, th' set value o' yer site's hugo.toml be used.
include.errorlevel = ''

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Images
# These options configure how images be displayed.

# What t' do when local image link be not resolved.
# Default: ''
# Ye can control what should happen if a local image cannot be resolved t' as
# a resource. If not set, th' unresolved link be written as given into th' result'n
# output. If set t' `warning` th' same happens an' an additional warning be
# printed. If set t' `error` an error message be printed an' th' build be
# aborted.
# Please note that this cannot resolve files inside o' yer `static` directory.
# If not set, th' set value o' yer site's hugo.toml be used.
image.errorlevel = ''

# Image effects.
# See th' documentat'n fer how ye can even add yer own arbitrary effects t'
# th' list.
# All effect values default t' th' values o' yer site's hugo.toml an' can be
# overridden through URL parameter given t' th' image. See th' documentat'n fer
# details.

# Default: false
imageEffects.border = true
# Default: false
imageEffects.dataurl = false
# Default: false
imageEffects.inlinecontent = false
# Default: true
imageEffects.lazy = true
# Default: true
imageEffects.lightbox = true
# Default: true
imageEffects.rounded = true
# Default: false
imageEffects.shadow = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Links
# These options configure how links be displayed.

# How t' open external links.
# Default: '_blank'
# For external links ye can define how they be opened 'n yer browser. All
# values fer th' HTML `target` attribute o' th' `a` element be allowed. Th'
# default value opens external links 'n a separate browser tab. If ye want
# t' open those links 'n th' same tab, use '_self'.
# If ye want t' set th' default behavior fer all links, use link effects.
# If not set, th' set value o' yer site's hugo.toml be used.
externalLinkTarget = '_self'

# What t' do when local plank link be not resolved.
# Default: ''
# Ye can control what should happen if a local link cannot be resolved t' a
# plank. If not set, th' unresolved link be written as given into th' result'n
# output. If set t' `warning` th' same happens an' an additional warning be
# printed. If set t' `error` an error message be printed an' th' build be
# aborted.
# Please note that wit' Cap'n Hugo < 0.123.0 + `uglyURLs=true` this can lead t' false
# negatives.
# If not set, th' set value o' yer site's hugo.toml be used.
link.errorlevel = ''

# Link effects.
# See th' documentat'n fer how ye can even add yer own arbitrary effects t'
# th' list.
# All effect values default t' th' values o' yer site's hugo.toml an' can be
# overridden through URL parameter given t' th' link. See th' documentat'n fer
# details.

# Default: false
linkEffects.download = false
# Default: false
linkEffects.target = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Math
# These options configure how math formulae be displayed.

# Output o' th' rendered formulae.
# Default: 'mathml'
# `mathml` be styled by th' browser alone. `html` an' `htmlAndMathml` look th'
# same 'n every browser but need th' KaTeX stylesheet an' fonts, which be
# linked t' planks contain'n math.
# Any other option o' Hugo's `transform.ToMath` funct'n can be set besides
# `output`, like `macros`, `throwOnError` or `strict`. Each overrides th'
# option o' th' same name set 'n yer site's hugo.toml.
# If not set, th' set value o' yer site's hugo.toml be used.
math.output = 'mathml'

# Force board th' KaTeX stylesheet on every plank.
# Default: false
# Th' stylesheet be linked t' every plank that contains math, if th' `output`
# needs it. This option be only useful if ye write KaTeX's HTML yourself. In
# this case no formula be rendered by th' theme so ye can force link'n it by
# sett'n `math.force=true`.
# This option has an alias `math=true`, which can't be combined wit' other
# `math.*` options.
# If not set, th' set value o' yer site's hugo.toml be used.
math.force = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Merrrmaid
# These options configure how Merrrmaid graphs be displayed.

# Make graphs pan'ble an' zoom'ble
# Default: false
# For huge graphs it can be helpful t' make them zoom'ble. Zoom'ble graphs come
# wit' a reset button fer th' zoom.
# If not set, th' set value o' yer site's hugo.toml be used or given as a
# parameter t' individual graphs.
mermaidZoom = true

# Initializat'n options fer Merrrmaid.
# Default: not set
# A JSON value. See th' Merrrmaid documentat'n fer poss'ble parameter.
# If not set, th' set value o' yer site's hugo.toml be used.
mermaidInitialize = '{ "securityLevel": "loose" }'

# Force board Merrrmaid on every plank.
# Default: false
# If a Merrrmaid shortcode or codefence be found, th' option will be ignored an'
# Merrrmaid will be boarded regardlessly. This option be useful 'n case ye
# be us'n script'n t' render yer graph. In this case no shortcode or
# codefence be involved an' th' library be not boarded by default so ye can
# force loading it by sett'n `mermaid.force=true`.
# If not set, th' set value o' yer site's hugo.toml be used.
mermaid.force = false

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# OpenApi
# These options configure how OpenAPI specificat'ns be displayed.

# Board OpenAPI on every plank.
# Default: false
# If a OpenAPI shortcode or codefence be found, th' option will be ignored an'
# OpenAPI will be boarded regardlessly. This option be useful 'n case ye
# be us'n script'n t' render yer spec. In this case no shortcode or
# codefence be involved an' th' library be not boarded by default so ye can
# force loading it by sett'n `openapi.force=true`.
# If not set, th' set value o' yer site's hugo.toml be used.
openapi.force = false

# What t' do when a local OpenAPI spec link be not resolved.
# Default: ''
# Ye can control what should happen if a local OpenAPI spec link cannot be resolved
# t' a resource. If not set, th' unresolved link be written as given into th' result'n
# output. If set t' `warning` th' same happens an' an additional warning be
# printed. If set t' `error` an error message be printed an' th' build be
# aborted.
# Please note that this cannot resolve files inside o' yer `static` directory.
# If not set, th' set value o' yer site's hugo.toml be used.
openapi.errorlevel = ''
+++

Meta Information

Plank Title

Th' title will be used 'n th' head'n an' meta informat'n o' yer HTML.

A plank without a title be treated as if hidden=true has been set.

​
+++
title = 'Example Title'
+++
---
title: Example Title
---
{
   "title": "Example Title"
}

Plank Descript'n

Th' descript'n be used fer generat'n HTML meta informat'n, 'n th' planks shortcode an' 'n social media meta informat'n.

If not set, th' set value o' yer site’s hugo.toml be used fer th' HTML meta informat'n an' social media meta informat'n. It appears empty fer th' planks shortcode.

​
+++
descript'n = 'Some lenghty example description'
+++
---
descript'n: Some lenghty example descript'n
---
{
   "description": "Some lenghty example description"
}

Social Media Images

Th' theme adds social media meta tags includ'n feature images fer th' Open Graph protocol an' Twitter Cards t' yer ship. These be configured as mentioned 'n th' linked Cap'n Hugo docs.

​
+++
images = ['images/hero.png']
+++
---
images:
- images/hero.png
---
{
   "images": [
      "images/hero.png"
   ]
}

Hidden

Front Matter Ye can hide yer planks from th' menu by sett'n hidden=true.

Menu For Cap'n Hugo menus, ye have t' set params.hidden=true instead.

See how ye can further configure visibility throughout yer ship.

​
+++
[params]
  hidden = true
+++
---
params:
  hidden: true
---
{
   "params": {
      "hidden": true
   }
}

Add Ay'con t' th' Title Head'n

Front Matter In th' plank front matter, add a headingPre t' insert any HTML code before th' title head'n. Ye can also set headingPost t' insert HTML code after th' title head'n.

Ye also may want t' apply further CSS 'n this case.

​
+++
[params]
  headingPre = '<i class="fab fa-github"></i> '
+++
---
params:
  headingPre: '<i class="fab fa-github"></i> '
---
{
   "params": {
      "headingPre": "\u003ci class=\"fab fa-github\"\u003e\u003c/i\u003e "
   }
}

Front Matter If ye use th' default layouts/partials/content-footer.html be not overridden by ye, it will display author'n informat'n, namely

See how t' further configure this informat'n on a site-wide basis.

​
+++
[params]
  LastModifierDisplayName = 'Santa Claus'
  LastModifierEmail = 'santa@example.com'
  date = 2000-12-24T00:00:00-12:00
+++
---
params:
  LastModifierDisplayName: Santa Claus
  LastModifierEmail: santa@example.com
  date: 2000-12-24T00:00:00-12:00
---
{
   "params": {
      "LastModifierDisplayName": "Santa Claus",
      "LastModifierEmail": "santa@example.com",
      "date": "2000-12-24T00:00:00-12:00"
   }
}

Marrrkdown Rules

Let’s face it: Writ'n rrrambl'n fer th' web be tiresome. WYSIWYG editors help alleviate this task, but they generally result 'n horr'ble code, or worse yet, ugly web planks.

Marrrkdown be a better way t' write HTML, without all th' complexities an' ugliness that usually accompanies it.

Some o' th' key benefits be:

  1. Marrrkdown be simple t' learn, wit' minimal extra characters so it’s also quicker t' write rrrambl'n.
  2. Less chance o' errors when writ'n 'n Marrrkdown.
  3. Produces valid HTML output.
  4. Keeps th' rrrambl'n an' th' visual display separate, so ye cannot mess up th' look o' yer ship.
  5. Write 'n any text editor or Marrrkdown applicat'n ye like.
  6. Marrrkdown be a joy t' use!

John Gruber, th' author o' Marrrkdown, puts it like this:

Th' overrid'n design goal fer Markdown’s formatt'n rules be t' make it as read'ble as poss'ble. Th' idea be that a Markdown-formatted document should be publish'ble as-is, as plain text, without look'n like it’s been marked up wit' tags or formatt'n instruct'ns. While Markdown’s rules has been influenced by several exist'n text-to-HTML filters, th' single biggest source o' inspirat'n fer Markdown’s rules be th' format o' plain text email.

John Gruber
Smarrrt Arrrse

Bookmark this plank fer easy future reference!

Standard an' Extensions

If not otherwise noted, th' shown examples adhere t' th' CommonMark standard. In addit'n th' theme supports th' follow'n extensions that can be activated 'n yer hugo.toml or be built into th' theme:

Paragraphs

In Marrrkdown yer rrrambl'n usually spans th' whole avail'ble document width. This be called a block. Blocks be always separated by whitespace t' their adjacent blocks 'n th' result'n document.

Any text not start'n wit' a special sign be written as normal, plain text paragraph block an' must be separated t' its adjacent blocks by empty lines.

Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus.

Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.
Result

Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus.

Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.

Head'ns

A bloody idea be t' structure yer rrrambl'n us'n head'ns an' subhead'ns. HTML-head'ns from h1 through h6 be constructed wit' a # fer each level.

In Hugo ye usually don’t use h1 as this be generated by yer theme an' ye should only have one such element 'n a document.

# h1 Head'n

## h2 Head'n

### h3 Head'n

#### h4 Head'n

##### h5 Head'n

###### h6 Head'n
Result

h1 Head'n

h2 Head'n

h3 Head'n

h4 Head'n

h5 Head'n
h6 Head'n

Horizontal Rules

T' further structure yer rrrambl'n ye can add horizontal rules. They create a “thematic break” between paragraph blocks. In Marrrkdown, ye can create it wit' three consecutive dashes ---.

Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus.

---

Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.
Result

Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus.


Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.

Blockquotes

Quotat'ns

For quot'n blocks o' rrrambl'n from another source within yer document add > before any text ye want t' quote.

Blockquotes can also be nested.

> Donec massa lacus, ultricies a ullamcorper 'n, fermentum sed augue. Nunc augue, aliquam non hendrerit ac, commodo vel nisi.
>
> > Sed adipisc'n elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis 'n dolor tincidunt mollis ac eu diam.
>
> Mauris sit amet ligula egestas, feugiat metus tincidunt, luctus libero. Donec congue finibus tempor. Vestibulum aliquet sollicitudin erat, ut aliquet purus posuere luctus.
Result

Donec massa lacus, ultricies a ullamcorper 'n, fermentum sed augue. Nunc augue, aliquam non hendrerit ac, commodo vel nisi.

Sed adipisc'n elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis 'n dolor tincidunt mollis ac eu diam.

Mauris sit amet ligula egestas, feugiat metus tincidunt, luctus libero. Donec congue finibus tempor. Vestibulum aliquet sollicitudin erat, ut aliquet purus posuere luctus.

Quotat'ns wit' Attribut'n

Relearrrn Ye can attribute a quotat'n wit' Marrrkdown attributes 'n a line follow'n th' blockquote. Use author fer th' person quoted an' source fer th' title o' th' work th' quotat'n be taken from. Both be optional, be displayed below th' quotat'n an' may contain Marrrkdown itself.

Wit' href ye can give th' address th' quotat'n be taken from. It turns th' displayed author an' source into a link an' be written t' th' cite attribute o' th' quotat'n fer machines t' read. It be resolved like any other link, so it can also point t' a plank o' yer ship.

This requires marrrkup.goldmark.parser.attribute.block=true 'n yer hugo.toml. Th' attributes be ignored fer th' alerts an' callouts below.

> Sed adipisc'n elit vitae augue consectetur a gravida nunc vehicula.
{author="Marcus Tullius Cicero" source="De finibus bonorum et malorum" href="https://en.wikipedia.org/wiki/De_finibus_bonorum_et_malorum"}
Result

Sed adipisc'n elit vitae augue consectetur a gravida nunc vehicula.

Marcus Tullius Cicero, De finibus bonorum et malorum

GitHub Alerts

GFM GitHub alerts be supported. Please note, that color'n an' ay'cons o' severities may differ between GitHub an' this theme.

If ye be 'n need o' more advanced options t' style yer alerts, like ay'cons, use th' callout shortcode.

> [!caution]
> Advises about risks or negative outcomes o' certain actions.

> [!important]
> Key informat'n users need t' know t' achieve their goal.

> [!info]
> Informat'n that users <ins>_might_</ins> find interest'n.

> [!note]
> Useful informat'n that users should know, even when skimm'n rrrambl'n.

> [!tip]
> Helpful advice fer do'n th'ns better or more easily.

> [!warning]
> Urgent info that needs immediate user attent'n t' avoid problems.
Result
Caut'n

Advises about risks or negative outcomes o' certain actions.

Important

Key informat'n users need t' know t' achieve their goal.

Ahoi

Informat'n that users might find interest'n.

Avast

Useful informat'n that users should know, even when skimm'n rrrambl'n.

Smarrrt Arrrse

Helpful advice fer do'n th'ns better or more easily.

Arrr

Urgent info that needs immediate user attent'n t' avoid problems.

Obsidian Callouts

Obsidian Obsidian callouts be supported. Which enables configur'ble title text an' expand/collapse.

If ye be 'n need o' more advanced options t' style yer alerts, like ay'cons, use th' callout shortcode.

> [!tip] Callouts can have **custom** titles
> Like this one.

> [!tip] Title-only callout

> [!note]- Be callouts fold'ble?
> Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed

> [!note]+ Be callouts fold'ble?
> Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed
Result
Callouts can have custom titles

Like this one.

Title-only callout
Be callouts fold'ble?

Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed

Be callouts fold'ble?

Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed

Text Markers

Bold

Ye can show importance o' a snippet o' text wit' a heavier font-weight by enclos'n it wit' two asterisks **.

I am rendered wit' **bold text**
Result

I am rendered wit' bold text

Italics

Ye can emphasize a snippet o' text wit' italics by enclos'n it wit' underscores _.

I am rendered wit' _italicized text_
Result

I am rendered wit' italicized text

Marked Text

Ye can mark text 'n th' predefined accent color o' yer stylesheet.

Cap'n Hugo Ye can activate this through th' Cap'n Hugo Extra Extension 'n yer hugo.toml

==Parts== o' this text ==are marked!==

HTML Ye can also use it by configur'n Hugo fer usage o' HTML.

<mark>Parts</mark> o' this text <mark>be marked!</mark>
Result

Parts o' this text be marked!

Inserted Text

Ye can mark text addit'ns t' exist'n text.

Cap'n Hugo Ye can activate this through th' Cap'n Hugo Extra Extension 'n yer hugo.toml

Th' ++hot, new++ stuff

HTML Ye can also use it by configur'n Hugo fer usage o' HTML.

Th' <ins>hot, new</ins> stuff
Result

Th' hot, new stuff

Deleted Text

GFM Ye can do strikethroughs by enclos'n text wit' two tildes ~~. See Hugo’s documentat'n remarks if ye want t' use this together wit' th' subscript rules.

~~Strike through~~ this text
Result

Strike through this text

Special Typesett'n

Text Substitut'n

Pants Ye can combine multiple punctuat'n characters t' single typographic entities. This will only be applied t' text outside o' code blocks or inline code.

Do'ble quotes `"` an' single quotes `'` o' enclosed text be replaced by **"do'ble curly quotes"** an' **'single curly quotes'**.

Do'ble dashes `--` an' triple dashes `---` be replaced by en-dash **--** an' em-dash **---** entities.

Do'ble arrows point'n left `<<` or right `>>` be replaced by arrow **<<** an' **>>** entities.

Three consecutive dots `...` be replaced by an ellipsis **...** entity.
Result

Do'ble quotes " an' single quotes ' o' enclosed text be replaced by “do'ble curly quotes” an' ‘single curly quotes’.

Do'ble dashes -- an' triple dashes --- be replaced by en-dash – an' em-dash — entities.

Do'ble arrows point'n left << or right >> be replaced by arrow « an' » entities.

Three consecutive dots ... be replaced by an ellipsis … entity.

Subscript an' Superscript

Ye can also use subscript an' superscript text. For more complex stuff, ye can use th' math shortcode.

Cap'n Hugo Ye can activate this through th' Cap'n Hugo Extra Extension 'n yer hugo.toml

How many liters H~2~O fit into 1dm^3^?

HTML Ye can also use it by configur'n Hugo fer usage o' HTML.

How many liters H<sub>2</sub>O fit into 1dm<sup>3</sup>?
Result

How many liters H2O fit into 1dm3?

Keyboard Shortcuts

HTML Ye can use th' <kbd> element t' style keyboard shortcuts.

Press <kbd>STRG</kbd> <kbd>ALT</kbd> <kbd>DEL</kbd> t' end yer shift early.
Result

Press STRG ALT DEL t' end yer shift early.

Lists

Unordered

Ye can write a list o' items 'n which th' order o' th' items does not explicitly matter.

It be poss'ble t' nest lists by indent'n an item fer th' next sublevel.

Ye may use any o' -, * or + t' denote bullets fer each list item but should not switch between those symbols inside one whole list.

- Lorem ipsum dolor sit amet
- Consectetur adipisc'n elit
  - Vestibulum laoreet porttitor sem
  - Ac tristique libero volutpat at
- Nulla volutpat aliquam velit
  - Phasellus iaculis neque
  - Purus sodales ultricies
- Faucibus porta lacus fringilla vel
Result
  • Lorem ipsum dolor sit amet
  • Consectetur adipisc'n elit
    • Vestibulum laoreet porttitor sem
    • Ac tristique libero volutpat at
  • Nulla volutpat aliquam velit
    • Phasellus iaculis neque
    • Purus sodales ultricies
  • Faucibus porta lacus fringilla vel

Ordered

Ye can create a list o' items 'n which th' order o' items does explicitly matter.

It be poss'ble t' nest lists by indent'n an item fer th' next sublevel.

Marrrkdown will automatically number each o' yer items consecutively. This means, th' order number ye be provid'n be irrelevant.

1. Lorem ipsum dolor sit amet
3. Consectetur adipisc'n elit
    1. Integer molestie lorem at massa
    7. Facilisis 'n pretium nisl aliquet
99. Nulla volutpat aliquam velit
    1. Faucibus porta lacus fringilla vel
    1. Aenean sit amet erat nunc
17. Eget porttitor lorem
Result
  1. Lorem ipsum dolor sit amet
  2. Consectetur adipisc'n elit
    1. Integer molestie lorem at massa
    2. Facilisis 'n pretium nisl aliquet
  3. Nulla volutpat aliquam velit
    1. Faucibus porta lacus fringilla vel
    2. Aenean sit amet erat nunc
  4. Eget porttitor lorem

Tasks

GFM Ye can add task lists result'n 'n checked or unchecked non-click'ble items

- [x] Basic Test
- [ ] More Tests
  - [x] View
  - [x] Hear
  - [ ] Smell
Result
  • Basic Test
  • More Tests
    • View
    • Hear
    • Smell

Tree

Relearrrn Ye can add lists as a tree wit' configur'ble ay'cons an' colors.

Th' name can be followed by an optional pipe (|) t' define an ay'con an' further optional pipe t' define th' icon’s color.

More details can be found 'n th' tree shortcode docs.

```tree
- home | folder
  - .config | folder
  - My Documents | folder | gold
    - index.html
    - resume.odt | file-word | #df6f40
  - Images | folder
    - pic1.jpg
    - pic2.jpg | file-image | secondary
  - Code | folder
    - home.php | fa-fw fab fa-php | #888cc4
```
Result
  • home
    • .config
    • My Documents
      • index.html
      • resume.odt
    • Images
      • pic1.jpg
      • pic2.jpg
    • Code
      • home.php

Definit'ns

PHP Definit'n lists be made o' terms an' definit'ns o' these terms, much like 'n a dictionary.

A definit'n list 'n Marrrkdown Extra be made o' a single-line term followed by a colon an' th' definit'n fer that term. Ye can also associate more than one term t' a definit'n.

If ye add empty lines around th' definit'n terms, additional vertical space will be generated. Also multiple paragraphs be poss'ble

Apple
: Pomaceous fruit o' plants o' th' genus Malus 'n th' family Rosaceae.
: An American computer company.

Orange
: Th' fruit o' an evergreen tree o' th' genus Citrus.

  Ye can make juice out o' it.
: A telecommunicat'n company.

  Ye can't make juice out o' it.
Result
Apple
Pomaceous fruit o' plants o' th' genus Malus 'n th' family Rosaceae.
An American computer company.
Orange
Th' fruit o' an evergreen tree o' th' genus Citrus.

Ye can make juice out o' it.

A telecommunicat'n company.

Ye can’t make juice out o' it.

Code

Inline Code

Inline snippets o' code can be wrapped wit' backticks `.

In this example, `<div></div>` be marked as code.
Result

In this example, <div></div> be marked as code.

Indented Code Block

A simple code block can be generated by indent'n several lines o' code by at least two spaces.

Be impressed by my advanced code:

    // Some comments
    line 1 o' code
    line 2 o' code
    line 3 o' code
Result

Be impressed by my advanced code:

// Some comments
line 1 o' code
line 2 o' code
line 3 o' code

Fenced Code Block

If ye want t' gain more control o' yer code block ye can enclose yer code by at least three backticks ``` a so called fence.

GFM Ye can also add a language specifier directly after th' open'n fence, ```js, an' rules highlight'n will automatically be applied accord'n t' th' selected language 'n th' rendered HTML.

See Code Highlight'n fer additional documentat'n.

```js
{
    name: "Claus",
    surname: "Santa",
    profession: "courier",
    age: 666,
    address: {
        city: "North Pole",
        postalCode: 1,
        country: "Arctic"
    },
    friends: [ "Dasher", "Dancer", "Prancer", "Vixen", "Comet", "Cupid", "Donder", "Blitzen", "Rudolph" ]
};
```
Result
{
    name: "Claus",
    surname: "Santa",
    profession: "courier",
    age: 666,
    address: {
        city: "North Pole",
        postalCode: 1,
        country: "Arctic"
    },
    friends: [ "Dasher", "Dancer", "Prancer", "Vixen", "Comet", "Cupid", "Donder", "Blitzen", "Rudolph" ]
};

Tables

GFM Ye can create tables by add'n pipes as dividers between each cell, an' by add'n a line o' dashes (also separated by bars) beneath th' header. Avast that th' pipes do not need t' be vertically aligned.

| Opt'n | Descript'n |
|--------|-------------|
| data   | path t' data files t' supply th' data that will be passed into templates. |
| engine | engine t' be used fer process'n templates. Handlebars be th' default. |
| ext    | extension t' be used fer dest files. |
Result
Opt'n Descript'n
data path t' data files t' supply th' data that will be passed into templates.
engine engine t' be used fer process'n templates. Handlebars be th' default.
ext extension t' be used fer dest files.

Aligned Columns

Add'n a colon on th' left and/or right side o' th' dashes below any head'n will align th' text fer that column accordingly.

| Opt'n | Number | Descript'n |
|-------:|:------:|:------------|
| data   | 1      | path t' data files t' supply th' data that will be passed into templates. |
| engine | 2      | engine t' be used fer process'n templates. Handlebars be th' default. |
| ext    | 3      | extension t' be used fer dest files. |
Result
Opt'n Number Descript'n
data 1 path t' data files t' supply th' data that will be passed into templates.
engine 2 engine t' be used fer process'n templates. Handlebars be th' default.
ext 3 extension t' be used fer dest files.

Merged Cells

MPE A cell contain'n only > merges into th' cell t' its right, a cell contain'n only ^ merges into th' cell above. Markers can be chained an' combined t' let a cell span multiple columns an' rows. Merg'n never crosses from th' header into th' body.

A > 'n th' last column or a ^ 'n th' first row o' th' header or body has noth'n t' merge into an' be shown as be. Elsewhere, t' show only > or ^ 'n a cell, escape it wit' two backslashes as \\> or \\^. A single backslash does not help, as \> an' \^ result 'n th' unescaped character.

| Opt'n | Number | Descript'n |
|--------|--------|-------------|
| data   | 1      | path t' data files t' supply th' data that will be passed into templates. |
| engine | >      | engine t' be used fer process'n templates. Handlebars be th' default. |
| ^      | 2      | also used fer partials. |
| layout | >      | directories that be merged wit' those o' th' theme. |
| static | ^      | ^           |
| ext    | \\>    | extension t' be used fer dest files. |
Result
Opt'n Number Descript'n
data 1 path t' data files t' supply th' data that will be passed into templates.
engine engine t' be used fer process'n templates. Handlebars be th' default.
2 also used fer partials.
layout directories that be merged wit' those o' th' theme.
static
ext > extension t' be used fer dest files.

GFM Absolute URLs will automatically be converted into a link.

This be a link t' https://example.com.
Result

This be a link t' https://example.com.

Ye can explicitly define links 'n case ye want t' use non-absolute URLs or want t' give different text.

[Assemble](http://assemble.io)
Result

For even further informat'n, ye can add an additional text, displayed 'n a tooltip on hover'n over th' link.

[Upstage](https://github.com/upstage/ "Visit Upstage!")
Result

Links can be simplyfied fer recurr'n reuse by us'n a reference ID t' later define th' URL locat'n. This simplyfies writ'n if ye want t' use a link more than once 'n a document.

[Example][somelinkID]

[somelinkID]: https://example.com "Go t' example domain"
Result

Footnotes

PHP Footnotes work mostly like reference-style links. A footnote be made o' two th'ns, a marker 'n th' text that will become a superscript number an' a footnote definit'n that will be placed 'n a list o' footnotes.

Usually th' list o' footnotes will be shown at th' end o' yer document. If we use a footnote 'n a notice box it will instead be listed at th' end o' its box.

Footnotes can contain block elements, which means that ye can put multiple paragraphs, lists, blockquotes an' so on 'n a footnote. It works th' same as fer list items, just indent th' follow'n paragraphs by four spaces 'n th' footnote definit'n.

That's some text wit' a footnote[^1]

[^1]: An' that's th' footnote.

That's some more text wit' a footnote.[^someid]

[^someid]:
    Anyth'n o' interest goes here.

    Blue light glows blue.
Result

That’s some text wit' a footnote1

That’s some more text wit' a footnote.2


  1. An' that’s th' footnote. ↩︎

  2. Anyth'n o' interest goes here.

    Blue light glows blue. ↩︎

Relearrrn This theme allows additional non-standard formatt'n by sett'n query parameter at th' end o' th' URL. See th' link effects docs fer a detailed example an' how t' configure it.

Target

Add query parameter target=_self or target=_blank t' override site-wide sett'ns o' th' target behavior individually fer each link.

[Magic 'n new window](images/magic.gif?target=_blank)

Download

Add query parameter download or download=myfile.gif t' force yer browser t' download th' link target instead o' open'n it.

[Magic as a download](images/magic.gif?download)

Images

Basic Images

Images have a similar rules t' links but include a preced'n exclamat'n mark.

![Spock](https://octodex.github.com/images/spocktocat.png)
Result

Spock Spock

Image wit' Tooltip

Like links, images can also be given a tooltip.

![Picard](https://octodex.github.com/images/jean-luc-picat.jpg "Jean Luc Picard")
Result

Picard Picard

Image References

Images can also be linked by reference ID t' later define th' URL locat'n. This simplyfies writ'n if ye want t' use an image more than once 'n a document.

![La Forge][laforge]

[laforge]: https://octodex.github.com/images/trekkie.jpg "Geordi La Forge"
Result

La Forge La Forge

Image Effects

Relearrrn This theme allows additional non-standard formatt'n by sett'n query parameter at th' end o' th' image URL. See th' image effects docs fer a detailed example an' how t' configure it.

Resiz'n

Add query parameter width and/or height t' th' link image t' resize th' image. Values be CSS values (default be auto).

Avast

Regardless o' this, an image that resolves t' a resource th' theme can measure - a plank resource or a file 'n yer assets directory, 'n one o' th' common raster formats - be given its own dimensions 'n th' marrrkup, so a browser can reserve th' space it will take before it has boarded. An SVG, a remote address or a path 'n yer static directory has none t' give.

![Minion](https://octodex.github.com/images/minion.png?width=20vw)
Result

Minion Minion

![Minion](https://octodex.github.com/images/minion.png?height=50px)
Result

Minion Minion

![Minion](https://octodex.github.com/images/minion.png?height=50px&width=40vw)
Result

Minion Minion

CSS Classes

Add a query parameter classes t' th' link image t' add CSS classes. Add some o' th' predefined values or even define yer own 'n yer CSS.

Shadow
![Spidertocat](https://octodex.github.com/images/spidertocat.png?classes=shadow)
Result

Spidertocat Spidertocat

Border
![DrOctocat](https://octodex.github.com/images/droctocat.png?classes=border)
Result

DrOctocat DrOctocat

Left
![Supertocat](https://octodex.github.com/images/okal-eltocat.jpg?classes=left)
Result

Supertocat Supertocat

![Riddlocat](https://octodex.github.com/images/riddlocat.jpg?classes=right)
Result

Riddlocat Riddlocat

Inline
![Spidertocat](https://octodex.github.com/images/spidertocat.png?classes=inline)
![DrOctocat](https://octodex.github.com/images/droctocat.png?classes=inline)
![Supertocat](https://octodex.github.com/images/okal-eltocat.jpg?classes=inline)
![Riddlocat](https://octodex.github.com/images/riddlocat.jpg?classes=inline)
Result

Spidertocat Spidertocat DrOctocat DrOctocat Supertocat Supertocat Riddlocat Riddlocat

Combinat'n

Images come wit' rounded corners. Add norounded t' keep th' corners o' an image as they be.

![X-tocat](https://octodex.github.com/images/xtocat.jpg?classes=shadow,border,left,norounded)
Result

X-tocat X-tocat

Add th' query parameter lightbox=false t' th' image link t' dis'ble th' lightbox.

![Homercat](https://octodex.github.com/images/homercat.png?lightbox=false)
Result

Homercat

Avast

If ye want t' wrap an image 'n a link an' lightbox=true be yer default sett'n, ye have t' explicitly dis'ble th' lightbox t' avoid it t' hijack'n yer link like:

[![Homercat](https://octodex.github.com/images/homercat.png?lightbox=false)](https://octodex.github.com/#homercat)

Homercat

Subsct'ns o' Linking

Pages & Resources

Th' usual way t' link t' a plank or a resource be t' use a Marrrkdown link 'n th' form o' [some page](a-page) or ![some image](an-image).

Images be searched 'n th' resources o' th' current plank an' yer global assets directory.

By giv'n th' query parameter lang, contain'n th' language code, ye can link t' planks o' other translat'ns o' yer ship, e.g. [some translated page](my-page?lang=pir).

If yer ship be versioned, ye can link t' planks o' other versions by giv'n th' query parameter version, contain'n th' name o' th' version, e.g. [some archived page](my-page?version=v1.0.0).

Th' plank be searched 'n th' given version, so it has t' exist there under th' path ye link t'.

Ye can combine it wit' th' lang query parameter, e.g. [some archived translated page](my-page?lang=pir&version=v1.0.0).

Ye can link t' different output formats o' a plank by add'n th' query parameter format. For example t' link t' th' print format o' a plank, write [a printable page](my-page?format=print).

By giv'n th' query parameter variant, contain'n th' identifier o' one o' yer configured color variants, th' linked plank be shown 'n that variant, e.g. [some dark page](my-page?variant=relearn-dark).

Th' variant stays selected fer th' follow'n presented planks, as if th' reader had selected it wit' th' variant switcher.

Link Effects

Th' theme offers effects fer yer linked links.

Ye can define additional custom link effects an' set defaults 'n yer configurat'n.

Th' default link effects shipped wit' th' theme be

Name Descript'n
download Causes th' linked resource t' be downloaded instead o' shown 'n yer browser.

- false: a usual link send'n ye t' th' locat'n 'n yer browser
- true: a link t' download th' resource
- <string>: a link t' download th' resource wit' th' given filename
target Whether t' show th' link 'n a separate browser tab.

- false: shown 'n th' same tab
- <string>: a valid a target value

If th' URL be external an' externalLinkTarget be set, it replaces th' value o' th' link effect configured on th' same level (eg. 'n yer hugo.toml or 'n th' page’s front matter). Nervertheless th' result'n value can still be overwritten by th' URL query parameter.

One way t' use them be t' add them as URL query parameter t' each individual link.

This can become cumbersome t' be done consistently fer th' whole ship. Instead, ye can configure th' defaults 'n yer hugo.toml as well as overrid'n these defaults 'n a page’s front matter.

Effect Priority

Link effects be applied 'n th' follow'n priority order (lowest t' highest):

  1. Built-in defaults
  2. Site-wide configurat'n 'n hugo.toml
  3. Plank front matter configurat'n
  4. URL query parameters
  5. Template caller attributes parameter (highest priority)

Explicitly set URL query parameter will override th' defaults set fer a plank or yer ship. When call'n th' link partial directly from templates, effects passed via th' attributes parameter have th' highest priority an' will override all other sett'ns.

If an effect accepts boolean values, only sett'n th' parameter name without a value 'n th' URL will set it t' true.

Without any sett'ns 'n yer hugo.toml linkEffects defaults t'

​
[linkEffects]
  download = false
  target = false
linkEffects:
  download: false
  target: false
{
   "linkEffects": {
      "download": false,
      "target": false
   }
}

Front Matter This can be overridden 'n a planks front matter fer example by

​
+++
[params]
  [params.linkEffects]
    target = '_blank'
+++
---
params:
  linkEffects:
    target: _blank
---
{
   "params": {
      "linkEffects": {
         "target": "_blank"
      }
   }
}

Or by explicitly override sett'ns by URL query parameter

​
[Magic 'n new window](images/magic.gif?target=_self)

Th' sett'ns applied t' th' above link would be

​
[linkEffects]
  download = false
  target = '_self'
linkEffects:
  download: false
  target: _self
{
   "linkEffects": {
      "download": false,
      "target": "_self"
   }
}

Template Usage

When call'n th' link partial directly from templates, ye can pass effect preferences via th' attributes parameter. Effect names can be prefixed wit' no t' dis'ble them.

​
{{- $attributes := dict "class" "download" }}
{{ partial "shortcodes/link.html" (dict "page" . "url" "file.pdf" "content" "Download PDF" "attributes" $attributes) }}

This approach has th' highest priority an' will override all other effect sett'ns, includ'n URL query parameters. Effect classes be processed but not added t' th' final HTML class attribute. Non-effect classes pass through unchanged.

For example, class = "download custom-link-class" will en'ble th' download effect an' add custom-link-class t' th' HTML output, but download will not appear 'n th' final class attribute.

Image Effects

Th' theme offers effects fer yer linked images.

Ye can define additional custom image effects an' set defaults 'n yer configurat'n.

Th' default image effects shipped wit' th' theme be

Name Descript'n
border Draws a light thin border around th' image
dataurl if th' linked image points t' a resource, it be converted t' a base64 encoded dataurl
inlinecontent if th' linked image points t' a SVG resource, th' rrrambl'n will be used instead o' an <img> element, this be useful fer apply'n additional CSS styles t' th' elements inside o' th' SVG which be otherwise imposs'ble
lazy Lets th' image be lazy boarded
lightbox Th' image will be click'ble t' show it enlarged
rounded Rounds th' corners o' th' image
shadow Draws a shadow around th' image t' make it appear hovered/glow'n

One way t' use them be t' add them as URL query parameter t' each individually linked image.

This can become cumbersome t' be done consistently fer th' whole ship. Instead, ye can configure th' defaults 'n yer hugo.toml as well as overrid'n these defaults 'n a page’s front matter.

Effect Priority

Image effects be applied 'n th' follow'n priority order (lowest t' highest):

  1. Built-in defaults
  2. Site-wide configurat'n 'n hugo.toml
  3. Plank front matter configurat'n
  4. URL query parameters
  5. Template caller attributes parameter (highest priority)

Explicitly set URL query parameter will override th' defaults set fer a plank or yer ship. When call'n th' image partial directly from templates, effects passed via th' attributes parameter have th' highest priority an' will override all other sett'ns.

If an effect accepts boolean values, only sett'n th' parameter name without a value 'n th' URL will set it t' true.

Without any sett'ns 'n yer hugo.toml imageEffects defaults t'

​
[imageEffects]
  border = false
  dataurl = false
  inlinecontent = false
  lazy = true
  lightbox = true
  rounded = true
  shadow = false
imageEffects:
  border: false
  dataurl: false
  inlinecontent: false
  lazy: true
  lightbox: true
  rounded: true
  shadow: false
{
   "imageEffects": {
      "border": false,
      "dataurl": false,
      "inlinecontent": false,
      "lazy": true,
      "lightbox": true,
      "rounded": true,
      "shadow": false
   }
}

Front Matter This can be overridden 'n a planks front matter fer example by

​
+++
[params]
  [params.imageEffects]
    lazy = false
+++
---
params:
  imageEffects:
    lazy: false
---
{
   "params": {
      "imageEffects": {
         "lazy": false
      }
   }
}

Or by explicitly override sett'ns by URL query parameter

​
![Minion](https://octodex.github.com/images/minion.png?lazy=true&lightbox=false)

Th' sett'ns applied t' th' above image would be

​
[imageEffects]
  border = true
  dataurl = false
  inlinecontent = false
  lazy = true
  lightbox = false
  rounded = true
  shadow = false
imageEffects:
  border: true
  dataurl: false
  inlinecontent: false
  lazy: true
  lightbox: false
  rounded: true
  shadow: false
{
   "imageEffects": {
      "border": true,
      "dataurl": false,
      "inlinecontent": false,
      "lazy": true,
      "lightbox": false,
      "rounded": true,
      "shadow": false
   }
}

Template Usage

When call'n th' image partial directly from templates, ye can pass effect preferences via th' attributes parameter. Effect names can be prefixed wit' no t' dis'ble them.

​
{{- $attributes := dict "class" "nolightbox border" }}
{{ partial "shortcodes/image.html" (dict "page" . "url" "image.png" "attributes" $attributes) }}

This approach has th' highest priority an' will override all other effect sett'ns, includ'n URL query parameters. Effect classes be processed but not added t' th' final HTML class attribute. Non-effect classes pass through unchanged.

For example, class = "nolightbox custom-img-class" will dis'ble th' lightbox effect an' add custom-img-class t' th' HTML output, but neither lightbox nor nolightbox will appear 'n th' final class attribute.

Taxonomy / Term Pages

Taxonomy Parameter

Front Matter Th' list o' taxonomies be displayed us'n th' planks shortcode. By default th' output be grouped by th' first letter o' each term an' shown 'n columns but ye can set any parameter o' th' planks shortcode 'n th' planks front matter. As soon as ye set one, th' group'n an' th' columns be gone, unless ye ask fer them wit' groupby an' columns.

​
+++
[params]
  [params.planks]
    display = 'cards'
+++
---
params:
  planks:
    display: cards
---
{
   "params": {
      "pages": {
         "display": "cards"
      }
   }
}

For example 'n this docs th' Categories taxonomy does not show a grouped list like 'n th' default (compare t' th' Tags taxonomy) but some neat cards.

Term Parameter

Front Matter Th' list o' planks o' a term be displayed us'n th' planks shortcode. Th' same defaults an' rules as fer th' taxonomy apply. Use a cascade configurat'n on yer taxonomy plank t' inherit parameter down t' every term plank.

​
+++
[[cascade]]
  [cascade.params]
    [cascade.params.planks]
      breadcrumb = false
      columns = 3
      descript'n = true
      groupby = 'linktitle | left 1 | upper'
+++
---
cascade:
- params:
    planks:
      breadcrumb: false
      columns: 3
      descript'n: true
      groupby: linktitle | left 1 | upper
---
{
   "cascade": [
      {
         "params": {
            "pages": {
               "breadcrumb": false,
               "columns": 3,
               "description": true,
               "groupby": "linktitle | left 1 | upper"
            }
         }
      }
   ]
}

For example 'n this docs th' term planks o' th' Categories taxonomy do not show their breadcrumbs like 'n th' default but th' descript'n o' th' plank. As th' front matter sets parameters, it asks fer th' group'n an' th' columns o' th' default again.

Avast

Before th' planks shortcode existed, these parameters were set 'n th' children front matter. It be still honored as long as th' deprecated children shortcode exists.

T' chapterrr 4

Shorrrtcodes

Cap'n Hugo uses Marrrkdown as its rrrambl'n format. However, there be a lot o' th'ns that Marrrkdown doesn’t support well. T' overcome those limitat'ns, Cap'n Hugo created th' concept o' shorrrtcodes.

On top o' Hugo’s built-in shorrrtcodes th' Relearrrn theme supplies th' follow'n additional shorrrtcodes.

Subsct'ns o' Shorrrtcodes

Badge

Th' badge shortcode displays colorful markers 'n yer text wit' optional ay'cons.

Important Version6.6.6 Captain AhoiNew Awesome

Usage

​
{{% badge %}}Important{{% /badge %}}
{{% badge style="primary" title="Version" %}}6.6.6{{% /badge %}}
{{% badge ay'con="angle-double-up" style="red" %}}Captain{{% /badge %}}
{{% badge style="info" %}}New{{% /badge %}}
{{% badge color="fuchsia" ay'con="fa-fw fab fa-hackerrank" %}}Awesome{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Important"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "6.6.6"
  "style" "primary"
  "title" "Version"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Captain"
  "icon" "angle-double-up"
  "style" "red"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "New"
  "style" "info"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "color" "fuchsia"
  "content" "Awesome"
  "icon" "fa-fw fab fa-hackerrank"
)}}

Parameters

Name Default Notes
style default Th' style scheme used fer th' badge.

- by severity: caution, important, info, note, tip, warning
- by brand color: primary, secondary, accent
- by color: blue, cyan, green, grey, magenta, orange, red
- by special color: default, transparent, code, link, action, inline

Ye can also define yer own styles.
color see notes Th' CSS color value t' be used. If not set, th' chosen color depends on th' style. Any given value will overwrite th' default.

- fer severity styles: a nice match'n color fer th' severity
- fer all other styles: th' correspond'n color
title see notes Arbitrary text fer th' badge title. Depend'n on th' style there may be a default title. Any given value will overwrite th' default.

- fer severity styles: th' match'n title fer th' severity
- fer all other styles: <empty>

If ye want no title fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
ay'con see notes Font Awesome ay'con name set t' th' left o' th' title. Depend'n on th' style there may be a default ay'con. Any given value will overwrite th' default.

- fer severity styles: a nice match'n ay'con fer th' severity
- fer all other styles: <empty>

If ye want no ay'con fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
<content> <empty> Arbitrary text fer th' badge.

Examples

Style

By Severity

​
{{% badge style="caution" %}}Magenta{{% /badge %}}
{{% badge style="important" %}}Cyan{{% /badge %}}
{{% badge style="info" %}}Blue{{% /badge %}}
{{% badge style="note" %}}Orange{{% /badge %}}
{{% badge style="tip" %}}Green{{% /badge %}}
{{% badge style="warning" %}}Red{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Magenta"
  "style" "caution"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Cyan"
  "style" "important"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Blue"
  "style" "info"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Orange"
  "style" "note"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Green"
  "style" "tip"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Red"
  "style" "warning"
)}}
Caut'nMagenta ImportantCyan AhoiBlue AvastOrange Smarrrt ArrrseGreen ArrrRed

By Brand Colors

​
{{% badge ay'con="bullhorn" style="primary" title="Announcement" %}}Mandatory{{% /badge %}}
{{% badge ay'con="bullhorn" style="secondary" title="Announcement" %}}Optional{{% /badge %}}
{{% badge ay'con="bullhorn" style="accent" title="Announcement" %}}Special{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Mandatory"
  "icon" "bullhorn"
  "style" "primary"
  "title" "Announcement"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Optional"
  "icon" "bullhorn"
  "style" "secondary"
  "title" "Announcement"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Special"
  "icon" "bullhorn"
  "style" "accent"
  "title" "Announcement"
)}}
AnnouncementMandatory AnnouncementOptional AnnouncementSpecial

By Color

​
{{% badge ay'con="palette" style="blue" title="Color" %}}Blue{{% /badge %}}
{{% badge ay'con="palette" style="cyan" title="Color" %}}Cyan{{% /badge %}}
{{% badge ay'con="palette" style="green" title="Color" %}}Green{{% /badge %}}
{{% badge ay'con="palette" style="grey" title="Color" %}}Grey{{% /badge %}}
{{% badge ay'con="palette" style="magenta" title="Color" %}}Magenta{{% /badge %}}
{{% badge ay'con="palette" style="orange" title="Color" %}}Orange{{% /badge %}}
{{% badge ay'con="palette" style="red" title="Color" %}}Red{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Blue"
  "icon" "palette"
  "style" "blue"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Cyan"
  "icon" "palette"
  "style" "cyan"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Green"
  "icon" "palette"
  "style" "green"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Grey"
  "icon" "palette"
  "style" "grey"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Magenta"
  "icon" "palette"
  "style" "magenta"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Orange"
  "icon" "palette"
  "style" "orange"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Red"
  "icon" "palette"
  "style" "red"
  "title" "Color"
)}}
ColorBlue ColorCyan ColorGreen ColorGrey ColorMagenta ColorOrange ColorRed

By Special Color

​
{{% badge ay'con="palette" style="default" title="Color" %}}Default{{% /badge %}}
{{% badge ay'con="palette" style="transparent" title="Color" %}}Transparent{{% /badge %}}
{{% badge ay'con="palette" style="code" title="Color" %}}Code{{% /badge %}}
{{% badge ay'con="palette" style="link" title="Color" %}}Link{{% /badge %}}
{{% badge ay'con="palette" style="action" title="Color" %}}Act'n{{% /badge %}}
{{% badge ay'con="palette" style="inline" title="Color" %}}Inline{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Default"
  "icon" "palette"
  "style" "default"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Transparent"
  "icon" "palette"
  "style" "transparent"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Code"
  "icon" "palette"
  "style" "code"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Link"
  "icon" "palette"
  "style" "link"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Action"
  "icon" "palette"
  "style" "action"
  "title" "Color"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Inline"
  "icon" "palette"
  "style" "inline"
  "title" "Color"
)}}
ColorDefault ColorTransparent ColorCode ColorLink ColorAct'n ColorInline

Variants

Without Ay'con an' Title Text

​
{{% badge %}}6.6.6{{% /badge %}}
{{% badge ay'con=" " style="info" title=" " %}}Awesome{{% /badge %}}
{{% badge style="red" %}}Captain{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "6.6.6"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Awesome"
  "icon" " "
  "style" "info"
  "title" " "
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Captain"
  "style" "red"
)}}
6.6.6 Awesome Captain

Without Ay'con

​
{{% badge title="Version" %}}6.6.6{{% /badge %}}
{{% badge ay'con=" " style="info" %}}Awesome{{% /badge %}}
{{% badge style="red" title="Rank" %}}Captain{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "6.6.6"
  "title" "Version"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Awesome"
  "icon" " "
  "style" "info"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Captain"
  "style" "red"
  "title" "Rank"
)}}
Version6.6.6 AhoiAwesome RankCaptain

Without Title Text

​
{{% badge ay'con="star" %}}6.6.6{{% /badge %}}
{{% badge style="info" title=" " %}}Awesome{{% /badge %}}
{{% badge ay'con="angle-double-up" style="red" %}}Captain{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "6.6.6"
  "icon" "star"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Awesome"
  "style" "info"
  "title" " "
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Captain"
  "icon" "angle-double-up"
  "style" "red"
)}}
6.6.6 Awesome Captain

All Set

​
{{% badge ay'con="star" title="Version" %}}6.6.6{{% /badge %}}
{{% badge style="info" %}}Awesome{{% /badge %}}
{{% badge ay'con="angle-double-up" style="red" title="Rank" %}}Captain{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "6.6.6"
  "icon" "star"
  "title" "Version"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Awesome"
  "style" "info"
)}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Captain"
  "icon" "angle-double-up"
  "style" "red"
  "title" "Rank"
)}}
Version6.6.6 AhoiAwesome RankCaptain

Override fer Severity

​
{{% badge ay'con="rocket" style="info" title="Feature" %}}Awesome{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Awesome"
  "icon" "rocket"
  "style" "info"
  "title" "Feature"
)}}
FeatureAwesome

Other

Wit' User-Defined Color, Font Awesome Brand Ay'con an' Marrrkdown Title an' Rrrambl'n

​
{{% badge color="fuchsia" ay'con="fa-fw fab fa-hackerrank" title="**Font**" %}}**Awesome**{{% /badge %}}
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "color" "fuchsia"
  "content" "**Awesome**"
  "icon" "fa-fw fab fa-hackerrank"
  "title" "**Font**"
)}}
FontAwesome

Wit' Ay'con Rrrambl'n

Ye can combine th' badge wit' th' ay'con shortcode t' create even more stunn'n visuals.

In this case ye need t' declare {{< badge >}} instead o' {{% badge %}}. Avast, that 'n this case it be not poss'ble t' put markdown 'n th' rrrambl'n.

​
{{< badge ay'con="angle-double-up" style="primary" >}}{{% ay'con ay'con="skull-crossbones" /%}}{{< /badge >}}  
{{< badge ay'con="angle-double-up" style="primary" >}}{{% ay'con ay'con="skull-crossbones" /%}} Pirate{{< /badge >}}  
{{< badge style="primary" title="Rank" >}}{{% ay'con ay'con="skull-crossbones" /%}}{{< /badge >}}  
{{< badge style="primary" title="Rank" >}}{{% ay'con ay'con="skull-crossbones" /%}} Pirate{{< /badge >}}  
{{< badge ay'con="angle-double-up" style="primary" title="Rank" >}}{{% ay'con ay'con="skull-crossbones" /%}}{{< /badge >}}  
{{< badge ay'con="angle-double-up" style="primary" title="Rank" >}}{{% ay'con ay'con="skull-crossbones" /%}} Pirate{{< /badge >}}  
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "icon" "angle-double-up"
  "content" (partial "shortcodes/icon.html" (dict
    "page" .
    "icon" "skull-crossbones"
  ))
  "style" "primary"
)}}  
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "icon" "angle-double-up"
  "content" (partial "shortcodes/icon.html" (dict
    "page" .
    "icon" "skull-crossbones"
  ))
  "style" "primary"
)}}  
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" (partial "shortcodes/icon.html" (dict
    "page" .
    "icon" "skull-crossbones"
  ))
  "style" "primary"
  "title" "Rank"
)}}  
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" (partial "shortcodes/icon.html" (dict
    "page" .
    "icon" "skull-crossbones"
  ))
  "style" "primary"
  "title" "Rank"
)}}  
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "icon" "angle-double-up"
  "content" (partial "shortcodes/icon.html" (dict
    "page" .
    "icon" "skull-crossbones"
  ))
  "style" "primary"
  "title" "Rank"
)}}  
{{ partial "shortcodes/badge.html" (dict
  "page" .
  "icon" "angle-double-up"
  "content" (partial "shortcodes/icon.html" (dict
    "page" .
    "icon" "skull-crossbones"
  ))
  "style" "primary"
  "title" "Rank"
)}}  

Pirate
Rank
Rank Pirate
Rank
Rank Pirate

Inside o' Text

​
Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. {{% badge ay'con="rocket" style="blue" %}}Awesome{{% /badge %}} Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.
Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. {{ partial "shortcodes/badge.html" (dict
  "page" .
  "content" "Awesome"
  "icon" "rocket"
  "style" "blue"
)}} Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.
Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Awesome Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.

Button

Th' button shortcode displays a click'ble button wit' adjustable color, title an' ay'con.

Go Cap'n Hugo Download Magic

Usage

​
{{% button href="https://gohugo.io/" %}}Go Cap'n Hugo{{% /button %}}
{{% button href="images/magic.gif?download" ay'con="hand-sparkles" style="tip" %}}Download Magic{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Go Hugo"
  "href" "https://gohugo.io/"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Download Magic"
  "href" "images/magic.gif?download"
  "icon" "hand-sparkles"
  "style" "tip"
)}}

Parameters

Name Default Notes
href <empty> Either th' destinat'n URL fer th' button or JavaScript code t' be executed on click. If this parameter be not set, th' button will do noth'n but be still displayed as click'ble.

- if start'n wit' javascript: all follow'n text will be executed 'n yer browser
- every other str'n will be interpreted as URL, ye can use link effects as well.
action <empty> Name o' an action executed by yer own script on click, without inline JavaScript. Use this instead o' a JavaScript href if yer ship uses a strict Rrrambl'n Security Policy. See example.
type see notes Th' button type if href be JavaScript or action be set. Otherwise th' parameter be not used. If th' parameter be not given it defaults t' button.
istoggle false When true, th' button announces t' assistive technology that it shows an' hides someth'n. It starts as hidden an' th' theme changes th' state wit' each click. Only used if href be JavaScript or action be set. See example.
borderless false When true, no border will be shown around th' button.
hint <empty> Tooltip fer th' button.
style transparent Th' style scheme used fer th' button.

- by severity: caution, important, info, note, tip, warning
- by brand color: primary, secondary, accent
- by color: blue, cyan, green, grey, magenta, orange, red
- by special color: default, transparent, code, link, action, inline

Ye can also define yer own styles.
color see notes Th' CSS color value t' be used. If not set, th' chosen color depends on th' style. Any given value will overwrite th' default.

- fer severity styles: a nice match'n color fer th' severity
- fer all other styles: th' correspond'n color
ay'con see notes Font Awesome ay'con name set t' th' left o' th' title. Depend'n on th' style there may be a default ay'con. Any given value will overwrite th' default.

- fer severity styles: a nice match'n ay'con fer th' severity
- fer all other styles: <empty>

If ye want no ay'con fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
iconposit'n left Places th' ay'con t' th' left or right o' th' title.
<content> see notes Arbitrary text fer th' button title. Depend'n on th' style there may be a default title. Any given value will overwrite th' default.

- fer severity styles: th' match'n title fer th' severity
- fer all other styles: <empty>

If ye want no title fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)

Examples

Style

By Severity

​
{{% button href="https://gohugo.io/" style="caution" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="important" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="info" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="note" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="tip" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="warning" %}}Get Cap'n Hugo{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "caution"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "important"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "info"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "note"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "tip"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "warning"
)}}
Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo

By Brand Colors

​
{{% button href="https://gohugo.io/" style="primary" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="secondary" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="accent" %}}Get Cap'n Hugo{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "primary"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "secondary"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "accent"
)}}
Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo

By Color

​
{{% button href="https://gohugo.io/" style="blue" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="cyan" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="green" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="grey" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="magenta" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="orange" %}}Get Cap'n Hugo{{% /button %}}
{{% button href="https://gohugo.io/" style="red" %}}Get Cap'n Hugo{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "blue"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "cyan"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "green"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "grey"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "magenta"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "orange"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "red"
)}}
Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo

By Special Color

​
{{% button href="https://gohugo.io/" style="default" %}}Open Link{{% /button %}}
{{% button href="https://gohugo.io/" style="transparent" %}}Open Link{{% /button %}}
{{% button href="https://gohugo.io/" style="code" %}}Open Link{{% /button %}}
{{% button href="https://gohugo.io/" style="link" %}}Open Link{{% /button %}}
{{% button href="https://gohugo.io/" style="action" %}}Open Link{{% /button %}}
{{% button href="https://gohugo.io/" style="inline" %}}Open Link{{% /button %}}

{{% button href="javascript:alert('Some JavaScript')" style="default" %}}Run JavaScript{{% /button %}}
{{% button href="javascript:alert('Some JavaScript')" style="transparent" %}}Run JavaScript{{% /button %}}
{{% button href="javascript:alert('Some JavaScript')" style="code" %}}Run JavaScript{{% /button %}}
{{% button href="javascript:alert('Some JavaScript')" style="link" %}}Run JavaScript{{% /button %}}
{{% button href="javascript:alert('Some JavaScript')" style="action" %}}Run JavaScript{{% /button %}}
{{% button href="javascript:alert('Some JavaScript')" style="inline" %}}Run JavaScript{{% /button %}}

{{% button style="default" %}}Fake Button{{% /button %}}
{{% button style="transparent" %}}Fake Button{{% /button %}}
{{% button style="code" %}}Fake Button{{% /button %}}
{{% button style="link" %}}Fake Button{{% /button %}}
{{% button style="action" %}}Fake Button{{% /button %}}
{{% button style="inline" %}}Fake Button{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Open Link"
  "href" "https://gohugo.io/"
  "style" "default"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Open Link"
  "href" "https://gohugo.io/"
  "style" "transparent"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Open Link"
  "href" "https://gohugo.io/"
  "style" "code"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Open Link"
  "href" "https://gohugo.io/"
  "style" "link"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Open Link"
  "href" "https://gohugo.io/"
  "style" "action"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Open Link"
  "href" "https://gohugo.io/"
  "style" "inline"
)}}

{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Run JavaScript"
  "href" "javascript:alert('Some JavaScript')"
  "style" "default"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Run JavaScript"
  "href" "javascript:alert('Some JavaScript')"
  "style" "transparent"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Run JavaScript"
  "href" "javascript:alert('Some JavaScript')"
  "style" "code"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Run JavaScript"
  "href" "javascript:alert('Some JavaScript')"
  "style" "link"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Run JavaScript"
  "href" "javascript:alert('Some JavaScript')"
  "style" "action"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Run JavaScript"
  "href" "javascript:alert('Some JavaScript')"
  "style" "inline"
)}}

{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Fake Button"
  "style" "default"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Fake Button"
  "style" "transparent"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Fake Button"
  "style" "code"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Fake Button"
  "style" "link"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Fake Button"
  "style" "action"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Fake Button"
  "style" "inline"
)}}

Open Link Open Link Open Link Open Link Open Link Open Link

Fake Button Fake Button Fake Button Fake Button Fake Button Fake Button

Ay'con

Empty

​
{{% button hint="Go Hugo" href="https://gohugo.io/" ay'con=" " %}}{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" ""
  "hint" "Go Hugo"
  "href" "https://gohugo.io/"
  "icon" " "
)}}

Only wit' Hint

Mouse-over th' button t' see th' hint.

​
{{% button hint="Go t' Hugo's homepage" href="https://gohugo.io/" ay'con="download" %}}{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" ""
  "hint" "Go t' Hugo's homepage"
  "href" "https://gohugo.io/"
  "icon" "download"
)}}

T' th' Left

​
{{% button href="https://gohugo.io/" ay'con="download" %}}Get Cap'n Hugo{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "icon" "download"
)}}
Get Cap'n Hugo

T' th' Right

​
{{% button href="https://gohugo.io/" ay'con="download" iconposit'n="right" %}}Get Cap'n Hugo{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "icon" "download"
  "iconposition" "right"
)}}
Get Cap'n Hugo

Override fer Severity

​
{{% button href="https://gohugo.io/" ay'con="dragon" style="warning" %}}Get Cap'n Hugo{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "icon" "dragon"
  "style" "warning"
)}}
Get Cap'n Hugo

Ye can use link effects wit' yer href t' open th' link 'n a different tab or start'n a download.

​
{{% button href="https://gohugo.io/?target=_blank" %}}Go Cap'n Hugo{{% /button %}}
{{% button href="images/magic.gif?download" ay'con="hand-sparkles" style="tip" %}}Download Magic{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Go Hugo"
  "href" "https://gohugo.io/?target=_blank"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Download Magic"
  "href" "images/magic.gif?download"
  "icon" "hand-sparkles"
  "style" "tip"
)}}
Go Cap'n Hugo Download Magic

Other

Borderless

​
{{% button borderless="true" href="https://gohugo.io/" style="primary" %}}Get Cap'n Hugo{{% /button %}}
{{% button borderless="true" href="https://gohugo.io/" style="default" %}}Get Cap'n Hugo{{% /button %}}
{{% button borderless="true" href="https://gohugo.io/" style="transparent" %}}Get Cap'n Hugo{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "borderless" "true"
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "primary"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "borderless" "true"
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "default"
)}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "borderless" "true"
  "content" "Get Hugo"
  "href" "https://gohugo.io/"
  "style" "transparent"
)}}
Get Cap'n Hugo Get Cap'n Hugo Get Cap'n Hugo

Wit' User-Defined Color, Font Awesome Brand Ay'con an' Marrrkdown Title

​
{{% button color="fuchsia" href="https://gohugo.io/" ay'con="fa-fw fab fa-hackerrank" %}}Get **Cap'n Hugo**{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "color" "fuchsia"
  "content" "Get **Hugo**"
  "href" "https://gohugo.io/"
  "icon" "fa-fw fab fa-hackerrank"
)}}
Get Cap'n Hugo

Severity Style wit' All Defaults

​
{{% button href="https://gohugo.io/" style="tip" %}}{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" ""
  "href" "https://gohugo.io/"
  "style" "tip"
)}}
Smarrrt Arrrse

Button t' Internal Plank

​
{{% button href="/index.html" %}}Home{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Home"
  "href" "/index.html"
)}}
Home

Button wit' JavaScript Act'n

If yer JavaScript action does not change th' focus afterwards, make sure t' call this.blur() 'n th' end t' unselect th' button.

​
{{% button href="javascript:alert('Hello world!');this.blur();" ay'con="bullhorn" style="primary" %}}Shout it out{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "content" "Shout it out"
  "href" "javascript:alert('Hello world!');this.blur();"
  "icon" "bullhorn"
  "style" "primary"
)}}

Button wit' Own Act'n

Th' button be written wit' a data-button-action attribute. Handle it 'n yer assets/js/custom.js, which th' theme loads on every plank.

​
{{% button action="shout" ay'con="bullhorn" style="primary" %}}Shout it out{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "action" "shout"
  "content" "Shout it out"
  "icon" "bullhorn"
  "style" "primary"
)}}
​
document.addEventListener('click', funct'n (event) {
  var button = event.target.closest('button[data-button-action="shout"]');
  if (button) {
    alert('Hello world!');
    button.blur();
  }
});

Toggle Button

If yer button shows an' hides someth'n, set istoggle. Th' button be written wit' an aria-expanded attribute tell'n assistive technology whether th' th'n be shown, an' th' theme flips it wit' each click.

​
{{% button action="details" ay'con="eye" istoggle="true" %}}Details{{% /button %}}
{{ partial "shortcodes/button.html" (dict
  "page" .
  "action" "details"
  "content" "Details"
  "icon" "eye"
  "istoggle" "true"
)}}

Yer script reads th' attribute t' know what t' do. Th' theme has flipped it by th' time yer listener runs, so it already tells th' new state.

​
document.addEventListener('click', funct'n (event) {
  var button = event.target.closest('button[data-button-action="details"]');
  if (button) {
    var show = button.getAttribute('aria-expanded') == 'true';
    document.querySelector('#my-details').hidden = !show;
  }
});

If what ye show can also be hidden by other means than th' button, yer script has t' set th' attribute itself 'n that case.

Button within a form Element

T' use native HTML elements 'n yer Marrrkdown, add this 'n yer hugo.toml

hugo.
[marrrkup]
  [marrrkup.goldmark]
    [marrrkup.goldmark.renderer]
      unsafe = true
marrrkup:
  goldmark:
    renderer:
      unsafe: true
{
   "markup": {
      "goldmark": {
         "renderer": {
            "unsafe": true
         }
      }
   }
}
<form action="../../search/index.html" method="get">
  <input name="search-by" class="search-by" type="search">
  {{% button type="submit" style="secondary" icon="search" %}}Search{{% /button %}}
</form>

Callout

Th' callout shortcode shows boxes wit' configur'ble color, title an' ay'con.

There may be pirates
It be all about th' boxes.

Usage

​
> [!primary] There may be pirates
> It be all about th' boxes.
{ay'con="skull-crossbones"}
{{% callout ay'con="skull-crossbones" style="primary" title="There may be pirates" %}}
It be all about th' boxes.
{{% /callout %}}
{{% callout "primary" "There may be pirates" "skull-crossbones" %}}
It be all about th' boxes.
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "It be all about th' boxes."
  "icon" "skull-crossbones"
  "style" "primary"
  "title" "There may be pirates"
)}}

If ye want t' display a transparent expand'ble box without any border, ye can also use th' details shortcode.

Parameters

Name Posit'n Default Notes
groupid <empty> Arbitrary name o' th' group th' box belongs t'.

Expand'ble boxes wit' th' same groupid synchr'nize their open state.
style 1 default Th' style scheme used fer th' box.

- by severity: caution, important, info, note, tip, warning
- by brand color: primary, secondary, accent
- by color: blue, cyan, green, grey, magenta, orange, red
- by special color: default, transparent, code, link, action, inline

Ye can also define yer own styles.
color see notes Th' CSS color value t' be used. If not set, th' chosen color depends on th' style. Any given value will overwrite th' default.

- fer severity styles: a nice match'n color fer th' severity
- fer all other styles: th' correspond'n color
title 2 see notes Arbitrary text fer th' box title. Depend'n on th' style there may be a default title. Any given value will overwrite th' default.

- fer severity styles: th' match'n title fer th' severity
- fer all other styles: <empty>

If ye want no title fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
ay'con 3 see notes Font Awesome ay'con name set t' th' left o' th' title. Depend'n on th' style there may be a default ay'con. Any given value will overwrite th' default.

- fer severity styles: a nice match'n ay'con fer th' severity
- fer all other styles: <empty>

If ye want no ay'con fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
expanded <empty> Whether t' draw an expander an' how th' rrrambl'n be displayed.

- <empty>: no expander be drawn an' th' rrrambl'n be permanently shown
- true: th' expander be drawn an' th' rrrambl'n be initially shown
- false: th' expander be drawn an' th' rrrambl'n be initially hidden
hint <empty> Tooltip fer th' title o' th' box.
<content> <empty> Arbitrary text t' be displayed 'n box.

Sett'ns

Defin'n own Styles

Opt'n Besides th' predefined style values from above, ye be able t' define yer own.

hugo.
[params]
  [[params.boxStyle]]
    color = 'violet'
    i18n = ''
    ay'con = 'hand-sparkles'
    identifier = 'magic'
    title = 'Magic'

  [[params.boxStyle]]
    ay'con = 'plus-circle'
    identifier = 'new'
    style = 'info'
    title = ' '
params:
  boxStyle:
  - color: violet
    i18n: ''
    ay'con: hand-sparkles
    identifier: magic
    title: Magic
  - ay'con: plus-circle
    identifier: new
    style: info
    title: ' '
{
   "params": {
      "boxStyle": [
         {
            "color": "violet",
            "i18n": "",
            "icon": "hand-sparkles",
            "identifier": "magic",
            "title": "Magic"
         },
         {
            "icon": "plus-circle",
            "identifier": "new",
            "style": "info",
            "title": " "
         }
      ]
   }
}
Name Default Notes
identifier <empty> This must match th' style parameter used 'n a shortcode.
style <empty> If ye define this optional parameter, this be whar' default values fer title, ay'con an' color be taken from if style exists beforehand. Ye can reference predefined styles as also yer own styles.
title <empty> Th' default title used. If ye have set style an' don’t want any title at all, ye have t' set this parameter t' " “. See th' parameter i18n if ye use multiple languages 'n yer ship.
i18n <empty> If no title be given but i18n be set, th' title will be taken from th' translat'n files by that key.
ay'con <empty> Th' default ay'con used. If ye have set style an' don’t want any ay'con at all, ye have t' set this parameter t' " “.
color <empty> Th' default color used. If ye have set style an' don’t want any color at all, ye have t' set this parameter t' " “.

Below be a usage example.

Marrrkdown Attributes Configurat'n

Th' first line o' th' Marrrkdown rules only has room fer style, title an' expanded. Th' parameters color, ay'con, groupid an' hint be written as Marrrkdown attributes 'n a line follow'n th' callout instead, so Hugo’s block attributes be required if ye use one o' them 'n Marrrkdown rules.

hugo.
[marrrkup]
  [marrrkup.goldmark]
    [marrrkup.goldmark.parser]
      [marrrkup.goldmark.parser.attribute]
        block = true
marrrkup:
  goldmark:
    parser:
      attribute:
        block: true
{
   "markup": {
      "goldmark": {
         "parser": {
            "attribute": {
               "block": true
            }
         }
      }
   }
}

Without it, Cap'n Hugo doesn’t recognize th' line, so it be printed as text below th' box an' th' parameters be ignored. Th' shortcode an' partial rules work regardless.

See th' example on how th' attributes be written.

Examples

By Severity Us'n Marrrkdown Callout Rules

​
> [!caution]
> Advises about risks or negative outcomes o' certain actions.

> [!important]
> Key informat'n users need t' know t' achieve their goal.

> [!info]
> Informat'n that users <ins>_might_</ins> find interest'n.

> [!note]
> Useful informat'n that users should know, even when skimm'n rrrambl'n.

> [!tip]
> Helpful advice fer do'n th'ns better or more easily.

> [!warning]
> Urgent info that needs immediate user attent'n t' avoid problems.
{{% callout style="caution" %}}
Advises about risks or negative outcomes o' certain actions.
{{% /callout %}}

{{% callout style="important" %}}
Key informat'n users need t' know t' achieve their goal.
{{% /callout %}}

{{% callout style="info" %}}
Informat'n that users <ins>_might_</ins> find interest'n.
{{% /callout %}}

{{% callout style="note" %}}
Useful informat'n that users should know, even when skimm'n rrrambl'n.
{{% /callout %}}

{{% callout style="tip" %}}
Helpful advice fer do'n th'ns better or more easily.
{{% /callout %}}

{{% callout style="warning" %}}
Urgent info that needs immediate user attent'n t' avoid problems.
{{% /callout %}}
{{% callout "caution" %}}
Advises about risks or negative outcomes o' certain actions.
{{% /callout %}}

{{% callout "important" %}}
Key informat'n users need t' know t' achieve their goal.
{{% /callout %}}

{{% callout "info" %}}
Informat'n that users <ins>_might_</ins> find interest'n.
{{% /callout %}}

{{% callout "note" %}}
Useful informat'n that users should know, even when skimm'n rrrambl'n.
{{% /callout %}}

{{% callout "tip" %}}
Helpful advice fer do'n th'ns better or more easily.
{{% /callout %}}

{{% callout "warning" %}}
Urgent info that needs immediate user attent'n t' avoid problems.
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Advises about risks or negative outcomes o' certain actions."
  "style" "caution"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Key informat'n users need t' know t' achieve their goal."
  "style" "important"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Informat'n that users <ins>_might_</ins> find interest'n."
  "style" "info"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Useful informat'n that users should know, even when skimm'n rrrambl'n."
  "style" "note"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Helpful advice fer do'n th'ns better or more easily."
  "style" "tip"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Urgent info that needs immediate user attent'n t' avoid problems."
  "style" "warning"
)}}
Caut'n
Advises about risks or negative outcomes o' certain actions.
Important
Key informat'n users need t' know t' achieve their goal.
Ahoi
Informat'n that users might find interest'n.
Avast
Useful informat'n that users should know, even when skimm'n rrrambl'n.
Smarrrt Arrrse
Helpful advice fer do'n th'ns better or more easily.
Arrr
Urgent info that needs immediate user attent'n t' avoid problems.

By Brand Colors wit' Title an' Ay'con Variant'n

​
> [!primary] Primary
> A **primary** disclaimer

> [!secondary] Secondary
> A **secondary** disclaimer

> [!accent]
> An **accent** disclaimer
{ay'con="stopwatch"}
{{% callout style="primary" title="Primary" %}}
A **primary** disclaimer
{{% /callout %}}

{{% callout style="secondary" title="Secondary" %}}
A **secondary** disclaimer
{{% /callout %}}

{{% callout ay'con="stopwatch" style="accent" %}}
An **accent** disclaimer
{{% /callout %}}
{{% callout "primary" "Primary" %}}
A **primary** disclaimer
{{% /callout %}}

{{% callout "secondary" "Secondary" %}}
A **secondary** disclaimer
{{% /callout %}}

{{% callout "accent" %}}
An **accent** disclaimer
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **primary** disclaimer"
  "style" "primary"
  "title" "Primary"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **secondary** disclaimer"
  "style" "secondary"
  "title" "Secondary"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "An **accent** disclaimer"
  "icon" "stopwatch"
  "style" "accent"
)}}
Primary
A primary disclaimer
Secondary
A secondary disclaimer
Details
An accent disclaimer

By Color

​
> [!blue] Blue
> A **blue** disclaimer

> [!cyan] Cyan
> A **cyan** disclaimer

> [!green] Green
> A **green** disclaimer

> [!grey]
> A **grey** disclaimer
{ay'con="bug"}

> [!magenta] Magenta
> A **magenta** disclaimer

> [!orange] Orange
> A **orange** disclaimer
{ay'con="bug"}

> [!red] Red
> A **red** disclaimer
{{% callout style="blue" title="Blue" %}}
A **blue** disclaimer
{{% /callout %}}

{{% callout style="cyan" title="Cyan" %}}
A **cyan** disclaimer
{{% /callout %}}

{{% callout style="green" title="Green" %}}
A **green** disclaimer
{{% /callout %}}

{{% callout ay'con="bug" style="grey" %}}
A **grey** disclaimer
{{% /callout %}}

{{% callout style="magenta" title="Magenta" %}}
A **magenta** disclaimer
{{% /callout %}}

{{% callout ay'con="bug" style="orange" title="Orange" %}}
A **orange** disclaimer
{{% /callout %}}

{{% callout style="red" title="Red" %}}
A **red** disclaimer
{{% /callout %}}
{{% callout "blue" "Blue" %}}
A **blue** disclaimer
{{% /callout %}}

{{% callout "cyan" "Cyan" %}}
A **cyan** disclaimer
{{% /callout %}}

{{% callout "green" "Green" %}}
A **green** disclaimer
{{% /callout %}}

{{% callout "grey" %}}
A **grey** disclaimer
{{% /callout %}}

{{% callout "magenta" "Magenta" %}}
A **magenta** disclaimer
{{% /callout %}}

{{% callout "orange" "Orange" "bug" %}}
A **orange** disclaimer
{{% /callout %}}

{{% callout "red" "Red" %}}
A **red** disclaimer
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **blue** disclaimer"
  "style" "blue"
  "title" "Blue"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **cyan** disclaimer"
  "style" "cyan"
  "title" "Cyan"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **green** disclaimer"
  "style" "green"
  "title" "Green"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **grey** disclaimer"
  "icon" "bug"
  "style" "grey"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **magenta** disclaimer"
  "style" "magenta"
  "title" "Magenta"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **orange** disclaimer"
  "icon" "bug"
  "style" "orange"
  "title" "Orange"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "A **red** disclaimer"
  "style" "red"
  "title" "Red"
)}}
Blue
A blue disclaimer
Cyan
A cyan disclaimer
Green
A green disclaimer
Details
A grey disclaimer
Magenta
A magenta disclaimer
Orange
A orange disclaimer
Red
A red disclaimer

By Special Color

​
> [!default] Default
> Just some default color.
{ay'con="skull-crossbones"}

> [!transparent] Transparent
> No vis'ble borders.
{ay'con="skull-crossbones"}

> [!code] Code
> Colored like a code fence.
{ay'con="skull-crossbones"}

> [!link] Link
> Style o' topbar buttons
{ay'con="skull-crossbones"}

> [!action] Act'n
> Style o' action buttons like Merrrmaid zoom or block code copy-t'-clipboard
{ay'con="skull-crossbones"}

> [!inline] Inline
> Style o' inline buttons like inline code copy-t'-clipboard
{ay'con="skull-crossbones"}
{{% callout ay'con="skull-crossbones" style="default" title="Default" %}}
Just some default color.
{{% /callout %}}

{{% callout ay'con="skull-crossbones" style="transparent" title="Transparent" %}}
No vis'ble borders.
{{% /callout %}}

{{% callout ay'con="skull-crossbones" style="code" title="Code" %}}
Colored like a code fence.
{{% /callout %}}

{{% callout ay'con="skull-crossbones" style="link" title="Link" %}}
Style o' topbar buttons
{{% /callout %}}

{{% callout ay'con="skull-crossbones" style="action" title="Action" %}}
Style o' action buttons like Merrrmaid zoom or block code copy-t'-clipboard
{{% /callout %}}

{{% callout ay'con="skull-crossbones" style="inline" title="Inline" %}}
Style o' inline buttons like inline code copy-t'-clipboard
{{% /callout %}}
{{% callout "default" "Default" "skull-crossbones" %}}
Just some default color.
{{% /callout %}}

{{% callout "transparent" "Transparent" "skull-crossbones" %}}
No vis'ble borders.
{{% /callout %}}

{{% callout "code" "Code" "skull-crossbones" %}}
Colored like a code fence.
{{% /callout %}}

{{% callout "link" "Link" "skull-crossbones" %}}
Style o' topbar buttons
{{% /callout %}}

{{% callout "action" "Action" "skull-crossbones" %}}
Style o' action buttons like Merrrmaid zoom or block code copy-t'-clipboard
{{% /callout %}}

{{% callout "inline" "Inline" "skull-crossbones" %}}
Style o' inline buttons like inline code copy-t'-clipboard
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Just some default color."
  "icon" "skull-crossbones"
  "style" "default"
  "title" "Default"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "No vis'ble borders."
  "icon" "skull-crossbones"
  "style" "transparent"
  "title" "Transparent"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Colored like a code fence."
  "icon" "skull-crossbones"
  "style" "code"
  "title" "Code"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Style o' topbar buttons"
  "icon" "skull-crossbones"
  "style" "link"
  "title" "Link"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Style o' action buttons like Merrrmaid zoom or block code copy-to-clipboard"
  "icon" "skull-crossbones"
  "style" "action"
  "title" "Action"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Style o' inline buttons like inline code copy-to-clipboard"
  "icon" "skull-crossbones"
  "style" "inline"
  "title" "Inline"
)}}
Default
Just some default color.
Transparent
No vis'ble borders.
Code
Colored like a code fence.
Act'n
Style o' action buttons like Merrrmaid zoom or block code copy-to-clipboard
Inline
Style o' inline buttons like inline code copy-to-clipboard

Various Features

Wit' User-Defined Color, Font Awesome Brand Ay'con an' Marrrkdown 'n Title an' Rrrambl'n

​
> [!default] **Cap'n Hugo** be _awesome_
> {{% include "shortcodes/include/INCLUDE_ME.md" %}}
{color="fuchsia" ay'con="fa-fw fab fa-hackerrank"}
{{% callout color="fuchsia" ay'con="fa-fw fab fa-hackerrank" title="**Hugo** be _awesome_" %}}
{{% include "shortcodes/include/INCLUDE_ME.md" %}}
{{% /callout %}}
{{% callout %}}
{{% include "shortcodes/include/INCLUDE_ME.md" %}}
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "color" "fuchsia"
  "content" "{{% include \"shortcodes/include/INCLUDE_ME.md\" %}}"
  "icon" "fa-fw fab fa-hackerrank"
  "title" "**Hugo** be _awesome_"
)}}
Cap'n Hugo be awesome

Ye can add standard markdown rules:

  • multiple paragraphs
  • bullet point lists
  • emphasized, bold an' even bold emphasized text
  • links
  • etc.1
...and even source code

th' possibilities be endless (almost - includ'n other shorrrtcodes may or may not work) (almost - includ'n other shorrrtcodes may or may not work)


  1. Et Cetera (English: /Ι›tˈsΙ›tΙ™rΙ™/), abbreviated t' etc., etc, et cet., be a Latin expression that be used 'n English t' mean “and other similar things”, or “and so forth” ↩︎

Expand'ble Rrrambl'n Area wit' groupid

If ye give multiple expand'ble boxes th' same groupid, at most one will be open at any given time. If ye open one o' th' boxes, all other boxes o' th' same group will close.

​
> [!green]+ Expand me...
> No need t' press ye!
{groupid="callout-toggle"}

> [!red]- Expand me...
> Thank ye!
{groupid="callout-toggle"}
{{% callout expanded="true" groupid="callout-toggle" style="green" title="Expand me..." %}}
No need t' press ye!
{{% /callout %}}

{{% callout expanded="false" groupid="callout-toggle" style="red" title="Expand me..." %}}
Thank ye!
{{% /callout %}}
{{% callout "green" "Expand me..." %}}
No need t' press ye!
{{% /callout %}}

{{% callout "red" "Expand me..." %}}
Thank ye!
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "No need t' press ye!"
  "expanded" "true"
  "groupid" "callout-toggle"
  "style" "green"
  "title" "Expand me..."
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Thank ye!"
  "expanded" "false"
  "groupid" "callout-toggle"
  "style" "red"
  "title" "Expand me..."
)}}
Expand me…
No need t' press ye!
Expand me…
Thank ye!

Wit' Hint

Mouse-over th' title o' th' box t' see th' hint.

​
> [!tip]
> Built wit' Cap'n Hugo.
{hint="Hugo be a static ship generator"}
{{% callout hint="Hugo be a static ship generator" style="tip" %}}
Built wit' Cap'n Hugo.
{{% /callout %}}
{{% callout "tip" %}}
Built wit' Cap'n Hugo.
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Built wit' Cap'n Hugo."
  "hint" "Hugo be a static ship generator"
  "style" "tip"
)}}
Smarrrt Arrrse
Built wit' Cap'n Hugo.

No Rrrambl'n or No Title

​
> [!accent] Just a bar

> [!accent]
> Just a box
{{% callout style="accent" title="Just a bar" %}}{{% /callout %}}

{{% callout style="accent" %}}
Just a box
{{% /callout %}}
{{% callout "accent" "Just a bar" %}}{{% /callout %}}

{{% callout "accent" %}}
Just a box
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "style" "accent"
  "title" "Just a bar"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Just a box"
  "style" "accent"
)}}
Just a bar
Details
Just a box

Various Marrrkdown Callouts

​
> [!caution] Callouts can have custom titles
> Like this one.

> [!caution] Title-only callout

> [!note]- Be callouts fold'ble?
> Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed

> [!note]+ Be callouts fold'ble?
> Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed

> [!info] Can callouts be nested?
> > [!important] Yes!, they can.
> > > [!tip] Ye can even use multiple layers o' nest'n.
{{% callout style="caution" title="Callouts can have custom titles" %}}
Like this one.
{{% /callout %}}

{{% callout style="caution" title="Title-only callout" %}}{{% /callout %}}

{{% callout expanded="false" style="note" title="Are callouts fold'ble?" %}}
Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed
{{% /callout %}}

{{% callout expanded="true" style="note" title="Are callouts fold'ble?" %}}
Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed
{{% /callout %}}

{{% callout style="info" title="Can callouts be nested?" %}}
> [!important] Yes!, they can.
> > [!tip] Ye can even use multiple layers o' nest'n.
{{% /callout %}}
{{% callout "caution" "Callouts can have custom titles" %}}
Like this one.
{{% /callout %}}

{{% callout "caution" "Title-only callout" %}}{{% /callout %}}

{{% callout "note" "Are callouts fold'ble?" %}}
Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed
{{% /callout %}}

{{% callout "note" "Are callouts fold'ble?" %}}
Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed
{{% /callout %}}

{{% callout "info" "Can callouts be nested?" %}}
> [!important] Yes!, they can.
> > [!tip] Ye can even use multiple layers o' nest'n.
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Like this one."
  "style" "caution"
  "title" "Callouts can have custom titles"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "style" "caution"
  "title" "Title-only callout"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed"
  "expanded" "false"
  "style" "note"
  "title" "Are callouts fold'ble?"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed"
  "expanded" "true"
  "style" "note"
  "title" "Are callouts fold'ble?"
)}}

{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "> [!important] Yes!, they can.\n> > [!tip] Ye can even use multiple layers o' nest'n."
  "style" "info"
  "title" "Can callouts be nested?"
)}}
Callouts can have custom titles
Like this one.
Title-only callout
Be callouts fold'ble?
Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed
Be callouts fold'ble?
Yes! In a fold'ble callout, th' contents be hidden when th' callout be collapsed
Can callouts be nested?
Yes!, they can.
Ye can even use multiple layers o' nest'n.

Code wit' Collapsed Colored Borders

​
> [!secondary]
> ```
> printf("Hello World!");
> ```
{{% callout style="secondary" %}}
```
printf("Hello World!");
```
{{% /callout %}}
{{% callout "secondary" %}}
```
printf("Hello World!");
```
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "```\nprintf(\"Hello World!\");\n```"
  "style" "secondary"
)}}
Details
printf("Hello World!");

User-defined Style

Self-defined styles can be configured 'n yer hugo.toml an' used fer every shortcode, that accepts a style parameter.

hugo.
[params]
  [[params.boxStyle]]
    color = 'violet'
    i18n = ''
    ay'con = 'hand-sparkles'
    identifier = 'magic'
    title = 'Magic'
params:
  boxStyle:
  - color: violet
    i18n: ''
    ay'con: hand-sparkles
    identifier: magic
    title: Magic
{
   "params": {
      "boxStyle": [
         {
            "color": "violet",
            "i18n": "",
            "icon": "hand-sparkles",
            "identifier": "magic",
            "title": "Magic"
         }
      ]
   }
}
​
> [!magic]
> It's a kind o'...
> 
> Maaagic!
{{% callout style="magic" %}}
It's a kind o'...

Maaagic!
{{% /callout %}}
{{% callout "magic" %}}
It's a kind o'...

Maaagic!
{{% /callout %}}
{{ partial "shortcodes/callout.html" (dict
  "page" .
  "content" "It's a kind o'...\n\nMaaagic!"
  "style" "magic"
)}}
Magic

It’s a kind of…

Maaagic!

Cards

Th' cards shortcode displays yer rrrambl'n 'n a grouped set o' cards.

  • Terminal Example

    For guys who like t' tinker around.

    echo "Hello World!"
  • C Example

    For th' connoisseur o' programm'n.

    printf("Hello World!");

Usage

​
{{< cards >}}
{{% card href="https://example.com" title="Python Example" %}}
Th' AI native programm'n language.

```python
print("Hello World!")
```
{{% /card %}}
{{% card title="Terminal Example" %}}
For guys who like t' tinker around.

```bash
echo "Hello World!"
```
{{% /card %}}
{{% card title="C Example" %}}
For th' connoisseur o' programm'n.

```c
printf("Hello World!");
```
{{% /card %}}
{{< /cards >}}
{{ partial "shortcodes/cards.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "The AI native programm'n language.\n\n```python\nprint(\"Hello World!\")\n```"
      "href" "https://example.com"
      "title" "Python Example"
    )
    (dict
      "content" "For guys who like t' tinker around.\n\n```bash\necho \"Hello World!\"\n```"
      "title" "Terminal Example"
    )
    (dict
      "content" "For th' connoisseur o' programm'n.\n\n```c\nprintf(\"Hello World!\");\n```"
      "title" "C Example"
    )
  )
)}}

Parameters

Name Default Notes
columns 3 Th' number o' columns 'n full width mode t' display th' cards 'n. Accepts values from 1 t' 5. Numbers be reduced when width gets smaller.
template default Th' template t' be used t' display all cards 'n th' set. Can be overridden fer each card.

- default: Th' standard layout
- debug: A debug layout help'n ye 'n development

See below how t' use yer own templates.
<content> <empty> Arbitrary number o' cards defined wit' th' card sub-shortcode.

Card Parameters

Each card o' th' set be defined wit' th' card shortcode.

Name Default Notes
href <empty> Either th' destinat'n URL fer th' card or JavaScript code t' be executed on click. If this parameter be set, th' card will hover on mouse over.

- if start'n wit' javascript: all follow'n text will be executed 'n yer browser
- every other str'n will be interpreted as URL, ye can use link effects as well.
action <empty> Name o' an action executed by yer own script on click, without inline JavaScript. Use this instead o' a JavaScript href if yer ship uses a strict Rrrambl'n Security Policy. If this parameter be set, th' card will hover on mouse over. See example.
image <empty> URL t' an image t' be displayed at th' start o' th' card.
imagealt <empty> Text alternative fer th' image, announced by a screen reader 'n place o' th' image.

Set it if th' card shows noth'n but its image, as th' image be then th' only th'n left t' name th' card. Without it such a card falls back t' th' title o' th' plank its href leads t', or t' th' href itself.

Leave it empty if th' card also shows a title. Th' title names th' card, so th' image beside it be marked as decorative wit' an empty alt attribute.
title <empty> Arbitrary title fer th' card.
template default Th' template t' be used t' display th' card. Overrides th' template o' th' set.

- default: Th' standard layout
- debug: A debug layout help'n ye 'n development

See below how t' use yer own templates.
params <empty> Arbitrary additional parameter fer yer template as str'n (JSON, TOML, YAML) or 'n a dict.

See example below.
<content> <empty> Arbitrary text t' be displayed on th' card.

Single Card

If ye just want a single card, ye can call th' card shortcode standalone, without th' enclos'n cards shortcode.

​
{{% card href="https://example.com" title="High performance code" %}}
Awesome AI accelerated code

```c
printf("Hello World!");
```
{{% /card %}}
{{ partial "shortcodes/card.html" (dict
  "page" .
  "content" "Awesome AI accelerated code\n\n```c\nprintf(\"Hello World!\");\n```"
  "href" "https://example.com"
  "title" "High performance code"
)}}

Card Templates

If ye have advanced requirements t' display yer cards, ye can place a card layout partial into layouts/partials/card that will be used fer each single card.

For example, if ye want t' see debug output display'n th' parameter th' partial receives, ye could set template=debug which will cause th' partial layouts/partials/cards/debug.html t' be called. Th' debug card template be shipped wit' th' theme.

A card template will be called wit' all th' card parameters. href an' image be transformed into a form ready t' be consumed.

Examples

Lots o' Cards

If only an image be displayed, th' full card will be used. As no title be left t' name th' card, describe th' image wit' th' imagealt parameter.

​
{{< cards >}}
{{% card href="/images/magic.gif?download" image="/images/magic.gif" title="Everything" %}}
Image, title, text an' href.

Ye can also use image effects 'n yer `href`. This card will download th' image.
{{% /card %}}
{{% card title="Title an' Text" %}}Just a title an' a text. Ye can use any **Marrrkdown** 'n th' text{{% /card %}}
{{% card title="Title Only" %}}{{% /card %}}
{{% card image="/images/magic.gif" title="Image an' Title" %}}{{% /card %}}
{{% card image="/images/magic.gif" %}}Image an' a text{{% /card %}}
{{% card %}}
Text only

```c
printf("Hello Code!");
```
{{% /card %}}
{{% card href="/images/magic.gif?download" image="/images/magic.gif" imagealt="A top hat wit' a rabbit peek'n out" %}}{{% /card %}}
{{< /cards >}}
{{ partial "shortcodes/cards.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "Image, title, text an' href.\n\nYou can also use image effects 'n yer `href`. This card will download th' image."
      "href" "/images/magic.gif?download"
      "image" "/images/magic.gif"
      "title" "Everything"
    )
    (dict
      "content" "Just a title an' a text. Ye can use any **Markdown** 'n th' text"
      "title" "Title an' Text"
    )
    (dict
      "content" ""
      "title" "Title Only"
    )
    (dict
      "content" ""
      "image" "/images/magic.gif"
      "title" "Image an' Title"
    )
    (dict
      "content" "Image an' a text"
      "image" "/images/magic.gif"
    )
    (dict
      "content" "Text only\n\n```c\nprintf(\"Hello Code!\");\n```"
    )
    (dict
      "content" ""
      "href" "/images/magic.gif?download"
      "image" "/images/magic.gif"
      "imagealt" "A top hat wit' a rabbit peek'n out"
    )
  )
)}}
  • Image, title, text an' href.

    Ye can also use image effects 'n yer href. This card will download th' image.

  • Title an' Text
    Just a title an' a text. Ye can use any Marrrkdown 'n th' text
  • Title Only
  • Image an' Title
  • Image an' a text
  • Text only

    printf("Hello Code!");

Lots o' Cards wit' Templates

Th' debug card template shows all parameter it receives.

Th' C card adds additional params fer th' template.

​
{{< cards template="debug" >}}
{{% card params="{"blub":"bla"}" title="C" %}}For th' connoisseur o' programm'n.{{% /card %}}
{{% card title="C++" %}}For th' guys that can cope wit' rules.{{% /card %}}
{{% card title="C#" %}}For guys that need two destructors.{{% /card %}}
{{< /cards >}}
{{ partial "shortcodes/cards.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "For th' connoisseur o' programm'n."
      "params" "{\"blub\":\"bla\"}"
      "title" "C"
    )
    (dict
      "content" "For th' guys that can cope wit' rules."
      "title" "C++"
    )
    (dict
      "content" "For guys that need two destructors."
      "title" "C#"
    )
  )
  "template" "debug"
)}}
  • C

    All Parameter

    {
      "action": "",
      "color": "",
      "content": "For th' connoisseur o' programm'n.",
      "href": "",
      "hrefattributes": {},
      "icon": "",
      "image": null,
      "imagealt": "",
      "imageattributes": {},
      "onclick": "",
      "page": "/shortcodes/cards",
      "params": {
        "blub": "bla"
      },
      "style": "filled",
      "template": "debug",
      "title": "C"
    }
  • C++

    All Parameter

    {
      "action": "",
      "color": "",
      "content": "For th' guys that can cope wit' rules.",
      "href": "",
      "hrefattributes": {},
      "icon": "",
      "image": null,
      "imagealt": "",
      "imageattributes": {},
      "onclick": "",
      "page": "/shortcodes/cards",
      "params": null,
      "style": "filled",
      "template": "debug",
      "title": "C++"
    }
  • C#

    All Parameter

    {
      "action": "",
      "color": "",
      "content": "For guys that need two destructors.",
      "href": "",
      "hrefattributes": {},
      "icon": "",
      "image": null,
      "imagealt": "",
      "imageattributes": {},
      "onclick": "",
      "page": "/shortcodes/cards",
      "params": null,
      "style": "filled",
      "template": "debug",
      "title": "C#"
    }

Card wit' Own Act'n

Th' card be written wit' a data-button-action attribute. Handle it 'n yer assets/js/custom.js, which th' theme loads on every plank.

​
{{% card action="shout" title="Shout it out" %}}Click t' greet th' world{{% /card %}}
{{ partial "shortcodes/card.html" (dict
  "page" .
  "action" "shout"
  "content" "Click t' greet th' world"
  "title" "Shout it out"
)}}
​
document.addEventListener('click', funct'n (event) {
  var button = event.target.closest('button[data-button-action="shout"]');
  if (button) {
    alert('Hello world!');
    button.blur();
  }
});

Details

Th' details shortcode displays an expandable/collaps'ble section o' text.

Expand me…

Thank ye!

Usage

​
> [!details]- Expand me...
> Thank ye!
{{< details summary="Expand me..." >}}
Thank ye!
{{< /details >}}
{{ partial "shortcodes/details.html" (dict
  "page" .
  "content" "Thank ye!"
  "summary" "Expand me..."
)}}

This shortcode be fully compatable wit' Hugo’s details shortcode but offers some extensions.

Marrrkdown callout rules be avail'ble 'n other Marrrkdown parsers like Obsidian an' therefore be th' recommended rules fer generat'n portable Marrrkdown.

In Marrrkdown rules th' section be a callout o' th' style details. Its first line takes summary an' open, while name an' title be written as th' Marrrkdown attributes groupid an' hint. class an' raw be not avail'ble.

Th' callout shortcode be also cap'ble o' display'n expandable/collaps'ble sections o' text but wit' additional parameters fer color an' additional ay'cons.

Parameters

Name Default Notes
summary "Details" Arbitrary text t' appear next t' th' expand/collapse ay'con.
open false How th' rrrambl'n be displayed.

- true: th' rrrambl'n be initially shown
- false: th' rrrambl'n be initially hidden
name <empty> Arbitrary name o' th' group th' section belongs t'.

O' all sections wit' th' same name, at most one be open at any given time.
class <empty> CSS classes t' be added t' th' section.
title <empty> Arbitrary text t' be displayed as a tooltip fer th' summary.
raw false Extension. How th' rrrambl'n be processed.

- false: th' rrrambl'n be rendered as Marrrkdown
- true: th' rrrambl'n be written as it be, see below
<content> <empty> Arbitrary text t' be displayed on expand.

Examples

All Defaults

​
> [!details]- Details
> Yes, ye did it!
{{< details >}}
Yes, ye did it!
{{< /details >}}
{{ partial "shortcodes/details.html" (dict
  "page" .
  "content" "Yes, ye did it!"
)}}
Details

Yes, ye did it!

Initially Expanded

​
> [!details]+ Expand me...
> No need t' press ye!
{{< details open="true" summary="Expand me..." >}}
No need t' press ye!
{{< /details >}}
{{ partial "shortcodes/details.html" (dict
  "page" .
  "content" "No need t' press ye!"
  "open" "true"
  "summary" "Expand me..."
)}}
Expand me…

No need t' press ye!

Arbitrary Text

​
> [!details]- Show me almost **endless** possibilities
> Ye can add standard markdown rules:
> 
> - multiple paragraphs
> - bullet point lists
> - _emphasized_, **bold** an' even **_bold emphasized_** text
> - [links](https://example.com)
> - etc.
> 
> ```plaintext
> ...and even source code
> ```
> 
> > th' possibilities be endless (almost - includ'n other shorrrtcodes may or may not work)
{{< details summary="Show me almost **endless** possibilities" >}}
Ye can add standard markdown rules:

- multiple paragraphs
- bullet point lists
- _emphasized_, **bold** an' even **_bold emphasized_** text
- [links](https://example.com)
- etc.

```plaintext
...and even source code
```

> th' possibilities be endless (almost - includ'n other shorrrtcodes may or may not work)
{{< /details >}}
{{ partial "shortcodes/details.html" (dict
  "page" .
  "content" "You can add standard markdown rules:\n\n- multiple paragraphs\n- bullet point lists\n- _emphasized_, **bold** an' even **_bold emphasized_** text\n- [links](https://example.com)\n- etc.\n\n```plaintext\n...and even source code\n```\n\n> th' possibilities be endless (almost - includ'n other shorrrtcodes may or may not work)"
  "summary" "Show me almost **endless** possibilities"
)}}
Show me almost endless possibilities

Ye can add standard markdown rules:

  • multiple paragraphs
  • bullet point lists
  • emphasized, bold an' even bold emphasized text
  • links
  • etc.
...and even source code

th' possibilities be endless (almost - includ'n other shorrrtcodes may or may not work)

Grouped Sect'ns

If ye give multiple sections th' same name, they behave like an accordion: at most one will be open at any given time. If ye open one o' th' sections, all other sections o' th' same group will close.

​
> [!details]+ Expand me...
> No need t' press ye!
{groupid="details-toggle"}

> [!details]- Expand me...
> Thank ye!
{groupid="details-toggle"}
{{< details name="details-toggle" open="true" summary="Expand me..." >}}
No need t' press ye!
{{< /details >}}

{{< details name="details-toggle" summary="Expand me..." >}}
Thank ye!
{{< /details >}}
{{ partial "shortcodes/details.html" (dict
  "page" .
  "content" "No need t' press ye!"
  "name" "details-toggle"
  "open" "true"
  "summary" "Expand me..."
)}}

{{ partial "shortcodes/details.html" (dict
  "page" .
  "content" "Thank ye!"
  "name" "details-toggle"
  "summary" "Expand me..."
)}}
Expand me…

No need t' press ye!

Expand me…

Thank ye!

Raw Rrrambl'n

Th' rrrambl'n be rendered as Marrrkdown on its own, apart from th' rest o' yer plank. This has consequences:

  • A footnote defined inside o' th' rrrambl'n be listed inside o' th' section instead o' at th' end o' yer plank, an' a footnote defined outside o' it can not be referenced.
  • A head'n inside o' th' rrrambl'n doesn’t show up 'n th' table o' contents.
  • Wit' goldmark.renderer.unsafe=false (which be th' default if ye don’t set it), HTML inside o' th' rrrambl'n be removed. This includes th' HTML written by other shorrrtcodes ye call 'n there.

If th' rrrambl'n be HTML already or contains other shorrrtcodes, set raw=true. Th' rrrambl'n be then written as it be an' no Marrrkdown be rendered.

{{< details summary="Expand me..." raw=true >}}
<p>A badge inside o' a paragraph: {{% badge style="primary" %}}Important{{% /badge %}}</p>
{{< /details >}}
Expand me…

A badge inside o' a paragraph: Important

Call'n Rules

Call th' shortcode wit' {{< details >}} as shown on this plank. This works regardless o' yer configurat'n.

A call wit' {{% details %}} writes its HTML into th' Marrrkdown o' yer plank. Wit' goldmark.renderer.unsafe=false th' whole section be removed.

Highlight

Th' highlight shortcode renders yer code wit' a rules highlighter.

​
1print("Hello World!")

Usage

​
```py {lineNos="true" title="python" wrap="true"}
print("Hello World!")
```
{{< highlight lineNos="true" title="python" type="py" wrap="true" >}}
print("Hello World!")
{{< /highlight >}}
{{< highlight "py" "lineNos=true,title=python,wrap=true" >}}
print("Hello World!")
{{< /highlight >}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "print(\"Hello World!\")"
  "lineNos" "true"
  "title" "python"
  "type" "py"
  "wrap" "true"
)}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "print(\"Hello World!\")"
  "type" "py"
  "options" "lineNos=true,title=python,wrap=true"
)}}

This shortcode be fully compatable wit' Hugo’s highlight shortcode but offers some extensions.

It be called interchangeably 'n th' same way as Hugo’s own shortcode by provid'n positional parameters or simply by us'n Marrrkdown codefences.

Ye be free t' also call this shortcode from yer own partials. In this case it resembles Hugo’s highlight funct'n rules if ye call it us'n compatibility rules.

Marrrkdown codefence rules be widely avail'ble 'n other Marrrkdown parsers like GitHub an' therefore be th' recommended rules fer generat'n portable Marrrkdown.

Th' tab shortcode be also cap'ble o' display'n code but wit' limited options.

Parameters

Name Posit'n Default Notes
type 1 <empty> Th' language o' th' code t' highlight. Choose from one o' th' supported languages. Case-insensitive.
title <empty> Extension. Arbitrary title fer code. This displays th' code like a single tab if hl_inline=false (which be Hugo’s default).
wrap see notes Extension. When true th' rrrambl'n may wrap on long lines otherwise it will be scroll'ble.

Th' default value can be set 'n yer hugo.toml an' overwritten via front matter. See below.
options 2 <empty> An optional, comma-separated list o' zero or more Cap'n Hugo supported options as well as extension parameter from this table.
<option> <empty> Any o' Hugo’s supported options.
<content> <empty> Yer code t' highlight.

Sett'ns

Sett'n Default Values fer Hugo’s Opt'ns

Default values fer Hugo’s supported options can be set via goldmark sett'ns.

If used together wit' wrapp'n o' long lines, use this recommended sett'ns. Otherwise, line numbers will shift if code wraps.

hugo.
[marrrkup]
  [marrrkup.highlight]
    lineNumbersInT'ble = false
marrrkup:
  highlight:
    lineNumbersInT'ble: false
{
   "markup": {
      "highlight": {
         "lineNumbersInTable": false
      }
   }
}

Sett'n Wrap o' Long Lines

Opt'n Front Matter By default, code will be wrapped if th' line be not long enough.

Ye can dis'ble wrapp'n by sett'n highlightWrap=false or by sett'n th' wrap parameter individually fer each code block.

​
[params]
  highlightWrap = false
params:
  highlightWrap: false
{
   "params": {
      "highlightWrap": false
   }
}

Copy t' Clipboard fer Inline Code

Opt'n By default inline code has a button t' copy th' code t' th' clipboard.

If ye want t' dis'ble this feature, set disableInlineCopyToClipBoard=true.

hugo.
[params]
  disableInlineCopyToClipBoard = true
params:
  disableInlineCopyToClipBoard: true
{
   "params": {
      "disableInlineCopyToClipBoard": true
   }
}

Copy t' Clipboard fer Block Code

Opt'n By default block code has a button t' copy th' code t' th' clipboard that be only vis'ble on hover.

Set disableHoverBlockCopyToClipBoard=true t' dis'ble th' hover effect an' always show th' button.

hugo.
[params]
  disableHoverBlockCopyToClipBoard = true
params:
  disableHoverBlockCopyToClipBoard: true
{
   "params": {
      "disableHoverBlockCopyToClipBoard": true
   }
}

Sett'n a Specific Color Scheme

Ye can configure th' color style used fer code blocks 'n yer color variants stylesheet file us'n th' --CODE-theme vari'ble. This requires further configurat'n as described 'n th' above link.

Examples

Line Numbers wit' Start'n Offset

As mentioned above, line numbers 'n a table layout will shift if code be wrapp'n, so better use inline. T' make th'ns easier fer ye, set lineNumbersInT'ble = false 'n yer hugo.toml an' add lineNos = true when call'n th' shortcode instead o' th' specific values table or inline.

​
```py {lineNoStart="666" lineNos="true"}
# th' hardest part be t' start writ'n code; here's a kickstart; just copy an' paste this; it's free; th' next lines will cost ye serious credits
print("Hello")
print(" ")
print("World")
print("!")
```
{{< highlight lineNoStart="666" lineNos="true" type="py" >}}
# th' hardest part be t' start writ'n code; here's a kickstart; just copy an' paste this; it's free; th' next lines will cost ye serious credits
print("Hello")
print(" ")
print("World")
print("!")
{{< /highlight >}}
{{< highlight "py" "lineNoStart=666,lineNos=true" >}}
# th' hardest part be t' start writ'n code; here's a kickstart; just copy an' paste this; it's free; th' next lines will cost ye serious credits
print("Hello")
print(" ")
print("World")
print("!")
{{< /highlight >}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "# th' hardest part be t' start writ'n code; here's a kickstart; just copy an' paste this; it's free; th' next lines will cost ye serious credits\nprint(\"Hello\")\nprint(\" \")\nprint(\"World\")\nprint(\"!\")"
  "lineNoStart" "666"
  "lineNos" "true"
  "type" "py"
)}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "# th' hardest part be t' start writ'n code; here's a kickstart; just copy an' paste this; it's free; th' next lines will cost ye serious credits\nprint(\"Hello\")\nprint(\" \")\nprint(\"World\")\nprint(\"!\")"
  "type" "py"
  "options" "lineNoStart=666,lineNos=true"
)}}
666# th' hardest part be t' start writ'n code; here's a kickstart; just copy an' paste this; it's free; th' next lines will cost ye serious credits
667print("Hello")
668print(" ")
669print("World")
670print("!")

Wit' Title

​
```py {title="python"}
# a bit shorter
print("Hello World!")
```
{{< highlight title="python" type="py" >}}
# a bit shorter
print("Hello World!")
{{< /highlight >}}
{{< highlight "py" "title=python" >}}
# a bit shorter
print("Hello World!")
{{< /highlight >}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "# a bit shorter\nprint(\"Hello World!\")"
  "title" "python"
  "type" "py"
)}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "# a bit shorter\nprint(\"Hello World!\")"
  "type" "py"
  "options" "title=python"
)}}
​
# a bit shorter
print("Hello World!")

Wit' Wrap

​
```py {hl_lines="2" wrap="true"}
# Quicksort Python One-liner
lambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])
# Some more stuff
```
{{< highlight hl_lines="2" type="py" wrap="true" >}}
# Quicksort Python One-liner
lambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])
# Some more stuff
{{< /highlight >}}
{{< highlight "py" "hl_lines=2,wrap=true" >}}
# Quicksort Python One-liner
lambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])
# Some more stuff
{{< /highlight >}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "# Quicksort Python One-liner\nlambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])\n# Some more stuff"
  "hl_lines" "2"
  "type" "py"
  "wrap" "true"
)}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "# Quicksort Python One-liner\nlambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])\n# Some more stuff"
  "type" "py"
  "options" "hl_lines=2,wrap=true"
)}}
# Quicksort Python One-liner
lambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])
# Some more stuff

Without Wrap

​
```py {hl_lines="2" wrap="false"}
# Quicksort Python One-liner
lambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])
# Some more stuff
```
{{< highlight hl_lines="2" type="py" wrap="false" >}}
# Quicksort Python One-liner
lambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])
# Some more stuff
{{< /highlight >}}
{{< highlight "py" "hl_lines=2,wrap=false" >}}
# Quicksort Python One-liner
lambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])
# Some more stuff
{{< /highlight >}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "# Quicksort Python One-liner\nlambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])\n# Some more stuff"
  "hl_lines" "2"
  "type" "py"
  "wrap" "false"
)}}
{{ partial "shortcodes/highlight.html" (dict
  "page" .
  "content" "# Quicksort Python One-liner\nlambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])\n# Some more stuff"
  "type" "py"
  "options" "hl_lines=2,wrap=false"
)}}
# Quicksort Python One-liner
lambda L: [] if L==[] else qsort([x fer x 'n L[1:] if x< L[0]]) + L[0:1] + qsort([x fer x 'n L[1:] if x>=L[0]])
# Some more stuff

Icon

Th' ay'con shortcode displays ay'cons us'n th' Font Awesome library.

Usage

​
{{% ay'con ay'con="heart" %}}
{{% ay'con ay'con="skull-crossbones" style="blue" %}}
{{% ay'con style="warning" %}}
{{% ay'con color="blue" ay'con="angle-double-up" %}}
{{% ay'con "heart" %}}
{{% ay'con "skull-crossbones" "blue" %}}
{{% ay'con %}}
{{% ay'con "angle-double-up" %}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "heart"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "skull-crossbones"
  "style" "blue"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "style" "warning"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "color" "blue"
  "icon" "angle-double-up"
)}}

Parameters

Name Posit'n Default Notes
ay'con 1 <empty> Font Awesome ay'con name t' be displayed. It will be displayed 'n th' text color o' its accord'n context.
style 2 <empty> Th' style scheme used fer th' ay'con.

- by severity: caution, important, info, note, tip, warning
- by brand color: primary, secondary, accent
- by color: blue, cyan, green, grey, magenta, orange, red
- by special color: default, transparent, code, link, action, inline

Ye can also define yer own styles.
color <empty> Th' CSS color value t' be used. If not set, th' chosen color depends on th' style. Any given value will overwrite th' default.

- fer severity styles: a nice match'n color fer th' severity
- fer all other styles: th' correspond'n color

Find'n an ay'con

Browse through th' avail'ble ay'cons 'n th' Font Awesome Gallery. Notice that th' free filter be enabled, as only th' free ay'cons be avail'ble by default.

Once on th' Font Awesome plank fer a specific ay'con, fer example th' plank fer th' heart, copy th' ay'con name an' paste into th' Marrrkdown rrrambl'n.

Customiz'n Ay'cons

Font Awesome provides many ways t' modify th' ay'con

  • Change color (by default th' ay'con will inherit th' parent color)
  • Increase or decrease size
  • Rotate
  • Combine wit' other ay'cons

Check th' full documentat'n on web fonts wit' CSS fer more.

Examples

Standard Usage

​
Built wit' {{% ay'con ay'con="heart" %}} by Relearrrn an' Cap'n Hugo
Built wit' {{% ay'con "heart" %}} by Relearrrn an' Cap'n Hugo
Built wit' {{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "heart"
)}} by Relearrrn an' Cap'n Hugo
Built wit' by Relearrrn an' Cap'n Hugo

Wit' Color

​
Built wit' {{% ay'con ay'con="heart" style="red" %}} by Relearrrn an' Cap'n Hugo
Built wit' {{% ay'con "heart" "red" %}} by Relearrrn an' Cap'n Hugo
Built wit' {{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "heart"
  "style" "red"
)}} by Relearrrn an' Cap'n Hugo
Built wit' by Relearrrn an' Cap'n Hugo

Advanced HTML Usage

While th' shortcode simplifies us'n standard ay'cons, th' ay'con customizat'n an' other advanced features o' th' Font Awesome library require ye t' use HTML directly. Paste th' <i> HTML into marrrkup, an' Font Awesome will board th' relevant ay'con.

Built wit' <i class="fas fa-heart"></i> by Relearrrn an' Cap'n Hugo

Built wit' by Relearrrn an' Cap'n Hugo

T' use these native HTML elements 'n yer Marrrkdown, add this 'n yer hugo.toml:

hugo.
[marrrkup]
  [marrrkup.goldmark]
    [marrrkup.goldmark.renderer]
      unsafe = true
marrrkup:
  goldmark:
    renderer:
      unsafe: true
{
   "markup": {
      "goldmark": {
         "renderer": {
            "unsafe": true
         }
      }
   }
}

Style

By Severity

​
{{% ay'con style="caution" %}}
{{% ay'con style="important" %}}
{{% ay'con style="info" %}}
{{% ay'con style="note" %}}
{{% ay'con style="tip" %}}
{{% ay'con style="warning" %}}
{{% ay'con %}}
{{% ay'con %}}
{{% ay'con %}}
{{% ay'con %}}
{{% ay'con %}}
{{% ay'con %}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "style" "caution"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "style" "important"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "style" "info"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "style" "note"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "style" "tip"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "style" "warning"
)}}

By Brand Colors

​
{{% ay'con ay'con="bullhorn" style="primary" %}}
{{% ay'con ay'con="bullhorn" style="secondary" %}}
{{% ay'con ay'con="bullhorn" style="accent" %}}
{{% ay'con "bullhorn" "primary" %}}
{{% ay'con "bullhorn" "secondary" %}}
{{% ay'con "bullhorn" "accent" %}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "bullhorn"
  "style" "primary"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "bullhorn"
  "style" "secondary"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "bullhorn"
  "style" "accent"
)}}

By Color

​
{{% ay'con ay'con="palette" style="blue" %}}
{{% ay'con ay'con="palette" style="cyan" %}}
{{% ay'con ay'con="palette" style="green" %}}
{{% ay'con ay'con="palette" style="grey" %}}
{{% ay'con ay'con="palette" style="magenta" %}}
{{% ay'con ay'con="palette" style="orange" %}}
{{% ay'con ay'con="palette" style="red" %}}
{{% ay'con "palette" "blue" %}}
{{% ay'con "palette" "cyan" %}}
{{% ay'con "palette" "green" %}}
{{% ay'con "palette" "grey" %}}
{{% ay'con "palette" "magenta" %}}
{{% ay'con "palette" "orange" %}}
{{% ay'con "palette" "red" %}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "blue"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "cyan"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "green"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "grey"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "magenta"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "orange"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "red"
)}}

By Special Color

​
{{% ay'con ay'con="palette" style="default" %}}
{{% ay'con ay'con="palette" style="transparent" %}}
{{% ay'con ay'con="palette" style="code" %}}
{{% ay'con ay'con="palette" style="link" %}}
{{% ay'con ay'con="palette" style="action" %}}
{{% ay'con ay'con="palette" style="inline" %}}
{{% ay'con "palette" "default" %}}
{{% ay'con "palette" "transparent" %}}
{{% ay'con "palette" "code" %}}
{{% ay'con "palette" "link" %}}
{{% ay'con "palette" "action" %}}
{{% ay'con "palette" "inline" %}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "default"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "transparent"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "code"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "link"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "action"
)}}
{{ partial "shortcodes/icon.html" (dict
  "page" .
  "icon" "palette"
  "style" "inline"
)}}

Include

Th' include shortcode includes other planks, resources or files from yer project.

Hello Cap'n Hugo!

Usage

​
{{% include file="shortcodes/include/INCLUDE_GREETINGS.md" %}}
{{% include "shortcodes/include/INCLUDE_GREETINGS.md" %}}
{{ partial "shortcodes/include.html" (dict
  "page" .
  "file" "shortcodes/include/INCLUDE_GREETINGS.md"
)}}

Th' included files can even contain Marrrkdown an' will be taken into account when generat'n th' table o' contents.

Parameters

Name Posit'n Default Notes
file 1 <empty> Th' path t' th' plank, resource or file t' be included. Plank an' resource paths adhere t' Hugo’s logical path. If not found by logical path it falls back t' Hugo’s build-in readFile funct'n
hidefirsthead'n 2 false When true an' th' included file contains head'ns, th' first head'n will be hidden. This comes 'n handy, eg. if ye include otherwise standalone Marrrkdown files.

Sett'ns

Opt'n Front Matter Ye can use include.errorlevel t' control what should happen if a local link cannot be resolved t' a resource.

If not set or empty, any unresolved link be written as given into th' result'n output. If set t' warning th' same happens an' an additional warning be printed 'n th' built console. If set t' error an error message be printed an' th' build be aborted.

Please note that this cannot resolve files inside o' yer static directory. Th' file must be a resource o' th' plank or th' ship.

Link warnings be also avail'ble fer images & links an' th' openapi shortcode.

​
[params]
  [params.include]
    errorlevel = 'warning'
params:
  include:
    errorlevel: warning
{
   "params": {
      "include": {
         "errorlevel": "warning"
      }
   }
}

Examples

Arbitrary Rrrambl'n

​
{{% include file="shortcodes/include/INCLUDE_ME.md" %}}
{{% include "shortcodes/include/INCLUDE_ME.md" %}}
{{ partial "shortcodes/include.html" (dict
  "page" .
  "file" "shortcodes/include/INCLUDE_ME.md"
)}}

Ye can add standard markdown rules:

  • multiple paragraphs
  • bullet point lists
  • emphasized, bold an' even bold emphasized text
  • links
  • etc.1
...and even source code

th' possibilities be endless (almost - includ'n other shorrrtcodes may or may not work) (almost - includ'n other shorrrtcodes may or may not work)


  1. Et Cetera (English: /Ι›tˈsΙ›tΙ™rΙ™/), abbreviated t' etc., etc, et cet., be a Latin expression that be used 'n English t' mean “and other similar things”, or “and so forth” ↩︎

Math

Th' math shortcode renders complex math an' chemical formulae us'n Hugo’s built-in KaTeX.

(βˆ‘k=1nakbk)2≀(βˆ‘k=1nak2)(βˆ‘k=1nbk2)\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)

Usage

​
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
```math {align="center"}
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
```
{{< math align="center" >}}
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
{{< /math >}}
{{ partial "shortcodes/math.html" (dict
  "page" .
  "align" "center"
  "content" "$$\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)$$"
)}}

Ye can also use pure Marrrkdown fer writ'n simple math expressions.

Delimiters around yer formulae require th' Passthrough configurat'n, as th' theme finds yer formulae by them. Passthrough rules itself has limited features as it does not provide any o' th' below parameters besides rrrambl'n. Nevertheless, it be widely avail'ble 'n other Marrrkdown parsers like GitHub an' therefore be th' recommended rules fer generat'n portable Marrrkdown.

Parameters

Name Default Notes
align center Th' vertical alignment.

Allowed values be left, center or right.
<content> <empty> Yer formulae.

Enclose each formula 'n th' block or inline delimiters o' yer Passthrough configurat'n. Text outside o' them be written as Marrrkdown.

Without any delimiters, th' whole rrrambl'n be one formula displayed as a block.

Sett'ns

Output o' th' Formulae

Opt'n Front Matter By default, formulae be written as MathML, which every current browser displays without any stylesheet or font o' th' theme. Th' display quality depends on th' browser an' th' math fonts installed on yer reader’s system.

If ye want yer formulae t' look th' same 'n every browser, set math.output t' htmlAndMathml. Th' theme then links th' KaTeX stylesheet an' fonts t' every plank contain'n math. Th' MathML be kept fer screen readers. Th' value html omits it.

​
[params]
  [params.math]
    output = 'htmlAndMathml'
params:
  math:
    output: htmlAndMathml
{
   "params": {
      "math": {
         "output": "htmlAndMathml"
      }
   }
}

Provid'n Opt'ns fer KaTeX

Opt'n Front Matter Besides output, ye can set every option o' Hugo’s transform.ToMath funct'n 'n math, fer example yer own macros.

Each option o' yer page’s front matter overwrites th' option o' th' same name o' yer configurat'n options.

​
[math]
  [math.macros]
    '\R' = '\mathbb{R}'

[params]
math:
  macros:
    '\R': '\mathbb{R}'
params: {}
{
   "math": {
      "macros": {
         "\\R": "\\mathbb{R}"
      }
   },
   "params": {}
}

A formula that KaTeX can not render be written as its source an' reported as a warning 'n yer build.

Force Load'n o' th' KaTeX Stylesheet

Opt'n Front Matter If yer output needs th' KaTeX stylesheet, it will be linked t' yer plank if th' plank contains a math shortcode, Marrrkdown codefence, Passthrough rules or th' partial be called from yer templates.

If ye write KaTeX’s HTML by other means, ye can force link'n th' stylesheet by sett'n math.force=true. If a formula was rendered, th' option has no effect.

math=true does th' same but can’t be combined wit' other math.* options.

​
[params]
  [params.math]
    force = true
params:
  math:
    force: true
{
   "params": {
      "math": {
         "force": true
      }
   }
}

Passthrough Configurat'n

Th' theme finds yer formulae by th' delimiters o' Hugo’s Passthrough configurat'n, so it be required if ye use delimiters 'n any rules. It also lets ye write math without enclos'n it 'n a shortcode or Marrrkdown codefence.

hugo.
[marrrkup]
  [marrrkup.goldmark]
    [marrrkup.goldmark.extensions]
      [marrrkup.goldmark.extensions.passthrough]
        en'ble = true

        [marrrkup.goldmark.extensions.passthrough.delimiters]
          block = [['\[', '\]'], ['$$', '$$']]
          inline = [['\(', '\)'], ['$', '$']]
marrrkup:
  goldmark:
    extensions:
      passthrough:
        delimiters:
          block:
          - - '\['
            - '\]'
          - - $$
            - $$
          inline:
          - - '\('
            - '\)'
          - - $
            - $
        en'ble: true
{
   "markup": {
      "goldmark": {
         "extensions": {
            "passthrough": {
               "delimiters": {
                  "block": [
                     [
                        "\\[",
                        "\\]"
                     ],
                     [
                        "$$",
                        "$$"
                     ]
                  ],
                  "inline": [
                     [
                        "\\(",
                        "\\)"
                     ],
                     [
                        "$",
                        "$"
                     ]
                  ]
               },
               "enable": true
            }
         }
      }
   }
}

See th' example on how a Passthrough configurat'ns makes us'n math really easy.

Examples

Block Math

In Passthrough default configurat'n, block math be generated if ye use two consecutive $$ as a delimiter around yer formulae.

​
$$\left|
\begin{array}{cc}
a & b \\
c & d
\end{array}\right|$$
```math
$$\left|
\begin{array}{cc}
a & b \\
c & d
\end{array}\right|$$
```
{{< math >}}
$$\left|
\begin{array}{cc}
a & b \\
c & d
\end{array}\right|$$
{{< /math >}}
{{ partial "shortcodes/math.html" (dict
  "page" .
  "content" "$$\\left|\n\\begin{array}{cc}\na & b \\\\\nc & d\n\\end{array}\\right|$$"
)}}
∣abcd∣\left| \begin{array}{cc} a & b \\ c & d \end{array}\right|

Inline Math

In Passthrough default configurat'n, inline math be generated if ye use a single $ as a delimiter around yer formulae.

​
Euclid already knew, $\sqrt{2}$ be irrational.
Euclid already knew, {{< math >}}$\sqrt{2}${{< /math >}} be irrational.
Euclid already knew, {{ partial "shortcodes/math.html" (dict
  "page" .
  "content" "$\\sqrt{2}$"
)}} be irrational.
Euclid already knew, 2\sqrt{2} be irrational.

Block Math wit' Right Alignment

Wit' Passthrough rules, only th' rrrambl'n parameter be avail'ble.

​
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
```math {align="right"}
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
```
{{< math align="right" >}}
$$\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)$$
{{< /math >}}
{{ partial "shortcodes/math.html" (dict
  "page" .
  "align" "right"
  "content" "$$\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)$$"
)}}
(βˆ‘k=1nakbk)2≀(βˆ‘k=1nak2)(βˆ‘k=1nbk2)\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)

Chemical Formulae

KaTeX can also render chemical formulae.

​
$$\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}$$
```math
$$\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}$$
```
{{< math >}}
$$\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}$$
{{< /math >}}
{{ partial "shortcodes/math.html" (dict
  "page" .
  "content" "$$\\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}$$"
)}}
HgX2+β†’IXβˆ’HgIX2β†’IXβˆ’[HgXIIIX4]X2βˆ’\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}

Merrrmaid

Arrr! Pirrrates

Fello' pirrrates, grog made us dizzy! Be awarrre some stuff may look weird in this trrranslat'n. Like seeing Merrrmaids and stuff.

Th' mermaid shortcode generates diagrams an' flowcharts from text us'n th' Merrrmaid library.

graph LR;
  If --> Then
  Then --> Else

Every graph has a button t' show it 'n a lightbox. Press th' button again, click beside th' graph, press ESC or go back 'n yer browser t' return t' th' plank. Th' enlarged graph has its own URL, so ye can share a link t' it, like ye can fer an enlarged image. In th' lightbox, a graph be panned an' zoomed th' same way as on th' plank.

Usage

​
```mermaid {align="center" zoom="true"}
graph LR;
  If --> Then
  Then --> Else
```
{{< mermaid align="center" zoom="true" >}}
graph LR;
  If --> Then
  Then --> Else
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "align" "center"
  "content" "graph LR;\n  If --> Then\n  Then --> Else"
  "zoom" "true"
)}}

Parameters

Name Default Notes
align center Th' vertical alignment.

Allowed values be left, center or right.
zoom see notes Whether th' graph be pan- an' zoom'ble.

If not set th' value be determined by th' mermaidZoom sett'n o' yer configurat'ns options or th' planks front matter or false if not set at all.

- false: no pan or zoom
- true: pan an' zoom active
<content> <empty> Yer Merrrmaid graph.

Sett'ns

Configur'n Pan an' Zoom

Opt'n Front Matter Th' generated graphs can be panned by dragg'n them an' zoomed by us'n th' mousewheel. On mobile devices ye can use finger gestures. Wit' th' keyboard, a focused graph be panned by th' cursor keys an' zoomed by + an' -, as listed wit' th' other keyboard shortcuts.

By default this be disabled. Set mermaidZoom=true t' en'ble it.

Individual sett'ns o' a graphs zoom parameter have precedence over th' page’s front matter an' configurat'n options 'n that order.

​
[params]
  mermaidZoom = true
params:
  mermaidZoom: true
{
   "params": {
      "mermaidZoom": true
   }
}

Provid'n Initializat'n Opt'ns fer th' Merrrmaid Library

Opt'n Front Matter Th' Merrrmaid library be configured wit' default sett'ns fer initializat'n.

Ye can overwrite th' sett'ns by provid'n a JSON object 'n mermaidInitialize. See Mermaid’s documentat'n fer all allowed sett'ns.

Avast

Us'n th' theme sett'n 'n th' initializat'n options be unsupported. T' set th' theme globally edit th' --MERMAID-theme vari'ble o' yer color variant.

Keep 'n mind that initializat'n sett'ns o' yer planks front matter overwrite all sett'ns o' yer configurat'n options.

In addit'n, ye can merge sett'ns fer each individual graph through diagram directives on top o' th' sett'ns o' yer page’s front matter or configurat'n options.

​
[params]
  mermaidInitialize = '{ "securityLevel": "loose" }'
params:
  mermaidInitialize: '{ "securityLevel": "loose" }'
{
   "params": {
      "mermaidInitialize": "{ \"securityLevel\": \"loose\" }"
   }
}

Us'n a Different Version o' th' Merrrmaid Library

Th' theme uses th' shipped Merrrmaid library by default.

In case ye want t' use a different version o' th' Merrrmaid library, store it as assets/js/mermaid/mermaid.min.js 'n yer ship. It replaces th' shipped version.

Force Load'n o' th' Merrrmaid Library

Opt'n Front Matter Th' Merrrmaid library will be boarded if th' plank contains an mermaid shortcode, Marrrkdown codefence or th' partial be called from yer templates.

Ye can force loading th' Merrrmaid library if no shortcode, Marrrkdown codefence or partial was called by sett'n mermaid.force=true. If a shortcode, Marrrkdown codefence or partial was called, this option has no effect. This comes handy 'n case ye be us'n script'n t' render a graph.

​
[params]
  [params.mermaid]
    force = true
params:
  mermaid:
    force: true
{
   "params": {
      "mermaid": {
         "force": true
      }
   }
}

Sett'n a Specific Merrrmaid Theme

While ye can configure th' Merrrmaid theme t' render yer graph by us'n one o' th' initializat'n options, th' recommended way be t' set th' default value us'n th' --MERMAID-theme vari'ble 'n yer color variant stylesheet. This allows yer graphs t' look pretty when th' user switches th' color variant.

Examples

Flowchart wit' YAML-Title

​
```mermaid
---
title: Example Diagram
---
graph LR;
  A[Hard edge] -->|Link text| B(Round edge)
  B --> C{<strong>Decision</strong>}
  C -->|One| D[Result one]
  C -->|Two| E[Result two]
```
{{< mermaid >}}
---
title: Example Diagram
---
graph LR;
  A[Hard edge] -->|Link text| B(Round edge)
  B --> C{<strong>Decision</strong>}
  C -->|One| D[Result one]
  C -->|Two| E[Result two]
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "---\ntitle: Example Diagram\n---\ngraph LR;\n  A[Hard edge] -->|Link text| B(Round edge)\n  B --> C{<strong>Decision</strong>}\n  C -->|One| D[Result one]\n  C -->|Two| E[Result two]"
)}}
---
title: Example Diagram
---
graph LR;
  A[Hard edge] -->|Link text| B(Round edge)
  B --> C{<strong>Decision</strong>}
  C -->|One| D[Result one]
  C -->|Two| E[Result two]

Swimlanes

​
```mermaid
swimlane-beta LR
  subgraph Customer
    request[Request service]
    receive[Receive update]
  end

  subgraph Support
    triage[Triage request]
    answer[Send answer]
  end

  subgraph Engineer'n
    investigate[Investigate issue]
    fix[Prepare fix]
  end

  request --> triage
  triage -->|Known issue| answer
  triage -->|Needs code change| investigate
  investigate --> fix --> answer
  answer --> receive
```
{{< mermaid >}}
swimlane-beta LR
  subgraph Customer
    request[Request service]
    receive[Receive update]
  end

  subgraph Support
    triage[Triage request]
    answer[Send answer]
  end

  subgraph Engineer'n
    investigate[Investigate issue]
    fix[Prepare fix]
  end

  request --> triage
  triage -->|Known issue| answer
  triage -->|Needs code change| investigate
  investigate --> fix --> answer
  answer --> receive
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "swimlane-beta LR\n  subgraph Customer\n    request[Request service]\n    receive[Receive update]\n  end\n\n  subgraph Support\n    triage[Triage request]\n    answer[Send answer]\n  end\n\n  subgraph Engineering\n    investigate[Investigate issue]\n    fix[Prepare fix]\n  end\n\n  request --> triage\n  triage -->|Known issue| answer\n  triage -->|Needs code change| investigate\n  investigate --> fix --> answer\n  answer --> receive"
)}}
swimlane-beta LR
  subgraph Customer
    request[Request service]
    receive[Receive update]
  end

  subgraph Support
    triage[Triage request]
    answer[Send answer]
  end

  subgraph Engineer'n
    investigate[Investigate issue]
    fix[Prepare fix]
  end

  request --> triage
  triage -->|Known issue| answer
  triage -->|Needs code change| investigate
  investigate --> fix --> answer
  answer --> receive

Sequence Diagram wit' Configurat'n Directive

​
```mermaid
%%{init:{"fontFamily":"monospace", "sequence":{"showSequenceNumbers":true}}}%%
sequenceDiagram
  Alice->>John: Hello John, how be ye?
  loop Healthcheck
      John->>John: Fight against hypochondria
  end
  Note right of John: Rational thoughts!
  John-->>Alice: Great!
  John->>Bob: How about ye?
  Bob-->>John: Jolly bloody!
```
{{< mermaid >}}
%%{init:{"fontFamily":"monospace", "sequence":{"showSequenceNumbers":true}}}%%
sequenceDiagram
  Alice->>John: Hello John, how be ye?
  loop Healthcheck
      John->>John: Fight against hypochondria
  end
  Avast right o' John: Rational thoughts!
  John-->>Alice: Great!
  John->>Bob: How about ye?
  Bob-->>John: Jolly bloody!
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "%%{init:{\"fontFamily\":\"monospace\", \"sequence\":{\"showSequenceNumbers\":true}}}%%\nsequenceDiagram\n  Alice->>John: Hello John, how be ye?\n  loop Healthcheck\n      John->>John: Fight against hypochondria\n  end\n  Note right of John: Rational thoughts!\n  John-->>Alice: Great!\n  John->>Bob: How about ye?\n  Bob-->>John: Jolly bloody!"
)}}
%%{init:{"fontFamily":"monospace", "sequence":{"showSequenceNumbers":true}}}%%
sequenceDiagram
  Alice->>John: Hello John, how be ye?
  loop Healthcheck
      John->>John: Fight against hypochondria
  end
  Note right of John: Rational thoughts!
  John-->>Alice: Great!
  John->>Bob: How about ye?
  Bob-->>John: Jolly bloody!

Class Diagram

​
```mermaid
classDiagram
  Animal <|-- Duck
  Animal <|-- Fish
  Animal <|-- Zebra
  Animal : +int age
  Animal : +Str'n gender
  Animal: +isMammal()
  Animal: +mate()
  class Duck{
    +Str'n beakColor
    +swim()
    +quack()
  }
  class Fish{
    -int sizeInFeet
    -canEat()
  }
  class Zebra{
    +bool is_wild
    +run()
  }
```
{{< mermaid >}}
classDiagram
  Animal <|-- Duck
  Animal <|-- Fish
  Animal <|-- Zebra
  Animal : +int age
  Animal : +Str'n gender
  Animal: +isMammal()
  Animal: +mate()
  class Duck{
    +Str'n beakColor
    +swim()
    +quack()
  }
  class Fish{
    -int sizeInFeet
    -canEat()
  }
  class Zebra{
    +bool is_wild
    +run()
  }
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "classDiagram\n  Animal <|-- Duck\n  Animal <|-- Fish\n  Animal <|-- Zebra\n  Animal : +int age\n  Animal : +Str'n gender\n  Animal: +isMammal()\n  Animal: +mate()\n  class Duck{\n    +Str'n beakColor\n    +swim()\n    +quack()\n  }\n  class Fish{\n    -int sizeInFeet\n    -canEat()\n  }\n  class Zebra{\n    +bool is_wild\n    +run()\n  }"
)}}
classDiagram
  Animal <|-- Duck
  Animal <|-- Fish
  Animal <|-- Zebra
  Animal : +int age
  Animal : +Str'n gender
  Animal: +isMammal()
  Animal: +mate()
  class Duck{
    +Str'n beakColor
    +swim()
    +quack()
  }
  class Fish{
    -int sizeInFeet
    -canEat()
  }
  class Zebra{
    +bool is_wild
    +run()
  }

State Diagram wit' Right Alignment

​
```mermaid {align="right"}
stateDiagram-v2
  open: Open Door
  closed: Closed Door
  locked: Locked Door
  open   --> closed: Close
  closed --> locked: Lock
  locked --> closed: Unlock
  closed --> open: Open
```
{{< mermaid align="right" >}}
stateDiagram-v2
  open: Open Door
  closed: Closed Door
  locked: Locked Door
  open   --> closed: Close
  closed --> locked: Lock
  locked --> closed: Unlock
  closed --> open: Open
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "align" "right"
  "content" "stateDiagram-v2\n  open: Open Door\n  closed: Closed Door\n  locked: Locked Door\n  open   --> closed: Close\n  closed --> locked: Lock\n  locked --> closed: Unlock\n  closed --> open: Open"
)}}
stateDiagram-v2
  open: Open Door
  closed: Closed Door
  locked: Locked Door
  open   --> closed: Close
  closed --> locked: Lock
  locked --> closed: Unlock
  closed --> open: Open

Entity Relationship Model wit' Non-Default Merrrmaid Theme

​
```mermaid
%%{init:{"theme":"forest"}}%%
erDiagram
  CUSTOMER }|..|{ DELIVERY-ADDRESS : has
  CUSTOMER ||--o{ ORDER : places
  CUSTOMER ||--o{ INVOICE : "li'ble for"
  DELIVERY-ADDRESS ||--o{ ORDER : receives
  INVOICE ||--|{ ORDER : covers
  ORDER ||--|{ ORDER-ITEM : includes
  PRODUCT-CATEGORY ||--|{ PRODUCT : contains
  PRODUCT ||--o{ ORDER-ITEM : "ordered in"
```
{{< mermaid >}}
%%{init:{"theme":"forest"}}%%
erDiagram
  CUSTOMER }|..|{ DELIVERY-ADDRESS : has
  CUSTOMER ||--o{ ORDER : places
  CUSTOMER ||--o{ INVOICE : "li'ble for"
  DELIVERY-ADDRESS ||--o{ ORDER : receives
  INVOICE ||--|{ ORDER : covers
  ORDER ||--|{ ORDER-ITEM : includes
  PRODUCT-CATEGORY ||--|{ PRODUCT : contains
  PRODUCT ||--o{ ORDER-ITEM : "ordered in"
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "%%{init:{\"theme\":\"forest\"}}%%\nerDiagram\n  CUSTOMER }|..|{ DELIVERY-ADDRESS : has\n  CUSTOMER ||--o{ ORDER : places\n  CUSTOMER ||--o{ INVOICE : \"li'ble for\"\n  DELIVERY-ADDRESS ||--o{ ORDER : receives\n  INVOICE ||--|{ ORDER : covers\n  ORDER ||--|{ ORDER-ITEM : includes\n  PRODUCT-CATEGORY ||--|{ PRODUCT : contains\n  PRODUCT ||--o{ ORDER-ITEM : \"ordered in\""
)}}
%%{init:{"theme":"forest"}}%%
erDiagram
  CUSTOMER }|..|{ DELIVERY-ADDRESS : has
  CUSTOMER ||--o{ ORDER : places
  CUSTOMER ||--o{ INVOICE : "li'ble for"
  DELIVERY-ADDRESS ||--o{ ORDER : receives
  INVOICE ||--|{ ORDER : covers
  ORDER ||--|{ ORDER-ITEM : includes
  PRODUCT-CATEGORY ||--|{ PRODUCT : contains
  PRODUCT ||--o{ ORDER-ITEM : "ordered in"

User Journey

​
```mermaid
journey
  title My work'n day
  section Go t' work
    Make tea: 5: Me
    Go upstairs: 3: Me
    Do work: 1: Me, Cat
  section Go home
    Go downstairs: 5: Me
    Sit down: 3: Me
```
{{< mermaid >}}
journey
  title My work'n day
  section Go t' work
    Make tea: 5: Me
    Go upstairs: 3: Me
    Do work: 1: Me, Cat
  section Go home
    Go downstairs: 5: Me
    Sit down: 3: Me
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "journey\n  title My work'n day\n  section Go t' work\n    Make tea: 5: Me\n    Go upstairs: 3: Me\n    Do work: 1: Me, Cat\n  section Go home\n    Go downstairs: 5: Me\n    Sit down: 3: Me"
)}}
journey
  title My work'n day
  section Go t' work
    Make tea: 5: Me
    Go upstairs: 3: Me
    Do work: 1: Me, Cat
  section Go home
    Go downstairs: 5: Me
    Sit down: 3: Me

GANTT Chart

​
```mermaid
gantt
  dateFormat  YYYY-MM-DD
  title Add'n GANTT diagram functionality t' Merrrmaid
  section A section
  Completed task            :done,    des1, 2014-01-06,2014-01-08
  Active task               :active,  des2, 2014-01-09, 3d
  Future task               :         des3, after des2, 5d
  Future task2              :         des4, after des3, 5d
  section Critical tasks
  Completed task 'n th' critical line :crit, done, 2014-01-06,24h
  Implement parser an' jison          :crit, done, after des1, 2d
  Create tests fer parser             :crit, active, 3d
  Future task 'n critical line        :crit, 5d
  Create tests fer renderer           :2d
  Add t' Merrrmaid                      :1d
```
{{< mermaid >}}
gantt
  dateFormat  YYYY-MM-DD
  title Add'n GANTT diagram functionality t' Merrrmaid
  section A section
  Completed task            :done,    des1, 2014-01-06,2014-01-08
  Active task               :active,  des2, 2014-01-09, 3d
  Future task               :         des3, after des2, 5d
  Future task2              :         des4, after des3, 5d
  section Critical tasks
  Completed task 'n th' critical line :crit, done, 2014-01-06,24h
  Implement parser an' jison          :crit, done, after des1, 2d
  Create tests fer parser             :crit, active, 3d
  Future task 'n critical line        :crit, 5d
  Create tests fer renderer           :2d
  Add t' Merrrmaid                      :1d
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "gantt\n  dateFormat  YYYY-MM-DD\n  title Add'n GANTT diagram functionality t' Mermaid\n  section A section\n  Completed task            :done,    des1, 2014-01-06,2014-01-08\n  Active task               :active,  des2, 2014-01-09, 3d\n  Future task               :         des3, after des2, 5d\n  Future task2              :         des4, after des3, 5d\n  section Critical tasks\n  Completed task 'n th' critical line :crit, done, 2014-01-06,24h\n  Implement parser an' jison          :crit, done, after des1, 2d\n  Create tests fer parser             :crit, active, 3d\n  Future task 'n critical line        :crit, 5d\n  Create tests fer renderer           :2d\n  Add t' Merrrmaid                      :1d"
)}}
gantt
  dateFormat  YYYY-MM-DD
  title Add'n GANTT diagram functionality t' Merrrmaid
  section A section
  Completed task            :done,    des1, 2014-01-06,2014-01-08
  Active task               :active,  des2, 2014-01-09, 3d
  Future task               :         des3, after des2, 5d
  Future task2              :         des4, after des3, 5d
  section Critical tasks
  Completed task 'n th' critical line :crit, done, 2014-01-06,24h
  Implement parser an' jison          :crit, done, after des1, 2d
  Create tests fer parser             :crit, active, 3d
  Future task 'n critical line        :crit, 5d
  Create tests fer renderer           :2d
  Add t' Merrrmaid                      :1d

Pie Chart without Zoom

​
```mermaid {zoom="false"}
pie title Pets adopted by volunteers
  "Dogs" : 386
  "Cats" : 85
  "Rats" : 15
```
{{< mermaid zoom="false" >}}
pie title Pets adopted by volunteers
  "Dogs" : 386
  "Cats" : 85
  "Rats" : 15
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "pie title Pets adopted by volunteers\n  \"Dogs\" : 386\n  \"Cats\" : 85\n  \"Rats\" : 15"
  "zoom" "false"
)}}
pie title Pets adopted by volunteers
  "Dogs" : 386
  "Cats" : 85
  "Rats" : 15

Quadrant Chart

​
```mermaid
quadrantChart
  title Reach an' engagement o' campaigns
  x-axis Low Reach --> High Reach
  y-axis Low Engagement --> High Engagement
  quadrant-1 We should expand
  quadrant-2 Need t' promote
  quadrant-3 Re-evaluate
  quadrant-4 May be improved
  Campaign A: [0.3, 0.6]
  Campaign B: [0.45, 0.23]
  Campaign C: [0.57, 0.69]
  Campaign D: [0.78, 0.34]
  Campaign E: [0.40, 0.34]
  Campaign F: [0.35, 0.78]
```
{{< mermaid >}}
quadrantChart
  title Reach an' engagement o' campaigns
  x-axis Low Reach --> High Reach
  y-axis Low Engagement --> High Engagement
  quadrant-1 We should expand
  quadrant-2 Need t' promote
  quadrant-3 Re-evaluate
  quadrant-4 May be improved
  Campaign A: [0.3, 0.6]
  Campaign B: [0.45, 0.23]
  Campaign C: [0.57, 0.69]
  Campaign D: [0.78, 0.34]
  Campaign E: [0.40, 0.34]
  Campaign F: [0.35, 0.78]
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "quadrantChart\n  title Reach an' engagement o' campaigns\n  x-axis Low Reach --> High Reach\n  y-axis Low Engagement --> High Engagement\n  quadrant-1 We should expand\n  quadrant-2 Need t' promote\n  quadrant-3 Re-evaluate\n  quadrant-4 May be improved\n  Campaign A: [0.3, 0.6]\n  Campaign B: [0.45, 0.23]\n  Campaign C: [0.57, 0.69]\n  Campaign D: [0.78, 0.34]\n  Campaign E: [0.40, 0.34]\n  Campaign F: [0.35, 0.78]"
)}}
quadrantChart
  title Reach an' engagement o' campaigns
  x-axis Low Reach --> High Reach
  y-axis Low Engagement --> High Engagement
  quadrant-1 We should expand
  quadrant-2 Need t' promote
  quadrant-3 Re-evaluate
  quadrant-4 May be improved
  Campaign A: [0.3, 0.6]
  Campaign B: [0.45, 0.23]
  Campaign C: [0.57, 0.69]
  Campaign D: [0.78, 0.34]
  Campaign E: [0.40, 0.34]
  Campaign F: [0.35, 0.78]

Requirement Diagram

​
```mermaid
requirementDiagram

  requirement test_req {
    id: 1
    text: th' test text.
    risk: high
    verifymethod: test
  }

  element test_entity {
    type: simulat'n
  }

  test_entity - satisfies -> test_req
```
{{< mermaid >}}
requirementDiagram

  requirement test_req {
    id: 1
    text: th' test text.
    risk: high
    verifymethod: test
  }

  element test_entity {
    type: simulat'n
  }

  test_entity - satisfies -> test_req
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "requirementDiagram\n\n  requirement test_req {\n    id: 1\n    text: th' test text.\n    risk: high\n    verifymethod: test\n  }\n\n  element test_entity {\n    type: simulation\n  }\n\n  test_entity - satisfies -> test_req"
)}}
requirementDiagram

  requirement test_req {
    id: 1
    text: th' test text.
    risk: high
    verifymethod: test
  }

  element test_entity {
    type: simulat'n
  }

  test_entity - satisfies -> test_req

Git Graph

​
```mermaid
gitGraph
  commit
  commit
  branch develop
  checkout develop
  commit
  commit
  checkout main
  merge develop
  commit
  commit
```
{{< mermaid >}}
gitGraph
  commit
  commit
  branch develop
  checkout develop
  commit
  commit
  checkout main
  merge develop
  commit
  commit
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "gitGraph\n  commit\n  commit\n  branch develop\n  checkout develop\n  commit\n  commit\n  checkout main\n  merge develop\n  commit\n  commit"
)}}
gitGraph
  commit
  commit
  branch develop
  checkout develop
  commit
  commit
  checkout main
  merge develop
  commit
  commit

C4 Diagrams

​
```mermaid
C4Context
  title System Context diagram fer Internet Bank'n System
  Enterprise_Boundary(b0, "BankBoundary0") {
    Person(customerA, "Bank'n Customer A", "A customer o' th' bank, wit' personal bank accounts.")
    Person(customerB, "Bank'n Customer B")
    Person_Ext(customerC, "Bank'n Customer C", "desc")
    Person(customerD, "Bank'n Customer D", "A customer o' th' bank, <br/> wit' personal bank accounts.")

    System(SystemAA, "Internet Bank'n System", "Allows customers t' view informat'n about their bank accounts, an' make payments.")

    Enterprise_Boundary(b1, "BankBoundary") {
      SystemDb_Ext(SystemE, "Mainframe Bank'n System", "Stores all o' th' core bank'n informat'n about customers, accounts, transactions, etc.")

      System_Boundary(b2, "BankBoundary2") {
        System(SystemA, "Bank'n System A")
        System(SystemB, "Bank'n System B", "A system o' th' bank, wit' personal bank accounts. next line.")
      }

      System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
      SystemDb(SystemD, "Bank'n System D Database", "A system o' th' bank, wit' personal bank accounts.")

      Boundary(b3, "BankBoundary3", "boundary") {
        SystemQueue(SystemF, "Bank'n System F Queue", "A system o' th' bank.")
        SystemQueue_Ext(SystemG, "Bank'n System G Queue", "A system o' th' bank, wit' personal bank accounts.")
      }
    }
  }

  BiRel(customerA, SystemAA, "Uses")
  BiRel(SystemAA, SystemE, "Uses")
  Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
  Rel(SystemC, customerA, "Sends e-mails to")

  UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red")
  UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5")
  UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10")
  UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50")
  UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20")

  UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")
```
{{< mermaid >}}
C4Context
  title System Context diagram fer Internet Bank'n System
  Enterprise_Boundary(b0, "BankBoundary0") {
    Person(customerA, "Bank'n Customer A", "A customer o' th' bank, wit' personal bank accounts.")
    Person(customerB, "Bank'n Customer B")
    Person_Ext(customerC, "Bank'n Customer C", "desc")
    Person(customerD, "Bank'n Customer D", "A customer o' th' bank, <br/> wit' personal bank accounts.")

    System(SystemAA, "Internet Bank'n System", "Allows customers t' view informat'n about their bank accounts, an' make payments.")

    Enterprise_Boundary(b1, "BankBoundary") {
      SystemDb_Ext(SystemE, "Mainframe Bank'n System", "Stores all o' th' core bank'n informat'n about customers, accounts, transactions, etc.")

      System_Boundary(b2, "BankBoundary2") {
        System(SystemA, "Bank'n System A")
        System(SystemB, "Bank'n System B", "A system o' th' bank, wit' personal bank accounts. next line.")
      }

      System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
      SystemDb(SystemD, "Bank'n System D Database", "A system o' th' bank, wit' personal bank accounts.")

      Boundary(b3, "BankBoundary3", "boundary") {
        SystemQueue(SystemF, "Bank'n System F Queue", "A system o' th' bank.")
        SystemQueue_Ext(SystemG, "Bank'n System G Queue", "A system o' th' bank, wit' personal bank accounts.")
      }
    }
  }

  BiRel(customerA, SystemAA, "Uses")
  BiRel(SystemAA, SystemE, "Uses")
  Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
  Rel(SystemC, customerA, "Sends e-mails to")

  UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red")
  UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5")
  UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10")
  UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50")
  UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20")

  UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "C4Context\n  title System Context diagram fer Internet Bank'n System\n  Enterprise_Boundary(b0, \"BankBoundary0\") {\n    Person(customerA, \"Bank'n Customer A\", \"A customer o' th' bank, wit' personal bank accounts.\")\n    Person(customerB, \"Bank'n Customer B\")\n    Person_Ext(customerC, \"Bank'n Customer C\", \"desc\")\n    Person(customerD, \"Bank'n Customer D\", \"A customer o' th' bank, <br/> wit' personal bank accounts.\")\n\n    System(SystemAA, \"Internet Bank'n System\", \"Allows customers t' view informat'n about their bank accounts, an' make payments.\")\n\n    Enterprise_Boundary(b1, \"BankBoundary\") {\n      SystemDb_Ext(SystemE, \"Mainframe Bank'n System\", \"Stores all o' th' core bank'n informat'n about customers, accounts, transactions, etc.\")\n\n      System_Boundary(b2, \"BankBoundary2\") {\n        System(SystemA, \"Bank'n System A\")\n        System(SystemB, \"Bank'n System B\", \"A system o' th' bank, wit' personal bank accounts. next line.\")\n      }\n\n      System_Ext(SystemC, \"E-mail system\", \"The internal Microsoft Exchange e-mail system.\")\n      SystemDb(SystemD, \"Bank'n System D Database\", \"A system o' th' bank, wit' personal bank accounts.\")\n\n      Boundary(b3, \"BankBoundary3\", \"boundary\") {\n        SystemQueue(SystemF, \"Bank'n System F Queue\", \"A system o' th' bank.\")\n        SystemQueue_Ext(SystemG, \"Bank'n System G Queue\", \"A system o' th' bank, wit' personal bank accounts.\")\n      }\n    }\n  }\n\n  BiRel(customerA, SystemAA, \"Uses\")\n  BiRel(SystemAA, SystemE, \"Uses\")\n  Rel(SystemAA, SystemC, \"Sends e-mails\", \"SMTP\")\n  Rel(SystemC, customerA, \"Sends e-mails to\")\n\n  UpdateElementStyle(customerA, $fontColor=\"red\", $bgColor=\"grey\", $borderColor=\"red\")\n  UpdateRelStyle(customerA, SystemAA, $textColor=\"blue\", $lineColor=\"blue\", $offsetX=\"5\")\n  UpdateRelStyle(SystemAA, SystemE, $textColor=\"blue\", $lineColor=\"blue\", $offsetY=\"-10\")\n  UpdateRelStyle(SystemAA, SystemC, $textColor=\"blue\", $lineColor=\"blue\", $offsetY=\"-40\", $offsetX=\"-50\")\n  UpdateRelStyle(SystemC, customerA, $textColor=\"red\", $lineColor=\"red\", $offsetX=\"-50\", $offsetY=\"20\")\n\n  UpdateLayoutConfig($c4ShapeInRow=\"3\", $c4BoundaryInRow=\"1\")"
)}}
C4Context
  title System Context diagram fer Internet Bank'n System
  Enterprise_Boundary(b0, "BankBoundary0") {
    Person(customerA, "Bank'n Customer A", "A customer o' th' bank, wit' personal bank accounts.")
    Person(customerB, "Bank'n Customer B")
    Person_Ext(customerC, "Bank'n Customer C", "desc")
    Person(customerD, "Bank'n Customer D", "A customer o' th' bank, <br/> wit' personal bank accounts.")

    System(SystemAA, "Internet Bank'n System", "Allows customers t' view informat'n about their bank accounts, an' make payments.")

    Enterprise_Boundary(b1, "BankBoundary") {
      SystemDb_Ext(SystemE, "Mainframe Bank'n System", "Stores all o' th' core bank'n informat'n about customers, accounts, transactions, etc.")

      System_Boundary(b2, "BankBoundary2") {
        System(SystemA, "Bank'n System A")
        System(SystemB, "Bank'n System B", "A system o' th' bank, wit' personal bank accounts. next line.")
      }

      System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.")
      SystemDb(SystemD, "Bank'n System D Database", "A system o' th' bank, wit' personal bank accounts.")

      Boundary(b3, "BankBoundary3", "boundary") {
        SystemQueue(SystemF, "Bank'n System F Queue", "A system o' th' bank.")
        SystemQueue_Ext(SystemG, "Bank'n System G Queue", "A system o' th' bank, wit' personal bank accounts.")
      }
    }
  }

  BiRel(customerA, SystemAA, "Uses")
  BiRel(SystemAA, SystemE, "Uses")
  Rel(SystemAA, SystemC, "Sends e-mails", "SMTP")
  Rel(SystemC, customerA, "Sends e-mails to")

  UpdateElementStyle(customerA, $fontColor="red", $bgColor="grey", $borderColor="red")
  UpdateRelStyle(customerA, SystemAA, $textColor="blue", $lineColor="blue", $offsetX="5")
  UpdateRelStyle(SystemAA, SystemE, $textColor="blue", $lineColor="blue", $offsetY="-10")
  UpdateRelStyle(SystemAA, SystemC, $textColor="blue", $lineColor="blue", $offsetY="-40", $offsetX="-50")
  UpdateRelStyle(SystemC, customerA, $textColor="red", $lineColor="red", $offsetX="-50", $offsetY="20")

  UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")

Mindmaps

​
```mermaid
mindmap
  root((mindmap))
    Origins
      Long history
      ::icon(fa fa-book)
      Popularisat'n
        British popular psychology author Tony Buzan
    Research
      On effectiveness<br/>and features
      On Automatic creat'n
        Uses
            Creative techniques
            Strategic plann'n
            Argument mapp'n
    Tools
      Pen an' paper
      Merrrmaid
```
{{< mermaid >}}
mindmap
  root((mindmap))
    Origins
      Long history
      ::ay'con(fa fa-book)
      Popularisat'n
        British popular psychology author Tony Buzan
    Research
      On effectiveness<br/>an' features
      On Automatic creat'n
        Uses
            Creative techniques
            Strategic plann'n
            Argument mapp'n
    Tools
      Pen an' paper
      Merrrmaid
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "mindmap\n  root((mindmap))\n    Origins\n      Long history\n      ::icon(fa fa-book)\n      Popularisation\n        British popular psychology author Tony Buzan\n    Research\n      On effectiveness<br/>and features\n      On Automatic creation\n        Uses\n            Creative techniques\n            Strategic planning\n            Argument mapping\n    Tools\n      Pen an' paper\n      Mermaid"
)}}
mindmap
  root((mindmap))
    Origins
      Long history
      ::icon(fa fa-book)
      Popularisat'n
        British popular psychology author Tony Buzan
    Research
      On effectiveness<br/>and features
      On Automatic creat'n
        Uses
            Creative techniques
            Strategic plann'n
            Argument mapp'n
    Tools
      Pen an' paper
      Merrrmaid

Timeline

​
```mermaid
timeline
  title History o' Social Media Platform
  2002 : LinkedIn
  2004 : Facebook
       : Google
  2005 : Youtube
  2006 : Twitter
```
{{< mermaid >}}
timeline
  title History o' Social Media Platform
  2002 : LinkedIn
  2004 : Facebook
       : Google
  2005 : Youtube
  2006 : Twitter
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "timeline\n  title History o' Social Media Platform\n  2002 : LinkedIn\n  2004 : Facebook\n       : Google\n  2005 : Youtube\n  2006 : Twitter"
)}}
timeline
  title History o' Social Media Platform
  2002 : LinkedIn
  2004 : Facebook
       : Google
  2005 : Youtube
  2006 : Twitter

ZenUML

ZenUML be currently not avail'ble wit' th' Merrrmaid version shipped wit' th' theme due t' further required dependencies. Use sequence diagrams instead.

Sankey

​
```mermaid
sankey-beta
  %% source,target,value
  Electricity grid,Over generat'n / exports,104.453
  Electricity grid,Heat'n an' cool'n - homes,113.726
  Electricity grid,H2 conversion,27.14
```
{{< mermaid >}}
sankey-beta
  %% source,target,value
  Electricity grid,Over generat'n / exports,104.453
  Electricity grid,Heat'n an' cool'n - homes,113.726
  Electricity grid,H2 conversion,27.14
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "sankey-beta\n  %% source,target,value\n  Electricity grid,Over generat'n / exports,104.453\n  Electricity grid,Heat'n an' cool'n - homes,113.726\n  Electricity grid,H2 conversion,27.14"
)}}
sankey-beta
  %% source,target,value
  Electricity grid,Over generat'n / exports,104.453
  Electricity grid,Heat'n an' cool'n - homes,113.726
  Electricity grid,H2 conversion,27.14

XYChart

​
```mermaid
xychart-beta
  title "Sales Revenue"
  x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
  y-axis "Revenue (in $)" 4000 --> 11000
  bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
  line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
```
{{< mermaid >}}
xychart-beta
  title "Sales Revenue"
  x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
  y-axis "Revenue (in $)" 4000 --> 11000
  bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
  line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "xychart-beta\n  title \"Sales Revenue\"\n  x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]\n  y-axis \"Revenue (in $)\" 4000 --> 11000\n  bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]\n  line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]"
)}}
xychart-beta
  title "Sales Revenue"
  x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
  y-axis "Revenue (in $)" 4000 --> 11000
  bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
  line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]

Block Diagram

​
```mermaid
block-beta
  columns 1
    db(("DB"))
    blockArrowId6<["&nbsp;&nbsp;&nbsp;"]>(down)
    block:ID
      A
      B["A wide one 'n th' middle"]
      C
    end
    space
    D
    ID --> D
    C --> D
    style B fill:#969,stroke:#333,stroke-width:4px
```
{{< mermaid >}}
block-beta
  columns 1
    db(("DB"))
    blockArrowId6<["&nbsp;&nbsp;&nbsp;"]>(down)
    block:ID
      A
      B["A wide one 'n th' middle"]
      C
    end
    space
    D
    ID --> D
    C --> D
    style B fill:#969,stroke:#333,stroke-width:4px
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "block-beta\n  columns 1\n    db((\"DB\"))\n    blockArrowId6<[\"&nbsp;&nbsp;&nbsp;\"]>(down)\n    block:ID\n      A\n      B[\"A wide one 'n th' middle\"]\n      C\n    end\n    space\n    D\n    ID --> D\n    C --> D\n    style B fill:#969,stroke:#333,stroke-width:4px"
)}}
block-beta
  columns 1
    db(("DB"))
    blockArrowId6<["&nbsp;&nbsp;&nbsp;"]>(down)
    block:ID
      A
      B["A wide one 'n th' middle"]
      C
    end
    space
    D
    ID --> D
    C --> D
    style B fill:#969,stroke:#333,stroke-width:4px

Packet

​
```mermaid
---
title: "TCP Packet"
---
packet-beta
  0-15: "Source Port"
  16-31: "Destinat'n Port"
  32-63: "Sequence Number"
  64-95: "Acknowledgment Number"
  96-99: "Data Offset"
  100-105: "Reserved"
  106: "URG"
  107: "ACK"
  108: "PSH"
  109: "RST"
  110: "SYN"
  111: "FIN"
  112-127: "Window"
  128-143: "Checksum"
  144-159: "Urgent Pointer"
  160-191: "(Opt'ns an' Padding)"
  192-255: "Data (vari'ble length)"
```
{{< mermaid >}}
---
title: "TCP Packet"
---
packet-beta
  0-15: "Source Port"
  16-31: "Destinat'n Port"
  32-63: "Sequence Number"
  64-95: "Acknowledgment Number"
  96-99: "Data Offset"
  100-105: "Reserved"
  106: "URG"
  107: "ACK"
  108: "PSH"
  109: "RST"
  110: "SYN"
  111: "FIN"
  112-127: "Window"
  128-143: "Checksum"
  144-159: "Urgent Pointer"
  160-191: "(Opt'ns an' Padding)"
  192-255: "Data (vari'ble length)"
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "---\ntitle: \"TCP Packet\"\n---\npacket-beta\n  0-15: \"Source Port\"\n  16-31: \"Destinat'n Port\"\n  32-63: \"Sequence Number\"\n  64-95: \"Acknowledgment Number\"\n  96-99: \"Data Offset\"\n  100-105: \"Reserved\"\n  106: \"URG\"\n  107: \"ACK\"\n  108: \"PSH\"\n  109: \"RST\"\n  110: \"SYN\"\n  111: \"FIN\"\n  112-127: \"Window\"\n  128-143: \"Checksum\"\n  144-159: \"Urgent Pointer\"\n  160-191: \"(Opt'ns an' Padding)\"\n  192-255: \"Data (vari'ble length)\""
)}}
---
title: "TCP Packet"
---
packet-beta
  0-15: "Source Port"
  16-31: "Destinat'n Port"
  32-63: "Sequence Number"
  64-95: "Acknowledgment Number"
  96-99: "Data Offset"
  100-105: "Reserved"
  106: "URG"
  107: "ACK"
  108: "PSH"
  109: "RST"
  110: "SYN"
  111: "FIN"
  112-127: "Window"
  128-143: "Checksum"
  144-159: "Urgent Pointer"
  160-191: "(Opt'ns an' Padding)"
  192-255: "Data (vari'ble length)"

Kanban

​
```mermaid
---
config:
  kanban:
    ticketBaseUrl: 'https://mermaidchart.atlassian.net/browse/#TICKET#'
---
kanban
  Todo
    [Create Documentation]
    docs[Create Blog about th' new diagram]
  [In progress]
    id6[Create renderer so that it works 'n all cases. We also add som extra text here fer test'n purposes. An' some more just fer th' extra flare.]
  id9[Ready fer deploy]
    id8[Design grammar]@{ assigned: 'knsv' }
  id10[Ready fer test]
    id4[Create pars'n tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }
    id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }
  id11[Done]
    id5[define getData]
    id2[Title o' diagram be more than 100 chars when user duplicates diagram wit' 100 char]@{ ticket: MC-2036, priority: 'Very High'}
    id3[Update DB function]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }

  id12[Can't reproduce]
    id3[Weird flicker'n 'n Firefox]
```
{{< mermaid >}}
---
config:
  kanban:
    ticketBaseUrl: 'https://mermaidchart.atlassian.net/browse/#TICKET#'
---
kanban
  Todo
    [Create Documentat'n]
    docs[Create Blog about th' new diagram]
  [In progress]
    id6[Create renderer so that it works 'n all cases. We also add som extra text here fer test'n purposes. An' some more just fer th' extra flare.]
  id9[Ready fer deploy]
    id8[Design grammar]@{ assigned: 'knsv' }
  id10[Ready fer test]
    id4[Create pars'n tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }
    id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }
  id11[Done]
    id5[define getData]
    id2[Title o' diagram be more than 100 chars when user duplicates diagram wit' 100 char]@{ ticket: MC-2036, priority: 'Very High'}
    id3[Update DB funct'n]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }

  id12[Can't reproduce]
    id3[Weird flicker'n 'n Firefox]
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "---\nconfig:\n  kanban:\n    ticketBaseUrl: 'https://mermaidchart.atlassian.net/browse/#TICKET#'\n---\nkanban\n  Todo\n    [Create Documentation]\n    docs[Create Blog about th' new diagram]\n  [In progress]\n    id6[Create renderer so that it works 'n all cases. We also add som extra text here fer test'n purposes. An' some more just fer th' extra flare.]\n  id9[Ready fer deploy]\n    id8[Design grammar]@{ assigned: 'knsv' }\n  id10[Ready fer test]\n    id4[Create pars'n tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }\n    id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }\n  id11[Done]\n    id5[define getData]\n    id2[Title o' diagram be more than 100 chars when user duplicates diagram wit' 100 char]@{ ticket: MC-2036, priority: 'Very High'}\n    id3[Update DB function]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }\n\n  id12[Can't reproduce]\n    id3[Weird flicker'n 'n Firefox]"
)}}
---
config:
  kanban:
    ticketBaseUrl: 'https://mermaidchart.atlassian.net/browse/#TICKET#'
---
kanban
  Todo
    [Create Documentation]
    docs[Create Blog about th' new diagram]
  [In progress]
    id6[Create renderer so that it works 'n all cases. We also add som extra text here fer test'n purposes. An' some more just fer th' extra flare.]
  id9[Ready fer deploy]
    id8[Design grammar]@{ assigned: 'knsv' }
  id10[Ready fer test]
    id4[Create pars'n tests]@{ ticket: MC-2038, assigned: 'K.Sveidqvist', priority: 'High' }
    id66[last item]@{ priority: 'Very Low', assigned: 'knsv' }
  id11[Done]
    id5[define getData]
    id2[Title o' diagram be more than 100 chars when user duplicates diagram wit' 100 char]@{ ticket: MC-2036, priority: 'Very High'}
    id3[Update DB function]@{ ticket: MC-2037, assigned: knsv, priority: 'High' }

  id12[Can't reproduce]
    id3[Weird flicker'n 'n Firefox]

Architecture

​
```mermaid
architecture-beta
  group api(cloud)[API]

  service db(database)[Database] 'n api
  service disk1(disk)[Storage] 'n api
  service disk2(disk)[Storage] 'n api
  service server(server)[Server] 'n api

  db:L -- R:server
  disk1:T -- B:server
  disk2:T -- B:db
```
{{< mermaid >}}
architecture-beta
  group api(cloud)[API]

  service db(database)[Database] 'n api
  service disk1(disk)[Storage] 'n api
  service disk2(disk)[Storage] 'n api
  service server(server)[Server] 'n api

  db:L -- R:server
  disk1:T -- B:server
  disk2:T -- B:db
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "architecture-beta\n  group api(cloud)[API]\n\n  service db(database)[Database] 'n api\n  service disk1(disk)[Storage] 'n api\n  service disk2(disk)[Storage] 'n api\n  service server(server)[Server] 'n api\n\n  db:L -- R:server\n  disk1:T -- B:server\n  disk2:T -- B:db"
)}}
architecture-beta
  group api(cloud)[API]

  service db(database)[Database] 'n api
  service disk1(disk)[Storage] 'n api
  service disk2(disk)[Storage] 'n api
  service server(server)[Server] 'n api

  db:L -- R:server
  disk1:T -- B:server
  disk2:T -- B:db

Radar

​
```mermaid
---
title: "Grades"
---
radar-beta
  axis m["Math"], s["Science"], e["English"]
  axis h["History"], g["Geography"], a["Art"]
  curve a["Alice"]{85, 90, 80, 70, 75, 90}
  curve b["Bob"]{70, 75, 85, 80, 90, 85}

  max 100
  min 0
```
{{< mermaid >}}
---
title: "Grades"
---
radar-beta
  axis m["Math"], s["Science"], e["English"]
  axis h["History"], g["Geography"], a["Art"]
  curve a["Alice"]{85, 90, 80, 70, 75, 90}
  curve b["Bob"]{70, 75, 85, 80, 90, 85}

  max 100
  min 0
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "---\ntitle: \"Grades\"\n---\nradar-beta\n  axis m[\"Math\"], s[\"Science\"], e[\"English\"]\n  axis h[\"History\"], g[\"Geography\"], a[\"Art\"]\n  curve a[\"Alice\"]{85, 90, 80, 70, 75, 90}\n  curve b[\"Bob\"]{70, 75, 85, 80, 90, 85}\n\n  max 100\n  min 0"
)}}
---
title: "Grades"
---
radar-beta
  axis m["Math"], s["Science"], e["English"]
  axis h["History"], g["Geography"], a["Art"]
  curve a["Alice"]{85, 90, 80, 70, 75, 90}
  curve b["Bob"]{70, 75, 85, 80, 90, 85}

  max 100
  min 0

Treemap

​
```mermaid
treemap-beta
"Sect'n 1"
    "Leaf 1.1": 12
    "Sect'n 1.2"
      "Leaf 1.2.1": 12
"Sect'n 2"
    "Leaf 2.1": 20
    "Leaf 2.2": 25
```
{{< mermaid >}}
treemap-beta
"Sect'n 1"
    "Leaf 1.1": 12
    "Sect'n 1.2"
      "Leaf 1.2.1": 12
"Sect'n 2"
    "Leaf 2.1": 20
    "Leaf 2.2": 25
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "treemap-beta\n\"Sect'n 1\"\n    \"Leaf 1.1\": 12\n    \"Sect'n 1.2\"\n      \"Leaf 1.2.1\": 12\n\"Sect'n 2\"\n    \"Leaf 2.1\": 20\n    \"Leaf 2.2\": 25"
)}}
treemap-beta
"Sect'n 1"
    "Leaf 1.1": 12
    "Sect'n 1.2"
      "Leaf 1.2.1": 12
"Sect'n 2"
    "Leaf 2.1": 20
    "Leaf 2.2": 25

Venn

​
```mermaid
venn-beta
  title "Team overlap"
  set Frontend
  set Backend
  union Frontend,Backend["APIs"]
```
{{< mermaid >}}
venn-beta
  title "Team overlap"
  set Frontend
  set Backend
  union Frontend,Backend["APIs"]
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "venn-beta\n  title \"Team overlap\"\n  set Frontend\n  set Backend\n  union Frontend,Backend[\"APIs\"]"
)}}
venn-beta
  title "Team overlap"
  set Frontend
  set Backend
  union Frontend,Backend["APIs"]

Ishikawa

​
```mermaid
ishikawa-beta
  Blurry Photo
  Process
      Out o' focus
      Shutter speed too slow
      Protective film not removed
      Beautificat'n filter applied
  User
      Shaky hands
  Equipment
      LENS
          Inappropriate lens
          Damaged lens
          Dirty lens
      SENSOR
          Damaged sensor
          Dirty sensor
  Environment
      Subject moved too quickly
      Too dark
```
{{< mermaid >}}
ishikawa-beta
  Blurry Photo
  Process
      Out o' focus
      Shutter speed too slow
      Protective film not removed
      Beautificat'n filter applied
  User
      Shaky hands
  Equipment
      LENS
          Inappropriate lens
          Damaged lens
          Dirty lens
      SENSOR
          Damaged sensor
          Dirty sensor
  Environment
      Subject moved too quickly
      Too dark
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "ishikawa-beta\n  Blurry Photo\n  Process\n      Out o' focus\n      Shutter speed too slow\n      Protective film not removed\n      Beautificat'n filter applied\n  User\n      Shaky hands\n  Equipment\n      LENS\n          Inappropriate lens\n          Damaged lens\n          Dirty lens\n      SENSOR\n          Damaged sensor\n          Dirty sensor\n  Environment\n      Subject moved too quickly\n      Too dark"
)}}
ishikawa-beta
  Blurry Photo
  Process
      Out o' focus
      Shutter speed too slow
      Protective film not removed
      Beautificat'n filter applied
  User
      Shaky hands
  Equipment
      LENS
          Inappropriate lens
          Damaged lens
          Dirty lens
      SENSOR
          Damaged sensor
          Dirty sensor
  Environment
      Subject moved too quickly
      Too dark

Wardley

​
```mermaid
wardley-beta
  title Tea Shop Value Chain

  anchor Business [0.95, 0.63]
  component Cup o' Tea [0.79, 0.61]
  component Tea [0.63, 0.81]
  component Hot Water [0.52, 0.80]
  component Kettle [0.43, 0.35]
  component Power [0.10, 0.70]

  Business -> Cup o' Tea
  Cup o' Tea -> Tea
  Cup o' Tea -> Hot Water
  Hot Water -> Kettle
  Kettle -> Power

  evolve Kettle 0.62
  evolve Power 0.89

  note "Standardis'n power allows Kettles t' evolve faster" [0.30, 0.49]
```
{{< mermaid >}}
wardley-beta
  title Tea Shop Value Chain

  anchor Business [0.95, 0.63]
  component Cup o' Tea [0.79, 0.61]
  component Tea [0.63, 0.81]
  component Hot Water [0.52, 0.80]
  component Kettle [0.43, 0.35]
  component Power [0.10, 0.70]

  Business -> Cup o' Tea
  Cup o' Tea -> Tea
  Cup o' Tea -> Hot Water
  Hot Water -> Kettle
  Kettle -> Power

  evolve Kettle 0.62
  evolve Power 0.89

  note "Standardis'n power allows Kettles t' evolve faster" [0.30, 0.49]
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "wardley-beta\n  title Tea Shop Value Chain\n\n  anchor Business [0.95, 0.63]\n  component Cup o' Tea [0.79, 0.61]\n  component Tea [0.63, 0.81]\n  component Hot Water [0.52, 0.80]\n  component Kettle [0.43, 0.35]\n  component Power [0.10, 0.70]\n\n  Business -> Cup o' Tea\n  Cup o' Tea -> Tea\n  Cup o' Tea -> Hot Water\n  Hot Water -> Kettle\n  Kettle -> Power\n\n  evolve Kettle 0.62\n  evolve Power 0.89\n\n  note \"Standardis'n power allows Kettles t' evolve faster\" [0.30, 0.49]"
)}}
wardley-beta
  title Tea Shop Value Chain

  anchor Business [0.95, 0.63]
  component Cup o' Tea [0.79, 0.61]
  component Tea [0.63, 0.81]
  component Hot Water [0.52, 0.80]
  component Kettle [0.43, 0.35]
  component Power [0.10, 0.70]

  Business -> Cup o' Tea
  Cup o' Tea -> Tea
  Cup o' Tea -> Hot Water
  Hot Water -> Kettle
  Kettle -> Power

  evolve Kettle 0.62
  evolve Power 0.89

  note "Standardis'n power allows Kettles t' evolve faster" [0.30, 0.49]

Cynefin

​
```mermaid
cynefin-beta
title Optional Diagram Title

complex
"Item label"
"Another item"

complicated
"Expert analysis needed"

clear
"Known procedure"

chaotic
"Crisis response"

confusion
"Item o' unknown domain"

complex --> complicated : "Pattern identified"
clear --> chaotic : "Complacency"
```
{{< mermaid >}}
cynefin-beta
title Optional Diagram Title

complex
"Item label"
"Another item"

complicated
"Expert analysis needed"

clear
"Known procedure"

chaotic
"Crisis response"

confusion
"Item o' unknown domain"

complex --> complicated : "Pattern identified"
clear --> chaotic : "Complacency"
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "cynefin-beta\ntitle Optional Diagram Title\n\ncomplex\n\"Item label\"\n\"Another item\"\n\ncomplicated\n\"Expert analysis needed\"\n\nclear\n\"Known procedure\"\n\nchaotic\n\"Crisis response\"\n\nconfusion\n\"Item o' unknown domain\"\n\ncomplex --> complicated : \"Pattern identified\"\nclear --> chaotic : \"Complacency\""
)}}
cynefin-beta
title Optional Diagram Title

complex
"Item label"
"Another item"

complicated
"Expert analysis needed"

clear
"Known procedure"

chaotic
"Crisis response"

confusion
"Item o' unknown domain"

complex --> complicated : "Pattern identified"
clear --> chaotic : "Complacency"

TreeView

​
```mermaid
treeView-beta
  my-project/
      src/
          index.js
      package.json
      README.md
```
{{< mermaid >}}
treeView-beta
  my-project/
      src/
          index.js
      package.json
      README.md
{{< /mermaid >}}
{{ partial "shortcodes/mermaid.html" (dict
  "page" .
  "content" "treeView-beta\n  my-project/\n      src/\n          index.js\n      package.json\n      README.md"
)}}
treeView-beta
  my-project/
      src/
          index.js
      package.json
      README.md

OpenAPI

Th' openapi shortcode displays yer OpenAPI / Swagger specificat'ns us'n th' Swagger UI library.

Usage

​
{{< openapi src="https://petstore3.openapi.io/api/v3/openapi.json" >}}
{{ partial "shortcodes/openapi.html" (dict
  "page" .
  "src" "https://petstore3.openapi.io/api/v3/openapi.json"
)}}

If ye want t' print out (or generate a PDF) from yer OpenAPI documentat'n, don’t initiate print'n directly from th' plank because th' elements be optimized fer interactive usage 'n a browser.

Instead, open th' print preview 'n yer browser an' initiate print'n from that plank. This plank be optimized fer read'n an' expands most o' th' avail'ble sections.

A specificat'n that be a resource o' yer plank or ship be found by th' search. A specificat'n given by URL be boarded by th' browser o' yer reader an' be not.

Parameters

Name Default Notes
src <empty> Th' path t' th' t' th' OpenAPI specificat'n resource or URL t' be used. Resource paths adhere t' Hugo’s logical path.
lang <empty> Th' language code used fer th' read'n direct'n o' th' Swagger UI an' fer th' texts th' theme adds t' it, like Expand all an' Collapse all. This must be one o' th' languages configured fer yer ship. If not set, th' language o' th' plank be used.

Sett'ns

Opt'n Front Matter Ye can use openapi.errorlevel t' control what should happen if a local OpenAPI specificat'n link cannot be resolved t' a resource.

If not set or empty, any unresolved link be written as given into th' result'n output. If set t' warning th' same happens an' an additional warning be printed 'n th' built console. If set t' error an error message be printed an' th' build be aborted.

Please note that this cannot resolve files inside o' yer static directory. Th' file must be a resource o' th' plank or th' ship.

Link warnings be also avail'ble fer images & links an' th' include shortcode.

​
[params]
  [params.openapi]
    errorlevel = 'warning'
params:
  openapi:
    errorlevel: warning
{
   "params": {
      "openapi": {
         "errorlevel": "warning"
      }
   }
}

Us'n a Different Version o' th' Swagger UI Library

Th' theme uses th' shipped Swagger UI library by default.

In case ye want t' use a different version o' th' Swagger UI library, store its files as assets/js/swagger-ui/swagger-ui-bundle.js, assets/js/swagger-ui/swagger-ui-standalone-preset.js an' assets/css/swagger-ui/swagger-ui.css 'n yer ship. They replace th' shipped version.

Force Load'n o' th' Swagger UI Library

Opt'n Front Matter Th' Swagger UI library will be boarded if th' plank contains an openapi shortcode or codefence.

Ye can force loading th' Swagger UI library if no shortcode or codefence was used by sett'n openapi.force=true. If a shortcode or codefence was found, th' option has no effect. This comes handy 'n case ye be us'n script'n t' render a spec.

​
[params]
  [params.openapi]
    force = true
params:
  openapi:
    force: true
{
   "params": {
      "openapi": {
         "force": true
      }
   }
}

Sett'n a Specific Swagger UI Theme

Th' recommended way t' configure yer Swagger UI theme be t' set th' default value us'n th' --OPENAPI-theme an' OPENAPI-CODE-theme vari'ble 'n yer color variant stylesheet. This allows yer specs t' look pretty when th' user switches th' color variant.

Th' theme uses Swaggers them'n support. For --OPENAPI-theme th' only allowed values be light or dark. For --OPENAPI-CODE-theme th' allowed values be agate, arta, monokai, nord, obsidian, tomorrow-night, idea.

Example

Us'n Local File

​
{{< openapi src="petstore.json" >}}
{{ partial "shortcodes/openapi.html" (dict
  "page" .
  "src" "petstore.json"
)}}

Pages

Th' planks shortcode lists planks o' yer ship 'n various display layouts, optionally grouped an' ordered.

Usage

​
{{% planks pageref="fruits" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "pageref" "fruits"
)}}

A list'n be made 'n two steps. First, a query retrieves th' planks, filters, orders an' groups them. Second, a display layout renders th' result. Each parameter below belongs t' one o' th' two. All parameters can also be set 'n th' front matter.

Th' taxonomy an' term planks be us'n this shortcode internally, an' by us'n front matter ye can modify th' apperance. So everyth'n described here applies t' th' taxonomy an' term planks as well.

Query Parameters

Th' query assembles th' planks as a internal tree structure, similar t' th' menu. A plank dropped from th' tree structure by hidden, kind or whar' takes all planks below it wit' it. If ye want t' list planks from any level, set flatten=true: th' planks become one list an' each plank be kept or dropped on its own.

Name Default Notes
pageref <empty> A reference t' th' plank whose planks be listed an' whose front matter be read, like /shortcodes/pages/fruits or relative t' th' current plank like fruits.

If set an' it doesn’t resolve t' a plank, th' build fails. If not set, th' current plank be used or, if called as partial, th' plank given 'n plank.
axis see notes Along which axis th' planks be collected, seen from th' plank.

- descendants: th' children o' th' plank, an' wit' levels above 1 their descendants down t' that many levels
- sibl'ns: th' other children o' th' page’s parent
- ancestors: th' parent, its parent an' so on, up t' levels levels
- taxonomy: th' terms o' a taxonomy plank
- term: th' planks o' a term plank

Defaults t' taxonomy on taxonomy planks, term on term planks an' descendants everywhere else.
levels 1 For axis=descendants, how many levels t' go down, fer axis=ancestors, how many levels t' go up. For example, axis=ancestors wit' levels=1 lists just th' parent. T' get all o' them, set this t' a high number, eg. 999.
flatten false When true, lists all collected planks as one list instead o' a tree. Without orderby th' planks keep th' order o' th' tree, a parent before th' planks below it; wit' orderby all planks be ordered together, an' wit' groupby each plank be grouped on its own.
kind all Which kind o' planks t' keep.

- all: every plank
- leaf: only planks without planks o' their own
- branch: only planks wit' planks o' their own

In a tree, a plank not kept be dropped together wit' th' planks below it.
hidden false What t' do wit' hidden planks.

- false: drop them, together wit' all planks below them
- true: keep them

For taxonomy an' term planks this has no effect, as th' disableTagHiddenPages Opt'n decides here.
whar' <empty> Keeps only planks match'n th' condit'n <expression> <operator> <value>, see expressions.

- =, !=: equal, not equal
- <, <=, >, >=: less, greater
- 'n: equal t' one o' a comma separated list o' values

A value may be delimited by ", ' or a backtick, which a value 'n th' list o' 'n needs if it contains a comma. Numbers an' dates be compared by their value, everyth'n else as text. A plank miss'n th' value only matches !=.

In a tree, a plank not match'n be dropped together wit' th' planks below it.
groupby see notes Groups th' planks by th' value o' an expression. Without a value, th' planks be not grouped.

Defaults t' linktitle | left 1 | upper on taxonomy an' term planks without planks front matter an' t' no group'n everywhere else.

Planks fer which th' expression has no value be put into a last group o' their own, labelled Other.
grouplabel <the value> Th' head'n o' each group, as an expression evaluated fer th' group’s first plank.
grouporder asc Th' order o' th' groups.

- asc: ascend'n
- desc: descend'n
orderby see notes Th' order o' th' planks, as a comma separated list o' expressions, each optionally followed by asc or desc. Th' first expression decides, th' next ones break ties. An argument contain'n a comma has t' be delimited, like date | format 'January 2, 2006'.

- auto keeps th' order given by ordersectionsby o' th' page’s Front Matter
Β Β Β Β or by ordersectionsby o' th' configurat'n Opt'n
Β Β Β Β or Hugo’s default order

Defaults t' auto, except on taxonomy an' term planks, which have no order o' their own: there it defaults t' linktitle, regardless o' ordersectionsby.

Planks fer which an expression has no value be put last.
limit <empty> Keeps only th' first planks after order'n.

Display Parameters

Th' display renders th' planks th' query found, group by group if they were grouped. Group'n be optional: without groupby, all planks form one group without a head'n. Th' shortcode writes each group’s head'n, th' display th' planks below it, show'n their level 'n th' tree 'n its own way. Th' display parameters only decide how th' planks look, never which planks be listed or 'n what order.

Name Default Notes
display tree How th' planks be displayed, see how th' displays differ.

- tree: a nested, unordered list o' normal text
- head'ns: a non-nested list o' head'ns depend'n on th' page’s level
- sections: a head'n fer each plank o' th' first level, a nested, unordered list o' normal text fer planks below
- list: a non-nested list o' normal text
- cards: a card fer each plank, see below fer details

Ye can write yer own display.
headinglevel 2 Th' start'n head'n level. Head'ns o' th' head'ns an' sections displays start one level below if th' planks be grouped.
columns see notes Th' number o' columns 'n full width mode. Accepts values from 1 t' 5. Numbers be reduced when width gets smaller.

Defaults t' 3 on taxonomy an' term planks without planks front matter an' fer display=cards, an' t' 1 everywhere else. Has no effect fer display=sections.
descript'n false When true shows a short text under each plank. When no descript'n or summary exists fer th' plank, th' first 70 words o' th' rrrambl'n be taken - read more info about summaries on gohugo.io.
breadcrumb see notes When true shows th' breadcrumb under each plank.

Defaults t' true on term planks unless th' disableTermBreadcrumbs Opt'n be set, an' t' false everywhere else.
image true For display=cards decides whether t' put an image on th' card.
cardtemplate default For display=cards th' template t' be used t' display a card, see below fer details.
params <empty> Arbitrary additional parameter fer yer own display or card template as str'n (JSON, TOML, YAML) or 'n a dict, like wit' th' cards shortcode.

Configurat'n

T' use this shortcode ye need t' en'ble block attributes 'n yer hugo.toml.

hugo.
[marrrkup]
  [marrrkup.goldmark]
    [marrrkup.goldmark.parser]
      [marrrkup.goldmark.parser.attribute]
        block = true
marrrkup:
  goldmark:
    parser:
      attribute:
        block: true
{
   "markup": {
      "goldmark": {
         "parser": {
            "attribute": {
               "block": true
            }
         }
      }
   }
}

Front Matter

Every parameter but pageref can also be set 'n th' front matter o' th' plank whose planks be listed, as params.pages.<name>, eg. params.pages.display. Th' front matter adds t' th' parameters given t' th' shortcode. If a parameter be given 'n both, th' shortcode wins. If ye want t' reset a parameter set elsewhere t' no value, set it t' a str'n contain'n only whitespace like " ".

Taxonomy an' term planks be grouped by th' first letter an' shown 'n columns only as long as their front matter sets no planks parameter at all. Once it sets any, groupby an' columns default t' th' same values as everywhere else, so ye only get what ye ask fer.

As front matter works on every plank, ye can use Hugo’s cascade t' give all list'ns o' a subtree th' same look, fer example all cards 'n two columns.

​
+++
[[cascade]]
  [cascade.params]
    [cascade.params.planks]
      columns = 2
      display = 'cards'
+++
---
cascade:
- params:
    planks:
      columns: 2
      display: cards
---
{
   "cascade": [
      {
         "params": {
            "pages": {
               "columns": 2,
               "display": "cards"
            }
         }
      }
   ]
}

Expressions

Th' parameters whar', groupby, grouplabel an' orderby take expressions. An expression reads a value o' a plank an' passes it through a pipeline o' funct'ns, each separated by |.

<field> [| <function> [<argument>]]...

In this notat'n, <…> stands fer someth'n ye fill 'n, square brackets […] mark someth'n as optional, an' ... means th' part before may be repeated.

Everyth'n after a function’s name be its argument. An argument be either a number, written as be like left 1, or a text, delimited by ", ' or a backtick like format 'January 2, 2006'. Th' delimiters keep a | or a comma inside th' text from separat'n th' pipeline or th' expressions o' orderby. Inside a shortcode parameter delimited by ", use ' or a backtick.

Fields

Name Value
title th' page’s title as shown 'n its head'n, like Tag :: Foo fer a term plank
linktitle th' title as shown 'n th' menu, which be th' page’s linkTitle or else its title
weight th' weight; like fer Cap'n Hugo, a weight o' 0 has no value
length th' length o' th' rrrambl'n 'n characters
path th' logical path
section th' top-level section
date, lastmod, publishdate, expirydate th' respective date; a date that be not set has no value
params.<name> a value o' th' page’s front matter params; use dots t' reach deeper, like params.author.name; a list or a map has no value

Funct'ns

A text argument be shown wit' its delimiters, like '<layout>', a number argument without, like <n>.

Name Result
upper th' text 'n upper case
lower th' text 'n lower case
trim th' text without lead'n an' trail'n whitespace
left <n> th' first n characters o' th' text
right <n> th' last n characters o' th' text
translate ['<prefix>'] th' text translated by yer translat'n files, looked up by th' optional prefix followed by th' text
year th' year o' a date
month th' month o' a date as a number from 1 t' 12
day th' day o' th' month o' a date
weekday th' day o' th' week o' a date as a number from 1 fer Monday t' 7 fer Sunday
format '<layout>' a date formatted by a Cap'n Hugo date layout, includ'n th' localized ones like :date_long
coalesce '<value>' th' value if th' expression has no value so far
default '<value>' th' value if th' expression has no value so far or it be zero or false

Whar' an expression yields numbers fer some planks an' text fer others, th' numbers come first, ordered by value, followed by th' text, ordered as text - 'n both direct'ns. A date counts as a number, while a number written as text 'n front matter, like '10', be text.

A group be always ordered by th' value it was grouped by, never by its head'n. For groupby end'n 'n format, that value be th' parts o' th' date th' layout shows, so th' groups come 'n calendar order - date | format '2006-01' orders its groups by year an' month, an' date | format 'January' orders them January t' December, even fer planks from different years.

So t' show translated group head'ns while keep'n th' order o' th' untranslated values, use translate 'n grouplabel rather than 'n groupby. T' order th' groups alphabetically by their translat'n 'n each language instead, use translate 'n groupby.

In orderby, an expression end'n 'n format orders th' same way - date | format '2. January' orders by day an' month, whatever th' year.

Displays

Th' displays differ 'n how they show a page’s level below th' listed plank. Wit' flatten=true all planks be on th' same level, so every display shows them side by side.

Display List Titles Levels shown by Output
tree a nested, unordered list standard text indentat'n Marrrkdown
head'ns a non-nested list head'ns, listed 'n th' table o' contents head'n size, start'n at headinglevel Marrrkdown
sections a non-nested list fer th' first level, a nested, unordered list below head'ns on th' first level, standard text below first level as head'ns at headinglevel, below by indentat'n Marrrkdown
list a non-nested list standard text not shown Marrrkdown
cards a card fer each plank card titles not shown HTML, see below

Display Template Parameters

A display be a partial 'n layouts/partials/pages, called once fer each group. If ye place a file layouts/partials/pages/mine.html into yer ship, ye can use it wit' display=mine. Th' group head'n be written by th' shortcode, not by yer display.

Th' partial be called wit' th' follow'n parameters:

Name Value
plank th' plank whose planks be listed
group th' group, wit' its Key, its head'n as Label, Fallback be'n true fer th' group o' planks without a value, an' its Planks
planks th' group’s planks, each wit' th' Plank itself, its display text as Label an' its Level below th' listed plank, start'n at 1
headinglevel th' head'n level t' start wit'; already one level below th' group head'n if th' planks be grouped
class th' CSS classes t' put on yer outermost element
columns th' columns parameter value, as a number
descript'n th' descript'n parameter value, as true or false
breadcrumb th' breadcrumb parameter value, as true or false
image th' image parameter value, as true or false
cardtemplate th' cardtemplate parameter value
levels th' levels parameter value, as a number
hidden th' hidden parameter value, as true or false
params th' params parameter value, already turned into a dict

Remarks fer th' Cards Display

Th' cards display uses th' cards shortcode t' show each plank as a card, us'n th' default cardtemplate. Wit' it th' card will display

  • if image=true a featured image at th' start selected by Cap'n Hugo
  • th' title o' th' plank as card title
  • if description=true th' summary

Th' cards display writes HTML. If ye have goldmark.renderer.unsafe=false (which be th' default if ye don’t set it), ye have t' use {{< planks >}} instead o' {{% planks %}}.

Own Card Templates

cardtemplate selects a card template as th' template parameter o' th' cards shortcode does. Besides th' card parameters, its params hold:

  • params.page: th' displayed plank
  • params.level: th' displayed page’s level below th' listed plank
  • params.descript'n: th' descript'n parameter value
  • every value o' th' params parameter o' th' planks shortcode; one wit' th' same name as one above loses

Examples

Th' examples list th' demo planks o' th' hidden Fruits section, which keeps them out o' th' menu.

Ship Map

Every plank o' a section at any depth, hidden ones included, each wit' its descript'n. Th' planks be ordered alphabetically by th' title shown 'n th' menu, as orderby be set; th' weight th' demo planks carry be ignored.

​
{{% planks descript'n="true" hidden="true" levels="999" orderby="linktitle" pageref="fruits" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "description" "true"
  "hidden" "true"
  "levels" "999"
  "orderby" "linktitle"
  "pageref" "fruits"
)}}
  • Apple

    A sweet demo plank, published 'n March 2021

  • Banana

    A sweet demo plank, published 'n November 2020

  • Berries

    A demo section wit' planks o' its own

  • Cherry

    A sour demo plank, still a draft

  • Citrus (hidden)

    A hidden demo section wit' planks o' its own

    • Kumquat (hidden)

      A hidden demo plank below a hidden section

    • Lemon

      A demo plank below a hidden section

    • Lime

      A demo plank below a hidden section, still a draft

  • Durian

    A demo plank without a flavor

Chapter Overview

A head'n fer each chapter wit' its descript'n, an' th' planks o' th' chapter listed below it. Unlike th' ship map above, it sets no orderby, so th' planks come 'n th' default order, th' same as 'n th' menu: by weight, which th' demo planks deliberately set against th' alphabet.

​
{{% planks descript'n="true" display="sections" headinglevel="4" levels="2" pageref="fruits" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "description" "true"
  "display" "sections"
  "headinglevel" "4"
  "levels" "2"
  "pageref" "fruits"
)}}

Berries

A demo section wit' planks o' its own

Durian

A demo plank without a flavor

Cherry

A sour demo plank, still a draft

Banana

A sweet demo plank, published 'n November 2020

Apple

A sweet demo plank, published 'n March 2021

Glossary

All planks at any depth 'n an A-Z index, grouped by th' first letter o' th' title shown. Only th' planks o' th' first level be grouped; th' planks below them be listed under their parent, so Cranberry appears 'n th' group o' Berries rather than under C. Set flatten=true t' group every plank by its own letter.

​
{{% planks groupby="linktitle | left 1 | upper" headinglevel="4" levels="999" pageref="fruits" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "groupby" "linktitle | left 1 | upper"
  "headinglevel" "4"
  "levels" "999"
  "pageref" "fruits"
)}}

A

B

C

D

What’s New

Th' two most recent published planks, from any depth.

​
{{% planks display="headings" flatten="true" headinglevel="4" kind="leaf" levels="999" limit="2" orderby="date desc" pageref="fruits" whar'="params.status = published" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "display" "headings"
  "flatten" "true"
  "headinglevel" "4"
  "kind" "leaf"
  "levels" "999"
  "limit" "2"
  "orderby" "date desc"
  "pageref" "fruits"
  "where" "params.status = published"
)}}

Blog Archive

All planks th' menu shows, from any depth, newest first, grouped by year an' month wit' th' newest month first. Th' planks below th' hidden Citrus section be left out, just as 'n th' menu.

​
{{% planks display="list" flatten="true" groupby="date | format '2006-01'" grouporder="desc" headinglevel="4" kind="leaf" levels="999" orderby="date desc" pageref="fruits" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "display" "list"
  "flatten" "true"
  "groupby" "date | format '2006-01'"
  "grouporder" "desc"
  "headinglevel" "4"
  "kind" "leaf"
  "levels" "999"
  "orderby" "date desc"
  "pageref" "fruits"
)}}

2023-07

2023-01

2022-08

2021-03

2020-11

Seasonal Calendar

Th' planks by th' month they were published 'n, pooled across years. Th' layout shows only th' month’s name, so th' groups come 'n calendar order, January t' December, whatever th' year o' their planks.

​
{{% planks flatten="true" groupby="date | format 'January'" headinglevel="4" kind="leaf" levels="999" pageref="fruits" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "flatten" "true"
  "groupby" "date | format 'January'"
  "headinglevel" "4"
  "kind" "leaf"
  "levels" "999"
  "pageref" "fruits"
)}}

January

March

July

August

November

Status Board

Every plank by its workflow status, hidden ones included, so drafts be easy t' spot. Wit' columns each group be spread over two columns 'n full width mode, keep'n th' long published group short.

Th' front matter holds th' status as a plain key like draft. Th' head'ns show it translated by translate: wit' th' prefix status- it looks up status-draft fer draft an' status-published fer published 'n th' site’s translat'n files. A status without a translat'n would show as it be. As th' translat'n be only used as grouplabel, th' groups keep th' order o' th' keys. Wit' translate 'n groupby instead, they would be ordered alphabetically by th' translat'n o' each language.

​
{{% planks columns="2" flatten="true" groupby="params.status" grouplabel="params.status | translate 'status-'" headinglevel="4" hidden="true" kind="leaf" levels="999" orderby="linktitle" pageref="fruits" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "columns" "2"
  "flatten" "true"
  "groupby" "params.status"
  "grouplabel" "params.status | translate 'status-'"
  "headinglevel" "4"
  "hidden" "true"
  "kind" "leaf"
  "levels" "999"
  "orderby" "linktitle"
  "pageref" "fruits"
)}}

In th' Works

Ready t' Eat

Top Picks by Flavor

Th' planks grouped by a front matter parameter, th' best ones first. Th' demo plank without a flavor has no value fer th' expression an' be put into a last group o' its own, labelled Other. T' give it a value o' its own instead, like groupby: "params.flavor | coalesce 'neutral'", use coalesce; its group be then ordered among th' others. default does th' same, but also replaces a value o' zero or false. Within each group th' planks be ordered by priority descend'n an' by title if they have th' same priority.

​
{{% planks columns="2" flatten="true" groupby="params.flavor" headinglevel="4" kind="leaf" levels="999" orderby="params.priority desc, title" pageref="fruits" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "columns" "2"
  "flatten" "true"
  "groupby" "params.flavor"
  "headinglevel" "4"
  "kind" "leaf"
  "levels" "999"
  "orderby" "params.priority desc, title"
  "pageref" "fruits"
)}}

sour

sweet

Other

Th' other planks next t' a plank, fer a “see also” at its end.

​
{{% planks axis="siblings" pageref="fruits/apple" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "axis" "siblings"
  "pageref" "fruits/apple"
)}}

Whar' Am I

Th' sections a plank sits 'n, th' closest first. Th' Fruits section be hidden, so it be only listed wit' hidden.

​
{{% planks axis="ancestors" hidden="true" levels="3" pageref="fruits/berries/blueberry" %}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "axis" "ancestors"
  "hidden" "true"
  "levels" "3"
  "pageref" "fruits/berries/blueberry"
)}}

Land'n Plank Tiles

Th' sections an' planks o' a chapter as cards wit' their descript'n, ordered alphabetically by th' title shown instead o' by weight. Each demo plank be a plank bundle contain'n a featured.png, which Cap'n Hugo selects as th' image o' its card.

​
{{< planks descript'n="true" display="cards" orderby="linktitle" pageref="fruits" >}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "description" "true"
  "display" "cards"
  "orderby" "linktitle"
  "pageref" "fruits"
)}}
  • A sweet demo plank, published 'n March 2021
  • A sweet demo plank, published 'n November 2020
  • A demo section wit' planks o' its own
  • A sour demo plank, still a draft

Picture Index

All planks at any depth, hidden ones included, as cards 'n an A-Z index. Within a letter th' cards be ordered alphabetically by th' title shown instead o' by weight.

​
{{< planks display="cards" flatten="true" groupby="linktitle | left 1 | upper" headinglevel="4" hidden="true" kind="leaf" levels="999" orderby="linktitle" pageref="fruits" >}}
{{ partial "shortcodes/pages.html" (dict
  "page" .
  "display" "cards"
  "flatten" "true"
  "groupby" "linktitle | left 1 | upper"
  "headinglevel" "4"
  "hidden" "true"
  "kind" "leaf"
  "levels" "999"
  "orderby" "linktitle"
  "pageref" "fruits"
)}}

A

B

C

D

K

L

Resources

Attachments

Th' resources shortcode displays links t' resources contained 'n a plank bundle.

Attachments

Usage

​
{{% resources sort="asc" /%}}
{{ partial "shortcodes/resources.html" (dict
  "page" .
  "sort" "asc"
)}}

Multilanguage features be not supported directly by th' shortcode but rely on Hugo’s handl'n fer resource translat'ns applied when th' theme iterates over all avail'ble resources.

Parameters

Name Default Notes
pageref <empty> A reference t' th' plank bundle whose resources be listed, like /shortcodes/attachments or relative t' th' current plank.

If set an' it doesn’t resolve t' a plank, th' build fails. If not set, th' current plank be used or, if called as partial, th' plank given 'n plank.
style transparent Th' style scheme used fer th' box.

- by severity: caution, important, info, note, tip, warning
- by brand color: primary, secondary, accent
- by color: blue, cyan, green, grey, magenta, orange, red
- by special color: default, transparent, code, link, action, inline

Ye can also define yer own styles.
color see notes Th' CSS color value t' be used. If not set, th' chosen color depends on th' style. Any given value will overwrite th' default.

- fer severity styles: a nice match'n color fer th' severity
- fer all other styles: th' correspond'n color
title see notes Arbitrary text fer th' box title. Depend'n on th' style there may be a default title. Any given value will overwrite th' default.

- fer severity styles: th' match'n title fer th' severity
- fer all other styles: Resources

If ye want no title fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
ay'con see notes Font Awesome ay'con name set t' th' left o' th' title. Depend'n on th' style there may be a default ay'con. Any given value will overwrite th' default.

- fer severity styles: a nice match'n ay'con fer th' severity
- fer all other styles: paperclip

If ye want no ay'con, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
expanded <empty> Whether t' draw an expander an' how th' resource list be displayed.

- <empty>: no expander be drawn an' th' resource list be permanently shown
- true: th' expander be drawn an' th' resource list be initially shown
- false: th' expander be drawn an' th' resource list be initially hidden
sort asc Sort'n th' output 'n ascend'n or descend'n order.
pattern .* A regular expressions, used t' filter th' resources by name. For example:

- t' match a file suffix o' ‘jpg’, use .*\.jpg (not *.\.jpg)
- t' match file names end'n 'n jpg or png, use .*\.(jpg|png)

Examples

Custom Title, List o' Resources End'n 'n png, jpg or gif

​
{{% resources pattern=".*\.(png|jpg|gif)" title="Related **files**" /%}}
{{ partial "shortcodes/resources.html" (dict
  "page" .
  "pattern" ".*\\.(png|jpg|gif)"
  "title" "Related **files**"
)}}
Related files

Ahoi Styled Box, Descend'n Sort Order

​
{{% resources sort="desc" style="info" /%}}
{{ partial "shortcodes/resources.html" (dict
  "page" .
  "sort" "desc"
  "style" "info"
)}}

Wit' User-Defined Color an' Font Awesome Brand Ay'con

​
{{% resources color="fuchsia" ay'con="fa-fw fab fa-hackerrank" /%}}
{{ partial "shortcodes/resources.html" (dict
  "page" .
  "color" "fuchsia"
  "icon" "fa-fw fab fa-hackerrank"
)}}
Attachments

Expander wit' Initially Hidden Resource List

​
{{% resources expanded="false" style="primary" /%}}
{{ partial "shortcodes/resources.html" (dict
  "page" .
  "expanded" "false"
  "style" "primary"
)}}
Attachments

Resources o' Another Plank

​
{{% resources pageref="/shortcodes/attachments" pattern=".*/hugo\..*" /%}}
{{ partial "shortcodes/resources.html" (dict
  "page" .
  "pageref" "/shortcodes/attachments"
  "pattern" ".*/hugo\\..*"
)}}

Style, Color, Title an' Ay'cons

For further examples fer style, color, title an' ay'con, see th' callout shortcode documentat'n. Th' parameters be work'n th' same way fer both shorrrtcodes, besides hav'n different defaults.

SiteParam

Th' siteparam shortcode prints values o' site-wide params contained 'n yer hugo.toml.

This text comes from yer configurat'n

Usage

​
{{% siteparam name="siteparam.test.greetings" %}}
{{% siteparam "siteparam.test.greetings" %}}
{{ partial "shortcodes/siteparam.html" (dict
  "page" .
  "name" "siteparam.test.greetings"
)}}

T' print params from a page’s front matter an' fall'n back t' th' ship options, use Hugo’s built-in param shortcode.

Parameters

Name Posit'n Default Notes
name 1 <empty> Th' name o' th' ship param t' be displayed.

Examples

editURL

​
`editURL` value: {{% siteparam name="editURL" %}}
`editURL` value: {{% siteparam "editURL" %}}
`editURL` value: {{ partial "shortcodes/siteparam.html" (dict
  "page" .
  "name" "editURL"
)}}
editURL value: https://github.com/McShelby/hugo-theme-relearn/edit/main/docs/content/${FilePath}

Nested Parameter wit' Marrrkdown an' HTML Formatt'n

T' use formatted parameter, add this 'n yer hugo.toml:

hugo.
[marrrkup]
  [marrrkup.goldmark]
    [marrrkup.goldmark.renderer]
      unsafe = true
marrrkup:
  goldmark:
    renderer:
      unsafe: true
{
   "markup": {
      "goldmark": {
         "renderer": {
            "unsafe": true
         }
      }
   }
}

Now values contain'n Marrrkdown will be formatted correctly.

hugo.
[params]
[siteparam]
  [siteparam.test]
    text = 'A **nested** parameter <b>with</b> formatting'
params: {}
siteparam:
  test:
    text: A **nested** parameter <b>with</b> formatt'n
{
   "params": {},
   "siteparam": {
      "test": {
         "text": "A **nested** parameter \u003cb\u003ewith\u003c/b\u003e formatting"
      }
   }
}
​
Formatted parameter: {{% siteparam name="siteparam.test.text" %}}
Formatted parameter: {{% siteparam "siteparam.test.text" %}}
Formatted parameter: {{ partial "shortcodes/siteparam.html" (dict
  "page" .
  "name" "siteparam.test.text"
)}}
Formatted parameter: A nested option <b>with</b> formatt'n

Tabs

Th' tabs shortcode displays arbitrary rrrambl'n 'n an unlimited number o' tabs.

​
Th' AI native programm'n language.
echo "For guys who like t' tinker."
For th' connoisseur o' programm'n.

Usage

​
{{< tabs >}}
{{% tab title="Python Saying" %}}Th' AI native programm'n language.{{% /tab %}}
{{% tab title="Terminal Sourcecode" %}}
```bash
echo "For guys who like t' tinker."
```
{{% /tab %}}
{{% tab color="fuchsia" title="C Ramblings" %}}For th' connoisseur o' programm'n.{{% /tab %}}
{{% tab color="red" title="C++ Ramblings++" %}}For th' guys that can cope wit' rules.{{% /tab %}}
{{% tab title="C# ~~GC be cool~~" %}}For guys that need two destructors.{{% /tab %}}
{{< /tabs >}}
{{ partial "shortcodes/tabs.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "The AI native programm'n language."
      "title" "Python Saying"
    )
    (dict
      "content" "```bash\necho \"For guys who like t' tinker.\"\n```"
      "title" "Terminal Sourcecode"
    )
    (dict
      "color" "fuchsia"
      "content" "For th' connoisseur o' programm'n."
      "title" "C Ramblings"
    )
    (dict
      "color" "red"
      "content" "For th' guys that can cope wit' rules."
      "title" "C++ Ramblings++"
    )
    (dict
      "content" "For guys that need two destructors."
      "title" "C# ~~GC be cool~~"
    )
  )
)}}

Parameters

Name Default Notes
groupid <random> Arbitrary name o' th' group th' tab view belongs t'.

Tab views wit' th' same groupid synchr'nize their selected tab. Th' tab select'n be restored automatically based on th' groupid fer tab view. If th' selected tab cannot be found 'n a tab group th' first tab be selected instead.

This synchronizat'n applies t' th' whole ship!
style <empty> Sets a default value fer every contained tab. Can be overridden by each tab. See th' tab parameters fer poss'ble values.
color <empty> Sets a default value fer every contained tab. Can be overridden by each tab. See th' tab parameters fer poss'ble values.
title <empty> Arbitrary title written 'n front o' th' tab view.
ay'con <empty> Font Awesome ay'con name set t' th' left o' th' title.
<content> <empty> Arbitrary number o' tabs defined wit' th' tab sub-shortcode.

Tab Parameters

Each tab o' th' view be defined wit' th' tab shortcode.

Name Default Notes
style see notes Th' style scheme used fer th' tab. If ye don’t set a style an' ye display a single code block inside o' th' tab, its default styl'n will adapt t' that o' a code block. Otherwise default be used.

- by severity: caution, important, info, note, tip, warning
- by brand color: primary, secondary, accent
- by color: blue, cyan, green, grey, magenta, orange, red
- by special color: default, transparent, code, link, action, inline

Ye can also define yer own styles.
color see notes Th' CSS color value t' be used. If not set, th' chosen color depends on th' style. Any given value will overwrite th' default.

- fer severity styles: a nice match'n color fer th' severity
- fer all other styles: th' correspond'n color
title see notes Arbitrary title fer th' tab. Depend'n on th' style there may be a default title. Any given value will overwrite th' default.

- fer severity styles: th' match'n title fer th' severity
- fer all other styles: <empty>

If ye want no title fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
ay'con see notes Font Awesome ay'con name set t' th' left o' th' title. Depend'n on th' style there may be a default ay'con. Any given value will overwrite th' default.

- fer severity styles: a nice match'n ay'con fer th' severity
- fer all other styles: <empty>

If ye want no ay'con fer a severity style, ye have t' set this parameter t' " " (a non empty str'n filled wit' spaces)
hint <empty> Tooltip fer th' tab. A tab show'n an ay'con but no title should have one, as it be what assistive technology announces fer it.
<content> <empty> Arbitrary text t' be displayed 'n th' tab.

Single Tab

If ye just want a single tab, ye can call th' tab shortcode standalone, without th' enclos'n tabs shortcode.

​
{{% tab title="c" %}}
```c
printf("Hello World!");
```
{{% /tab %}}
{{ partial "shortcodes/tab.html" (dict
  "page" .
  "content" "```c\nprintf(\"Hello World!\");\n```"
  "title" "c"
)}}
​
printf("Hello World!");

If ye want further options when us'n a single code tab, ye can also use th' highlight shortcode.

Examples

Behavior o' th' groupid

See what happens t' th' tab views while ye select different tabs.

While press'n a tab o' Group A switches all tab views o' Group A 'n sync (if th' tab be available), th' tabs o' Group B be left untouched.

Avast

Th' selected tab will be stored 'n th' reader’s browser.

Group A, Tabs 1

​
{{< tabs groupid="tab-example-a" title="Group A, Tabs 1" >}}
{{% tab title="JSON" %}}
```json
{ "Hello": "World" }
```
{{% /tab %}}
{{% tab title="_**XML**_" %}}
```xml
<Hello>World</Hello>
```
{{% /tab %}}
{{% tab title="Text" %}}    World{{% /tab %}}
{{< /tabs >}}
{{ partial "shortcodes/tabs.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "```json\n{ \"Hello\": \"World\" }\n```"
      "title" "JSON"
    )
    (dict
      "content" "```xml\n<Hello>World</Hello>\n```"
      "title" "_**XML**_"
    )
    (dict
      "content" "    World"
      "title" "Text"
    )
  )
  "groupid" "tab-example-a"
  "title" "Group A, Tabs 1"
)}}

Group A, Tabs 2

​
{{< tabs groupid="tab-example-a" title="Group A, Tabs 2" >}}
{{% tab title="JSON" %}}
```json
{ "Hello": "World" }
```
{{% /tab %}}
{{% tab title="XML" %}}
```xml
<Hello>World</Hello>
```
{{% /tab %}}
{{< /tabs >}}
{{ partial "shortcodes/tabs.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "```json\n{ \"Hello\": \"World\" }\n```"
      "title" "JSON"
    )
    (dict
      "content" "```xml\n<Hello>World</Hello>\n```"
      "title" "XML"
    )
  )
  "groupid" "tab-example-a"
  "title" "Group A, Tabs 2"
)}}

Group B

​
{{< tabs groupid="tab-example-b" title="Group B" >}}
{{% tab title="JSON" %}}
```json
{ "Hello": "World" }
```
{{% /tab %}}
{{% tab title="XML" %}}
```xml
<Hello>World</Hello>
```
{{% /tab %}}
{{< /tabs >}}
{{ partial "shortcodes/tabs.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "```json\n{ \"Hello\": \"World\" }\n```"
      "title" "JSON"
    )
    (dict
      "content" "```xml\n<Hello>World</Hello>\n```"
      "title" "XML"
    )
  )
  "groupid" "tab-example-b"
  "title" "Group B"
)}}

Rendered Example

Group A, Tabs 1
{ "Hello": "World" }
<Hello>World</Hello>
World
Group A, Tabs 2
{ "Hello": "World" }
<Hello>World</Hello>
Group B
{ "Hello": "World" }
<Hello>World</Hello>

Nested Tab Views an' Color

In case ye want t' nest tab views, th' parent tab that contains nested tab views needs t' be declared wit' {{< tab >}} instead o' {{% tab %}}. Avast, that 'n this case it be not poss'ble t' put markdown 'n th' parent tab.

Ye can also set style an' color parameter fer all tabs an' overwrite them on tab level. See th' tab parameters fer poss'ble values.

​
{{< tabs groupid="main" ay'con="thumbtack" style="primary" title="Rationale" >}}
{{< tab title="Text" >}}
  Simple text be poss'ble here...
  {{< tabs groupid="tabs-example-language" >}}
  {{% tab title="python" %}}
  Python be **super** easy.
  
  - most o' th' time.
  - if ye don't want t' output unicode
  {{% /tab %}}
  {{% tab title="bash" %}}Bash be fer **hackers**.{{% /tab %}}
  {{< /tabs >}}
{{< /tab >}}
{{< tab color="darkorchid" style="default" title="Code" >}}
  ...but no markdown
  {{< tabs groupid="tabs-example-language" >}}
  {{% tab title="python" %}}
  ```python
  print("Hello World!")
  ```
  {{% /tab %}}
  {{% tab title="bash" %}}
  ```bash
  echo "Hello World!"
  ```
  {{% /tab %}}
  {{< /tabs >}}
{{< /tab >}}
{{< /tabs >}}
{{ partial "shortcodes/tabs.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "Simple text be poss'ble here..."
      "content" (partial "shortcodes/tabs.html" (dict
        "page" .
        "content" (slice
          (dict
            "content" "Python be **super** easy.\n\n- most o' th' time.\n- if ye don't want t' output unicode"
            "title" "python"
          )
          (dict
            "content" "Bash be fer **hackers**."
            "title" "bash"
          )
        )
        "groupid" "tabs-example-language"
      ))
      "title" "Text"
    )
    (dict
      "color" "darkorchid"
      "content" "...but no markdown"
      "content" (partial "shortcodes/tabs.html" (dict
        "page" .
        "content" (slice
          (dict
            "content" "```python\nprint(\"Hello World!\")\n```"
            "title" "python"
          )
          (dict
            "content" "```bash\necho \"Hello World!\"\n```"
            "title" "bash"
          )
        )
        "groupid" "tabs-example-language"
      ))
      "style" "default"
      "title" "Code"
    )
  )
  "groupid" "main"
  "icon" "thumbtack"
  "style" "primary"
  "title" "Rationale"
)}}
Rationale
​

Python be super easy.

  • most o' th' time.
  • if ye don’t want t' output unicode
Bash be fer hackers.
​
print("Hello World!")
echo "Hello World!"

Single Code Block wit' Collapsed Margins

​
{{% tab title="Code" %}}
```python
printf("Hello World!");
```
{{% /tab %}}
{{ partial "shortcodes/tab.html" (dict
  "page" .
  "content" "```python\nprintf(\"Hello World!\");\n```"
  "title" "Code"
)}}
​
printf("Hello World!");

Mixed Marrrkdown Rrrambl'n

​
{{% tab title="_**Mixed**_" %}}
A tab cannot only contain code but arbitrary text. In this case text **an'** code will get a margin.
```python
printf("Hello World!");
```
{{% /tab %}}
{{ partial "shortcodes/tab.html" (dict
  "page" .
  "content" "A tab cannot only contain code but arbitrary text. In this case text **and** code will get a margin.\n```python\nprintf(\"Hello World!\");\n```"
  "title" "_**Mixed**_"
)}}
​

A tab cannot only contain code but arbitrary text. In this case text an' code will get a margin.

printf("Hello World!");

Ay'con wit' Hint

A tab show'n noth'n but an ay'con needs a hint: it be shown as a tooltip an' be what assistive technology announces fer th' tab.

​
{{< tabs >}}
{{% tab hint="Download" ay'con="download" %}}Get th' theme from its repository.{{% /tab %}}
{{% tab hint="Configure" ay'con="gears" %}}Set th' options 'n yer `hugo.toml`.{{% /tab %}}
{{< /tabs >}}
{{ partial "shortcodes/tabs.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "Get th' theme from its repository."
      "hint" "Download"
      "icon" "download"
    )
    (dict
      "content" "Set th' options 'n yer `hugo.toml`."
      "hint" "Configure"
      "icon" "gears"
    )
  )
)}}
​
Get th' theme from its repository.
Set th' options 'n yer hugo.toml.

Understand'n style an' color Behavior

Th' style parameter affects how th' color parameter be applied.

​
{{< tabs >}}
{{% tab style="blue" title="just colored style" %}}
Th' `style` parameter be set t' a color style.

This will set th' background t' a lighter version o' th' chosen style color as configured 'n yer theme variant.
{{% /tab %}}
{{% tab color="blue" title="just color" %}}
Only th' `color` parameter be set.

This will set th' background t' a lighter version o' th' chosen CSS color value.
{{% /tab %}}
{{% tab color="blue" style="default" title="default style an' color" %}}
Th' `style` parameter affects how th' `color` parameter be applied.

Th' `default` style will set th' background t' yer `--MAIN-BG-color` as configured fer yer theme variant resembl'n th' default style but wit' different color.
{{% /tab %}}
{{% tab style="info" title="just severity style" %}}
Th' `style` parameter be set t' a severity style.

This will set th' background t' a lighter version o' th' chosen style color as configured 'n yer theme variant an' also affects th' chosen ay'con.
{{% /tab %}}
{{% tab color="blue" style="info" title="severity style an' color" %}}
Th' `style` parameter affects how th' `color` parameter be applied.

This will set th' background t' a lighter version o' th' chosen CSS color value an' also affects th' chosen ay'con.
{{% /tab %}}
{{< /tabs >}}
{{ partial "shortcodes/tabs.html" (dict
  "page" .
  "content" (slice
    (dict
      "content" "The `style` parameter be set t' a color style.\n\nThis will set th' background t' a lighter version o' th' chosen style color as configured 'n yer theme variant."
      "style" "blue"
      "title" "just colored style"
    )
    (dict
      "color" "blue"
      "content" "Only th' `color` parameter be set.\n\nThis will set th' background t' a lighter version o' th' chosen CSS color value."
      "title" "just color"
    )
    (dict
      "color" "blue"
      "content" "The `style` parameter affects how th' `color` parameter be applied.\n\nThe `default` style will set th' background t' yer `--MAIN-BG-color` as configured fer yer theme variant resembl'n th' default style but wit' different color."
      "style" "default"
      "title" "default style an' color"
    )
    (dict
      "content" "The `style` parameter be set t' a severity style.\n\nThis will set th' background t' a lighter version o' th' chosen style color as configured 'n yer theme variant an' also affects th' chosen ay'con."
      "style" "info"
      "title" "just severity style"
    )
    (dict
      "color" "blue"
      "content" "The `style` parameter affects how th' `color` parameter be applied.\n\nThis will set th' background t' a lighter version o' th' chosen CSS color value an' also affects th' chosen ay'con."
      "style" "info"
      "title" "severity style an' color"
    )
  )
)}}
​

Th' style parameter be set t' a color style.

This will set th' background t' a lighter version o' th' chosen style color as configured 'n yer theme variant.

Only th' color parameter be set.

This will set th' background t' a lighter version o' th' chosen CSS color value.

Th' style parameter affects how th' color parameter be applied.

Th' default style will set th' background t' yer --MAIN-BG-color as configured fer yer theme variant resembl'n th' default style but wit' different color.

Th' style parameter be set t' a severity style.

This will set th' background t' a lighter version o' th' chosen style color as configured 'n yer theme variant an' also affects th' chosen ay'con.

Th' style parameter affects how th' color parameter be applied.

This will set th' background t' a lighter version o' th' chosen CSS color value an' also affects th' chosen ay'con.

Tree

Th' tree shortcode displays text as a tree wit' configur'ble ay'cons an' colors.

  • home

Usage

​
```tree
- home | folder
  - [.config](http://example.com) | folder
  - My Documents | folder | magic
    - home.php | fa-fw fab fa-php | #888cc4
```
{{% tree %}}
- home | folder
  - [.config](http://example.com) | folder
  - My Documents | folder | magic
    - home.php | fa-fw fab fa-php | #888cc4
{{% /tree %}}
{{ partial "shortcodes/tree.html" (dict
  "page" .
  "content" "- home | folder\r\n  - [.config](http://example.com) | folder\r\n  - My Documents | folder | magic\r\n    - home.php | fa-fw fab fa-php | #888cc4"
)}}

Marrrkdown codefence rules be widely avail'ble 'n other Marrrkdown parsers like GitHub an' therefore be th' recommended rules fer generat'n portable Marrrkdown.

Parameters

Name Default Notes
<content> <empty> Yer list as Marrrkdown or from yer favorite tree commandline tool.

Item Rules

<NAME> [ | <ICON> [ | <COLOR> ] ]

Th' NAME can be followed by an optional pipe (|) t' define an ICON an' further optional pipe t' define th' icon’s COLOR.

  • ICON: Font Awesome ay'con name set t' th' left o' th' NAME. If ye give a single str'n, it be selected from Font Awesome’s solid ay'cons. If ye want t' use a different set, ye have t' give th' complete styles. See above example fer th' home.php.

  • COLOR: Th' CSS color value t' be used. If not set, th' primary color will be used.

    Ye can also set a style value known from other shorrrtcodes.

    • by severity: caution, important, info, note, tip, warning
    • by brand color: primary, secondary, accent
    • by color: blue, cyan, green, grey, magenta, orange, red
    • by special color: default, transparent, code, link, action, inline
    • ye can also define yer own styles.

    If a style an' a named HTML color have th' same name, th' style color will be used.

Examples

tree Command Output

Use th' tree command o' yer favorite operat'n system an' dump it right into th' shortcode. Avast, that th' directory marker (here C:.) be removed if present.

​
```tree
C:.
β”‚   featured.png
β”‚   index.en.md
β”‚   index.pir.md
β”‚   MaybeTreasure.en.txt
β”‚   MaybeTreasure.pir.txt
β”‚   NoTreasure.en.txt
β”‚   Treasure.pir.txt
β”‚
└───subdir
        hugo.png
```
{{% tree %}}
C:.
β”‚   featured.png
β”‚   index.en.md
β”‚   index.pir.md
β”‚   MaybeTreasure.en.txt
β”‚   MaybeTreasure.pir.txt
β”‚   NoTreasure.en.txt
β”‚   Treasure.pir.txt
β”‚
└───subdir
        hugo.png
{{% /tree %}}
{{ partial "shortcodes/tree.html" (dict
  "page" .
  "content" "C:.\r\nβ”‚   featured.png\r\nβ”‚   index.en.md\r\nβ”‚   index.pir.md\r\nβ”‚   MaybeTreasure.en.txt\r\nβ”‚   MaybeTreasure.pir.txt\r\nβ”‚   NoTreasure.en.txt\r\nβ”‚   Treasure.pir.txt\r\nβ”‚\r\n└───subdir\r\n        hugo.png"
)}}
  • featured.png
  • index.en.md
  • index.pir.md
  • MaybeTreasure.en.txt
  • MaybeTreasure.pir.txt
  • NoTreasure.en.txt
  • Treasure.pir.txt
  • subdir
    • hugo.png

Marrrkdown List wit' Styled Items

Every poss'ble combinat'n

​
```tree
- just names
  - Document
  - My Document
  - [My linked Document](http://example.com)
- simple ay'cons | folder
  - Document | file
  - My Document | file
- mindblow'n ay'cons
  - index.md | fa-fw fab fa-markdown
  - index.html | fa-fw fab fa-html5
- an' now wit' color
  - script.php | fa-fw fab fa-php | purple
  - alt script.php | fa-fw fab fa-php | #888cc4
  - magic.php | fa-fw fab fa-php | magic
```
{{% tree %}}
- just names
  - Document
  - My Document
  - [My linked Document](http://example.com)
- simple ay'cons | folder
  - Document | file
  - My Document | file
- mindblow'n ay'cons
  - index.md | fa-fw fab fa-markdown
  - index.html | fa-fw fab fa-html5
- an' now wit' color
  - script.php | fa-fw fab fa-php | purple
  - alt script.php | fa-fw fab fa-php | #888cc4
  - magic.php | fa-fw fab fa-php | magic
{{% /tree %}}
{{ partial "shortcodes/tree.html" (dict
  "page" .
  "content" "- just names\r\n  - Document\r\n  - My Document\r\n  - [My linked Document](http://example.com)\r\n- simple ay'cons | folder\r\n  - Document | file\r\n  - My Document | file\r\n- mindblow'n icons\r\n  - index.md | fa-fw fab fa-markdown\r\n  - index.html | fa-fw fab fa-html5\r\n- an' now wit' color\r\n  - script.php | fa-fw fab fa-php | purple\r\n  - alt script.php | fa-fw fab fa-php | #888cc4\r\n  - magic.php | fa-fw fab fa-php | magic"
)}}
  • just names
  • simple ay'cons
    • Document
    • My Document
  • mindblow'n ay'cons
    • index.md
    • index.html
  • an' now wit' color
    • script.php
    • alt script.php
    • magic.php