This commit is contained in:
Daniel 2026-05-08 22:13:54 +02:00
parent b976bbcfa2
commit 175457babe
16 changed files with 1218 additions and 5 deletions

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "themes/pelican-hyde-retro"]
path = themes/pelican-hyde-retro
url = https://code.danielnagel.at/daniel/pelican-hyde-retro.git

View File

@ -18,7 +18,7 @@ TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
THEME = "themes/pelican-hyde-retro"
THEME = "theme"
MARKDOWN = {

22
theme/LICENSE Normal file
View File

@ -0,0 +1,22 @@
The MIT License (MIT)
Copyright (c) 2015 José Guilherme Vanz
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.

55
theme/README.md Normal file
View File

@ -0,0 +1,55 @@
# pelican-hyde
The pelican-hyde is a [Pelican](https://github.com/getpelican) theme inspired on the beautiful [Hyde](http://hyde.getpoole.com/) Jekyll theme
You can see a live demo [here](http://jvanz.github.io/)
![Screenshot](screenshot.png)
Pull requests are welcome
## Settings
List of Pelican's settings that are supported by this theme. Refer to the
[Pelican's documentation](https://docs.getpelican.com/en/stable/settings.html)
for more details.
- `FEED_*` and `*_FEED_*`
- `DEFAULT_PAGINATION`
- `DISPLAY_PAGES_ON_MENU`
- `DISQUS_SITENAME`
- `GOOGLE_ANALYTICS`
- `GA_COOKIE_DOMAIN`
- `SITESUBTITLE`
- `MENUITEMS`
- `SOCIAL`
Additional settings:
- `BIO` - short biography to display in the sidebar, eg. `Hello world`
- `PROFILE_IMAGE` - image to display in the sidebar, eg. `avatar.png`
- `FOOTER_TEXT` - footer to display in the sidebar, eg. `(C) 2020 Foo Bar`
- `COLOR_THEME` - base colors for the theme, choose from `08` to `0f`,
refer to <https://github.com/poole/hyde> for details.
- `FONT_AWESOME_CSS` - URL to get Font Awesome as CSS
- `FONT_AWESOME_JS` - URL to get Font Awesome as Javascript
- `FONT_ACADEMICONS` - set to `True` to fetch the [Academicons font](https://jpswalsh.github.io/academicons/)
By default, the theme uses **Fork Awesome**, which is fetched from
`cdn.jsdelivr.net`. Fork Awesome is a drop-in replacement for Font Awesome v4,
but is not compatible with Font Awesome v5 and later, so if you want to use
Font Awesome v5+, setting `FONT_AWESOME_CSS` is not enough, you will also need
to modify the templates.
## Authors
- Original theme by [Mark Otto](https://github.com/mdo): <https://github.com/poole/hyde>
- Ported to Pelican by [José Guilherme Vanz](https://github.com/jvanz)
## License
Released under the [MIT license](LICENSE)

329
theme/css/hyde.css Normal file
View File

@ -0,0 +1,329 @@
/*
* __ __
* /\ \ /\ \
* \ \ \___ __ __ \_\ \ __
* \ \ _ `\/\ \/\ \ /'_` \ /'__`\
* \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/
* \ \_\ \_\/`____ \ \___,_\ \____\
* \/_/\/_/`/___/> \/__,_ /\/____/
* /\___/
* \/__/
*
* Designed, built, and released under MIT license by @mdo. Learn more at
* https://github.com/poole/hyde.
*/
/*
* Contents
*
* Global resets
* Sidebar
* Container
* Reverse layout
* Themes
*/
/*
* Global resets
*
* Update the foundational and global aspects of the page.
*/
html {
font-size: 16px;
}
/*
* Sidebar
*
* Flexible banner for housing site name, intro, and "footer" content. Starts
* out above content in mobile and later moves to the side with wider viewports.
*/
.sidebar {
text-align: left;
padding: 2rem 1rem;
color: #00ff41;
background-color: #000000;
}
@media (min-width: 48em) {
.sidebar {
position: fixed;
top: 0;
left: 0;
bottom: 0;
width: 18rem;
text-align: left;
}
}
/* Sidebar links */
.sidebar a {
color: #39ff14;
}
/* About section */
.sidebar-about h1 {
color: #00eb3b;
margin-top: 0;
font-family: "JetBrains Mono", "Fira Code", "Courier New", "Consolas", "Monaco", monospace;
font-size: 2rem;
font-weight: normal;
}
.sidebar-about h1 a,
.sidebar-about h1 a:hover {
text-decoration: none;
color: inherit;
}
.sidebar-about .lead {
font-size: .8rem;
}
.sidebar-about .profile-picture {
margin: 0 auto;
border-radius: 50%;
border: 2px solid #0001;
max-width: 5rem;
}
.sidebar-nav {
margin-bottom: 1rem;
list-style: none;
padding-left: 0;
}
/* Hauptpunkte: größer und mehr Abstand */
.sidebar-nav>li {
margin-top: 0.6rem;
}
.sidebar-nav>li>a {
font-size: 1.05rem;
font-weight: bold;
}
/* Unterpunkte: kleiner und eingerückt */
.sidebar-subnav {
list-style: none;
padding-left: 1rem;
margin-top: 0.2rem;
}
.sidebar-subnav>li>a {
font-size: 0.85rem;
}
/* CLI-Style-Pfeil vor Unterpunkten */
.sidebar-subnav>li::before {
content: " ";
color: #00ff41;
}
.sidebar-social {
display: flex;
justify-content: center;
align-items: center;
}
.sidebar-social-item {
display: block;
padding: .25rem 0.8rem;
background: #fff2;
margin: 0 .2rem;
border-radius: .25rem;
text-transform: uppercase;
font-size: .8rem;
font-weight: bold;
}
a.sidebar-social-item:hover,
a.sidebar-social-item:focus {
background: #0001;
text-decoration: none;
}
.sidebar-social-item.active {
color: #0001;
background: #fff;
}
a.sidebar-social-item.active:hover,
a.sidebar-social-item.active:focus {
color: #fff;
}
.sidebar-footer {
font-size: .7rem;
margin-bottom: 0;
margin-top: .5rem;
}
/* Sticky sidebar
*
* Add the `sidebar-sticky` class to the sidebar's container to affix it the
* contents to the bottom of the sidebar in tablets and up.
*/
@media (min-width: 48em) {
.sidebar-sticky {
position: absolute;
top: 2rem;
right: 1rem;
left: 1rem;
}
}
/* Container
*
* Align the contents of the site above the proper threshold with some margin-fu
* with a 25%-wide `.sidebar`.
*/
.content {
padding-top: 4rem;
padding-bottom: 4rem;
}
@media (min-width: 48em) {
.content {
max-width: 50rem;
margin-left: 20rem;
margin-right: 2rem;
}
}
@media (min-width: 64em) {
.content {
max-width: 60rem;
margin-left: 22rem;
margin-right: 4rem;
}
}
/*
* Reverse layout
*
* Flip the orientation of the page by placing the `.sidebar` on the right.
*/
@media (min-width: 48em) {
.layout-reverse .sidebar {
left: auto;
right: 0;
}
.layout-reverse .content {
margin-left: 2rem;
margin-right: 20rem;
}
}
@media (min-width: 64em) {
.layout-reverse .content {
margin-left: 4rem;
margin-right: 22rem;
}
}
/*
* Themes
*
* As of v1.1, Hyde includes optional themes to color the sidebar and links
* within blog posts. To use, add the class of your choosing to the `body`.
*/
/* Base16 (http://chriskempson.github.io/base16/#default) */
/* Red */
.theme-base-08 .sidebar {
background-color: #ac4142;
}
.theme-base-08 .content a,
.theme-base-08 .related-posts li a:hover {
color: #ac4142;
}
/* Orange */
.theme-base-09 .sidebar {
background-color: #d28445;
}
.theme-base-09 .content a,
.theme-base-09 .related-posts li a:hover {
color: #d28445;
}
/* Yellow */
.theme-base-0a .sidebar {
background-color: #f4bf75;
}
.theme-base-0a .content a,
.theme-base-0a .related-posts li a:hover {
color: #f4bf75;
}
/* Green */
.theme-base-0b .sidebar {
background-color: #90a959;
}
.theme-base-0b .content a,
.theme-base-0b .related-posts li a:hover {
color: #90a959;
}
/* Cyan */
.theme-base-0c .sidebar {
background-color: #75b5aa;
}
.theme-base-0c .content a,
.theme-base-0c .related-posts li a:hover {
color: #75b5aa;
}
/* Blue */
.theme-base-0d .sidebar {
background-color: #111111;
border-right: 2px solid #00ff41;
}
.theme-base-0d .content a,
.theme-base-0d .related-posts li a:hover {
color: #39ff14;
}
/* Magenta */
.theme-base-0e .sidebar {
background-color: #aa759f;
}
.theme-base-0e .content a,
.theme-base-0e .related-posts li a:hover {
color: #aa759f;
}
/* Brown */
.theme-base-0f .sidebar {
background-color: #8f5536;
}
.theme-base-0f .content a,
.theme-base-0f .related-posts li a:hover {
color: #8f5536;
}

499
theme/css/poole.css Normal file
View File

@ -0,0 +1,499 @@
/*
* ___
* /\_ \
* _____ ___ ___\//\ \ __
* /\ '__`\ / __`\ / __`\\ \ \ /'__`\
* \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/
* \ \ ,__/\ \____/\ \____//\____\ \____\
* \ \ \/ \/___/ \/___/ \/____/\/____/
* \ \_\
* \/_/
*
* Designed, built, and released under MIT license by @mdo. Learn more at
* https://github.com/poole/poole.
*/
/*
* Contents
*
* Body resets
* Custom type
* Messages
* Container
* Masthead
* Posts and pages
* Pagination
* Reverse layout
* Themes
*/
/*
* Body resets
*
* Update the foundational and global aspects of the page.
*/
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
}
html {
font-family: "JetBrains Mono", "Fira Code", "Courier New", "Consolas", "Monaco", monospace;
line-height: 1.5;
}
body {
color: #00ff41;
background-color: #1b1b1d;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
/* No `:visited` state is required by default (browsers will use `a`) */
a {
color: #39ff14;
text-decoration: underline;
}
a strong {
color: inherit;
}
/* `:focus` is linked to `:hover` for basic accessibility */
a:hover,
a:focus {
text-decoration: underline;
}
/* Headings */
h1,
h2,
h3,
h4,
h5,
h6 {
margin-bottom: .5rem;
font-weight: bold;
line-height: 1.25;
color: #00ff41;
text-rendering: optimizeLegibility;
}
h1 {
font-size: 2rem;
}
h2 {
margin-top: 2rem;
font-size: 1.6rem;
}
h3 {
margin-top: 2rem;
font-size: 1.4rem;
}
h4,
h5,
h6 {
margin-top: 1rem;
font-size: 1.2rem;
}
/* Body text */
p {
margin-top: 0;
margin-bottom: 1rem;
}
strong {
color: #303030;
}
/* Lists */
ul,
ol,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
dt {
font-weight: bold;
}
dd {
margin-bottom: .5rem;
}
/* Misc */
hr {
position: relative;
margin: 1.5rem 0;
border: 0;
border-top: 1px solid #eee;
border-bottom: 1px solid #fff;
}
abbr {
font-size: 85%;
font-weight: bold;
color: #555;
text-transform: uppercase;
}
abbr[title] {
cursor: help;
border-bottom: 1px dotted #e5e5e5;
}
/* Code */
code,
pre {
font-family: Menlo, Monaco, "Courier New", monospace;
}
code {
padding: .25em .5em;
font-size: 85%;
color: #bf616a;
background-color: #f9f9f9;
border-radius: 3px;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
padding: 1rem;
font-size: .8rem;
line-height: 1.4;
white-space: pre;
white-space: pre-wrap;
word-break: break-all;
word-wrap: break-word;
background-color: #f9f9f9;
}
pre code {
padding: 0;
font-size: 100%;
color: inherit;
background-color: transparent;
}
/* Pygments via Jekyll */
.highlight {
margin-bottom: 1rem;
border-radius: 4px;
}
.highlight pre {
margin-bottom: 0;
}
/* Gist via GitHub Pages */
.gist .gist-file {
font-family: Menlo, Monaco, "Courier New", monospace !important;
}
.gist .markdown-body {
padding: 15px;
}
.gist pre {
padding: 0;
background-color: transparent;
}
.gist .gist-file .gist-data {
font-size: .8rem !important;
line-height: 1.4;
}
.gist code {
padding: 0;
color: inherit;
background-color: transparent;
border-radius: 0;
}
/* Quotes */
blockquote {
padding: .5rem 1rem;
margin: .8rem 0;
color: #7a7a7a;
border-left: .25rem solid #e5e5e5;
}
blockquote p:last-child {
margin-bottom: 0;
}
@media (min-width: 30em) {
blockquote {
padding-right: 5rem;
padding-left: 1.25rem;
}
}
img {
display: block;
max-width: 100%;
margin: 0 0 1rem;
border-radius: 5px;
}
/* Tables */
table {
margin-bottom: 1rem;
width: 100%;
border: 1px solid #e5e5e5;
border-collapse: collapse;
}
td,
th {
padding: .25rem .5rem;
border: 1px solid #e5e5e5;
}
tbody tr:nth-child(odd) td,
tbody tr:nth-child(odd) th {
background-color: #f9f9f9;
}
/*
* Custom type
*
* Extend paragraphs with `.lead` for larger introductory text.
*/
.lead {
font-size: 1.25rem;
font-weight: 300;
}
/*
* Messages
*
* Show alert messages to users. You may add it to single elements like a `<p>`,
* or to a parent if there are multiple elements to show.
*/
.message {
margin-bottom: 1rem;
padding: 1rem;
color: #717171;
background-color: #f9f9f9;
}
/*
* Container
*
* Center the page content.
*/
.container {
max-width: 38rem;
padding-left: 1rem;
padding-right: 1rem;
margin-left: auto;
margin-right: auto;
}
/*
* Masthead
*
* Super small header above the content for site name and short description.
*/
.masthead {
padding-top: 1rem;
padding-bottom: 1rem;
margin-bottom: 3rem;
}
.masthead-title {
margin-top: 0;
margin-bottom: 0;
color: #505050;
}
.masthead-title a {
color: #505050;
}
.masthead-title small {
font-size: 75%;
font-weight: 400;
color: #c0c0c0;
letter-spacing: 0;
}
/*
* Posts and pages
*
* Each post is wrapped in `.post` and is used on default and post layouts. Each
* page is wrapped in `.page` and is only used on the page layout.
*/
.page,
.post {
margin-bottom: 4em;
}
/* Blog post or page title */
.page-title,
.post-title,
.post-title a {
color: #303030;
}
.page-title,
.post-title {
margin-top: 0;
}
/* Meta data line below post title */
.post-date {
display: block;
margin-top: -.5rem;
margin-bottom: 1rem;
color: #9a9a9a;
}
.post-tags {
display: inline;
margin-bottom: 1rem;
color: #9a9a9a;
}
.post-tags ul {
margin: 0;
padding: 0;
display: inline;
}
.post-tags li {
display: inline;
}
.post-tags li:after {
content: ", ";
}
.post-tags li:last-child:after {
content: "";
}
/* Related posts */
.related {
padding-top: 2rem;
padding-bottom: 2rem;
border-top: 1px solid #eee;
}
.related-posts {
padding-left: 0;
list-style: none;
}
.related-posts h3 {
margin-top: 0;
}
.related-posts li small {
font-size: 75%;
color: #999;
}
.related-posts li a:hover {
color: #268bd2;
text-decoration: none;
}
.related-posts li a:hover small {
color: inherit;
}
.read-more {
padding: .5rem .8rem;
border: 1px solid #eee;
font-size: .8rem;
margin-top: 1rem;
font-weight: bold;
}
/*
* Pagination
*
* Super lightweight (HTML-wise) blog pagination. `span`s are provide for when
* there are no more previous or next posts to show.
*/
.pagination {
overflow: hidden;
/* clearfix */
margin-left: -1rem;
margin-right: -1rem;
font-family: "PT Sans", Helvetica, Arial, sans-serif;
color: #ccc;
text-align: center;
}
/* Pagination items can be `span`s or `a`s */
.pagination-item {
display: block;
padding: 1rem;
border: 1px solid #eee;
}
.pagination-item:first-child {
margin-bottom: -1px;
}
/* Only provide a hover state for linked pagination items */
a.pagination-item:hover {
background-color: #f5f5f5;
}
@media (min-width: 30em) {
.pagination {
margin: 3rem 0;
}
.pagination-item {
float: left;
width: 50%;
}
.pagination-item:first-child {
margin-bottom: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
}
.pagination-item:last-child {
margin-left: -1px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
}

0
theme/css/style.css Normal file
View File

68
theme/css/syntax.css Normal file
View File

@ -0,0 +1,68 @@
.highlight .hll { background-color: #ffc; }
.highlight .c { color: #999; } /* Comment */
.highlight .err { color: #a00; background-color: #faa } /* Error */
.highlight .k { color: #069; } /* Keyword */
.highlight .o { color: #555 } /* Operator */
.highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #099 } /* Comment.Preproc */
.highlight .c1 { color: #999; } /* Comment.Single */
.highlight .cs { color: #999; } /* Comment.Special */
.highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #f00 } /* Generic.Error */
.highlight .gh { color: #030; } /* Generic.Heading */
.highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */
.highlight .go { color: #aaa } /* Generic.Output */
.highlight .gp { color: #009; } /* Generic.Prompt */
.highlight .gs { } /* Generic.Strong */
.highlight .gu { color: #030; } /* Generic.Subheading */
.highlight .gt { color: #9c6 } /* Generic.Traceback */
.highlight .kc { color: #069; } /* Keyword.Constant */
.highlight .kd { color: #069; } /* Keyword.Declaration */
.highlight .kn { color: #069; } /* Keyword.Namespace */
.highlight .kp { color: #069 } /* Keyword.Pseudo */
.highlight .kr { color: #069; } /* Keyword.Reserved */
.highlight .kt { color: #078; } /* Keyword.Type */
.highlight .m { color: #f60 } /* Literal.Number */
.highlight .s { color: #d44950 } /* Literal.String */
.highlight .na { color: #4f9fcf } /* Name.Attribute */
.highlight .nb { color: #366 } /* Name.Builtin */
.highlight .nc { color: #0a8; } /* Name.Class */
.highlight .no { color: #360 } /* Name.Constant */
.highlight .nd { color: #99f } /* Name.Decorator */
.highlight .ni { color: #999; } /* Name.Entity */
.highlight .ne { color: #c00; } /* Name.Exception */
.highlight .nf { color: #c0f } /* Name.Function */
.highlight .nl { color: #99f } /* Name.Label */
.highlight .nn { color: #0cf; } /* Name.Namespace */
.highlight .nt { color: #2f6f9f; } /* Name.Tag */
.highlight .nv { color: #033 } /* Name.Variable */
.highlight .ow { color: #000; } /* Operator.Word */
.highlight .w { color: #bbb } /* Text.Whitespace */
.highlight .mf { color: #f60 } /* Literal.Number.Float */
.highlight .mh { color: #f60 } /* Literal.Number.Hex */
.highlight .mi { color: #f60 } /* Literal.Number.Integer */
.highlight .mo { color: #f60 } /* Literal.Number.Oct */
.highlight .sb { color: #c30 } /* Literal.String.Backtick */
.highlight .sc { color: #c30 } /* Literal.String.Char */
.highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #c30 } /* Literal.String.Double */
.highlight .se { color: #c30; } /* Literal.String.Escape */
.highlight .sh { color: #c30 } /* Literal.String.Heredoc */
.highlight .si { color: #a00 } /* Literal.String.Interpol */
.highlight .sx { color: #c30 } /* Literal.String.Other */
.highlight .sr { color: #3aa } /* Literal.String.Regex */
.highlight .s1 { color: #c30 } /* Literal.String.Single */
.highlight .ss { color: #fc3 } /* Literal.String.Symbol */
.highlight .bp { color: #366 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #033 } /* Name.Variable.Class */
.highlight .vg { color: #033 } /* Name.Variable.Global */
.highlight .vi { color: #033 } /* Name.Variable.Instance */
.highlight .il { color: #f60 } /* Literal.Number.Integer.Long */
.css .o,
.css .o + .nt,
.css .nt + .nt { color: #999; }
.highlight .lineno { color: #ccc; display:inline-block; padding: 0 5px; border-right:1px solid #ccc; }
.highlight pre code { display: block; white-space: pre; overflow-x: auto; word-wrap: normal; }

View File

@ -0,0 +1,33 @@
{% extends "base.html" %}
{% block metadata %}
<meta name="description" content="{% if article.description %}{{ article.description }}{% else %}{{ BIO }}{% endif %}">
<meta property="og:description" content="{% if article.description %}{{ article.description }}{% else %}{{ BIO }}{% endif %}">
<meta property="og:title" content="{{ article.title }}" />
<meta property="og:type" content="article" />
<meta property="og:url" content="{{ SITEURL }}/{{ article.url }}" />
{% if article.image %}
<meta property="og:image" content="{{ article.image }}" />
{% endif %}
{% endblock %}
{% block content %}
<div class="post">
<h1 class="post-title">{{ article.title }}</h1>
<span class="post-date">{{ article.locale_date }}</span>
{{ article.content }}
{% if article.tags %}
<span class="post-tags">
Tags:
<ul>
{% for tag in article.tags %}
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a></li>
{% endfor %}
</ul>
</span>
{% endif %}
{% include 'fragments/disqus.html' %}
</div>
{% endblock %}

55
theme/templates/base.html Normal file
View File

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="{{ DEFAULT_LANG }}" prefix="og: http://ogp.me/ns#">
<head>
<link href="http://gmpg.org/xfn/11" rel="profile">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<!-- Metadata -->
{% block metadata %}
<meta name="description" content="{{ BIO }}" />
<meta property="og:description" content="{{ BIO }}" />
<meta property="og:title" content="{{ SITENAME }}{% if SITESUBTITLE %} - {{ SITESUBTITLE }}{% endif %}" />
<meta property="og:type" content="website" />
<meta property="og:url" content="{{ SITEURL }}" />
<meta property="og:image" content="{{ SITEURL }}/images/{{ PROFILE_IMAGE }}" />
{% endblock %}
<!-- Enable responsiveness on mobile devices-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<title>{% block title %}{{ SITENAME }}{% endblock title %}{% if SITESUBTITLE %} - {{ SITESUBTITLE }}{% endif %}</title>
<!-- CSS -->
<link href="//fonts.googleapis.com/" rel="dns-prefetch">
<link href="//fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic|Abril+Fatface|PT+Sans:400,400italic,700&amp;subset=latin,latin-ext" rel="stylesheet">
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/poole.css" />
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/hyde.css" />
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/syntax.css" />
{% if FONT_AWESOME_JS %}
<script src="{{ FONT_AWESOME_JS }}" crossorigin="anonymous"></script>
{% elif FONT_AWESOME_CSS %}
<link rel="stylesheet" href="{{ FONT_AWESOME_CSS }}" crossorigin="anonymous">
{% else %}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.7/css/fork-awesome.min.css" crossorigin="anonymous">
{% endif %}
{% if FONT_ACADEMICONS %}
<link rel="stylesheet" href="https://cdn.rawgit.com/jpswalsh/academicons/master/css/academicons.min.css">
{% endif %}
<!-- Feeds -->
{% include 'fragments/feeds.html' %}
<!-- Analytics -->
{% include 'fragments/google_analytics.html' %}
</head>
<body class="theme-base-{{ COLOR_THEME if COLOR_THEME else '0d' }}">
{% include 'sidebar.html' %}
<div class="content container">
{% block content %}
{% endblock %}
</div>
</body>
</html>

View File

@ -0,0 +1,13 @@
{% if DISQUS_SITENAME %}
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '{{ DISQUS_SITENAME }}';
(function() {
var d = document, s = d.createElement('script'); s.type = 'text/javascript'; s.async = true;
s.src = 'https://' + disqus_shortname + '.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
{% endif %}

View File

@ -0,0 +1,24 @@
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
{% endif %}
{% if FEED_ATOM %}
<link href="{{ FEED_DOMAIN }}/{%if FEED_ATOM_URL %}{{ FEED_ATOM_URL }}{% else %}{{ FEED_ATOM }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
{% endif %}
{% if FEED_RSS %}
<link href="{{ FEED_DOMAIN }}/{% if FEED_RSS_URL %}{{ FEED_RSS_URL }}{% else %}{{ FEED_RSS }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
{% endif %}
{% if CATEGORY_FEED_ATOM and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_ATOM_URL %}{{ CATEGORY_FEED_ATOM_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
{% endif %}
{% if CATEGORY_FEED_RSS and category %}
<link href="{{ FEED_DOMAIN }}/{% if CATEGORY_FEED_RSS_URL %}{{ CATEGORY_FEED_RSS_URL.format(slug=category.slug) }}{% else %}{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
{% endif %}
{% if TAG_FEED_ATOM and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_ATOM_URL %}{{ TAG_FEED_ATOM_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_ATOM.format(slug=tag.slug) }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
{% endif %}
{% if TAG_FEED_RSS and tag %}
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_RSS_URL %}{{ TAG_FEED_RSS_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_RSS.format(slug=tag.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
{% endif %}

View File

@ -0,0 +1,11 @@
{% if GOOGLE_ANALYTICS %}
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ GOOGLE_ANALYTICS }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ GOOGLE_ANALYTICS }}');
</script>
{% endif %}

View File

@ -0,0 +1,45 @@
{% extends "base.html" %}
{% block content %}
<div class="posts">
{% for article in articles_page.object_list %}
<div class="post">
<h1 class="post-title" href="{{ SITEURL }}/{{ article.url }}">
<a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a>
</h1>
<span class="post-date">{{ article.locale_date }}</span>
{% if article.tags %}
<span class="post-tags">
Tags:
<ul>
{% for tag in article.tags %}
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a></li>
{% endfor %}
</ul>
</span>
{% endif %}
<p>
{{ article.summary }}
</p>
<a class="read-more" href="{{ SITEURL }}/{{ article.url }}">Continue reading »</a>
</div>
{% endfor %}
</div>
{% if DEFAULT_PAGINATION %}
<div class="pagination">
{% if articles_page.has_previous() %}
{% set num = articles_page.previous_page_number() %}
<span class="pagination-item older"><a href="{{ SITEURL }}/{{ page_name }}{{ num if num > 1 else '' }}.html">Newer</a></span>
{% else %}
<span class="pagination-item older">Newer</span>
{% endif %}
{% if articles_page.has_next() %}
<span class="pagination-item newer"><a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.next_page_number() }}.html">Older</a></span>
{% else %}
<span class="pagination-item newer">Older</span>
{% endif %}
</div>
{% endif %}
{% endblock %}

View File

@ -0,0 +1,63 @@
<div class="sidebar">
<div class="container sidebar-sticky">
<div class="sidebar-about">
<h1>
<a href="{{ SITEURL }}/">
<img class="profile-picture" src="{{ SITEURL }}/images/{{ PROFILE_IMAGE }}">
{{ SITENAME }}
</a>
</h1>
<p class="lead"></p>
<p class="lead">{{ BIO }} </p>
<p></p>
</div>
{% if SIDEBAR_MENU %}
<ul class="sidebar-nav">
{% for title, url, children in SIDEBAR_MENU %}
<li>
<a href="{{ SITEURL }}{{ url }}">{{ title }}</a>
{% if children %}
<ul class="sidebar-subnav">
{% for sub_title, sub_url in children %}
<li><a href="{{ SITEURL }}{{ sub_url }}">{{ sub_title }}</a></li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
<nav class="sidebar-social">
{% for name, link in SOCIAL %}
{% if name == 'email' %}
<a class="sidebar-social-item" href="mailto:{{ link }}">
<i class="fa fa-envelope"></i>
</a>
{% elif name in ['academia', 'acclaim', 'acm', 'acmdl', 'ads', 'arxiv',
'biorxiv', 'ceur', 'coursera', 'cv', 'dataverse',
'dblp', 'depsy', 'doi', 'dryad', 'figshare',
'google-scholar', 'ideas-repec', 'ieee', 'impactstory',
'inspire', 'lattes', 'mathoverflow', 'open-access',
'osf', 'overleaf', 'philpapers', 'piazza', 'publons',
'pubmed', 'researcherid', 'scirate', 'semantic-scholar',
'springer', 'zotero'] %}
<a class="sidebar-social-item" href="{{ link }}" target="_blank">
<i class="ai ai-{{ name }}"></i>
</a>
{% else %}
<a class="sidebar-social-item" href="{{ link }}" target="_blank">
<i class="fa fa-{{ name }}"></i>
</a>
{% endif %}
{% endfor %}
<a class="sidebar-social-item"
href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM if FEED_ALL_ATOM else FEED_ALL_RSS }}">
<i class="fa fa-rss"></i>
</a>
</nav>
{% if FOOTER_TEXT %}
<p class="sidebar-footer">{{ FOOTER_TEXT }}</p>
{% endif %}
</div>
</div>

@ -1 +0,0 @@
Subproject commit 42ddf7c7dfacaaa38177159dd81cee9537c82fd4