If ye be creat'n yer Marrrkdown files manually, ye can achieve th' same by just sett'n type='chapter' 'n th' front matter.
Yer result'n Marrrkdown file needs t' have at least th' type front matter set t' th' value o' th' plank design
+++title="Chapter 1"type="chapter"+++
Predefined Designs
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
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 chapter1/_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.
Default
A Default plank be any other rrrambl'n plank.
T' create a default plank, run either one o' th' follow'n commands
Opt'n All configurat'n opt'ns 'n yer hugo.toml apply t' all menus but can be changed individually.
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'nFront 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
alwaysopen=false
alwaysopen:false
{"alwaysopen":false}
Expander fer Submenus
Opt'nFront 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.
collapsibleMenu=true
collapsibleMenu:true
{"collapsibleMenu":true}
Arrr
Us'n this opt'n 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 Weight
Front MatterMenu Cap'n Hugo provides a simple way t' handle order o' yer entries by sett'n th' weight front matter t' a number.
Cap'n Hugo menus can only be sorted us'n th' weight method.
weight=5
weight:5
{"weight":5}
By Other
Us'n th' weight fer sort'n can get cumbersome if ye, fer example, just want t' sort alphabetically. Each time ye add a new plank 'n th' set o' planks, ye may have t' renumber some or all o' them t' make space fer th' new plank.
Opt'nFront Matter Use ordersectionsby t' sort by other aspects. See th' children shortcode fer a complete list.
ordersectionsby='linktitle'
ordersectionsby:linktitle
{"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
+++linkTitle='Linux'title='Install on Linux'+++
---linkTitle:Linuxtitle: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.
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 first-chapter/first-page 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/first-chapter/first-page/_index.md an' add th' follow'n front matter
+++[_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.
Front Matter For plank menus, set th' menuTitle front matter fer th' root plank o' th' menu. For example 'n th' home plank fer th' default sidebar menu. If no menuTitle 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.
+++[menu][[menu.addendum]]name='A Menu Title fer th' Whole Menu'[[menu.addendum]]name='A Menu Entry Title fer Child 1'parent='Parent'url='https://example.com/1'weight=1[[menu.addendum]]name='A Menu Entry Title fer Child 2'parent='Parent'url='https://example.com/2'weight=2+++
---menu:addendum:- name:A Menu Title fer th' Whole Menu- name:A Menu Entry Title fer Child 1parent:Parenturl:https://example.com/1weight:1- name:A Menu Entry Title fer Child 2parent:Parenturl:https://example.com/2weight:2---
{"menu":{"addendum":[{"name":"A Menu Title fer th' Whole Menu"},{"name":"A Menu Entry Title fer Child 1","parent":"Parent","url":"https://example.com/1","weight":1},{"name":"A Menu Entry Title fer Child 2","parent":"Parent","url":"https://example.com/2","weight":2}]}}
Defin'n Sidebar Menus
Opt'nFront Matter Menus be defined us'n th' sidebarmenus opt'n.
Ye can define as many menus, as ye like. If ye don’t overwrite this opt'n, th' theme defaults t'
- plank fer a plank menu - menu fer a Cap'n Hugo menu
identifier
<empty>
A unique identifier fer this entry
- fer type=page an arbitrary name - fer page=menu th' identifier o' th' menu definit'n 'n yer hugo.toml
main
see notes
Whether t' add additional spac'n an' larger text t' th' menu
- fer type=page defaults t' true - fer page=menu defaults t' false
disableTitle
see notes
Whether t' print a title above th' menu
- fer type=page defaults t' true - fer page=menu defaults t' false
pageRef
<empty>
Only fer type=page, th' plank path t' start th' menu tree. If not set, defaults t' th' home plank.
Redefin'n Sidebar Menus fer Certain Planks
Suppose ye be build'n a ship that contains a topmost blog an' documentat'n section.
When th' user be on one o' th' blog planks he should only see a menu contain'n all blog planks, while on a documentat'n plank he should only see a menu contain'n all doc planks.
Opt'nFront Matter Us'n Hugo’s cascade feature, we can redefine th' menus once 'n blog/_index.md an' docs/_index.md sett'n sidebarmenus so they will be used 'n all children planks.
Opt'nFront Matter By default, external links open 'n a new tab. T' change this, use th' externalLinkTarget sett'n wit' a proper link target.
For example, this will open links 'n th' same tab
externalLinkTarget='_self'
externalLinkTarget:_self
{"externalLinkTarget":"_self"}
Enabl'n Link an' Image Link Warn'ns
Opt'nFront Matter Ye can use link.errorlevel an' image.errorlevel t' control what should happen if a local link can not 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 can not 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.
more: opens th' overlay if screen space be limited
T'ble o' Contents
Opt'nFront 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}
Breadcrumbs
Opt'nFront Matter Set disableBreadcrumb=true t' hide th' breadcrumb 'n th' topbar.
Opt'nFront 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.
Opt'nFront Matter Ye can hide th' previous/next buttons by sett'n disableNextPrev=true. If th' buttons be hidden, also th' keyboard shortcuts be disabled.
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.
+++# If an opt'n 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 opt'ns 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 opt'ns be specific t' th' Relearrrn theme.#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# Topbar# These opt'ns modify th' topbar appearance.# Hide th' t'ble 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 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 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=''#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# Menu# These opt'ns 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=''# Th' order o' navigat'n menu submenus.# Default: 'weight'# Submenus can be ordered by 'weight', 'title', 'linktitle', 'modifieddate',# '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 opt'n.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.# If not set, th' set value o' yer site's hugo.toml be used.collapsibleMenu=true# Define yer own sidebar menus.# Default: th' value used below# Th' sidebar menus be built from this parameter. If not set, th' set value# o' yer site's hugo.toml be used an' contains th' below default.# Menus be written from th' sidebar's top t' buttom 'n th' order given 'n# this array.# Each entry can contain th' follow'n keys:# - `type` be mandatory. Either `page` 'n case it should generate a tre from# th' plank structure or `menu` 'n case it should generate a tree from a# defined menu.# - `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`# - `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# `menuTitle` 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.sidebarmenus=[{type='page',identifier='home',main=true,disableTitle=true,pageRef=''},{type='menu',identifier='shortcuts',main=false,disableTitle=false},]#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# Hidden planks# These opt'ns 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 opt'ns 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 opt'ns 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 opt'n.# 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 opt'ns 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.# If not set, th' set value o' yer site's hugo.toml be used.include.errorlevel=''#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# Images# These opt'ns 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.# 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: falseimageEffects.border=true# Default: trueimageEffects.lazy=true# Default: trueimageEffects.lightbox=true# Default: falseimageEffects.shadow=false#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# Links# These opt'ns configure how links be displayed.# 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.# If not set, th' set value o' yer site's hugo.toml be used.link.errorlevel=''# 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 not set, th' set value o' yer site's hugo.toml be used.externalLinkTarget='_self'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# MathJax# These opt'ns configure how math formulae be displayed.# Initializat'n opt'ns fer MathJax.# Default: not set# A JSON value. See th' MathJaxdocumentat'n fer poss'ble parameter.# If not set, th' set value o' yer site's hugo.toml be used.mathJaxInitialize='{}'# Force board Math on every plank.# Default: false# If a, Math shortcode or codefence be found, th' opt'n will be ignored an'# Math will be boarded regardlessly. This opt'n be useful 'n case ye# be us'n passthrough configurat'n t' render yer math. In this case no shortcode or# codefence be involved an' th' library be not boarded by default so ye can# force load'n it by sett'n `math=true`.# This opt'n has an alias `math.force`.# If not set, th' set value o' yer site's hugo.toml be used.math=false# URL fer external MathJax library.# Default: not set# Specifies th' remote locat'n o' th' MathJax library. By default th' shipped# version will be used.# If not set, th' set value o' yer site's hugo.toml be used.customMathJaxURL=''# 'https://unpkg.com/mathjax/es5/tex-mml-chtml.js'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# Merrrmaid# These opt'ns 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 opt'ns 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' opt'n will be ignored an'# Merrrmaid will be boarded regardlessly. This opt'n 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 load'n it by sett'n `mermaid.force=true`.# If not set, th' set value o' yer site's hugo.toml be used.mermaid.force=false# URL fer external Merrrmaid library.# Default: not set# Specifies th' remote locat'n o' th' Merrrmaid library. By default th' shipped# version will be used.# If not set, th' set value o' yer site's hugo.toml be used.customMermaidURL=''# 'https://unpkg.com/mermaid/dist/mermaid.min.js'#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# OpenApi# These opt'ns configure how OpenAPI specificat'ns be displayed.# Board OpenAPI on every plank.# Default: false# If a, OpenAPI shortcode or codefence be found, th' opt'n will be ignored an'# OpenAPI will be boarded regardlessly. This opt'n 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 load'n it by sett'n `openapi.force=true`.# If not set, th' set value o' yer site's hugo.toml be used.oppenapi.force=false# URL fer external OpenAPI library.# Default: not set# Specifies th' remote locat'n o' th' OpenAPI library. By default th' shipped# version will be used.# If not set, th' set value o' yer site's hugo.toml be used.customOpenapiURL=''# 'https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js'# 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.# If not set, th' set value o' yer site's hugo.toml be used.openapi.errorlevel=''+++