This is an example page for the codeberg.org:astevan/hugo-xmin theme.
This Hugo theme has been forked from github.com:yihui/hugo-xmin@1744c80 to codeberg.org:astevan/hugo-xmin@1744c80.
It requires Hugo version 0.160.0:
CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@v0.160.0“Lorem ipsum” dimmed blind text is used extensively to add content to the demo and see how it would look like with full-fledged pages.
The table of contents above has been generated with {{< toc start=3 end=6 ordered=false >}}.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id est non justo malesuada accumsan. Nam non lectus nec lectus dictum dignissim. Quisque suscipit porttitor placerat. Etiam dapibus, massa at tempus pulvinar, ipsum risus pretium mi, quis dictum orci ligula non velit. Sed massa ligula, viverra a eros at, hendrerit blandit arcu. Mauris enim dui, luctus at augue sed, efficitur euismod felis. In feugiat volutpat quam, sed ultrices urna. Integer lorem nulla, sollicitudin in eros vitae, porttitor commodo mi. Suspendisse sodales nibh in fringilla tincidunt. Phasellus at est hendrerit, interdum augue in, aliquet purus. Aenean hendrerit, magna eu maximus rhoncus, est leo fermentum urna, at facilisis est lectus nec odio. Proin ac quam non turpis blandit tristique vel a tortor.
Fusce fringilla, elit sed finibus tristique, felis elit tincidunt magna, non consectetur dui lorem nec neque. Praesent dictum vitae est at congue. Nullam porta, odio non sollicitudin tempus, diam dui ultricies nunc, et ornare neque lectus ac velit. Praesent posuere justo a lectus aliquam sagittis. Maecenas et malesuada quam. Curabitur auctor quam non ex varius, ac pretium massa rhoncus. Nam vehicula urna ultrices, vehicula augue in, hendrerit lacus. Nulla non orci id est maximus euismod. Nunc nisi urna, volutpat id nibh vitae, convallis pretium mauris. Praesent et arcu sit amet mauris aliquet varius. Integer placerat pharetra ante, suscipit euismod urna lacinia sed. Etiam neque quam, tincidunt eget iaculis sed, ultricies eget nunc. Donec non urna aliquam, tempor dolor at, faucibus ipsum. Phasellus non ligula nisl. In molestie eu orci sed aliquet. Nullam nisi tortor, euismod et urna eget, sodales elementum arcu.
Aliquam sapien felis, tempus nec bibendum vitae, aliquet a arcu. Donec rutrum lobortis lectus, at suscipit odio efficitur vel. Praesent lectus neque, pretium vel suscipit ut, lacinia sit amet ante. Curabitur porta risus vel elit elementum, quis condimentum magna mattis. Sed eu mauris sagittis, pellentesque est nec, mollis mauris. Vestibulum vitae libero vel mauris hendrerit fermentum. Cras et enim massa. Nullam blandit nisi eu turpis rutrum, at tincidunt est tincidunt. Nam auctor massa a libero luctus interdum vel ornare nibh.
Aliquam at imperdiet velit, posuere mattis justo. Fusce lacinia quam id quam sollicitudin, sed imperdiet diam semper. Phasellus sollicitudin, dui a suscipit dapibus, sapien nisi lacinia augue, quis accumsan justo diam ac leo. Nullam at iaculis lectus. Sed aliquam mauris et sapien eleifend, eu venenatis dolor vulputate. Suspendisse potenti. Praesent ullamcorper quam leo, et luctus nisi pellentesque at. Aenean in justo dignissim, tempor ligula vel, consectetur risus. Fusce et dolor id augue maximus viverra eu non tellus. Nam eleifend laoreet ornare. Nullam dictum ex non lorem cursus, et tristique erat vehicula. Quisque euismod sagittis nisl non imperdiet. Pellentesque hendrerit, est id viverra molestie, urna enim porttitor metus, eget porta leo augue ultricies augue. Etiam congue, nunc quis consequat lacinia, orci tortor interdum augue, nec ultricies nulla tortor sollicitudin est. Mauris vel elementum tortor, in tristique nisl. Nam varius porttitor arcu non bibendum.
Phasellus mattis tincidunt mi at condimentum. Curabitur magna nibh, tincidunt vel diam sit amet, hendrerit porttitor tortor. Morbi pretium porttitor massa, et bibendum justo dignissim ut. Pellentesque vel neque justo. Sed lacinia, lacus et placerat tristique, libero massa commodo tortor, vel mollis orci ligula non lorem. Donec sagittis elementum lorem eu consectetur. Donec mollis turpis vel accumsan tristique. Sed pulvinar feugiat arcu ac ornare. Nunc dictum maximus elementum. Nunc pretium blandit dolor, porta dictum purus facilisis ut. Praesent sed rhoncus sapien. Mauris sodales lobortis risus in suscipit. Etiam scelerisque consequat ultrices. Donec elementum elit nunc, ut consequat tortor condimentum sollicitudin. Morbi posuere eros eu mi semper, sit amet suscipit ligula pretium.
Apart from “list” pages such as the current one, three notable kinds of pages are supported by codeberg.org:astevan/hugo-xmin
./404-not-found./a_post_with_an_article_meta./a_page_without_an_article_meta
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id est non justo malesuada accumsan. Nam non lectus nec lectus dictum dignissim. Quisque suscipit porttitor placerat. Etiam dapibus, massa at tempus pulvinar, ipsum risus pretium mi, quis dictum orci ligula non velit. Sed massa ligula, viverra a eros at, hendrerit blandit arcu. Mauris enim dui, luctus at augue sed, efficitur euismod felis. In feugiat volutpat quam, sed ultrices urna. Integer lorem nulla, sollicitudin in eros vitae, porttitor commodo mi. Suspendisse sodales nibh in fringilla tincidunt. Phasellus at est hendrerit, interdum augue in, aliquet purus. Aenean hendrerit, magna eu maximus rhoncus, est leo fermentum urna, at facilisis est lectus nec odio. Proin ac quam non turpis blandit tristique vel a tortor.
Fusce fringilla, elit sed finibus tristique, felis elit tincidunt magna, non consectetur dui lorem nec neque. Praesent dictum vitae est at congue. Nullam porta, odio non sollicitudin tempus, diam dui ultricies nunc, et ornare neque lectus ac velit. Praesent posuere justo a lectus aliquam sagittis. Maecenas et malesuada quam. Curabitur auctor quam non ex varius, ac pretium massa rhoncus. Nam vehicula urna ultrices, vehicula augue in, hendrerit lacus. Nulla non orci id est maximus euismod. Nunc nisi urna, volutpat id nibh vitae, convallis pretium mauris. Praesent et arcu sit amet mauris aliquet varius. Integer placerat pharetra ante, suscipit euismod urna lacinia sed. Etiam neque quam, tincidunt eget iaculis sed, ultricies eget nunc. Donec non urna aliquam, tempor dolor at, faucibus ipsum. Phasellus non ligula nisl. In molestie eu orci sed aliquet. Nullam nisi tortor, euismod et urna eget, sodales elementum arcu.
Aliquam sapien felis, tempus nec bibendum vitae, aliquet a arcu. Donec rutrum lobortis lectus, at suscipit odio efficitur vel. Praesent lectus neque, pretium vel suscipit ut, lacinia sit amet ante. Curabitur porta risus vel elit elementum, quis condimentum magna mattis. Sed eu mauris sagittis, pellentesque est nec, mollis mauris. Vestibulum vitae libero vel mauris hendrerit fermentum. Cras et enim massa. Nullam blandit nisi eu turpis rutrum, at tincidunt est tincidunt. Nam auctor massa a libero luctus interdum vel ornare nibh.
Aliquam at imperdiet velit, posuere mattis justo. Fusce lacinia quam id quam sollicitudin, sed imperdiet diam semper. Phasellus sollicitudin, dui a suscipit dapibus, sapien nisi lacinia augue, quis accumsan justo diam ac leo. Nullam at iaculis lectus. Sed aliquam mauris et sapien eleifend, eu venenatis dolor vulputate. Suspendisse potenti. Praesent ullamcorper quam leo, et luctus nisi pellentesque at. Aenean in justo dignissim, tempor ligula vel, consectetur risus. Fusce et dolor id augue maximus viverra eu non tellus. Nam eleifend laoreet ornare. Nullam dictum ex non lorem cursus, et tristique erat vehicula. Quisque euismod sagittis nisl non imperdiet. Pellentesque hendrerit, est id viverra molestie, urna enim porttitor metus, eget porta leo augue ultricies augue. Etiam congue, nunc quis consequat lacinia, orci tortor interdum augue, nec ultricies nulla tortor sollicitudin est. Mauris vel elementum tortor, in tristique nisl. Nam varius porttitor arcu non bibendum.
Phasellus mattis tincidunt mi at condimentum. Curabitur magna nibh, tincidunt vel diam sit amet, hendrerit porttitor tortor. Morbi pretium porttitor massa, et bibendum justo dignissim ut. Pellentesque vel neque justo. Sed lacinia, lacus et placerat tristique, libero massa commodo tortor, vel mollis orci ligula non lorem. Donec sagittis elementum lorem eu consectetur. Donec mollis turpis vel accumsan tristique. Sed pulvinar feugiat arcu ac ornare. Nunc dictum maximus elementum. Nunc pretium blandit dolor, porta dictum purus facilisis ut. Praesent sed rhoncus sapien. Mauris sodales lobortis risus in suscipit. Etiam scelerisque consequat ultrices. Donec elementum elit nunc, ut consequat tortor condimentum sollicitudin. Morbi posuere eros eu mi semper, sit amet suscipit ligula pretium.
codeberg.org:astevan/hugo-xmin supports Font Awesome emojis from https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css.
| HTML | emoji |
|---|---|
<i class="fa fa-mountain"></i> |
|
<i class="fa fa-gift"></i> |
|
<i class="fa-brands fa-linux"></i> |
|
<i class="fa-solid fa-microchip"></i> |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id est non justo malesuada accumsan. Nam non lectus nec lectus dictum dignissim. Quisque suscipit porttitor placerat. Etiam dapibus, massa at tempus pulvinar, ipsum risus pretium mi, quis dictum orci ligula non velit. Sed massa ligula, viverra a eros at, hendrerit blandit arcu. Mauris enim dui, luctus at augue sed, efficitur euismod felis. In feugiat volutpat quam, sed ultrices urna. Integer lorem nulla, sollicitudin in eros vitae, porttitor commodo mi. Suspendisse sodales nibh in fringilla tincidunt. Phasellus at est hendrerit, interdum augue in, aliquet purus. Aenean hendrerit, magna eu maximus rhoncus, est leo fermentum urna, at facilisis est lectus nec odio. Proin ac quam non turpis blandit tristique vel a tortor.
Fusce fringilla, elit sed finibus tristique, felis elit tincidunt magna, non consectetur dui lorem nec neque. Praesent dictum vitae est at congue. Nullam porta, odio non sollicitudin tempus, diam dui ultricies nunc, et ornare neque lectus ac velit. Praesent posuere justo a lectus aliquam sagittis. Maecenas et malesuada quam. Curabitur auctor quam non ex varius, ac pretium massa rhoncus. Nam vehicula urna ultrices, vehicula augue in, hendrerit lacus. Nulla non orci id est maximus euismod. Nunc nisi urna, volutpat id nibh vitae, convallis pretium mauris. Praesent et arcu sit amet mauris aliquet varius. Integer placerat pharetra ante, suscipit euismod urna lacinia sed. Etiam neque quam, tincidunt eget iaculis sed, ultricies eget nunc. Donec non urna aliquam, tempor dolor at, faucibus ipsum. Phasellus non ligula nisl. In molestie eu orci sed aliquet. Nullam nisi tortor, euismod et urna eget, sodales elementum arcu.
Aliquam sapien felis, tempus nec bibendum vitae, aliquet a arcu. Donec rutrum lobortis lectus, at suscipit odio efficitur vel. Praesent lectus neque, pretium vel suscipit ut, lacinia sit amet ante. Curabitur porta risus vel elit elementum, quis condimentum magna mattis. Sed eu mauris sagittis, pellentesque est nec, mollis mauris. Vestibulum vitae libero vel mauris hendrerit fermentum. Cras et enim massa. Nullam blandit nisi eu turpis rutrum, at tincidunt est tincidunt. Nam auctor massa a libero luctus interdum vel ornare nibh.
Aliquam at imperdiet velit, posuere mattis justo. Fusce lacinia quam id quam sollicitudin, sed imperdiet diam semper. Phasellus sollicitudin, dui a suscipit dapibus, sapien nisi lacinia augue, quis accumsan justo diam ac leo. Nullam at iaculis lectus. Sed aliquam mauris et sapien eleifend, eu venenatis dolor vulputate. Suspendisse potenti. Praesent ullamcorper quam leo, et luctus nisi pellentesque at. Aenean in justo dignissim, tempor ligula vel, consectetur risus. Fusce et dolor id augue maximus viverra eu non tellus. Nam eleifend laoreet ornare. Nullam dictum ex non lorem cursus, et tristique erat vehicula. Quisque euismod sagittis nisl non imperdiet. Pellentesque hendrerit, est id viverra molestie, urna enim porttitor metus, eget porta leo augue ultricies augue. Etiam congue, nunc quis consequat lacinia, orci tortor interdum augue, nec ultricies nulla tortor sollicitudin est. Mauris vel elementum tortor, in tristique nisl. Nam varius porttitor arcu non bibendum.
Phasellus mattis tincidunt mi at condimentum. Curabitur magna nibh, tincidunt vel diam sit amet, hendrerit porttitor tortor. Morbi pretium porttitor massa, et bibendum justo dignissim ut. Pellentesque vel neque justo. Sed lacinia, lacus et placerat tristique, libero massa commodo tortor, vel mollis orci ligula non lorem. Donec sagittis elementum lorem eu consectetur. Donec mollis turpis vel accumsan tristique. Sed pulvinar feugiat arcu ac ornare. Nunc dictum maximus elementum. Nunc pretium blandit dolor, porta dictum purus facilisis ut. Praesent sed rhoncus sapien. Mauris sodales lobortis risus in suscipit. Etiam scelerisque consequat ultrices. Donec elementum elit nunc, ut consequat tortor condimentum sollicitudin. Morbi posuere eros eu mi semper, sit amet suscipit ligula pretium.
Both the header and the footer float on top of the page, with margins to make sure they do not hide any content.
The current main menu, at the top of this page is defined with the following JSON, in the $.menu.main entry of hugo.json.
[
{ "weight": 1 , "pre": "<i class=\"fa fa-house\"></i> " , "name": "(1)" , "post": null , "url": "https://astevan.codeberg.page" },
{ "weight": 99 , "pre": "<i class=\"fa fa-arrow-left\"></i> " , "name": "(99)" , "post": null , "url": "/" , "params": { "on_home" : false }},
{ "weight": 100 , "pre": null , "name": "oeis.org (100)" , "post": " <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>" , "url": "https://oeis.org" , "params": { "external": true }},
{ "weight": 199 , "pre": "<i class=\"fa fa-balance-scale\"></i> " , "name": "(199)" , "post": null , "url": "/LICENSE.txt" },
{ "weight": 200 , "pre": "<i class=\"fa fa-mountain\"></i> " , "name": "200)" , "post": null , "url": "https://codeberg.org/astevan/hugo-xmin" },
{ "weight": 201 , "pre": "<i class=\"fa fa-bell\"></i> " , "name": "(201)" , "post": null , "url": "index.xml" }
]codeberg.org:astevan/hugo-xmin’s header supports
$.pre: insert HTML before the inner menu item, i.e. inside the button$.post: insert HTML after the inner menu item, i.e. inside the button$.params.pre: insert HTML before the outer menu item, i.e. around the button (not shown)$.params.post: insert HTML after the outer menu item, i.e. around the button (not shown)$.params.external: open the menu link in a new browser tab when set to true, otherwise stay on this page$.params.on_home: tells whether or not to show the menu entry on the home page (useful when implementing a “back” button)Additionally, the alignement is controlled through the weight of the menu entry:
tip
menu entries in the header above contain their own weight to see where they end up.
The footer is defined as follows in this demo, under the $.params.footer key in hugo.json.
"© **Antoine STEVAN** 2026 -- {Year} | Built with [Hugo](https://gohugo.io) {HugoVersion} and [Go](https://go.dev/) {GoVersion}"codeberg.org:astevan/hugo-xmin’s footer supports
{Year} by the current year{HugoVersion} by the version of Hugo used to build the website{GoVersion} by the version of Go used to build Hugo“This is a server version.” will be added to the footer when the website is being built with commands like hugo server.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id est non justo malesuada accumsan. Nam non lectus nec lectus dictum dignissim. Quisque suscipit porttitor placerat. Etiam dapibus, massa at tempus pulvinar, ipsum risus pretium mi, quis dictum orci ligula non velit. Sed massa ligula, viverra a eros at, hendrerit blandit arcu. Mauris enim dui, luctus at augue sed, efficitur euismod felis. In feugiat volutpat quam, sed ultrices urna. Integer lorem nulla, sollicitudin in eros vitae, porttitor commodo mi. Suspendisse sodales nibh in fringilla tincidunt. Phasellus at est hendrerit, interdum augue in, aliquet purus. Aenean hendrerit, magna eu maximus rhoncus, est leo fermentum urna, at facilisis est lectus nec odio. Proin ac quam non turpis blandit tristique vel a tortor.
Fusce fringilla, elit sed finibus tristique, felis elit tincidunt magna, non consectetur dui lorem nec neque. Praesent dictum vitae est at congue. Nullam porta, odio non sollicitudin tempus, diam dui ultricies nunc, et ornare neque lectus ac velit. Praesent posuere justo a lectus aliquam sagittis. Maecenas et malesuada quam. Curabitur auctor quam non ex varius, ac pretium massa rhoncus. Nam vehicula urna ultrices, vehicula augue in, hendrerit lacus. Nulla non orci id est maximus euismod. Nunc nisi urna, volutpat id nibh vitae, convallis pretium mauris. Praesent et arcu sit amet mauris aliquet varius. Integer placerat pharetra ante, suscipit euismod urna lacinia sed. Etiam neque quam, tincidunt eget iaculis sed, ultricies eget nunc. Donec non urna aliquam, tempor dolor at, faucibus ipsum. Phasellus non ligula nisl. In molestie eu orci sed aliquet. Nullam nisi tortor, euismod et urna eget, sodales elementum arcu.
Aliquam sapien felis, tempus nec bibendum vitae, aliquet a arcu. Donec rutrum lobortis lectus, at suscipit odio efficitur vel. Praesent lectus neque, pretium vel suscipit ut, lacinia sit amet ante. Curabitur porta risus vel elit elementum, quis condimentum magna mattis. Sed eu mauris sagittis, pellentesque est nec, mollis mauris. Vestibulum vitae libero vel mauris hendrerit fermentum. Cras et enim massa. Nullam blandit nisi eu turpis rutrum, at tincidunt est tincidunt. Nam auctor massa a libero luctus interdum vel ornare nibh.
Aliquam at imperdiet velit, posuere mattis justo. Fusce lacinia quam id quam sollicitudin, sed imperdiet diam semper. Phasellus sollicitudin, dui a suscipit dapibus, sapien nisi lacinia augue, quis accumsan justo diam ac leo. Nullam at iaculis lectus. Sed aliquam mauris et sapien eleifend, eu venenatis dolor vulputate. Suspendisse potenti. Praesent ullamcorper quam leo, et luctus nisi pellentesque at. Aenean in justo dignissim, tempor ligula vel, consectetur risus. Fusce et dolor id augue maximus viverra eu non tellus. Nam eleifend laoreet ornare. Nullam dictum ex non lorem cursus, et tristique erat vehicula. Quisque euismod sagittis nisl non imperdiet. Pellentesque hendrerit, est id viverra molestie, urna enim porttitor metus, eget porta leo augue ultricies augue. Etiam congue, nunc quis consequat lacinia, orci tortor interdum augue, nec ultricies nulla tortor sollicitudin est. Mauris vel elementum tortor, in tristique nisl. Nam varius porttitor arcu non bibendum.
Phasellus mattis tincidunt mi at condimentum. Curabitur magna nibh, tincidunt vel diam sit amet, hendrerit porttitor tortor. Morbi pretium porttitor massa, et bibendum justo dignissim ut. Pellentesque vel neque justo. Sed lacinia, lacus et placerat tristique, libero massa commodo tortor, vel mollis orci ligula non lorem. Donec sagittis elementum lorem eu consectetur. Donec mollis turpis vel accumsan tristique. Sed pulvinar feugiat arcu ac ornare. Nunc dictum maximus elementum. Nunc pretium blandit dolor, porta dictum purus facilisis ut. Praesent sed rhoncus sapien. Mauris sodales lobortis risus in suscipit. Etiam scelerisque consequat ultrices. Donec elementum elit nunc, ut consequat tortor condimentum sollicitudin. Morbi posuere eros eu mi semper, sit amet suscipit ligula pretium.
codeberg.org:astevan/hugo-xmin supports GitHub-like block quotes / alerts.
some code
regular block quote
a tip
tip
another one
a regular note
note
another one
a warning
warning
another one
a important note
important
another one
be cautious !
caution
no, really, be cautious with that !
a custom note called “custom”
custom
another one
Apart from raw blockquotes with ` and ```, codeberg.org:astevan/hugo-xmin supports basic syntax hightlighting, built-in from Hugo.
Below is some Go syntax highlighting.
{{< highlight go "linenos=inline, hl_lines=3 6-8" >}}
package main
import "fmt" // highlighted
func main() {
for i := 0; i < 3; i++ { // highlighted
fmt.Println("Value of i:", i) //
} //
}
{{< /highlight >}}
1package main
2
3import "fmt" // highlighted
4
5func main() {
6 for i := 0; i < 3; i++ { // highlighted
7 fmt.Println("Value of i:", i) //
8 } //
9}And this is some inline Go code: import "fmt" with {{< highlight go “hl_inline=true” >}}import “fmt”{{< /highlight >}}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id est non justo malesuada accumsan. Nam non lectus nec lectus dictum dignissim. Quisque suscipit porttitor placerat. Etiam dapibus, massa at tempus pulvinar, ipsum risus pretium mi, quis dictum orci ligula non velit. Sed massa ligula, viverra a eros at, hendrerit blandit arcu. Mauris enim dui, luctus at augue sed, efficitur euismod felis. In feugiat volutpat quam, sed ultrices urna. Integer lorem nulla, sollicitudin in eros vitae, porttitor commodo mi. Suspendisse sodales nibh in fringilla tincidunt. Phasellus at est hendrerit, interdum augue in, aliquet purus. Aenean hendrerit, magna eu maximus rhoncus, est leo fermentum urna, at facilisis est lectus nec odio. Proin ac quam non turpis blandit tristique vel a tortor.
Fusce fringilla, elit sed finibus tristique, felis elit tincidunt magna, non consectetur dui lorem nec neque. Praesent dictum vitae est at congue. Nullam porta, odio non sollicitudin tempus, diam dui ultricies nunc, et ornare neque lectus ac velit. Praesent posuere justo a lectus aliquam sagittis. Maecenas et malesuada quam. Curabitur auctor quam non ex varius, ac pretium massa rhoncus. Nam vehicula urna ultrices, vehicula augue in, hendrerit lacus. Nulla non orci id est maximus euismod. Nunc nisi urna, volutpat id nibh vitae, convallis pretium mauris. Praesent et arcu sit amet mauris aliquet varius. Integer placerat pharetra ante, suscipit euismod urna lacinia sed. Etiam neque quam, tincidunt eget iaculis sed, ultricies eget nunc. Donec non urna aliquam, tempor dolor at, faucibus ipsum. Phasellus non ligula nisl. In molestie eu orci sed aliquet. Nullam nisi tortor, euismod et urna eget, sodales elementum arcu.
Aliquam sapien felis, tempus nec bibendum vitae, aliquet a arcu. Donec rutrum lobortis lectus, at suscipit odio efficitur vel. Praesent lectus neque, pretium vel suscipit ut, lacinia sit amet ante. Curabitur porta risus vel elit elementum, quis condimentum magna mattis. Sed eu mauris sagittis, pellentesque est nec, mollis mauris. Vestibulum vitae libero vel mauris hendrerit fermentum. Cras et enim massa. Nullam blandit nisi eu turpis rutrum, at tincidunt est tincidunt. Nam auctor massa a libero luctus interdum vel ornare nibh.
Aliquam at imperdiet velit, posuere mattis justo. Fusce lacinia quam id quam sollicitudin, sed imperdiet diam semper. Phasellus sollicitudin, dui a suscipit dapibus, sapien nisi lacinia augue, quis accumsan justo diam ac leo. Nullam at iaculis lectus. Sed aliquam mauris et sapien eleifend, eu venenatis dolor vulputate. Suspendisse potenti. Praesent ullamcorper quam leo, et luctus nisi pellentesque at. Aenean in justo dignissim, tempor ligula vel, consectetur risus. Fusce et dolor id augue maximus viverra eu non tellus. Nam eleifend laoreet ornare. Nullam dictum ex non lorem cursus, et tristique erat vehicula. Quisque euismod sagittis nisl non imperdiet. Pellentesque hendrerit, est id viverra molestie, urna enim porttitor metus, eget porta leo augue ultricies augue. Etiam congue, nunc quis consequat lacinia, orci tortor interdum augue, nec ultricies nulla tortor sollicitudin est. Mauris vel elementum tortor, in tristique nisl. Nam varius porttitor arcu non bibendum.
Phasellus mattis tincidunt mi at condimentum. Curabitur magna nibh, tincidunt vel diam sit amet, hendrerit porttitor tortor. Morbi pretium porttitor massa, et bibendum justo dignissim ut. Pellentesque vel neque justo. Sed lacinia, lacus et placerat tristique, libero massa commodo tortor, vel mollis orci ligula non lorem. Donec sagittis elementum lorem eu consectetur. Donec mollis turpis vel accumsan tristique. Sed pulvinar feugiat arcu ac ornare. Nunc dictum maximus elementum. Nunc pretium blandit dolor, porta dictum purus facilisis ut. Praesent sed rhoncus sapien. Mauris sodales lobortis risus in suscipit. Etiam scelerisque consequat ultrices. Donec elementum elit nunc, ut consequat tortor condimentum sollicitudin. Morbi posuere eros eu mi semper, sit amet suscipit ligula pretium.
To enable the following kind of math equations, the easiest is to link the ./config/_default/hugo.json file of codeberg.org:astevan/hugo-xmin to the same file in your website.
note
This theme takes care of everything required to enable KaTeX, i.e. CSS stylesheets and rendering JS scripts with ./layouts/_partials/header.html and ./layouts/_partials/footer.html, but Hugo still requires some extra config, which has to be present for real in the website source pages…
As i like to install a theme in ./themes/ with its full path, i would have ./themes/codeberg.org/astevan/hugo-xmin and i would run
ln -sf ../../themes/codeberg.org/astevan/hugo-xmin/config/_default/hugo.json config/_default/hugo.jsonIn the rest of this “math” section, three mathematical facts are presented more or less formally: (1) the definition of a cryptographic hash function, (2) the central limit theorem and (3) the Bayes-Laplace formula.
The security level of a _**C**ryptographic **H**ash **F**unction_ (CHF) \(H\) is defined in terms of the following properties, for some security parameter \(\lambda\), in bits:
1. _Pre-image resistance._ Given \(y\) an output of \(H\), it is difficult to find an input \(x\) such that \(H(x) = y\), except with probability less than \(2^{-\lambda}\)
1. _Second pre-image resistance._ Given an input \(x_1\), it is difficult to find another input \(x_2\) such that \(H(x_1) = H(x_2)\) and \(x_1 \neq x_2\), except with probability less than \(2^{-\lambda}\)
1. _Collision resistance._ It is difficult to find inputs \(x_1\) and \(x_2\) such that \(H(x_1) = H(x_2)\) and \(x_1 \neq x_2\), except with probabilty less than \(2^{-\lambda}\)
A function \(H\) satisfying property **1** is called a _one-way function_.
If it resists to pre-image attacks of property **2**, then \(H\) is a _weak_ hash function.
Finally, if \(H\) satisfies property **3** and is resistant to collisions, we call it a _strong_ hash function.The security level of a Cryptographic Hash Function (CHF) \(H\) is defined in terms of the following properties, for some security parameter \(\lambda\), in bits:
- Pre-image resistance. Given \(y\) an output of \(H\), it is difficult to find an input \(x\) such that \(H(x) = y\), except with probability less than \(2^{-\lambda}\)
- Second pre-image resistance. Given an input \(x_1\), it is difficult to find another input \(x_2\) such that \(H(x_1) = H(x_2)\) and \(x_1 \neq x_2\), except with probability less than \(2^{-\lambda}\)
- Collision resistance. It is difficult to find inputs \(x_1\) and \(x_2\) such that \(H(x_1) = H(x_2)\) and \(x_1 \neq x_2\), except with probabilty less than \(2^{-\lambda}\)
A function \(H\) satisfying property 1 is called a one-way function.
If it resists to pre-image attacks of property 2, then \(H\) is a weak hash function.
Finally, if \(H\) satisfies property 3 and is resistant to collisions, we call it a strong hash function.
=> the Central Limit Theorem
$${\sqrt {n}}\left(\left({\frac {1}{n}}\sum _{i=1}^{n}X_{i}\right)-\mu \right)\ {\xrightarrow {d}}\ N\left(0,\sigma ^{2}\right)$$
=> the Bayes-Laplace formula
\[
\mathbb{P}(T | D) = \frac{
\mathbb{P}(D | T) \mathbb{P}(T)
}{
\mathbb{P}(D | T) \mathbb{P}(T) + \sum_{T' \neq T} \mathbb{P}(D | T') \mathbb{P}(T')
}
\]=> the Central Limit Theorem
$${\sqrt {n}}\left(\left({\frac {1}{n}}\sum _{i=1}^{n}X_{i}\right)-\mu \right)\ {\xrightarrow {d}}\ N\left(0,\sigma ^{2}\right)$$=> the Bayes-Laplace formula
\[ \mathbb{P}(T | D) = \frac{ \mathbb{P}(D | T) \mathbb{P}(T) }{ \mathbb{P}(D | T) \mathbb{P}(T) + \sum_{T' \neq T} \mathbb{P}(D | T') \mathbb{P}(T') } \]
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id est non justo malesuada accumsan. Nam non lectus nec lectus dictum dignissim. Quisque suscipit porttitor placerat. Etiam dapibus, massa at tempus pulvinar, ipsum risus pretium mi, quis dictum orci ligula non velit. Sed massa ligula, viverra a eros at, hendrerit blandit arcu. Mauris enim dui, luctus at augue sed, efficitur euismod felis. In feugiat volutpat quam, sed ultrices urna. Integer lorem nulla, sollicitudin in eros vitae, porttitor commodo mi. Suspendisse sodales nibh in fringilla tincidunt. Phasellus at est hendrerit, interdum augue in, aliquet purus. Aenean hendrerit, magna eu maximus rhoncus, est leo fermentum urna, at facilisis est lectus nec odio. Proin ac quam non turpis blandit tristique vel a tortor.
Fusce fringilla, elit sed finibus tristique, felis elit tincidunt magna, non consectetur dui lorem nec neque. Praesent dictum vitae est at congue. Nullam porta, odio non sollicitudin tempus, diam dui ultricies nunc, et ornare neque lectus ac velit. Praesent posuere justo a lectus aliquam sagittis. Maecenas et malesuada quam. Curabitur auctor quam non ex varius, ac pretium massa rhoncus. Nam vehicula urna ultrices, vehicula augue in, hendrerit lacus. Nulla non orci id est maximus euismod. Nunc nisi urna, volutpat id nibh vitae, convallis pretium mauris. Praesent et arcu sit amet mauris aliquet varius. Integer placerat pharetra ante, suscipit euismod urna lacinia sed. Etiam neque quam, tincidunt eget iaculis sed, ultricies eget nunc. Donec non urna aliquam, tempor dolor at, faucibus ipsum. Phasellus non ligula nisl. In molestie eu orci sed aliquet. Nullam nisi tortor, euismod et urna eget, sodales elementum arcu.
Aliquam sapien felis, tempus nec bibendum vitae, aliquet a arcu. Donec rutrum lobortis lectus, at suscipit odio efficitur vel. Praesent lectus neque, pretium vel suscipit ut, lacinia sit amet ante. Curabitur porta risus vel elit elementum, quis condimentum magna mattis. Sed eu mauris sagittis, pellentesque est nec, mollis mauris. Vestibulum vitae libero vel mauris hendrerit fermentum. Cras et enim massa. Nullam blandit nisi eu turpis rutrum, at tincidunt est tincidunt. Nam auctor massa a libero luctus interdum vel ornare nibh.
Aliquam at imperdiet velit, posuere mattis justo. Fusce lacinia quam id quam sollicitudin, sed imperdiet diam semper. Phasellus sollicitudin, dui a suscipit dapibus, sapien nisi lacinia augue, quis accumsan justo diam ac leo. Nullam at iaculis lectus. Sed aliquam mauris et sapien eleifend, eu venenatis dolor vulputate. Suspendisse potenti. Praesent ullamcorper quam leo, et luctus nisi pellentesque at. Aenean in justo dignissim, tempor ligula vel, consectetur risus. Fusce et dolor id augue maximus viverra eu non tellus. Nam eleifend laoreet ornare. Nullam dictum ex non lorem cursus, et tristique erat vehicula. Quisque euismod sagittis nisl non imperdiet. Pellentesque hendrerit, est id viverra molestie, urna enim porttitor metus, eget porta leo augue ultricies augue. Etiam congue, nunc quis consequat lacinia, orci tortor interdum augue, nec ultricies nulla tortor sollicitudin est. Mauris vel elementum tortor, in tristique nisl. Nam varius porttitor arcu non bibendum.
Phasellus mattis tincidunt mi at condimentum. Curabitur magna nibh, tincidunt vel diam sit amet, hendrerit porttitor tortor. Morbi pretium porttitor massa, et bibendum justo dignissim ut. Pellentesque vel neque justo. Sed lacinia, lacus et placerat tristique, libero massa commodo tortor, vel mollis orci ligula non lorem. Donec sagittis elementum lorem eu consectetur. Donec mollis turpis vel accumsan tristique. Sed pulvinar feugiat arcu ac ornare. Nunc dictum maximus elementum. Nunc pretium blandit dolor, porta dictum purus facilisis ut. Praesent sed rhoncus sapien. Mauris sodales lobortis risus in suscipit. Etiam scelerisque consequat ultrices. Donec elementum elit nunc, ut consequat tortor condimentum sollicitudin. Morbi posuere eros eu mi semper, sit amet suscipit ligula pretium.
codeberg.org:astevan/hugo-xmin obviously supports tables, even though the style has been changed slightly.
The following Nushell script lists all the files in the repo that are not inside ./example/themes/this/ nor ./example/public/ because the former is a cyclic symlink to the repo itself (../..) and the latter contains the build artifacts of Hugo which are only tracked on the special pages branch of codeberg.org:astevan/hugo-xmin.
The files are rendered in blue, the directories in green and the symlinks in red.
ls **/*
| where not ([
((($it.name | path split | first 3 | path join) == "example/themes/this") and ($it.name | path split | length) > 3)
(($it.name | path split | first 2 | path join) == "example/public")
] | any { $in })
| update name { |it|
let color = match $it.type {
"file" => "#333399",
"dir" => "#339933",
"symlink" => "#993333",
_ => "#000000",
}
$"<span style=\"color: ($color);\">($it.name)</span>"
}
| to md --pretty| name | type | size | modified |
|---|---|---|---|
| LICENSE.txt | file | 35.1 kB | 2026-06-28 15:46:16 +02:00 |
| archetypes | dir | 4.0 kB | 2026-06-30 19:13:12 +02:00 |
| archetypes/default.md | file | 104 B | 2026-06-30 19:13:12 +02:00 |
| config | dir | 4.0 kB | 2026-06-28 15:46:16 +02:00 |
| config/_default | dir | 4.0 kB | 2026-07-01 19:14:14 +02:00 |
| config/_default/hugo.json | file | 535 B | 2026-07-01 19:14:14 +02:00 |
| example | dir | 4.0 kB | 2026-07-01 20:03:54 +02:00 |
| example/archetypes | dir | 4.0 kB | 2026-06-28 15:46:16 +02:00 |
| example/archetypes/default.md | file | 104 B | 2026-06-28 15:46:16 +02:00 |
| example/config | dir | 4.0 kB | 2026-06-28 15:56:04 +02:00 |
| example/config/_default | dir | 4.0 kB | 2026-06-28 15:56:24 +02:00 |
| example/config/_default/hugo.json | symlink | 34 B | 2026-06-28 15:56:24 +02:00 |
| example/content | dir | 4.0 kB | 2026-07-01 21:41:53 +02:00 |
| example/content/_index.md | file | 45.6 kB | 2026-07-01 21:41:53 +02:00 |
| example/content/a_page_without_an_article_meta.md | file | 425 B | 2026-07-01 19:46:46 +02:00 |
| example/content/a_post_with_an_article_meta.md | file | 755 B | 2026-07-01 19:46:43 +02:00 |
| example/hugo.json | file | 1.7 kB | 2026-07-01 20:03:54 +02:00 |
| example/static | dir | 4.0 kB | 2026-06-28 15:52:41 +02:00 |
| example/static/license.txt | symlink | 17 B | 2026-06-28 15:49:53 +02:00 |
| example/themes | dir | 4.0 kB | 2026-06-28 15:46:16 +02:00 |
| example/themes/this | symlink | 5 B | 2026-06-28 15:46:16 +02:00 |
| layouts | dir | 4.0 kB | 2026-06-29 18:33:23 +02:00 |
| layouts/404.html | file | 3.0 kB | 2026-06-28 15:46:16 +02:00 |
| layouts/_default | dir | 4.0 kB | 2026-06-28 15:46:16 +02:00 |
| layouts/_default/_markup | dir | 4.0 kB | 2026-06-28 15:54:16 +02:00 |
| layouts/_default/_markup/render-blockquote.html | file | 355 B | 2026-06-28 15:54:16 +02:00 |
| layouts/_partials | dir | 4.0 kB | 2026-07-01 20:07:41 +02:00 |
| layouts/_partials/foot_custom.html | file | 0 B | 2026-06-28 15:46:16 +02:00 |
| layouts/_partials/footer.html | file | 641 B | 2026-06-29 18:40:39 +02:00 |
| layouts/_partials/head_custom.html | file | 0 B | 2026-06-28 15:46:16 +02:00 |
| layouts/_partials/header.html | file | 2.1 kB | 2026-07-01 20:07:41 +02:00 |
| layouts/list.html | file | 443 B | 2026-06-28 15:46:16 +02:00 |
| layouts/single.html | file | 572 B | 2026-06-29 18:33:23 +02:00 |
| static | dir | 4.0 kB | 2026-06-28 15:46:16 +02:00 |
| static/css | dir | 4.0 kB | 2026-06-29 22:01:57 +02:00 |
| static/css/alerts.css | file | 550 B | 2026-06-28 15:46:16 +02:00 |
| static/css/fonts.css | file | 148 B | 2026-06-28 15:46:16 +02:00 |
| static/css/style.css | file | 1.9 kB | 2026-06-29 22:01:57 +02:00 |
| theme.toml | file | 418 B | 2026-06-28 15:46:16 +02:00 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras id est non justo malesuada accumsan. Nam non lectus nec lectus dictum dignissim. Quisque suscipit porttitor placerat. Etiam dapibus, massa at tempus pulvinar, ipsum risus pretium mi, quis dictum orci ligula non velit. Sed massa ligula, viverra a eros at, hendrerit blandit arcu. Mauris enim dui, luctus at augue sed, efficitur euismod felis. In feugiat volutpat quam, sed ultrices urna. Integer lorem nulla, sollicitudin in eros vitae, porttitor commodo mi. Suspendisse sodales nibh in fringilla tincidunt. Phasellus at est hendrerit, interdum augue in, aliquet purus. Aenean hendrerit, magna eu maximus rhoncus, est leo fermentum urna, at facilisis est lectus nec odio. Proin ac quam non turpis blandit tristique vel a tortor.
Fusce fringilla, elit sed finibus tristique, felis elit tincidunt magna, non consectetur dui lorem nec neque. Praesent dictum vitae est at congue. Nullam porta, odio non sollicitudin tempus, diam dui ultricies nunc, et ornare neque lectus ac velit. Praesent posuere justo a lectus aliquam sagittis. Maecenas et malesuada quam. Curabitur auctor quam non ex varius, ac pretium massa rhoncus. Nam vehicula urna ultrices, vehicula augue in, hendrerit lacus. Nulla non orci id est maximus euismod. Nunc nisi urna, volutpat id nibh vitae, convallis pretium mauris. Praesent et arcu sit amet mauris aliquet varius. Integer placerat pharetra ante, suscipit euismod urna lacinia sed. Etiam neque quam, tincidunt eget iaculis sed, ultricies eget nunc. Donec non urna aliquam, tempor dolor at, faucibus ipsum. Phasellus non ligula nisl. In molestie eu orci sed aliquet. Nullam nisi tortor, euismod et urna eget, sodales elementum arcu.
Aliquam sapien felis, tempus nec bibendum vitae, aliquet a arcu. Donec rutrum lobortis lectus, at suscipit odio efficitur vel. Praesent lectus neque, pretium vel suscipit ut, lacinia sit amet ante. Curabitur porta risus vel elit elementum, quis condimentum magna mattis. Sed eu mauris sagittis, pellentesque est nec, mollis mauris. Vestibulum vitae libero vel mauris hendrerit fermentum. Cras et enim massa. Nullam blandit nisi eu turpis rutrum, at tincidunt est tincidunt. Nam auctor massa a libero luctus interdum vel ornare nibh.
Aliquam at imperdiet velit, posuere mattis justo. Fusce lacinia quam id quam sollicitudin, sed imperdiet diam semper. Phasellus sollicitudin, dui a suscipit dapibus, sapien nisi lacinia augue, quis accumsan justo diam ac leo. Nullam at iaculis lectus. Sed aliquam mauris et sapien eleifend, eu venenatis dolor vulputate. Suspendisse potenti. Praesent ullamcorper quam leo, et luctus nisi pellentesque at. Aenean in justo dignissim, tempor ligula vel, consectetur risus. Fusce et dolor id augue maximus viverra eu non tellus. Nam eleifend laoreet ornare. Nullam dictum ex non lorem cursus, et tristique erat vehicula. Quisque euismod sagittis nisl non imperdiet. Pellentesque hendrerit, est id viverra molestie, urna enim porttitor metus, eget porta leo augue ultricies augue. Etiam congue, nunc quis consequat lacinia, orci tortor interdum augue, nec ultricies nulla tortor sollicitudin est. Mauris vel elementum tortor, in tristique nisl. Nam varius porttitor arcu non bibendum.
Phasellus mattis tincidunt mi at condimentum. Curabitur magna nibh, tincidunt vel diam sit amet, hendrerit porttitor tortor. Morbi pretium porttitor massa, et bibendum justo dignissim ut. Pellentesque vel neque justo. Sed lacinia, lacus et placerat tristique, libero massa commodo tortor, vel mollis orci ligula non lorem. Donec sagittis elementum lorem eu consectetur. Donec mollis turpis vel accumsan tristique. Sed pulvinar feugiat arcu ac ornare. Nunc dictum maximus elementum. Nunc pretium blandit dolor, porta dictum purus facilisis ut. Praesent sed rhoncus sapien. Mauris sodales lobortis risus in suscipit. Etiam scelerisque consequat ultrices. Donec elementum elit nunc, ut consequat tortor condimentum sollicitudin. Morbi posuere eros eu mi semper, sit amet suscipit ligula pretium.