initial commit
This commit is contained in:
commit
641692383f
9
LICENSE
Normal file
9
LICENSE
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 Error
|
||||||
|
|
||||||
|
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.
|
18
README
Normal file
18
README
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Undefined Pelican Theme
|
||||||
|
|
||||||
|
This repository contains the pelican template for [undefinedbehavior.de](undefinedbehavior.de).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Clone this repository and install it using `pelican-themes -i path_to_this_theme`.
|
||||||
|
If you prefer to install it by adding a symbolic link instead of copying the theme, use `pelican-themes -s path_to_this_theme`.
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
This theme is based on [LaTeX.css](https://github.com/vincentdoerig/latex-css "LaTeX.css"). LaTeX.css is licensed under the MIT License.
|
||||||
|
|
||||||
|
Fonts used in this theme are:
|
||||||
|
|
||||||
|
- [Latin Modern](https://www.gust.org.pl/projects/e-foundry/latin-modern "The Latin Modern Family of Fonts"), licensed under the [GFL](https://www.gust.org.pl/projects/e-foundry/licenses "GUST Font License")
|
||||||
|
- [Libertinus](https://github.com/alerque/libertinus "Libertinus Fonts"), licensed under the [OFL](https://github.com/alerque/libertinus/blob/master/OFL.txt "SIL OPEN FONT LICENSE")
|
||||||
|
- [Ubuntu](https://design.ubuntu.com/font/ "Ubuntu font"), licensed under the [Ubuntu Font Licence Version 1.0](https://ubuntu.com/legal/font-licence "Ubuntu font licence")
|
581
static/css/latex.css
Normal file
581
static/css/latex.css
Normal file
@ -0,0 +1,581 @@
|
|||||||
|
/*!
|
||||||
|
* LaTeX.css (https://latex.now.sh/)
|
||||||
|
*
|
||||||
|
* Source: https://github.com/vincentdoerig/latex-css
|
||||||
|
* Licensed under MIT (https://github.com/vincentdoerig/latex-css/blob/master/LICENSE)
|
||||||
|
*
|
||||||
|
* Minor changes done by Error
|
||||||
|
* - changed path to fonts
|
||||||
|
* - fixed counter reset
|
||||||
|
* - increased max-width for mobile layout
|
||||||
|
*/
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Latin Modern';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/LM-regular.woff2') format('woff2'),
|
||||||
|
url('../fonts/LM-regular.woff') format('woff'),
|
||||||
|
url('../fonts/LM-regular.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Latin Modern';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/LM-italic.woff2') format('woff2'),
|
||||||
|
url('../fonts/LM-italic.woff') format('woff'),
|
||||||
|
url('../fonts/LM-italic.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Latin Modern';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/LM-bold.woff2') format('woff2'),
|
||||||
|
url('../fonts/LM-bold.woff') format('woff'),
|
||||||
|
url('../fonts/LM-bold.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Latin Modern';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: bold;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/LM-bold-italic.woff2') format('woff2'),
|
||||||
|
url('../fonts/LM-bold-italic.woff') format('woff'),
|
||||||
|
url('../fonts/LM-bold-italic.ttf') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Libertinus';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/Libertinus-regular.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Libertinus';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/Libertinus-italic.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Libertinus';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/Libertinus-bold.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Libertinus';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: bold;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/Libertinus-bold-italic.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Libertinus';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/Libertinus-semibold.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Libertinus';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: swap;
|
||||||
|
src: url('../fonts/Libertinus-semibold-italic.woff2') format('woff2');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Box sizing rules */
|
||||||
|
*,
|
||||||
|
*::before,
|
||||||
|
*::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove default margin */
|
||||||
|
body,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
p,
|
||||||
|
ul[class],
|
||||||
|
ol[class],
|
||||||
|
li,
|
||||||
|
figure,
|
||||||
|
figcaption,
|
||||||
|
dl,
|
||||||
|
dd {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make default font-size 1rem and add smooth scrolling to anchors */
|
||||||
|
html {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
@media (prefers-reduced-motion: no-preference) {
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body.libertinus {
|
||||||
|
font-family: 'Libertinus', Georgia, Cambria, 'Times New Roman', Times, serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Latin Modern', Georgia, Cambria, 'Times New Roman', Times, serif;
|
||||||
|
line-height: 1.8;
|
||||||
|
|
||||||
|
max-width: 80ch;
|
||||||
|
min-height: 100vh;
|
||||||
|
overflow-x: hidden;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 2rem 1.25rem;
|
||||||
|
|
||||||
|
counter-reset: theorem definition sidenote-counter;
|
||||||
|
|
||||||
|
color: hsl(0, 5%, 10%);
|
||||||
|
background-color: hsl(210, 20%, 98%);
|
||||||
|
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Justify and hyphenate all paragraphs */
|
||||||
|
p {
|
||||||
|
text-align: justify;
|
||||||
|
hyphens: auto;
|
||||||
|
-webkit-hyphens: auto;
|
||||||
|
-moz-hyphens: auto;
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A elements that don't have a class get default styles */
|
||||||
|
a:not([class]) {
|
||||||
|
text-decoration-skip-ink: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make links red */
|
||||||
|
a,
|
||||||
|
a:visited {
|
||||||
|
color: #a00;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:focus {
|
||||||
|
outline-offset: 2px;
|
||||||
|
outline: 2px solid hsl(220, 90%, 52%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make images easier to work with */
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inherit fonts for inputs and buttons */
|
||||||
|
input,
|
||||||
|
button,
|
||||||
|
textarea,
|
||||||
|
select {
|
||||||
|
font: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Prevent textarea from overflowing */
|
||||||
|
textarea {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Natural flow and rhythm in articles by default */
|
||||||
|
article > * + * {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Styles for inline code or code snippets */
|
||||||
|
code,
|
||||||
|
pre,
|
||||||
|
kbd {
|
||||||
|
font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',
|
||||||
|
monospace;
|
||||||
|
font-size: 85%;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
padding: 1rem 1.4rem;
|
||||||
|
max-width: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: hsl(210, 28%, 93%);
|
||||||
|
}
|
||||||
|
pre code {
|
||||||
|
font-size: 95%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
kbd {
|
||||||
|
background: hsl(210, 5%, 100%);
|
||||||
|
border: 1px solid hsl(210, 5%, 70%);
|
||||||
|
border-radius: 2px;
|
||||||
|
padding: 2px 4px;
|
||||||
|
font-size: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Better tables */
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
width: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
border-top: 2.27px solid black;
|
||||||
|
border-bottom: 2.27px solid black;
|
||||||
|
/* display: block; */
|
||||||
|
overflow-x: auto; /* does not work because element is not block */
|
||||||
|
/* white-space: nowrap; */
|
||||||
|
counter-increment: caption;
|
||||||
|
}
|
||||||
|
/* add bottom border on column table headings */
|
||||||
|
table tr > th[scope='col'] {
|
||||||
|
border-bottom: 1.36px solid black;
|
||||||
|
}
|
||||||
|
/* add right border on row table headings */
|
||||||
|
table tr > th[scope='row'] {
|
||||||
|
border-right: 1.36px solid black;
|
||||||
|
}
|
||||||
|
table > tbody > tr:first-child > td,
|
||||||
|
table > tbody > tr:first-child > th {
|
||||||
|
border-top: 1.36px solid black;
|
||||||
|
}
|
||||||
|
table > tbody > tr:last-child > td,
|
||||||
|
table > tbody > tr:last-child > th {
|
||||||
|
border-bottom: 1.36px solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
text-align: left;
|
||||||
|
padding: 0.5rem;
|
||||||
|
line-height: 1.1;
|
||||||
|
}
|
||||||
|
/* Table caption */
|
||||||
|
caption {
|
||||||
|
text-align: left;
|
||||||
|
font-size: 0.923em;
|
||||||
|
/* border-bottom: 2pt solid #000; */
|
||||||
|
padding: 0 0.25em 0.25em;
|
||||||
|
width: 100%;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
caption::before {
|
||||||
|
content: 'Table ' counter(caption) '. ';
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* allow scroll on the x-axis */
|
||||||
|
.scroll-wrapper {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if a table is wrapped in a scroll wrapper,
|
||||||
|
the table cells shouldn't wrap */
|
||||||
|
.scroll-wrapper > table td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center align the title */
|
||||||
|
h1:first-child {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Nested ordered list for ToC */
|
||||||
|
nav ol {
|
||||||
|
counter-reset: item;
|
||||||
|
padding-left: 2rem;
|
||||||
|
}
|
||||||
|
nav li {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
nav li:before {
|
||||||
|
content: counters(item, '.') ' ';
|
||||||
|
counter-increment: item;
|
||||||
|
padding-right: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center definitions (most useful for display equations) */
|
||||||
|
dl dd {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Theorem */
|
||||||
|
.theorem {
|
||||||
|
counter-increment: theorem;
|
||||||
|
display: block;
|
||||||
|
margin: 12px 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.theorem::before {
|
||||||
|
content: 'Theorem ' counter(theorem) '. ';
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lemma */
|
||||||
|
.lemma {
|
||||||
|
counter-increment: theorem;
|
||||||
|
display: block;
|
||||||
|
margin: 12px 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.lemma::before {
|
||||||
|
content: 'Lemma ' counter(theorem) '. ';
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Proof */
|
||||||
|
.proof {
|
||||||
|
display: block;
|
||||||
|
margin: 12px 0;
|
||||||
|
font-style: normal;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.proof::before {
|
||||||
|
content: 'Proof. ' attr(title);
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.proof:after {
|
||||||
|
content: '◾️';
|
||||||
|
position: absolute;
|
||||||
|
right: -12px;
|
||||||
|
bottom: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Definition */
|
||||||
|
.definition {
|
||||||
|
counter-increment: definition;
|
||||||
|
display: block;
|
||||||
|
margin: 12px 0;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
.definition::before {
|
||||||
|
content: 'Definition ' counter(definition) '. ';
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center align author name, use small caps and add vertical spacing */
|
||||||
|
.author {
|
||||||
|
margin: 0.85rem 0;
|
||||||
|
font-variant-caps: small-caps;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sidenotes */
|
||||||
|
|
||||||
|
.sidenote {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
float: right;
|
||||||
|
clear: right;
|
||||||
|
width: 18vw;
|
||||||
|
margin-right: -20vw;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidenote.left {
|
||||||
|
float: left;
|
||||||
|
margin-left: -20vw;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (WIP) add border when a sidenote is clicked on */
|
||||||
|
.sidenote:target {
|
||||||
|
border: hsl(55, 55%, 70%) 1.5px solid;
|
||||||
|
padding: 0 .5rem;
|
||||||
|
scroll-margin-block-start: 10rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sidenote counter */
|
||||||
|
.sidenote-number {
|
||||||
|
counter-increment: sidenote-counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidenote-number::after,
|
||||||
|
.sidenote::before {
|
||||||
|
position: relative;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add number in main content */
|
||||||
|
.sidenote-number::after {
|
||||||
|
content: counter(sidenote-counter);
|
||||||
|
font-size: 0.7rem;
|
||||||
|
top: -0.5rem;
|
||||||
|
left: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add number in front of the sidenote */
|
||||||
|
.sidenote-number ~ .sidenote::before {
|
||||||
|
content: counter(sidenote-counter) ' ';
|
||||||
|
font-size: 0.7rem;
|
||||||
|
top: -0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
label.sidenote-toggle:not(.sidenote-number) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sidenotes inside blockquotes are indented more */
|
||||||
|
blockquote .sidenote {
|
||||||
|
margin-right: -24vw;
|
||||||
|
width: 18vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
label.sidenote-toggle {
|
||||||
|
display: inline;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.sidenote-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1080px) {
|
||||||
|
label.sidenote-toggle:not(.sidenote-number) {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.sidenote {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.sidenote-toggle:checked + .sidenote {
|
||||||
|
display: block;
|
||||||
|
margin: 0.5rem 1.25rem 1rem 0.5rem;
|
||||||
|
float: left;
|
||||||
|
left: 1rem;
|
||||||
|
clear: both;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
/* tweak indentation of sidenote inside a blockquote */
|
||||||
|
blockquote .sidenote {
|
||||||
|
margin-right: -25vw;
|
||||||
|
width: 16vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make footnote text smaller and left align it (looks bad with long URLs) */
|
||||||
|
.footnotes p {
|
||||||
|
text-align: left;
|
||||||
|
line-height: 1.5;
|
||||||
|
font-size: 85%;
|
||||||
|
margin-bottom: 0.4rem;
|
||||||
|
}
|
||||||
|
.footnotes {
|
||||||
|
border-top: 1px solid hsl(0, 0%, 39%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center title and paragraph */
|
||||||
|
.abstract,
|
||||||
|
.abstract p {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
.abstract {
|
||||||
|
margin: 2.25rem 0;
|
||||||
|
}
|
||||||
|
.abstract > h2 {
|
||||||
|
font-size: 1rem;
|
||||||
|
margin-bottom: -0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Format the LaTeX symbol correctly (a higher up, e lower) */
|
||||||
|
.latex span:nth-child(1) {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 0.75em;
|
||||||
|
vertical-align: 0.28em;
|
||||||
|
margin-left: -0.48em;
|
||||||
|
margin-right: -0.15em;
|
||||||
|
line-height: 1ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.latex span:nth-child(2) {
|
||||||
|
text-transform: uppercase;
|
||||||
|
vertical-align: -0.5ex;
|
||||||
|
margin-left: -0.1667em;
|
||||||
|
margin-right: -0.125em;
|
||||||
|
line-height: 1ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Heading typography */
|
||||||
|
h1 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
line-height: 3.25rem;
|
||||||
|
margin-bottom: 1.625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 1.7rem;
|
||||||
|
line-height: 2rem;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 1.4rem;
|
||||||
|
margin-top: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
font-size: 1rem;
|
||||||
|
margin-top: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
font-size: 1rem;
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-top: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
line-height: 1.625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 + h2 {
|
||||||
|
margin-top: 1.625rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 + h3,
|
||||||
|
h3 + h4,
|
||||||
|
h4 + h5 {
|
||||||
|
margin-top: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h5 + h6 {
|
||||||
|
margin-top: -0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
}
|
200
static/css/undef.css
Normal file
200
static/css/undef.css
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
:root
|
||||||
|
{
|
||||||
|
--teal: #008080;
|
||||||
|
--maroon: #800000;
|
||||||
|
--gradient: linear-gradient(45deg, #800000 10%, #008080 90%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* overwrite latex.css colors */
|
||||||
|
a,
|
||||||
|
a:visited {
|
||||||
|
color: var(--teal);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
color: var(--maroon);
|
||||||
|
}
|
||||||
|
|
||||||
|
video {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* don't use superscript text for references */
|
||||||
|
sup
|
||||||
|
{
|
||||||
|
vertical-align: inherit;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* main navigation */
|
||||||
|
nav.navigation
|
||||||
|
{
|
||||||
|
border-right-color: var(--teal);
|
||||||
|
border-right-style: solid;
|
||||||
|
border-right-width: 4px;
|
||||||
|
font-family: "ubuntu";
|
||||||
|
margin-bottom: 1em;
|
||||||
|
margin-left: -20vw;
|
||||||
|
min-width: 15vw;
|
||||||
|
padding-right: 4px;
|
||||||
|
padding-left: 4px;
|
||||||
|
position: fixed;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navigation h1
|
||||||
|
{
|
||||||
|
background: var(--gradient);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
color: var(--teal);
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navigation a
|
||||||
|
{
|
||||||
|
color: var(--teal);
|
||||||
|
padding-right: 4px
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navigation a:hover
|
||||||
|
{
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navigation footer
|
||||||
|
{
|
||||||
|
color: var(--maroon);
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navigation footer a,
|
||||||
|
nav.navigation footer a:hover
|
||||||
|
{
|
||||||
|
color: var(--maroon);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* support small screens */
|
||||||
|
@media (max-width: 1080px)
|
||||||
|
{
|
||||||
|
nav.navigation
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
border-right-style: none;
|
||||||
|
margin-left: 0px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
nav.navigation h1
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
border-right-color: var(--teal);
|
||||||
|
border-right-style: solid;
|
||||||
|
border-right-width: 4px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
padding-right: 4px;
|
||||||
|
}
|
||||||
|
nav.navigation div
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
padding-left: 4px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Figure couter + lightbox for images */
|
||||||
|
body::before
|
||||||
|
{
|
||||||
|
counter-reset: figure-counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure
|
||||||
|
{
|
||||||
|
counter-increment: figure-counter;
|
||||||
|
padding-top: 0 0.25em 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption
|
||||||
|
{
|
||||||
|
font-size: 0.923em;
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption::before
|
||||||
|
{
|
||||||
|
content: 'Figure ' counter(figure-counter) '. ';
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lightbox
|
||||||
|
{
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
background-color: hsl(210, 20%, 98%);
|
||||||
|
text-align: center;
|
||||||
|
z-index: 666;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure:target .lightbox
|
||||||
|
{
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lightbox-wrapper
|
||||||
|
{
|
||||||
|
display: inline-flex;
|
||||||
|
flex-direction: column;
|
||||||
|
max-width: 95%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lightbox a
|
||||||
|
{
|
||||||
|
font-size: 1.25rem;
|
||||||
|
align-self: end;
|
||||||
|
margin-bottom: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lightbox img
|
||||||
|
{
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 90vh;
|
||||||
|
margin-bottom: auto;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* footnotes */
|
||||||
|
.footnote-ref::before
|
||||||
|
{
|
||||||
|
content: '[';
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnote-ref::after
|
||||||
|
{
|
||||||
|
content: ']';
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnote ol {
|
||||||
|
counter-reset: fn-counter;
|
||||||
|
padding-left: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnote li
|
||||||
|
{
|
||||||
|
counter-increment: fn-counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnote li::marker
|
||||||
|
{
|
||||||
|
content: '[' counter(fn-counter) '] ';
|
||||||
|
}
|
BIN
static/fonts/LM-bold-italic.ttf
Normal file
BIN
static/fonts/LM-bold-italic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/LM-bold-italic.woff
Normal file
BIN
static/fonts/LM-bold-italic.woff
Normal file
Binary file not shown.
BIN
static/fonts/LM-bold-italic.woff2
Normal file
BIN
static/fonts/LM-bold-italic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/LM-bold.ttf
Normal file
BIN
static/fonts/LM-bold.ttf
Normal file
Binary file not shown.
BIN
static/fonts/LM-bold.woff
Normal file
BIN
static/fonts/LM-bold.woff
Normal file
Binary file not shown.
BIN
static/fonts/LM-bold.woff2
Normal file
BIN
static/fonts/LM-bold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/LM-italic.ttf
Normal file
BIN
static/fonts/LM-italic.ttf
Normal file
Binary file not shown.
BIN
static/fonts/LM-italic.woff
Normal file
BIN
static/fonts/LM-italic.woff
Normal file
Binary file not shown.
BIN
static/fonts/LM-italic.woff2
Normal file
BIN
static/fonts/LM-italic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/LM-regular.ttf
Normal file
BIN
static/fonts/LM-regular.ttf
Normal file
Binary file not shown.
BIN
static/fonts/LM-regular.woff
Normal file
BIN
static/fonts/LM-regular.woff
Normal file
Binary file not shown.
BIN
static/fonts/LM-regular.woff2
Normal file
BIN
static/fonts/LM-regular.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Libertinus-bold-italic.woff2
Normal file
BIN
static/fonts/Libertinus-bold-italic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Libertinus-bold.woff2
Normal file
BIN
static/fonts/Libertinus-bold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Libertinus-italic.woff2
Normal file
BIN
static/fonts/Libertinus-italic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Libertinus-regular.woff2
Normal file
BIN
static/fonts/Libertinus-regular.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Libertinus-semibold-italic.woff2
Normal file
BIN
static/fonts/Libertinus-semibold-italic.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Libertinus-semibold.woff2
Normal file
BIN
static/fonts/Libertinus-semibold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Ubuntu-R.ttf
Normal file
BIN
static/fonts/Ubuntu-R.ttf
Normal file
Binary file not shown.
55
templates/article.html
Normal file
55
templates/article.html
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{%- block head_title %}
|
||||||
|
{{ SITENAME }} :: {{ article.title|striptags }}
|
||||||
|
{% endblock head_title %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ super() }}
|
||||||
|
{% if article.description %}
|
||||||
|
<meta name="description" content="{{article.description}}" />
|
||||||
|
{% endif %}
|
||||||
|
{% for tag in article.tags %}
|
||||||
|
<meta name="tags" content="{{tag}}" />
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{%- block title %}
|
||||||
|
{{ article.title }}
|
||||||
|
{% endblock title %}
|
||||||
|
|
||||||
|
{%- block author %}
|
||||||
|
{% if article.authors %}
|
||||||
|
{% for author in article.authors %}
|
||||||
|
{{ author }}
|
||||||
|
{% if not loop.last %}
|
||||||
|
,
|
||||||
|
{% else %}
|
||||||
|
<br />
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{{ article.locale_date }}
|
||||||
|
{% if article.license %}
|
||||||
|
<br />
|
||||||
|
<a href="{{ article.license[1] }}">
|
||||||
|
{{ article.license[0] }}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endblock author %}
|
||||||
|
|
||||||
|
{%- block abstract %}
|
||||||
|
{{ article.summary }}
|
||||||
|
{% endblock abstract %}
|
||||||
|
|
||||||
|
{%- block content %}
|
||||||
|
{% if 'add_sidenotes' in JINJA_FILTERS and 'add_lightboxes' in JINJA_FILTERS %}
|
||||||
|
{{ article.content | add_sidenotes | add_lightboxes }}
|
||||||
|
{% elif 'add_sidenotes' in JINJA_FILTERS %}
|
||||||
|
{{ article.content | add_sidenotes }}
|
||||||
|
{% elif 'add_lightboxes' in JINJA_FILTERS %}
|
||||||
|
{{ article.content | add_lightboxes }}
|
||||||
|
{% else %}
|
||||||
|
{{ article.content }}
|
||||||
|
{% endif %}
|
||||||
|
{% endblock content %}
|
100
templates/base.html
Normal file
100
templates/base.html
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">
|
||||||
|
<head>
|
||||||
|
{% block head %}
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta name="generator" content="Pelican" />
|
||||||
|
<title>
|
||||||
|
{% block head_title %}
|
||||||
|
{{ SITENAME }}
|
||||||
|
{% endblock head_title %}
|
||||||
|
</title>
|
||||||
|
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/latex.css" />
|
||||||
|
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/undef.css" />
|
||||||
|
{% if FAVICON %}
|
||||||
|
<link rel="icon" type="image/svg+xml" href="{{ SITEURL }}/{{ FAVICON }}" sizes="any" />
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_ALL_ATOM %}
|
||||||
|
<link rel="alternate" href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}" type="application/atom+xml" title="{{ SITENAME }} Atom Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_ALL_RSS %}
|
||||||
|
<link rel="alternate" href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}" type="application/rss+xml" title="{{ SITENAME }} RSS Feed" />
|
||||||
|
{% endif %}
|
||||||
|
{% endblock head %}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navigation">
|
||||||
|
<h1>
|
||||||
|
undefined <br/>
|
||||||
|
behavior
|
||||||
|
</h1>
|
||||||
|
<div>
|
||||||
|
<a href="{{ SITEURL }}/">
|
||||||
|
All Posts
|
||||||
|
</a>
|
||||||
|
{% if DISPLAY_PAGES_ON_MENU %}
|
||||||
|
{% for p in pages %}
|
||||||
|
{% if loop.first %}
|
||||||
|
<br />
|
||||||
|
{% endif %}
|
||||||
|
<a href="{{ SITEURL }}/{{ p.url }}">
|
||||||
|
{{ p.title }}
|
||||||
|
</a>
|
||||||
|
{% if not loop.last %}
|
||||||
|
<br />
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_ALL_ATOM %}
|
||||||
|
<br />
|
||||||
|
<a href="{{ FEED_DOMAIN }}/{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}">
|
||||||
|
Atom Feed
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if FEED_ALL_RSS %}
|
||||||
|
<br />
|
||||||
|
<a href="{{ FEED_DOMAIN }}/{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}">
|
||||||
|
RSS Feed
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
<footer>
|
||||||
|
{% for title, link in LINKS %}
|
||||||
|
<a href="{{ link }}">
|
||||||
|
{{ title | lower }}
|
||||||
|
</a>
|
||||||
|
{% if not loop.last %}
|
||||||
|
::
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1>
|
||||||
|
{% block title %}
|
||||||
|
{% endblock %}
|
||||||
|
</h1>
|
||||||
|
<p class="author">
|
||||||
|
{% block author %}
|
||||||
|
{% endblock %}
|
||||||
|
</p>
|
||||||
|
</header>
|
||||||
|
<div class="abstract">
|
||||||
|
<h2>
|
||||||
|
Abstract
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
{% block abstract %}
|
||||||
|
{% endblock %}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<main>
|
||||||
|
<article>
|
||||||
|
{% block content %}
|
||||||
|
{% endblock %}
|
||||||
|
</article>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
69
templates/index.html
Normal file
69
templates/index.html
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block head_title %}
|
||||||
|
{{ SITENAME }} :: All Posts
|
||||||
|
{% endblock head_title %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
All Posts
|
||||||
|
{% endblock title %}
|
||||||
|
|
||||||
|
{% block author %}
|
||||||
|
Error <br />
|
||||||
|
April 2022
|
||||||
|
{% endblock author %}
|
||||||
|
|
||||||
|
{% block abstract %}
|
||||||
|
{{ ABSTRACT }}
|
||||||
|
{% endblock abstract %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<nav class="toc">
|
||||||
|
<h2 id="contents">
|
||||||
|
Contents
|
||||||
|
</h2>
|
||||||
|
<ol>
|
||||||
|
{% for article in articles %}
|
||||||
|
{% if loop.first %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ SITEURL }}/}">
|
||||||
|
All Posts
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<ol>
|
||||||
|
{% endif %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ SITEURL }}/{{ article.url }}">
|
||||||
|
{{ article.title }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if loop.last %}
|
||||||
|
</ol>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% for page in pages %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ SITEURL }}/{{ page.url }}">
|
||||||
|
{{ page.title }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
{% for name, link in LINKS %}
|
||||||
|
{% if loop.first %}
|
||||||
|
<li>
|
||||||
|
Appendix
|
||||||
|
</li>
|
||||||
|
<ol>
|
||||||
|
{% endif %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ link }}">
|
||||||
|
{{ name | title }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if loop.last %}
|
||||||
|
</ol>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
|
{% endblock content %}
|
47
templates/page.html
Normal file
47
templates/page.html
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{%- block head_title %}
|
||||||
|
{{ SITENAME }} :: {{ page.title|striptags }}
|
||||||
|
{% endblock head_title %}
|
||||||
|
|
||||||
|
{% block head %}
|
||||||
|
{{ super() }}
|
||||||
|
{% if page.description %}
|
||||||
|
<meta name="description" content="{{page.description}}" />
|
||||||
|
{% endif %}
|
||||||
|
{% for tag in page.tags %}
|
||||||
|
<meta name="tags" content="{{tag}}" />
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{%- block title %}
|
||||||
|
{{ page.title }}
|
||||||
|
{% endblock title %}
|
||||||
|
|
||||||
|
{%- block author %}
|
||||||
|
{% if page.authors %}
|
||||||
|
{% for author in page.authors %}
|
||||||
|
{{ author }}
|
||||||
|
{% if not loop.last %}
|
||||||
|
,
|
||||||
|
{% else %}
|
||||||
|
<br />
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{{ page.locale_date }}
|
||||||
|
{% if page.license %}
|
||||||
|
<br />
|
||||||
|
<a href="{{ page.license[1] }}">
|
||||||
|
{{ page.license[0] }}
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endblock author %}
|
||||||
|
|
||||||
|
{%- block abstract %}
|
||||||
|
{{ page.summary }}
|
||||||
|
{% endblock abstract %}
|
||||||
|
|
||||||
|
{%- block content %}
|
||||||
|
{{ page.content }}
|
||||||
|
{% endblock content %}
|
Reference in New Issue
Block a user