First batch of day one

This commit is contained in:
2024-03-19 14:59:45 +01:00
commit 8a45c2a0a5
820 changed files with 93341 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
# https://editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
trim_trailing_whitespace = true
[*.css]
indent_size = 4
[*.js]
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,43 @@
#!/usr/bin/env python3
# This script avoids to push branches starting with a "#". This is the way
# how I store ticket related feature branches that are work in progress.
# Once a feature branch is finished, it will be rebased to mains HEAD,
# its commits squashed, merged into main and the branch deleted afterwards.
# Call this script from your ".git/hooks/pre-push" file like this (supporting
# Linux, Windows and MacOS)
# #!/bin/sh
# echo 'execute .githooks/pre-push.py' >> .githooks/hooks.log
# python3 .githooks/pre-push.py
from datetime import datetime
import re
import subprocess
# This hook is called with the following parameters:
# $1 -- Name of the remote to which the push is being done
# $2 -- URL to which the push is being done
# If pushing without using a named remote, those arguments will be equal.
# Information about the commits being pushed is supplied as lines to
# the standard input in the form:
# <local ref> <local sha1> <remote ref> <remote sha1>
# This hook prevents the push of commits that belong to branches starting with
# an "#" (which are work in progress).
def main():
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
local_branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD'], universal_newlines=True).strip()
wip_prefix = '^#\\d+(?:\\b.*)$'
if re.match(wip_prefix, local_branch):
print(f'{time}: Branch "{local_branch}" was not pushed because its name starts with a "#" which marks it as work in progress', file=open(".githooks/hooks.log", "a"))
print(f'Branch "{local_branch}" was not pushed because its name starts with a "#" which marks it as work in progress')
exit(1)
print(f'{time}: Branch "{local_branch}" was pushed', file=open(".githooks/hooks.log", "a"))
exit(0)
if __name__ == "__main__":
main()

View File

@@ -0,0 +1 @@
github: [McShelby]

View File

@@ -0,0 +1,14 @@
name: Build site
description: Builds the Hugo exampleSite for later deploy on GitHub-Pages
runs:
using: composite
steps:
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
- name: Build site
shell: bash
run: |
hugo --source ${GITHUB_WORKSPACE}/exampleSite --destination ${GITHUB_WORKSPACE}/../public --cleanDestinationDir --environment github --theme ${GITHUB_WORKSPACE}

View File

@@ -0,0 +1,105 @@
name: Check milestone
description: Checks if the given milestone and its according tag are valid to be released
inputs:
milestone:
description: Milestone for this release
required: true
github_token:
description: Secret GitHub token
required: true
outputs:
outcome:
description: Result of the check, success or failure
value: ${{ steps.outcome.outputs.outcome }}
runs:
using: composite
steps:
- name: Get closed issues for milestone
id: closed_issues
uses: octokit/graphql-action@v2.x
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
with:
query: |
query {
search(first: 1, type: ISSUE, query: "user:${{ github.repository_owner }} repo:${{ github.event.repository.name }} milestone:${{ env.MILESTONE }} state:closed") {
issueCount
}
}
- name: Get open issues for milestone
id: open_issues
uses: octokit/graphql-action@v2.x
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
with:
query: |
query {
search(first: 1, type: ISSUE, query: "user:${{ github.repository_owner }} repo:${{ github.event.repository.name }} milestone:${{ env.MILESTONE }} state:open") {
issueCount
}
}
- name: Get old version number
id: oldvers
uses: andstor/file-reader-action@v1
with:
path: layouts/partials/version.txt
- name: Get old main version number
id: oldmainvers
uses: ashley-taylor/regex-property-action@v1
with:
value: ${{ steps.oldvers.outputs.contents }}
regex: (\d+)\.(\d+)\.\d+.*
replacement: '$1\.$2'
- name: Get current patch version number
id: patchvers
uses: ashley-taylor/regex-property-action@v1
env:
MILESTONE: ${{ inputs.milestone }}
with:
value: ${{ env.MILESTONE }}
regex: \d+\.\d+\.(\d+)
replacement: "$1"
- name: Get migration notes
id: migrationnotes
uses: andstor/file-reader-action@v1
with:
path: exampleSite/content/basics/migration/_index.en.md
- name: Check for old migration notes
id: hasoldnotes
uses: ashley-taylor/regex-property-action@v1
with:
value: ${{ steps.migrationnotes.outputs.contents }}
regex: '.*?[\n\r\s]*<!--GH-ACTION-RELEASE-MILESTONE-->[\n\r\s]*-*\s*[\n\r\s]*?[\n\r]+##\s+${{ steps.oldmainvers.outputs.value }}\.0\s+.*?[\n\r][\n\r\s]*.*'
flags: gs
replacement: '1'
- name: Set outcome
id: outcome
shell: bash
run: |
if [ "${{ fromJSON(steps.closed_issues.outputs.data).search.issueCount > 0 && fromJSON(steps.open_issues.outputs.data).search.issueCount == 0 && ( (steps.patchvers.outputs.value!='0'&&steps.hasoldnotes.outputs.value=='1') || (steps.patchvers.outputs.value=='0'&&steps.hasoldnotes.outputs.value!='1') ) }}" = "true" ]; then
echo "outcome=success" >> $GITHUB_OUTPUT
else
echo "outcome=failure" >> $GITHUB_OUTPUT
fi
- name: Log results and exit
shell: bash
run: |
echo outcome : ${{ steps.outcome.outputs.outcome }}
echo has closed issues : ${{ fromJSON(steps.closed_issues.outputs.data).search.issueCount > 0 }}
echo has open issues : ${{ fromJSON(steps.open_issues.outputs.data).search.issueCount > 0 }}
echo is patch version : ${{ steps.patchvers.outputs.value != '0' }}
echo has old main notes : ${{ steps.hasoldnotes.outputs.value == '1' }}
echo are notes okay : ${{ (steps.patchvers.outputs.value!='0'&&steps.hasoldnotes.outputs.value=='1') || (steps.patchvers.outputs.value=='0'&&steps.hasoldnotes.outputs.value!='1') }}
if [ "${{ steps.outcome.outputs.outcome }}" = "failure" ]; then
exit 1
fi

View File

@@ -0,0 +1,17 @@
name: Deploy site
description: Deploys a built site on GitHub-Pages
inputs:
github_token:
description: Secret GitHub token
required: true
runs:
using: composite
steps:
- name: Deploy site
uses: peaceiris/actions-gh-pages@v3
env:
GITHUB_TOKEN: ${{ inputs.github_token }}
GITHUB_WORKSPACE: ${{ github.workspace }}
with:
github_token: ${{ env.GITHUB_TOKEN }}
publish_dir: ${{ env.GITHUB_WORKSPACE }}/../public

View File

@@ -0,0 +1,172 @@
name: Release milestone
description: Creates a release and tag out of a given milestone
inputs:
milestone:
description: Milestone for this release
required: true
github_token:
description: Secret GitHub token
required: true
runs:
using: composite
steps:
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: '16'
- name: Setup git
shell: bash
env:
GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
git config user.name "GitHub Actions Bot"
git config user.email "<>"
- name: Get current date
id: date
uses: Kaven-Universe/github-action-current-date-time@v1
with:
format: 'YYYY-MM-DD'
- name: Get current main version number
id: mainvers
uses: ashley-taylor/regex-property-action@v1
env:
MILESTONE: ${{ inputs.milestone }}
with:
value: ${{ env.MILESTONE }}
regex: (\d+\.\d+)\.\d+
replacement: "$1"
- name: Get current main version number for anchoring
id: mainanchor
uses: ashley-taylor/regex-property-action@v1
env:
MILESTONE: ${{ inputs.milestone }}
with:
value: ${{ env.MILESTONE }}
regex: (\d+)\.(\d+)\.\d+
replacement: "$1$2"
- name: Get current major version number
id: majorvers
uses: ashley-taylor/regex-property-action@v1
env:
MILESTONE: ${{ inputs.milestone }}
with:
value: ${{ env.MILESTONE }}
regex: (\d+)\.\d+\.\d+
replacement: "$1"
- name: Get next version number
id: nextvers
uses: WyriHaximus/github-action-next-semvers@v1
env:
MILESTONE: ${{ inputs.milestone }}
with:
version: ${{ env.MILESTONE }}
- name: Close milestone
uses: Akkjon/close-milestone@v2.1.0
continue-on-error: true
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
with:
milestone_name: ${{ env.MILESTONE }}
- name: Create temporary tag
shell: bash
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
git tag --message "" "$MILESTONE" || true
git push origin "$MILESTONE" || true
git tag --force --message "" "$MILESTONE"
git push --force origin "$MILESTONE"
- name: Update migration docs
uses: mingjun97/file-regex-replace@v1
with:
regex: '(.)[\n\r\s]*<!--GH-ACTION-RELEASE-MILESTONE-->[\n\r\s]*-*\s*[\n\r\s]*?[\n\r]+##\s*.*?[\n\r][\n\r\s]*(.)'
replacement: "$1\n\n<!--GH-ACTION-RELEASE-MILESTONE-->\n\n---\n\n## ${{ steps.mainvers.outputs.value }}.0 (${{ steps.date.outputs.time }}) {#${{ steps.mainanchor.outputs.value }}0}\n\n$2"
include: exampleSite/content/basics/migration/_index.en.md
- name: Update generator version
shell: bash
env:
MILESTONE: ${{ inputs.milestone }}
run: |
echo -n "$MILESTONE" > layouts/partials/version.txt
- name: Update changelog
shell: bash
env:
GITHUB_TOKEN: ${{ inputs.github_token }}
GREN_GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
npx github-release-notes@0.17.1 changelog --generate --override --tags=all
- name: Commit updates
shell: bash
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
GREN_GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
git add *
git commit --message "Ship tag $MILESTONE"
git push origin main
- name: Create final tag
shell: bash
env:
MILESTONE: ${{ inputs.milestone }}
MILESTONE_MINOR: ${{ steps.mainvers.outputs.value }}
MILESTONE_MAJOR: ${{ steps.majorvers.outputs.value }}
GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
git tag --force --message "" "$MILESTONE"
git push --force origin "$MILESTONE"
git tag --message "" "$MILESTONE_MINOR.x" || true
git push origin "$MILESTONE_MINOR.x" || true
git tag --force --message "" "$MILESTONE_MINOR.x"
git push --force origin "$MILESTONE_MINOR.x"
git tag --message "" "$MILESTONE_MAJOR.x" || true
git push origin "$MILESTONE_MAJOR.x" || true
git tag --force --message "" "$MILESTONE_MAJOR.x"
git push --force origin "$MILESTONE_MAJOR.x"
git tag --message "" "x" || true
git push origin "x" || true
git tag --force --message "" "x"
git push --force origin "x"
- name: Publish release
shell: bash
env:
MILESTONE: ${{ inputs.milestone }}
GREN_GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
npx github-release-notes@0.17.1 release --tags "$MILESTONE"
- name: Update version number to mark non-release version
shell: bash
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
run: |
echo -n "$MILESTONE+tip" > layouts/partials/version.txt
git add *
git commit --message "Mark non-release version"
git push origin main
- name: Create next patch milestone
uses: WyriHaximus/github-action-create-milestone@v1
continue-on-error: true
env:
MILESTONE: ${{ inputs.milestone }}
GITHUB_TOKEN: ${{ inputs.github_token }}
with:
title: ${{ steps.nextvers.outputs.patch }}

View File

@@ -0,0 +1,25 @@
name: docs-build-deployment
on:
push: # Build on all pushes but only deploy for main branch
workflow_dispatch: # Allow this task to be manually started (you'll never know)
jobs:
deploy:
name: Run deploy
runs-on: ubuntu-latest
if: github.event_name != 'push' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: true # Fetch Hugo themes (true OR recursive)
# fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod - not necessary for this repo
- name: Build site
uses: ./.github/actions/build_site
- name: Deploy site
uses: ./.github/actions/deploy_site
with:
github_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,21 @@
name: docs-build
on:
push: # Build on all pushes but only deploy for main branch
pull_request: # Build on all PRs regardless what branch
workflow_dispatch: # Allow this task to be manually started (you'll never know)
jobs:
ci:
name: Run build
runs-on: ubuntu-latest
if: github.event_name != 'push' || (github.event_name == 'push' && github.ref != 'refs/heads/main')
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: true # Fetch Hugo themes (true OR recursive)
# fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod - not necessary for this repo
- name: Build site
uses: ./.github/actions/build_site

View File

