Compare commits

..

1 Commits

Author SHA1 Message Date
Alex Shpak
7b5d299b7b Rewrite prev-next with enw lang. selector 2021-08-30 14:13:46 +02:00
189 changed files with 746 additions and 3319 deletions

View File

@ -9,15 +9,12 @@ jobs:
matrix:
hugo-version:
- 'latest'
- '0.134.2'
- '0.68.0'
steps:
- uses: actions/checkout@v4
with:
submodules: true # Fetch Hugo themes (true OR recursive)
fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
- uses: actions/checkout@v2
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
uses: peaceiris/actions-hugo@v2
with:
hugo-version: ${{ matrix.hugo-version }}
extended: true
@ -25,10 +22,3 @@ jobs:
- name: Run Hugo
working-directory: exampleSite
run: hugo --themesDir ../..
# - name: Deploy
# uses: peaceiris/actions-gh-pages@v3
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
# publish_dir: ./public

2
.gitignore vendored
View File

@ -1,5 +1,3 @@
public/
exampleSite/public/
.DS_Store
.hugo_build.lock
resources/

112
README.md
View File

@ -1,12 +1,12 @@
# Hugo Book Theme
[![Hugo](https://img.shields.io/badge/hugo-0.134-blue.svg)](https://gohugo.io)
[![Hugo](https://img.shields.io/badge/hugo-0.68-blue.svg)](https://gohugo.io)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
![Build with Hugo](https://github.com/alex-shpak/hugo-book/workflows/Build%20with%20Hugo/badge.svg)
### [Hugo](https://gohugo.io) documentation theme as simple as plain book
![Screenshot](https://raw.githubusercontent.com/alex-shpak/hugo-book/master/images/screenshot.png)
![Screenshot](https://github.com/alex-shpak/hugo-book/blob/master/images/screenshot.png)
- [Features](#features)
- [Requirements](#requirements)
@ -33,46 +33,21 @@
## Requirements
- Hugo 0.134 or higher
- Hugo extended version, [Installation Instructions](https://gohugo.io/installation/)
- Hugo 0.68 or higher
- Hugo extended version, read more [here](https://gohugo.io/news/0.48-relnotes/)
## Installation
### Install as git submodule
Navigate to your hugo project root and run:
```
git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book
git submodule add https://github.com/alex-shpak/hugo-book themes/book
```
Then run hugo (or set `theme = "hugo-book"`/`theme: hugo-book` in configuration file)
Then run hugo (or set `theme = "book"`/`theme: book` in configuration file)
```
hugo server --minify --theme hugo-book
```
### Install as hugo module
You can also add this theme as a Hugo module instead of a git submodule.
Start with initializing hugo modules, if not done yet:
```
hugo mod init github.com/repo/path
```
Navigate to your hugo project root and add [module] section to your `hugo.toml`:
```toml
[module]
[[module.imports]]
path = 'github.com/alex-shpak/hugo-book'
```
Then, to load/update the theme module and run hugo:
```sh
hugo mod get -u
hugo server --minify
hugo server --minify --theme book
```
### Creating site from scratch
@ -82,18 +57,54 @@ Below is an example on how to create a new site from scratch:
```sh
hugo new site mydocs; cd mydocs
git init
git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book
cp -R themes/hugo-book/exampleSite/content.en/* ./content
git submodule add https://github.com/alex-shpak/hugo-book themes/book
cp -R themes/book/exampleSite/content .
```
```sh
hugo server --minify --theme hugo-book
hugo server --minify --theme book
```
## Menu
### File tree menu (default)
By default, the theme will render pages from the `content/docs` section as a menu in a tree structure.
You can set `title` and `weight` in the front matter of pages to adjust the order and titles in the menu, as well as other parameters to hide or alter urls in the menu. You can choose which folder to use for generating menu with `BookSection` configuration parameter.
You can set `title` and `weight` in the front matter of pages to adjust the order and titles in the menu.
### Leaf bundle menu
You can also use leaf bundle and the content of its `index.md` file as menu.
Given you have the following file structure:
```
├── content
│ ├── docs
│ │ ├── page-one.md
│ │ └── page-two.md
│ └── posts
│ ├── post-one.md
│ └── post-two.md
```
Create a file `content/menu/index.md` with the content:
```md
+++
headless = true
+++
- [Book Example]({{< relref "/docs/" >}})
- [Page One]({{< relref "/docs/page-one" >}})
- [Page Two]({{< relref "/docs/page-two" >}})
- [Blog]({{< relref "/posts" >}})
```
And Enable it by setting `BookMenuBundle: /menu` in Site configuration.
- [Example menu](https://github.com/alex-shpak/hugo-book/blob/master/exampleSite/content/menu/index.md)
- [Example config file](https://github.com/alex-shpak/hugo-book/blob/master/exampleSite/config.yaml)
- [Leaf bundles](https://gohugo.io/content-management/page-bundles/)
## Blog
@ -104,8 +115,8 @@ A blog is not the primary usecase of this theme, so it has only minimal features
### Site Configuration
There are a few configuration options that you can add to your `hugo.toml` file.
You can also see the `yaml` example [here](https://github.com/alex-shpak/hugo-book/blob/master/exampleSite/hugo.yaml).
There are a few configuration options that you can add to your `config.toml` file.
You can also see the `yaml` example [here](https://github.com/alex-shpak/hugo-book/blob/master/exampleSite/config.yaml).
```toml
# (Optional) Set Google Analytics if you use it to track your website.
@ -141,6 +152,10 @@ disableKinds = ['taxonomy', 'taxonomyTerm']
# /static/logo.png then the path would be 'logo.png'
BookLogo = 'logo.png'
# (Optional, default none) Set leaf bundle to render as side menu
# When not specified file structure and weights will be used
BookMenuBundle = '/menu'
# (Optional, default docs) Specify section of content to render as menu
# You can also set value to "*" to render all sections to menu
BookSection = 'docs'
@ -148,7 +163,7 @@ disableKinds = ['taxonomy', 'taxonomyTerm']
# Set source repository location.
# Used for 'Last Modified' and 'Edit this page' links.
BookRepo = 'https://github.com/alex-shpak/hugo-book'
# Specifies commit portion of the link to the page's last modified commit hash for 'doc' page
# type.
# Required if 'BookRepo' param is set.
@ -200,16 +215,16 @@ You can specify additional params in the front matter of individual pages:
# Set type to 'docs' if you want to render page outside of configured section or if you render section other than 'docs'
type = 'docs'
# Set page weight to re-arrange items in file-tree menu.
# Set page weight to re-arrange items in file-tree menu (if BookMenuBundle not set)
weight = 10
# (Optional) Set to 'true' to mark page as flat section in file-tree menu.
# (Optional) Set to 'true' to mark page as flat section in file-tree menu (if BookMenuBundle not set)
bookFlatSection = false
# (Optional) Set to hide nested sections or pages at that level. Works only with file-tree menu mode
bookCollapseSection = true
# (Optional) Set true to hide page or section from side menu.
# (Optional) Set true to hide page or section from side menu (if BookMenuBundle not set)
bookHidden = false
# (Optional) Set 'false' to hide ToC from page
@ -220,18 +235,13 @@ bookComments = true
# (Optional) Set to 'false' to exclude page from search index.
bookSearchExclude = true
# (Optional) Set explicit href attribute for this page in a menu.
bookHref = ''
```
### Partials
There are layout partials available for you to easily override components of the theme in `layouts/partials/`.
There are few empty partials you can override in `layouts/partials/`
In addition to this, there are several empty partials you can override to easily add/inject code.
| Empty Partial | Placement |
| Partial | Placement |
| -------------------------------------------------- | ------------------------------------------- |
| `layouts/partials/docs/inject/head.html` | Before closing `<head>` tag |
| `layouts/partials/docs/inject/body.html` | Before closing `<body>` tag |
@ -255,7 +265,7 @@ In addition to this, there are several empty partials you can override to easily
### Plugins
There are a few features implemented as pluggable `scss` styles. Usually these are features that don't make it to the core but can still be useful.
There are a few features implemented as plugable `scss` styles. Usually these are features that don't make it to the core but can still be useful.
| Plugin | Description |
| --------------------------------- | ----------------------------------------------------------- |
@ -298,7 +308,7 @@ If you are using `config.yaml` or `config.json`, consult the [configuration mark
## Versioning
This theme follows a simple incremental versioning. e.g. `v1.0.0`, `v2.0.0` and so on. Releases will happen on breaking changes.
This theme follows a simple incremental versioning. e.g. `v1`, `v2` and so on. There might be breaking changes between versions.
If you want lower maintenance, use one of the released versions. If you want to live on the bleeding edge of changes, you can use the `master` branch and update your website when needed.

View File

@ -7,5 +7,4 @@ weight: 1
# bookCollapseSection: false
# bookComments: false
# bookSearchExclude: false
draft: true
---

View File

@ -1,11 +0,0 @@
---
title: "{{ .Name | humanize | title }}"
weight: 1
# bookFlatSection: false
# bookToc: true
# bookHidden: false
# bookCollapseSection: false
# bookComments: false
# bookSearchExclude: false
draft: true
---

View File

@ -3,7 +3,4 @@ title: "{{ .Name | humanize | title }}"
date: {{ .Date }}
# bookComments: false
# bookSearchExclude: false
tags: []
categories: []
draft: true
---

View File

@ -1,7 +1,3 @@
/* You can add custom styles here. */
// @import "plugins/numbered";
//Uncomment the following if local fonts will not load
//@import url('https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap');
//@import url('https://fonts.googleapis.com/css2?family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap');

View File

@ -16,6 +16,7 @@ $body-font-weight: normal !default;
$body-min-width: 20rem !default;
$container-max-width: 80rem !default;
$header-height: 3.5rem !default;
$menu-width: 16rem !default;
$toc-width: 16rem !default;
@ -47,9 +48,9 @@ $hint-colors: (
}
@mixin theme-dark {
--gray-100: #494e54;
--gray-200: #5c6165;
--gray-500: #999d9f;
--gray-100: rgba(255, 255, 255, 0.1);
--gray-200: rgba(255, 255, 255, 0.2);
--gray-500: rgba(255, 255, 255, 0.5);
--color-link: #84b2ff;
--color-visited-link: #b88dff;

View File

@ -1,110 +1,39 @@
/* roboto-regular - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
font-display: fallback;
src: url(https://fonts.gstatic.com/s/roboto/v32/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
src: local(''),
url('fonts/roboto-v27-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('fonts/roboto-v27-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
/* roboto-700 - latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-display: fallback;
src: url(https://fonts.gstatic.com/s/roboto/v32/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
src: local(''),
url('fonts/roboto-v27-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('fonts/roboto-v27-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
/* roboto-mono-regular - latin */
@font-face {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 400;
font-display: fallback;
src: url(https://fonts.gstatic.com/s/robotomono/v23/L0xuDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vq_ROW4AJi8SJQt.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
font-display: swap;
src: local(''),
url('fonts/roboto-mono-v13-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('fonts/roboto-mono-v13-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
/* UBUNTU; LOADED BY SOPER */
/* Regular */
@font-face {
font-family: 'Ubuntu';
src: url('fonts/Ubuntu-Bold.woff2') format('woff2'),
url('fonts/Ubuntu-Bold.woff') format('woff');
font-weight: bold;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Ubuntu';
src: url('fonts/Ubuntu-Italic.woff2') format('woff2'),
url('fonts/Ubuntu-Italic.woff') format('woff');
font-weight: normal;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Ubuntu';
src: url('fonts/Ubuntu-BoldItalic.woff2') format('woff2'),
url('fonts/Ubuntu-BoldItalic.woff') format('woff');
font-weight: bold;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Ubuntu';
src: url('fonts/Ubuntu.woff2') format('woff2'),
url('fonts/Ubuntu.woff') format('woff');
font-weight: normal;
font-style: normal;
font-display: swap;
}
/* Mono */
@font-face {
font-family: 'Ubuntu Mono';
src: url('fonts/UbuntuMono-Bold.woff2') format('woff2'),
url('fonts/UbuntuMono-Bold.woff') format('woff');
font-weight: bold;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Ubuntu Mono';
src: url('fonts/UbuntuMono-BoldItalic.woff2') format('woff2'),
url('fonts/UbuntuMono-BoldItalic.woff') format('woff');
font-weight: bold;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: 'Ubuntu Mono';
src: url('fonts/UbuntuMono-Regular.woff2') format('woff2'),
url('fonts/UbuntuMono-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Ubuntu Mono';
src: url('fonts/UbuntuMono-Italic.woff2') format('woff2'),
url('fonts/UbuntuMono-Italic.woff') format('woff');
font-weight: normal;
font-style: italic;
font-display: swap;
}
body {
font-family: 'Ubuntu', 'Roboto', sans-serif;
font-family: 'Roboto', sans-serif;
}
code {
font-family: 'Ubuntu Mono', 'Roboto Mono', monospace;
font-family: 'Roboto Mono', monospace;
}

View File

@ -2,7 +2,6 @@ html {
font-size: $font-size-base;
scroll-behavior: smooth;
touch-action: manipulation;
scrollbar-gutter: stable;
}
body {
@ -10,7 +9,7 @@ body {
color: var(--body-font-color);
background: var(--body-background);
// letter-spacing: 0.33px;
letter-spacing: 0.33px;
font-weight: $body-font-weight;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
@ -70,7 +69,6 @@ ul.pagination {
display: flex;
justify-content: center;
list-style-type: none;
padding-inline-start: 0px;
.page-item a {
padding: $padding-16;
@ -86,12 +84,6 @@ ul.pagination {
filter: var(--icon-filter);
}
a .book-icon {
height: 1em;
width: 1em;
margin-inline-end: .5em;
}
.book-brand {
margin-top: 0;
margin-bottom: $padding-16;
@ -175,17 +167,7 @@ body[dir="rtl"] .book-menu {
}
.book-post {
margin-bottom: $padding-16 * 2;
.book-post-date img {
height: 1em;
width: 1em;
margin-inline-end: .5em;
}
.book-post-content > :first-child {
margin-top: $padding-16;
}
margin-bottom: $padding-16 * 3;
}
.book-header {
@ -196,12 +178,6 @@ body[dir="rtl"] .book-menu {
line-height: 0;
}
h3 {
overflow: hidden;
text-overflow: ellipsis;
margin: 0 $padding-16;
}
img.book-icon {
height: 1.5em;
width: 1.5em;
@ -273,6 +249,22 @@ body[dir="rtl"] .book-menu {
.book-footer {
padding-top: $padding-16;
font-size: $font-size-14;
a {
margin: $padding-8 0;
}
img {
height: 1em;
width: 1em;
&:first-child {
margin-inline-end: $padding-8;
}
&:last-child {
margin-inline-start: $padding-8;
}
}
}
.book-comments {
@ -282,6 +274,12 @@ body[dir="rtl"] .book-menu {
.book-languages {
margin-block-end: $padding-16 * 2;
.book-icon {
height: 1em;
width: 1em;
margin-inline-end: .5em;
}
ul {
padding-inline-start: 1.5em;
}
@ -307,6 +305,7 @@ body[dir="rtl"] .book-menu {
.book-menu {
visibility: hidden;
margin-inline-start: -$menu-width;
font-size: $font-size-base;
z-index: 1;
}

View File

@ -65,12 +65,9 @@
img {
max-width: 100%;
height: auto;
}
code {
direction: ltr;
unicode-bidi: embed;
padding: 0 $padding-4;
background: var(--gray-200);
border-radius: $border-radius;
@ -78,8 +75,6 @@
}
pre {
direction: ltr;
unicode-bidi: embed;
padding: $padding-16;
background: var(--gray-100);
border-radius: $border-radius;
@ -91,10 +86,6 @@
}
}
p {
word-wrap: break-word;
}
blockquote {
margin: $padding-16 0;
padding: $padding-8 $padding-16 $padding-8 ($padding-16 - $padding-4); //to keep total left space 16dp
@ -138,7 +129,6 @@
ul,
ol {
padding-inline-start: $padding-16 * 2;
word-wrap: break-word;
}
dl {
@ -154,25 +144,14 @@
}
// Special case for highlighted code with line numbers
.highlight {
direction: ltr;
unicode-bidi: embed;
border-radius: $border-radius;
overflow: hidden;
table tr {
td pre code > span {
display: flex;
}
td:nth-child(1) pre {
margin: 0;
padding-inline-end: 0;
}
td:nth-child(2) pre {
margin: 0;
padding-inline-start: 0;
}
.highlight table tr {
td:nth-child(1) pre {
margin: 0;
padding-inline-end: 0;
}
td:nth-child(2) pre {
margin: 0;
padding-inline-start: 0;
}
}

View File

@ -71,7 +71,7 @@
> div {
margin: $padding-16 0;
min-width: $body-min-width * 0.66;
min-width: $body-min-width / 2;
padding: 0 $padding-16;
}
}

View File

@ -50,10 +50,6 @@
text-align: right;
}
.text-small {
font-size: .875em;
}
.hidden {
display: none;
}

View File

@ -11,9 +11,6 @@
document.querySelectorAll("pre code").forEach(code => {
code.addEventListener("click", function (event) {
if (window.getSelection().toString()) {
return;
}
select(code.parentElement);
if (navigator.clipboard) {

View File

@ -1,14 +1,14 @@
{
"name": "{{ .Site.Title }}",
"short_name": "{{ .Site.Title }}",
"start_url": "{{ "./" | relURL }}",
"scope": "{{ "./" | relURL }}",
"start_url": "{{ "/" | relURL }}",
"scope": "{{ "/" | relURL }}",
"display": "standalone",
"background_color": "#000000",
"theme_color": "#000000",
"icons": [
{
"src": "{{ "./favicon.svg" | relURL }}",
"src": "{{ "/favicon.svg" | relURL }}",
"sizes": "512x512"
}
]

View File

@ -1,9 +1,9 @@
$startLevel: 1;
$endLevel: 6;
.book-page .markdown.book-article {
.book-page .markdown {
@for $currentLevel from $startLevel through $endLevel {
h#{$currentLevel} {
> h#{$currentLevel} {
counter-increment: h#{$currentLevel};
counter-reset: h#{$currentLevel + 1};
@ -19,12 +19,14 @@ $endLevel: 6;
}
}
.book-toc nav#TableOfContents ul {
counter-reset: item;
.book-toc nav ul {
li {
counter-increment: item;
&:first-child {
counter-reset: item;
}
&:before {
content: counters(item, ".") ". ";
float: left;

View File

@ -1,9 +1,7 @@
[
{{- $pages := where .Site.Pages "Kind" "in" (slice "page" "section") -}}
{{- $pages = where $pages "Params.bookSearchExclude" "!=" true -}}
{{/* Remove until we know why it does not work, see https://github.com/alex-shpak/hugo-book/issues/528 */}}
{{/*- $pages = where $pages "Content" "not in" (slice nil "") -*/}}
{{- $pages = where $pages "Content" "!=" "" -}}
{{- $pages = where $pages "Params.booksearchexclude" "!=" true -}}
{{- $pages = where $pages "Content" "not in" (slice nil "") -}}
{{ range $index, $page := $pages }}
{{ if gt $index 0}},{{end}} {

View File

@ -7,21 +7,11 @@
(function () {
const searchDataURL = '{{ $searchData.RelPermalink }}';
const indexConfig = Object.assign({{ $searchConfig }}, {
includeScore: true,
useExtendedSearch: true,
fieldNormWeight: 1.5,
threshold: 0.2,
ignoreLocation: true,
keys: [
{
name: 'title',
weight: 0.7
},
{
name: 'content',
weight: 0.3
}
]
doc: {
id: 'id',
field: ['title', 'content'],
store: ['title', 'href', 'section']
}
});
const input = document.querySelector('#book-search-input');
@ -40,10 +30,6 @@
* @param {Event} event
*/
function focusSearchFieldOnKeyPress(event) {
if (event.target.value !== undefined) {
return;
}
if (input === document.activeElement) {
return;
}
@ -73,7 +59,8 @@
fetch(searchDataURL)
.then(pages => pages.json())
.then(pages => {
window.bookSearchIndex = new Fuse(pages, indexConfig);
window.bookSearchIndex = FlexSearch.create('balance', indexConfig);
window.bookSearchIndex.add(pages);
})
.then(() => input.required = false)
.then(search);
@ -88,14 +75,14 @@
return;
}
const searchHits = window.bookSearchIndex.search(input.value).slice(0,10);
const searchHits = window.bookSearchIndex.search(input.value, 10);
searchHits.forEach(function (page) {
const li = element('<li><a href></a><small></small></li>');
const a = li.querySelector('a'), small = li.querySelector('small');
a.href = page.item.href;
a.textContent = page.item.title;
small.textContent = page.item.section;
a.href = page.href;
a.textContent = page.title;
small.textContent = page.section;
results.appendChild(li);
});

View File

@ -2,6 +2,6 @@
if (navigator.serviceWorker) {
navigator.serviceWorker.register(
"{{ $swJS.RelPermalink }}",
{ scope: "{{ "./" | relURL }}" }
{ scope: "{{ "/" | relURL }}" }
);
}

View File

@ -1,4 +1,4 @@
# hugo server --minify --themesDir ../.. --baseURL=http://0.0.0.0:1313/theme/hugo-book/
# hugo server --minify --themesDir ... --baseURL=http://0.0.0.0:1313/theme/hugo-book/
baseURL = 'https://example.com/'
title = 'Hugo Book'
@ -23,18 +23,17 @@ enableGitInfo = true
[languages]
[languages.en]
languageName = 'English'
contentDir = 'content.en'
contentDir = 'content'
weight = 1
[languages.ru]
languageName = 'Russian'
contentDir = 'content.ru'
weight = 2
[languages.zh]
languageName = 'Chinese'
contentDir = 'content.zh'
weight = 2
[languages.he]
languageName = 'Hebrew'
contentDir = 'content.he'
languageDirection = 'rtl'
weight = 3
[menu]
@ -46,7 +45,7 @@ enableGitInfo = true
[[menu.after]]
name = "Hugo Themes"
url = "https://themes.gohugo.io/themes/hugo-book/"
url = "https://themes.gohugo.io/hugo-book/"
weight = 20
[params]
@ -59,14 +58,14 @@ enableGitInfo = true
# You can also specify this parameter per page in front matter.
BookToC = true
# (Optional, default favicon.png) Set the path to a favicon file.
# If the favicon is /static/favicon.png then the path would be favicon.png
# BookFavicon = 'favicon.png'
# (Optional, default none) Set the path to a logo for the book.
# If the logo is /static/logo.png then the path would be logo.png
# (Optional, default none) Set the path to a logo for the book. If the logo is
# /static/logo.png then the path would be logo.png
# BookLogo = 'logo.png'
# (Optional, default none) Set leaf bundle to render as side menu
# When not specified file structure and weights will be used
# BookMenuBundle = '/menu'
# (Optional, default docs) Specify root page to render child pages as menu.
# Page is resoled by .GetPage function: https://gohugo.io/functions/getpage/
# For backward compatibility you can set '*' to render all sections to menu. Acts same as '/'

View File

@ -1,4 +1,4 @@
# hugo server --minify --themesDir ../.. --baseURL=http://0.0.0.0:1313/theme/hugo-book/
# hugo server --minify --themesDir ... --baseURL=http://0.0.0.0:1313/theme/hugo-book/
baseURL: https://example.com/
title: Hugo Book
@ -23,16 +23,15 @@ markup:
languages:
en:
languageName: English
contentDir: content.en
contentDir: content
weight: 1
ru:
languageName: Russian
contentDir: content.ru
weight: 2
zh:
languageName: Chinese
contentDir: content.zh
weight: 2
he:
languageName: Hebrew
contentDir: content.he
languageDirection: rtl
weight: 3
menu:
@ -42,7 +41,7 @@ menu:
url: "https://github.com/alex-shpak/hugo-book"
weight: 10
- name: "Hugo Themes"
url: "https://themes.gohugo.io/themes/hugo-book/"
url: "https://themes.gohugo.io/hugo-book/"
weight: 20
params:
@ -55,14 +54,14 @@ params:
# You can also specify this parameter per page in front matter.
BookToC: true
# (Optional, default favicon.png) Set the path to a favicon file.
# If the favicon is /static/favicon.png then the path would be favicon.png
# BookFavicon: "favicon.png"
# (Optional, default none) Set the path to a logo for the book.
# If the logo is /static/logo.png then the path would be logo.png
# (Optional, default none) Set the path to a logo for the book. If the logo is
# /static/logo.png then the path would be logo.png
# BookLogo: /logo.png
# (Optional, default none) Set leaf bundle to render as side menu
# When not specified file structure and weights will be used
# BookMenuBundle: /menu
# (Optional, default docs) Specify root page to render child pages as menu.
# Page is resoled by .GetPage function: https://gohugo.io/functions/getpage/
# For backward compatibility you can set '*' to render all sections to menu. Acts same as '/'

View File

@ -0,0 +1,79 @@
---
title: ভূমিকা
type: docs
---
# বাংলা ভাষায় শুরু করুন
{{< columns >}}
## অস্ট্রিস চিপসে ফুর্তিভা
Est in vagis et Pittheus tu arge accipiter regia iram vocatur nurus. Omnes ut
olivae sensit **arma sorori** deducit, inesset **crudus**, ego vetuere aliis,
modo arsit? Utinam rapta fiducia valuere litora _adicit cursu_, ad facies
<--->
## সুইস কোটা ভোটে
Ea _furtique_ risere fratres edidit terrae magis. Colla tam mihi tenebat:
miseram excita suadent es pecudes iam. Concilio _quam_ velatus posset ait quod
nunc! Fragosis suae dextra geruntur functus vulgata.
{{< /columns >}}
## টেম্পোরার নিশি
Lorem **markdownum** emicat gestu. Cannis sol pressit ducta. **Est** Idaei,
tremens ausim se tutaeque, illi ulnis hausit, sed, lumina cutem. Quae avis
sequens!
var panel = ram_design;
if (backup + system) {
file.readPoint = network_native;
sidebar_engine_device(cell_tftp_raster,
dual_login_paper.adf_vci.application_reader_design(
graphicsNvramCdma, lpi_footer_snmp, integer_model));
}
public_keyboard_docking += error.controller_gibibyte_plug.ip(4,
asciiPetaflops, software(supercomputer_compatible_status + 4));
dynamic_disk.indexModeLaptop = bufferTftpReality;
var export_vlog_sequence = trinitron_flowchart + supercomputer_cluster_rj(
-1, toolbar_powerpoint_query, -2 / multiprocessing_impression);
## Locis suis novi cum suoque decidit eadem
Idmoniae ripis, at aves, ali missa adest, ut _et autem_, et ab? Venit spes
versus finis sermonibus patefecit murum nec est sine oculis. _Ille_ inmota
macies domoque caelestia cadit tantummodo scelus procul, corde!
1. Dolentem capi parte rostro alvum habentem pudor
2. Fulgentia sanguine paret
3. E punior consurgit lentus
4. Vox hasta eras micantes
## Facibus pharetrae indetonsusque indulsit sic incurrite foliis
Nefandam et prisci palmas! Blandita cutis flectitur montis macies, te _nati_
Latiis; turbaque inferias. Virginis tibi peracta avidusque facies caper nec, e
at ademptae, mira.
direct *= font(inputScareware(sliHome), crossplatform.byte(
ppl_encryption.excel_e_rte(integratedModelModifier), timeVirtual,
floating_speakers.media_printer(us, yahoo, primaryPhp)));
friendly_metal_flatbed(cd, isoPrimaryStorage(reader), dmaMirrored);
if (parse_flash_cron.metalGif(1, adServiceDevice, utility)) {
adf -= operation_cdma_samba;
imapGif.switch += torrent;
} else {
pmu.disk_captcha = digital_ppp_pci + recursionTransistor(5, dram);
ajax_service += grayscalePythonLock;
google_scroll_capacity = ftp + engine_dslam_sidebar / tape - 1;
}
drive_rw = zipTftp;
var suffix = software_router_extension.dimm_ddr(-5,
kernel_digital_minisite);
Vocavit toto; alas **mitis** maestus in liquidarum ab legi finitimosque dominam
tibi subitus; Orionis vertitur nota. Currere alti etiam seroque cernitis
innumeris miraturus amplectique collo sustinet quemque! Litora ante turba?

View File

@ -1,80 +0,0 @@
# Columns
Columns help organize shorter pieces of content horizontally for readability.
## Example
```html
{{%/* columns [ratio="1:1"] [class="..."] */%}} <!-- begin columns block -->
# Left Content
Lorem markdownum insigne...
<---> <!-- magic separator, between columns -->
# Mid Content
Lorem markdownum insigne...
<---> <!-- magic separator, between columns -->
# Right Content
Lorem markdownum insigne...
{{%/* /columns */%}}
```
{{% columns %}}
### Left Content
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
<--->
### Mid Content
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter!
<--->
### Right Content
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
{{% /columns %}}
## Settings size ratio for columns
```html
{{%/* columns ratio="1:2" */%}} <!-- begin columns block -->
## x1 Column
Lorem markdownum insigne...
<---> <!-- magic separator, between columns -->
## x2 Column
Lorem markdownum insigne...
{{%/* /columns */%}}
```
{{% columns ratio="1:2" %}}
### x1 Column
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
<--->
### x2 Column
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter!
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
{{% /columns %}}

View File

@ -1,16 +0,0 @@
---
bookCollapseSection: true
bookHidden: true
---
# Section
Section renders pages in section as definition list, using title and description. Optional param `summary` can be used to show or hide page summary
## Example
```tpl
{{</* section [summary] */>}}
```
{{<section summary>}}

View File

@ -1,41 +0,0 @@
---
title: Introduction
type: docs
---
# Example of RTL page
{{% columns %}}
## Astris ipse furtiva
Est in vagis et Pittheus tu arge accipiter regia iram vocatur nurus. Omnes ut
olivae sensit **arma sorori** deducit, inesset **crudus**, ego vetuere aliis,
modo arsit? Utinam rapta fiducia valuere litora _adicit cursu_, ad facies
<--->
## Suis quot vota
Ea _furtique_ risere fratres edidit terrae magis. Colla tam mihi tenebat:
miseram excita suadent es pecudes iam. Concilio _quam_ velatus posset ait quod
nunc! Fragosis suae dextra geruntur functus vulgata.
{{% /columns %}}
## Tempora nisi nunc
Lorem **markdownum** emicat gestu. Cannis sol pressit ducta. **Est** Idaei,
tremens ausim se tutaeque, illi ulnis hausit, sed, lumina cutem. Quae avis
sequens!
var panel = ram_design;
if (backup + system) {
file.readPoint = network_native;
sidebar_engine_device(cell_tftp_raster,
dual_login_paper.adf_vci.application_reader_design(
graphicsNvramCdma, lpi_footer_snmp, integer_model));
}
## Locis suis novi cum suoque decidit eadem
Idmoniae ripis, at aves, ali missa adest, ut _et autem_, et ab?

View File

@ -0,0 +1,79 @@
---
title: Введение
type: docs
---
# Стартовая страница на русском языке
{{< columns >}}
## Astris ipse furtiva
Est in vagis et Pittheus tu arge accipiter regia iram vocatur nurus. Omnes ut
olivae sensit **arma sorori** deducit, inesset **crudus**, ego vetuere aliis,
modo arsit? Utinam rapta fiducia valuere litora _adicit cursu_, ad facies
<--->
## Suis quot vota
Ea _furtique_ risere fratres edidit terrae magis. Colla tam mihi tenebat:
miseram excita suadent es pecudes iam. Concilio _quam_ velatus posset ait quod
nunc! Fragosis suae dextra geruntur functus vulgata.
{{< /columns >}}
## Tempora nisi nunc
Lorem **markdownum** emicat gestu. Cannis sol pressit ducta. **Est** Idaei,
tremens ausim se tutaeque, illi ulnis hausit, sed, lumina cutem. Quae avis
sequens!
var panel = ram_design;
if (backup + system) {
file.readPoint = network_native;
sidebar_engine_device(cell_tftp_raster,
dual_login_paper.adf_vci.application_reader_design(
graphicsNvramCdma, lpi_footer_snmp, integer_model));
}
public_keyboard_docking += error.controller_gibibyte_plug.ip(4,
asciiPetaflops, software(supercomputer_compatible_status + 4));
dynamic_disk.indexModeLaptop = bufferTftpReality;
var export_vlog_sequence = trinitron_flowchart + supercomputer_cluster_rj(
-1, toolbar_powerpoint_query, -2 / multiprocessing_impression);
## Locis suis novi cum suoque decidit eadem
Idmoniae ripis, at aves, ali missa adest, ut _et autem_, et ab? Venit spes
versus finis sermonibus patefecit murum nec est sine oculis. _Ille_ inmota
macies domoque caelestia cadit tantummodo scelus procul, corde!
1. Dolentem capi parte rostro alvum habentem pudor
2. Fulgentia sanguine paret
3. E punior consurgit lentus
4. Vox hasta eras micantes
## Facibus pharetrae indetonsusque indulsit sic incurrite foliis
Nefandam et prisci palmas! Blandita cutis flectitur montis macies, te _nati_
Latiis; turbaque inferias. Virginis tibi peracta avidusque facies caper nec, e
at ademptae, mira.
direct *= font(inputScareware(sliHome), crossplatform.byte(
ppl_encryption.excel_e_rte(integratedModelModifier), timeVirtual,
floating_speakers.media_printer(us, yahoo, primaryPhp)));
friendly_metal_flatbed(cd, isoPrimaryStorage(reader), dmaMirrored);
if (parse_flash_cron.metalGif(1, adServiceDevice, utility)) {
adf -= operation_cdma_samba;
imapGif.switch += torrent;
} else {
pmu.disk_captcha = digital_ppp_pci + recursionTransistor(5, dram);
ajax_service += grayscalePythonLock;
google_scroll_capacity = ftp + engine_dslam_sidebar / tape - 1;
}
drive_rw = zipTftp;
var suffix = software_router_extension.dimm_ddr(-5,
kernel_digital_minisite);
Vocavit toto; alas **mitis** maestus in liquidarum ab legi finitimosque dominam
tibi subitus; Orionis vertitur nota. Currere alti etiam seroque cernitis
innumeris miraturus amplectique collo sustinet quemque! Litora ante turba?

View File

@ -5,7 +5,7 @@ type: docs
# 中文索引页
{{% columns %}}
{{< columns >}}
## Astris ipse furtiva
Est in vagis et Pittheus tu arge accipiter regia iram vocatur nurus. Omnes ut
@ -19,7 +19,7 @@ modo arsit? Utinam rapta fiducia valuere litora _adicit cursu_, ad facies
Ea _furtique_ risere fratres edidit terrae magis. Colla tam mihi tenebat:
miseram excita suadent es pecudes iam. Concilio _quam_ velatus posset ait quod
nunc! Fragosis suae dextra geruntur functus vulgata.
{{% /columns %}}
{{< /columns >}}
## Tempora nisi nunc

View File

@ -5,7 +5,7 @@ type: docs
# Acerbo datus maxime
{{% columns %}}
{{< columns >}}
## Astris ipse furtiva
Est in vagis et Pittheus tu arge accipiter regia iram vocatur nurus. Omnes ut
@ -19,7 +19,7 @@ modo arsit? Utinam rapta fiducia valuere litora _adicit cursu_, ad facies
Ea _furtique_ risere fratres edidit terrae magis. Colla tam mihi tenebat:
miseram excita suadent es pecudes iam. Concilio _quam_ velatus posset ait quod
nunc! Fragosis suae dextra geruntur functus vulgata.
{{% /columns %}}
{{< /columns >}}
## Tempora nisi nunc

View File

@ -9,5 +9,5 @@ Buttons are styled links that can lead to local page or external link.
{{</* button href="https://github.com/alex-shpak/hugo-book" */>}}Contribute{{</* /button */>}}
```
{{<button relref="/">}}Get Home{{</button>}}
{{<button href="https://github.com/alex-shpak/hugo-book">}}Contribute{{</button>}}
{{< button relref="/" >}}Get Home{{< /button >}}
{{< button href="https://github.com/alex-shpak/hugo-book" >}}Contribute{{< /button >}}

View File

@ -0,0 +1,45 @@
# Columns
Columns help organize shorter pieces of content horizontally for readability.
```html
{{</* columns */>}} <!-- begin columns block -->
# Left Content
Lorem markdownum insigne...
<---> <!-- magic separator, between columns -->
# Mid Content
Lorem markdownum insigne...
<---> <!-- magic separator, between columns -->
# Right Content
Lorem markdownum insigne...
{{</* /columns */>}}
```
## Example
{{< columns >}}
## Left Content
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
<--->
## Mid Content
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter!
<--->
## Right Content
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
{{< /columns >}}

View File

@ -4,19 +4,19 @@ Details shortcode is a helper for `details` html5 element. It is going to replac
## Example
```tpl
{{%/* details "Title" [open] */%}}
{{</* details "Title" [open] */>}}
## Markdown content
Lorem markdownum insigne...
{{%/* /details */%}}
{{</* /details */>}}
```
```tpl
{{%/* details title="Title" open=true */%}}
{{</* details title="Title" open=true */>}}
## Markdown content
Lorem markdownum insigne...
{{%/* /details */%}}
{{</* /details */>}}
```
{{% details "Title" open %}}
{{< details "Title" open >}}
## Markdown content
Lorem markdownum insigne...
{{% /details %}}
{{< /details >}}

View File

@ -0,0 +1,35 @@
# Expand
Expand shortcode can help to decrease clutter on screen by hiding part of text. Expand content by clicking on it.
## Example
### Default
```tpl
{{</* expand */>}}
## Markdown content
Lorem markdownum insigne...
{{</* /expand */>}}
```
{{< expand >}}
## Markdown content
Lorem markdownum insigne...
{{< /expand >}}
### With Custom Label
```tpl
{{</* expand "Custom Label" "..." */>}}
## Markdown content
Lorem markdownum insigne...
{{</* /expand */>}}
```
{{< expand "Custom Label" "..." >}}
## Markdown content
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
{{< /expand >}}

View File

@ -4,29 +4,29 @@ Hint shortcode can be used as hint/alerts/notification block.
There are 3 colors to choose: `info`, `warning` and `danger`.
```tpl
{{%/* hint [info|warning|danger] */%}}
{{</* hint [info|warning|danger] */>}}
**Markdown content**
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
{{%/* /hint */%}}
{{</* /hint */>}}
```
## Example
{{% hint info %}}
{{< hint info >}}
**Markdown content**
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
{{% /hint %}}
{{< /hint >}}
{{% hint warning %}}
{{< hint warning >}}
**Markdown content**
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
{{% /hint %}}
{{< /hint >}}
{{% hint danger %}}
{{< hint danger >}}
**Markdown content**
Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
{{% /hint %}}
{{< /hint >}}

View File

@ -1,31 +1,28 @@
---
title: KaTeX
---
# KaTeX
KaTeX shortcode let you render math typesetting in markdown document. See [KaTeX](https://katex.org/)
## Example
{{% columns %}}
{{< columns >}}
```latex
{{</* katex display=true >}}
{{</* katex [display] [class="text-center"] */>}}
f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi
{{< /katex */>}}
{{</* /katex */>}}
```
<--->
{{< katex display=true >}}
{{< katex display >}}
f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi
{{< /katex >}}
{{% /columns %}}
{{< /columns >}}
## Display Mode Example
Here is some inline example: {{< katex >}}\pi(x){{< /katex >}}, rendered in the same line. And below is `display` example, having `display: block`
{{< katex display=true >}}
{{< katex display >}}
f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi
{{< /katex >}}
Text continues here.

View File

@ -2,19 +2,18 @@
[MermaidJS](https://mermaid-js.github.io/) is library for generating svg charts and diagrams from text.
{{% hint info %}}
**Override Mermaid initialization config**
{{< hint info >}}
**Override Mermaid Initialization Config**
To override the [initialization config](https://mermaid-js.github.io/mermaid/#/Setup) for Mermaid,
create a `mermaid.json` file in your `assets` folder!
{{% /hint %}}
{{< /hint >}}
## Example
{{% columns %}}
{{< columns >}}
```tpl
{{</* mermaid [class="..."] >}}
{{</* mermaid [class="text-center"]*/>}}
stateDiagram-v2
State1: The state with a note
note right of State1
@ -23,12 +22,12 @@ stateDiagram-v2
end note
State1 --> State2
note left of State2 : This is the note to the left.
{{< /mermaid */>}}
{{</* /mermaid */>}}
```
<--->
{{<mermaid>}}
{{< mermaid >}}
stateDiagram-v2
State1: The state with a note
note right of State1
@ -37,6 +36,6 @@ stateDiagram-v2
end note
State1 --> State2
note left of State2 : This is the note to the left.
{{</mermaid>}}
{{< /mermaid >}}
{{% /columns %}}
{{< /columns >}}

View File

@ -0,0 +1,15 @@
---
bookCollapseSection: true
---
# Section
Section renders pages in section as definition list, using title and description.
## Example
```tpl
{{</* section */>}}
```
{{<section>}}

View File

@ -3,18 +3,17 @@
Tabs let you organize content by context, for example installation instructions for each supported platform.
```tpl
{{</* tabs "id" */>}}
{{%/* tab "MacOS" */%}} # MacOS Content {{%/* /tab */%}}
{{%/* tab "Linux" */%}} # Linux Content {{%/* /tab */%}}
{{%/* tab "Windows" */%}} # Windows Content {{%/* /tab */%}}
{{</* tabs "uniqueid" */>}}
{{</* tab "MacOS" */>}} # MacOS Content {{</* /tab */>}}
{{</* tab "Linux" */>}} # Linux Content {{</* /tab */>}}
{{</* tab "Windows" */>}} # Windows Content {{</* /tab */>}}
{{</* /tabs */>}}
```
## Example
{{< tabs >}}
{{% tab "MacOS" %}}
{{< tabs "uniqueid" >}}
{{< tab "MacOS" >}}
# MacOS
This is tab **MacOS** content.
@ -23,9 +22,10 @@ Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
{{% /tab %}}
{{< /tab >}}
{{< tab "Linux" >}}
{{% tab "Linux" %}}
# Linux
This is tab **Linux** content.
@ -34,9 +34,10 @@ Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
{{% /tab %}}
{{< /tab >}}
{{< tab "Windows" >}}
{{% tab "Windows" %}}
# Windows
This is tab **Windows** content.
@ -45,6 +46,5 @@ Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat
stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa
protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes.
Miseratus fonte Ditis conubia.
{{% /tab %}}
{{< /tab >}}
{{< /tabs >}}

View File

@ -0,0 +1,22 @@
---
headless: true
---
- [**Example Site**]({{< relref "/docs/example" >}})
- [Table of Contents]({{< relref "/docs/example/table-of-contents" >}})
- [With ToC]({{< relref "/docs/example/table-of-contents/with-toc" >}})
- [Without ToC]({{< relref "/docs/example/table-of-contents/without-toc" >}})
- [Collapsed]({{< relref "/docs/example/collapsed" >}})
- [3rd]({{< relref "/docs/example/collapsed/3rd-level" >}})
- [4th]({{< relref "/docs/example/collapsed/3rd-level/4th-level" >}})
<br />
- **Shortcodes**
- [Buttons]({{< relref "/docs/shortcodes/buttons" >}})
- [Columns]({{< relref "/docs/shortcodes/columns" >}})
- [Expand]({{< relref "/docs/shortcodes/expand" >}})
- [Hints]({{< relref "/docs/shortcodes/hints" >}})
- [Katex]({{< relref "/docs/shortcodes/katex" >}})
- [Mermaid]({{< relref "/docs/shortcodes/mermaid" >}})
- [Tabs]({{< relref "/docs/shortcodes/tabs" >}})
<br />

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"Target":"book.min.ad694c0f1601cd801d432bdb4a6abae57aa202e0cec7e44e2f6ab46fbe7b628c.css","MediaType":"text/css","Data":{"Integrity":"sha256-rWlMDxYBzYAdQyvbSmq65XqiAuDOx+ROL2q0b757Yow="}}

3
go.mod
View File

@ -1,3 +0,0 @@
module github.com/alex-shpak/hugo-book
go 1.16

View File

@ -1,14 +0,0 @@
- id: Search
translation: ፈልግ
- id: Edit this page
translation: ይህንን ገጽ አስተካክል
- id: Last modified by
translation: መጨረሻ የከለሰው ሰው
- id: Expand
translation: አስፋ
- id: bookSearchConfig
translation: '{ cache: true }'

View File

@ -8,7 +8,7 @@
translation: Última modificación por
- id: Expand
translation: Expandir
translation: Expand
- id: bookSearchConfig
translation: '{ cache: true }'

View File

@ -1,14 +0,0 @@
- id: Search
translation: חיפוש
- id: Edit this page
translation: ערוך דף זה
- id: Last modified by
translation: נערך לאחרונה על ידי
- id: Expand
translation: הרחב
- id: bookSearchConfig
translation: '{ cache: true }'

View File

@ -1,14 +0,0 @@
- id: Search
translation: Zoeken
- id: Edit this page
translation: Bewerk deze pagina
- id: Last modified by
translation: Laatst gewijzigd door
- id: Expand
translation: Uitbreiden
- id: bookSearchConfig
translation: '{ cache: true }'

View File

@ -1,14 +0,0 @@
- id: Search
translation: Recercar
- id: Edit this page
translation: Modificar aquesta pagina
- id: Last modified by
translation: Darrièra modificacion per
- id: Expand
translation: Desplegar
- id: bookSearchConfig
translation: '{ cache: true }'

View File

@ -1,14 +0,0 @@
- id: Search
translation: Szukaj
- id: Edit this page
translation: Edytuj stronę
- id: Last modified by
translation: Ostatnia modyfikacja
- id: Expand
translation: Rozwiń
- id: bookSearchConfig
translation: '{ cache: true }'

View File

@ -1,14 +0,0 @@
- id: Search
translation: Buscar
- id: Edit this page
translation: Editar página
- id: Last modified by
translation: Última modificação por
- id: Expand
translation: Expandir
- id: bookSearchConfig
translation: '{ cache: true }'

View File

@ -1,5 +1,5 @@
- id: Search
translation: Pesquisar
translation: Buscar
- id: Edit this page
translation: Editar página

View File

@ -8,7 +8,6 @@
<style>
.not-found {
text-align: center;
font-family: 'Consolas', monospace;
}
.not-found h1 {
margin: .25em 0 0 0;
@ -30,6 +29,7 @@
</main>
{{ partial "docs/inject/body" . }}
{{ template "_internal/google_analytics_async.html" . }}
</body>
</html>

View File

@ -7,8 +7,7 @@
{{- define "portable-link" -}}
{{- $destination := .Destination }}
{{- $isRemote := or (in .Destination ":") (strings.HasPrefix .Destination "//") }}
{{- $isFragment := strings.HasPrefix .Destination "#" }}
{{- if and (not $isRemote) (not $isFragment) }}
{{- if not $isRemote }}
{{- $url := urls.Parse .Destination }}
{{- $path := strings.TrimSuffix "/_index.md" $url.Path }}
{{- $path = strings.TrimSuffix "/_index" $path }}

View File

@ -1,10 +1,10 @@
<!DOCTYPE html>
<html lang="{{ default .Site.Language.Lang .Site.LanguageCode }}" dir="{{ default "ltr" .Site.Language.LanguageDirection }}">
<html lang="{{ .Site.Language.Lang }}" dir="{{ .Site.Language.LanguageDirection | default "ltr" }}">
<head>
{{ partial "docs/html-head" . }}
{{ partial "docs/inject/head" . }}
</head>
<body dir="{{ default "ltr" .Site.Language.LanguageDirection }}">
<body dir="{{ .Site.Language.LanguageDirection | default "ltr" }}">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
@ -73,7 +73,7 @@
{{ end }}
{{ define "main" }}
<article class="markdown book-article">
<article class="markdown">
{{- .Content -}}
</article>
{{ end }}

View File

@ -1,7 +1,7 @@
<h2 class="book-brand">
<a class="flex align-center" href="{{ cond (not .Site.Home.File) .Sites.Default.Home.RelPermalink .Site.Home.RelPermalink }}">
<a class="flex align-center" href="{{ cond (not .Site.Home.File) .Sites.First.Home.RelPermalink .Site.Home.RelPermalink }}">
{{- with .Site.Params.BookLogo -}}
<img src="{{ . | relURL }}" alt="Logo" class="book-icon" />
<img src="{{ . | relURL }}" alt="Logo" />
{{- end -}}
<span>{{ .Site.Title }}</span>
</a>

View File

@ -3,4 +3,4 @@
Usage: partial "docs/date" (dict "Date" .Date "Format" .Site.Params.BookDateFormat)
-->
{{- $format := default "January 2, 2006" .Format -}}
{{- return (time.Format $format .Date) -}}
{{- return (.Date.Format $format) -}}

View File

@ -1,26 +1,25 @@
<div class="flex flex-wrap justify-between">
{{ if and .GitInfo .Site.Params.BookRepo }}
<div>
{{- $date := partial "docs/date" (dict "Date" .GitInfo.AuthorDate.Local "Format" .Site.Params.BookDateFormat) -}}
<a class="flex align-center" href="{{ partial "docs/links/commit" . }}" title='{{ i18n "Last modified by" }} {{ .GitInfo.AuthorName }} | {{ $date }}' target="_blank" rel="noopener">
<img src="{{ "svg/calendar.svg" | relURL }}" class="book-icon" alt="" />
<span>{{ $date }}</span>
</a>
</div>
{{- $date := partial "docs/date" (dict "Date" .GitInfo.AuthorDate.Local "Format" .Site.Params.BookDateFormat) -}}
{{- $commitPath := default "commit" .Site.Params.BookCommitPath -}}
<a class="flex align-center" href="{{ .Site.Params.BookRepo }}/{{ $commitPath }}/{{ .GitInfo.Hash }}" title='{{ i18n "Last modified by" }} {{ .GitInfo.AuthorName }} | {{ $date }}' target="_blank" rel="noopener">
<img src="{{ "svg/calendar.svg" | relURL }}" class="book-icon" alt="Calendar" />
<span>{{ $date }}</span>
</a>
{{ end }}
{{ if and .File .Site.Params.BookRepo .Site.Params.BookEditPath }}
<div>
<a class="flex align-center" href="{{ partial "docs/links/edit" . }}" target="_blank" rel="noopener">
<img src="{{ "svg/edit.svg" | relURL }}" class="book-icon" alt="" />
<span>{{ i18n "Edit this page" }}</span>
</a>
</div>
<a class="flex align-center" href="{{ .Site.Params.BookRepo }}/{{ .Site.Params.BookEditPath }}/{{ .Site.Params.contentDir | default "content" }}/{{ replace .File.Path "\\" "/" }}" target="_blank" rel="noopener">
<img src="{{ "svg/edit.svg" | relURL }}" class="book-icon" alt="Edit" />
<span>{{ i18n "Edit this page" }}</span>
</a>
{{ end }}
</div>
{{ partial "docs/prev-next" . }}
{{ $script := resources.Get "clipboard.js" | resources.Minify }}
{{ with $script.Content }}
<script>{{ . | safeJS }}</script>

View File

@ -3,7 +3,7 @@
<img src="{{ "svg/menu.svg" | relURL }}" class="book-icon" alt="Menu" />
</label>
<h3>{{ partial "docs/title" . }}</h3>
<strong>{{ partial "docs/title" . }}</strong>
<label for="toc-control">
{{ if default true (default .Site.Params.BookToC .Params.BookToC) }}

View File

@ -1 +0,0 @@
<link rel="icon" href="{{ .Site.Params.BookFavicon | default "favicon.png" | relURL }}" >

View File

@ -1 +0,0 @@
{{ partial "docs/title" . }} | {{ .Site.Title -}}

View File

@ -1,34 +1,28 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{{ default .Summary .Description }}">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#343a40">
<meta name="color-scheme" content="light dark">
{{- with .Page.Params.BookHref -}}
<meta http-equiv="Refresh" content="0; url='{{ . }}'" />
{{- end -}}
<meta name="theme-color" content="#FFFFFF">
{{- template "_internal/opengraph.html" . -}}
<title>{{ partial "docs/html-head-title" . }}</title>
{{ partial "docs/html-head-favicon" . }}
<title>{{ partial "docs/title" . }} | {{ .Site.Title -}}</title>
{{- $manifest := resources.Get "manifest.json" | resources.ExecuteAsTemplate "manifest.json" . }}
<link rel="manifest" href="{{ $manifest.RelPermalink }}">
<link rel="canonical" href="{{ .Permalink }}">
<link rel="icon" href="{{ "favicon.png" | relURL }}" type="image/x-icon">
{{- range .Translations }}
<link rel="alternate" hreflang="{{ default .Site.LanguageCode .Language.Lang }}" href="{{ .Permalink }}" title="{{ partial "docs/title" . }}">
<link rel="alternate" hreflang="{{ .Language.Lang }}" href="{{ .Permalink }}" title="{{ partial "docs/title" . }}">
{{- end -}}
<!-- Theme stylesheet, you can customize scss by creating `assets/custom.scss` in your website -->
{{- $styles := resources.Get "book.scss" | resources.ExecuteAsTemplate "book.scss" . | css.Sass | resources.Minify | resources.Fingerprint }}
{{- $styles := resources.Get "book.scss" | resources.ExecuteAsTemplate "book.scss" . | resources.ToCSS | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $styles.RelPermalink }}" {{ template "integrity" $styles }}>
{{- if default true .Site.Params.BookSearch -}}
{{- $searchJSFile := printf "%s.search.js" .Language.Lang }}
{{- $searchJS := resources.Get "search.js" | resources.ExecuteAsTemplate $searchJSFile . | resources.Minify | resources.Fingerprint }}
<script defer src="{{ "fuse.min.js" | relURL }}"></script>
<script defer src="{{ "flexsearch.min.js" | relURL }}"></script>
<script defer src="{{ $searchJS.RelPermalink }}" {{ template "integrity" $searchJS }}></script>
{{ end -}}
@ -37,7 +31,7 @@
<script defer src="{{ $swJS.RelPermalink }}" {{ template "integrity" $swJS }}></script>
{{ end -}}
{{- template "_internal/google_analytics.html" . -}}
{{- template "_internal/google_analytics_async.html" . -}}
<!-- RSS -->
{{- with .OutputFormats.Get "rss" -}}

View File

@ -23,7 +23,7 @@
<ul>
{{ range .Site.Languages }}{{ with index $translations .Lang }}
<li>
<a href="{{ cond hugo.IsMultihost .Permalink .RelPermalink }}">
<a href="{{ .Permalink }}">
{{ .Language.LanguageName }}
</a>
</li>

View File

@ -1,2 +0,0 @@
{{- $commitPath := default "commit" .Site.Params.BookCommitPath -}}
{{- .Site.Params.BookRepo }}/{{ $commitPath }}/{{ .GitInfo.Hash -}}

View File

@ -1,2 +0,0 @@
{{- $bookFilePath := (strings.TrimPrefix hugo.WorkingDir .Page.File.Filename | path.Join) -}}
{{- .Site.Params.BookRepo }}/{{ .Site.Params.BookEditPath }}{{ ($bookFilePath) -}}

View File

@ -0,0 +1,5 @@
{{ with .Site.GetPage .Site.Params.BookMenuBundle }}
{{- $href := printf "href=\"%s\"" $.RelPermalink -}}
{{- replace .Content $href (print $href "class=active") | safeHTML -}}
{{- warnf "Bundle menu mode is deprecated and will be removed" -}}
{{ end }}

View File

@ -9,7 +9,7 @@
{{ define "book-section-children" }}{{/* (dict "Section" .Section "CurrentPage" .CurrentPage) */}}
<ul>
{{ range (where .Section.Pages "Params.bookHidden" "ne" true) }}
{{ range (where .Section.Pages "Params.bookhidden" "ne" true) }}
{{ if .IsSection }}
<li {{- if .Params.BookFlatSection }} class="book-section-flat" {{ end -}}>
{{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
@ -28,19 +28,15 @@
{{ $current := eq .CurrentPage .Page }}
{{ $ancestor := .Page.IsAncestor .CurrentPage }}
{{ if .Page.Params.BookCollapseSection }}
{{ if .Page.Params.bookCollapseSection }}
<input type="checkbox" id="section-{{ md5 .Page }}" class="toggle" {{ if or $current $ancestor }}checked{{ end }} />
<label for="section-{{ md5 .Page }}" class="flex justify-between">
<a {{ if .Page.Content }}href="{{ .Page.RelPermalink }}"{{ else }}role="button"{{ end }} class="{{ if $current }}active{{ end }}">
<a {{ if .Page.Content }}href="{{ .Page.Permalink }}"{{ else }}role="button"{{ end }} class="{{ if $current }}active{{ end }}">
{{- partial "docs/title" .Page -}}
</a>
</label>
{{ else if .Page.Params.BookHref }}
<a href="{{ .Page.Params.BookHref }}" class="{{ if $current }}active{{ end }}" target="_blank" rel="noopener">
{{- partial "docs/title" .Page -}}
</a>
{{ else if .Page.Content }}
<a href="{{ .Page.RelPermalink }}" class="{{ if $current }}active{{ end }}">
<a href="{{ .Page.Permalink }}" class="{{ if $current }} active{{ end }}">
{{- partial "docs/title" .Page -}}
</a>
{{ else }}

View File

@ -10,7 +10,7 @@
<ul>
{{ range . }}
<li>
<a href="{{ .URL }}" {{ with .Params.class }}class="{{ . }}"{{ end }} {{ if not .Page }}target="_blank" rel="noopener"{{ end }}>
<a href="{{ .URL }}" {{ if not .Page }}target="_blank" rel="noopener"{{ end }}>
{{- .Pre -}}
{{ with .Page }}
{{ partial "docs/title" .Page }}

View File

@ -1,14 +1,18 @@
<nav>
{{ partial "docs/brand" . }}
{{ partial "docs/search" . }}
{{ if hugo.IsMultilingual }}
{{ if .Site.IsMultiLingual }}
{{ partial "docs/languages" . }}
{{ end }}
{{ partial "docs/inject/menu-before" . }}
{{ partial "docs/menu-hugo" .Site.Menus.before }}
{{ partial "docs/menu-filetree" . }}
{{ if .Site.Params.BookMenuBundle }}
{{ partial "docs/menu-bundle" . }}
{{ else }}
{{ partial "docs/menu-filetree" . }}
{{ end }}
{{ partial "docs/menu-hugo" .Site.Menus.after }}
{{ partial "docs/inject/menu-after" . }}

View File

@ -1,16 +1,23 @@
{{ with .Date }}
<div class="flex align-center text-small book-post-date">
<img src="{{ "svg/calendar.svg" | relURL }}" class="book-icon " alt="" />
<span>{{ partial "docs/date" (dict "Date" . "Format" $.Site.Params.BookDateFormat) }}</span>
</div>
<h5>{{ partial "docs/date" (dict "Date" . "Format" $.Site.Params.BookDateFormat) }}</h5>
{{ end }}
{{ range $taxonomy, $_ := .Site.Taxonomies }}
{{ with $terms := $.GetTerms $taxonomy }}
<div class="text-small">
<div>
{{ range $n, $term := $terms }}{{ if $n }}, {{ end }}
<a href="{{ $term.RelPermalink }}">{{ $term.Title }}</a>
{{- end }}
</div>
{{ end }}
{{ end }}
{{ if .Params.image }}
<p>
{{ with .Resources.GetMatch .Params.image }}
<img src={{ .RelPermalink }} />
{{ else }}
<img src={{ .Params.image | relURL }} />
{{ end }}
</p>
{{ end }}

View File

@ -0,0 +1,14 @@
{{ $scratch := newScratch }}
{{ template "recurse" (dict "Scratch" $scratch "Sections" .) }}
{{ define "recurse" }}
{{ range .Sections }}
{{ if and .Content (not .Params.BookHidden) }}
{{ $.Scratch.Add "BookPages" (slice .) }}
{{ end }}
{{ if .IsSection }}
{{ template "recurse" (dict "Scratch" $.Scratch "Sections" .Pages) }}
{{ end }}
{{ end }}
{{ end }}
{{ return $scratch.Get "BookPages" }}

View File

@ -0,0 +1,27 @@
{{ $bookSection := default "docs" .Site.Params.BookSection }}
{{ if eq $bookSection "*" }}
{{ $bookSection = "/" }}{{/* Backward compatibility */}}
{{ end }}
{{ with .Site.GetPage $bookSection }}
{{ $pages := partialCached "docs/prev-next-cache" .Pages }}
{{ $prev := $pages.Next $ }}
{{ $next := $pages.Prev $ }}
{{- if or $prev $next }}
<div class="flex flex-wrap justify-between">
{{ with $prev }}
<a href="{{ .RelPermalink }}" class="flex align-center float-left book-icon">
<img src="{{ "svg/backward.svg" | relURL }}" alt="Previous" title="{{ partial "docs/title" . }}" />
<span>{{ partial "docs/title" . }}</span>
</a>
{{ end }}
{{ with $next }}
<a href="{{ .RelPermalink }}" class="flex align-center float-right book-icon">
<span>{{ partial "docs/title" . }}</span>
<img src="{{ "svg/forward.svg" | relURL }}" alt="Next" title="{{ partial "docs/title" . }}" />
</a>
{{ end }}
</div>
{{ end -}}
{{ end }}

View File

@ -1,8 +1,7 @@
{{ if default true .Site.Params.BookSearch }}
<div class="book-search hidden">
<div class="book-search">
<input type="text" id="book-search-input" placeholder="{{ i18n "Search" }}" aria-label="{{ i18n "Search" }}" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<script>document.querySelector(".book-search").classList.remove("hidden")</script>
{{ end }}

View File

@ -4,9 +4,7 @@
-->
{{ $title := "" }}
{{ if .LinkTitle }}
{{ $title = .LinkTitle }}
{{ else if .Title }}
{{ if .Title }}
{{ $title = .Title }}
{{ else if and .IsSection .File }}
{{ $title = path.Base .File.Dir | humanize | title }}

View File

@ -5,12 +5,12 @@
<a href="{{ .RelPermalink }}">{{ partial "docs/title.html" . }}</a>
</h2>
{{ partial "docs/post-meta" . }}
<div class="book-post-content">
<p>
{{- .Summary -}}
{{ if .Truncated }}
<a href="{{ .RelPermalink }}">...</a>
{{ end }}
</div>
</p>
</article>
{{ end }}

View File

@ -1,12 +1,10 @@
{{ define "main" }}
<article class="markdown book-post">
<article class="markdown">
<h1>
{{ partial "docs/title.html" . }}
<a href="{{ .RelPermalink }}">{{ partial "docs/title.html" . }}</a>
</h1>
{{ partial "docs/post-meta" . }}
<div class="book-post-content">
{{- .Content -}}
</div>
{{- .Content -}}
</article>
{{ end }}

View File

@ -1,12 +1,12 @@
{{- $ref := "" }}
{{- $target := "" -}}
{{- with .Get "href" -}}
{{- $ref = . -}}
{{- $target = "_blank" -}}
{{- end -}}
{{- with .Get "relref" -}}
{{- $ref = relref $ . -}}
{{- end -}}
{{ $ref := "" }}
{{ $target := "" }}
{{ with .Get "href" }}
{{ $ref = . }}
{{ $target = "_blank" }}
{{ end }}
{{ with .Get "relref" }}
{{ $ref = relref $ . }}
{{ end }}
<a {{ with $ref }} href="{{.}}" {{ end }} {{ with $target }} target="{{.}}" rel="noopener" {{ end }} class="book-btn{{ with .Get "class" }} {{ . }}{{ end }}">
{{- .InnerDeindent -}}
{{ $.Inner | markdownify }}
</a>

View File

@ -1,9 +1,7 @@
{{- $ratio := (split (.Get "ratio") ":") -}}
<div class="book-columns flex flex-wrap{{ with .Get "class" }} {{ . }}{{ end }}">
{{ range $index, $content := split .InnerDeindent "<--->" }}
{{- $grow := default 1 (index $ratio $index) -}}
<div class="flex-even markdown-inner" style="flex-grow: {{ $grow }};">
{{ $content | safeHTML }}
<div class="book-columns flex flex-wrap">
{{ range split .Inner "<--->" }}
<div class="flex-even markdown-inner">
{{ . | $.Page.RenderString }}
</div>
{{ end }}
</div>

View File

@ -1,7 +1,6 @@
<details {{ if or (.Get "open") (in .Params "open") }}open{{ end }}>
{{- $summary := cond .IsNamedParams (.Get "title") (.Get 0) -}}
<summary>{{ $summary }}</summary>
<summary>{{ cond .IsNamedParams (.Get "title") (.Get 0) }}</summary>
<div class="markdown-inner">
{{ .InnerDeindent | safeHTML }}
{{ .Inner | markdownify }}
</div>
</details>

View File

@ -0,0 +1,13 @@
{{ warnf "Expand shortcode is deprecated. Use 'details' instead." }}
<div class="book-expand">
<label>
<div class="book-expand-head flex justify-between">
<span>{{ default (i18n "Expand") (.Get 0) }}</span>
<span>{{ default "↕" (.Get 1) }}</span>
</div>
<input type="checkbox" class="hidden" />
<div class="book-expand-content markdown-inner">
{{ .Inner | markdownify }}
</div>
</label>
</div>

View File

@ -1,3 +1,3 @@
<blockquote class="book-hint {{ .Get 0 }}">
{{ .Inner | safeHTML }}
{{ .Inner | markdownify }}
</blockquote>

View File

@ -1 +0,0 @@
{{- .Inner | safeHTML -}}

View File

@ -1,2 +0,0 @@
{{- $content := .Get 0 -}}
{{- default $content (i18n $content) -}}

View File

@ -1,5 +1,5 @@
{{- if not (.Page.Scratch.Get "katex") -}}
<!-- Include katex only first time -->
<!-- Include katext only first time -->
<link rel="stylesheet" href="{{ "katex/katex.min.css" | relURL }}" />
<script defer src="{{ "katex/katex.min.js" | relURL }}"></script>
<script defer src="{{ "katex/auto-render.min.js" | relURL }}" onload="renderMathInElement(document.body);"></script>
@ -7,7 +7,7 @@
{{- end -}}
<span {{- with .Get "class" }} class="{{ . }}"{{ end }}>
{{ with .Get "display" }}\[{{else}}\({{end}}
{{- .InnerDeindent -}}
{{ with .Get "display" }}\]{{else}}\){{end}}
{{ cond (in .Params "display") "\\[" "\\(" -}}
{{- trim .Inner "\n" -}}
{{- cond (in .Params "display") "\\]" "\\)" }}
</span>

View File

@ -7,6 +7,6 @@
{{ .Page.Scratch.Set "mermaid" true }}
{{ end }}
<pre class="mermaid{{ with .Get "class" }} {{ . }}{{ end }}">
<p class="mermaid{{ with .Get "class" }} {{ . }}{{ end }}">
{{- .Inner -}}
</pre>
</p>

View File

@ -1,13 +1,10 @@
{{- warnf "Section shortcode is deprecated and will be removed" -}}
<dl>
{{ range .Page.Pages }}
<dt>
<a href="{{ .RelPermalink }}">{{ partial "docs/title" . }}</a>
</dt>
{{ if (in $.Params "summary") -}}
<dd class="markdown-inner">
{{ default .Summary .Description }}
</dd>
{{ end -}}
{{ end }}
</dl>

View File

@ -1,9 +1,12 @@
{{- $group := printf "tabs-%v" (default .Parent.Ordinal (.Parent.Get 0)) -}}
{{- $tab := printf "%s-%d" $group .Ordinal }}
<input type="radio" class="toggle" name="{{ $group }}" id="{{ $tab }}" {{ if not .Ordinal }}checked="checked"{{ end }} />
<label for="{{ $tab }}">
{{- .Get 0 -}}
</label>
<div class="book-tabs-content markdown-inner">
{{- .Inner -}}
</div>
{{ if .Parent }}
{{ $name := .Get 0 }}
{{ $group := printf "tabs-%s" (.Parent.Get 0) }}
{{ if not (.Parent.Scratch.Get $group) }}
{{ .Parent.Scratch.Set $group slice }}
{{ end }}
{{ .Parent.Scratch.Add $group (dict "Name" $name "Content" .Inner) }}
{{ else }}
{{ errorf "%q: 'tab' shortcode must be inside 'tabs' shortcode" .Page.Path }}
{{ end}}

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