damnit four

This commit is contained in:
Camille Frantz 2024-10-28 16:26:25 -05:00
parent 44ad8cb367
commit 7966b0bcff
Signed by: fyrfli
SSH Key Fingerprint: SHA256:cyNGncrLxKXAgYC96dYNROnQKikLInzrpiMraZdqyhY
71 changed files with 4338 additions and 0 deletions

16
themes/kiera/.gitignore vendored Normal file
View File

@ -0,0 +1,16 @@
public/
npm_modules/
node_modules/
.npm
bower_components
trash
Error.log
.DS_Store
.sass-cache
.tmp
.rvmrc
.trashes
.data
.config
.hugo_build.lock
*~

23
themes/kiera/CHANGELOG.md Normal file
View File

@ -0,0 +1,23 @@
# Thursday, 21 November 2019
* Added support for a [stackoverflow](//stackoverflow.com) icon and link (thanks @alfredocambera).
# Thursday, 7 November 2019
Changed the custom RSS feed so it only includes pages from mainSection. This will mean the feed emulates the content of the front page.
# Monday, 4 November 2019
* Fixed a small bug with displaying metadata. This change (of logic) will make the theme work as expected: if you set `meta = false` in frontmatter, meta data won't be displayed, if you set `meta = true` it will. However, this change may change sites which had worked around the previous bug.
* **NEW** support for opengraph and twitter cards. You can configure the image displayed on either a per-site basis by setting `.Site.Params.images` in the config file, or on a per-page basis in the frontmatter. For more details see [the Hugo Docs](https://gohugo.io/templates/internal/#open-graph)
# Sunday, 3 November 2019
* Added favicon support through `.Site.Params.favicon`
* [Fixed comments icon](https://github.com/funkydan2/hugo-kiera/pull/3) (thanks @tobiaszheller)
# Monday, 23 September 2019
* Custom CSS support through config.toml/yaml/json
* Fixed Customised RSS
* Implemented `partialCached` to decrease build times
* Added CSS Styling for contact form text boxes and buttons.
# Saturday, 21 September 2019
* Moved Fontawesome to use Kits
* Updated README.md

20
themes/kiera/LICENSE.md Normal file
View File

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

239
themes/kiera/README.md Normal file
View File

@ -0,0 +1,239 @@
# Kiera Theme for Hugo
Kiera is the theme specialized in presenting writing layout like long essay or technical writing.
It was originally developed by [b. avianto](https://github.com/avianto/hugo-kiera) and now maintained by [funkydan2](//github.com/funkydan2/)
![Screenshot](https://github.com/funkydan2/hugo-kiera/raw/master/images/screenshot.png)
- [Kiera Theme for Hugo](#kiera-theme-for-hugo)
- [Main Features](#main-features)
- [Demo](#demo)
- [Installation](#installation)
- [Update the theme](#update-the-theme)
- [git submodule method](#git-submodule-method)
- [independent directory method](#independent-directory-method)
- [Configuration](#configuration)
- [Menus](#menus)
- [Categories & Tags](#categories--tags)
- [Images](#images)
- [Code highlight](#code-highlight)
- [Font Awesome icons](#font-awesome-icons)
- [Mathematics](#mathematics)
- [Commenting](#static-commenting)
- [Support and Pull Requests](#support-and-pull-requests)
## Main Features
- Simple, 'no-nonsense' styling.
- 4 image placements with `figure` support using shortcodes.
- (Optional) Feature images for posts and twiter cards.
- Excellent code highlight support thanks to Hugo Chroma.
- Use Font Awesome for icons.
- Utilize normalize.css for consistent styling (Cloudflare CDN).
- Use Google Fonts: Ruda (serif) and Roboto Slab (sans-serif).
- [Disqus](https://disqus.com) or [Utterances](https://utteranc.es) comments loaded on demand.
- Supports downloading extra [Google Fonts](https://fonts.google.com/).
## Demo
Live demo: [https://hugo-kiera.netlify.app/](https://hugo-kiera.netlify.app/)
## Installation
Change into Hugo directory then:
```console
$ cd themes
$ git clone https://github.com/funkydan2/hugo-kiera.git hugo-kiera
```
More detailed instruction at [Hugo Docs](https://gohugo.io/getting-started/).
Using `git submodule` is recommended instead of `git clone` as per recommendation from [Netlify](https://gohugo.io/hosting-and-deployment/hosting-on-netlify/#use-hugo-themes-with-netlify).
```console
$ cd /path/to/the/root/of/your/project/themes
$ git submodule add https://github.com/funkydan2/hugo-kiera.git
```
## Update the theme
### git submodule method
Use `git` to merge latest commits into your project by running:
```bash
$ cd /path/to/the/root/of/your/project/
$ git submodule update --rebase --remote
```
### independent directory method
Delete the directory corresponding to the theme and download the latest version of the theme by cloning the repo:
```bash
$ cd /path/to/the/root/of/your/project/
$ rm -rf themes/hugo-kiera/
$ git clone https://github.com/funkydan2/hugo-kiera.git themes/hugo-kiera/
```
## Configuration
For reference look inside folder `exampleSite` for content example and `config.toml`.
*Important*: don't delete or move `archetypes` folder from root unless it is necessary. Current Hugo priority lookup will look into this folder first before any other `archetypes` folder and could cause problem.
Recommended optional `config.toml`:
```toml
pygmentsCodeFences = true
disqusShortname = "" #Disqus shortname
googleAnalytics = "" #Google Analytics ID
[author]
name = "" #Author name
github = "" #Github username
gitlab = "" #Gitlab username
linkedin = "" #LinkedIn username
facebook = "" #Facebook username
twitter = "" #Twitter username
instagram = "" #Instagram username
stackoverflow = "" #StackOverflow username
devto = "" #Dev.to username
[params]
tagline = "the tagline for this website"
customCSS = [] #Optional Customised CSS
disableDarkModeCSS = false # disables css style for users using dark-mode
```
### Menus
To add non-posts related page (eq. About page) to the main menu, adding these lines to the page [front matter](https://gohugo.io/content-management/front-matter/):
TOML:
```toml
menu = "main"
meta = "false"
```
YAML:
```yml
menu: "main"
meta: "false"
```
`meta` refers to time, categories, tags and reading time which are not necessary for this kind of page.
For posts listing page, add `_index.md` file inside `content\posts` folder with these front matter:
TOML:
```toml
title = "Posts"
menu = "main"
weight = "10"
```
YAML:
```yml
title : "Posts"
menu : "main"
weight : "10"
```
Following menus are available:
* `main`, displayed in the navigation bar at the top of the page
* `footer`, displayed on the lower right, in the footer
### Categories & Tags
Pages can include both, either, or neither *Categories* or *Tags*.
To link to tags use the url `/tags/` (e.g. `https://example.com/tags/`) and `/categories/` for categories.
### Images
#### Site header
A side header can be added in `config.toml`.
```
site_logo = "/link/to/image"
```
It is possible to use full width image as well, using either `/link/to/image#full` (which will affect only this image and
not the featured images for posts which may override the site header image) or `site_logo_classes = "full-image"` in `config.toml` (which
will affect all header images, even if a featured image of a post overrides the site logo).
#### Featured images for posts
A featured image for a post which will be shown in list overviews and at the top of the post page can be added in the frontmatter.
```
images: ["/link/to/image"]
```
Here, too, it is possible to display the image in full width appending `#full` or `#float` to the URL (see below).
Featured images can override the site logo on the post page, using `replace_site_logo: false` in the frontmatter.
#### Images in text
Kiera supports adding image as `img` tag with standard Markdown:
`![Image Title](link/to/image)`
to wrap it with `figure` use:
`{{< figure src="/link/to/image" >}}`
The basic placement is 100% width within content and scaled accordingly in smaller screen. Recommended width for image is 600 pixels minimum.
Kiera supports different placement by adding:
- For `img`, use `![Image Title](link/to/image#placement)`
- For `figure`, use `{{< figure src="/link/to/image" class="placement" >}}`
There are 4 configured placements
- `#full` or `class="full"` for full width.
![full](images/screenshots/full-image.png)
- `#mid` or `class="mid"` for middle:
![float-mid](images/screenshots/mid.png)
- `#float` or `class="float"` for float left:
![float-left](images/screenshots/float-left.png)
- `#float-right` or `class="float-right"` for float right:
![float-right](images/screenshots/float-right.png)
### Code highlight
Using fenced code with Chroma support.
### Font Awesome icons
For usage, refer to [Font Awesome](https://fontawesome.com/).
### Mathematics
Set `Params.mathjax` to true to enable support of mathematics display using [MathJax](https://mathjax.org/). Math should be, by default, surrounded by dollar signs and produced using LaTeX syntax. Options may be overriden using `static/js/mathjax-config.js`.
### Static Commenting
[Disqus](https://disqus.com/) comments are loaded on demand, by clicking the <kbd>View Comments</kbd> button. Disqus comments can be automatically loaded and displayed by setting `CommentAutoload = true` in `config.toml`.
[Utterances](https://utteranc.es), a Git based comment system, is also available. Utterance comments are loaded and displayed by default.
Comments can be disabled for a single page by setting `disableComments = true` in the page frontmatter.
### Last Modified Date
If the `lastmod` option is set on a page/post, either manually or because `enableGitInfo` is set to true, a line including the page's last modification will be shown after the post date.
## Support and Pull Requests
Please use GitHub issues to file bugs. If you can help fixing bugs, optimize the theme or adding features, please do pull requests, I really love to see what others can come up with.

View File

@ -0,0 +1,8 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = {{ .Date }}
images = []
tags = []
categories = []
draft = true
+++

View File

@ -0,0 +1,8 @@
+++
title = "{{ replace .TranslationBaseName "-" " " | title }}"
date = {{ .Date }}
images = []
tags = []
categories = []
draft = true
+++

6
themes/kiera/config.toml Normal file
View File

@ -0,0 +1,6 @@
baseURL = "https://example.com/"
[module]
[module.hugoVersion]
extended = false
min = "0.55.0"

View File

@ -0,0 +1,181 @@
#credit beautifulhugo https://github.com/halogenica/beautifulhugo/blob/master/data/beautifulhugo/social.toml
[[social_icons]]
id = "email"
url = "mailto:%s"
title = "Email me"
icon = "fas fa-envelope"
[[social_icons]]
id = "facebook"
url = "https://www.facebook.com/%s"
title = "Facebook"
icon = "fab fa-facebook"
[[social_icons]]
id = "github"
url = "https://github.com/%s"
title = "GitHub"
icon = "fab fa-github"
[[social_icons]]
id = "gitlab"
url = "https://gitlab.com/%s"
title = "GitLab"
icon = "fab fa-gitlab"
[[social_icons]]
id = "bitbucket"
url = "https://bitbucket.org/%s"
title = "Bitbucket"
icon = "fab fa-bitbucket"
[[social_icons]]
id = "twitter"
url = "https://twitter.com/%s"
title = "Twitter"
icon = "fab fa-twitter"
[[social_icons]]
id = "slack"
url = "https://%s.slack.com/"
title = "Slack"
icon = "fab fa-slack"
[[social_icons]]
id = "reddit"
url = "https://reddit.com/u/%s"
title = "Reddit"
icon = "fab fa-reddit-alien"
[[social_icons]]
id = "linkedin"
url = "https://linkedin.com/in/%s"
title = "LinkedIn"
icon = "fab fa-linkedin"
[[social_icons]]
id = "xing"
url = "https://www.xing.com/profile/%s"
title = "Xing"
icon = "fab fa-xing"
[[social_icons]]
id = "stackoverflow"
url = "https://stackoverflow.com/%s"
title = "StackOverflow"
icon = "fab fa-stack-overflow"
[[social_icons]]
id = "snapchat"
url = "https://www.snapchat.com/add/%s"
title = "Snapchat"
icon = "fab fa-snapchat-ghost"
[[social_icons]]
id = "instagram"
url = "https://www.instagram.com/%s"
title = "Instagram"
icon = "fab fa-instagram"
[[social_icons]]
id = "youtube"
url = "https://www.youtube.com/%s"
title = "Youtube"
icon = "fab fa-youtube"
[[social_icons]]
id = "soundcloud"
url = "https://soundcloud.com/%s"
title = "SoundCloud"
icon = "fab fa-soundcloud"
[[social_icons]]
id = "spotify"
url = "https://open.spotify.com/user/%s"
title = "Spotify"
icon = "fab fa-spotify"
[[social_icons]]
id = "bandcamp"
url = "https://%s.bandcamp.com/"
title = "Bandcamp"
icon = "fab fa-bandcamp"
[[social_icons]]
id = "itchio"
url = "https://itch.io/profile/%s"
title = "Itch.io"
icon = "fas fa-gamepad"
[[social_icons]]
id = "keybase"
url = "https://keybase.io/%s"
title = "Keybase"
icon = "fab fa-keybase"
[[social_icons]]
id = "vk"
url = "https://vk.com/%s"
title = "VK"
icon = "fab fa-vk"
[[social_icons]]
id = "paypal"
url = "https://paypal.me/%s"
title = "PayPal"
icon = "fab fa-paypal"
[[social_icons]]
id = "telegram"
url = "https://telegram.me/%s"
title = "Telegram"
icon = "fab fa-telegram"
[[social_icons]]
id = "500px"
url = "https://500px.com/%s"
title = "500px"
icon = "fab fa-500px"
[[social_icons]]
id = "codepen"
url = "https://codepen.io/%s"
title = "CodePen"
icon = "fab fa-codepen"
[[social_icons]]
id = "kaggle"
url = "https://www.kaggle.com/%s"
title = "kaggle"
icon = "fab fa-kaggle"
[[social_icons]]
id = "mastodon"
url = "https://%s"
title = "Mastodon"
icon = "fab fa-mastodon"
[[social_icons]]
id = "weibo"
url = "https://weibo.com/%s"
title = "Weibo"
icon = "fab fa-weibo"
[[social_icons]]
id = "strava"
url = "https://www.strava.com/athletes/%s"
title = "Strava"
icon = "fab fa-strava"
[[social_icons]]
id = "orcid"
url = "https://orcid.org/%s"
title = "ORCiD"
icon = "fab fa-orcid"
[[social_icons]]
id = "devto"
url = "https://dev.to/%s"
title = "devto"
icon = "fab fa-dev"

View File

@ -0,0 +1,18 @@
+++
title = "About Hugo"
date = "2014-04-09"
menu = "main"
weight = "20"
meta = "true"
+++
Hugo is a static site engine written in Go. <i class="far fa-clipboard"></i>
It makes use of a variety of open source projects including:
* [Cobra](https://github.com/spf13/cobra)
* [Viper](https://github.com/spf13/viper)
* [J Walter Weatherman](https://github.com/spf13/jWalterWeatherman)
* [Cast](https://github.com/spf13/cast)
Learn more and contribute on [GitHub](https://github.com/gohugoio).

View File

@ -0,0 +1,5 @@
+++
title = "Posts"
menu = "main"
weight = "10"
+++

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
+++
title = "Feature Image"
date = 2020-01-01
images = ["http://via.placeholder.com/600x200"]
tags = ["Feature Image", "Layout"]
categories = ["Images"]
+++
The Hugo Kiera theme now supports featured images. To use the feature, set the `images` parameter in a page's frontmatter.
(Note that this is required to be an array, even though only the first image is used. This is to provide compatability with the built-in [Twitter Card](https://gohugo.io/templates/internal/#twitter-cards) shortcode.)

View File

@ -0,0 +1,344 @@
+++
title = "(Hu)go Template Primer"
description = ""
tags = [
"go",
"golang",
"templates",
"themes",
"development",
]
date = "2014-04-02"
categories = [
"Development",
"golang",
]
images = []
+++
Hugo uses the excellent [go][] [html/template][gohtmltemplate] library for
its template engine. It is an extremely lightweight engine that provides a very
small amount of logic. In our experience that it is just the right amount of
logic to be able to create a good static website. If you have used other
template systems from different languages or frameworks you will find a lot of
similarities in go templates.
This document is a brief primer on using go templates. The [go docs][gohtmltemplate]
provide more details.
## Introduction to Go Templates
Go templates provide an extremely simple template language. It adheres to the
belief that only the most basic of logic belongs in the template or view layer.
One consequence of this simplicity is that go templates parse very quickly.
A unique characteristic of go templates is they are content aware. Variables and
content will be sanitized depending on the context of where they are used. More
details can be found in the [go docs][gohtmltemplate].
## Basic Syntax
Go lang templates are html files with the addition of variables and
functions.
**Go variables and functions are accessible within {{ }}**
Accessing a predefined variable "foo":
{{ foo }}
**Parameters are separated using spaces**
Calling the add function with input of 1, 2:
{{ add 1 2 }}
**Methods and fields are accessed via dot notation**
Accessing the Page Parameter "bar"
{{ .Params.bar }}
**Parentheses can be used to group items together**
{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
## Variables
Each go template has a struct (object) made available to it. In hugo each
template is passed either a page or a node struct depending on which type of
page you are rendering. More details are available on the
[variables](/layout/variables) page.
A variable is accessed by referencing the variable name.
<title>{{ .Title }}</title>
Variables can also be defined and referenced.
{{ $address := "123 Main St."}}
{{ $address }}
## Functions
Go template ship with a few functions which provide basic functionality. The go
template system also provides a mechanism for applications to extend the
available functions with their own. [Hugo template
functions](/layout/functions) provide some additional functionality we believe
are useful for building websites. Functions are called by using their name
followed by the required parameters separated by spaces. Template
functions cannot be added without recompiling hugo.
**Example:**
{{ add 1 2 }}
## Includes
When including another template you will pass to it the data it will be
able to access. To pass along the current context please remember to
include a trailing dot. The templates location will always be starting at
the /layout/ directory within Hugo.
**Example:**
{{ template "chrome/header.html" . }}
## Logic
Go templates provide the most basic iteration and conditional logic.
### Iteration
Just like in go, the go templates make heavy use of range to iterate over
a map, array or slice. The following are different examples of how to use
range.
**Example 1: Using Context**
{{ range array }}
{{ . }}
{{ end }}
**Example 2: Declaring value variable name**
{{range $element := array}}
{{ $element }}
{{ end }}
**Example 2: Declaring key and value variable name**
{{range $index, $element := array}}
{{ $index }}
{{ $element }}
{{ end }}
### Conditionals
If, else, with, or, & and provide the framework for handling conditional
logic in Go Templates. Like range, each statement is closed with `end`.
Go Templates treat the following values as false:
* false
* 0
* any array, slice, map, or string of length zero
**Example 1: If**
{{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
**Example 2: If -> Else**
{{ if isset .Params "alt" }}
{{ index .Params "alt" }}
{{else}}
{{ index .Params "caption" }}
{{ end }}
**Example 3: And & Or**
{{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
**Example 4: With**
An alternative way of writing "if" and then referencing the same value
is to use "with" instead. With rebinds the context `.` within its scope,
and skips the block if the variable is absent.
The first example above could be simplified as:
{{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
**Example 5: If -> Else If**
{{ if isset .Params "alt" }}
{{ index .Params "alt" }}
{{ else if isset .Params "caption" }}
{{ index .Params "caption" }}
{{ end }}
## Pipes
One of the most powerful components of go templates is the ability to
stack actions one after another. This is done by using pipes. Borrowed
from unix pipes, the concept is simple, each pipeline's output becomes the
input of the following pipe.
Because of the very simple syntax of go templates, the pipe is essential
to being able to chain together function calls. One limitation of the
pipes is that they only can work with a single value and that value
becomes the last parameter of the next pipeline.
A few simple examples should help convey how to use the pipe.
**Example 1 :**
{{ if eq 1 1 }} Same {{ end }}
is the same as
{{ eq 1 1 | if }} Same {{ end }}
It does look odd to place the if at the end, but it does provide a good
illustration of how to use the pipes.
**Example 2 :**
{{ index .Params "disqus_url" | html }}
Access the page parameter called "disqus_url" and escape the HTML.
**Example 3 :**
{{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
Stuff Here
{{ end }}
Could be rewritten as
{{ isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }}
Stuff Here
{{ end }}
## Context (aka. the dot)
The most easily overlooked concept to understand about go templates is that {{ . }}
always refers to the current context. In the top level of your template this
will be the data set made available to it. Inside of a iteration it will have
the value of the current item. When inside of a loop the context has changed. .
will no longer refer to the data available to the entire page. If you need to
access this from within the loop you will likely want to set it to a variable
instead of depending on the context.
**Example:**
{{ $title := .Site.Title }}
{{ range .Params.tags }}
<li> <a href="{{ $baseurl }}/tags/{{ . | urlize }}">{{ . }}</a> - {{ $title }} </li>
{{ end }}
Notice how once we have entered the loop the value of {{ . }} has changed. We
have defined a variable outside of the loop so we have access to it from within
the loop.
# Hugo Parameters
Hugo provides the option of passing values to the template language
through the site configuration (for sitewide values), or through the meta
data of each specific piece of content. You can define any values of any
type (supported by your front matter/config format) and use them however
you want to inside of your templates.
## Using Content (page) Parameters
In each piece of content you can provide variables to be used by the
templates. This happens in the [front matter](/content/front-matter).
An example of this is used in this documentation site. Most of the pages
benefit from having the table of contents provided. Sometimes the TOC just
doesn't make a lot of sense. We've defined a variable in our front matter
of some pages to turn off the TOC from being displayed.
Here is the example front matter:
```
---
title: "Permalinks"
date: "2013-11-18"
aliases:
- "/doc/permalinks/"
groups: ["extras"]
groups_weight: 30
notoc: true
---
```
Here is the corresponding code inside of the template:
{{ if not .Params.notoc }}
<div id="toc" class="well col-md-4 col-sm-6">
{{ .TableOfContents }}
</div>
{{ end }}
## Using Site (config) Parameters
In your top-level configuration file (eg, `config.yaml`) you can define site
parameters, which are values which will be available to you in chrome.
For instance, you might declare:
```yaml
params:
CopyrightHTML: "Copyright &#xA9; 2013 John Doe. All Rights Reserved."
TwitterUser: "spf13"
SidebarRecentLimit: 5
```
Within a footer layout, you might then declare a `<footer>` which is only
provided if the `CopyrightHTML` parameter is provided, and if it is given,
you would declare it to be HTML-safe, so that the HTML entity is not escaped
again. This would let you easily update just your top-level config file each
January 1st, instead of hunting through your templates.
```
{{if .Site.Params.CopyrightHTML}}<footer>
<div class="text-center">{{.Site.Params.CopyrightHTML | safeHtml}}</div>
</footer>{{end}}
```
An alternative way of writing the "if" and then referencing the same value
is to use "with" instead. With rebinds the context `.` within its scope,
and skips the block if the variable is absent:
```
{{with .Site.Params.TwitterUser}}<span class="twitter">
<a href="https://twitter.com/{{.}}" rel="author">
<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
alt="Twitter"></a>
</span>{{end}}
```
Finally, if you want to pull "magic constants" out of your layouts, you can do
so, such as in this example:
```
<nav class="recent">
<h1>Recent Posts</h1>
<ul>{{range first .Site.Params.SidebarRecentLimit .Site.Recent}}
<li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
{{end}}</ul>
</nav>
```
[go]: <http://golang.org/>
[gohtmltemplate]: <http://golang.org/pkg/html/template/>

View File

@ -0,0 +1,89 @@
+++
title = "Getting Started with Hugo"
description = ""
tags = [
"go",
"golang",
"hugo",
"development",
]
date = "2014-04-02"
categories = [
"Development",
"golang",
]
images = ""
+++
## Step 1. Install Hugo
Goto [hugo releases](https://github.com/spf13/hugo/releases) and download the
appropriate version for your os and architecture.
Save it somewhere specific as we will be using it in the next step.
More complete instructions are available at [installing hugo](/overview/installing/)
## Step 2. Build the Docs
Hugo has its own example site which happens to also be the documentation site
you are reading right now.
Follow the following steps:
1. Clone the [hugo repository](http://github.com/spf13/hugo)
2. Go into the repo
3. Run hugo in server mode and build the docs
4. Open your browser to http://localhost:1313
Corresponding pseudo commands:
git clone https://github.com/spf13/hugo
cd hugo
/path/to/where/you/installed/hugo server --source=./docs
> 29 pages created
> 0 tags index created
> in 27 ms
> Web Server is available at http://localhost:1313
> Press ctrl+c to stop
Once you've gotten here, follow along the rest of this page on your local build.
## Step 3. Change the docs site
Stop the Hugo process by hitting ctrl+c.
Now we are going to run hugo again, but this time with hugo in watch mode.
/path/to/hugo/from/step/1/hugo server --source=./docs --watch
> 29 pages created
> 0 tags index created
> in 27 ms
> Web Server is available at http://localhost:1313
> Watching for changes in /Users/spf13/Code/hugo/docs/content
> Press ctrl+c to stop
Open your [favorite editor](http://vim.spf13.com) and change one of the source
content pages. How about changing this very file to *fix the typo*. How about changing this very file to *fix the typo*.
Content files are found in `docs/content/`. Unless otherwise specified, files
are located at the same relative location as the url, in our case
`docs/content/overview/quickstart.md`.
Change and save this file.. Notice what happened in your terminal.
> Change detected, rebuilding site
> 29 pages created
> 0 tags index created
> in 26 ms
Refresh the browser and observe that the typo is now fixed.
Notice how quick that was. Try to refresh the site before it's finished building.. I double dare you.
Having nearly instant feedback enables you to have your creativity flow without waiting for long builds.
## Step 4. Have fun
The best way to learn something is to play with it.

View File

@ -0,0 +1,50 @@
+++
title = "Image Style Guide"
date = 2017-11-14T08:08:17-05:00
tags = []
categories = ["Images"]
+++
Veniam est eu adipisicing reprehenderit do sit sint elit sint. Tempor laborum ut dolore aliqua. Commodo eu qui sint magna veniam laborum. Ad cupidatat do proident ex veniam amet Lorem. Officia laboris aute fugiat id consequat culpa ullamco labore ea amet ad. Occaecat quis dolor commodo pariatur cillum et id id cupidatat officia.
Magna incididunt proident cupidatat cupidatat enim consectetur sunt. Ipsum velit aliqua ex ipsum qui labore magna. Ea nisi anim ad culpa Lorem occaecat ex cupidatat duis labore officia dolor.
{{< figure src="http://via.placeholder.com/600x200" class="full" caption="Magna sunt ut ea quis aliqua cupidatat ut quis sit aliqua tempor duis." >}}
Aliqua minim esse velit est non. Ea do irure labore aliquip culpa ex ut sunt anim duis irure. Ex adipisicing deserunt do occaecat. Incididunt esse ea tempor fugiat magna.
Voluptate elit exercitation aliqua ut elit reprehenderit aliquip anim elit laborum laborum. Elit aute sint nisi labore irure in labore culpa. Fugiat velit fugiat ea reprehenderit. Sint minim amet occaecat eu labore reprehenderit pariatur nulla.
{{< figure src="http://via.placeholder.com/600x300" class="mid" caption="Eu cupidatat ex qui do." >}}
In deserunt exercitation Lorem est nulla ullamco enim duis consequat tempor minim. Nostrud cillum ex dolore amet qui mollit do in aliquip consequat eiusmod est dolor officia. Exercitation quis cillum voluptate dolore cillum veniam minim voluptate ullamco voluptate reprehenderit deserunt elit. Et cillum sunt labore ad duis officia aute Lorem incididunt commodo ea.
Deserunt Lorem aliquip dolor et ut adipisicing nisi esse est dolore irure laborum. Excepteur dolor pariatur excepteur deserunt eiusmod laborum. Ad officia ea magna id ex. Laborum enim proident incididunt quis.
![floaty mcboaty](http://via.placeholder.com/300x400#float-right)
Elit culpa ad ex aute ullamco dolor anim do labore. Non ex do eiusmod elit occaecat. Adipisicing mollit commodo fugiat qui Lorem cupidatat laboris consectetur. Anim nostrud ullamco excepteur Lorem aliqua ullamco nisi.
Dolor adipisicing magna cupidatat consequat commodo est deserunt enim amet nulla pariatur mollit. Cupidatat officia veniam adipisicing laboris et ullamco consequat est nisi cupidatat. Quis id cillum excepteur consectetur aute excepteur ipsum magna. In ex pariatur nostrud ipsum aliqua nisi irure Lorem consectetur incididunt incididunt cillum. Fugiat ea Lorem velit voluptate cillum. Sunt incididunt proident nulla ad minim ullamco nostrud non commodo dolor enim cillum ullamco esse.
![floaty mcboaty](http://via.placeholder.com/300x400#float-left)
Do pariatur culpa labore dolore nostrud velit nostrud labore adipisicing enim laborum eu eu. Laborum nulla occaecat amet commodo ut velit. Incididunt et officia ex voluptate qui velit amet. Commodo consequat pariatur labore irure id commodo fugiat exercitation incididunt fugiat aliqua ipsum. Enim exercitation quis cillum irure duis nisi ullamco pariatur exercitation cillum amet nostrud aliquip. Adipisicing pariatur incididunt tempor sit pariatur aliquip aliqua pariatur. Eu occaecat fugiat aliqua consectetur velit incididunt nostrud enim.
Consectetur non dolore duis anim nostrud pariatur. Nisi ad pariatur est fugiat non occaecat excepteur ea amet esse. Id ullamco nisi anim ut eu reprehenderit irure ullamco. Do voluptate dolor est nostrud sit.
{{< figure src="http://via.placeholder.com/300x400" class="float-right" caption="Eu cupidatat ex qui do." >}}
Irure anim officia nostrud ad veniam reprehenderit incididunt id elit eu id sint ea laboris. Irure esse sit dolore enim nulla consequat esse id esse. Anim consequat reprehenderit incididunt sit. Incididunt incididunt eu ullamco excepteur sit qui id reprehenderit cillum eiusmod velit elit adipisicing. Pariatur et cupidatat quis sint ipsum est non. Anim sit labore ut minim id sint eu incididunt exercitation laborum laborum anim.
Sit id et irure consectetur veniam do eiusmod. Exercitation veniam labore proident laborum commodo esse culpa laboris ex laboris fugiat. Sunt ut amet tempor eiusmod exercitation laboris in qui tempor mollit culpa mollit. Eu sint consequat consectetur laboris amet dolore do labore ipsum dolor ipsum fugiat. Qui deserunt cillum nostrud dolore tempor reprehenderit reprehenderit reprehenderit.
{{< figure src="http://via.placeholder.com/300x400" class="float" caption="Eu cupidatat ex qui do." >}}
Enim anim veniam ea officia. Duis fugiat fugiat exercitation voluptate labore est est aliqua dolor incididunt eiusmod veniam. Reprehenderit sunt aute veniam anim qui sunt irure officia duis non aute labore. Aliqua reprehenderit pariatur reprehenderit voluptate excepteur ut amet sit ut duis. Ea exercitation ex ad ut dolor minim.
Lorem nostrud aute cillum ut veniam deserunt. Est commodo et id ea. Proident incididunt consequat deserunt sit do est duis. Do sint ullamco sunt cillum duis.
Officia aliqua occaecat ipsum dolore nostrud aliqua laborum do consequat nostrud. Dolor amet non ad excepteur duis Lorem aliqua aute. Lorem reprehenderit do sit minim magna nostrud Lorem officia duis.
Ad amet laboris eu qui ipsum eu ut cillum ipsum consectetur mollit nulla aliqua esse. Adipisicing et ad anim ipsum aliqua duis eiusmod. Quis ad in ea eu amet cupidatat sint eiusmod ullamco. Ullamco aliquip Lorem aliqua labore ipsum. Consectetur magna nostrud mollit nulla nostrud duis ipsum. Officia ad nulla culpa exercitation exercitation exercitation duis ipsum laboris.

View File

@ -0,0 +1,141 @@
+++
author = "Hugo Authors"
title = "Markdown Syntax Guide"
date = "2019-03-11"
description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
tags = [
"markdown",
"css",
"html",
"themes",
]
categories = ["Layout"]
+++
This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
<!--more-->
## Headings
The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
# H1
## H2
### H3
#### H4
##### H5
###### H6
## Paragraph
Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
## Blockquotes
The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
#### Blockquote without attribution
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
> **Note** that you can use *Markdown syntax* within a blockquote.
#### Blockquote with attribution
> Don't communicate by sharing memory, share memory by communicating.</p>
> — <cite>Rob Pike[^1]</cite>
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
## Tables
Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
Name | Age
--------|------
Bob | 27
Alice | 23
#### Inline Markdown within tables
| Inline&nbsp;&nbsp;&nbsp; | Markdown&nbsp;&nbsp;&nbsp; | In&nbsp;&nbsp;&nbsp; | Table |
| ---------- | --------- | ----------------- | ---------- |
| *italics* | **bold** | ~~strikethrough~~&nbsp;&nbsp;&nbsp; | `code` |
## Code Blocks
#### Code block with backticks
```
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example HTML5 Document</title>
</head>
<body>
<p>Test</p>
</body>
</html>
```
#### Code block indented with four spaces
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example HTML5 Document</title>
</head>
<body>
<p>Test</p>
</body>
</html>
#### Code block with Hugo's internal highlight shortcode
{{< highlight html >}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example HTML5 Document</title>
</head>
<body>
<p>Test</p>
</body>
</html>
{{< /highlight >}}
## List Types
#### Ordered List
1. First item
2. Second item
3. Third item
#### Unordered List
* List item
* Another item
* And another item
#### Nested list
* Item
1. First Sub-item
2. Second Sub-item
## Other Elements — abbr, sub, sup, kbd, mark
<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
H<sub>2</sub>O
X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.

View File

@ -0,0 +1,10 @@
+++
title = "Testing Mathmatics Formatting"
date = 2024-05-28T09:00:52+10:00
tags = []
categories = ["Maths"]
+++
In `hugo.toml` you need to set either: `mathjax=true` or `katex=true` to render the below as expected.
$$ \sqrt 4 = 2 $$

View File

@ -0,0 +1,152 @@
---
date: 2014-03-10
linktitle: Migrating from Jekyll
title: Migrate to Hugo from Jekyll
images: ""
---
## Move static content to `static`
Jekyll has a rule that any directory not starting with `_` will be copied as-is to the `_site` output. Hugo keeps all static content under `static`. You should therefore move it all there.
With Jekyll, something that looked like
<root>/
▾ images/
logo.png
should become
<root>/
▾ static/
▾ images/
logo.png
Additionally, you'll want any files that should reside at the root (such as `CNAME`) to be moved to `static`.
## Create your Hugo configuration file
Hugo can read your configuration as JSON, YAML or TOML. Hugo supports parameters custom configuration too. Refer to the [Hugo configuration documentation](/overview/configuration/) for details.
## Set your configuration publish folder to `_site`
The default is for Jekyll to publish to `_site` and for Hugo to publish to `public`. If, like me, you have [`_site` mapped to a git submodule on the `gh-pages` branch](http://blog.blindgaenger.net/generate_github_pages_in_a_submodule.html), you'll want to do one of two alternatives:
1. Change your submodule to point to map `gh-pages` to public instead of `_site` (recommended).
git submodule deinit _site
git rm _site
git submodule add -b gh-pages git@github.com:your-username/your-repo.git public
2. Or, change the Hugo configuration to use `_site` instead of `public`.
{
..
"publishdir": "_site",
..
}
## Convert Jekyll templates to Hugo templates
That's the bulk of the work right here. The documentation is your friend. You should refer to [Jekyll's template documentation](http://jekyllrb.com/docs/templates/) if you need to refresh your memory on how you built your blog and [Hugo's template](/layout/templates/) to learn Hugo's way.
As a single reference data point, converting my templates for [heyitsalex.net](http://heyitsalex.net/) took me no more than a few hours.
## Convert Jekyll plugins to Hugo shortcodes
Jekyll has [plugins](http://jekyllrb.com/docs/plugins/); Hugo has [shortcodes](/doc/shortcodes/). It's fairly trivial to do a port.
### Implementation
As an example, I was using a custom [`image_tag`](https://github.com/alexandre-normand/alexandre-normand/blob/74bb12036a71334fdb7dba84e073382fc06908ec/_plugins/image_tag.rb) plugin to generate figures with caption when running Jekyll. As I read about shortcodes, I found Hugo had a nice built-in shortcode that does exactly the same thing.
Jekyll's plugin:
module Jekyll
class ImageTag < Liquid::Tag
@url = nil
@caption = nil
@class = nil
@link = nil
// Patterns
IMAGE_URL_WITH_CLASS_AND_CAPTION =
IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK = /(\w+)(\s+)((https?:\/\/|\/)(\S+))(\s+)"(.*?)"(\s+)->((https?:\/\/|\/)(\S+))(\s*)/i
IMAGE_URL_WITH_CAPTION = /((https?:\/\/|\/)(\S+))(\s+)"(.*?)"/i
IMAGE_URL_WITH_CLASS = /(\w+)(\s+)((https?:\/\/|\/)(\S+))/i
IMAGE_URL = /((https?:\/\/|\/)(\S+))/i
def initialize(tag_name, markup, tokens)
super
if markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK
@class = $1
@url = $3
@caption = $7
@link = $9
elsif markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION
@class = $1
@url = $3
@caption = $7
elsif markup =~ IMAGE_URL_WITH_CAPTION
@url = $1
@caption = $5
elsif markup =~ IMAGE_URL_WITH_CLASS
@class = $1
@url = $3
elsif markup =~ IMAGE_URL
@url = $1
end
end
def render(context)
if @class
source = "<figure class='#{@class}'>"
else
source = "<figure>"
end
if @link
source += "<a href=\"#{@link}\">"
end
source += "<img src=\"#{@url}\">"
if @link
source += "</a>"
end
source += "<figcaption>#{@caption}</figcaption>" if @caption
source += "</figure>"
source
end
end
end
Liquid::Template.register_tag('image', Jekyll::ImageTag)
is written as this Hugo shortcode:
<!-- image -->
<figure {{ with .Get "class" }}class="{{.}}"{{ end }}>
{{ with .Get "link"}}<a href="{{.}}">{{ end }}
<img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt"}}{{.}}{{else}}{{ .Get "caption" }}{{ end }}"{{ end }} />
{{ if .Get "link"}}</a>{{ end }}
{{ if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
<figcaption>{{ if isset .Params "title" }}
{{ .Get "title" }}{{ end }}
{{ if or (.Get "caption") (.Get "attr")}}<p>
{{ .Get "caption" }}
{{ with .Get "attrlink"}}<a href="{{.}}"> {{ end }}
{{ .Get "attr" }}
{{ if .Get "attrlink"}}</a> {{ end }}
</p> {{ end }}
</figcaption>
{{ end }}
</figure>
<!-- image -->
### Usage
I simply changed:
{% image full http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg "One of my favorite touristy-type photos. I secretly waited for the good light while we were "having fun" and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." ->http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/ %}
to this (this example uses a slightly extended version named `fig`, different than the built-in `figure`):
{{%/* fig class="full" src="http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg" title="One of my favorite touristy-type photos. I secretly waited for the good light while we were having fun and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." link="http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/" */%}}
As a bonus, the shortcode named parameters are, arguably, more readable.
## Finishing touches
### Fix content
Depending on the amount of customization that was done with each post with Jekyll, this step will require more or less effort. There are no hard and fast rules here except that `hugo server --watch` is your friend. Test your changes and fix errors as needed.
### Clean up
You'll want to remove the Jekyll configuration at this point. If you have anything else that isn't used, delete it.
## A practical example in a diff
[Hey, it's Alex](http://heyitsalex.net/) was migrated in less than a _father-with-kids day_ from Jekyll to Hugo. You can see all the changes (and screw-ups) by looking at this [diff](https://github.com/alexandre-normand/alexandre-normand/compare/869d69435bd2665c3fbf5b5c78d4c22759d7613a...b7f6605b1265e83b4b81495423294208cc74d610).

View File

@ -0,0 +1,201 @@
+++
title = "Style Guide"
date = 2017-11-14T10:57:55-05:00
tags = ["Layout"]
categories = []
meta = true
+++
# Headings
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
* * *
# Headings with Text
# Heading 1
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
## Heading 2
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
### Heading 3
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
#### Heading 4
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
##### Heading 5
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
###### Heading 6
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
* * *
# Block Elements
## Paragraphs and Images
Moinsen! Der kess 🦄 Lichtspieltheater. Kittchen und Schwedenfilm krakelen blümerant Narr. Das flügge Personenvereinzelungsanlage dengeln. Kleintierzuchtverein und Naschkatze meucheln adrett Himmelfahrtskommando. Der gebeutelt Personenvereinzelungsanlage. Der butterweich Scharlatan. Der gemach Kokolores. Haderlump und Waldschrat abkupfern hanebüchen Lump. Der hochgestochen Stümper. Das Trinkhalle abkupfern der bierernst Eisbein. Die Lametta stibitzen der töricht Prahlhans. Die altbacken Himmelfahrtskommando. Kerbholz und Schürzenjäger erquicken garstig Schlachtschüssel. Jungfer und Herrengedeck auftakeln pompös Schnitzel. Ach du liebes Lottchen!
Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor.
![Placeholder Image and Some Alt Text](https://placehold.it/350x150 "A title element for this placeholder image.")
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem.
## Blockquote
This is a standard paragraph. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
> "**This is a blockquote**. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl."
This is a standard paragraph. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
*Note: the [Figure-Figcaption](http://html5doctor.com/the-figure-figcaption-elements/) and [Details-Summary](http://html5doctor.com/the-details-and-summary-elements/) elements are not currently supported in markdown.*
* * *
# Text Elements
The [a element](#) and [external a element](https://example.com) examples
The <abbr>abbr element</abbr> and an <abbr title="Abbreviation">abbr</abbr> element with title examples
The <acronym title="A Cowboy Ran One New York Marathon">ACRONYM</acronym> element example
The **b element** example
The <cite>cite element</cite> example
The `code element` example
The <data value="3967381398">data element</data> example
The ~~del element~~ example
The <dfn>dfn element</dfn> and <dfn title="Title text">dfn element with title</dfn> examples
The _em element_ example
The _i element_ example
The <ins>ins element</ins> example
The <kbd>kbd element</kbd> example
The <mark>mark element</mark> example
The <q>q element</q> example
The <q>q element <q>inside</q> a q element</q> example
The <s>s element</s> example
The <samp>samp element</samp> example
The <small>small element</small> example
The <span>span element</span> example
The **strong element** example
The <sub>sub element</sub> example
The <sup>sup element</sup> example
The <time datetime="2005-05-15 19:00">time element</time> example
The <u>u element</u> example
The <var>var element</var> example
* * *
# Monospace / Preformatted
Code block wrapped in "pre" and "code" tags:
```javascript
// Loop through Divs using Javascript.
var divs = document.querySelectorAll('div'), i;
for (i = 0; i < divs.length; ++i) {
divs[i].style.color = "green";
}
```
Monospace Text wrapped in "pre" tags:
<pre>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.</pre>
* * *
# List Types
## Ordered List
1. List Item 1
2. List Item 2
3. List Item 3
1. List Item 3.1
2. List Item 3.2
1. List Item 3.2.1
2. List Item 3.2 2
3. List Item 3.3
4. List Item 4
## Unordered List
* List Item 1
* List Item 2
* List Item 3
* List Item 3.1
* List Item 3.2
* List Item 3.2.1
* List Item 3.2 2
* List Item 3.3
* List Item 4
## Definition List
Definition Term 1
: Definition Description 1
Definition Term 2
: Definition Description 2
* * *
# Tables
| Table Header 1 | Table Header 2 | Table Header 3 |
| -------------- | -------------- | -------------- |
| Division 1 | Division 2 | Division 3 |
| Division 1 | Division 2 | Division 3 |
| Division 1 | Division 2 | Division 3 |
* * *
# Media and Form Elements
The remaining sections contain elements that cannot be represented in markdown. Please consult [the HTML version](https://github.com/bryanbraun/poor-mans-styleguide/blob/gh-pages/index.html), to see these elements.

View File

@ -0,0 +1,57 @@
baseurl = "https://www.example.org/"
title = "Kiera"
copyright = "Copyright &copy; 2023 - Author Name"
canonifyurls = true
theme = "hugo-kiera"
[pagination]
pagersize = 3
path = 'page'
summaryLength = 30
enableEmoji = true
pygmentsCodeFences = true
#disqusShortname = "myShortName"
# Note: to disable a social network icon delete or comment out the corresponding line
[params.author]
name = "Example"
github = "funkydan2/hugo-kiera"
#gitlab = "username"
#linkedin = "username"
#facebook = "username"
twitter = "ds_says"
#instagram = "username"
#stackoverflow = "username"
#youtube = "user/username" # or channel/channelname
#devto = "username"
[params]
tagline = "A Hugo theme for creative and technical writing"
description = "Kiera: A Hugo theme for creative and technical writing."
images = [""] #This is used for opengraph/twitter cards.
customCSS = [] #Optional Customised CSS
#favicon = ""
#utterancesRepo = "username/repository"
#utterancesIssueTerm = "pathname"
#homepageLength = 10
#commentAutoload = true #This mean reader don't need click, disqus comment autoload
mathjax = true #Enable display of mathematics using mathjax (LaTeX syntax)
#katex = true #Enable display of mathematics using katex (Faster LaTeX rendering)
#google_fonts = ["Staatliches"] # Adds additional google fonts
#disableDarkModeCSS = false # disables css style for users using dark-mode
# uncomment to enable the Tags link on the main toolbar
# [[menu.main]]
# identifier = "tags"
# name = "Tags"
# url = "/tags"
# weight = 1
# uncomment to enable the Categories link on the main toolbar
# [[menu.main]]
# identifier = "categories"
# name = "Categories"
# url = "/categories"
# weight = 1

3
themes/kiera/go.mod Normal file
View File

@ -0,0 +1,3 @@
module github.com/funkydan2/hugo-kiera
go 1.15

24
themes/kiera/i18n/en.toml Normal file
View File

@ -0,0 +1,24 @@
[categories]
other = "Categories:"
[readingTime]
one = "One minute read"
other = "{{.Count}} minute read"
[readMore]
other = "Read more…"
[draft]
other = "DRAFT"
[subscribe]
other = "Subscribe"
[rendered]
other = "Rendered by"
[comments]
other = "Add/View Comments"
[modifiedOn]
other = "Modified on"

24
themes/kiera/i18n/fa.toml Normal file
View File

@ -0,0 +1,24 @@
[categories]
other = "دسته‌بندی‌ها:"
[readingTime]
one = "یک دقیقه مطالعه"
other = "{{.Count}} دقیقه مطالعه"
[readMore]
other = "ادامه…"
[draft]
other = "DRAFT"
[subscribe]
other = "Subscribe"
[rendered]
other = "Rendered by"
[comments]
other = "Add/View Comments"
[modifiedOn]
other = "Modified on"

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

BIN
themes/kiera/images/tn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -0,0 +1,7 @@
{{ define "main" }}
<section id="404">
<p>This is not the page you are looking for...</p>
</section>
{{ end }}

View File

@ -0,0 +1,6 @@
{{ partial "header" . }}
{{ block "main" . }}
{{ end }}
{{ partialCached "footer" . }}

View File

@ -0,0 +1,31 @@
{{ define "main" }}
<section id="list">
{{ if eq .Data.Singular "tag" }}
<h2>#{{ .Title | lower }}</h2>
{{ else }}
<h2>{{ .Title }}</h2>
{{ end }}
{{ .Content }}
{{ range (.Paginate (.Data.Pages.GroupByDate "2006")).PageGroups }}
<h3>{{ .Key }}</h3>
<ul>
{{ range .Pages }}
<li>
<a href="{{ .Permalink }}">{{ if .Draft }}{{ T "draft" }}: {{end}}{{ .Title | markdownify }}</a>
<time class="date-meta">{{ .Date.Format "Jan 2" }}</time>
</li>
{{ end }}
</ul>
{{ end }}
</section>
{{ template "_internal/pagination.html" . }}
{{ end }}

View File

@ -0,0 +1,30 @@
{{/***
* Override the Hugo RSS feed default as that only shows a summary of the post,
* not the whole article which is what most people really want.
***/}}
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
<link>{{ .Permalink }}</link>
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with .Site.Params.Author.email }}
<managingEditor>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Params.Author.email }}
<webMaster>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
{{ with .OutputFormats.Get "RSS" }}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{ end }}
{{ range where .Site.RegularPages "Section" "in" site.Params.mainSections }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Params.Author.email }}<author>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</author>{{end}}
<guid>{{ .Permalink }}</guid>
<description>{{ .Content | replaceRE `[\x00-\x1F\x7F]` "" | html}}</description>
</item>
{{ end }}
</channel>
</rss>

View File

@ -0,0 +1,6 @@
{{ define "main" }}
{{ partial "article" . }}
{{ partial "single_footer" . }}
{{ end }}

View File

@ -0,0 +1,19 @@
{{ define "main" }}
<section id="list">
{{ $baseurl := .Site.BaseURL }}
<h2>{{ .Title }}</h2>
{{ .Content }}
<ul>
{{ range $key, $value := .Data.Terms }}
<li><a href="{{ $key | urlize }}">{{ $key }}</a> <span class="count">({{ .Count }} entries)</span></li>
{{ end }}
</ul>
</section>
{{ end }}

View File

@ -0,0 +1,24 @@
{{ define "main" }}
<section id="home">
<ul>
{{ $pages := where site.RegularPages "Type" "posts" }}
{{ $paginator := .Paginate $pages }}
{{ range $index, $page := $paginator.Pages }}
<li {{if eq $index 0}}class="first" {{end}}>
<h1><a href="{{ $page.Permalink }}" title="{{ $page.Title }}">{{ .Title }}</a></h1>
{{ partial "aside" . }}
{{ partial "featured_image" .}}
<p>{{ .Summary }}</p>
{{ if .Truncated }}
<a href="{{ .RelPermalink }}">{{ T "readMore" }}</a>
{{ end }}
</li>
{{ end }}
</ul>
</section>
{{ template "_internal/pagination.html" . }}
{{ end }}

View File

@ -0,0 +1,15 @@
<article>
<h1>{{ .Title }}</h1>
{{ if or (not (isset .Params "meta")) (eq .Params.meta true) }}
{{ partial "aside" . }}
{{ end }}
{{ if not (.Params.replace_site_logo) }}
{{ partial "featured_image" . }}
{{ end }}
{{ .Content }}
</article>

View File

@ -0,0 +1,36 @@
<aside>
<ul>
<li>
<time class="post-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">{{ .Date.Format "Jan 2, 2006" }}</time>
</li>
{{ if ne .Date .Lastmod }}
<li>
{{ T "modifiedOn" }} <time datetime="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">{{ .Lastmod.Format "Jan 2, 2006" }}</time>
</li>
{{ end }}
{{ if .Params.categories }}
<li>
{{ T "categories" }}
<em>
{{ range $i, $c := .Params.categories }}
{{ if $i }}, {{ end }}
<a href="{{ relLangURL ( printf "categories/%s" ( $c | urlize ) ) }}">{{ $c }}</a>
{{ end }}
</em>
</li>
{{ end }}
{{ if .Params.tags }}
<li>
<em>
{{ range $i, $t := .Params.tags }}
{{ if $i }}, {{ end }}
<a href="{{ relLangURL ( printf "tags/%s" ( $t | urlize ) ) }}">#{{ $t }}</a>
{{ end }}
</em>
</li>
{{ end }}
<li>{{ T "readingTime" .ReadingTime }}</li>
</ul>
</aside>

View File

@ -0,0 +1,63 @@
<section class="comments-block">
<button id="show-comments" style="display: none;"><i class="fa fa-comments"></i> {{ T "comments" }}</button>
</section>
<section id="disqus_thread"></section>
<script>
(function () {
// Don't ever inject Disqus on localhost--it creates unwanted
// discussions from 'localhost:1313' on your Disqus account...
if (window.location.hostname == "localhost")
return;
var disqus_loaded = false;
var disqus_shortname = '{{ .Site.Config.Services.Disqus.Shortname }}';
var disqus_button = document.getElementById("show-comments");
var disqus_autoload = {{ .Site.Params.commentAutoload }};
var disable_comment = {{ .Params.disableComments }};
if (disable_comment)
return;
disqus_button.style.display = "";
if (disqus_autoload){
disqus();
}else{
disqus_button.addEventListener("click", disqus, false);
}
function disqus() {
if (!disqus_loaded) {
disqus_loaded = true;
var e = document.createElement("script");
e.type = "text/javascript";
e.async = true;
e.src = "//" + disqus_shortname + ".disqus.com/embed.js";
(document.getElementsByTagName("head")[0] ||
document.getElementsByTagName("body")[0])
.appendChild(e);
//Hide the button after opening
document.getElementById("show-comments").style.display = "none";
}
}
//Opens comments when linked to directly
var hash = window.location.hash.substr(1);
if (hash.length > 8) {
if (hash.substring(0, 8) == "comment-") {
disqus();
}
}
//Remove this is you don't want to load comments for search engines
if (/bot|google|baidu|bing|msn|duckduckgo|slurp|yandex/i.test(navigator.userAgent)) {
disqus();
}
})();
</script>

View File

@ -0,0 +1,7 @@
{{if isset .Params "images" }}
<div class="featured_image">
<a href="{{ .Permalink }}" title="{{ .Title }}">
<img src="{{ index .Params.images 0 }}">
</a>
</div>
{{ end }}

View File

@ -0,0 +1,27 @@
</main>
<footer>
<ul>
<li>
<h6>{{ if .Site.Copyright }}{{ .Site.Copyright | markdownify }} | {{ end }}
{{ T "rendered" }} <a href="https://gohugo.io" title="Hugo">Hugo</a> |
<a href="{{.Site.BaseURL}}index.xml">{{ T "subscribe" }} </a></h6>
</li>
{{ $currentPage := . }}
{{ range .Site.Menus.footer }}
<li>
<h6><a class="{{if or ($currentPage.IsMenuCurrent "footer" .) ($currentPage.HasMenuCurrent "footer" .) }}active{{end}}" href="{{ .URL | relURL }}">
<i class="fa-li fa {{ .Pre }} fa-lg"></i><span>{{ .Name }}</span>
</a></h6>
</li>
{{ end }}
</ul>
</footer>
</div>
<script src="{{ "js/scripts.js" | relURL }}"></script>
{{ if .Site.Config.Services.GoogleAnalytics }}
{{ template "_internal/google_analytics.html" . }}
{{ end }}
{{ partial "user_footer" . }}
</body>
</html>

View File

@ -0,0 +1,46 @@
<!doctype html>
<html lang="{{ .Site.LanguageCode | default "en" }}">
<head>
<title>{{ if and (not .IsHome) (.Title) }}{{ .Params.Title }} - {{ end }}{{ .Site.Title }}</title>
{{ partial "meta" . }}
{{ partialCached "header_includes" . -}}
{{ if (templates.Exists "partials/header_supplement.html") }}
{{ partial "header_supplement.html" . -}}
{{ end }}
</head>
<body>
<div id="container">
<header>
{{ partial "site_logo" . }}
<h1>
<a href="{{ relLangURL "" }}">{{ .Site.Title | markdownify }}</a>
</h1>
<ul id="social-media">
{{- range .Site.Languages -}}
{{ if ne .LanguageName $.Site.Language.LanguageName }}
<li><a href="/{{ .Lang }}">{{ .LanguageName }}</a></li>
{{ end }}
{{- end -}}
{{- range .Site.Data.social.social_icons -}}
{{- if isset $.Site.Params.Author .id }}
<li>
<a href="{{ printf .url (index $.Site.Params.Author .id) }}" title="{{ .title }}">
<i class="{{ .icon }} fa-lg"></i>
</a>
</li>
{{- end -}}
{{ end }}
</ul>
{{ with .Site.Params.tagline }}
<p><em>{{ . | markdownify }}</em></p>
{{ end }}
</header>
{{ partial "nav" . }}
<main>

View File

@ -0,0 +1,32 @@
{{ with .Site.Params.favicon}}
<link rel="shortcut icon" href="{{ . }}" />
{{ end }}
{{- if .Site.Params.mathjax }}
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script src="/js/mathjax-config.js" defer></script>
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
{{- end }}
{{- if .Site.Params.katex }}
<link rel="stylesheet" href="/css/katex.min.css" >
<script defer src="/js/katex.min.js"></script>
<script defer src="/js/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
{{- end }}
<link rel="stylesheet" href="{{ "css/normalize.min.css" | relURL }}" />
<link rel="stylesheet" href="{{ "fontawesome/css/all.min.css" | absURL }}" />
{{ if .Site.Params.google_fonts }}
{{ $url_part := (delimit .Site.Params.google_fonts "|") | safeHTMLAttr }}
<link {{ printf "href=\"//fonts.googleapis.com/css?family=%s\"" $url_part | safeHTMLAttr }} rel="stylesheet">
{{ else}}
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Slab|Ruda" />
{{ end }}
{{ if .Site.Params.disableDarkModeCSS }}
<link rel="stylesheet" type="text/css" href="{{ "css/styles-light.css" | relURL}}" />
{{ else}}
<link rel="stylesheet" type="text/css" href="{{ "css/styles.css" | relURL}}" />
{{- end -}}
{{- range .Site.Params.customCSS -}}
<link rel='stylesheet' href='{{ . | absURL }}'>
{{- end -}}

View File

@ -0,0 +1,10 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="{{ .Site.Params.description | default "The HTML5 Herald" }}" />
<meta name="author" content="{{ .Params.Author | default .Site.Params.Author.name }}" />
{{- with .OutputFormats.Get "rss" -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
{{- end -}}
{{ template "_internal/opengraph.html" . }}
{{ template "_internal/twitter_cards.html" . }}
{{ hugo.Generator -}}

View File

@ -0,0 +1,12 @@
{{ $currentPage := . }}
<nav>
<ul>
{{ range .Site.Menus.main }}
<li>
<a class="{{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }}active{{end}}" href="{{ .URL | relURL }}">
<i class="fa-li fa {{ .Pre }} fa-lg"></i><span>{{ .Name }}</span>
</a>
</li>
{{ end }}
</ul>
</nav>

View File

@ -0,0 +1,24 @@
{{ if not .Params.meta }}
<section class="post-nav">
<ul>
<li>
{{ with .PrevInSection }}
<a href="{{.Permalink}}"><i class="fa fa-chevron-circle-left"></i> {{ .Title }}</a>
{{ end }}
</li>
<li>
{{ with .NextInSection }}
<a href="{{.Permalink}}">{{ .Title }} <i class="fa fa-chevron-circle-right"></i> </a>
{{ end }}
</li>
</ul>
</section>
{{ if not .Params.disableComments }}
{{ if .Site.Params.UtterancesRepo }}
{{ partial "utterances" . }}
{{ end }}
{{ if .Site.Config.Services.Disqus.Shortname }}
{{ partial "disqus" . }}
{{ end }}
{{ end }}
{{ end }}

View File

@ -0,0 +1,7 @@
{{ if or (.Site.Params.site_logo) (.Params.replace_site_logo) }}
<div class="site_logo featured_image">
<a href="{{ relLangURL "/" }}">
<img class="{{ .Site.Params.site_logo_classes }}" src="{{ if .Params.replace_site_logo }}{{ index .Params.images 0 }}{{ else }}{{ .Site.Params.site_logo }}{{ end }}">
</a>
</div>
{{ end }}

View File

@ -0,0 +1,29 @@
<section id="utterances"></section>
<script>
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
let s = document.createElement("script");
s.setAttribute("repo", "{{ .Site.Params.utterancesRepo }}");
s.src = "https://utteranc.es/client.js";
{{ with .Site.Params.utterancesIssueTerm }}
s.setAttribute("issue-term", "{{ . }}");
{{ end }}
{{ with .Site.Params.utterancesDarkTheme }}
s.setAttribute("theme", "{{ . }}")
{{ end }}
document.getElementById("utterances").innerHTML = "";
document.getElementById("utterances").appendChild(s);
} else {
let s = document.createElement("script");
s.setAttribute("repo", "{{ .Site.Params.utterancesRepo }}");
s.src = "https://utteranc.es/client.js";
{{ with .Site.Params.utterancesIssueTerm }}
s.setAttribute("issue-term", "{{ . }}");
{{ end }}
{{ with .Site.Params.utterancesLightTheme }}
s.setAttribute("theme", "{{ . }}")
{{ end }}
document.getElementById("utterances").innerHTML = "";
document.getElementById("utterances").appendChild(s);
}
</script>

1
themes/kiera/static/css/katex.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
/*# sourceMappingURL=normalize.min.css.map */

View File

@ -0,0 +1,463 @@
body {
margin: 0;
padding: 0;
overflow-x: hidden;
font-family: "Roboto Slab", serif;
color: #ffffff;
background: #2A2829;
}
h1,
h2,
h3,
h4,
h5,
h6,
time {
font-family: "Ruda", sans-serif;
}
#container {
margin: 0;
padding: 0;
max-width: 100vw;
min-height: 100vh;
display: flex;
flex-direction: column;
}
#container > * {
width: 700px;
margin: 0 auto;
}
@media only screen and (max-width: 800px) {
#container > * {
width: auto;
margin: 0 1.2em;
}
}
#container header {
margin-bottom: 1em;
}
#container header h1 {
font-size: 2.4rem;
}
#container header h1 a {
color: #ffffff;
}
#container header ul {
display: flex;
margin: 0;
padding: 0;
list-style: none;
float: right;
}
#container header ul li {
margin-left: 1em;
}
@media only screen and (max-width: 800px) {
#container header ul {
float: none;
}
#container header ul li {
margin: 0 1em 0 0;
}
}
#container nav {
border-bottom: solid 3px #cecece;
padding-bottom: 0.5em;
font-family: "Ruda", sans-serif;
}
#container nav a {
text-decoration: none;
}
#container nav ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
justify-content: flex-end;
}
#container nav ul li {
margin-left: 1em;
}
#container nav ul li a.active {
border-bottom: 0.5em solid #ffffff;
}
#container main {
flex: 1 0 0;
line-height: 1.5;
font-size: 1.2rem;
}
#container main section#home ul {
margin: 0;
padding: 0;
list-style: none;
}
#container main section#home ul li {
margin: 0.5em 0;
padding-bottom: 0.5em;
}
#container main section#home ul li h2 {
margin: 0.2em 0;
}
#container main section#home span {
color: #666666;
}
#container main section#list ul {
margin: 0;
padding: 0;
list-style: none;
}
#container main section#list ul li {
padding: 0.5em 0;
border-bottom: 1px solid #cecece;
}
#container main section#list ul li time, #container main section#list ul li span.count {
float: right;
}
#container main section#list ul li:last-child {
border-bottom: none;
}
#container main section.post-nav ul {
margin: 0.5em 0;
padding: 0.5em 0 0;
list-style: none;
display: flex;
justify-content: space-between;
border-top: 1px solid #f7f7f7;
font-size: 0.9em;
}
#container main section.post-nav ul li:last-child {
text-align: right;
}
#container main article > pre {
background-color: #a0a04b;
overflow-x: auto;
padding: 0.8em;
font-size: 0.9em;
box-shadow: 0 -1px 0 #bbbbbb inset;
}
#container main article .highlight pre {
overflow-x: auto;
font-size: 0.9em;
padding: 0.8em;
}
#container main article pre code {
font-size: 0.9em;
}
#container main article p code {
padding: 0.2em;
background-color: #d03232;
font-size: 0.9em;
}
#container main article p kbd {
display: inline-block;
padding: 0.2em 0.3em;
font-size: 0.8em;
line-height: 1em;
color: #555555;
vertical-align: middle;
background-color: #fcfcfc;
border-width: 1px;
border-style: solid;
border-color: #cccccc #cccccc #bbbbbb;
border-image: none;
border-radius: 3px;
box-shadow: 0 -1px 0 #bbbbbb inset;
}
#container main h1 {
margin-bottom: 1rem;
}
#container footer {
border-top: solid 1px #cecece;
}
#container footer h6 {
font-size: 0.8em;
}
#container footer ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
justify-content: flex-end;
}
#container footer ul li:first-child {
margin-right: auto;
}
#container footer ul li:not(:first-child) {
margin-left: 1em;
}
#container footer ul li a.active {
border-bottom: 0.2em solid #ffffff;
}
#container textarea, input {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
background-color: #fff;
border: 1px solid #cecece;
border-radius: 3px;
color: #000000;
/*display: -webkit-inline-box;*/
display: -ms-inline-flexbox;
display: inline-flex;
font-size: 14px;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
line-height: 24px;
padding: 8px;
position: relative;
box-shadow: inset 0 1px 2px rgba(17, 17, 17, 0.1);
max-width: 100%;
width: 100%;
}
#container button {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border: 1px solid #d3d6db;
border-radius: 3px;
color: #666666;
/*display: -webkit-inline-box;*/
display: -ms-inline-flexbox;
display: inline-flex;
position: relative;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
padding: 10px;
text-align: center;
}
#container button:hover {
border: solid #cecece 2px;
text-decoration: none;
}
.meta-aside, #container main section#home ul li aside, #container main article aside {
margin: 0.5em 0;
font-family: "Ruda", sans-serif;
color: #909090;
font-size: 0.8em;
}
.meta-aside ul, #container main section#home ul li aside ul, #container main article aside ul {
margin: 0;
padding: 0;
list-style: none;
}
.meta-aside ul li, #container main section#home ul li aside ul li, #container main article aside ul li {
margin: 0;
padding: 0;
}
a {
color: #ffffff;
/*text-decoration: none;*/
}
.image, figure img, img {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
/**
:not(#home) and :not(#list) is avoiding full width image in list of posts, e.g. home and taxonomy pages
*/
header .full-image, header figure.full img, header img[src*="full"],
article .full-image, article figure.full img, article img[src*="full"],
section:not(#list):not(#home) .full-image, section:not(#list):not(#home) figure.full img, section:not(#list):not(#home) img[src*="full"] {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
@supports (width: 100vw) {
header .full-image, header figure.full img, header img[src*="full"],
article .full-image, article figure.full img, article img[src*="full"],
section:not(#list):not(#home) .full-image, section:not(#list):not(#home) figure.full img, section:not(#list):not(#home) img[src*="full"] {
width: 100vw;
position: relative;
left: 50%;
right: 50%;
margin-left: -50vw;
margin-right: -50vw;
}
}
.mid-image, figure.mid img, img[src*="mid"] {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
@supports (width: 100vw) {
.mid-image, figure.mid img, img[src*="mid"] {
width: 800px;
position: relative;
left: 50%;
right: 50%;
margin-left: -400px;
margin-right: -400px;
}
@media only screen and (max-width: 800px) {
.mid-image, figure.mid img, img[src*="mid"] {
width: 100%;
left: 0;
right: 0;
margin: 0;
}
}
}
.float-image, figure.float img, img[src*="float"] {
width: 300px;
float: left;
margin: 0 1em 1em -3em;
box-shadow: 0 3px 3px #bbbbbb;
}
@media only screen and (max-width: 800px) {
.float-image, figure.float img, img[src*="float"] {
float: none;
margin: 0;
width: 100%;
}
}
.float-image-right, figure.float-right img, img[src*="float-right"] {
width: 300px;
float: right;
margin: 0 -3em 1em 1em;
box-shadow: 0 3px 3px #bbbbbb;
}
@media only screen and (max-width: 800px) {
.float-image-right, figure.float-right img, img[src*="float-right"] {
float: none;
margin: 0;
width: 100%;
}
}
figure {
margin: 0;
}
figure figcaption p {
margin-top: 0.3em;
font-size: 0.8em;
font-style: italic;
}
figure.full {
margin: 0;
}
figure.mid {
margin: 0;
}
figure.float {
margin: 0;
float: left;
}
figure.float-right {
margin: 0;
float: right;
}
figure.float-right figcaption {
margin-left: 1em;
}
table {
width: 100%;
border-bottom: solid 1px #cecece;
}
table thead {
background-color: #cecece;
}
blockquote {
margin: 1em;
border-left: solid 0.1em #797979;
padding: 0.5em 2em;
position: relative;
background-color: #3e3b3c;
box-shadow: 0 -1px 0 #797979 inset;
}
blockquote::before {
content: "\f10d";
font-family: "Font Awesome 5 Free";
font-weight: 900;
font-size: 3em;
color: rgba(192, 192, 192, 0.3);
position: absolute;
left: 6px;
top: 0;
}
@media only screen and (max-width: 800px) {
blockquote {
margin: 1em 0;
padding: 0.5em;
}
}
dl dd {
font-style: italic;
}
ul.pagination {
display: flex;
justify-content: center;
margin: 1em 0 0;
padding: 0.5em 0;
list-style: none;
}
ul.pagination li {
padding: 0 1em;
}

View File

@ -0,0 +1,462 @@
body {
margin: 0;
padding: 0;
overflow-x: hidden;
font-family: "Roboto Slab", serif;
color: #333333;
}
h1,
h2,
h3,
h4,
h5,
h6,
time {
font-family: "Ruda", sans-serif;
}
#container {
margin: 0;
padding: 0;
max-width: 100vw;
min-height: 100vh;
display: flex;
flex-direction: column;
}
#container > * {
width: 700px;
margin: 0 auto;
}
@media only screen and (max-width: 800px) {
#container > * {
width: auto;
margin: 0 1.2em;
}
}
#container header {
margin-bottom: 1em;
}
#container header h1 {
font-size: 2.4rem;
}
#container header h1 a {
color: #000000;
}
#container header ul {
display: flex;
margin: 0;
padding: 0;
list-style: none;
float: right;
}
#container header ul li {
margin-left: 1em;
}
@media only screen and (max-width: 800px) {
#container header ul {
float: none;
}
#container header ul li {
margin: 0 1em 0 0;
}
}
#container nav {
border-bottom: solid 3px #cecece;
padding-bottom: 0.5em;
font-family: "Ruda", sans-serif;
}
#container nav a {
text-decoration: none;
}
#container nav ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
justify-content: flex-end;
}
#container nav ul li {
margin-left: 1em;
}
#container nav ul li a.active {
border-bottom: 0.5em solid #666666;
}
#container main {
flex: 1 0 0;
line-height: 1.5;
font-size: 1.2rem;
}
#container main section#home ul {
margin: 0;
padding: 0;
list-style: none;
}
#container main section#home ul li {
margin: 0.5em 0;
padding-bottom: 0.5em;
}
#container main section#home ul li h2 {
margin: 0.2em 0;
}
#container main section#home span {
color: #666666;
}
#container main section#list ul {
margin: 0;
padding: 0;
list-style: none;
}
#container main section#list ul li {
padding: 0.5em 0;
border-bottom: 1px solid #cecece;
}
#container main section#list ul li time, #container main section#list ul li span.count {
float: right;
}
#container main section#list ul li:last-child {
border-bottom: none;
}
#container main section.post-nav ul {
margin: 0.5em 0;
padding: 0.5em 0 0;
list-style: none;
display: flex;
justify-content: space-between;
border-top: 1px solid #f7f7f7;
font-size: 0.9em;
}
#container main section.post-nav ul li:last-child {
text-align: right;
}
#container main article > pre {
background-color: #ffffcc;
overflow-x: auto;
padding: 0.8em;
font-size: 0.9em;
box-shadow: 0 -1px 0 #bbbbbb inset;
}
#container main article .highlight pre {
overflow-x: auto;
font-size: 0.9em;
padding: 0.8em;
}
#container main article pre code {
font-size: 0.9em;
}
#container main article p code {
padding: 0.2em;
background-color: #ffcccc;
font-size: 0.9em;
}
#container main article p kbd {
display: inline-block;
padding: 0.2em 0.3em;
font-size: 0.8em;
line-height: 1em;
color: #555555;
vertical-align: middle;
background-color: #fcfcfc;
border-width: 1px;
border-style: solid;
border-color: #cccccc #cccccc #bbbbbb;
border-image: none;
border-radius: 3px;
box-shadow: 0 -1px 0 #bbbbbb inset;
}
#container main h1 {
margin-bottom: 1rem;
}
#container footer {
border-top: solid 1px #cecece;
}
#container footer h6 {
font-size: 0.8em;
}
#container footer ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
justify-content: flex-end;
}
#container footer ul li:first-child {
margin-right: auto;
}
#container footer ul li:not(:first-child) {
margin-left: 1em;
}
#container footer ul li a.active {
border-bottom: 0.2em solid #666666;
}
#container textarea, input {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
background-color: #fff;
border: 1px solid #cecece;
border-radius: 3px;
color: #000000;
/*display: -webkit-inline-box;*/
display: -ms-inline-flexbox;
display: inline-flex;
font-size: 14px;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
line-height: 24px;
padding: 8px;
position: relative;
box-shadow: inset 0 1px 2px rgba(17, 17, 17, 0.1);
max-width: 100%;
width: 100%;
}
#container button {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border: 1px solid #d3d6db;
border-radius: 3px;
color: #666666;
/*display: -webkit-inline-box;*/
display: -ms-inline-flexbox;
display: inline-flex;
position: relative;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
padding: 10px;
text-align: center;
}
#container button:hover {
border: solid #cecece 2px;
text-decoration: none;
}
.meta-aside, #container main section#home ul li aside, #container main article aside {
margin: 0.5em 0;
font-family: "Ruda", sans-serif;
color: #909090;
font-size: 0.8em;
}
.meta-aside ul, #container main section#home ul li aside ul, #container main article aside ul {
margin: 0;
padding: 0;
list-style: none;
}
.meta-aside ul li, #container main section#home ul li aside ul li, #container main article aside ul li {
margin: 0;
padding: 0;
}
a {
color: #666666;
/*text-decoration: none;*/
}
.image, figure img, img {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
/**
:not(#home) and :not(#list) is avoiding full width image in list of posts, e.g. home and taxonomy pages
*/
header .full-image, header figure.full img, header img[src*="full"],
article .full-image, article figure.full img, article img[src*="full"],
section:not(#list):not(#home) .full-image, section:not(#list):not(#home) figure.full img, section:not(#list):not(#home) img[src*="full"] {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
@supports (width: 100vw) {
header .full-image, header figure.full img, header img[src*="full"],
article .full-image, article figure.full img, article img[src*="full"],
section:not(#list):not(#home) .full-image, section:not(#list):not(#home) figure.full img, section:not(#list):not(#home) img[src*="full"] {
width: 100vw;
position: relative;
left: 50%;
right: 50%;
margin-left: -50vw;
margin-right: -50vw;
}
}
.mid-image, figure.mid img, img[src*="mid"] {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
@supports (width: 100vw) {
.mid-image, figure.mid img, img[src*="mid"] {
width: 800px;
position: relative;
left: 50%;
right: 50%;
margin-left: -400px;
margin-right: -400px;
}
@media only screen and (max-width: 800px) {
.mid-image, figure.mid img, img[src*="mid"] {
width: 100%;
left: 0;
right: 0;
margin: 0;
}
}
}
.float-image, figure.float img, img[src*="float"] {
width: 300px;
float: left;
margin: 0 1em 1em -3em;
box-shadow: 0 3px 3px #bbbbbb;
}
@media only screen and (max-width: 800px) {
.float-image, figure.float img, img[src*="float"] {
float: none;
margin: 0;
width: 100%;
}
}
.float-image-right, figure.float-right img, img[src*="float-right"] {
width: 300px;
float: right;
margin: 0 -3em 1em 1em;
box-shadow: 0 3px 3px #bbbbbb;
}
@media only screen and (max-width: 800px) {
.float-image-right, figure.float-right img, img[src*="float-right"] {
float: none;
margin: 0;
width: 100%;
}
}
figure {
margin: 0;
}
figure figcaption p {
margin-top: 0.3em;
font-size: 0.8em;
font-style: italic;
}
figure.full {
margin: 0;
}
figure.mid {
margin: 0;
}
figure.float {
margin: 0;
float: left;
}
figure.float-right {
margin: 0;
float: right;
}
figure.float-right figcaption {
margin-left: 1em;
}
table {
width: 100%;
border-bottom: solid 1px #cecece;
}
table thead {
background-color: #cecece;
}
blockquote {
margin: 1em;
border-left: solid 0.1em #cecece;
padding: 0.5em 2em;
position: relative;
background-color: #efefef;
box-shadow: 0 -1px 0 #bbbbbb inset;
}
blockquote::before {
content: "\f10d";
font-family: "Font Awesome 5 Free";
font-weight: 900;
font-size: 3em;
color: rgba(192, 192, 192, 0.3);
position: absolute;
left: 6px;
top: 0;
}
@media only screen and (max-width: 800px) {
blockquote {
margin: 1em 0;
padding: 0.5em;
}
}
dl dd {
font-style: italic;
}
ul.pagination {
display: flex;
justify-content: center;
margin: 1em 0 0;
padding: 0.5em 0;
list-style: none;
}
ul.pagination li {
padding: 0 1em;
}

View File

@ -0,0 +1,2 @@
@import url(./styles-light.css);
@import url(./styles-dark.css) (prefers-color-scheme: dark);

View File

@ -0,0 +1,165 @@
Fonticons, Inc. (https://fontawesome.com)
--------------------------------------------------------------------------------
Font Awesome Free License
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
--------------------------------------------------------------------------------
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
The Font Awesome Free download is licensed under a Creative Commons
Attribution 4.0 International License and applies to all icons packaged
as SVG and JS file types.
--------------------------------------------------------------------------------
# Fonts: SIL OFL 1.1 License
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
Copyright (c) 2023 Fonticons, Inc. (https://fontawesome.com)
with Reserved Font Name: "Font Awesome".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
SIL OPEN FONT LICENSE
Version 1.1 - 26 February 2007
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting — in part or in whole — any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
--------------------------------------------------------------------------------
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
Copyright 2023 Fonticons, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in the
Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
--------------------------------------------------------------------------------
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};return function(){r.d(o,{default:function(){return d}});var e=r(771),t=r.n(e);const n=function(e,t,n){let r=n,o=0;const i=e.length;for(;r<t.length;){const n=t[r];if(o<=0&&t.slice(r,r+i)===e)return r;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},i=/^\\begin{/;var a=function(e,t){let r;const o=[],a=new RegExp("("+t.map((e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(a),-1!==r;){r>0&&(o.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const a=t.findIndex((t=>e.startsWith(t.left)));if(r=n(t[a].right,e,t[a].left.length),-1===r)break;const l=e.slice(0,r+t[a].right.length),s=i.test(l)?l:e.slice(t[a].left.length,r);o.push({type:"math",data:s,rawData:l,display:t[a].display}),e=e.slice(r+t[a].right.length)}return""!==e&&o.push({type:"text",data:e}),o};const l=function(e,n){const r=a(e,n.delimiters);if(1===r.length&&"text"===r[0].type)return null;const o=document.createDocumentFragment();for(let e=0;e<r.length;e++)if("text"===r[e].type)o.appendChild(document.createTextNode(r[e].data));else{const i=document.createElement("span");let a=r[e].data;n.displayMode=r[e].display;try{n.preProcess&&(a=n.preProcess(a)),t().render(a,i,n)}catch(i){if(!(i instanceof t().ParseError))throw i;n.errorCallback("KaTeX auto-render: Failed to parse `"+r[e].data+"` with ",i),o.appendChild(document.createTextNode(r[e].rawData));continue}o.appendChild(i)}return o},s=function(e,t){for(let n=0;n<e.childNodes.length;n++){const r=e.childNodes[n];if(3===r.nodeType){let o=r.textContent,i=r.nextSibling,a=0;for(;i&&i.nodeType===Node.TEXT_NODE;)o+=i.textContent,i=i.nextSibling,a++;const s=l(o,t);if(s){for(let e=0;e<a;e++)r.nextSibling.remove();n+=s.childNodes.length-1,e.replaceChild(s,r)}else n+=a}else if(1===r.nodeType){const e=" "+r.className+" ";-1===t.ignoredTags.indexOf(r.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(" "+t+" ")))&&s(r,t)}}};var d=function(e,t){if(!e)throw new Error("No element provided to render");const n={};for(const e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},s(e,n)}}(),o=o.default}()}));

1
themes/kiera/static/js/katex.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,9 @@
window.MathJax = {
tex: {
tags: "ams",
inlineMath: [['$', '$'], ['\\(', '\\)']]
},
svg: {
fontCache: 'global'
}
};

View File

@ -0,0 +1 @@
// nothing here yet.

17
themes/kiera/theme.toml Normal file
View File

@ -0,0 +1,17 @@
name = "Kiera"
license = "MIT"
licenselink = "https://github.com/funkydan2/hugo-kiera/blob/master/LICENSE.md"
description = "Hugo Theme for creative and technical writing"
homepage = "https://github.com/funkydan2/hugo-kiera"
tags = ["blog","minimal","responsive"]
features = ["blog","disqus","google-analytics","font-awesome"]
min_version = "0.128.0"
[author]
name = "Daniel Saunders"
homepage = "https://github.com/funkydan2"
[original]
name = "b. avianto"
homepage = "https://avianto.com"
repo = "https://github.com/avianto/hugo-kiera"