@@ -0,0 +1,42 @@
name: version-release
on:
workflow_dispatch:
inputs:
milestone:
description: 'Milestone for this release'
required: true
jobs:
release:
name: Run release
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: true # Fetch Hugo themes (true OR recursive)
# fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod - not necessary for this repo
- name: Check milestone
id: check
uses: ./.github/actions/check_milestone
with:
milestone: ${{ github.event.inputs.milestone }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Create release
if: ${{ steps.check.outputs.outcome == 'success' }}
uses: ./.github/actions/release_milestone
with:
milestone: ${{ github.event.inputs.milestone }}
github_token: ${{ secrets.GITHUB_TOKEN }}
# We need to deploy the site again to show the updated changelog
- name: Build site
uses: ./.github/actions/build_site
- name: Deploy site
uses: ./.github/actions/deploy_site
with:
github_token: ${{ secrets.GITHUB_TOKEN }}

7
themes/hugo-theme-relearn/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
.DS_Store
.githooks/hooks.log
.hugo_build.lock
exampleSite/public*
exampleSite/hugo*.exe
**/*.xcf
**/*.zip

View File

@@ -0,0 +1,48 @@
module.exports = {
changelogFilename: "exampleSite/content/basics/CHANGELOG.md",
dataSource: "milestones",
groupBy: {
"Enhancements": [
"feature",
],
"Fixes": [
"bug"
],
"Maintenance": [
"task",
],
"Uncategorised": [
"closed",
],
},
ignoreLabels: [
"blocked",
"browser",
"device",
"helpwanted",
"hugo",
"mermaid",
"needsfeedback",
"undecided",
],
ignoreIssuesWith: [
"discussion",
"documentation",
"duplicate",
"invalid",
"support",
"update",
"unresolved",
"wontfix",
],
ignoreTagsWith: [
"Relearn",
"x",
],
milestoneMatch: "{{tag_name}}",
onlyMilestones: true,
template: {
group: "\n### {{heading}}\n",
release: ({ body, date, release }) => `## ${release} (` + date.replace( /(\d+)\/(\d+)\/(\d+)/, '$3-$2-$1' ) + `)\n${body}`,
},
};

View File

@@ -0,0 +1,7 @@
{
"schedule": "daily",
"ignoredFiles": [
"static/*"
],
"prTitle": "autobot: optimize images"
}

View File

@@ -0,0 +1,7 @@
# Integration with Issue Tracker
#
# (note that '\' need to be escaped).
[issuetracker "GitHub Rule"]
regex = "#(\\d+)"
url = "https://github.com/McShelby/hugo-theme-relearn/issues/$1"

View File

@@ -0,0 +1,23 @@
The MIT License (MIT)
Copyright (c) 2021 Sören Weber
Copyright (c) 2017 Valere JEANTET
Copyright (c) 2016 MATHIEU CORNIC
Copyright (c) 2014 Grav
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,81 @@
# Hugo Relearn Theme
A theme for [Hugo](https://gohugo.io/) designed for documentation.
[★ What's new in the latest release ★](https://mcshelby.github.io/hugo-theme-relearn/basics/migration)
![Image of the Relearn theme in light and dark mode on phone, tablet and desktop](https://github.com/McShelby/hugo-theme-relearn/raw/main/images/hero.png)
## Motivation
The Relearn theme is a fork of the great [Learn theme](https://github.com/matcornic/hugo-theme-learn) with the aim of fixing long outstanding bugs and adapting to latest Hugo features. As far as possible this theme tries to be a drop-in replacement for the Learn theme.
## Features
- **Wide set of usage scenarios**
- Responsive design for mobile usage
- Looks nice on paper (if it has to)
- Usable offline, no external dependencies
- [Usable from your local file system via `file://` protocol](https://mcshelby.github.io/hugo-theme-relearn/basics/customization#file-system)
- Support for the [VSCode Front Matter extension](https://github.com/estruyf/vscode-front-matter) for on-premise CMS capabilities
- Support for Internet Explorer 11
- [Support for Open Graph and Twitter Cards](https://mcshelby.github.io/hugo-theme-relearn/basics/customization#social-media-meta-tags)
- **Configurable theming and visuals**
- [Configurable brand images](https://mcshelby.github.io/hugo-theme-relearn/basics/branding#change-the-logo)
- [Automatic switch for light/dark variant dependend on your OS settings](https://mcshelby.github.io/hugo-theme-relearn/basics/branding#adjust-to-os-settings)
- Predefined light, dark and color variants
- [User selectable variants](https://mcshelby.github.io/hugo-theme-relearn/basics/branding#multiple-variants)
- [Stylesheet generator](https://mcshelby.github.io/hugo-theme-relearn/basics/generator)
- [Configurable syntax highlighting](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/highlight)
- **Unique theme features**
- [Print whole chapters or even the complete site](https://mcshelby.github.io/hugo-theme-relearn/basics/customization#activate-print-support)
- In page search
- [Site search](https://mcshelby.github.io/hugo-theme-relearn/basics/customization#activate-search)
- [Dedicated search page](https://mcshelby.github.io/hugo-theme-relearn/basics/customization#activate-dedicated-search-page)
- [Taxonomy support](https://mcshelby.github.io/hugo-theme-relearn/cont/taxonomy)
- [Configurable topbar buttons](https://mcshelby.github.io/hugo-theme-relearn/basics/topbar)
- [Unlimited nested menu items](https://mcshelby.github.io/hugo-theme-relearn/cont/pages)
- [Configurable shortcut links](https://mcshelby.github.io/hugo-theme-relearn/cont/menushortcuts)
- Hidden pages
- **Multi language support**
- [Full support for languages written right to left](https://mcshelby.github.io/hugo-theme-relearn/cont/i18n)
- [Available languages](https://mcshelby.github.io/hugo-theme-relearn/cont/i18n#basic-configuration): Arabic, Simplified Chinese, Traditional Chinese, Czech, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Swahili, Turkish, Vietnamese
- [Search support for mixed language content](https://mcshelby.github.io/hugo-theme-relearn/cont/i18n#search)
- **Additional Markdown features**
- [Support for GFM (GitHub Flavored Markdown)](https://mcshelby.github.io/hugo-theme-relearn/cont/markdown)
- [Image effects like sizing, shadow, border and alignment](https://mcshelby.github.io/hugo-theme-relearn/cont/markdown#image-effects)
- [Image lightbox](https://mcshelby.github.io/hugo-theme-relearn/cont/markdown#lightbox)
- **Shortcodes galore**
- [Display resources contained in a page bundle](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/resources)
- [Marker badges](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/badge)
- [Configurable buttons](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/button)
- [List child pages](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/children)
- [Expand areas to reveal content](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/expand)
- [Font Awesome icons](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/icon)
- [Inclusion of other files](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/include)
- [Math and chemical formulae using MathJax](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/math)
- [Mermaid diagrams for flowcharts, sequences, gantts, pie, etc.](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/mermaid)
- [Colorful boxes](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/notice)
- [OpenAPI specifications using Swagger UI](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/openapi)
- [Reveal you site's configuration parameter](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/siteparam)
- [Single tabbed panels](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/tab) and [multiple tabbed panels](https://mcshelby.github.io/hugo-theme-relearn/shortcodes/tabs)
## Installation & Usage
For a detailed description of the theme's capabilities visit the [official documentation](https://mcshelby.github.io/hugo-theme-relearn/).
## Changelog
See the [What's New](https://mcshelby.github.io/hugo-theme-relearn/basics/migration) page for release highlights or the detailed [change history](https://mcshelby.github.io/hugo-theme-relearn/basics/history) for a complete list of changes.
## Contributions
You are most welcome to contribute bugfixes or new features. Check the [contribution guidelines](https://mcshelby.github.io/hugo-theme-relearn/dev/contributing) first before starting.
## License
The Relearn theme is licensed under the [MIT License](https://github.com/McShelby/hugo-theme-relearn/blob/main/LICENSE).
## Credits
This theme would not be possible without the work of [many others](https://mcshelby.github.io/hugo-theme-relearn/more/credits).

View File

@@ -0,0 +1,7 @@
+++
archetype = "chapter"
title = "{{ replace .Name "-" " " | title }}"
weight = 1
+++
This is a new chapter.

View File

@@ -0,0 +1,5 @@
+++
title = "{{ replace .Name "-" " " | title }}"
+++
This is a new page.

View File

@@ -0,0 +1,6 @@
+++
archetype = "home"
title = "{{ replace .Name "-" " " | title }}"
+++
This is a new home page.

View File

@@ -0,0 +1,2 @@
@import "{{ printf "%s-%s%s.css" .prefix .light .suffix }}" screen and (prefers-color-scheme: light);
@import "{{ printf "%s-%s%s.css" .prefix .dark .suffix }}" screen and (prefers-color-scheme: dark);

View File

@@ -0,0 +1,174 @@
@import "{{ printf "theme-%s%s.css" .themevariant.identifier .mod }}";
@import "{{ printf "chroma-%s.css" .themevariant.chroma }}";
#R-sidebar {
display: none;
}
#R-body {
margin-left: 0 !important;
margin-right: 0 !important;
min-width: 100% !important;
max-width: 100% !important;
width: 100% !important;
}
#R-body #navigation {
display: none;
}
html{
font-size: 8.763pt;
}
body {
background-color: rgba( 255, 255, 255, 1 );
}
code.copy-to-clipboard-code {
border-start-end-radius: 2px;
border-end-end-radius: 2px;
border-inline-end-width: 1px;
}
pre:not(.mermaid) {
border: 1px solid rgba( 204, 204, 204, 1 );
}
#R-body #R-topbar{
background-color: rgba( 255, 255, 255, 1 ); /* avoid background bleeding*/
border-bottom: 1px solid rgba( 221, 221, 221, 1 );
border-radius: 0;
color: rgba( 119, 119, 119, 1 );
padding-left: 0; /* for print, we want to align with the footer to ease the layout */
padding-right: 0;
}
#R-body .topbar-button {
/* we don't need the buttons while printing */
/* we need !important to turn off JS topbar button handling setting element styles */
display: none !important;
}
@media screen and (max-width: 47.999rem) {
#R-body .topbar-breadcrumbs {
visibility: visible;
}
}
#R-body .copy-to-clipboard-button {
display: none;
}
#R-body .svg-reset-button {
display: none;
}
#R-body h1, #R-body h2, #R-body h3, #R-body .article-subheading, #R-body h4, #R-body h5, #R-body h6 {
/* better contrast for colored elements */
color: rgba( 0, 0, 0, 1 );
}
#R-body th, #R-body td,
#R-body code, #R-body strong, #R-body b,
#R-body li, #R-body dd, #R-body dt,
#R-body p,
#R-body a, #R-body button, #R-body .badge .badge-content {
/* better contrast for colored elements */
color: rgba( 0, 0, 0, 1 );
}
#R-body .anchor{
display: none;
}
#R-body pre:not(.mermaid),
#R-body code {
background-color: rgba( 255, 255, 255, 1 );
border-color: rgba( 221, 221, 221, 1 );
}
hr{
border-bottom: 1px solid rgba( 221, 221, 221, 1 );
}
#R-body #R-body-inner {
overflow: visible; /* turn off limitations for perfect scrollbar */
/* reset paddings for chapters in screen */
padding: 0 3.25rem 4rem 3.25rem;
}
#R-body #R-body-inner h1 {
border-bottom: 1px solid rgba( 221, 221, 221, 1 );
margin-bottom: 2rem;
padding-bottom: .75rem;
}
#R-body-inner .chapter h3:first-of-type {
margin-top: 2rem;
}
/* Children shortcode */
.children p,
.children-li p,
.children-h2 p,
.children-h3 p {
font-size: 1rem;
}
.footline {
/* in print mode show footer line to signal reader the end of document */
border-top: 1px solid rgba( 221, 221, 221, 1 );
color: rgba( 119, 119, 119, 1 );
margin-top: 1.5rem;
padding-top: .75rem;
}
h1 + .footline{
/* if we have no content in the page we remove the footer as it is of no real value in print */
display: none;
}
#R-body #R-body-inner .headline a,
#R-body #R-body-inner .footline a,
#R-body #R-body-inner .btn a {
text-decoration: none;
}
#R-body #R-body-inner a {
/* in print we want to distinguish links in our content from
normal text even if printed black/white;
don't use a.highlight in selector to also get links that are
put as HTML into markdown */
text-decoration-line: underline;
}
#R-topbar{
/* the header is sticky which is not suitable for print; */
position: inherit; /* IE11 doesn't know "initial" here */
}
#R-topbar > .topbar-wrapper {
background-color: rgba( 255, 255, 255, 1 ); /* IE11 doesn't know "initial" here */
}
#R-body .topbar-sidebar-divider {
border-width: 0;
}
.term-list {
display: none;
}
mark {
background: inherit;
color: inherit;
}
.mermaid.zoom:hover {
border-color: transparent;
}
div.box > .box-content {
background-color: rgba( 255, 255, 255, 1 );
}
.btn,
#R-body .tab-nav-button {
color: rgba( 0, 0, 0, 1 );
}
#R-body .tab-nav-button.active {
border-bottom-color: rgba( 255, 255, 255, 1 );
color: rgba( 0, 0, 0, 1 );
}
#R-body .tab-nav-button.active > .tab-nav-text {
background-color: rgba( 255, 255, 255, 1 );
}
#R-body .tab-content-text {
background-color: rgba( 255, 255, 255, 1 ) ;
color: rgba( 0, 0, 0, 1 );
}
article {
break-before: page;
}
#R-body-inner > * > article:first-of-type {
break-before: avoid;
}

View File

@@ -0,0 +1,209 @@
# this is a required setting for this theme to appear on https://themes.gohugo.io/
# change this to a value appropriate for you; if your site is served from a subdirectory
# set it like "https://example.com/mysite/"
baseURL = "https://example.com/"
# required value to serve this page from a webserver AND the file system;
# if you don't want to serve your page from the file system, you can also set this value
# to false
relativeURLs = true # true -> rewrite all site-relative URLs (those with a leading slash) to be relative to the current content
# if you set uglyURLs to false, this theme will append 'index.html' to any page bundle link
# so your site can be also served from the file system; if you don't want that,
# set disableExplicitIndexURLs=true in the [params] section
uglyURLs = false # true -> basic/index.html -> basic.html
# the directory where Hugo reads the themes from; this is specific to your
# installation and most certainly needs be deleted or changed
themesdir = "../.."
# yeah, well, obviously a mandatory setting for your site, if you want to
# use this theme ;-)
theme = "hugo-theme-relearn"
# make sure your defaultContentLanguage is the first one in the [languages]
# array below, as the theme needs to make assumptions on it
defaultContentLanguage = "en"
# if you want to get rrrid o' ourrr pirrrates nonsense uncomment th' next line
# disableLanguages = ['pir']
# the site's title of this showcase; you should change this ;-)
title = "Hugo Relearn Theme"
[outputs]
# add `json` to the home to support Lunr search; This is a mandatory setting
# for the search functionality
# add `print` to home, section and page to activate the feature to print whole
# chapters
home = ["html", "rss", "print", "search", "searchpage"]
section = ["html", "rss", "print"]
page = ["html", "rss", "print"]
[markup]
[markup.highlight]
# line numbers in a table layout will shift if code is wrapping, so better
# not use it; visually both layouts have the same look and behavior
lineNumbersInTable = false
# the shipped variants come with their own modified chroma syntax highlightning
# stylesheets which are linked in your generated HTML pages; you can use Hugo to generate
# own stylesheets to your liking and use them in your variant;
# if you want to use Hugo's internal styles instead of the shipped stylesheets:
# - remove `noClasses` or set `noClasses = true`
# - set `style` to a predefined style name
# note: with using the internal styles, the `--CODE-theme` setting in your variant
# stylesheet will be ignored and the internal style is used for all variants and
# even print
noClasses = false
# style = "tango"
[markup.goldmark]
# this is required for the themes exampleSite to make the piratify shortcode work
duplicateResourceFiles = true
# activated for this showcase to use HTML and JavaScript; decide on your own needs;
# if in doubt, remove this line
renderer.unsafe = true
# allows `hugo server` to display this showcase in IE11; this is used for testing, as we
# are still supporting IE11 - although with degraded experience; if you don't care about
# `hugo server` or browsers of ancient times, fell free to remove this whole block
[server]
[[server.headers]]
for = "**.html"
[server.headers.values]
X-UA-Compatible = "IE=edge"
# showcase of the menu shortcuts; you can use relative URLs linking
# to your content or use fully-quallified URLs to link outside of
# your project
[languages]
[languages.en]
title = "Hugo Relearn Theme"
weight = 1
languageName = "English"
# Language dependend settings:
# Use case https://gohugo.io/content-management/multilingual/#translation-by-content-directory
#contentDir = "content/en"
[languages.en.params]
landingPageName = "<i class='fa-fw fas fa-home'></i> Home"
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fab fa-github'></i> GitHub repo"
identifier = "ds"
url = "https://github.com/McShelby/hugo-theme-relearn"
weight = 10
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fas fa-camera'></i> Showcases"
pageRef = "showcase/"
weight = 20
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fas fa-bullhorn'></i> Credits"
pageRef = "more/credits/"
weight = 30
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fas fa-tags'></i> Tags"
pageRef = "tags/"
weight = 40
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fas fa-layer-group'></i> Categories"
pageRef = "categories/"
weight = 50
# this is ourrr way t' showcase th' multilang settings by
# doing autotrrranlat'n of th' english content; we are
# lazy and don't supporrt furrrther trrranslations; arrr,
# don't take it t' serrrious, fello'; it's prrretty hacky and:
# NOT MEANT FER PRRRODUCTION! ARRR!
[languages.pir]
title = "Cap'n Hugo Relearrrn Theme"
weight = 2
languageCode = "art-pir"
languageDirection = "rtl"
languageName = "Arrr! ☠ Pirrrates ☠"
# Language dependend settings:
# Use case https://gohugo.io/content-management/multilingual/#translation-by-content-directory
#contentDir = "content/pir"
[languages.pir.params]
landingPageName = "<i class='fa-fw fas home'></i> Arrr! Home"
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fab fa-github'></i> GitHub repo"
identifier = "ds"
url = "https://github.com/McShelby/hugo-theme-relearn"
weight = 10
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fas fa-camera'></i> Showcases"
pageRef = "showcase/"
weight = 20
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fas fa-bullhorn'></i> Crrredits"
pageRef = "more/credits/"
weight = 30
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fas fa-tags'></i> Arrr! Tags"
pageRef = "tags/"
weight = 40
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fas fa-layer-group'></i> Categorrries"
pageRef = "categories/"
weight = 50
# mounts are only needed in this showcase to access the publicly available screenshots;
# remove this section if you don't need further mounts
[module]
[[module.mounts]]
source = 'archetypes'
target = 'archetypes'
[[module.mounts]]
source = 'assets'
target = 'assets'
# Language dependend settings:
# Use case https://gohugo.io/content-management/multilingual/#translation-by-filename
[[module.mounts]]
source = 'content'
target = 'content'
# Use case https://gohugo.io/content-management/multilingual/#translation-by-content-directory
#[[module.mounts]]
# lang = 'en'
# source = 'content/en'
# target = 'content'
#[[module.mounts]]
# lang = 'pir'
# source = 'content/pir'
# target = 'content'
[[module.mounts]]
source = 'data'
target = 'data'
[[module.mounts]]
source = 'i18n'
target = 'i18n'
[[module.mounts]]
source = 'layouts'
target = 'layouts'
[[module.mounts]]
source = 'static'
target = 'static'
# just for this documentation to expose our config in the docs
[[module.mounts]]
source = 'config'
target = 'static/config'
# just for this documentation to expose the GitHub hero image in the docs
[[module.mounts]]
source = '../images'
target = 'assets/images'
[params]
# Demo setting for displaying the siteparam shortcode the docs.
siteparam.test.text = "A **nested** option <b>with</b> formatting"
# Extension to the image effects only for the docs.
imageEffects.bg-white = true

View File

@@ -0,0 +1,454 @@
# If an option value is said to be not set, you can achieve the same behavior
# by given it an empty string value.
###############################################################################
# Hugo
# These options usually apply to other themes aswell.
# The author of your site.
# Default: not set
# This will be used in HTML meta tags, the opengraph protocol and twitter
# cards.
# You can also set `author.email` if you want to publish this information.
author.name = "Sören Weber"
# The social media image of your site.
# Default: not set
# This is used for generating social media meta information for the opengraph
# protocol and twitter cards.
# This can be overridden in the page's frontmatter.
images = [ "images/hero.png" ]
# The description of your site.
# Default: not set
# This is used for generating HTML meta tags, social media meta information
# for the opengraph protocol and twitter cards.
# This can be overridden in the page's frontmatter.
description = "Documentation for Hugo Relearn Theme"
# Admin options for social media.
# Default: not set
# Configuration for the Open Graph protocol and Twitter Cards adhere to Hugo's
# implementation. See the Hugo docs for possible values.
social.facebook_admin = ""
social.twitter = ""
###############################################################################
# Relearn Theme
# These options are specific to the Relearn theme.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Branding
# These options set your overall visual apperance.
# Used color variants.
# Default: "auto"
# This sets one or more color variants, available to your readers to choose
# from. You can
# - set a single value eg. "zen-light"
# - an array like [ "neon", "learn" ]
# - an array with options like [ { identifier = "neon" },{ identifier = "learn" } ]
# The last form allows to set further options for each variant.
# The `identifier` is mandatory. You can also set `name` which overrides the
# value displayed in the variant selector.
# If the array has more than one entry, a variant selector
# is shown in the lower part of the menu. The first entry in the array is the
# default variant, used for first time visitors.
# The theme ships with the following variants: "relearn-bright",
# "relearn-light", "relearn-dark", "zen-light", "zen-dark", "neon", "learn",
# "blue", "green", "red". In addition you can use auto mode variants. See the
# docs for a detailed explaination.
# You can also define your own variants. See the docs how this works. Also,
# the docs provide an interactive theme generator to help you with this task.
themeVariant = [
{ identifier = "relearn-auto", name = "Relearn Light/Dark", auto = [] },
{ identifier = "relearn-light" },
{ identifier = "relearn-dark" },
{ identifier = "relearn-bright" },
{ identifier = "zen-auto", name = "Zen Light/Dark", auto = [ "zen-light", "zen-dark" ] },
{ identifier = "zen-light" },
{ identifier = "zen-dark" },
{ identifier = "neon" },
{ identifier = "learn" },
{ identifier = "blue" },
{ identifier = "green" },
{ identifier = "red" }
]
# Filename suffix for variant files.
# Default: not set
# The theme modifies the variant stylesheets during build and tries to store
# them with the same file name. In certain installations it was observed, that
# Hugo could not overwrite these files due to permission issues. If you
# experience this, you can first try to set the `--noChmod` option for Hugo.
# If this still doesn't help you can set this option to eg. ".gen". This will
# be used as a suffix for these generated files, causing them to be newly
# created instead of overwriting the existing ones.
themeVariantModifier = ""
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# General
# These options are defining general, non visual behavior.
# Avoid new asset URLs on build.
# Default: false
# By default JavaScript-files and CSS-files get a unique ID on each rebuild.
# This makes sure, the user always has the latest version and not some stale
# copy of his browser cache. Anyways, it can be desireable to turn this
# off in certain circumstances. For example if you have Hugo's dev server
# running. Also some proxies dislike this optimization.
disableAssetsBusting = false
# Avoid generator meta tags.
# Default: false
# Set this to true if you want to disable generation for generator meta tags
# of Hugo and the theme in your HTML head. In tihs case also don't forget to
# set Hugo's disableHugoGeneratorInject=true. Otherwise Hugo will generate a
# meta tag into your home page anyways.
disableGeneratorVersion = false
# Avoid unique IDs.
# Default: false
# In various situations the theme generates non stable unique ids to be used
# in HTML fragment links. This can be undesirable for example when testing
# the output for changes. If you disable the random id generation, the theme
# may not function correctly anymore.
disableRandomIds = false
# Multilanguage content.
# Default: not set
# If your pages contain further languages besides the main one used, add all
# those auxiliary languages here. This will create a search index with
# support for all used languages of your site.
# This is handy for example if you are writing in Spanish but have lots of
# source code on your page which typically uses English terminology.
additionalContentLanguage = [ "en" ]
# Additional code dependencies.
# Default: See hugo.toml of the theme
# The theme provides a mechanism to load further JavaScript and CSS
# dependencies on demand only if they are needed. This comes in handy if you
# want to add own shortcodes that depend on additional code to be loaded.
# See the docs how this works.
# [relearn.dependencies]
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Topbar
# These options modify the topbar appearance.
# Hide the table of contents button.
# Default: false
# If the TOC button is hidden, also the keyboard shortcut is disabled.
# This can be overridden in the page's frontmatter.
disableToc = false
# Hide the breadcrumbs.
# Default: false
# If the breadcrumbs are hidden, the title of the displayed page will still be
# shown in the topbar.
disableBreadcrumb = false
# Hide Next and Previous navigation buttons.
# Default: false
# If the navigation buttons are hidden, also the keyboard shortcuts are
# disabled.
disableNextPrev = false
# The URL prefix to edit a page.
# Default: not set
# If set, an edit button will be shown in the topbar. If the button is hidden,
# also the keyboard shortcuts are disabled. The value can contain the macro
# `${FilePath}` which will be replaced by the file path of your displayed page.
# If no `${FilePath}` is given in the value, the value is treated as if the
# `${FilePath}` was appended at the end of the value. This can be overridden
# in the pages frontmatter. This is useful if you want to give the opportunity
# for people to create merge request for your content.
editURL = "https://github.com/McShelby/hugo-theme-relearn/edit/main/exampleSite/content/${FilePath}"
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Menu
# These options modify the menu apperance.
# Hide the search box.
# Default: false
# If the searc box is sisabled, the search functionality is disabled too.
# This will also cause the keyboard shortcut to be disabled and the dedicated
# search page is not linked although it mighty be configured.
disableSearch = false
# Hide the Home entry.
# Default: false
# If shown, a Home button will appear below the search bar and the main menu.
# It links to your the home page of the current language.
disableLandingPageButton = true
# The order of main menu submenus.
# Default: "weight"
# Submenus can be ordered by "weight", "title", "linktitle", "modifieddate",
# "expirydate", "publishdate", "date", "length" or "default" (adhering to
# Hugo's default sort order). This can be overridden in the pages frontmatter.
ordersectionsby = "weight"
# The initial expand state of submenus.
# Default: not set
# This controls whether submenus will be expanded (true), or collapsed (false)
# in the menu. If not set, the first menu level is set to false, all others
# levels are set to true. This can be overridden in the page's frontmatter.
# If the displayed page has submenus, they will always been displayed expanded
# regardless of this option.
alwaysopen = ""
# Shows expander for submenus.
# Default: false
# If set to true, a submenu in the sidebar will be displayed in a collapsible
# tree view and a clickable expander is set in front of the entry.
# This can be overridden in the page's frontmatter.
collapsibleMenu = true
# Shows checkmarks for visited pages of the main menu.
# Default: false
# This also causes the display of the `Clear History` entry in the lower part
# of the menu to remove all checkmarks. The checkmarks will also been removed
# if you regenerate your site as the ids are not stable.
showVisitedLinks = true
# Hide heading above the shortcut menu.
# Default: false
# The title for the heading can be overwritten in your i18n files. See Hugo's
# documentation how to do this.
disableShortcutsTitle = false
# Hide the language switcher.
# Default: false
# If you have more than one language configured, a language switcher is
# displayed in the lower part of the menu. This opition lets you explicitly
# turn this behavior off.
disableLanguageSwitchingButton = false
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Hidden pages
# These options configure how hidden pages are treated.
# A page flagged as hidden, is only removed from the main menu if you are
# currently not on this page or the hidden page is not part of current page's
# ancestors. For all other functionality in Hugo a hidden page behaves like any
# other page if not otherwise configured.
# Hide hidden pages from search.
# Default: false
# Hides hidden pages from the suggestions of the search box and the dedicated
# search page.
disableSearchHiddenPages = false
# Hide hidden pages for web crawlers.
# Default: false
# Avoids hidden pages from showing up in the sitemap and on Google (et all),
# otherwise they may be indexed by search engines
disableSeoHiddenPages = true
# Hide hidden pages for taxonomies.
# Default: false
# Hides hidden pages from showing up on the taxonomy and terms pages. If this
# reduces term counters to zero, an empty but not linked term page will be
# created anyhow.
disableTagHiddenPages = false
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Content
# These options modify how your content is displayed.
# Title separator.
# Default: "::"
# Changes the title separator used when concatenating the page title with the
# site title. This is consistently used throughout the theme.
titleSeparator = "::"
# Breadcrumb separator.
# Default: ">"
# Changes the breadcrumb separator used in the topbars breadcrumb area and for
# search results and term pages.
breadcrumbSeparator = ">"
# Hide the root breadcrumb.
# Default: false
# The root breadcrumb is usually the home page of your site. Because this is
# always accessible by clicking on the logo, you may want to reduce clutter
# by removing this from your breadcrumb.
disableRootBreadcrumb = true
# Hide breadcrumbs term pages.
# Default: false
# If you have lots of taxonomy terms, the term pages may seem cluttered with
# breadcrumbs to you, so this is the option to turn off breadcrumbs on term
# pages. Only the page title will then be shown on the term pages.
disableTermBreadcrumbs = false
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Highlight
# These options configure how code is displayed.
# Hide copy-to-clipboard for inline code.
# Default: false
# This removes the copy-to-clipboard button from your inline code.
disableInlineCopyToClipBoard = true
# Always show copy-to-clipboard for block code.
# Default: false
# The theme only shows the copy-to-clipboard button if you hover over the code
# block. Set this to true to disable the hover effect and always show the
# button.
disableHoverBlockCopyToClipBoard = false
# Wrap for code blocks.
# Default: true
# By default lines of code blocks wrap around if the line is too long to be
# displayed on screen. If you dislike this behavior, you can reconfigure it
# here.
# Note that lines always wrap in print mode regardless of this option.
# This can be overridden in the page's frontmatter or given as a parameter to
# individual code blocks.
highlightWrap = true
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Images
# These options configure how images are displayed.
# What to do when local image link is not resolved.
# Default: ""
# You can control what should happen if a local image can not be resolved to as
# a resource. If not set, the unresolved link is written as given into the resulting
# output. If set to `warning` the same happens and an additional warning is
# printed. If set to `error` an error message is printed and the build is
# aborted.
# Please note that this can not resolve files inside of your `static` directory.
image.errorlevel = "warning"
# Image effects.
# See the documentation for how you can even add your own arbitrary effects to
# the list.
# All effects can be overridden in the page's frontmatter or thru URL parameter
# given to the image. See the documentation for details.
# Default: false
imageEffects.border = true
# Default: true
imageEffects.lazy = true
# Default: true
imageEffects.lightbox = true
# Default: false
imageEffects.shadow = false
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Links
# These options configure how links are displayed.
# What to do when local page link is not resolved.
# Default: ""
# You can control what should happen if a local link can not be resolved to a
# page. If not set, the unresolved link is written as given into the resulting
# output. If set to `warning` the same happens and an additional warning is
# printed. If set to `error` an error message is printed and the build is
# aborted.
# Please note that with Hugo < 0.123.0 + `uglyURLs=true` this can lead to false
# negatives.
link.errorlevel = "warning"
# How to open external links.
# Default: "_blank"
# For external links you can define how they are opened in your browser. All
# values for the HTML `target` attribute of the `a` element are allowed. The
# default value opens external links in a separate browser tab. If you want
# to open those links in the same tab, use "_self".
externalLinkTarget = "_blank"
# Generate link URLs the Hugo way.
# Default: false
# If set to true, the theme behaves like a standard Hugo installation and
# appends no index.html to prettyURLs. As a trade off, your build project will
# not be servable from the file system.
disableExplicitIndexURLs = false
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# MathJax
# These options configure how math formulae are displayed.
# Initialization options for MathJax.
# Default: not set
# A JSON value. See the MathJaxdocumentation for possible parameter.
# This can be overridden in the page's frontmatter.
mathJaxInitialize = "{}"
# Only load MathJax if needed.
# Default: true
# If a Math shortcode is found, the option will be ignored and
# MathJax will be loaded regardlessly. The option is still useful in case you
# are using scripting to set up your graph. In this case no shortcode or
# codefence is involved and the library is not loaded by default. In this case
# you can set `disableMathJax=false` in your frontmatter to force the library to
# be loaded.
# This can be overridden in the page's frontmatter.
disableMathJax = true
# URL for external MathJax library.
# Default: not set
# Specifies the remote location of the MathJax library. By default the shipped
# version will be used.
# This can be overridden in the page's frontmatter.
customMathJaxURL = "" # "https://unpkg.com/mathjax/es5/tex-mml-chtml.js"
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Mermaid
# These options configure how Mermaid graphs are displayed.
# Make graphs panable and zoomable
# Default: false
# For huge graphs it can be helpful to make them zoomable. Zoomable graphs come
# with a reset button for the zoom.
# This can be overridden in the page's frontmatter or given as a parameter to
# individual graphs.
mermaidZoom = true
# Initialization options for Mermaid.
# Default: not set
# A JSON value. See the Mermaid documentation for possible parameter.
# This can be overridden in the page's frontmatter.
mermaidInitialize = "{ \"securityLevel\": \"loose\" }"
# Only load Mermaid if needed.
# Default: true
# If a Mermaid shortcode or codefence is found, the option will be ignored and
# Mermaid will be loaded regardlessly. The option is still useful in case you
# are using scripting to set up your graph. In this case no shortcode or
# codefence is involved and the library is not loaded by default. In this case
# you can set `disableMermaid=false` in your frontmatter to force the library to
# be loaded.
# This can be overridden in the page's frontmatter.
disableMermaid = true
# URL for external Mermaid library.
# Default: not set
# Specifies the remote location of the Mermaid library. By default the shipped
# version will be used.
# This can be overridden in the page's frontmatter.
customMermaidURL = "" # "https://unpkg.com/mermaid/dist/mermaid.min.js"
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# OpenApi
# These options configure how OpenAPI specifications are displayed.
# Only load OpenAPI if needed.
# Default: true
# If a OpenAPI shortcode is found, the option will be ignored and
# OpenAPI will be loaded regardlessly. The option is still useful in case you
# are using scripting to set up your graph. In this case no shortcode or
# codefence is involved and the library is not loaded by default. In this case
# you can set `disableOpenapi=false` in your frontmatter to force the library to
# be loaded.
# This can be overridden in the page's frontmatter.
disableOpenapi = true
# URL for external OpenAPI library.
# Default: not set
# Specifies the remote location of the OpenAPI library. By default the shipped
# version will be used.
# This can be overridden in the page's frontmatter.
customOpenapiURL = "" # "https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js"

View File

@@ -0,0 +1,2 @@
baseURL = "https://mcshelby.github.io/hugo-theme-relearn/"
relativeURLs = false

View File

@@ -0,0 +1,21 @@
# We disable this for testing the exampleSite; you must do so too
# if you want to use the themes parameter disableGeneratorVersion=true;
# otherwise Hugo will create a generator tag on your home page
disableHugoGeneratorInject = true
# We are pretty sure, to not have unintentionally untranslated titles;
# it may happen in case when shortcodes want to set an automatic title
# out of a given style setting (this is allowed to fail for non severity styles)
# enableMissingTranslationPlaceholders = true
# Audit your published site for problems
# https://discourse.gohugo.io/t/audit-your-published-site-for-problems/35184/12
[minify]
[minify.tdewolff]
[minify.tdewolff.html]
keepComments = true
[params]
disableGeneratorVersion = true
disableAssetsBusting = true
disableRandomIds = true

View File

@@ -0,0 +1,82 @@
+++
archetype = "home"
title = "Hugo Relearn Theme"
+++
A theme for [Hugo](https://gohugo.io/) designed for documentation.
[★ What's new in the latest release ★](basics/migration)
![Image of the Relearn theme in light and dark mode on phone, tablet and desktop](/images/hero.png)
## Motivation
The theme is a fork of the great [Learn theme](https://github.com/matcornic/hugo-theme-learn) with the aim of fixing long outstanding bugs and adapting to latest Hugo features. As far as possible this theme tries to be a drop-in replacement for the Learn theme.
## Features
- **Wide set of usage scenarios**
- Responsive design for mobile usage
- Looks nice on paper (if it has to)
- Usable offline, no external dependencies
- [Usable from your local file system via `file://` protocol](basics/customization#file-system)
- Support for the [VSCode Front Matter extension](https://github.com/estruyf/vscode-front-matter) for on-premise CMS capabilities
- Support for Internet Explorer 11
- [Support for Open Graph and Twitter Cards](basics/customization#social-media-meta-tags)
- **Configurable theming and visuals**
- [Configurable brand images](basics/branding#change-the-logo)
- [Automatic switch for light/dark variant dependend on your OS settings](basics/branding#adjust-to-os-settings)
- Predefined light, dark and color variants
- [User selectable variants](basics/branding#multiple-variants)
- [Stylesheet generator](basics/generator/)
- [Configurable syntax highlighting](shortcodes/highlight)
- **Unique theme features**
- [Print whole chapters or even the complete site](basics/customization#activate-print-support)
- In page search
- [Site search](basics/customization#activate-search)
- [Dedicated search page](basics/customization#activate-dedicated-search-page)
- [Taxonomy support](cont/taxonomy)
- [Configurable topbar buttons](basics/topbar)
- [Unlimited nested menu items](cont/pages)
- [Configurable shortcut links](cont/menushortcuts)
- Hidden pages
- **Multi language support**
- [Full support for languages written right to left](cont/i18n)
- [Available languages](cont/i18n#basic-configuration): Arabic, Simplified Chinese, Traditional Chinese, Czech, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Swahili, Turkish, Vietnamese
- [Search support for mixed language content](cont/i18n#search)
- **Additional Markdown features**
- [Support for GFM (GitHub Flavored Markdown)](cont/markdown)
- [Image effects like sizing, shadow, border and alignment](cont/markdown#image-effects)
- [Image lightbox](cont/markdown#lightbox)
- **Shortcodes galore**
- [Display resources contained in a page bundle](shortcodes/resources)
- [Marker badges](shortcodes/badge)
- [Configurable buttons](shortcodes/button)
- [List child pages](shortcodes/children)
- [Expand areas to reveal content](shortcodes/expand)
- [Font Awesome icons](shortcodes/icon)
- [Inclusion of other files](shortcodes/include)
- [Math and chemical formulae using MathJax](shortcodes/math)
- [Mermaid diagrams for flowcharts, sequences, gantts, pie, etc.](shortcodes/mermaid)
- [Colorful boxes](shortcodes/notice)
- [OpenAPI specifications using Swagger UI](shortcodes/openapi)
- [Reveal you site's configuration parameter](shortcodes/siteparam)
- [Single tabbed panels](shortcodes/tab) and [multiple tabbed panels](shortcodes/tabs)
## Support
To get support, feel free to open a new [discussion topic](https://github.com/McShelby/hugo-theme-relearn/discussions) or [issue report](https://github.com/McShelby/hugo-theme-relearn/issues) in the official repository on GitHub.
## Contributions
Feel free to contribute to this documentation by just clicking the {{% button style="transparent" icon="pen" %}}{{% /button %}} _edit_ button displayed on top right of each page.
You are most welcome to contribute bugfixes or new features by making pull requests to the [official repository](https://github.com/McShelby/hugo-theme-relearn). Check the [contribution guidelines](dev/contributing) first before starting.
## License
The Relearn theme is licensed under the [MIT License](https://github.com/McShelby/hugo-theme-relearn/blob/main/LICENSE).
## Credits
This theme would not be possible without the work of [many others](more/credits).

View File

@@ -0,0 +1,5 @@
+++
archetype = "home"
title = "Cap'n Hugo Relearrrn Theme"
+++
{{< piratify true >}}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
+++
archetype = "chapter"
title = "Basics"
weight = 1
+++
Discover what this Hugo theme is all about and the core-concepts behind it.

View File

@@ -0,0 +1,6 @@
+++
archetype = "chapter"
title = "Basics"
weight = 1
+++
{{< piratify >}}

View File

@@ -0,0 +1,187 @@
+++
categories = ["custom", "theming"]
title = "Branding"
weight = 24
+++
The Relearn theme provides configuration options to change your your site's colors, favicon and logo. This allows you to easily align your site visuals to your desired style. Most of these options are exposed thru so called color variants.
A color variant lets you customize various visual effects of your site like almost any color, used fonts, color schemes of print, syntax highligtning, Mermaid and the OpenAPI shortcode, etc. It contains of a CSS file and optional configuration options in your `hugo.toml`.
The Relearn theme ships with a wide set of different color variants. You can use them as-is, copy them over and use them as a starting point for your customizations or just create completely new variants unique to your site. The [interactive variant generator](basics/generator) may help you with this task.
Once configured in your `hugo.toml`, you can select them with the variant selector at the bottom of the menu.
## Change the Variant (Simple) {#theme-variant}
### Single Variant
Set the `themeVariant` value to the name of your theme file. That's it! Your site will be displayed in this variant only.
{{< multiconfig file=hugo >}}
[params]
themeVariant = "relearn-light"
{{< /multiconfig >}}
{{% notice note %}}
Your theme variant file must reside in your site's `static/css` directory or in the theme's `static/css` directory and the file name must start with `theme-` and end wit `.css`. In the above example, the path of your theme file must be `static/css/theme-relearn-light.css`.
If you want to make changes to a shipped color variant, create a copy in your site's `static/css` directory. Don't edit the file in the theme's directory!
{{% /notice %}}
### Multiple Variants
You can also set multiple variants. In this case, the first variant is the default chosen on first view and a variant selector will be shown in the menu footer if the array contains more than one entry.
{{< multiconfig file=hugo >}}
[params]
themeVariant = [ "relearn-light", "relearn-dark" ]
{{< /multiconfig >}}
{{% notice tip %}}
The theme provides an advanced configuration mode, combining the functionality for multiple variants with the below possibilities of adjusting to your OS settings and syntax highlightning and even more!
Although all options documented here are still working, the advanced configuration options are the recommended way to configure your color variants. [See below](#theme-variant-advanced).
{{% /notice %}}
## Adjust to OS Settings
You can also cause the site to adjust to your OS settings for light/dark mode. Just set the `themeVariant` to `auto` to become an auto mode variant. That's it.
You can use the `auto` value with the single or multiple variants option. If you are using multiple variants, you can drop `auto` at any position in the option's array, but usually it makes sense to set it in the first position and make it the default.
{{< multiconfig file=hugo >}}
[params]
themeVariant = [ "auto", "red" ]
{{< /multiconfig >}}
If you don't configure anything else, the theme will default to use `relearn-light` for light mode and `relearn-dark` for dark mode. These defaults are overwritten by the first two non-auto options of your `themeVariant` option if present.
In the above example, you would end with `red` for light mode and the default of `relearn-dark` for dark mode.
If you don't like that behavior, you can explicitly set `themeVariantAuto`. The first entry in the array is the color variant for light mode, the second for dark mode.
{{< multiconfig file=hugo >}}
[params]
themeVariantAuto = [ "learn", "neon" ]
{{< /multiconfig >}}
## Change the Favicon
If your favicon is a SVG, PNG or ICO, just drop your image in your site's `static/images/` directory and name it `favicon.svg`, `favicon.png` or `favicon.ico` respectively.
If you want to adjust your favicon according to your OS settings for light/dark mode, add the image files `static/images/favicon-light.svg` and `static/images/favicon-dark.svg` to your site's directory, respectively, corresponding to your file format. In case some of the files are missing, the theme falls back to `favicon.svg` for each missing file. All supplied favicons must be of the same file format.
If no favicon file is found, the theme will lookup the alternative filename `logo` in the same location and will repeat the search for the list of supported file types.
If you need to change this default behavior, create a new file `layouts/partials/favicon.html` in your site's directory and write something like this:
````html {title="layouts/partials/favicon.html"}
<link rel="icon" href="/images/favicon.bmp" type="image/bmp">
````
## Change the Logo
Create a new file in `layouts/partials/logo.html` of your site. Then write any HTML you want. You could use an `img` HTML tag and reference an image created under the _static_ folder, or you could paste a SVG definition!
{{% notice note %}}
The size of the logo will adapt automatically.
{{% /notice %}}
## Syntax Highlightning
If you want to switch the syntax highlighting theme together with your color variant, you need to configure your installation [according to Hugo's documentation](https://gohugo.io/content-management/syntax-highlighting/) and provide a syntax highlighting stylesheet file.
You can use a one of the shipped stylesheet files or use Hugo to generate a file for you. The file must be written to `static/css/chroma-<NAME>.css`. To use it with your color variant you have to define `--CODE-theme: <NAME>` in the color variant stylesheet file.
For an example, take a look into [`theme-relearn-light.css`](https://github.com/McShelby/hugo-theme-relearn/blob/main/static/css/theme-relearn-light.css) and [`hugo.toml`](https://github.com/McShelby/hugo-theme-relearn/blob/main/exampleSite/config/_default/hugo.toml) of the exampleSite.
## Change the Variant (Advanced) {#theme-variant-advanced}
The theme offers a new way to configure theme variants and all of the aspects above inside of a single configuration item. This comes with some features previously unsupported.
Like with the [multiple variants](#multiple-variants) option, you are defining your theme variants in an array but now _not by simple strings_ **but in a table with suboptions**.
Again, in this case, the first variant is the default chosen on first view and a variant selector will be shown in the menu footer if the array contains more than one entry.
{{< multiconfig file=hugo >}}
[params]
themeVariant = [ "relearn-light", "relearn-dark" ]
{{< /multiconfig >}}
you now write it that way:
{{< multiconfig file=hugo >}}
[params]
[[params.themeVariant]]
identifier = "relearn-light"
[[params.themeVariant]]
identifier = "relearn-dark"
{{< /multiconfig >}}
The `identifier` option is mandatory and equivalent to the string in the first example. Further options can be configured, see the table below.
### Parameter
| Name | Default | Notes |
|-----------------------|-----------------|-------------|
| identifier | _&lt;empty&gt;_ | Must correspond to the name of a color variant either in your site's or the theme's directory in the form `static/css/theme-<IDENTIFIER>.css`. |
| name | see notes | The name to be displayed in the variant selector. If not set, the identifier is used in a human readable form. |
| auto | _&lt;empty&gt;_ | If set, the variant is treated as an [auto mode variant](#adjust-to-os-settings). It has the same behavior as the `themeVariantAuto` option. The first entry in the array is the color variant for light mode, the second for dark mode. Defining auto mode variants with the advanced options has the benefit that you can now have multiple auto mode variants instead of just one with the simple options. |
### Example Configuration of This Site
{{< multiconfig file=hugo >}}
[params]
[[params.themeVariant]]
identifier = "relearn-auto"
name = "Relearn Light/Dark"
auto = []
[[params.themeVariant]]
identifier = "relearn-light"
[[params.themeVariant]]
identifier = "relearn-dark"
[[params.themeVariant]]
identifier = "zen-auto"
name = "Zen Light/Dark"
auto = [ "zen-light", "zen-dark" ]
[[params.themeVariant]]
identifier = "zen-light"
[[params.themeVariant]]
identifier = "zen-dark"
[[params.themeVariant]]
identifier = "neon"
{{< /multiconfig >}}
## Modify Shipped Variants
In case you like a shipped variant but only want to tweak some aspects, you have two choices:
1. Copy and change
You can copy the shipped variant file from the theme's `static/css` directory to the site's `static/css` directory and either store it with the same name or give it a new name. Edit the settings and save the new file. Afterwards you can use it in your `hugo.toml` by the choosen name.
2. Create and import
You can create a new variant file in the site's `static/css` directory and give it a new name. Import the shipped variant, add the settings you want to change and save the new file. Afterwards you can use it in your `hugo.toml` by the choosen name.
For example, you want to use the `relearn-light` variant but want to change the syntax highlightning schema to the one used in the `neon` variant. For that, create a new `static/css/theme-my-branding.css` in your site's directory and add the following lines:
````css {title="static/css/theme-my-branding.css"}
@import "theme-relearn-light.css";
:root {
--CODE-theme: neon; /* name of the chroma stylesheet file */
--CODE-BLOCK-color: rgba( 226, 228, 229, 1 ); /* fallback color for code text */
--CODE-BLOCK-BG-color: rgba( 40, 42, 54, 1 ); /* fallback color for code background */
}
````
Afterwards put this in your `hugo.toml` to use your new variant:
{{< multiconfig file=hugo >}}
[params]
themeVariant = "my-branding"
{{< /multiconfig >}}
In comparison to _copy and change_, this has the advantage that you profit from any adjustments to the `relearn-light` variant but keep your modifications.

View File

@@ -0,0 +1,6 @@
+++
categories = ["custom", "theming"]
title = "Brrrand'n"
weight = 24
+++
{{< piratify >}}

View File

@@ -0,0 +1,25 @@
+++
tags = ["config"]
title = "Configuration"
weight = 20
+++
On top of [Hugo's global configuration options](https://gohugo.io/overview/configuration/), the Relearn theme lets you define further options unique to the theme in your `hugo.toml`.
Note that some of these options are explained in detail in other sections of this documentation.
## All config options
The values reflect the options active in this documentation. The defaults can be taken from the [annotated example](#annotated-config-options) below.
{{< multiconfig file=hugo >}}
[params]
{{% include "config/_default/params.toml" %}}
{{< /multiconfig >}}
## Annotated config options
````toml {title="hugo.toml"}
[params]
{{% include "config/_default/params.toml" %}}
````

View File

@@ -0,0 +1,6 @@
+++
tags = ["config"]
title = "Configurrrat'n"
weight = 20
+++
{{< piratify >}}

View File

@@ -0,0 +1,251 @@
+++
title = "Customization"
weight = 25
+++
## Usage scenarios
The theme is usable in different scenarios, requiring the following mandatory settings in your `hugo.toml`. All settings not mentioned can be set to your liking.
### Public Webserver from Root
{{< multiconfig file=hugo >}}
baseURL = "https://example.com/"
{{< /multiconfig >}}
### Public Webserver from Subdirectory
{{< multiconfig file=hugo >}}
baseURL = "https://example.com/mysite/"
relativeURLs = false
{{< /multiconfig >}}
### Private Webserver (LAN)
The same settings as with any of the public webserver usage scenarios or
{{< multiconfig file=hugo >}}
baseURL = "/"
relativeURLs = true
{{< /multiconfig >}}
### File System
{{< multiconfig file=hugo >}}
baseURL = "/"
relativeURLs = true
{{< /multiconfig >}}
{{% notice warning %}}
Using a `baseURL` with a subdirectory and `relativeURLs=true` are mutally exclusive due to the fact, that [Hugo does not apply the `baseURL` correctly](https://github.com/gohugoio/hugo/issues/12130).
If you need both, you have to generate your site twice but with different settings into separate directories.
{{% /notice %}}
{{% notice note %}}
Sublemental pages (like `sitemap.xml`, `rss.xml`) and generated social media links inside of your pages will always be generated with absolute URLs and will not work if you set `relativeURLs=true`.
{{% /notice %}}
{{% notice info %}}
If you are using `uglyURLs=false` (Hugo's default), the theme will append an additional `index.html` to all page links to make your site be servable from the file system. If you don't care about the file system and only serve your page via a webserver you can generate the links without this:
{{< multiconfig file=hugo >}}
[params]
disableExplicitIndexURLs = true
{{< /multiconfig >}}
{{% /notice %}}
## Activate search
If not already present, add the following lines in your `hugo.toml` file.
{{< multiconfig file=hugo >}}
[outputs]
home = ["html", "rss", "search"]
{{< /multiconfig >}}
This will generate a search index file at the root of your public folder ready to be consumed by the Lunr search library. Note that the `search` outputformat was named `json` in previous releases but was implemented differently. Although `json` still works, it is now deprecated.
{{% notice note %}}
If you want to use the search feature from the file system, migrating from an older installation of the theme, make sure to change your outputformat for the homepage from the now deprecated `json` to `search` [as seen below](#activate-search).
{{% /notice %}}
### Activate dedicated search page
You can add a dedicated search page for your page by adding the `searchpage` outputformat to your home page by adding the following lines in your `hugo.toml` file. This will cause Hugo to generate a new file `http://example.com/mysite/search.html`.
{{< multiconfig file=hugo >}}
[outputs]
home = ["html", "rss", "search", "searchpage"]
{{< /multiconfig >}}
You can access this page by either clicking on the magnifier glass or by typing some search term and pressing `ENTER` inside of the menu's search box .
![Screenshot of the dedicated search page](search_page.png?&width=60pc)
{{% notice note %}}
To have Hugo create the dedicated search page successfully, you must not generate the URL `http://example.com/mysite/search.html` from your own content. This can happen if you set `uglyURLs=true` in your `hugo.toml` and defining a Markdown file `content/search.md`.
To make sure, there is no duplicate content for any given URL of your project, run `hugo --printPathWarnings`.
{{% /notice %}}
## Activate print support
You can activate print support to add the capability to print whole chapters or even the complete site. Just add the `print` output format to your home, section and page in your `hugo.toml` as seen below:
{{< multiconfig file=hugo >}}
[outputs]
home = ["html", "rss", "print", "search"]
section = ["html", "rss", "print"]
page = ["html", "rss", "print"]
{{< /multiconfig >}}
This will add a little printer icon in the top bar. It will switch the page to print preview when clicked. You can then send this page to the printer by using your browser's usual print functionality.
{{% notice note %}}
The resulting URL will not be [configured ugly](https://gohugo.io/templates/output-formats/#configure-output-formats) in terms of [Hugo's URL handling](https://gohugo.io/content-management/urls/#ugly-urls) even if you've set `uglyURLs=true` in your `hugo.toml`. This is due to the fact that for one mime type only one suffix can be configured.
Nevertheless, if you're unhappy with the resulting URLs you can manually redefine `outputFormats.print` in your own `hugo.toml` to your liking.
{{% /notice %}}
## Home Button Configuration
If the `disableLandingPageButton` option is set to `false`, a Home button will appear
on the left menu. It is an alternative for clicking on the logo. To edit the
appearance, you will have to configure the `landingPageName` for the defined languages:
{{< multiconfig file=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"
{{< /multiconfig >}}
If this option is not configured for a specific language, they will get their default values:
{{< multiconfig >}}
landingPageName = "<i class='fa-fw fas fa-home'></i> Home"
{{< /multiconfig >}}
The home button is going to look like this:
![Default Home Button](home_button_defaults.png?width=18.75rem)
## Social Media Meta Tags
You can add social media meta tags for the [Open Graph](https://gohugo.io/templates/internal/#open-graph) protocol and [Twitter Cards](https://gohugo.io/templates/internal/#twitter-cards) to your site. These are configured as mentioned in the Hugo docs.
## Change the Menu Width
The menu width adjusts automatically for different screen sizes.
| Name | Screen Width | Menu Width |
| ---- | ------------- | ---------- |
| S | < 48rem | 14.375rem |
| M | 48rem - 60rem | 14.375rem |
| L | >= 60rem | 18.75rem |
The values for the screen width breakpoints aren't configurable.
If you want to adjust the menu width you can define the following CSS variables in your `custom-header.html`. Note that `--MENU-WIDTH-S` applies to the menu flyout width in mobile mode for small screen sizes.
````css
:root {
--MENU-WIDTH-S: 14.375rem;
--MENU-WIDTH-M: 14.375rem;
--MENU-WIDTH-L: 18.75rem;
}
````
## Change the Main Area's Max Width
By default the main area width will only grow to a certain extent if more vertical screen space is available. This is done for readability purposes as long line are usually harder to read.
If you are unhappy with the default, you can define the following CSS variable in your `custom-header.html` and set the value to your liking. If you want to use all available space, select a really big value like `1000rem`;
````css
:root {
--MAIN-WIDTH-MAX: 80.25rem;
}
````
## Own Shortcodes with JavaScript Dependencies
Certain shortcodes make use of additional JavaScript files. The theme only loads these dependencies if the shortcode is used. To do so correctly the theme adds management code in various files.
You can you use this mechanism in your own shortcodes. Say you want to add a shortcode `myshortcode` that also requires the `jquery` JavaScript library.
1. Write the shortcode file `layouts/shortcodes/myshortcode.html` and add the following line
````go
{{- .Page.Store.Set "hasMyShortcode" true }}
````
1. Add the following snippet to your `hugo.toml`
{{< multiconfig file=hugo >}}
[params.relearn.dependencies]
[params.relearn.dependencies.myshortcode]
name = "MyShortcode"
location = "footer"
{{< /multiconfig >}}
1. Add the dependency loader file `layouts/partials/dependencies/myshortcode.html`. The loader file will be appended to your header or footer, dependend on the `location` setting in your `hugo.toml`.
````html
<script src="https://www.unpkg.com/jquery/dist/jquery.js"></script>
````
Character casing is relevant!
- the `name` setting in your `hugo.toml` must match the key (that needs to be prefixed with a `has`) you used for the store in your `layouts/shortcodes/myshortcode.html`.
- the key on `params.relearn.dependencies` in your `hugo.toml` must match the base file name of your loader file.
See the `math`, `mermaid` and `openapi` shortcodes for examples.
## Output Formats
Certain parts of the theme can be changed for support of your own [output formats](https://gohugo.io/templates/output-formats/). Eg. if you define a new output format `PLAINTEXT` in your `hugo.toml`, you can add a file `layouts/partials/header.plaintext.html` to change the way, the page header should look like for that output format.
## React to Variant Switches in JavaScript
Once a color variant is fully loaded, either initially or by switching the color variant manually with the variant selector, the custom event `themeVariantLoaded` on the `document` will be dispatched. You can add an event listener and react to changes.
````javascript
document.addEventListener( 'themeVariantLoaded', function( e ){
console.log( e.detail.variant ); // `relearn-light`
});
````
## Partials
The Relearn theme has been built to be as configurable as possible by defining multiple [partials](https://gohugo.io/templates/partials/)
In `themes/hugo-theme-relearn/layouts/partials/`, you will find all the partials defined for this theme. If you need to overwrite something, don't change the code directly. Instead [follow this page](https://gohugo.io/themes/customizing/). You'd create a new partial in the `layouts/partials` folder of your local project. This partial will have the priority.
This theme defines the following partials :
- `header.html`: the header of the page. See [output-formats](#output-formats)
- `footer.html`: the footer of the page. See [output-formats](#output-formats)
- `body.html`: the body of the page. The body may contain of one or many articles. See [output-formats](#output-formats)
- `article.html`: the output for a single article, can contain elements around your content. See [output-formats](#output-formats)
- `menu.html`: left menu. _Not meant to be overwritten_
- `search.html`: search box. _Not meant to be overwritten_
- `custom-header.html`: custom headers in page. Meant to be overwritten when adding CSS imports. Don't forget to include `style` HTML tag directive in your file.
- `custom-footer.html`: custom footer in page. Meant to be overwritten when adding JavaScript. Don't forget to include `javascript` HTML tag directive in your file.
- `favicon.html`: the favicon
- `heading.html`: side-wide configuration to change the pages title headings.
- `heading-pre.html`: side-wide configuration to prepend to pages title headings. If you override this, it is your responsibility to take the page's `headingPre` setting into account.
- `heading-post.html`: side-wide configuration to append to pages title headings. If you override this, it is your responsibility to take the page's `headingPost` setting into account.
- `logo.html`: the logo, on top left hand corner
- `meta.html`: HTML meta tags, if you want to change default behavior
- `menu-pre.html`: side-wide configuration to prepend to menu items. If you override this, it is your responsibility to take the page's `menuPre` setting into account.
- `menu-post.html`: side-wide configuration to append to menu items. If you override this, it is your responsibility to take the page's `menuPost` setting into account.
- `menu-footer.html`: footer of the the left menu
- `toc.html`: table of contents
- `content.html`: the content page itself. This can be overridden if you want to display page's meta data above or below the content.
- `content-header.html`: header above the title, has a default implementation but you can overwrite it if you don't like it.
- `content-footer.html`: footer below the content, has a default implementation but you can overwrite it if you don't like it.

View File

@@ -0,0 +1,5 @@
+++
title = "Customizat'n"
weight = 25
+++
{{< piratify >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,36 @@
+++
categories = "theming"
disableMermaid = false
title = "Stylesheet generator"
weight = 26
+++
This interactive tool may help you to generate your own color variant stylesheet.
{{% expand "Show usage instructions" %}}
To get started, first select a color variant from the variant selector in the lower left sidebar that fits you best as a starting point.
The graph is interactive and reflect the current colors. You can click on any of the colored boxes to adjust the respective color. The graph **and the page** will update accordingly.
The arrowed lines reflect how colors are inherited thru different parts of the theme if the descendent isn't overwritten. If you want to delete a color and let it inherit from its parent, just delete the value from the input field.
To better understand this select the `neon` variant and modify the different heading colors. There, colors for the heading `h2`, `h3` and `h4` are explicitly set. `h5` is not set and inherits its value from `h4`. `h6` is also not set and inherits its value from `h5`.
Once you've changed a color, the variant selector will show a "My custom variant" entry and your changes are stored in the browser. You can **browse to other pages** and even close the browser **without losing your changes**.
Once you are satisfied, you can download the new variants file and copy it into your site's `static/css` directory. Afterwards you have to adjust the `themeVariant` parameter in your `hugo.toml` to your chosen file name.
Eg. if your new variants file is named `theme-my-custom-variant.css`, you have to set `themeVariant='my-custom-variant'` to use it.
{{% /expand %}}
{{% button style="secondary" icon="download" href="javascript:window.variants&&variants.getStylesheet();this.blur();" %}}Download variant{{% /button %}}
{{% button style="warning" icon="trash" href="javascript:window.variants&&variants.resetVariant();this.blur();" %}}Reset variant{{% /button %}}
<div id="R-vargenerator" class="mermaid zoomable" style="background-color: var(--INTERNAL-MAIN-TEXT-color);">Graph</div>
{{% button style="secondary" icon="download" href="javascript:window.variants&&variants.getStylesheet();this.blur();" %}}Download variant{{% /button %}}
{{% button style="warning" icon="trash" href="javascript:window.variants&&variants.resetVariant();this.blur();" %}}Reset variant{{% /button %}}
<script>
window.variants && variants.generator( '#R-vargenerator' );
</script>

View File

@@ -0,0 +1,6 @@
+++
categories = "theming"
title = "Stylesheet generrrat'r"
weight = 26
+++
{{< piratify >}}

View File

@@ -0,0 +1,6 @@
+++
disableToc = false
title = "History"
weight = 30
+++
{{% include "basics/CHANGELOG.md" true %}}

View File

@@ -0,0 +1,6 @@
+++
disableToc = false
title = "Historrry"
weight = 30
+++
{{< piratify >}}

View File

@@ -0,0 +1,136 @@
+++
tags = ["documentation"]
title = "Installation"
weight = 15
+++
The following steps are here to help you initialize your new website. If you don't know Hugo at all, we strongly suggest you learn more about it by following this [great documentation for beginners](https://gohugo.io/overview/quickstart/).
{{% notice tip %}}
The following tutorial leads you thru the steps of creating a first, minimal new site.
You don't need to edit any files besides your `hugo.toml` and only need to execute the commands in the given order.
{{% /notice %}}
## Create your project
Hugo provides a `new` command to create a new website:
````shell
hugo new site my-new-site
````
After that change into the directory:
````shell
cd my-new-site
````
Every upcoming command will be executed from inside your new site's root.
## Install the theme
### From Download
You can [download the theme as .zip](https://github.com/McShelby/hugo-theme-relearn/archive/main.zip) file and extract it into them `themes/hugo-theme-relearn` directory.
### With Hugo's Module System
Install the Relearn theme by following [this documentation](https://gohugo.io/hugo-modules/use-modules/#use-a-module-for-a-theme) using Hugo's module system.
This theme's repository is: https://github.com/McShelby/hugo-theme-relearn.git
### Using Git or Git Submodules
If you install the theme from your git repository or GitHub, you have several options.
If you use the `head` of the `main` branch, you are using the development version. Usually it is fully functional but can break from time to time. We try to fix newly introduced bugs in this version as soon as possible.
Additionally you can checkout one of the tagged versions. These tagged versions correspond to an official [releases from the GitHub repository](https://github.com/McShelby/hugo-theme-relearn/releases).
Besides the usual version tags (eg `1.2.3`) there are also tags for the main version (eg. `1.2.x`), major version (eg. `1.x`) and the latest (just `x`) released version making it easier for you to pin the theme to a certain version.
## Basic Configuration
When building the website, you can set a theme by using `--theme` option. However, we suggest you modify the configuration file `hugo.toml` and set the theme as the default.
{{< multiconfig file=hugo >}}
theme = "hugo-theme-relearn"
{{< /multiconfig >}}
## Create your Home Page
If you don't create a home page, yet, the theme will generate a placeholder text with instructions how to proceed.
Start your journey by filling the home page with content
````shell
hugo new --kind home _index.md
````
By opening the given file, you should see the property `archetype=home` on top, meaning this page is a home page. The Relearn theme provides [some archetypes](cont/archetypes) to create those skeleton files for your website.
Obviously you better should change the page's content.
## Create your First Chapter Page
Chapters are pages that contain other child pages. It has a special layout style and usually just contains the _title_ and a _brief abstract_ of the section.
````md
# Basics
Discover what this Hugo theme is all about and the core concepts behind it.
````
renders as
![A Chapter](chapter.png?width=60pc)
Begin by creating your first chapter page with the following command:
````shell
hugo new --kind chapter basics/_index.md
````
By opening the given file, you should see the property `archetype=chapter` on top, meaning this page is a _chapter_.
The `weight` number will be used to generate the subtitle of the chapter page, set the number to a consecutive value starting at 1 for each new chapter level.
## Create your First Content Pages
Then, create content pages inside the previously created chapter. Here are two ways to create content in the chapter:
````shell
hugo new basics/first-content.md
hugo new basics/second-content/_index.md
````
Feel free to edit those files by adding some sample content and replacing the `title` value in the beginning of the files.
## Launching the Website Locally
Launch by using the following command:
````shell
hugo serve
````
Go to `http://localhost:1313`
You should notice three things:
1. The home page contains some basic text.
2. You have a left-side **Basics** menu, containing two submenus with names equal to the `title` properties in the previously created files.
3. When you run `hugo serve` your page refreshes automatically when you change a content page. Neat!
## Build the Website
When your site is ready to deploy, run the following command:
````shell
hugo
````
A `public` folder will be generated, containing all content and assets for your website. It can now be deployed on any web server.
Now it's time to deploy your page by simply uploading your project to some webserver or by using one of [Hugo's many deployment options](https://gohugo.io/hosting-and-deployment/).

View File

@@ -0,0 +1,6 @@
+++
tags = ["documentat'n"]
title = "Installat'n"
weight = 15
+++
{{< piratify >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,823 @@
+++
disableToc = false
title = "What's New"
weight = 2
+++
This document shows you what's new in the latest release and flags it with one of the following badges. For a detailed list of changes, see the [history page](basics/history).
- {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.112.4{{% /badge %}} The minimum required Hugo version.
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} A change that requires action by you after upgrading to assure the site is still functional.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} A change in default behavior that may requires action by you if you want to revert it.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Marks new behavior you might find interesting or comes configurable.
<!--GH-ACTION-RELEASE-MILESTONE-->
---
## 5.26.0 (2024-03-18) {#5260}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The lazy loading of images is now configurable by using the new `lazy` [image effect](cont/imageeffects). The default value hasn't changed in comparison to older versions, you don't need to change anything.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to [adjust the max width of the main area](basics/customization#change-the-main-areas-max-width), eg. in case you want to use the full page width for your content.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Images and Codefences are now respecting [Hugo's Markdown attributes](https://gohugo.io/content-management/markdown-attributes/).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has updated its Mermaid dependency to 10.6.0. This adds support for [block diagrams](shortcodes/mermaid#block-diagram).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release fixes a long outstanding bug where the page wasn't repositioning correctly when going forward or backward in your browser history.
---
## 5.25.0 (2024-02-29) {#5250}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} This release deprecates the [`attachments` shortcode](shortcodes/attachments) in favor of the new the [`resources` shortcode](shortcodes/resources).
If you are using Hugo below {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.123.0{{% /badge %}}, you don't need to change anything as the old shortcode still works (but may generate warnings).
Anyways, users are strongly advised to migrate as the `attachments` shortcode will not receive support anymore. Migration instructions are listed on the [`attachments` shortcode page](shortcodes/attachments#migration).
- {{% badge style="note" title=" " %}}Change{{% /badge %}} If you run Hugo with [GitInfo](https://gohugo.io/methods/page/gitinfo/) configured, the default page footer now prints out name, email address and date of the last commit. If you want to turn this off you either have to run Hugo without GitInfo (which is the default) or overwrite the `content-footer.html` partial.
## 5.24.0 (2024-02-28) {#5240}
- {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.112.4{{% /badge %}} This release requires a newer Hugo version.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The topbar button received a way to add text next to the icon. For this, the original `title` option was renamed to `hint` while the new `title` option is now displayed next to the icon.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The frontmatter option `menuTitle` is now deprecated in favor for Hugo's own `linkTitle`. You don't need to change anything as the old `menuTitle` option is still supported.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The light themes have a bit more contrast for content text and headings. Also the syntaxhighlighting was changed to the more colorful MonokaiLight. This brings the syntaxhighlightning in sync with the corresponding dark theme variants, which are using Monokai. If you dislike this, you can create your own color variant file as [described here](basics/branding#modify-shipped-variants).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} If the theme can not resolve a link to a page or image, you can now generate warnings or errors during build by setting `link.errorlevel` or `image.errorlevel` to either `warning` or `error` in your `hugo.toml` respectively. By default this condition is silently ignored and the link is written as-is.
Please note that a page link will generate false negatives if `uglyURLs=true` and it references an ordinary page before {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.123.0{{% /badge %}}.
Please note that an image link will generate false negatives if the file resides in your `static` directory.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You now can configure additional options for every theme variant in your `hugo.toml`. This allows for optional [advanced functionality](basics/branding#theme-variant-advanced). You don't need to change anything as the old configuration options will still work (but may generate warnings now).
The advanced functionality allows you to set an explicit name for a theme variant and now allows for multiple auto mode variants that adjust to the light/dark preference of your OS settings.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New partial for defining the heading. See [documentation](basics/customization#partials) for further reading.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Support for Hugo's built-in [`figure` shortcode](https://gohugo.io/content-management/shortcodes/#figure).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} On taxonomy and term pages you can now use prev/next navigation as within the normal page structure.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} In additiion to the existing [menu width customization](basics/customization#change-the-menu-width), it is now also possible to set the width of the menu flyout for small screen sizes with the `--MENU-WIDTH-S` CSS property.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Improvements for accessibility when tabbing thru the page for images, links and tab handles.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The `editURL` config parameter is now [overwritable in your pages frontmatter](cont/frontmatter). In addition it received more versatility by letting you control where to put the file path into the URL. This is achieved by replacing the variable `${FilePath}` in your URL by the pages file path. You don't need to change anything in your existing configuration as the old way without the replacement variable still works.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The themes [config](basics/configuration) and [frontmatter](cont/frontmatter) options received a comprehensive documentation update. In addition the theme switched from `config.toml` to `hugo.toml`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Restored compatibility with Hugo versions {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.121.0{{% /badge %}} or higher for the [`highlight` shortcode](shortcodes/highlight). This does not change the minimum required Hugo version.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Restored compatibility with Hugo versions {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.123.0{{% /badge %}} or higher for theme specific [output formats](basics/customization) and handling of taxonomy and term titles. This does not change the minimum required Hugo version.
---
## 5.23.0 (2023-11-03) {#5230}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} With {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.120.0{{% /badge %}} the author settings move into the `[params]` array in your `hugo.toml`. Because this collides with the previous way, the theme expected author information, it now adheres to Hugo standards and prints out a warning during built if something is wrong.
Change your previous setting from
{{< multiconfig file=hugo >}}
[params]
author = "Hugo"
{{< /multiconfig >}}
to
{{< multiconfig file=hugo >}}
[params]
author.name = "Hugo"
{{< /multiconfig >}}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Taxonomy [term pages](https://gohugo.io/content-management/taxonomies#add-custom-metadata-to-a-taxonomy-or-term) now add the breadcrumb for each listed page. If this gets too crowded for you, you can turn the breadcrumbs off in your `hugo.toml` by adding `disableTermBreadcrumbs=true`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Taxonomy and term pages are now allowed to contain content. This is added inbetween the title and the page list.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to print custom taxonomies anywhere in your page. [See the docs](cont/taxonomy#customization).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to adjust the menu width for your whole site. [See the docs](basics/customization#change-the-menu-width).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release adds social media meta tags for the Open Graph protocol and Twitter Cards to your site. [See the docs](basics/customization#social-media-meta-tags).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release comes with additional sort options for the menu and the [`children` shortcode](shortcodes/children). Both will now accept the following values: `weight`, `title`, `linktitle`, `modifieddate`, `expirydate`, `publishdate`, `date`, `length` or `default` (adhering to Hugo's default sort order).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now provides a mechanism to load further JavaScript dependencies defined by you only if it is needed. This comes in handy if you want to add own shortcodes that depend on additional JavaScript code to be loaded. [See the docs](basics/customization#own-shortcodes-with-javascript-dependencies).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has updated its Mermaid dependency to 10.6.0. This adds support for the [xychart type](shortcodes/mermaid#xychart).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release adds portable Markdown links.
Previously it was not possible to use pure Markdown links in a configuration independend way to link to pages inside of your project. It always required you to know how your `uglyURLs` setting is, wheather you link to a page or page bundle and in case of relative links if your current page is a page or page bundle. (eg. `[generator](generator/index.html)` vs. `[generator](generator.html)`). This is a hassle as you have to change these links manually once you change your `uglyURLs` setting or change the type of a page.
You could work around this by using the `relref` shortcode (eg `[generator]({{%/* relref "../generator" */%}})`) which works but results in non-portable Markdown.
Now it's possible to use the same path of a call to `relref` in a plain Markdown link (eg `[generator](../generator)`). This is independend of any configuration settings or the page types involved in linking. Note, that this requires your links to be given without any extension, so `[generator](generator/index.html)` will work as before.
The following types of linking are supported:
| link | description |
| ---------------------------------- | ------------------------------------------- |
| `[generator](en/basics/generator)` | absolute from your project root (multilang) |
| `[generator](/en/basics/generator)`| absolute from your project root (multilang) |
| `[generator](basics/generator)` | absolute from your current language root |
| `[generator](/basics/generator)` | absolute from your current language root |
| `[generator](./../generator)` | relative from the current page |
| `[generator](../generator)` | relative from the current page |
---
## 5.22.0 (2023-10-02) {#5220}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} This release fixes an issue where in unfortunate conditions DOM ids generated by Hugo may collide with DOM ids set by the theme. To avoid this, all theme DOM ids are now prefixed with `R-`.
If you haven't modified anything, everything is fine. Otherwise you have to check your custom CSS rules and JavaScript code.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} You can now have structural sections in the hierarchical menu without generating a page for it.
This can come in handy, if content for such a section page doesn't make much sense to you. See [the documentation](cont/frontmatter#disable-section-pages) for how to do this.
This feature may require you to make changes to your existing installation if you are already using _[shortcuts to pages inside of your project](cont/menushortcuts#shortcuts-to-pages-inside-of-your-project)_ with a _headless branch parent_.
In this case it is advised to remove the `title` from the headless branch parent's frontmatter, as it will otherwise appear in your breadcrumbs.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to overwrite the setting for `collapsibleMenu` of your `hugo.toml` inside of a page's frontmatter.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} If a Mermaid graph is zoomable a button to reset the view is now added to the upper right corner. The button is only shown once the mouse is moved over the graph.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} It is now possible to remove the root breadcrumb by setting `disableRootBreadcrumb=true` in your `hugo.toml`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The output of the dedicated search page now displays the result's breadcrumb.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Table rows now change their background color on every even row.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Translation into Swahili. This language is not supported for search.
---
## 5.21.0 (2023-09-18) {#5210}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} We made changes to the menu footer to improve alignment with the menu items in most cases. Care was taken not to break your existing overwritten footer. Anyways, if you have your `menu-footer.html` [partial overridden](basics/customization#partials), you may want to review the styling (eg. margins/paddings) of your partial.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release comes with an awesome new feature, that allows you to customize your topbar buttons, change behavior, reorder them or define entirely new ones, unique to your installation. See [the documentation](basics/topbar) for further details.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has updated its Swagger dependency to 5.7.2 for the [`openapi` shortcode](shortcodes/openapi). This brings support for OpenAPI Specification 3.1.
---
## 5.20.0 (2023-08-26) {#5200}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme has updated its Swagger dependency to 5.4.1 for the [`openapi` shortcode](shortcodes/openapi).
With this comes a change in the light theme variants of `Relearn Bright`, `Relearn Light` and `Zen Light` by switching the syntaxhighlightning inside of openapi to a light scheme. This brings it more in sync with the code style used by the theme variants itself.
Additionally, the syntaxhighlightning inside of openapi for printing was switched to a light scheme for all theme variants.
If you dislike this change, you can revert this in your theme variants CSS by adding
````css
--OPENAPI-CODE-theme: obsidian;
--PRINT-OPENAPI-CODE-theme: obsidian;
````
- {{% badge style="note" title=" " %}}Change{{% /badge %}} For consistency reasons, we renamed the CSS variable `--MENU-SECTION-HR-color` to `--MENU-SECTION-SEPARATOR-color`. You don't need to change anything in your custom color stylesheet as the old name will be used as a fallback.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme variants `Zen Light` and `Zen Dark` now add more contrast between menu, topbar and content by adding thin borders.
Those borders are now configurable by using the CSS variables `--MAIN-TOPBAR-BORDER-color`, `--MENU-BORDER-color`, `--MENU-TOPBAR-BORDER-color`, `--MENU-TOPBAR-SEPARATOR-color`, `--MENU-HEADER-SEPARATOR-color` and `--MENU-SECTION-ACTIVE-CATEGORY-BORDER-color`.
For existing variants nothing has changed visually.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The default values for the [image effects](cont/markdown#image-effects) are [now configurable](cont/imageeffects) for your whole site via `hugo.toml` or for each page thru frontmatter.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release fixes a long outstanding bug where Mermaid graphs could not be displayed if they were initially hidden - like in collapsed `expand` or inactive `tabs`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Restored compatibility with Hugo versions lower than {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.111.0{{% /badge %}} for the [`highlight` shortcode](shortcodes/highlight). This does not change the minimum required Hugo version.
---
## 5.19.0 (2023-08-12) {#5190}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The [`highlight` shortcode](shortcodes/highlight) now accepts the new parameter `title`. This displays the code like a [single tab](shortcodes/tab). This is also available using codefences and makes it much easier to write nicer code samples.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has added two new color variants `zen-light` and `zen-dark`. Check it out!
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now [dispatches the custom event](basics/customization#react-to-variant-switches-in-javascript) `themeVariantLoaded` on the `document` when the variant is fully loaded either initially or by switching the variant manually with the variant selector.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme has updated its Mermaid dependency to 10.3.1. This adds support for the [sankey diagram type](shortcodes/mermaid#sankey) and now comes with full support for YAML inside Mermaid graphs (previously, the theme ignored explicit Mermaid theme settings in YAML).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Translation into Hungarian.
---
## 5.18.0 (2023-07-27) {#5180}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme adds additional warnings for deprecated or now unsupported features.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} There are visual improvements in displaying text links in your content aswell as to some other clickable areas in the theme. If you've overwritten some theme styles in your own CSS, keep this in mind.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Restored compatibility with Hugo {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.95.0{{% /badge %}} or higher. This does not change the minimum required Hugo version.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The [`siteparam` shortcode](shortcodes/siteparam) is now capable in displaying nested params aswell as supporting text formatting.
---
## 5.17.0 (2023-06-22) {#5170}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The default behavior for the copy-to-clipboard feature for code blocks has changed.
The copy-to-clipboard button for code blocks will now only be displayed if the reader hovers the code block.
If you dislike this new behavior you can turn it off and revert to the old behavior by adding `[params] disableHoverBlockCopyToClipBoard=true` to your `hugo.toml`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Restored compatibility with Hugo {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.114.0{{% /badge %}} or higher. This does not change the minimum required Hugo version.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The new [`highlight` shortcode](shortcodes/highlight) replaces Hugo's default implementation and is fully compatible. So you don't need to change anything.
In addition it offers some extensions. Currently only the `wrap` extension option is provided to control whether a code block should be wrapped or scrolled if to long to fit.
---
## 5.16.0 (2023-06-10) {#5160}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme now provides warnings for deprecated or now unsupported features. The warnings include hints how to fix them and an additional link to the documentation.
`DEPRECATION` warnings mark features that still work but may be removed in the future.
`UNSUPPORTED` warnings mark features that will not work anymore.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The 404 error page was revamped. Hopefully you will not see this very often.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The [`tabs` shortcode](shortcodes/tabs) and the [`tab` shortcode](shortcodes/tab) received some love and now align with their style, color, title and icon parameter to the other shortcodes.
The visuals are now slightly different compared to previous versions. Most noteable, if you now display a single code block in a tab, its default styling will adapt to that of a code block but with a tab handle at the top.
Additionally the `name` parameter was renamed to `title` but you don't need to change anything yet as the old name will be used as a fallback. Nevertheless you will get deprecation warnings while executing Hugo.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now optionally supports [separate favicons](basics/customization#change-the-favicon) for light & dark mode.
---
## 5.15.0 (2023-05-29) {#5150}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Restored compatibility with Hugo {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.112.0{{% /badge %}} or higher. This does not change the minimum required Hugo version.
The [`attachments` shortcode](shortcodes/attachments) has compatibility issues with newer Hugo versions. You must switch to leaf bundles or are locked to Hugo < `0.112.0` for now.
It is [planned to refactor](https://github.com/McShelby/hugo-theme-relearn/issues/22) the `attchments` shortcode in the future. This will make it possible to use the shortcode in branch bundles again but not in simple pages anymore. This will most likely come with a breaking change.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The [`tabs` shortcode](shortcodes/tabs) has changed behavior if you haven't set the `groupid` parameter.
Formerly all tab views without a `groupid` were treated as so they belong to the same group. Now, each tab view is treated as it was given a unique id.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The already known `tabs`has a new friend the [`tab` shortcode](shortcodes/tab) to make it easier to create a tab view in case you only need one single tab. Really handy if you want to flag your code examples with a language identifier.
Additionally for such a use case, the whitespace between a tab outline and the code is removed if only a single code block is contained.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Besides the _tag_ [taxonomy](cont/taxonomy) the theme now also provides the _category_ taxonomy out of the box and shows them in the content footer of each page.
---
## 5.14.0 (2023-05-20) {#5140}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The taxonomy pages received some love in this release, making them better leverage available screen space and adding translation support for the taxonomy names.
Hugo's default taxonmies `tags` and `categories` are already contained in the theme's i18n files. If you have self-defined taxonomies, you can add translations by adding them to your own i18n files. If you don't provide translations, the singualar and plural forms are taken as configured in your `hugo.toml`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} To give you more flexibility in customizing your article layout a new partial `content-header.html` is introduced.
This came out of the requirement to customize the position of article tags, which by default are displayed above the title. A second requirement was to also show additional [taxonomies](https://gohugo.io/content-management/taxonomies/) not supported by the theme natively. While Hugo supports tags and categories by default, the theme only displays tags.
So how to adjust the position of tags starting from the theme's default where tags are only shown above the title?
1. Hide tags above title: Overwrite `content-header.html` with an empty file.
2. Show tags between title and content: Overwrite `heading-post.html` and add `{{ partial "tags.html" . }}` to it.
3. Show tags below content: Overwrite `content-footer.html` and add `{{ partial "tags.html" . }}` to it.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The new parameter `breadcrumbSeparator` is now available in your `hugo.toml` to change the - well - separator of the breadcrumb items. An appropriate default is in place if you do not configure anything.
---
## 5.13.0 (2023-05-17) {#5130}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The `swagger` shortcode was deprecated in favor for the [`openapi` shortcode](shortcodes/openapi). You don't need to change anything yet as the old name will be used as a fallback. It is planned to remove the `swagger` shortcode in the next major release.
Additionally, the implemantion of this shortcode was switched from RapiDoc to [SwaggerUI](https://github.com/swagger-api/swagger-ui).
---
## 5.12.0 (2023-05-04) {#5120}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} In the effort to comply with WCAG standards, the implementation of the collapsible menu was changed (again). While Internet Explorer 11 has issues in displaying it, the functionality still works.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Support for the great [VSCode Front Matter extension](https://github.com/estruyf/vscode-front-matter) which provides on-premise CMS capabilties to Hugo.
The theme provides Front Matter snippets for its shortcodes. Currently only English and German is supported. Put a reference into your `frontmatter.json` like this
````json {title="frontmatter.json"}
{
...
"frontMatter.extends": [
"./vscode-frontmatter/snippets.en.json"
]
...
}
````
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Support for languages that are written right to left (like Arabic) is now complete and extended to the menu, the top navigation bar and print. You can experience this in the [pirate translation](/pir). This feature is not available in Internet Explorer 11.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The scrollbars are now colored according to their variant color scheme to better fit into the visuals.
---
## 5.11.0 (2023-02-07) {#5110}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme removed the popular [jQuery](https://jquery.com) library from its distribution.
In case you made changes to the theme that are dependend on this library you can place a copy of jQuery into your `static/js` directory and load it from your own `layouts/partials/custom-header.html` like this:
````html {title="layouts/partials/custom-header.html"}
<script src="{{"js/jquery.min.js"| relURL}}" defer></script>
````
- {{% badge style="note" title=" " %}}Change{{% /badge %}} [Mermaid](shortcodes/mermaid#parameter) diagrams can now be configured for pan and zoom on site-, page-level or individually for each graph.
The default setting of `on`, in effect since 1.1.0, changed back to `off` as there was interference with scrolling on mobile and big pages.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme is now capable to visually [adapt to your OS's light/dark mode setting](basics/branding#adjust-to-os-settings).
This is also the new default setting if you haven't configured `themeVariant` in your `hugo.toml`.
Additionally you can configure the variants to be taken for light/dark mode with the new `themeVariantAuto` parameter.
This is not supported for Internet Explorer 11, which still displays in the `relearn-light` variant.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The JavaScript code for handling image lightboxes (provided by [Featherlight](https://noelboss.github.io/featherlight)) was replaced by a CSS-only solution.
This also changed the [lightbox effects](cont/markdown#lightbox) parameter from `featherlight=false` to `lightbox=false`. Nevertheless you don't need to change anything as the old name will be used as a fallback.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} In the effort to comply with WCAG standards, the implementation of the [`expand` shortcode](shortcodes/expand) was changed. While Internet Explorer 11 has issues in displaying it, the functionality still works.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Translation into Czech. This language is not supported for search.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} [GitHub releases](https://github.com/McShelby/hugo-theme-relearn/tags) are also now tagged for the main version (eg. `1.2.x`), major version (eg. `1.x`) and the latest (just `x`) release making it easier for you to pin the theme to a certain version.
---
## 5.10.0 (2023-01-25) {#5100}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The [`attachments`](shortcodes/attachments), [`badge`](shortcodes/badge), [`button`](shortcodes/button) and [`notice`](shortcodes/notice) shortcodes have a new parameter `color` to set arbitrary CSS color values.
Additionally the `--ACCENT-color` brand color introduced in version 5.8.0 is now supported with these shortcodes.
---
## 5.9.0 (2022-12-23) {#590}
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} With this version it is now possible to not only have sections on the first menu level but also pages.
It was later discovered, that this causes pages only meant to be displayed in the `More` section of the menu and stored directly inside your `content` directory to now show up in the menu aswell.
To [get rid](cont/menushortcuts#shortcuts-to-pages-inside-of-your-project) of this undesired behavior you have two choices:
1. Make the page file a [headless branch bundle](https://gohugo.io/content-management/page-bundles/#headless-bundle) (contained in its own subdirectory and called `_index.md`) and add the following frontmatter configuration to the file (see exampleSite's `content/showcase/_index.en.md`). This causes its content to **not** be ontained in the sitemap.
{{< multiconfig fm=true >}}
title = "Showcase"
[_build]
render = "always"
list = "never"
publishResources = true
{{< /multiconfig >}}
2. Store the page file for below a parent headless branch bundle and add the following frontmatter to he **parent** (see exampleSite's `content/more/_index.en.md`). **Don't give this page a `title`** as this will cause it to be shown in the breadcrumbs - a thing you most likely don't want.
{{< multiconfig fm=true >}}
[_build]
render = "never"
list = "never"
publishResources = false
{{< /multiconfig >}}
In this case, the file itself can be a branch bundle, leaf bundle or simple page (see exampleSite's `content/more/credits.en.md`). This causes its content to be contained in the sitemap.
{{< multiconfig fm=true >}}
title = "Credits"
{{< /multiconfig >}}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The required folder name for the [`attachments` shortcode](shortcodes/attachments) was changed for leaf bundles.
Previously, the attachments for leaf bundles in non-multilang setups were required to be in a `files` subdirectory. For page bundles and leaf bundles in multilang setups they were always required to be in a `_index.<LANGCODE>.files` or `index.<LANGCODE>.files` subdirectory accordingly.
This added unnecessary complexity. So attachments for leaf bundles in non-multilang setups can now also reside in a `index.files` directory. Although the old `files` directory is now deprecated, if both directories are present, only the old `files` directory will be used for compatibility.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Absolute links prefixed with `http://` or `https://` are now opened in a separate browser tab.
You can revert back to the old behavior by defining `externalLinkTarget="_self"` in the `params` section of your `hugo.toml`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now supports [Hugo's module system](https://gohugo.io/hugo-modules/).
---
## 5.8.0 (2022-12-08) {#580}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The new [`badge` shortcode](shortcodes/badge) is now available to add highly configurable markers to your content as you can see it on this page.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The new [`icon` shortcode](shortcodes/icon) simplyfies the usage of icons. This can even be combined with also new `badge` shortcode.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now supports some of GFM (GitHub Flavored Markdown) syntax and Hugo Markdown extensions, namely [task lists](cont/markdown#tasks), [defintion lists](cont/markdown#defintions) and [footnotes](cont/markdown#footnotes).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} A new color `--ACCENT-color` was introduced which is used for highlightning search results on the page. In case you simply don't care, you don't need to change anything in your variant stylesheet as the old `yellow` color is still used as default.
---
## 5.7.0 (2022-11-29) {#570}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The Korean language translation for this theme is now available with the language code `ko`. Formerly the country code `kr` was used instead.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The [`button` shortcode](shortcodes/button) can now also be used as a real button inside of HTML forms - although this is a pretty rare use case. The documentation was updated accordingly.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The search now supports the Korean language.
---
## 5.6.0 (2022-11-18) {#560}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} This release introduces an additional dedicated search page. On this page, displayed search results have more space making it easier scanning thru large number of results.
To activate this feature, you need to [configure it](basics/customization#activate-dedicated-search-page) in your `hugo.toml` as a new outputformat `searchpage` for the home page. If you don't configure it, no dedicated search page will be accessible and the theme works as before.
You can access the search page by either clicking on the magnifier glass or pressing enter inside of the search box.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Keyboard handling for the TOC and search was improved.
Pressing `CTRL+ALT+t` now will not only toggle the TOC overlay but also places the focus to the first heading on opening. Subsequently this makes it possible to easily select headings by using the `TAB` key.
The search received its own brand new keyboard shortcut `CTRL+ALT+f`. This will focus the cursor inside of the the search box so you can immediately start your search by typing.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You are now able to turn off the generation of generator meta tags in your HTML head to hide the used versions of Hugo and this theme.
To [configure this](basics/configuration) in your `hugo.toml` make sure to set Hugo's `disableHugoGeneratorInject=true` **and** also `[params] disableGeneratorVersion=true`, otherwise Hugo will generate a meta tag into your home page automagically.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Creation of your project gets a little bit faster with this release.
This addresses increased build time with the 5.x releases. The theme now heavily caches partial results leading to improved performance. To further increase performance, unnecessary parts of the page are now skipped for creation of the print output (eg. menus, navigation bar, etc.).
---
## 5.5.0 (2022-11-06) {#550}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The way images are processed has changed. Now images are lazy loaded by default which speeds up page load on slow networks and/or big pages and also the print preview.
For that the JavaScript code to handle the [lightbox and image effects](cont/markdown#image-effects) on the client side was removed in favour for static generation of those effects on the server.
If you have used HTML directly in your Markdown files, this now has the downside that it doesn't respect the effect query parameter anymore. In this case you have to migrate all your HTML `img` URLs manually to the 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) {#540}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} [With the proper settings](basics/customization#file-system) in your `hugo.toml` your page is now servable from the local file system using `file://` URLs.
Please note that the searchbox will only work for this if you reconfigure your outputformat for the homepage in your `hugo.toml` from `json` to `search`. The now deprecated `json` outputformat still works as before, so there is no need to reconfigure your installation if it is only served from `http://` or `https://`.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The [`button` shortcode](shortcodes/button) has a new parameter `target` to set the destination frame/window for the URL to open. If not given, it defaults to a new window/tab for external URLs or is not set at all for internal URLs. Previously even internal URLs where opened in a new window/tab.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The [`math` shortcode](shortcodes/math) and [`mermaid` shortcode](shortcodes/mermaid) now also support the `align` parameter if codefence syntax is used.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Support for languages that are written right to left (like Arabic). This is only implemented for the content area but not the navigation sidebar. This feature is not available in Internet Explorer 11.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Translation into Finnish (Suomi).
---
## 5.3.0 (2022-10-07) {#530}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} In the effort to comply with WCAG standards, the implementation of the collapsible menu was changed. The functionality of the new implementation does not work with old browsers (Internet Explorer 11).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} [Image formatting](cont/markdown#add-css-classes) has two new classes to align images to the `left` or `right`. Additionally, the already existing `inline` option is now documented.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Printing for the [`swagger` shortcode](shortcodes/openapi) was optimized to expand sections that are usually closed in interactive mode. This requires [print support](basics/customization#activate-print-support) to be configured.
---
## 5.2.0 (2022-08-03) {#520}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} If you've set `collapsibleMenu = true` in your `hugo.toml`, the menu will be expanded if a search term is found in a collapsed submenu. The menu will return to its initial collapse state once the search term does not match any submenus.
---
## 5.1.0 (2022-07-15) {#510}
- {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.95.0{{% /badge %}} This release requires a newer Hugo version.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Because the print preview URLs were non deterministic for normal pages in comparison to page bundles, this is now changed. Each print preview is now accessible by adding a `index.print.html` to the default URL.
You can revert this behavior by overwriting the `print` output format setting in your `hugo.toml`to:
{{< multiconfig file=hugo >}}
[outputFormats]
[outputFormats.print]
name= "print"
baseName = "index"
path = "_print"
isHTML = true
mediaType = 'text/html'
permalinkable = false
{{< /multiconfig >}}
---
## 5.0.0 (2022-07-05) {#500}
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} The theme changed how JavaScript and CSS dependencies are loaded to provide a better performance. In case you've added own JavaScript code that depends on the themes jQuery implementation, you have to put it into a separate `*.js` file (if not already) and add the `defer` keyword to the `script` element. Eg.
````html
<script defer src="myscript.js"></script>
````
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The way [archetypes](cont/archetypes) are used to generate output has changed. The new systems allows you, to redefine existing archetypes or even generate your own ones.
Your existing markdown files will still work like before and therefore you don't need to change anything after the upgrade. Nevertheless, it is recommended to adapt your existing markdown files to the new way as follows:
- for your home page, add the frontmatter parameter `archetype = "home"` and remove the leading heading
- for all files containing the deprecated frontmatter parameter `chapter = true`, replace it with `archetype = "chapter"` and remove the leading headings
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The frontmatter options `pre` / `post` were renamed to `menuPre` / `menuPost`. The old options will still be used if the new options aren't set. Therefore you don't need to change anything after the upgrade.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Adding new partials `heading-pre.html` / `heading-post.html` and according frontmatter options `headingPre` / `headingPost` to modify the way your page`s main heading gets styled.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The new shortcode `math` is available to add beautiful math and chemical formulae. See the [documentation](shortcodes/math) for available features. This feature will not work with Internet Explorer 11.
---
## 4.2.0 (2022-06-23) {#420}
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} The second parameter for the [`include` shortcode](shortcodes/include) was switched in meaning and was renamed from `showfirstheading` to `hidefirstheading`. If you haven't used this parameter in your shortcode, the default behavior hasn't changed and you don't need to change anything.
If you've used the second boolean parameter, you have to rename it and invert its value to achieve the same behavior.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Previously, if the [`tabs` shortcode](shortcodes/tabs) could not find a tab item because, the tabs ended up empty. Now the first tab is selected instead.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The `landingPageURL` was removed from `hugo.toml`. You can safely remove this as well from your configuration as it is not used anymore. The theme will detect the landing page URL automatically and will point to the project's homepage. If you want to support a different link, overwrite the `logo.html` partial.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} All shortcodes can now be also called from your partials. Examples for this are added to the documentation of each shortcode.
---
## 4.1.0 (2022-06-12) {#410}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} While fixing issues with the search functionality for non Latin languages, you can now [configure to have multiple languages on a single page](cont/i18n#search-with-mixed-language-support).
---
## 4.0.0 (2022-06-05) {#400}
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} The `custom_css` config parameter was removed from the configuration. If used in an existing installation, it can be achieved by overriding the `custom-header.html` template in a much more generic manner.
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} Because anchor hover color was not configurable without introducing more complexity to the variant stylesheets, we decided to remove `--MAIN-ANCHOR-color` instead. You don't need to change anything in your custom color stylesheet as the anchors now get their colors from `--MAIN-LINK-color` and `--MAIN-ANCHOR-HOVER-color` respectively.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} All shortcodes now support named parameter. The positional parameter are still supported but will not be enhanced with new features, so you don't need to change anything in your installation.
This applies to [`expand`](shortcodes/expand), [`include`](shortcodes/include), [`notice`](shortcodes/notice) and [`siteparam`](shortcodes/siteparam).
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The [`button`](shortcodes/button) shortcode received some love and now has a parameter for the color style similar to other shortcodes.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New colors `--PRIMARY-color` and `--SECONDARY-color` were added to provide easier modification of your custom style. Shortcodes with a color style can now have `primary` or `secondary` as additional values.
These two colors are the default for other, more specific color variables. You don't need to change anything in your existing custom color stylesheets as those variables get reasonable default values.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Translation into Polish. This language is not supported for search.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The documentation for all shortcodes were revised.
---
## 3.4.0 (2022-04-03) {#340}
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} If you had previously overwritten the `custom-footer.html` partial to add visual elements below the content of your page, you have to move this content to the new partial `content-footer.html`. `custom-footer.html` was never meant to contain HTML other than additional styles and JavaScript.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} If you prefer expandable/collapsible menu items, you can now set `collapsibleMenu=true` in your `hugo.toml`. This will add arrows to all menu items that contain sub menus. The menu will expand/collapse without navigation if you click on an arrow.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can activate [print support](basics/customization#activate-print-support) in your `hugo.toml` to add the capability to print whole chapters or even the complete site.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Translation into Traditional Chinese.
---
## 3.3.0 (2022-03-28) {#330}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Introduction of new CSS variables to set the font. The theme distinguishes between `--MAIN-font` for all content text and `--CODE-font` for inline or block code. There are additional overrides for all headings. See the [theme variant generator](basics/generator) of the exampleSite for all available variables.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The new shortcode `swagger` is available to include a UI for REST OpenAPI specifications. See the [documentation](shortcodes/openapi) for available features. This feature will not work with Internet Explorer 11.
---
## 3.2.0 (2022-03-19) {#320}
- {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.93.0{{% /badge %}} This release requires a newer Hugo version.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} In this release the Mermaid JavaScript library will only be loaded on demand if the page contains a Mermaid shortcode or is using Mermaid codefences. This changes the behavior of `disableMermaid` config option as follows: If a Mermaid shortcode or codefence is found, the option will be ignored and Mermaid will be loaded regardlessly.
The option is still useful in case you are using scripting to set up your graph. In this case no shortcode or codefence is involved and the library is not loaded by default. In this case you can set `disableMermaid=false` in your frontmatter to force the library to be loaded. See the [theme variant generator](basics/generator) of the exampleSite for an example.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Additional color variant variable `--MERMAID-theme` to set the variant's Mermaid theme. This causes the Mermaid theme to switch with the color variant if it defers from the setting of the formerly selected color variant.
---
## 3.1.0 (2022-03-15) {#310}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} [`attachment`](shortcodes/attachments) and [`notice`](shortcodes/notice) shortcodes have a new parameter to override the default icon. Allowed values are all [Font Awesome 5 Free](https://fontawesome.com/v5/search?m=free) icons.
---
## 3.0.0 (2022-02-22) {#300}
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} We made changes to the menu footer. If you have your `menu-footer.html` [partial overridden](basics/customization#partials), you may have to review the styling (eg. margins/paddings) in your partial. For a reference take a look into the `menu-footer.html` partial that is coming with the exampleSite.
This change was made to allow your own menu footer to be placed right after the so called prefooter that comes with the theme (containing the language switch and _Clear history_ functionality).
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} We have changed the default colors from the original Learn theme (the purple menu header) to the Relearn defaults (the light green menu header) as used in the official documentation.
This change will only affect your installation if you've not set the `themeVariant` parameter in your `hugo.toml`. [If you still want to use the Learn color variant](basics/branding#theme-variant), you have to explicitly set `themeVariant="learn"` in your `hugo.toml`.
Note, that this will also affect your site if viewed with Internet Explorer 11 but in this case it can not be reconfigured as Internet Explorer does not support CSS variables.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Due to a bug, that we couldn't fix in a general manner for color variants, we decided to remove `--MENU-SEARCH-BOX-ICONS-color` and introduced `--MENU-SEARCH-color` instead. You don't need to change anything in your custom color stylesheet as the old name will be used as a fallback.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} For consistency reasons, we renamed `--MENU-SEARCH-BOX-color` to `--MENU-SEARCH-BORDER-color`. You don't need to change anything in your custom color stylesheet as the old name will be used as a fallback.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} With this release you are now capable to define your own _dark mode_ variants.
To make this possible, we have introduced a lot more color variables you can use in [your color variants](basics/branding#theme-variant). Your old variants will still work and don't need to be changed as appropriate fallback values are used by the theme. Nevertheless, the new colors allow for much more customization.
To see what's now possible, see the new variants `relearn-dark` and `neon` that are coming with this release.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} To make the creation of new variants easier for you, we've added a new interactive [theme variant generator](basics/generator). This feature will not work with Internet Explorer 11.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can now configure multiple color variants in your `hugo.toml`. In this case, the first variant is the default chosen on first view and a variant selector will be shown in the menu footer. See the [documentation](basics/branding#multiple-variants) for configuration.
Note, that the new variant selector will not work with Internet Explorer 11 as it does not support CSS variables. Therefore, the variant selector will not be displayed with Internet Explorer 11.
---
## 2.9.0 (2021-11-19) {#290}
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} This release removes the themes implementation of `ref`/`relref` in favor for Hugos standard implementation. This is because of inconsistencies with the themes implementation. In advantage, your project becomes standard compliant and exchanging this theme in your project to some other theme will be effortless.
In a standard compliant form you must not link to the `*.md` file but to its logical name. You'll see, referencing other pages becomes much easier. All three types result in the same reference:
| Type | Non-Standard | Standard |
|---------------|----------------------------------|------------------------|
| Branch bundle | `basics/configuration/_index.md` | `basics/configuration` |
| Leaf bundle | `basics/configuration/index.md` | `basics/configuration` |
| Page | `basics/configuration.md` | `basics/configuration` |
If you've linked from a page of one language to a page of another language, conversion is a bit more difficult but [Hugo got you covered](https://gohugo.io/content-management/cross-references/#link-to-another-language-version) as well.
Also, the old themes implementation allowed refs to non-existing content. This will cause Hugos implementation to show the error below and abort the generation. If your project relies on this old behavior, you can [reconfigure the error handling](https://gohugo.io/content-management/cross-references/#link-to-another-language-version) of Hugos implementation.
In the best case your usage of the old implementation is already standard compliant and you don't need to change anything. You'll notice this very easily once you've started `hugo server` after an upgrade and no errors are written to the console.
You may see errors on the console after the update in the form:
````shell
ERROR 2021/11/19 22:29:10 [en] REF_NOT_FOUND: Ref "basics/configuration/_index.md": "hugo-theme-relearn\exampleSite\content\_index.en.md:19:22": page not found
````
In this case, you must apply one of two options:
1. Start up a text editor with regular expression support for search and replace. Search for `(ref\s+"[^"]*?)(?:/_index|/index)?(?:\.md)?(#[^"]*?)?"` and replace it by `$1$2"` in all `*.md` files. **This is the recommended choice**.
2. Copy the old implementation files `theme/hugo-theme-relearn/layouts/shortcode/ref.html` and `theme/hugo-theme-relearn/layouts/shortcode/relref.html` to your own projects `layouts/shortcode/ref.html` and `layouts/shortcode/relref.html` respectively. **This is not recommended** as your project will still rely on non-standard behavior afterwards.
---
## 2.8.0 (2021-11-03) {#280}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Although never officially documented, this release removes the font `Novacento`/`Novecento`. If you use it in an overwritten CSS please replace it with `Work Sans`. This change was necessary as Novacento did not provide all Latin special characters and lead to mixed styled character text eg. for Czech.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The theme now supports favicons served from `static/images/` named as `favicon` or `logo` in SVG, PNG or ICO format [out of the box](basics/customization#change-the-favicon). An overridden partial `layouts/partials/favicon.html` may not be necessary anymore in most cases.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can hide the table of contents menu for the whole site by setting the `disableToc` option in your `hugo.toml`. For an example see [the example configuration](basics/configuration).
---
## 2.7.0 (2021-10-24) {#270}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Optional second parameter for [`notice`](shortcodes/notice) shortcode to set title in box header.
---
## 2.6.0 (2021-10-21) {#260}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Your site can now be served from a subfolder if you set `baseURL` in your `hugo.toml`. See the [documentation](basics/customization#serving-your-page-from-a-subfolder) for a detailed example.
---
## 2.5.0 (2021-10-08) {#250}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} New colors `--CODE-BLOCK-color` and `--CODE-BLOCK-BG-color` were added to provide a fallback for Hugos syntax highlighting in case no language was given or the language is unsupported. Ideally the colors are set to the same values as the ones from your chosen chroma style.
---
## 2.4.0 (2021-10-07) {#240}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Creation of customized stylesheets was simplified down to only contain the CSS variables. Everything else can and should be deleted from your custom stylesheet to assure everything works fine. For the predefined stylesheet variants, this change is already included.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Hidden pages are displayed by default in their according tags page. You can now turn off this behavior by setting `disableTagHiddenPages=true` in your `hugo.toml`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can define the expansion state of your menus for the whole site by setting the `alwaysopen` option in your `hugo.toml`. Please see further [documentation](cont/frontmatter#override-expand-state-rules-for-menu-entries) for possible values and default behavior.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New frontmatter `ordersectionsby` option to change immediate children sorting in menu and `children` shortcode. Possible values are `title` or `weight`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Alternate content of a page is now advertised in the HTML meta tags. See [Hugo documentation](https://gohugo.io/templates/rss/#reference-your-rss-feed-in-head).
---
## 2.3.0 (2021-09-13) {#230}
- {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.81.0{{% /badge %}} This release requires a newer Hugo version.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Showcase multilanguage features by providing a documentation translation "fer us pirrrates". There will be no other translations besides the original English one and the Pirates one due to maintenance constraints.
---
## 2.2.0 (2021-09-09) {#220}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Hidden pages are displayed by default in the sitemap generated by Hugo and are therefore visible for search engine indexing. You can now turn off this behavior by setting `disableSeoHiddenPages=true` in your `hugo.toml`.
---
## 2.1.0 (2021-09-07) {#210}
- {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.69.0{{% /badge %}} This release requires a newer Hugo version.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} In case the site's structure contains additional *.md files not part of the site (eg files that are meant to be included by site pages - see `CHANGELOG.md` in the exampleSite), they will now be ignored by the search.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Hidden pages are indexed for the site search by default. You can now turn off this behavior by setting `disableSearchHiddenPages=true` in your `hugo.toml`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} If a search term is found in an `expand` shortcode, the expand will be opened.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The menu will scroll the active item into view on load.
---
## 2.0.0 (2021-08-28) {#200}
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Syntax highlighting was switched to the [built in Hugo mechanism](https://gohugo.io/content-management/syntax-highlighting/). You may need to configure a new stylesheet or decide to roll you own as described on in the Hugo documentation
- {{% badge style="note" title=" " %}}Change{{% /badge %}} In the predefined stylesheets there was a typo and `--MENU-HOME-LINK-HOVERED-color` must be changed to `--MENU-HOME-LINK-HOVER-color`. You don't need to change anything in your custom color stylesheet as the old name will be used as a fallback.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} `--MENU-HOME-LINK-color` and `--MENU-HOME-LINK-HOVER-color` were missing in the documentation. You should add them to your custom stylesheets if you want to override the defaults.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} Arrow navigation and `children` shortcode were ignoring setting for `ordersectionsby`. This is now changed and may result in different sorting order of your sub pages.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} If hidden pages are accessed directly by typing their URL, they will be exposed in the menu.
- {{% badge style="note" title=" " %}}Change{{% /badge %}} A page without a `title` will be treated as `hidden=true`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You can define the expansion state of your menus in the frontmatter. Please see further [documentation](cont/frontmatter#override-expand-state-rules-for-menu-entries) for possible values and default behavior.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New partials for defining pre/post content for menu items and the content. See [documentation](basics/customization#partials) for further reading.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Shortcode [`children`](shortcodes/children) with new parameter `containerstyle`.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} New shortcode [`include`](shortcodes/include) to include arbitrary file content into a page.
---
## 1.2.0 (2021-07-26) {#120}
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Shortcode [`expand`](shortcodes/expand) with new parameter to open on page load.
---
## 1.1.0 (2021-07-02) {#110}
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} [Mermaid](shortcodes/mermaid) diagrams can now be panned and zoomed. This isn't configurable yet.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} [`Mermaid`](shortcodes/mermaid#configuration) config options can be set in `hugo.toml`.
---
## 1.0.0 (2021-07-01) {#100}
- {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.65.0{{% /badge %}} The requirement for the Hugo version of this theme is the same as for the Learn theme version 2.5.0 on 2021-07-01.
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} Initial fork of the [Learn theme](https://github.com/matcornic/hugo-theme-learn) based on Learn 2.5.0 on 2021-07-01. This introduces no new features besides a global rename to `Relearn` and a new logo. For the reasons behind forking the Learn theme, see [this comment](https://github.com/matcornic/hugo-theme-learn/issues/442#issuecomment-907863495) in the Learn issues.

View File

@@ -0,0 +1,6 @@
+++
disableToc = false
title = "What's New"
weight = 2
+++
{{< piratify true >}}

View File

@@ -0,0 +1,12 @@
+++
categories = "basic"
disableToc = true
title = "Requirements"
weight = 10
+++
Thanks to the simplicity of Hugo, this page is as empty as this theme needs requirements.
Just download at least version {{% badge color="fuchsia" icon="fab fa-hackerrank" title=" " %}}0.112.4{{% /badge %}} of the [Hugo binary](https://gohugo.io/getting-started/installing/) for your OS (Windows, Linux, Mac).
{{% figure src="magic.gif" link="https://gohugo.io" alt="Magic" caption="It's a kind of magic" %}}

View File

@@ -0,0 +1,7 @@
+++
categories = "basic"
disableToc = true
title = "Requirrrements"
weight = 10
+++
{{< piratify >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@@ -0,0 +1,177 @@
+++
title = "Topbar Modification"
weight = 27
+++
The theme comes with a reasonably configured topbar.
![Topbar on mobile devices](topbar-closed.png)
Nevertheless, your requirements may differ from this configuration. Luckily the theme got you covered as the themebar, its buttons and the functionality behind these buttons is fully configurable by you.
{{% notice tip %}}
All mentioned file names below can be clicked and show you the implementation for a better understanding.
{{% /notice %}}
## Areas
The default configuration comes with three predefined areas that may contain an arbitrary set of buttons.
![Topbar with default areas marked](topbar-areas.png)
- [**start**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/area/start.html): shown between menu and breadcrumb
- [**end**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/area/end.html): shown on the opposite breadcrumb side in comparison to the _start_ area
- [**more**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/area/more.html): shown when pressing the {{% button style="transparent" icon="ellipsis-v" %}}{{% /button %}} _more_ button in the topbar
While you can not add additional areas in the topbar, you are free to configure addtional buttons that behave like the _more_ button, providing further user defined areas.
## Buttons
The theme ships with the following predefined buttons (from left to right in the screenshot)
- {{% button style="transparent" icon="bars" %}}{{% /button %}} [**sidebar**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/sidebar.html): opens the sidebar flyout if in mobile layout
- {{% button style="transparent" icon="list-alt" %}}{{% /button %}} [**toc**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/toc.html): opens the table of contents in an overlay
- {{% button style="transparent" icon="pen" %}}{{% /button %}} [**edit**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/edit.html): browses to the editable page if the `editURL` [parameter is set](basics/configuration)
- {{% button style="transparent" icon="print" %}}{{% /button %}} [**print**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/print.html): browses to the chapters printable page if [print support](basics/customization#activate-print-support) was activated
- {{% button style="transparent" icon="chevron-left" %}}{{% /button %}} [**prev**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/prev.html): browses to the previous page if there is one
- {{% button style="transparent" icon="chevron-right" %}}{{% /button %}} [**next**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/next.html): browses to the next page if there is one
- {{% button style="transparent" icon="ellipsis-v" %}}{{% /button %}} [**more**](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/more.html): opens the overlay for the _more_ area
Not all buttons are displayed at every given time. This is configurable (see below if interested).
## Redefining Areas
Each predefined area and button comes in their own file. By that it is easy for you to overwrite an area file in your installation reusing only the buttons you like.
Eg. you can redefine the predefined _end_ area by adding the file [`layouts/partials/topbar/area/end.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/area/end.html) in your installation (not in the theme itself) to remove all but the _more_ button.
The below example sets an explicit value for the `onempty` parameter, overriding the specific default value for this button (these defaults vary depending on the button). The parameter causes the _more_ button to always be displayed instead of hiding once its content is empty.
````go
{{ partial "topbar/button/more.html" (dict
"page" .
"onempty" "disable"
)}}
````
## Defining own Buttons
### Button Types
The theme distingushies between two types of buttons:
- [**button**](#button): a clickable button that either browses to another site, triggers a user defined script or opens an overlay containing user defined content
- [**area-button**](#area-button): the template for the {{% button style="transparent" icon="ellipsis-v" %}}{{% /button %}} _more_ button, to define your own area overlay buttons
### Button Parameter
#### Screen Widths and Actions
Depending on the screen width you can configure how the button should behave. Screen width is divided into three classes:
- **s**: (controlled by the `onwidths` parameter) mobile layout where the menu sidebar is hidden
- **m**: (controlled by the `onwidthm` parameter) desktop layout with visible sidebar while the content area width still resizes
- **l**: (controlled by the `onwidthl` parameter) desktop layout with visible sidebar once the content area reached its maximum width
For each width class, you can configure one of the following actions:
- `show`: the button is displayed in its given area
- `hide`: the button is removed
- `area-XXX`: the button is moved from its given area into the area `XXX`; eg. this is used to move buttons to the _more_ area overlay in the mobile layout
#### Hiding and Disabling Stuff
While hiding a button dependend on the screen size can be configured with the above described _hide_ action, you may want to hide the button on certain other conditions aswell.
For example, the _print_ button in its default configuration should only be displayed if print support was configured. This is done in your button template by checking the conditions first before displaying the button (see [`layouts/partials/topbar/button/print.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/print.html)).
Another prefered condition for hiding a button is, if the displayed overlay is empty. This is the case for the _toc_ (see [`layouts/partials/topbar/button/toc.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/toc.html)) aswell as the _more_ button (see [`layouts/partials/topbar/button/more.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/more.html)) and controlled by the parameter `onempty`.
This parameter can have one of the following values:
- `disable`: the button displayed in disabled state if the overlay is empty
- `hide`: the button is removed if the overlay is empty
If you want to disable a button containing _no overlay_, this can be achieved by an empty `href` parameter. An example can be seen in the _prev_ button (see `layouts/partials/topbar/button/prev.html`) where the URL for the previous site may be empty.
## Reference
### Button
Contains the basic button functionality and is used as a base implementation for all other buttons ([`layouts/partials/topbar/func/button.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/func/button.html)).
Call this from your own button templates if you want to implement a button without an overlay like the _print_ button ([`layouts/partials/topbar/button/print.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/print.html)) or with an overlay containing arbitrary content like the _toc_ button ([`layouts/partials/topbar/button/toc.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/toc.html)).
For displaying an area in the button's overlay, see [Area-Button](#area-button).
#### Parameter
| Name | Default | Notes |
|-----------------------|-----------------|-------------|
| **page** | _&lt;empty&gt;_ | Mandatory reference to the page. |
| **class** | _&lt;empty&gt;_ | Mandatory unique class name for this button. Displaying two buttons with the same value for **class** is undefined. |
| **href** | _&lt;empty&gt;_ | Either the destination URL for the button or JavaScript code to be executed on click.<br><br>- if starting with `javascript:` all following text will be executed in your browser<br>- every other string will be interpreted as URL<br>- if empty the button will be displayed in disabled state regardless of its **content** |
| **icon** | _&lt;empty&gt;_ | [Font Awesome icon name](shortcodes/icon#finding-an-icon). |
| **onempty** | `disable` | Defines what to do with the button if the content parameter was set but ends up empty:<br><br>- `disable`: The button is displayed in disabled state.<br>- `hide`: The button is removed. |
| **onwidths** | `show` | The action, that should be executed if the site is displayed in the given width:<br><br>- `show`: The button is displayed in its given area<br>- `hide`: The button is removed.<br>- `area-XXX`: The button is moved from its given area into the area `XXX`. |
| **onwidthm** | `show` | See above. |
| **onwidthl** | `show` | See above. |
| **hint** | _&lt;empty&gt;_ | Arbitrary text displayed in the tooltip. |
| **title** | _&lt;empty&gt;_ | Arbitrary text for the button. |
| **content** | _&lt;empty&gt;_ | Arbitrary HTML to put into the content overlay. This parameter may be empty. In this case no overlay will be generated. |
### Area-Button
Contains the basic functionality to display area overlay buttons ([`layouts/partials/topbar/func/area-button.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/func/area-button.html)).
Call this from your own button templates if you want to implement a button with an area overlay like the _more_ button ([`layouts/partials/topbar/button/more.html`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button/more.html)).
#### Parameter
| Name | Default | Notes |
|-----------------------|-----------------|-------------|
| **page** | _&lt;empty&gt;_ | Mandatory reference to the page. |
| **area** | _&lt;empty&gt;_ | Mandatory unique area name for this area. Displaying two areas with the same value for **area** is undefined. |
| **icon** | _&lt;empty&gt;_ | [Font Awesome icon name](shortcodes/icon#finding-an-icon). |
| **onempty** | `disable` | Defines what to do with the button if the content overlay is empty:<br><br>- `disable`: The button is displayed in disabled state.<br>- `hide`: The button is removed. |
| **onwidths** | `show` | The action, that should be executed if the site is displayed in the given width:<br><br>- `show`: The button is displayed in its given area<br>- `hide`: The button is removed.<br>- `area-XXX`: The button is moved from its given area into the area `XXX`. |
| **onwidthm** | `show` | See above. |
| **onwidthl** | `show` | See above. |
| **hint** | _&lt;empty&gt;_ | Arbitrary text displayed in the tooltip. |
| **title** | _&lt;empty&gt;_ | Arbitrary text for the button. |
### Predefined Buttons
The predefined buttons by the theme (all other buttons besides the _more_ and _toc_ button in [`layouts/partials/topbar/button`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button)).
Call these from your own redefined area templates if you want to use default button behavior.
The `<varying>` parameter values are different for each button and configured for standard behavior as seen on this page.
#### Parameter
| Name | Default | Notes |
|-----------------------|-------------------|-------------|
| **page** | _&lt;empty&gt;_ | Mandatory reference to the page. |
| **onwidths** | _&lt;varying&gt;_ | The action, that should be executed if the site is displayed in the given width:<br><br>- `show`: The button is displayed in its given area<br>- `hide`: The button is removed.<br>- `area-XXX`: The button is moved from its given area into the area `XXX`. |
| **onwidthm** | _&lt;varying&gt;_ | See above. |
| **onwidthl** | _&lt;varying&gt;_ | See above. |
### Predefined Overlay-Buttons
The predefined buttons by the theme that open an overlay (the _more_ and _toc_ button in [`layouts/partials/topbar/button`](https://github.com/McShelby/hugo-theme-relearn/blob/main/layouts/partials/topbar/button)).
Call these from your own redefined area templates if you want to use default button behavior utilizing overlay functionality.
The `<varying>` parameter values are different for each button and configured for standard behavior as seen on this page.
#### Parameter
| Name | Default | Notes |
|-----------------------|-------------------|-------------|
| **page** | _&lt;empty&gt;_ | Mandatory reference to the page. |
| **onempty** | `disable` | Defines what to do with the button if the content overlay is empty:<br><br>- `disable`: The button is displayed in disabled state.<br>- `hide`: The button is removed. |
| **onwidths** | _&lt;varying&gt;_ | The action, that should be executed if the site is displayed in the given width:<br><br>- `show`: The button is displayed in its given area<br>- `hide`: The button is removed.<br>- `area-XXX`: The button is moved from its given area into the area `XXX`. |
| **onwidthm** | _&lt;varying&gt;_ | See above. |
| **onwidthl** | _&lt;varying&gt;_ | See above. |

View File

@@ -0,0 +1,5 @@
+++
title = "Topbarrr Modificat'n"
weight = 27
+++
{{< piratify >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -0,0 +1,7 @@
+++
archetype = "chapter"
title = "Content"
weight = 2
+++
Find out how to create and organize your content quickly and intuitively.

View File

@@ -0,0 +1,6 @@
+++
archetype = "chapter"
title = "Rambl'n"
weight = 2
+++
{{< piratify >}}

View File

@@ -0,0 +1,128 @@
+++
title = "Archetypes"
weight = 3
+++
Using the command: `hugo new [relative new content path]`, you can start a content file with the date and title automatically set. While this is a welcome feature, active writers need more: [archetypes](https://gohugo.io/content/archetypes/). These are preconfigured skeleton pages with default frontmatter.
The Relearn theme defines some few archetypes of pages but you are free to define new ones to your liking. All can be used at any level of the documentation, the only difference being the layout of the content.
## Predefined Archetypes
### Home {#archetypes-home}
A **Home** page is the starting page of your project. It's best to have only one page of this kind in your project.
![Home page](pages-home.png?width=60pc)
To create a home page, run the following command
````shell
hugo new --kind home _index.md
````
This leads to a file with the following content
````toml {title="_index.md"}
+++
archetype = "home"
title = "{{ replace .Name "-" " " | title }}"
+++
Lorem Ipsum.
````
### Chapter {#archetypes-chapter}
A **Chapter** displays a page meant to be used as introduction for a set of child pages. Commonly, it contains a simple title and a catch line to define content that can be found below it.
![Chapter page](pages-chapter.png?width=60pc)
To create a chapter page, run the following command
````shell
hugo new --kind chapter <name>/_index.md
````
This leads to a file with the following content
````toml {title="_index.md"}
+++
archetype = "chapter"
title = "{{ replace .Name "-" " " | title }}"
weight = 1
+++
Lorem Ipsum.
````
The `weight` number will be used to generate the subtitle of the chapter page, set the number to a consecutive value starting at 1 for each new chapter level.
### Default {#archetypes-default}
A **Default** page is any other content page. If you set an unknown archetype in your frontmatter, this archetype will be used to generate the page.
![Default page](pages-default.png?width=60pc)
To create a default page, run either one of the following commands
````shell
hugo new <chapter>/<name>/_index.md
````
or
````shell
hugo new <chapter>/<name>.md
````
This leads to a file with the following content
````toml {title="*.md"}
+++
title = "{{ replace .Name "-" " " | title }}"
+++
Lorem Ipsum.
````
## Self defined Archetypes
If you are in need of further archetypes you can define your own or even redefine existing ones.
### Template
Define a template file in your project at `archetypes/<kind>.md` and make sure it has at least the frontmatter parameter for that archetype like
````toml {title="&lt;kind&gt;.md"}
+++
archetype = "<kind>"
+++
````
Afterwards you can generate new content files of that kind with the following command
````shell
hugo new --kind <kind> <name>/_index.md
````
### Partials
To define how your archetypes are rendered, define corresponding partial files in your projects directory `layouts/partials/archetypes/<kind>`.
If you use an unknown archetype in your frontmatter, the `default` archetype will be used to generate the page.
Related to each archetype, several _hook_ partial files in the form of `<hook>.html` can be given inside each archetype directory. If a partial for a specific hook is missing, no output is generated for this hook.
The following hooks are used:
| Name | Notes |
|----------------------|-------------|
| styleclass | Defines a set of CSS classes to be added to the HTML's `<main>` element. You can use these classes to define own CSS rules in your `custom-header.html` |
| article | Defines the HTML how to render your content |
Take a look at the existing archetypes of this theme to get an idea how to utilize it.
#### Output formats
Each hook file can be overridden of a specific [output format](https://gohugo.io/templates/output-formats/). Eg. if you define a new output format `PLAINTEXT` in your `hugo.toml`, you can add a file `layouts/partials/archetypes/default.plaintext.html` to change the way how normal content is written for that output format.

View File

@@ -0,0 +1,5 @@
+++
title = "Arrrchetypes"
weight = 3
+++
{{< piratify >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

@@ -0,0 +1,87 @@
+++
title = "Frontmatter"
weight = 2
+++
Each Hugo page **has to define** a [frontmatter](https://gohugo.io/content/front-matter/).
## All Frontmatter Options
The values reflect example options. The defaults can be taken from the [annotated example](#annotated-frontmatter-options) below.
{{< multiconfig fm=true >}}
{{% include "cont/frontmatter/frontmatter.toml" %}}
{{< /multiconfig >}}
## Annotated Frontmatter Options
````toml {title="toml"}
+++
{{% include "cont/frontmatter/frontmatter.toml" %}}+++
````
## Some Detailed Examples
### Add Icon to a Menu Entry
In the page frontmatter, add a `menuPre` param to insert any HTML code before the menu label. The example below uses the GitHub icon.
{{< multiconfig fm=true >}}
title = "GitHub repo"
menuPre = "<i class='fab fa-github'></i> "
{{< /multiconfig >}}
![Title with icon](frontmatter-icon.png?width=18.75rem)
### Ordering Sibling Menu/Page Entries
Hugo provides a [flexible way](https://gohugo.io/content/ordering/) to handle order for your pages.
The simplest way is to set `weight` parameter to a number.
{{< multiconfig fm=true >}}
title = "My page"
weight = 5
{{< /multiconfig >}}
### Using a Custom Title for Menu Entries
By default, the Relearn theme will use a page's `title` attribute for the menu item.
But a page's title has to be descriptive on its own while the menu is a hierarchy. Hugo adds the `linkTitle` parameter for that purpose:
For example (for a page named `content/install/linux.md`):
{{< multiconfig fm=true >}}
title = "Install on Linux"
linkTitle = "Linux"
{{< /multiconfig >}}
### Override Expand State Rules for Menu Entries
You can change how the theme expands menu entries on the side of the content with the `alwaysopen` setting on a per page basis. If `alwaysopen=false` for any given entry, its children will not be shown in the menu as long as it is not necessary for the sake of navigation.
The theme generates the menu based on the following rules:
- all parent entries of the active page including their siblings are shown regardless of any settings
- immediate children entries of the active page are shown regardless of any settings
- if not overridden, all other first level entries behave like they would have been given `alwaysopen=false`
- if not overridden, all other entries of levels besides the first behave like they would have been given `alwaysopen=true`
- all visible entries show their immediate children entries if `alwaysopen=true`; this proceeds recursively
- all remaining entries are not shown
You can see this feature in action on the example page for [children shortcode](shortcodes/children) and its children pages.
## Disable Section Pages
You may want to structure your pages in a hierachical way but don't want to generate pages for those sections? The theme got you covered.
To stay with the initial example: Suppose you want `level-one` appear in the sidebar but don't want to generate a page for it. So the entry in the sidebar should not be clickable but should show an expander.
For this, open `content/level-one/_index.md` and add the following frontmatter
{{< multiconfig fm=true >}}
collapsibleMenu = true
[_build]
render = "never"
{{< /multiconfig >}}

View File

@@ -0,0 +1,5 @@
+++
title = "Frrrontmatter"
weight = 2
+++
{{< piratify >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,262 @@
# If an option value is said to be not set, you can achieve the same behavior
# by given it an empty string value.
###############################################################################
# Hugo
# These options usually apply to other themes aswell.
# The social media image of your page.
# Default: not set
# This is used for generating social media meta information for the opengraph
# protocol and twitter cards.
# If not set, the set value of your site's hugo.toml is used.
images = [ "images/hero.png" ]
# The title of your page.
# Default: not set
# A page without a title is treated as a hidden page.
title = "Example Page"
# The description of your page.
# Default: not set
# This is used for generating HTML meta tags, social media meta information
# for the opengraph protocol and twitter cards.
# If not set, the set value of your site's hugo.toml is used for the html
# meta tag, social media meta information for the opengraph protocol and
# twitter cards.
description = ""
###############################################################################
# Relearn Theme
# These options are specific to the Relearn theme.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Topbar
# These options modify the topbar appearance.
# Hide the table of contents button.
# Default: false
# If the TOC button is hidden, also the keyboard shortcut is disabled.
# If not set, the set value of your site's hugo.toml is used.
disableToc = false
# Hide the breadcrumbs.
# Default: false
# If the breadcrumbs are hidden, the title of the displayed page will still be
# shown in the topbar.
disableBreadcrumb = false
# Hide Next and Previous navigation buttons.
# Default: false
# If the navigation buttons are hidden, also the keyboard shortcuts are
# disabled.
disableNextPrev = false
# The URL prefix to edit a page.
# Default: not set
# If set, an edit button will be shown in the topbar. If the button is hidden,
# also the keyboard shortcuts are disabled. The value can contain the macro
# `${FilePath}` which will be replaced by the file path of your displayed page.
# If not set, the set value of your site's hugo.toml is used. If the global
# parameter is given but you want to hide the button for the displayed page,
# you can set the value to an empty string. If instead of hiding you want to have
# an disabled button, you can set the value to a string containing just spaces.
# This is useful if you want to give the opportunity for people to create merge
# request for your content.
editURL = ""
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Menu
# These options modify the menu apperance.
# Prefix for the title in main menu.
# Default: not set
# The title of the page in the menu will be prefixed by this HTML content.
menuPre = ""
# Suffix for the title in main menu.
# Default: not set
# The title of the page in the menu will be suffixed by this HTML content.
menuPost = ""
# The order of main menu submenus.
# Default: "weight"
# Submenus can be ordered by "weight", "title", "linktitle", "modifieddate",
# "expirydate", "publishdate", "date", "length" or "default" (adhering to
# Hugo's default sort order).
# If not set, the value of the parent menu entry is used.
ordersectionsby = "weight"
# The initial expand state of submenus.
# Default: not set
# This controls whether submenus will be expanded (true), or collapsed (false)
# in the menu. If not set, the first menu level is set to false, all others
# levels are set to true. If not set, the value of the parent menu entry is used.
# If the displayed page has submenus, they will always been displayed expanded
# regardless of this option.
alwaysopen = ""
# Shows expander for submenus.
# Default: false
# If set to true, a submenu in the sidebar will be displayed in a collapsible
# tree view and a clickable expander is set in front of the entry.
# If not set, the set value of your site's hugo.toml is used.
collapsibleMenu = true
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Hidden pages
# These options configure how hidden pages are treated.
# A page flagged as hidden, is only removed from the main menu if you are
# currently not on this page or the hidden page is not part of current page's
# ancestors. For all other functionality in Hugo a hidden page behaves like any
# other page if not otherwise configured.
# Hide a page's menu entry.
# Default: false
# If this value is true, the page is hidden from the menu.
hidden = false
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Content
# These options modify how your content is displayed.
# Prefix for the title in the content area.
# Default: not set
# The title of the page heading will be prefixed by this HTML content.
headingPre = ""
# Suffix for the title in the content area.
# Default: not set
# The title of the page heading will be suffixed by this HTML content.
headingPost = ""
# Display name of the page's last editor.
# Default: not set
# If set, it will be displayed in the default footer.
LastModifierDisplayName = ""
# Email address of the page's last editor.
# Default: not set
# If set together with LastModifierDisplayName, it will be displayed in the
# default footer.
LastModifierEmail = ""
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Highlight
# These options configure how code is displayed.
# Wrap for code blocks.
# Default: true
# By default lines of code blocks wrap around if the line is too long to be
# displayed on screen. If you dislike this behavior, you can reconfigure it
# here.
# Note that lines always wrap in print mode regardless of this option.
# If not set, the set value of your site's hugo.toml is used or given as a
# parameter to individual code blocks.
highlightWrap = true
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Images
# These options configure how images are displayed.
# Image effects.
# See the documentation for how you can even add your own arbitrary effects to
# the list.
# All effect values default to the values of your site's hugo.toml and can be
# overridden thru URL parameter given to the image. See the documentation for
# details.
# Default: false
imageEffects.border = true
# Default: true
imageEffects.lazy = true
# Default: true
imageEffects.lightbox = true
# Default: false
imageEffects.shadow = false
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# MathJax
# These options configure how math formulae are displayed.
# Initialization options for MathJax.
# Default: not set
# A JSON value. See the MathJaxdocumentation for possible parameter.
# If not set, the set value of your site's hugo.toml is used.
mathJaxInitialize = "{}"
# Only load MathJax if needed.
# Default: true
# If a Math shortcode is found, the option will be ignored and
# MathJax will be loaded regardlessly. The option is still useful in case you
# are using scripting to set up your graph. In this case no shortcode or
# codefence is involved and the library is not loaded by default. In this case
# you can set `disableMathJax=false` in your frontmatter to force the library to
# be loaded.
# If not set, the set value of your site's hugo.toml is used.
disableMathJax = true
# URL for external MathJax library.
# Default: not set
# Specifies the remote location of the MathJax library. By default the shipped
# version will be used.
# If not set, the set value of your site's hugo.toml is used.
customMathJaxURL = "" # "https://unpkg.com/mathjax/es5/tex-mml-chtml.js"
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Mermaid
# These options configure how Mermaid graphs are displayed.
# Make graphs panable and zoomable
# Default: false
# For huge graphs it can be helpful to make them zoomable. Zoomable graphs come
# with a reset button for the zoom.
# If not set, the set value of your site's hugo.toml is used or given as a
# parameter to individual graphs.
mermaidZoom = true
# Initialization options for Mermaid.
# Default: not set
# A JSON value. See the Mermaid documentation for possible parameter.
# If not set, the set value of your site's hugo.toml is used.
mermaidInitialize = "{ \"securityLevel\": \"loose\" }"
# Only load Mermaid if needed.
# Default: true
# If a Mermaid shortcode or codefence is found, the option will be ignored and
# Mermaid will be loaded regardlessly. The option is still useful in case you
# are using scripting to set up your graph. In this case no shortcode or
# codefence is involved and the library is not loaded by default. In this case
# you can set `disableMermaid=false` in your frontmatter to force the library to
# be loaded.
# If not set, the set value of your site's hugo.toml is used.
disableMermaid = true
# URL for external Mermaid library.
# Default: not set
# Specifies the remote location of the Mermaid library. By default the shipped
# version will be used.
# If not set, the set value of your site's hugo.toml is used.
customMermaidURL = "" # "https://unpkg.com/mermaid/dist/mermaid.min.js"
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# OpenApi
# These options configure how OpenAPI specifications are displayed.
# Only load OpenAPI if needed.
# Default: true
# If a OpenAPI shortcode is found, the option will be ignored and
# OpenAPI will be loaded regardlessly. The option is still useful in case you
# are using scripting to set up your graph. In this case no shortcode or
# codefence is involved and the library is not loaded by default. In this case
# you can set `disableOpenapi=false` in your frontmatter to force the library to
# be loaded.
# If not set, the set value of your site's hugo.toml is used.
disableOpenapi = true
# URL for external OpenAPI library.
# Default: not set
# Specifies the remote location of the OpenAPI library. By default the shipped
# version will be used.
# If not set, the set value of your site's hugo.toml is used.
customOpenapiURL = "" # "https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js"

View File

@@ -0,0 +1,101 @@
+++
title = "Multilingual and i18n"
weight = 7
+++
The Relearn theme is fully compatible with Hugo multilingual mode.
- Available languages: Arabic, Simplified Chinese, Traditional Chinese, Czech, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Swahili, Turkish, Vietnamese. Feel free to contribute!
- Full support for languages written right to left
- Automatic menu generation from multilingual content
- In-browser language switching
![I18n menu](i18n-menu.gif?width=18.75rem)
## Basic configuration
After learning [how Hugo handle multilingual websites](https://gohugo.io/content-management/multilingual), define your languages in your `hugo.toml` file.
For example with current English and Piratized English website.
{{% notice note %}}
Make sure your default language is defined as the first one in the `[languages]` array, as the theme needs to make assumptions on it
{{% /notice %}}
{{< multiconfig file=hugo >}}
defaultContentLanguage = "en"
[languages]
[languages.en]
title = "Hugo Relearn Theme"
weight = 1
languageName = "English"
[languages.pir]
title = "Cap'n Hugo Relearrrn Theme"
weight = 2
languageName = "Arrr! Pirrrates"
{{< /multiconfig >}}
Then, for each new page, append the _id_ of the language to the file.
- Single file `my-page.md` is split in two files:
- in English: `my-page.md`
- in Piratized English: `my-page.pir.md`
- Single file `_index.md` is split in two files:
- in English: `_index.md`
- in Piratized English: `_index.pir.md`
{{% notice info %}}
Be aware that only translated pages are displayed in menu. It's not replaced with default language content.
{{% /notice %}}
{{% notice tip %}}
Use [slug](https://gohugo.io/content-management/multilingual/#translate-your-content) frontmatter parameter to translate urls too.
{{% /notice %}}
## Search
In case each page's content is written in one single language only, the above configuration will already configure the site's search functionality correctly.
{{% notice warning %}}
Although the theme supports a wide variety of supported languages, the site's search via the [Lunr](https://lunrjs.com) search library does not.
You'll see error reports in your browsers console log for each unsupported language. Currently unsupported are:
- Czech
- Indonesian
- Polish
- Swahili
{{% /notice %}}
### Search with mixed language support
In case your page's content contains text in multiple languages (e.g. you are writing a Russian documentation for your english API), you can add those languages to your `hugo.toml` to broaden search.
{{< multiconfig file=hugo >}}
[params]
additionalContentLanguage = [ "en" ]
{{< /multiconfig >}}
As this is an array, you can add multiple additional languages.
{{% notice note %}}
Keep in mind that the language code required here, is the base language code. E.g. if you have additional content in `zh-CN`, you have to add just `zh` to this parameter.
{{% /notice %}}
## Overwrite translation strings
Translations strings are used for common default values used in the theme (_Edit_ button, _Search placeholder_ and so on). Translations are available in English and Piratized English but you may use another language or want to override default values.
To override these values, create a new file in your local i18n folder `i18n/<idlanguage>.toml` and inspire yourself from the theme `themes/hugo-theme-relearn/i18n/en.toml`
## Disable language switching
Switching the language in the browser is a great feature, but for some reasons you may want to disable it.
Just set `disableLanguageSwitchingButton=true` in your `hugo.toml`
{{< multiconfig file=hugo >}}
[params]
disableLanguageSwitchingButton = true
{{< /multiconfig >}}

View File

@@ -0,0 +1,5 @@
+++
title = "Multilingual an' i18n"
weight = 7
+++
{{< piratify >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@@ -0,0 +1,68 @@
+++
title = "Image Effects"
weight = 5
+++
The theme supports non-standard [image effects](cont/markdown#image-effects).
| Name | Description |
| -------- | ----------------------------------------------------------------- |
| border | Draws a light thin border around the image |
| lazy | Lets the image be lazy loaded |
| lightbox | The image will be clickable to show it enlarged |
| shadow | Draws a shadow around the image to make it appear hovered/glowing |
As [described](cont/markdown#image-effects), you can add this to the URL query parameter, but this may be cumbersome to be done consistently for the whole page.
Instead, you can configure the defaults in your `hugo.toml` aswell as overriding these default in the pages frontmatter.
Explicitly set URL query parameter will override the defaults in effect for a page.
Without any settings in your `hugo.toml` this defaults to
{{< multiconfig file=hugo >}}
[params]
[params.imageEffects]
border = false
lazy = true
lightbox = true
shadow = false
{{< /multiconfig >}}
This can be overridden in a pages frontmatter by eg.
{{< multiconfig fm=true >}}
[imageEffects]
border = true
{{< /multiconfig >}}
Or by explicitly override settings by URL query parameter
````md {title="URL"}
![Minion](https://octodex.github.com/images/minion.png?lightbox=false&bg-white=true)
````
The settings applied to the above image would be
{{< multiconfig >}}
border = true
lazy = true
lightbox = false
shadow = false
bg-white = true
{{< /multiconfig >}}
This ends up in the following HTML where the parameter are converted to CSS classes.
````html {title="HTML"}
<img src="https://octodex.github.com/images/minion.png?lightbox=false&bg-white=true" loading="lazy" alt="Minion" class="bg-white border lazy nolightbox noshadow">
````
## Extending
As you can see in the above example, the `bg-white` parameter is not initially supported in the themes default settings. Nevertheless you are free to define arbitrary parameter by just adding them to the URL query parameter or set them in your `hugo.toml` or pages frontmatter.
{{% notice note %}}
If no extended parameter like `bg-white` in the example is set on the URL, a `class="nobg-white"` in the HTML will only be generated if a default value was set in the `hugo.toml` or pages frontmatter.
{{% /notice %}}

View File

@@ -0,0 +1,5 @@
+++
title = "Image Effects"
weight = 5
+++
{{< piratify >}}

View File

@@ -0,0 +1,690 @@
+++
tags = ["Content"]
title = "Markdown syntax"
weight = 4
+++
Let's face it: Writing content for the web is tiresome. WYSIWYG editors help alleviate this task, but they generally result in horrible code, or worse yet, ugly web pages.
**Markdown** is a better way to write **HTML**, without all the complexities and ugliness that usually accompanies it.
Some of the key benefits are:
1. Markdown is simple to learn, with minimal extra characters so it's also quicker to write content.
2. Less chance of errors when writing in Markdown.
3. Produces valid HTML output.
4. Keeps the content and the visual display separate, so you cannot mess up the look of your site.
5. Write in any text editor or Markdown application you like.
6. Markdown is a joy to use!
John Gruber, the author of Markdown, puts it like this:
> The overriding design goal for Markdowns formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like its been marked up with tags or formatting instructions. While Markdowns syntax has been influenced by several existing text-to-HTML filters, the single biggest source of inspiration for Markdowns syntax is the format of plain text email.
> <cite>John Gruber</cite>
Without further delay, let us go over the main elements of Markdown and what the resulting HTML looks like:
{{% notice tip %}}
{{% icon bookmark %}} Bookmark this page and the [official Commonmark reference](https://commonmark.org/help/) for easy future reference!
{{% /notice %}}
## Paragraphs
In Markdown your content usually spans the whole available document width. This is called a block. Blocks are always separated by whitespace to their adjacent blocks in the resulting document.
Any text not starting with a special sign is written as normal, plain text paragraph block and must be separated to its adjacent blocks by empty lines.
````md
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.
````
{{% notice style="secondary" icon="eye" title="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.
{{% /notice %}}
## Headings
A good idea is to structure your content using headings and subheadings. HTML-headings from `h1` through `h6` are constructed with a `#` for each level.
In Hugo you usually don't use `h1` as this is generated by your theme and you should only have one such element in a document.
````md
# h1 Heading
## h2 Heading
### h3 Heading
#### h4 Heading
##### h5 Heading
###### h6 Heading
````
{{% notice style="secondary" icon="eye" title="Result" %}}
# h1 Heading
## h2 Heading
### h3 Heading
#### h4 Heading
##### h5 Heading
###### h6 Heading
{{% /notice %}}
## Horizontal Rules
To further structure your content you can add horizontal rules. They create a "thematic break" between paragraph blocks. In Markdown, you can create it with three consecutive dashes `---`.
````md
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.
````
{{% notice style="secondary" icon="eye" title="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.
{{% /notice %}}
## Text Markers
### Bold
You can show importance of a snippet of text with a heavier font-weight by enclosing it with two asterisks `**`.
````md
I am rendered with **bold text**
````
{{% notice style="secondary" icon="eye" title="Result" %}}
I am rendered with **bold text**
{{% /notice %}}
### Italics
You can emphasize a snippet of text with italics by enclosing it with underscores `_`.
````md
I am rendered with _italicized text_
````
{{% notice style="secondary" icon="eye" title="Result" %}}
I am rendered with _italicized text_
{{% /notice %}}
### Strikethrough
In GFM (GitHub Flavored Markdown) you can do strikethroughs by enclosing text with two tildes `~~`.
````md
~~Strike through this text~~
````
{{% notice style="secondary" icon="eye" title="Result" %}}
~~Strike through this text~~
{{% /notice %}}
## Text substitution
This Markdown dialect supports an extension to combine multiple punctuation characters to single typographic entities. This will only be applied to text outside of code blocks or inline code.
````md
Double quotes `"` and single quotes `'` of enclosed text are replaced by **"double curly quotes"** and **'single curly quotes'**.
Double dashes `--` and triple dashes `---` are replaced by en-dash **--** and em-dash **---** entities.
Double arrows pointing left `<<` or right `>>` are replaced by arrow **<<** and **>>** entities.
Three consecutive dots `...` are replaced by an ellipsis **...** entity.
````
{{% notice style="secondary" icon="eye" title="Result" %}}
Double quotes `"` and single quotes `'` of enclosed text are replaced by **"double curly quotes"** and **'single curly quotes'**.
Double dashes `--` and triple dashes `---` are replaced by en-dash **--** and em-dash **---** entities.
Double arrows pointing left `<<` or right `>>` are replaced by arrow **<<** and **>>** entities.
Three consecutive dots `...` are replaced by an ellipsis **...** entity.
{{% /notice %}}
## Lists
### Unordered
You can write a list of items in which the order of the items does not explicitly matter.
It is possible to nest lists by indenting an item for the next sublevel.
You may use any of `-`, `*` or `+` to denote bullets for each list item but should not switch between those symbols inside one whole list.
````md
- Lorem ipsum dolor sit amet
- Consectetur adipiscing 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
````
{{% notice style="secondary" icon="eye" title="Result" %}}
- Lorem ipsum dolor sit amet
- Consectetur adipiscing 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
{{% /notice %}}
### Ordered
You can create a list of items in which the order of items does explicitly matter.
It is possible to nest lists by indenting an item for the next sublevel.
Markdown will automatically number each of your items consecutively. This means, the order number you are providing is irrelevant.
````md
1. Lorem ipsum dolor sit amet
3. Consectetur adipiscing elit
1. Integer molestie lorem at massa
7. Facilisis in pretium nisl aliquet
99. Nulla volutpat aliquam velit
1. Faucibus porta lacus fringilla vel
1. Aenean sit amet erat nunc
17. Eget porttitor lorem
````
{{% notice style="secondary" icon="eye" title="Result" %}}
1. Lorem ipsum dolor sit amet
1. Consectetur adipiscing elit
1. Integer molestie lorem at massa
7. Facilisis in pretium nisl aliquet
99. Nulla volutpat aliquam velit
1. Faucibus porta lacus fringilla vel
1. Aenean sit amet erat nunc
17. Eget porttitor lorem
{{% /notice %}}
### Tasks
In GFM (GitHub Flavored Markdown) you can add task lists resulting in checked or unchecked non-clickable items
````md
- [x] Basic Test
- [ ] More Tests
- [x] View
- [x] Hear
- [ ] Smell
````
{{% notice style="secondary" icon="eye" title="Result" %}}
- [x] Basic Test
- [ ] More Tests
- [x] View
- [x] Hear
- [ ] Smell
{{% /notice %}}
### Definitions
This Markdown dialect supports an extension to add definition lists. Definition lists are made of terms and definitions of these terms, much like in a dictionary.
A definition list in Markdown Extra is made of a single-line term followed by a colon and the definition for that term. You can also associate more than one term to a definition.
If you add empty lines around the definition terms, additional vertical space will be generated. Also multiple paragraphs are possible
````md
Apple
: Pomaceous fruit of plants of the genus Malus in the family Rosaceae.
: An American computer company.
Orange
: The fruit of an evergreen tree of the genus Citrus.
You can make juice out of it.
: A telecommunication company.
You can't make juice out of it.
````
{{% notice style="secondary" icon="eye" title="Result" %}}
Apple
: Pomaceous fruit of plants of the genus Malus in the family Rosaceae.
: An American computer company.
Orange
: The fruit of an evergreen tree of the genus Citrus.
You can make juice out of it.
: A telecommunication company.
You can't make juice out of it.
{{% /notice %}}
## Code
### Inline Code
Inline snippets of code can be wrapped with backticks `` ` ``.
````md
In this example, `<div></div>` is marked as code.
````
{{% notice style="secondary" icon="eye" title="Result" %}}
In this example, `<div></div>` is marked as code.
{{% /notice %}}
### Indented Code Block
A simple code block can be generated by indenting several lines of code by at least two spaces.
````md
Be impressed by my advanced code:
// Some comments
line 1 of code
line 2 of code
line 3 of code
````
{{% notice style="secondary" icon="eye" title="Result" %}}
Be impressed by my advanced code:
// Some comments
line 1 of code
line 2 of code
line 3 of code
{{% /notice %}}
### Fenced Code Block
If you want to gain more control of your code block you can enclose your code by at least three backticks ```` ``` ```` a so called fence.
In GFM (GitHub Flavored Markdown) you can also add a language specifier directly after the opening fence, ` ```js `, and syntax highlighting will automatically be applied according to the selected language in the rendered HTML.
See [Code Highlighting](shortcodes/highlight) for additional documentation.
````plaintext
```js
grunt.initConfig({
assemble: {
options: {
assets: 'docs/assets',
data: 'src/data/*.{json,yml}',
helpers: 'src/custom-helpers.js',
partials: ['src/partials/**/*.{hbs,md}']
},
pages: {
options: {
layout: 'default.hbs'
},
files: {
'./': ['src/templates/pages/index.hbs']
}
}
}
};
```
````
{{% notice style="secondary" icon="eye" title="Result" %}}
```js
grunt.initConfig({
assemble: {
options: {
assets: 'docs/assets',
data: 'src/data/*.{json,yml}',
helpers: 'src/custom-helpers.js',
partials: ['src/partials/**/*.{hbs,md}']
},
pages: {
options: {
layout: 'default.hbs'
},
files: {
'./': ['src/templates/pages/index.hbs']
}
}
}
};
```
{{% /notice %}}
## Tables
In GFM (GitHub Flavored Markdown) you can create tables by adding pipes as dividers between each cell, and by adding a line of dashes (also separated by bars) beneath the header. Note that the pipes do not need to be vertically aligned.
````md
| Option | Description |
|--------|-------------|
| data | path to data files to supply the data that will be passed into templates. |
| engine | engine to be used for processing templates. Handlebars is the default. |
| ext | extension to be used for dest files. |
````
{{% notice style="secondary" icon="eye" title="Result" %}}
| Option | Description |
|--------|-------------|
| data | path to data files to supply the data that will be passed into templates. |
| engine | engine to be used for processing templates. Handlebars is the default. |
| ext | extension to be used for dest files. |
{{% /notice %}}
### Aligned Columns
Adding a colon on the left and/or right side of the dashes below any heading will align the text for that column accordingly.
````md
| Option | Number | Description |
|-------:|:------:|:------------|
| data | 1 | path to data files to supply the data that will be passed into templates. |
| engine | 2 | engine to be used for processing templates. Handlebars is the default. |
| ext | 3 | extension to be used for dest files. |
````
{{% notice style="secondary" icon="eye" title="Result" %}}
| Option | Number | Description |
|-------:|:------:|:------------|
| data | 1 | path to data files to supply the data that will be passed into templates. |
| engine | 2 | engine to be used for processing templates. Handlebars is the default. |
| ext | 3 | extension to be used for dest files. |
{{% /notice %}}
## Blockquotes
For quoting blocks of content from another source within your document add `>` before any text you want to quote.
Blockquotes can also be nested.
````md
> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi.
>
> > Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis in 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.
````
{{% notice style="secondary" icon="eye" title="Result" %}}
> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi.
>
> > Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis in 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.
{{% /notice %}}
## Links
### Autolink
In GFM (GitHub Flavored Markdown) absolute URLs will automatically be converted into a link.
````md
This is a link to https://example.com.
````
{{% notice style="secondary" icon="eye" title="Result" %}}
This is a link to https://example.com.
{{% /notice %}}
### Basic Link
You can explicitly define links in case you want to use non-absolute URLs or want to give different text.
````md
[Assemble](http://assemble.io)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
[Assemble](http://assemble.io)
{{% /notice %}}
### Link with Tooltip
For even further information, you can add an additional text, displayed in a tooltip on hovering over the link.
````md
[Upstage](https://github.com/upstage/ "Visit Upstage!")
````
{{% notice style="secondary" icon="eye" title="Result" %}}
[Upstage](https://github.com/upstage/ "Visit Upstage!")
{{% /notice %}}
### Link References
Links can be simplyfied for recurring reuse by using a reference ID to later define the URL location. This simplyfies writing if you want to use a link more than once in a document.
````md
[Example][somelinkID]
[somelinkID]: https://example.com "Go to example domain"
````
{{% notice style="secondary" icon="eye" title="Result" %}}
[Example][somelinkID]
[somelinkID]: https://example.com "Go to example domain"
{{% /notice %}}
### Footnotes
Footnotes work mostly like reference-style links. A footnote is made of two things, a marker in the text that will become a superscript number and a footnote definition that will be placed in a list of footnotes.
Usually the list of footnotes will be shown at the end of your document. If we use a footnote in a notice box it will instead be listed at the end of its box.
Footnotes can contain block elements, which means that you can put multiple paragraphs, lists, blockquotes and so on in a footnote. It works the same as for list items, just indent the following paragraphs by four spaces in the footnote definition.
````md
That's some text with a footnote[^1]
[^1]: And that's the footnote.
That's some more text with a footnote.[^someid]
[^someid]:
Anything of interest goes here.
Blue light glows blue.
````
{{% notice style="secondary" icon="eye" title="Result" %}}
That's some text with a footnote[^1]
[^1]: And that's the footnote.
That's some more text with a footnote.[^someid]
[^someid]:
Anything of interest goes here.
Blue light glows blue.
{{% /notice %}}
## Images
### Basic Images
Images have a similar syntax to links but include a preceding exclamation mark.
````md
![Spock](https://octodex.github.com/images/spocktocat.png)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Spock](https://octodex.github.com/images/spocktocat.png?width=20vw)
{{% /notice %}}
### Image with Tooltip
Like links, images can also be given a tooltip.
````md
![Picard](https://octodex.github.com/images/jean-luc-picat.jpg "Jean Luc Picard")
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Picard](https://octodex.github.com/images/jean-luc-picat.jpg?width=20vw "Jean Luc Picard")
{{% /notice %}}
### Image References
Images can also be linked by reference ID to later define the URL location. This simplyfies writing if you want to use an image more than once in a document.
````md
![La Forge][laforge]
[laforge]: https://octodex.github.com/images/trekkie.jpg "Geordi La Forge"
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![La Forge][laforge]
[laforge]: https://octodex.github.com/images/trekkie.jpg?width=20vw "Geordi La Forge"
{{% /notice %}}
### Image Effects
This theme allows additional non-standard formatting by setting query parameter at the end of the image URL. The default [behavior is configurable](cont/imageeffects) thru your `hugo.toml` or frontmatter parameter.
#### Resizing
Add query parameter `width` and/or `height` to the link image to resize the image. Values are CSS values (default is `auto`).
````md
![Minion](https://octodex.github.com/images/minion.png?width=20vw)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Minion](https://octodex.github.com/images/minion.png?width=20vw)
{{% /notice %}}
````md
![Minion](https://octodex.github.com/images/minion.png?height=50px)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Minion](https://octodex.github.com/images/minion.png?height=50px)
{{% /notice %}}
````md
![Minion](https://octodex.github.com/images/minion.png?height=50px&width=40vw)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Minion](https://octodex.github.com/images/minion.png?height=50px&width=40vw)
{{% /notice %}}
#### CSS Classes
Add a query parameter `classes` to the link image to add CSS classes. Add some of the predefined values or even define your own in your CSS.
##### Shadow
````md
![Spidertocat](https://octodex.github.com/images/spidertocat.png?classes=shadow)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Spidertocat](https://octodex.github.com/images/spidertocat.png?width=20vw&classes=shadow,noborder)
{{% /notice %}}
##### Border
````md
![DrOctocat](https://octodex.github.com/images/droctocat.png?classes=border)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![DrOctocat](https://octodex.github.com/images/droctocat.png?width=20vw&classes=border,noshadow)
{{% /notice %}}
##### Left
````md
![Supertocat](https://octodex.github.com/images/okal-eltocat.jpg?classes=left)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Supertocat](https://octodex.github.com/images/okal-eltocat.jpg?width=20vw&classes=left)
{{% /notice %}}
##### Right
````md
![Riddlocat](https://octodex.github.com/images/riddlocat.jpg?classes=right)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Riddlocat](https://octodex.github.com/images/riddlocat.jpg?width=20vw&classes=right)
{{% /notice %}}
##### Inline
````md
![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)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Spidertocat](https://octodex.github.com/images/spidertocat.png?width=10vw&classes=inline)
![DrOctocat](https://octodex.github.com/images/droctocat.png?width=10vw&classes=inline)
![Supertocat](https://octodex.github.com/images/okal-eltocat.jpg?width=10vw&classes=inline)
![Riddlocat](https://octodex.github.com/images/riddlocat.jpg?width=10vw&classes=inline)
{{% /notice %}}
##### Combination
````md
![X-tocat](https://octodex.github.com/images/xtocat.jpg?classes=shadow,border,left)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![X-tocat](https://octodex.github.com/images/xtocat.jpg?width=20vw&classes=shadow,border,left)
{{% /notice %}}
#### Lightbox
Add the query parameter `lightbox=false` to the image link to disable the lightbox.
````md
![Homercat](https://octodex.github.com/images/homercat.png?lightbox=false)
````
{{% notice style="secondary" icon="eye" title="Result" %}}
![Homercat](https://octodex.github.com/images/homercat.png?width=20vw&lightbox=false)
{{% /notice %}}
{{% notice note %}}
If you want to wrap an image in a link and `lightbox=true` is your default setting, you have to explicitly disable the lightbox to avoid it to hijacking your link like:
````md
[![Homercat](https://octodex.github.com/images/homercat.png?lightbox=false)](https://octodex.github.com/#homercat)
````
[![Homercat](https://octodex.github.com/images/homercat.png?width=20vw&lightbox=false)](https://octodex.github.com/#homercat)
{{% /notice %}}

View File

@@ -0,0 +1,6 @@
+++
tags = ["Content"]
title = "Marrrkdown rules"
weight = 4
+++
{{< piratify >}}

View File

@@ -0,0 +1,161 @@
+++
title = "Menu extra shortcuts"
weight = 6
+++
You can define additional menu entries or shortcuts in the navigation menu without any link to content.
## Basic configuration
Edit the website configuration `hugo.toml` and add a `[[menu.shortcuts]]` entry for each link your want to add.
Example from the current website:
{{< multiconfig file=hugo >}}
[[menu.shortcuts]]
name = "<i class='fa-fw fab fa-github'></i> GitHub repo"
identifier = "ds"
url = "https://github.com/McShelby/hugo-theme-relearn"
weight = 10
[[menu.shortcuts]]
name = "<i class='fa-fw fas fa-camera'></i> Showcases"
url = "showcase/"
weight = 11
[[menu.shortcuts]]
name = "<i class='fa-fw fas fa-bookmark'></i> Hugo Documentation"
identifier = "hugodoc"
url = "https://gohugo.io/"
weight = 20
[[menu.shortcuts]]
name = "<i class='fa-fw fas fa-bullhorn'></i> Credits"
url = "more/credits/"
weight = 30
[[menu.shortcuts]]
name = "<i class='fa-fw fas fa-tags'></i> Tags"
url = "tags/"
weight = 40
{{< /multiconfig >}}
By default, shortcuts are preceded by a title. This title can be disabled by setting `disableShortcutsTitle=true`.
However, if you want to keep the title but change its value, it can be overridden by changing your local i18n translation string configuration.
For example, in your local `i18n/en.toml` file, add the following content
````toml {title="en.toml"}
[Shortcuts-Title]
other = "<Your value>"
````
Read more about [hugo menu](https://gohugo.io/extras/menus/) and [hugo i18n translation strings](https://gohugo.io/content-management/multilingual/#translation-of-strings)
## Configuration for Multilingual mode {#i18n}
When using a multilingual website, you can set different menus for each language. In the `hugo.toml` file, prefix your menu configuration by `Languages.<language-id>`.
Example from the current website:
{{< multiconfig file=hugo >}}
[languages]
[languages.en]
title = "Hugo Relearn Theme"
weight = 1
languageName = "English"
[languages.en.params]
landingPageName = "<i class='fa-fw fas fa-home'></i> Home"
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fab fa-github'></i> GitHub repo"
identifier = "ds"
url = "https://github.com/McShelby/hugo-theme-relearn"
weight = 10
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fas fa-camera'></i> Showcases"
pageRef = "showcase/"
weight = 11
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fas fa-bookmark'></i> Hugo Documentation"
identifier = "hugodoc"
url = "https://gohugo.io/"
weight = 20
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fas fa-bullhorn'></i> Credits"
pageRef = "more/credits/"
weight = 30
[[languages.en.menu.shortcuts]]
name = "<i class='fa-fw fas fa-tags'></i> Tags"
pageRef = "tags/"
weight = 40
[languages.pir]
title = "Cap'n Hugo Relearrrn Theme"
weight = 1
languageName = "Arrr! Pirrrates"
[languages.pir.params]
landingPageName = "<i class='fa-fw fas fa-home'></i> Arrr! Home"
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fab fa-github'></i> GitHub repo"
identifier = "ds"
url = "https://github.com/McShelby/hugo-theme-relearn"
weight = 10
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fas fa-camera'></i> Showcases"
pageRef = "showcase/"
weight = 11
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fas fa-bookmark'></i> Cap'n Hugo Documentat'n"
identifier = "hugodoc"
url = "https://gohugo.io/"
weight = 20
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fas fa-bullhorn'></i> Crrredits"
pageRef = "more/credits/"
weight = 30
[[languages.pir.menu.shortcuts]]
name = "<i class='fa-fw fas fa-tags'></i> Arrr! Tags"
pageRef = "tags/"
weight = 40
{{< /multiconfig >}}
Read more about [hugo menu](https://gohugo.io/extras/menus/) and [hugo multilingual menus](https://gohugo.io/content-management/multilingual/#menus)
## Shortcuts to pages inside of your project
If you have shortcuts to pages inside of your project and you don't want them to show up in page menu section, you have two choices:
1. Make the page file for the shortcut a [headless branch bundle](https://gohugo.io/content-management/page-bundles/#headless-bundle) (contained in its own subdirectory and called `_index.md`) and add the following frontmatter configuration to the file (see exampleSite's `content/showcase/_index.en.md`). This causes its content to **not** be ontained in the sitemap.
{{< multiconfig fm=true >}}
title = "Showcase"
[_build]
render = "always"
list = "never"
publishResources = true
{{< /multiconfig >}}
2. Store the page file for the shortcut below a parent headless branch bundle and add the following frontmatter to he **parent** (see exampleSite's `content/more/_index.en.md`). **Don't give this page a `title`** as this will cause it to be shown in the breadcrumbs - a thing you most likely don't want.
{{< multiconfig fm=true >}}
[_build]
render = "never"
list = "never"
publishResources = false
{{< /multiconfig >}}
In this case, the file itself can be a branch bundle, leaf bundle or simple page (see exampleSite's `content/more/credits.en.md`). This causes its content to be contained in the sitemap.
{{< multiconfig fm=true >}}
title = "Credits"
{{< /multiconfig >}}

View File

@@ -0,0 +1,5 @@
+++
title = "Menu extrrra shorrrtcuts"
weight = 6
+++
{{< piratify >}}

View File

@@ -0,0 +1,52 @@
+++
title = "Pages organization"
weight = 1
+++
In **Hugo**, pages are the core of your site. Once it is configured, pages are definitely the added value to your documentation site.
## Folders
Organize your site like [any other Hugo project](https://gohugo.io/content/organization/). Typically, you will have a _content_ folder with all your pages.
````plaintext
content
├── level-one
│ ├── level-two
│ │ ├── level-three
│ │ │ ├── level-four
│ │ │ │ ├── _index.md <-- /level-one/level-two/level-three/level-four
│ │ │ │ ├── page-4-a.md <-- /level-one/level-two/level-three/level-four/page-4-a
│ │ │ │ ├── page-4-b.md <-- /level-one/level-two/level-three/level-four/page-4-b
│ │ │ │ └── page-4-c.md <-- /level-one/level-two/level-three/level-four/page-4-c
│ │ │ ├── _index.md <-- /level-one/level-two/level-three
│ │ │ ├── page-3-a.md <-- /level-one/level-two/level-three/page-3-a
│ │ │ ├── page-3-b.md <-- /level-one/level-two/level-three/page-3-b
│ │ │ └── page-3-c.md <-- /level-one/level-two/level-three/page-3-c
│ │ ├── _index.md <-- /level-one/level-two
│ │ ├── page-2-a.md <-- /level-one/level-two/page-2-a
│ │ ├── page-2-b.md <-- /level-one/level-two/page-2-b
│ │ └── page-2-c.md <-- /level-one/level-two/page-2-c
│ ├── _index.md <-- /level-one
│ ├── page-1-a.md <-- /level-one/page-1-a
│ ├── page-1-b.md <-- /level-one/page-1-b
│ └── page-1-c.md <-- /level-one/page-1-c
├── _index.md <-- /
└── page-top.md <-- /page-top
````
{{% notice note %}}
`_index.md` is required in each folder, its your “folder home page”
{{% /notice %}}
## Create your project
The following steps are here to help you initialize your new website. If you don't know Hugo at all, we strongly suggest you to train by following [great documentation for beginners](https://gohugo.io/overview/quickstart/).
Hugo provides a `new` command to create a new website.
````shell
hugo new site <new_project>
````
The Relearn theme provides [archetypes](cont/archetypes) to help you create this kind of pages.

View File

@@ -0,0 +1,5 @@
+++
title = "planks orrrganizat'n"
weight = 1
+++
{{< piratify >}}

View File

@@ -0,0 +1,63 @@
+++
categories = ["taxonomy", "content"]
tags = "tutorial"
title = "Taxonomy"
weight = 8
+++
The Relearn theme supports Hugo's default taxonomies _tag_ and _category_ out of the box.
## Configuration
Just add tags and/or categories to any page. They can be given as a single string or an array of strings.
{{< multiconfig fm=true >}}
categories = ["taxonomy", "content"]
tags = "tutorial"
title = "Taxonomy"
{{< /multiconfig >}}
## Behavior
The tags are displayed at the top of the page in alphabetical order.
The categories are displayed at the bottom of the page in alphabetical order in the default implementation of the theme but can be customized by providing your own `content-footer.html` partial.
Each item is a link to a taxonomy page displaying all the articles with the given term.
## List all the tags
In the `hugo.toml` file you can add a shortcut to display all the tags and categories
{{< multiconfig file=hugo >}}
[[menu.shortcuts]]
name = "<i class='fa-fw fas fa-tags'></i> Tags"
url = "/tags"
[[menu.shortcuts]]
name = "<i class='fa-fw fas fa-layer-group'></i> Categories"
url = "/categories"
{{< /multiconfig >}}
## Customization
If you define [custom taxonomies](https://gohugo.io/content-management/taxonomies/#configure-taxonomies) and want to display a list of them somewhere on your page (often in the `layouts/partials/content-footer.html`) you can call a partial that does the job for you:
````go
{{ partial "term-list.html" (dict
"page" .
"taxonomy" "categories"
"icon" "layer-group"
) }}
````
### Parameter
| Name | Default | Notes |
|-----------------------|-----------------|-------------|
| **page** | _&lt;empty&gt;_ | Mandatory reference to the page. |
| **taxonomy** | _&lt;empty&gt;_ | The plural name of the taxonomy to display as used in your frontmatter. |
| **class** | _&lt;empty&gt;_ | Additional CSS classes set on the outermost generated HTML element.<br><br>If set to `tags` you will get the visuals for displaying the _tags_ taxonomy, otherwise it will be a simple list of links as for the _categories_ taxonomy. |
| **style** | `primary` | The style scheme used if **class** is `tags`.<br><br>- by severity: `info`, `note`, `tip`, `warning`<br>- by brand color: `primary`, `secondary`, `accent`<br>- by color: `blue`, `green`, `grey`, `orange`, `red`<br>- by special color: `default`, `transparent`, `code` |
| **color** | see notes | The [CSS color value](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) to be used if **class** is `tags`. If not set, the chosen color depends on the **style**. Any given value will overwrite the default.<br><br>- for severity styles: a nice matching color for the severity<br>- for all other styles: the corresponding color |
| **icon** | _&lt;empty&gt;_ | An optional [Font Awesome icon name](shortcodes/icon#finding-an-icon) set to the left of the list. |

View File

@@ -0,0 +1,7 @@
+++
categories = ["taxonomy", "content"]
tags = "tutorrrial"
title = "Taxonomy"
weight = 8
+++
{{< piratify >}}

View File

@@ -0,0 +1,10 @@
+++
archetype = "chapter"
hidden = true
title = "Development"
weight = 4
+++
This chapter contains information only needed for development and maintaining the theme.
{{%children containerstyle="div" style="h2" description="true" %}}

View File

@@ -0,0 +1,7 @@
+++
archetype = "chapter"
hidden = true
title = "Development"
weight = 4
+++
{{< piratify >}}

View File

@@ -0,0 +1,55 @@
+++
description = "What to know if you want to contribute"
title = "Contributing"
+++
## Code Quality
A new release can happen at any time from the `main` branch of the [GitHub project](https://github.com/McShelby/hugo-theme-relearn) without further accknowledgment. This makes it necessary that, every pushed set of changesets into the `main` branch **must** be self-contained and correct, resulting in a releasable version.
Stay simple for the user by focusing on the mantra "convention over configuration".
At installation the site should work reasonable without (m)any configuration.
Stay close to the Hugo way.
Don't use npm or any preprocessing, our contributors may not be front-end developers.
Document new features in the exampleSite. This also contains entries to the [What's new](basics/migration) page.
Don't break existing features if you don't have to.
Remove reported issue from the browser's console.
Check for unnecessary whitespace and correct indention of your resulting HTML.
Be compatible to IE11, at least for main functionality, this means:
- test in IE11
- check caniuse.com
- don't use JavaScript arrow functions
- don't use JavaScript template literals
- don't use other fancy JavaScript ES5/6 stuff
## Conventional Commits
Write commit messages in the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) format.
Following is an impomplete list of some of the used conventional commit types. Be creative.
| Common | Feature | Structure | Shortcodes |
|------------|------------|-----------------|-------------|
| build | a11y | favicon | attachments |
| browser | archetypes | search | badge |
| chore | alias | menu | button |
| docs | generator | history | children |
| shortcodes | i18n | scrollbar | expand |
| theme | mobile | nav | icon |
| | print | toc | include |
| | rss | clipboard | math |
| | variant | syntaxhighlight | mermaid |
| | | boxes | notice |
| | | | openapi |
| | | | piratify |
| | | | siteparam |
| | | | tabs |

View File

@@ -0,0 +1,5 @@
+++
description = "What to know if you want to contribute"
title = "Contributing"
+++
{{< piratify >}}

View File

@@ -0,0 +1,126 @@
+++
description = "What to know as a maintainer"
title = "Maintaining"
+++
## Semver
This project tries to follow the [semver policy](https://semver.org/) - although not followed 100% in the past.
Usually an entry of {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} on the [What's new](basics/migration) page causes a new major release number.
All other entries on the [What's new](basics/migration) page will increase the minor release number.
Releases resulting in a new major or minor number are called main release.
Releases containing bugixes only, are only increasing the patch release number. Those releases don't result in announcements on the [What's new](basics/migration) page.
Entries on the [What's new](basics/migration) page are checked and enforced during the `version-release` GitHub Action.
## Managing Issues
Issues are categorized and managed by assigning [labels](#labels) to it.
Once working on an issue, assign it to a fitting maintainer.
When done, close the ticket. Once an issue is closed, it needs to be assigned to next release milestone.
A once released ticket is not allowed to be reopened and rereleased in a different milestone. This would cause the changelog to be changed even for the milestone the issue was previously released in. Instead write a new ticket.
## Managing Pull Requests
If a PR is merged and closed it needs an accompanied issue assigned to. If there is no issue for a PR, the maintainer needs to create one.
You can assign multiple PRs to one issue as long as they belong together.
Usually set the same labels and milestone for the PR as for the accompanied issue.
## Labels
### Kind
An issue that results in changesets must have exactly one of the following labels. This needs to be assigned latest before release.
| Label | Description | Changelog section |
|----------------------------------------------------------|--------------------------------------------|-------------------|
| {{% badge color="#5498d8" %}}documentation{{% /badge %}} | Improvements or additions to documentation | - |
| {{% badge color="#99d856" %}}discussion{{% /badge %}} | This issue was converted to a discussion | - |
| {{% badge color="#d8d104" %}}task{{% /badge %}} | Maintenance work | Maintenance |
| {{% badge color="#d8ae04" %}}feature{{% /badge %}} | New feature or request | Features |
| {{% badge color="#d88704" %}}bug{{% /badge %}} | Something isn't working | Fixes |
### Impact
If the issue would cause a new main release due to [semver semantics](#semver) it needs one of the according labels and the matching badge on the [What's new](basics/migration) page.
| Label | Description |
|-----------------------------------------------------|---------------------------------------------------------|
| {{% badge color="#d73a4a" %}}change{{% /badge %}} | Introduces changes with existing installations |
| {{% badge color="#d73a4a" %}}breaking{{% /badge %}} | Introduces breaking changes with existing installations |
### Declination
If an issue does not result in changesets but is closed anyways, it must have exactly one of the following labels.
| Label | Description |
|-------------------------------------------------------|-------------------------------------------
| {{% badge color="#9fa2a5" %}}duplicate{{% /badge %}} | This issue or pull request already exists |
| {{% badge color="#9fa2a5" %}}invalid{{% /badge %}} | This doesn't seem right |
| {{% badge color="#9fa2a5" %}}support{{% /badge %}} | Solved by reconfiguring the authors site |
| {{% badge color="#9fa2a5" %}}unresolved{{% /badge %}} | No progress on this issue |
| {{% badge color="#9fa2a5" %}}update{{% /badge %}} | A documented change in behaviour |
| {{% badge color="#9fa2a5" %}}wontfix{{% /badge %}} | This will not be worked on |
### Halt
You can assign one further label out of the following list to signal readers that development on an open issue is currently halted for different reasons.
| Label | Description |
|----------------------------------------------------------|---------------------------------------------------------|
| {{% badge color="#998f6b" %}}blocked{{% /badge %}} | Depends on other issue to be fixed first |
| {{% badge color="#998f6b" %}}idea{{% /badge %}} | A valuable idea that's currently not worked on |
| {{% badge color="#998f6b" %}}undecided{{% /badge %}} | No decision was made yet |
| {{% badge color="#6426ff" %}}helpwanted{{% /badge %}} | Great idea, send in a PR |
| {{% badge color="#6426ff" %}}needsfeedback{{% /badge %}} | Further information is needed |
### 3rd-Party
If the issue is not caused by a programming error in the themes own code, you can label the causing program or library.
| Label | Description |
|----------------------------------------------------|-------------------------------------------------------------|
| {{% badge color="#e550a7" %}}browser{{% /badge %}} | This is a topic related to the browser but not the theme |
| {{% badge color="#e550a7" %}}device{{% /badge %}} | This is a topic related to a certain device |
| {{% badge color="#e550a7" %}}hugo{{% /badge %}} | This is a topic related to Hugo itself but not the theme |
| {{% badge color="#e550a7" %}}mermaid{{% /badge %}} | This is a topic related to Mermaid itself but not the theme |
## Making Releases
A release is based on a milestone named like the release itself - just the version number, eg: `1.2.3`. It's in the maintainers responsibility to check [semver semantics](#semver) of the milestone's name prior to release and change it if necessary.
Making releases is automated by the `version-release` GitHub Action. It requires the version number of the milestone that should be released. The release will be created from the `main` branch of the repository.
Treat released milestones as immutable. Don't rerelease an already released milestone. An already released milestone may already been consumed by your users.
During execution of the action a few things are checked. If a check fails the action fails, resulting in no new release. You can correct the errors afterwards and rerun the action.
The following checks will be enforced
- the milestone exists
- there is at least one closed issue assigned to the milestone
- all assigned issues for this milestone are closed
- if it's a main release, there must be a new `<major>.<minor>` at the beginning of the [What's new](basics/migration) page
- if it's a patch release, there must be the `<major>.<minor>` from the previous release at the beginning of the [What's new](basics/migration) page
After a successful run of the action
- the [History](https://mcshelby.github.io/hugo-theme-relearn/basics/history/index.html) page is updated, including release version, release date and text
- the [What's new](https://mcshelby.github.io/hugo-theme-relearn/basics/migration/index.html) page is updated, including release version, release date and text
- the version number for the `<meta generator>` is updated
- the updated files are committed
- the milestone is closed
- the repository is tagged with the version number (eg. `1.2.3`), the main version number (eg. `1.2.x`) and the major version number (eg. `1.x`)
- a new entry in the [GitHub release list](https://github.com/McShelby/hugo-theme-relearn/releases) with the according changelog will be created
- the [official documentation](https://mcshelby.github.io/hugo-theme-relearn/index.html) is built and deployed
- the version number for the `<meta generator>` is updated to a temporary and committed (this helps to determine if users are running directly on the main branch or are using releases)
- a new milestone for the next patch release is created (this can later be renamed to a main release if necessary)

View File

@@ -0,0 +1,5 @@
+++
description = "What to know as a maintainer"
title = "Maintaining"
+++
{{< piratify >}}

View File

@@ -0,0 +1,87 @@
+++
description = "Recipe to create various documentation screenshots"
title = "Screenshots"
+++
Sometimes screenshots need to be redone. This page explains how to create the different screenshots, tools and settings
## Common
**Creation**:
- Use English translation
- Empty search
- Remove history checkmarks but leave it on the page thats used for the screenshot
- After resize of the page into the required resolution, reload the page to have all scrollbars in default loading position
## Demo Screenshot
**Content**:
A meaningful full-screen screenshot of an interesting page.
The content should be:
- timeless: not showing any dates or often edited content
- interesting: show a bunch of interesting elements like headings, code, etc
- balanced: no cluttering with overpresent elements or coloring
- aligned: aligned outlines
**Used by**:
- Hugo Themes info: https://themes.gohugo.io/themes/hugo-theme-relearn/ _1000 x 1500 @ 1_
**Page URL**: [Screenshot Link](shortcodes/notice)
**Creation**:
- save as `images/screenshot.png`
**Remarks**:
The location is mandatory due to Hugo's theme site builder.
**Preview** `images/screenshot.png`:
![Screenshot](/images/screenshot.png?width=50%25&height=50%25)
## Hero Image
**Content**:
Show the [Demo Screenshot](#demo-screenshot) page on different devices and different themes. Composition of the different device screenshots into a template.
The content should be:
- consistent: always use the same page for all devices
- pleasing: use a delightful background
**Used by**:
- Hugo Themes gallery: https://themes.gohugo.io/tags/docs/ _900 x 600_
- Hugo Themes notes: https://themes.gohugo.io/themes/hugo-theme-relearn/ _1280 x 640_
- GitHub project site: https://github.com/McShelby/hugo-theme-relearn _1280 x 640_
- GitHub social media preview: https://github.com/McShelby/hugo-theme-relearn/settings _1280 x 640_
**Page URL**: [Hero Image Link](shortcodes/notice)
**Creation**:
- Template: http://www.pixeden.com/psd-web-elements/psd-screen-web-showcase
- Desktop: light theme _1440 x 900 @ 1_
- Tablet: light theme _778 x 1038 @ 1_
- Phone: dark theme _450 x 801 @ .666_
- From original template size resize to _2700 x 1800_ centered, scale to _900 x 600_ and save as `images/tn.png`
- From original template size resize to _3000 x 1500_ offset y: _-330_, scale to _1280 x 640_ and save as `images/hero.png`
**Remarks**:
The location of `images/tn.png` is mandatory due to Hugo's theme site builder.
**Preview** `images/hero.png`:
![Hero](/images/hero.png?width=50%25&height=50%25)
**Preview** `images/tn.png`:
![tn](/images/tn.png?width=50%25&height=50%25)

View File

@@ -0,0 +1,5 @@
+++
description = "Recipe t' create various documentat'n scrrreenshots"
title = "Scrrrenshots"
+++
{{< piratify >}}

View File

@@ -0,0 +1,8 @@
+++
[_build]
render = "never"
list = "never"
publishResources = false
+++
{{%children containerstyle="div" style="h2" description="true" %}}

View File

@@ -0,0 +1,7 @@
+++
[_build]
render = "never"
list = "never"
publishResources = false
+++
{{< piratify >}}

View File

@@ -0,0 +1,57 @@
+++
title = "Credits"
+++
## Contributors
Special thanks to [everyone who has contributed](https://github.com/McShelby/hugo-theme-relearn/graphs/contributors) to this project.
Many thanks to [Mathieu Cornic](https://github.com/matcornic) for his work on porting the [Learn theme](https://github.com/matcornic/hugo-theme-learn) to Hugo.
Many thanks to [Andy Miller](https://github.com/rhukster) for initially creating the [Learn theme](https://github.com/getgrav/grav-theme-learn2) for Grav.
## Theme Dependencies
- [autoComplete](https://github.com/Pixabay/JavaScript-autoComplete) - A lightweight and powerful vanilla JavaScript completion suggester
- [clipboard.js](https://clipboardjs.com) - A modern approach to copy text to clipboard
- [d3-zoom](https://github.com/d3/d3-zoom) - Pan and zoom SVG, HTML or Canvas using mouse or touch input - plus dependencies
- [d3-color](https://github.com/d3/d3-color) - Color spaces! RGB, HSL, Cubehelix, CIELAB, and more
- [d3-dispatch](https://github.com/d3/d3-dispatch) - Register named callbacks and call them with arguments
- [d3-ease](https://github.com/d3/d3-ease) - Easing functions for smooth animation
- [d3-interpolate](https://github.com/d3/d3-interpolate) - Interpolate numbers, colors, strings, arrays, objects, whatever
- [d3-selection](https://github.com/d3/d3-selection) - Transform the DOM by selecting elements and joining to data
- [d3-timer](https://github.com/d3/d3-timer) - An efficient queue for managing thousands of concurrent animations
- [d3-transition](https://github.com/d3/d3-transition) - Animated transitions for D3 selections
- [d3-drag](https://github.com/d3/d3-drag) - Drag and drop SVG, HTML or Canvas using mouse or touch input
- [Font Awesome](https://fontawesome.com) - The internet's icon library and toolkit
- [js-yaml](https://github.com/nodeca/js-yaml) - JavaScript YAML parser and dumper
- [Lunr](https://lunrjs.com) - Enables a great search experience without the need for external, server-side, search services
- [Lunr Languages](https://github.com/MihaiValentin/lunr-languages) - A collection of languages stemmers and stopwords for Lunr Javascript library
- [MathJax](https://mathjax.org/) - Beautiful math and chemical formulae in all browsers
- [Mermaid](https://mermaid-js.github.io/mermaid) - Generation of diagram and flowchart from text in a similar manner as markdown
- [Perfect Scrollbar](https://perfectscrollbar.com) - A minimalistic but perfect custom scrollbar plugin
- [SwaggerUI](https://github.com/swagger-api/swagger-ui) - Generate beautiful documentation from a Swagger-compliant API
- [WorkSans](https://weiweihuanghuang.github.io/Work-Sans/) - Work Sans is a 9 weight typeface family based loosely on early Grotesques
## Docs Dependencies
- [github-buttons](https://github.com/buttons/github-buttons) - Unofficial github:buttons
## Tooling Dependencies
- [GitHub](https://github.com) - Continuous deployment, testing and hosting of this project's sources and its documentation
- Various GitHub Actions
- https://github.com/actions/checkout
- https://github.com/actions/setup-node
- https://github.com/Akkjon/close-milestone
- https://github.com/andstor/file-reader-action
- https://github.com/ashley-taylor/regex-property-action
- https://github.com/Kaven-Universe/github-action-current-date-time
- https://github.com/mingjun97/file-regex-replace
- https://github.com/octokit/graphql-action
- https://github.com/peaceiris/actions-gh-pages
- https://github.com/peaceiris/actions-hugo
- https://github.com/WyriHaximus/github-action-create-milestone
- https://github.com/WyriHaximus/github-action-next-semvers
- [gren](https://github.com/github-tools/github-release-notes) - A releasenotes generator for GitHub
- [Hugo](https://gohugo.io/) - The static site generator of your choice

View File

@@ -0,0 +1,4 @@
+++
title = "Crrredits"
+++
{{< piratify >}}

View File

@@ -0,0 +1,15 @@
You can add standard markdown syntax:
- multiple paragraphs
- bullet point lists
- _emphasized_, **bold** and even **_bold emphasized_** text
- [links](https://example.com)
- etc.[^etc]
[^etc]: Et Cetera (English: /ɛtˈsɛtərə/), abbreviated to etc., etc, et cet., is a Latin expression that is used in English to mean "and other similar things", or "and so forth"
```plaintext
...and even source code
```
> the possibilities are endless (almost - including other shortcodes may or may not work) (almost - including other shortcodes may or may not work)

View File

@@ -0,0 +1,16 @@
+++
archetype = "chapter"
title = "Shortcodes"
ordersectionsby = "title"
weight = 3
+++
Hugo uses Markdown for its simple content format. However, there are a lot of things that Markdown doesnt support well. You could use pure HTML to expand possibilities.
But this happens to be a bad idea. Everyone uses Markdown because it's pure and simple to read even non-rendered. You should avoid HTML to keep it as simple as possible.
To avoid this limitations, Hugo created [shortcodes](https://gohugo.io/extras/shortcodes/). A shortcode is a simple snippet inside a page.
The Relearn theme provides multiple shortcodes on top of existing ones.
{{%children containerstyle="div" style="h2" description="true" %}}

View File

@@ -0,0 +1,7 @@
+++
archetype = "chapter"
title = "Shorrrtcodes"
ordersectionsby = "title"
weight = 3
+++
{{< piratify >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1 @@
This is a small text

Some files were not shown because too many files have changed in this diff Show More