Updated look and added content

This commit is contained in:
aethrvmn 2024-08-16 02:47:38 +03:00
parent 17acb9ed12
commit e35d2ea7a4
194 changed files with 4328 additions and 1454 deletions

20
LICENSE Normal file
View file

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2024
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.

View file

@ -1,3 +1,12 @@
# [apotheke.earth](https://apotheke.earth) # apothēke (n).
- [/a.po.tʰɛ̌ː.kɛː/] (αποθήκη)
the website serves as a repository of my brain. ### A place designated for storing or preserving items of value or importance.
I have an innate need to express the thoughts in my head.
Oftentimes I end upon conclusions that, in oral speech, am unable to express in a way that I find satisfactory. Also, due to the nature of dialogue, i.e. not a monologue, there is the propensity to diffuse the idea during a conversation; the need for a clarification of a definition might arise, or the disagreement for the use of a word which was picked for spurred rather than accuracy, etc, and in general there is no adequate space to fully expore a single idea in this process, as dialogue often is conductive to discussing and presenting a theme rather than a single subject contained within such a theme.
A friend pointed out that such an endeavour must be made in caution, I could, willingly or unwillingly, engage in this out of a feel of superiority, or rather a saviour complex of sorts. I do not feel like such is the case, it is however a possibility, people lie to themselves constantly and making a public statement carries the idea of believing that you are right. Nevertheless I feel like this is more of an outlet for my brain that exists publicly in the same sense that music or poetry exist publicly, not from a need to be correct, but from a need of self expression.
apothēke is therefore a project of self expression; or rather a showcase of my limited capability to understand the world.

20
archetypes/default.md Executable file → Normal file
View file

@ -1,14 +1,10 @@
--- ---
title: "Hello, world!" title: "{{ .Name | humanize | title }}"
date: 2021-01-01 weight: 1
description: "A blog post" # bookFlatSection: false
image: "/path/to/image.png" # bookToc: true
type: "post" # bookHidden: false
tags: ["blog"] # bookCollapseSection: false
# bookComments: false
# bookSearchExclude: false
title: "Hello, world!"
image: "/path/to/image.png"
type: "page"
showTableOfContents: true
--- ---

3
assets/_custom.scss Normal file
View file

@ -0,0 +1,3 @@
/* You can add custom styles here. */
// @import "plugins/numbered";

66
assets/_defaults.scss Normal file
View file

@ -0,0 +1,66 @@
// Used in layout
$padding-1: 1px !default;
$padding-4: 0.25rem !default;
$padding-8: 0.5rem !default;
$padding-16: 1rem !default;
$font-size-base: 16px !default;
$font-size-12: 0.75rem !default;
$font-size-14: 0.875rem !default;
$font-size-16: 1rem !default;
$border-radius: $padding-4 !default;
$body-font-weight: normal !default;
$body-min-width: 20rem !default;
$container-max-width: 80rem !default;
$header-height: 3.5rem !default;
$menu-width: 16rem !default;
$toc-width: 16rem !default;
$mobile-breakpoint: $menu-width + $body-min-width * 1.2 + $toc-width !default;
$hint-colors: (
info: #6bf,
warning: #fd6,
danger: #f66,
) !default;
// Themes
@mixin theme-light {
--gray-100: #f8f9fa;
--gray-200: #e9ecef;
--gray-500: #adb5bd;
--color-link: #0055bb;
--color-visited-link: #8440f1;
--body-background: white;
--body-font-color: black;
--icon-filter: none;
--hint-color-info: #6bf;
--hint-color-warning: #fd6;
--hint-color-danger: #f66;
}
@mixin theme-dark {
--gray-100: rgba(255, 255, 255, 0.1);
--gray-200: rgba(255, 255, 255, 0.2);
--gray-500: rgba(255, 255, 255, 0.5);
--color-link: #f7f6f3;
--color-visited-link: #f7f6f3;
--body-background: #2D2A2E;
--body-font-color: #f7f6f3;
--icon-filter: brightness(0) invert(1);
--hint-color-info: #6bf;
--hint-color-warning: #fd6;
--hint-color-danger: #f66;
}

37
assets/_fonts.scss Normal file
View file

@ -0,0 +1,37 @@
/* roboto-regular - latin */
@font-face {
font-family: 'GFS Didot';
font-style: normal;
font-weight: 400;
font-display: swap;
src: local(''),
url('https://fonts.googleapis.com/css2?family=GFS+Didot&display=swap');
}
/* roboto-700 - latin */
@font-face {
font-family: 'GFS Didot';
font-style: normal;
font-weight: 700;
font-display: swap;
src: local(''),
url('https://fonts.googleapis.com/css2?family=GFS+Didot&display=swap');
}
/* roboto-mono-regular - latin */
@font-face {
font-family: 'Roboto Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: local(''),
url('fonts/roboto-mono-v13-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('fonts/roboto-mono-v13-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
body {
font-family: 'GFS Didot', sans-serif;
}
code {
font-family: 'Roboto Mono', monospace;
}

365
assets/_main.scss Normal file
View file

@ -0,0 +1,365 @@
html {
font-size: $font-size-base;
scroll-behavior: smooth;
touch-action: manipulation;
}
body {
min-width: $body-min-width;
color: var(--body-font-color);
background: var(--body-background);
margin-top: 40px;
letter-spacing: 0.33px;
font-weight: $body-font-weight;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
box-sizing: border-box;
* {
box-sizing: inherit;
}
}
h1,
h2,
h3,
h4,
h5 {
font-weight: $body-font-weight;
}
a {
text-decoration: none;
color: var(--color-link);
}
img {
vertical-align: baseline;
}
:focus {
@include outline;
}
aside nav ul {
padding: 0;
margin: 0;
list-style: none;
li {
margin: 1em 0;
position: relative;
}
a {
display: block;
}
a:hover {
color: #AC9C6D;
}
ul {
padding-inline-start: $padding-16;
}
}
ul.pagination {
display: flex;
justify-content: center;
list-style-type: none;
padding-inline-start: 0px;
.page-item a {
padding: $padding-16;
}
}
.container {
max-width: $container-max-width;
margin: 0 auto;
}
.book-icon {
filter: var(--icon-filter);
}
.book-brand {
margin-top: 0;
margin-bottom: $padding-16;
img {
height: 1.5em;
width: 1.5em;
margin-inline-end: $padding-8;
}
}
.book-menu {
flex: 0 0 $menu-width;
font-size: $font-size-14;
.book-menu-content {
width: $menu-width;
padding: $padding-16;
background: var(--body-background);
@include fixed;
}
a,
label {
color: inherit;
cursor: pointer;
word-wrap: break-word;
}
a.active {
color: var(--color-link);
}
input.toggle + label + ul {
display: none;
}
input.toggle:checked + label + ul {
display: block;
}
input.toggle + label::after {
content: "";
}
input.toggle:checked + label::after {
content: "";
}
}
// for RTL support
body[dir="rtl"] .book-menu {
input.toggle + label::after {
content: "";
}
input.toggle:checked + label::after {
content: "";
}
}
.book-section-flat {
margin: $padding-16 * 2 0;
> a,
> span,
> label {
font-weight: bolder;
}
> ul {
padding-inline-start: 0;
}
}
.book-page {
min-width: $body-min-width;
flex-grow: 1;
padding: $padding-16;
}
.book-post {
margin-bottom: $padding-16 * 3;
}
.book-header {
display: none;
margin-bottom: $padding-16;
label {
line-height: 0;
}
img.book-icon {
height: 1.5em;
width: 1.5em;
}
}
.book-search {
position: relative;
margin: $padding-16 0;
border-bottom: 1px solid transparent;
input {
width: 100%;
padding: $padding-8;
border: 0;
border-radius: $border-radius;
background: var(--gray-100);
color: var(--body-font-color);
&:required + .book-search-spinner {
display: block;
}
}
.book-search-spinner {
position: absolute;
top: 0;
margin: $padding-8;
margin-inline-start: calc(100% - #{$padding-16 + $padding-8});
width: $padding-16;
height: $padding-16;
border: $padding-1 solid transparent;
border-top-color: var(--body-font-color);
border-radius: 50%;
@include spin(1s);
}
small {
opacity: 0.5;
}
}
.book-toc {
flex: 0 0 $toc-width;
font-size: $font-size-12;
.book-toc-content {
width: $toc-width;
padding: $padding-16;
@include fixed;
}
img {
height: 1em;
width: 1em;
}
nav > ul > li:first-child {
margin-top: 0;
}
}
.book-footer {
padding-top: $padding-16;
font-size: $font-size-14;
img {
height: 1em;
width: 1em;
margin-inline-end: $padding-8;
}
}
.book-comments {
margin-top: $padding-16;
}
.book-languages {
margin-block-end: $padding-16 * 2;
.book-icon {
height: 1em;
width: 1em;
margin-inline-end: .5em;
}
ul {
padding-inline-start: 1.5em;
}
}
// Responsive styles
.book-menu-content,
.book-toc-content,
.book-page,
.book-header aside,
.markdown {
transition: 0.2s ease-in-out;
transition-property: transform, margin, opacity, visibility;
will-change: transform, margin, opacity;
}
@media screen and (max-width: $mobile-breakpoint) {
#menu-control,
#toc-control {
display: inline;
}
.book-menu {
visibility: hidden;
margin-inline-start: -$menu-width;
font-size: $font-size-base;
z-index: 1;
}
.book-toc {
display: none;
}
.book-header {
display: block;
}
#menu-control:focus ~ main label[for="menu-control"] {
@include outline;
}
#menu-control:checked ~ main {
.book-menu {
visibility: initial;
}
.book-menu .book-menu-content {
transform: translateX($menu-width);
box-shadow: 0 0 $padding-8 rgba(0, 0, 0, 0.1);
}
.book-page {
opacity: 0.25;
}
.book-menu-overlay {
display: block;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
}
#toc-control:focus ~ main label[for="toc-control"] {
@include outline;
}
#toc-control:checked ~ main {
.book-header aside {
display: block;
}
}
// for RTL support
body[dir="rtl"] #menu-control:checked ~ main {
.book-menu .book-menu-content {
transform: translateX(-$menu-width);
}
}
}
// Extra space for big screens
@media screen and (min-width: $container-max-width) {
.book-page,
.book-menu .book-menu-content,
.book-toc .book-toc-content {
padding: $padding-16 * 2 $padding-16;
}
}

210
assets/_markdown.scss Normal file
View file

@ -0,0 +1,210 @@
@import "variables";
.markdown {
line-height: 1.6;
// remove padding at the beginning of page
> :first-child {
margin-top: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: normal;
line-height: 1;
margin-top: 1.5em;
margin-bottom: $padding-16;
a.anchor {
opacity: 0;
font-size: 0.75em;
vertical-align: middle;
text-decoration: none;
}
&:hover a.anchor,
a.anchor:focus {
opacity: initial;
}
}
h1 {
text-decoration: underline;
}
h4,
h5,
h6 {
font-weight: bolder;
}
h5 {
font-size: 0.875em;
}
h6 {
font-size: 0.75em;
}
b,
optgroup,
strong {
font-weight: bolder;
}
a {
text-decoration: underline;
&:hover {
color: #AC9C6D;
}
&:visited {
color: var(--color-visited-link);
}
}
img {
max-width: 100%;
height: auto;
}
code {
direction: ltr;
unicode-bidi: embed;
padding: 0 $padding-4;
background: var(--gray-200);
border-radius: $border-radius;
font-size: 0.875em;
}
pre {
direction: ltr;
unicode-bidi: embed;
padding: $padding-16;
background: var(--gray-100);
border-radius: $border-radius;
overflow-x: auto;
code {
padding: 0;
background: none;
}
}
p {
word-wrap: break-word;
}
blockquote {
margin: $padding-16 0;
padding: $padding-8 $padding-16 $padding-8 ($padding-16 - $padding-4); //to keep total left space 16dp
border-inline-start: $padding-4 solid var(--gray-200);
border-radius: $border-radius;
:first-child {
margin-top: 0;
}
:last-child {
margin-bottom: 0;
}
}
table {
overflow: auto;
display: block;
border-spacing: 0;
border-collapse: collapse;
margin-top: $padding-16;
margin-bottom: $padding-16;
tr th,
tr td {
padding: $padding-8 $padding-16;
border: $padding-1 solid var(--gray-200);
}
tr:nth-child(2n) {
background: var(--gray-100);
}
}
hr {
height: $padding-1;
border: none;
background: var(--gray-200);
}
ul,
ol {
padding-inline-start: $padding-16 * 2;
word-wrap: break-word;
}
dl {
dt {
font-weight: bolder;
margin-top: $padding-16;
}
dd {
margin-inline-start: 0;
margin-bottom: $padding-16;
}
}
// Special case for highlighted code with line numbers
.highlight {
direction: ltr;
unicode-bidi: embed;
}
.highlight table tr {
td:nth-child(1) pre {
margin: 0;
padding-inline-end: 0;
}
td:nth-child(2) pre {
margin: 0;
padding-inline-start: 0;
}
}
details {
padding: $padding-16;
border: $padding-1 solid var(--gray-200);
border-radius: $border-radius;
summary {
line-height: 1;
padding: $padding-16;
margin: -$padding-16;
cursor: pointer;
}
&[open] summary {
margin-bottom: 0;
}
}
figure {
margin: $padding-16 0;
figcaption p {
margin-top: 0;
}
}
}
.markdown-inner {
// Util class to remove extra margin in nested markdown content
> :first-child {
margin-top: 0;
}
> :last-child {
margin-bottom: 0;
}
}

17
assets/_print.scss Normal file
View file

@ -0,0 +1,17 @@
@media print {
.book-menu,
.book-footer,
.book-toc {
display: none;
}
.book-header,
.book-header aside {
display: block;
}
main {
// Fix for https://bugzilla.mozilla.org/show_bug.cgi?id=939897
display: block !important;
}
}

104
assets/_shortcodes.scss Normal file
View file

@ -0,0 +1,104 @@
.markdown {
// {{< expand "Label" "icon" >}}
.book-expand {
margin-top: $padding-16;
margin-bottom: $padding-16;
border: $padding-1 solid var(--gray-200);
border-radius: $border-radius;
overflow: hidden;
.book-expand-head {
background: var(--gray-100);
padding: $padding-8 $padding-16;
cursor: pointer;
}
.book-expand-content {
display: none;
padding: $padding-16;
}
input[type="checkbox"]:checked + .book-expand-content {
display: block;
}
}
// {{< tabs >}}
.book-tabs {
margin-top: $padding-16;
margin-bottom: $padding-16;
border: $padding-1 solid var(--gray-200);
border-radius: $border-radius;
overflow: hidden;
display: flex;
flex-wrap: wrap;
label {
display: inline-block;
padding: $padding-8 $padding-16;
border-bottom: $padding-1 transparent;
cursor: pointer;
}
.book-tabs-content {
order: 999; //Move content blocks to the end
width: 100%;
border-top: $padding-1 solid var(--gray-100);
padding: $padding-16;
display: none;
}
input[type="radio"]:checked + label {
border-bottom: $padding-1 solid var(--color-link);
}
input[type="radio"]:checked + label + .book-tabs-content {
display: block;
}
input[type="radio"]:focus + label {
@include outline;
}
}
// {{< columns >}}
.book-columns {
margin-left: -$padding-16;
margin-right: -$padding-16;
> div {
margin: $padding-16 0;
min-width: $body-min-width / 2;
padding: 0 $padding-16;
}
}
// {{< button >}}
a.book-btn {
display: inline-block;
font-size: $font-size-14;
color: var(--color-link);
line-height: $padding-16 * 2;
padding: 0 $padding-16;
border: $padding-1 solid var(--color-link);
border-radius: $border-radius;
cursor: pointer;
&:hover {
text-decoration: none;
}
}
// {{< hint >}}
.book-hint {
@each $name, $color in $hint-colors {
&.#{$name} {
border-color: $color;
background-color: rgba($color, 0.1);
}
}
}
}

92
assets/_utils.scss Normal file
View file

@ -0,0 +1,92 @@
.flex {
display: flex;
}
.flex-auto {
flex: 1 1 auto;
}
.flex-even {
flex: 1 1;
}
.flex-wrap {
flex-wrap: wrap;
}
.justify-start {
justify-content: flex-start;
}
.justify-end {
justify-content: flex-end;
}
.justify-center {
justify-content: center;
}
.justify-between {
justify-content: space-between;
}
.align-center {
align-items: center;
}
.mx-auto {
margin: 0 auto;
}
.text-center {
text-align: center;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.hidden {
display: none;
}
input.toggle {
height: 0;
width: 0;
overflow: hidden;
opacity: 0;
position: absolute;
}
.clearfix::after {
content: "";
display: table;
clear: both;
}
@mixin spin($duration) {
animation: spin $duration ease infinite;
@keyframes spin {
100% {
transform: rotate(360deg);
}
}
}
@mixin fixed {
position: fixed;
top: 0;
bottom: 0;
overflow-x: hidden;
overflow-y: auto;
}
@mixin outline {
outline-style: auto;
outline-color: currentColor;
outline-color: -webkit-focus-ring-color;
}

3
assets/_variables.scss Normal file
View file

@ -0,0 +1,3 @@
/* You can override SASS variables here. */
// @import "plugins/dark";

15
assets/book.scss Normal file
View file

@ -0,0 +1,15 @@
@import "defaults";
@import "variables";
@import "themes/{{ default "light" .Site.Params.BookTheme }}";
@import "normalize";
@import "utils";
@import "main";
@import "fonts";
@import "print";
@import "markdown";
@import "shortcodes";
// Custom defined styles
@import "custom";

24
assets/clipboard.js Normal file
View file

@ -0,0 +1,24 @@
(function () {
function select(element) {
const selection = window.getSelection();
const range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
document.querySelectorAll("pre code").forEach(code => {
code.addEventListener("click", function (event) {
if (window.getSelection().toString()) {
return;
}
select(code.parentElement);
if (navigator.clipboard) {
navigator.clipboard.writeText(code.parentElement.textContent);
}
});
});
})();

View file

@ -1,92 +0,0 @@
:root {
--dark-primary-color: 45, 42, 46;
--dark-secondary-color: #665D40;
--dark-tertiary-color: #ac9c6d;
--dark-text-color: #f7f6f3;
}
html {
background-color: rgb(var(--dark-primary-color));
color: var(--dark-text-color);
fill: var(--dark-text-color);
}
.header {
background-color: rgba(var(--dark-primary-color), 0.95);
}
.nav-hamburger-list {
background: rgba(var(--dark-primary-color), 1);
}
.nav-links .nav-icons-divider {
color: var(--dark-secondary-color);
}
a:hover .feather-moon {
fill: var(--dark-text-color);
color: var(--dark-text-color);
}
.social-icons-list .social-icon,
.social-icons-list .social-icon a:visited {
fill: var(--dark-text-color);
}
.social-icons-list .social-icon a:hover {
fill: var(--accent-color);
}
.post-tags .post-tag:hover {
background-color: var(--dark-text-color);
color: rgb(var(--dark-primary-color));
}
.tags-list .post-tags .post-tag a .tag-posts-count {
background-color: var(--dark-secondary-color);
}
.tags-list .post-tags .post-tag:hover a .tag-posts-count {
background-color: var(--dark-text-color);
color: rgb(var(--dark-primary-color));
}
.footer {
border-top-color: var(--dark-header-bg-color);
}
blockquote {
color: darkgrey;
border-left-color: var(--dark-secondary-color);
}
hr {
color: var(--dark-secondary-color);
}
table thead {
background-color: var(--dark-secondary-color);
}
table td,
table th {
border-bottom-color: var(--dark-secondary-color);
}
code,
pre {
background-color: var(--dark-secondary-color) !important;
}
:not(pre) > code {
background-color: var(--dark-tertiary-color) !important;
color: var(--dark-text-color);
}
.header-shadow {
box-shadow: rgb(33, 38, 45) 0px -1px 0px 0px inset;
}
.arrow-logo {
background-color: var(--dark-secondary-color);
}

View file

@ -1,683 +0,0 @@
:root {
--content-width: 1120px;
--container-width: 810px;
--light-primary-color: 247,246,243;
--light-secondary-color: #dddddd;
--light-tertiary-color: #272822;
--light-text-color: #4a5152;
}
@font-face {
font-family: Lato;
font-weight: 400;
src: url("/fonts/Lato-Regular.ttf");
}
@font-face {
font-family: Lato;
font-weight: 700;
src: url("/fonts/Lato-Bold.ttf");
}
html {
background-color: rgb(var(--light-primary-color));
color: var(--light-text-color);
font-family: "GFS Didot";
font-size: 17.5px;
min-height: 100%;
position: relative;
scroll-behavior: smooth;
}
body {
margin-bottom: 170px;
}
b,
strong {
font-weight: bold;
}
.chapter-title {
text-decoration: underline;
text-decoration-thickness: 2px;
text-decoration-color: #665d40;
text-underline-offset:35%;
}
a {
color: inherit;
}
/* This is set in partials/head.html and is populated via config */
a:hover {
color: var(--accent-color);
fill: var(--accent-color);
}
main#content {
margin: 90px auto 0;
width: var(--content-width);
}
main#content > .container {
margin: auto;
width: 75%;
max-width: var(--container-width);
}
.post.container {
box-sizing: border-box;
display: inline-block;
}
.post-toc {
box-sizing: border-box;
display: inline-block;
padding-left: 50px;
vertical-align: top;
/* Would be 25% had there been no margins or border box on all inline blocks */
width: 24%;
}
#toc {
position: fixed;
top: 80px;
bottom: 20px;
overflow-x: hidden;
overflow-y: auto;
}
#toc ul {
list-style: none;
margin: 0;
padding: 0;
font-size: 14px;
}
#toc ul li {
margin-top: 12px;
}
#toc ul li a.level-1 {
padding-left: 0;
}
#toc ul li a.level-2 {
padding-left: 10px;
}
#toc ul li a.level-3 {
padding-left: 20px;
}
#toc ul li a.level-4 {
padding-left: 30px;
}
#toc ul li a {
text-decoration: none;
}
#toc ul li a.active {
color: var(--accent-color);
}
img {
height: auto;
max-width: 100%;
}
/* HEADER */
.header {
background-color: rgba(var(--light-primary-color), 0.95);
color: inherit;
height: 50px;
left: 0;
position: fixed;
top: 0;
transition: box-shadow 0.3s ease-in-out;
width: 100%;
z-index: 5;
}
.header a {
text-decoration: none;
}
.header .header-nav {
height: 50px;
margin-top: 0;
}
.header-nav .avatar {
border-radius: 18px;
float: left;
height: 100%;
margin-left: 15px;
}
.header-nav .avatar img {
border-radius: 100%;
display: block;
height: 38px;
margin-top: 5px;
overflow: hidden;
width: 38px;
}
.header-nav .nav-title {
display: inline-block;
height: 100%;
line-height: 50px;
padding-left: 15px;
}
.nav-title a {
height: 50px;
}
.header-nav .nav-links {
float: right;
line-height: 50px;
margin-right: 10px;
}
.nav-links .nav-link {
display: inline-block;
padding: 0 2px;
}
.nav-links .nav-link a {
display: block;
padding: 0 6px;
}
.nav-link a svg {
height: 20px;
margin: -3px auto;
stroke-width: 2;
width: 20px;
}
.nav-item a svg {
height: 20px;
margin: -3px auto;
stroke-width: 2;
width: 20px;
}
.nav-links .nav-link.icon a {
padding: 0 8px;
}
.nav-links .nav-icons-divider {
border-color: inherit;
border-left: 1.5px solid;
color: var(--light-secondary-color);
margin: 0 10px;
}
.nav-links .dark-theme-toggle:hover {
cursor: pointer;
}
a:hover .feather-sun {
fill: black;
color: black;
}
.dark-theme-toggle .feather {
height: 22px;
stroke-linecap: round;
stroke-linejoin: round;
width: 22px;
}
#hamburger-menu-toggle {
display: none;
}
#hamburger-menu-toggle .feather {
height: 24px;
stroke-linecap: round;
stroke-linejoin: round;
width: 24px;
}
.nav-hamburger-list {
background: rgb(var(--light-primary-color));
border-bottom: solid 1.5px var(--light-secondary-color);
border-top: solid 1.5px var(--light-secondary-color);
list-style-type: none;
margin: 0;
padding: 0;
position: absolute;
right: 0;
text-align: center;
width: 100%;
z-index: 5;
}
.nav-hamburger-list a:hover {
text-decoration: underline;
}
/* FOOTER */
.footer {
bottom: 0;
color: inherit;
left: 0;
margin-left: 30%;
overflow: hidden;
padding: 40px 0;
position: absolute;
text-align: center;
width: 40%;
}
.footer span {
display: block;
font-size: 0.85em;
font-weight: 300;
padding: 1px 0;
}
/** COMMON **/
.flex-break {
flex-basis: 100%;
height: 0;
display: none;
}
.visibility-hidden {
visibility: hidden;
}
.header-shadow {
box-shadow: rgb(220, 220, 220) 0px 1px 5px;
}
/* TAGS */
.post-tags {
list-style-type: none;
padding: 0;
}
.post-tags .post-tag {
border: 1.5px solid;
border-radius: 4px;
box-sizing: border-box;
color: inherit;
display: inline-block;
font-size: 14px;
}
.post-tags .post-tag:hover {
background-color: var(--light-text-color);
color: rgb(var(--light-primary-color));
}
.post-tag a {
color: inherit;
display: block;
padding: 6px 12px;
text-decoration: none;
}
/* CODE BLOCKS */
code,
pre {
background-color: var(--light-tertiary-color);
box-sizing: border-box;
color: white;
}
pre {
font-size: 0.95rem;
overflow: auto;
padding: 20px;
}
code {
box-decoration-break: clone;
word-wrap: break-word;
font-size: 0.8em;
}
:not(pre) > code {
background-color: var(--light-secondary-color) !important;
color: var(--light-text-color);
padding: 1px 4px;
}
pre code {
font-size: 0.9em;
}
blockquote {
border-left: 2px solid var(--light-secondary-color);
color: grey;
padding-left: 1rem;
margin-left: 0;
}
hr {
color: var(--light-secondary-color);
margin: 50px auto;
}
table {
border-collapse: collapse;
margin: 30px 0;
text-align: left;
display: block;
overflow-x: auto;
}
table thead {
background-color: var(--light-secondary-color);
}
table td,
table th {
padding: 1.4rem;
}
table td {
border-bottom: 1px solid var(--light-secondary-color);
}
/* HOME PAGE */
.home-about {
text-align: center;
}
.home-about .avatar img {
border-radius: 50%;
height: auto;
object-fit: cover;
}
/* Avatar sizes (default is M) - XS, S, M, L, XL */
.home-about .avatar img.size-xs {
height: 7rem;
width: 7rem;
}
.home-about .avatar img.size-s {
height: 9rem;
width: 9rem;
}
.home-about .avatar img.size-m {
height: 11rem;
width: 11rem;
}
.home-about .avatar img.size-l {
height: 13rem;
width: 13rem;
}
.home-about .avatar img.size-xl {
height: 15rem;
width: 15rem;
}
.home-about h1 {
font-size: 2em;
}
.social-icons {
text-align: center;
}
.social-icons .social-icons-list {
display: inline-block;
list-style-type: none;
padding: 0;
text-align: center;
}
.social-icons-list .social-icon {
box-sizing: border-box;
display: inline-block;
fill: var(--light-text-color);
height: 24px;
margin: 0 6px;
width: 24px;
}
.social-icon a svg path {
transition: fill 0.15s ease;
}
.markdown-content {
line-height: 1.25;
width: 80%;
margin: 0 auto;
}
.home-posts {
margin: 0 auto;
padding-top: 10px;
width: 80%;
}
/* SINGLE */
.post [role="doc-subtitle"] {
font-size: 1.1em;
font-style: italic;
}
.post {
/* Prevent long strings from overflowing */
overflow-wrap: break-word;
}
.post .post-date, .prev-post-date, .next-post-date {
color: gray;
}
.post .post-content {
line-height: 1.7;
margin-top: 50px;
letter-spacing: 0.5px;
}
.post-content h1, .post-content h2, .post-content h3, .post-content h4 {
scroll-margin-top: 55px;
}
.post-content h1 {
margin-top: 40px;
}
.post-content h2 {
margin-top: 35px;
}
.post-content h3 {
margin-top: 30px;
}
.post-content h4 {
margin-top: 25px;
}
.post-content h5 {
margin-top: 20px;
}
.post-content img {
display: block;
margin-left: auto;
margin-right: auto;
}
/* LIST */
.list-posts .list-title {
text-align: center;
}
.list-posts .posts-year {
margin-top: 70px;
}
.list-posts .post-title {
margin: 15px 0 0 15px;
}
.list-posts a {
text-decoration: none;
}
.post-title .post-link,
.post-title .post-date {
display: inline-block;
}
.chapter-title {
margin-bottom:1%;
}
.post-title .post-link {
/* This magic number is the largest width that keeps the post-date div from
* causing the line to wrap with the longest possible date string
* "September 22, 2022"
*/
width: 73%;
}
.tags-list .post-tags {
margin-top: 50px;
}
.tags-list .post-tags .post-tag {
margin: 2px 5px;
padding: 0;
}
.tags-list .post-tags .post-tag a {
border-radius: inherit;
padding: 0;
}
.tags-list .post-tags .post-tag a div {
display: inline-block;
}
.tags-list .post-tags .post-tag a .tag-name {
padding: 5px 8px;
}
.tags-list .post-tags .post-tag a .tag-posts-count {
background-color: var(--light-secondary-color);
border-radius: inherit;
color: inherit;
opacity: 0.8;
padding: 6px;
position: relative;
z-index: 0;
}
.tags-list .post-tags .post-tag:hover a .tag-posts-count {
background-color: var(--light-text-color);
color: rgb(var(--light-primary-color));
}
.text-404 {
margin-top: 125px;
text-align: center;
}
@media only screen and (max-width: 1120px) {
main#content {
width: auto;
}
}
@media only screen and (max-width: 820px) {
body {
font-size: 0.95rem;
}
.flex-break {
display: block;
}
.home-about .avatar img {
border-radius: 50%;
height: 7rem;
width: 7rem;
}
.nav-links .nav-link,
.nav-icons-divider {
display: none;
}
#hamburger-menu-toggle {
display: inline-block;
}
main#content {
box-sizing: border-box;
padding: 0 1.5rem;
width: auto;
}
.markdown-content, .home-posts {
width: auto;
margin: 0;
}
main#content .container {
width: 100%;
}
.home-about {
margin: 0 auto;
}
#toc {
display:none;
}
.list-posts {
flex: 1;
}
.list-posts .post-date {
color: gray;
}
.footer {
margin-left: 0;
width: 100%;
}
}
@media only screen and (min-width: 820px) {
.nav-hamburger-list {
visibility: hidden !important;
}
}
/*Accessibility*/
.sr-only {
position: absolute;
left: -10000px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
.prev-post {
float: left;
text-align: left;
}
.next-post {
float: right;
text-align: right;
}
.prev-post, .next-post {
max-width: 33%;
}
/* back to top button */
.arrow-logo {
background-color: transparent;
border-radius: 50%;
bottom: 20px;
cursor: pointer;
display: none;
font-size: 24px;
padding: 10px;
padding-right: 8px;
position: fixed;
right: 20px;
z-index: 5;
background-color: var(--light-tertiary-color);
width: 25px;
height: 25px;
}
.arrow-logo path{
fill: var(--light-secondary-color)
}
.arrow-logo:hover {
fill: var(--accent-color);
}
@media screen and (max-width: 600px) {
#btt-button {
visibility: hidden;
}
}

View file

@ -1,2 +0,0 @@
/*! 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 */

File diff suppressed because one or more lines are too long

View file

@ -1,119 +0,0 @@
document.addEventListener('DOMContentLoaded', ready, false);
const THEME_PREF_STORAGE_KEY = "theme-preference";
const THEME_TO_ICON_CLASS = {
'dark': 'feather-moon',
'light':'feather-sun'
};
const THEME_TO_ICON_TEXT_CLASS = {
'dark': 'Dark mode',
'light':'Light mode'
};
let toggleIcon = '';
let darkThemeCss = '';
const HEADING_TO_TOC_CLASS = {
'H1': 'level-1',
'H2': 'level-2',
'H3': 'level-3',
'H4': 'level-4'
}
function ready() {
feather.replace({ 'stroke-width': 1, width: 20, height: 20 });
setThemeByUserPref();
if (document.querySelector('main#content > .container') !== null &&
document.querySelector('main#content > .container').classList.contains('post')) {
if (document.getElementById('TableOfContents') !== null) {
fixTocItemsIndent();
createScrollSpy();
} else {
document.querySelector('main#content > .container.post').style.display = "block";
}
}
// Elements to inject
const svgsToInject = document.querySelectorAll('img.svg-inject');
// Do the injection
SVGInjector(svgsToInject);
document.getElementById('hamburger-menu-toggle').addEventListener('click', () => {
const hamburgerMenu = document.getElementsByClassName('nav-hamburger-list')[0]
if (hamburgerMenu.classList.contains('visibility-hidden')) {
hamburgerMenu.classList.remove('visibility-hidden');
} else {
hamburgerMenu.classList.add('visibility-hidden');
}
})
}
window.addEventListener('scroll', () => {
if (window.innerWidth <= 820) {
// For smaller screen, show shadow earlier
toggleHeaderShadow(50);
} else {
toggleHeaderShadow(100);
}
});
function fixTocItemsIndent() {
document.querySelectorAll('#TableOfContents a').forEach($tocItem => {
const itemId = $tocItem.getAttribute("href").substring(1)
$tocItem.classList.add(HEADING_TO_TOC_CLASS[document.getElementById(itemId).tagName]);
});
}
function createScrollSpy() {
var elements = document.querySelectorAll('#toc a');
document.addEventListener('scroll', function () {
elements.forEach(function (element) {
const boundingRect = document.getElementById(element.getAttribute('href').substring(1)).getBoundingClientRect();
if (boundingRect.top <= 55 && boundingRect.bottom >= 0) {
elements.forEach(function (elem) {
elem.classList.remove('active');
});
element.classList.add('active');
}
});
});
}
function toggleHeaderShadow(scrollY) {
if (window.scrollY > scrollY) {
document.querySelectorAll('.header').forEach(function(item) {
item.classList.add('header-shadow')
})
} else {
document.querySelectorAll('.header').forEach(function(item) {
item.classList.remove('header-shadow')
})
}
}
function setThemeByUserPref() {
darkThemeCss = document.getElementById("dark-theme");
const savedTheme = localStorage.getItem(THEME_PREF_STORAGE_KEY) ||
(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark': 'light');
const darkThemeToggles = document.querySelectorAll('.dark-theme-toggle');
setTheme(savedTheme, darkThemeToggles);
darkThemeToggles.forEach(el => el.addEventListener('click', toggleTheme, {capture: true}))
}
function toggleTheme(event) {
toggleIcon = event.currentTarget.querySelector("a svg.feather");
if (toggleIcon.classList[1] === THEME_TO_ICON_CLASS.dark) {
setTheme('light', [event.currentTarget]);
} else if (toggleIcon.classList[1] === THEME_TO_ICON_CLASS.light) {
setTheme('dark', [event.currentTarget]);
}
}
function setTheme(themeToSet, targets) {
localStorage.setItem(THEME_PREF_STORAGE_KEY, themeToSet);
darkThemeCss.disabled = themeToSet === 'light';
targets.forEach((target) => {
target.querySelector('a').innerHTML = feather.icons[THEME_TO_ICON_CLASS[themeToSet].split('-')[1]].toSvg();
target.querySelector("#dark-theme-toggle-screen-reader-target").textContent = [THEME_TO_ICON_TEXT_CLASS[themeToSet]];
});
}

View file

@ -1,9 +0,0 @@
/**
* SVGInjector v1.1.3 - Fast, caching, dynamic inline SVG DOM injection library
* https://github.com/iconic/SVGInjector
*
* Copyright (c) 2014-2015 Waybury <hello@waybury.com>
* @license MIT
*/
!function(t,e){"use strict";function r(t){t=t.split(" ");for(var e={},r=t.length,n=[];r--;)e.hasOwnProperty(t[r])||(e[t[r]]=1,n.unshift(t[r]));return n.join(" ")}var n="file:"===t.location.protocol,i=e.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),o=Array.prototype.forEach||function(t,e){if(void 0===this||null===this||"function"!=typeof t)throw new TypeError;var r,n=this.length>>>0;for(r=0;n>r;++r)r in this&&t.call(e,this[r],r,this)},a={},l=0,s=[],u=[],c={},f=function(t){return t.cloneNode(!0)},p=function(t,e){u[t]=u[t]||[],u[t].push(e)},d=function(t){for(var e=0,r=u[t].length;r>e;e++)!function(e){setTimeout(function(){u[t][e](f(a[t]))},0)}(e)},v=function(e,r){if(void 0!==a[e])a[e]instanceof SVGSVGElement?r(f(a[e])):p(e,r);else{if(!t.XMLHttpRequest)return r("Browser does not support XMLHttpRequest"),!1;a[e]={},p(e,r);var i=new XMLHttpRequest;i.onreadystatechange=function(){if(4===i.readyState){if(404===i.status||null===i.responseXML)return r("Unable to load SVG file: "+e),n&&r("Note: SVG injection ajax calls do not work locally without adjusting security setting in your browser. Or consider using a local webserver."),r(),!1;if(!(200===i.status||n&&0===i.status))return r("There was a problem injecting the SVG: "+i.status+" "+i.statusText),!1;if(i.responseXML instanceof Document)a[e]=i.responseXML.documentElement;else if(DOMParser&&DOMParser instanceof Function){var t;try{var o=new DOMParser;t=o.parseFromString(i.responseText,"text/xml")}catch(l){t=void 0}if(!t||t.getElementsByTagName("parsererror").length)return r("Unable to parse SVG file: "+e),!1;a[e]=t.documentElement}d(e)}},i.open("GET",e),i.overrideMimeType&&i.overrideMimeType("text/xml"),i.send()}},h=function(e,n,a,u){var f=e.getAttribute("data-src")||e.getAttribute("src");if(!/\.svg/i.test(f))return void u("Attempted to inject a file with a non-svg extension: "+f);if(!i){var p=e.getAttribute("data-fallback")||e.getAttribute("data-png");return void(p?(e.setAttribute("src",p),u(null)):a?(e.setAttribute("src",a+"/"+f.split("/").pop().replace(".svg",".png")),u(null)):u("This browser does not support SVG and no PNG fallback was defined."))}-1===s.indexOf(e)&&(s.push(e),e.setAttribute("src",""),v(f,function(i){if("undefined"==typeof i||"string"==typeof i)return u(i),!1;var a=e.getAttribute("id");a&&i.setAttribute("id",a);var p=e.getAttribute("title");p&&i.setAttribute("title",p);var d=[].concat(i.getAttribute("class")||[],"injected-svg",e.getAttribute("class")||[]).join(" ");i.setAttribute("class",r(d));var v=e.getAttribute("style");v&&i.setAttribute("style",v);var h=[].filter.call(e.attributes,function(t){return/^data-\w[\w\-]*$/.test(t.name)});o.call(h,function(t){t.name&&t.value&&i.setAttribute(t.name,t.value)});var g,m,b,y,A,w={clipPath:["clip-path"],"color-profile":["color-profile"],cursor:["cursor"],filter:["filter"],linearGradient:["fill","stroke"],marker:["marker","marker-start","marker-mid","marker-end"],mask:["mask"],pattern:["fill","stroke"],radialGradient:["fill","stroke"]};Object.keys(w).forEach(function(t){g=t,b=w[t],m=i.querySelectorAll("defs "+g+"[id]");for(var e=0,r=m.length;r>e;e++){y=m[e].id,A=y+"-"+l;var n;o.call(b,function(t){n=i.querySelectorAll("["+t+'*="'+y+'"]');for(var e=0,r=n.length;r>e;e++)n[e].setAttribute(t,"url(#"+A+")")}),m[e].id=A}}),i.removeAttribute("xmlns:a");for(var x,S,k=i.querySelectorAll("script"),j=[],G=0,T=k.length;T>G;G++)S=k[G].getAttribute("type"),S&&"application/ecmascript"!==S&&"application/javascript"!==S||(x=k[G].innerText||k[G].textContent,j.push(x),i.removeChild(k[G]));if(j.length>0&&("always"===n||"once"===n&&!c[f])){for(var M=0,V=j.length;V>M;M++)new Function(j[M])(t);c[f]=!0}var E=i.querySelectorAll("style");o.call(E,function(t){t.textContent+=""}),e.parentNode.replaceChild(i,e),delete s[s.indexOf(e)],e=null,l++,u(i)}))},g=function(t,e,r){e=e||{};var n=e.evalScripts||"always",i=e.pngFallback||!1,a=e.each;if(void 0!==t.length){var l=0;o.call(t,function(e){h(e,n,i,function(e){a&&"function"==typeof a&&a(e),r&&t.length===++l&&r(l)})})}else t?h(t,n,i,function(e){a&&"function"==typeof a&&a(e),r&&r(1),t=null}):r&&r(0)};"object"==typeof module&&"object"==typeof module.exports?module.exports=exports=g:"function"==typeof define&&define.amd?define(function(){return g}):"object"==typeof t&&(t.SVGInjector=g)}(window,document);
//# sourceMappingURL=svg-injector.map.js

15
assets/manifest.json Normal file
View file

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

7
assets/menu-reset.js Normal file
View file

@ -0,0 +1,7 @@
(function() {
var menu = document.querySelector("aside .book-menu-content");
addEventListener("beforeunload", function(event) {
localStorage.setItem("menu.scrollTop", menu.scrollTop);
});
menu.scrollTop = localStorage.getItem("menu.scrollTop");
})();

6
assets/mermaid.json Normal file
View file

@ -0,0 +1,6 @@
{
"flowchart": {
"useMaxWidth":true
},
"theme": "default"
}

349
assets/normalize.css vendored Normal file
View file

@ -0,0 +1,349 @@
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}

View file

@ -0,0 +1,36 @@
$startLevel: 1;
$endLevel: 6;
.book-page .markdown.book-article {
@for $currentLevel from $startLevel through $endLevel {
> h#{$currentLevel} {
counter-increment: h#{$currentLevel};
counter-reset: h#{$currentLevel + 1};
$content: "";
@for $n from $startLevel through $currentLevel {
$content: $content + 'counter(h#{$n})"."';
}
&::before {
content: unquote($content) " ";
}
}
}
}
.book-toc nav#TableOfContents ul {
li {
counter-increment: item;
&:first-child {
counter-reset: item;
}
&:before {
content: counters(item, ".") ". ";
float: left;
margin-inline-end: $padding-4;
}
}
}

View file

@ -0,0 +1,26 @@
@import "defaults";
@import "variables";
// Webkit
::-webkit-scrollbar {
width: $padding-8;
}
::-webkit-scrollbar-thumb {
background: transparent;
border-radius: $padding-8;
}
:hover::-webkit-scrollbar-thumb {
background: var(--gray-500);
}
// MS
body {
-ms-overflow-style: -ms-autohiding-scrollbar;
}
// Future
.book-menu nav {
scrollbar-color: transparent var(--gray-500);
}

17
assets/search-data.json Normal file
View file

@ -0,0 +1,17 @@
[
{{- $pages := where .Site.Pages "Kind" "in" (slice "page" "section") -}}
{{- $pages = where $pages "Params.booksearchexclude" "!=" true -}}
{{/* Remove until we know why it does not work, see https://github.com/alex-shpak/hugo-book/issues/528 */}}
{{/*- $pages = where $pages "Content" "not in" (slice nil "") -*/}}
{{- $pages = where $pages "Content" "!=" "" -}}
{{ range $index, $page := $pages }}
{{ if gt $index 0}},{{end}} {
"id": {{ $index }},
"href": "{{ $page.RelPermalink }}",
"title": {{ (partial "docs/title" $page) | jsonify }},
"section": {{ (partial "docs/title" $page.Parent) | jsonify }},
"content": {{ $page.Plain | jsonify }}
}
{{- end -}}
]

113
assets/search.js Normal file
View file

@ -0,0 +1,113 @@
'use strict';
{{ $searchDataFile := printf "%s.search-data.json" .Language.Lang }}
{{ $searchData := resources.Get "search-data.json" | resources.ExecuteAsTemplate $searchDataFile . | resources.Minify | resources.Fingerprint }}
{{ $searchConfig := i18n "bookSearchConfig" | default "{}" }}
(function () {
const searchDataURL = '{{ $searchData.RelPermalink }}';
const indexConfig = Object.assign({{ $searchConfig }}, {
includeScore: true,
useExtendedSearch: true,
fieldNormWeight: 1.5,
threshold: 0.2,
ignoreLocation: true,
keys: [
{
name: 'title',
weight: 0.7
},
{
name: 'content',
weight: 0.3
}
]
});
const input = document.querySelector('#book-search-input');
const results = document.querySelector('#book-search-results');
if (!input) {
return
}
input.addEventListener('focus', init);
input.addEventListener('keyup', search);
document.addEventListener('keypress', focusSearchFieldOnKeyPress);
/**
* @param {Event} event
*/
function focusSearchFieldOnKeyPress(event) {
if (event.target.value !== undefined) {
return;
}
if (input === document.activeElement) {
return;
}
const characterPressed = String.fromCharCode(event.charCode);
if (!isHotkey(characterPressed)) {
return;
}
input.focus();
event.preventDefault();
}
/**
* @param {String} character
* @returns {Boolean}
*/
function isHotkey(character) {
const dataHotkeys = input.getAttribute('data-hotkeys') || '';
return dataHotkeys.indexOf(character) >= 0;
}
function init() {
input.removeEventListener('focus', init); // init once
input.required = true;
fetch(searchDataURL)
.then(pages => pages.json())
.then(pages => {
window.bookSearchIndex = new Fuse(pages, indexConfig);
})
.then(() => input.required = false)
.then(search);
}
function search() {
while (results.firstChild) {
results.removeChild(results.firstChild);
}
if (!input.value) {
return;
}
const searchHits = window.bookSearchIndex.search(input.value).slice(0,10);
searchHits.forEach(function (page) {
const li = element('<li><a href></a><small></small></li>');
const a = li.querySelector('a'), small = li.querySelector('small');
a.href = page.item.href;
a.textContent = page.item.title;
small.textContent = page.item.section;
results.appendChild(li);
});
}
/**
* @param {String} content
* @returns {Node}
*/
function element(content) {
const div = document.createElement('div');
div.innerHTML = content;
return div.firstChild;
}
})();

7
assets/sw-register.js Normal file
View file

@ -0,0 +1,7 @@
{{- $swJS := resources.Get "sw.js" | resources.ExecuteAsTemplate "sw.js" . -}}
if (navigator.serviceWorker) {
navigator.serviceWorker.register(
"{{ $swJS.RelPermalink }}",
{ scope: "{{ "./" | relURL }}" }
);
}

55
assets/sw.js Normal file
View file

@ -0,0 +1,55 @@
const cacheName = self.location.pathname
const pages = [
{{ if eq .Site.Params.BookServiceWorker "precache" }}
{{ range .Site.AllPages -}}
"{{ .RelPermalink }}",
{{ end -}}
{{ end }}
];
self.addEventListener("install", function (event) {
self.skipWaiting();
caches.open(cacheName).then((cache) => {
return cache.addAll(pages);
});
});
self.addEventListener("fetch", (event) => {
const request = event.request;
if (request.method !== "GET") {
return;
}
/**
* @param {Response} response
* @returns {Promise<Response>}
*/
function saveToCache(response) {
if (cacheable(response)) {
return caches
.open(cacheName)
.then((cache) => cache.put(request, response.clone()))
.then(() => response);
} else {
return response;
}
}
/**
* @param {Error} error
*/
function serveFromCache(error) {
return caches.open(cacheName).then((cache) => cache.match(request.url));
}
/**
* @param {Response} response
* @returns {Boolean}
*/
function cacheable(response) {
return response.type === "basic" && response.ok && !response.headers.has("Content-Disposition")
}
event.respondWith(fetch(request).then(saveToCache).catch(serveFromCache));
});

9
assets/themes/_auto.scss Normal file
View file

@ -0,0 +1,9 @@
:root {
@include theme-light;
}
@media (prefers-color-scheme: dark) {
:root {
@include theme-dark;
}
}

3
assets/themes/_dark.scss Normal file
View file

@ -0,0 +1,3 @@
:root {
@include theme-dark;
}

View file

@ -0,0 +1,3 @@
:root {
@include theme-light;
}

13
content/_index.md Executable file → Normal file
View file

@ -1,4 +1,13 @@
---
title: home
type: docs
bookToc: false
---
<h1> apothēke (n). </h1>
# apothēke (n).
- [/a.po.tʰɛ̌ː.kɛː/] (αποθήκη) - [/a.po.tʰɛ̌ː.kɛː/] (αποθήκη)
### A place designated for storing or preserving items of value or importance.
<h3>A place designated for storing or preserving items of value or importance.</h3>

View file

@ -1,15 +1,20 @@
--- ---
title: "about" title: "about"
type: "peri" bookToc: true
--- ---
I do not, and hopefully never will, claim to know the truth. In fact, I [claim the opposite](/theses/axioms/). # about
I do not, and hopefully never will, claim to know the truth. In fact, I [claim the opposite]({{< relref "/theses/metaphysica/on logic/axioms" >}}).
## this project ## this project
I have an innate need to express the thoughts in my head.
apothēke is a showcase of my limited capability to understand the world. Oftentimes I end upon conclusions that, in oral speech, am unable to express in a way that I find satisfactory. Also, due to the nature of dialogue, i.e. not a monologue, there is the propensity to diffuse the idea during a conversation; the need for a clarification of a definition might arise, or the disagreement for the use of a word which was picked for spurred rather than accuracy, etc, and in general there is no adequate space to fully expore a single idea in this process, as dialogue often is conductive to discussing and presenting a theme rather than a single subject contained within such a theme.
I will be wrong more times than not, and I am content with this. A friend pointed out that such an endeavour must be made in caution, I could, willingly or unwillingly, engage in this out of a feel of superiority, or rather a saviour complex of sorts. I do not feel like such is the case, it is however a possibility, people lie to themselves constantly and making a public statement carries the idea of believing that you are right. Nevertheless I feel like this is more of an outlet for my brain that exists publicly in the same sense that music or poetry exist publicly, not from a need to be correct, but from a need of self expression.
apothēke is therefore a project of self expression; or rather a showcase of my limited capability to understand the world.
## language ## language
@ -19,7 +24,23 @@ Since this a public project, i.e. an express of opinion in a public forum, the a
## I, the person ## I, the person
Out of want to disinclude any bias that may arise from the connection between myself and my ideas, I try to maintain as much separation as possible between the metaphysical entity that is this project and my self. Out of want to disinclude any bias that may arise from the connection between myself and my ideas, I try to maintain as much separation as possible between the metaphysical entity that is this project and my self. I do however feel like I need to give a proper introduction.
The [axiomatic system of faith](/theses/metaphysica/on-logic/axioms) that I choose to believe in is the dogma of the Orthodox Catholic Church, as it was established in the First Ecumenical Council of Nicaea.
This for most people who know me personally oftentimes comes as a surprise, especially to those that know me from a young age, during which I was an atheist; I rejected the axiomatic system I currently believe in, and I followed the system of "pure scientific truth", ignoring the gaps and weaknesses it presents.
The first cracks in my absolute devotion to science occurred during my first years in university, when I came into contact with friends which I will forever hold dear to my heart, as well as with various psychedelic substances, both of which caused me to reevaluate the relationship between faith and science. These substances (more on those in an upcoming corpus of text), created inside me a disruption on the idea of absoluteness of reality and of the nature of truth, and suggested to start from the beginning.
Through the above, I became exposed to new ideas, new means by which humans have interpreted nature throughout the millenia of human experience, and for years I delved into the different religions of humanity, as well as the philosophical ideas that rise from them.
These journeys, mental and physical, led me to many questions which no religion, philosophy, or axiomatic system could answer, except for the one I believe in now.
The fact that The God is, rather than not, and specifically as he is described in the Orthodox dogma, is a necessity for the system of reality, as I see it and understand it, to be self-consistent. Not only does it close the gaps that are left open by other axiomatic systems, but also eclipses and explains why these other systems occur.
Assuming someone knows, or is near to, the Truth, and modifies it, by removing sections, or by adding new ones, then they are able to create every "truthfull" system we have discovered as humans. As a result of these modifications though, it is impossible to trace back the original Truth, without the Truth itself, and the modifications and the modifiers become lost in history.
After all, the best lie is that which as much as possible contains the Truth, except for a single point, a detail that nobody can recognize as false, without first knowing the fullness of Truth.
## contact ## contact

View file

@ -1,5 +0,0 @@
---
title: "deloses"
type: "delosis"
---

View file

@ -1,31 +0,0 @@
---
title: "Evolutionary leftovers"
description: "A thesis on the societal role of men and women."
type: "delosis"
draft: true
---
It makes intuitive sense to consider an evolutionary process for society alongside the evolution of the human race and so, in order to figure out how the modern societal roles came to be, one must look at the societal roles of the past and move forwards in time to the present day.
The earliest one can go is around the birth of the anatomically modern humans, and the great migration out of Africa and into the rest of Afroeurasia, Oceania and the American continent.
From even back then, the societal roles were defined. In hunter-gatherer societies such as the ones of early humans, the male would traditionally go on long expeditions to hunt for meat, while the female would stay around a safe area, gathering herbs and tending to the young. The biology was also already emphasized at the time, with males already showing human male characteristics such as increased bone and muscle density. This means that one must explore even before that, and probably reach the time when the first social groups were formed with the intent of raising the young as tightly knit communities.
In such a scenario, the idea of a role distinction between biological genders starts to make sense.
Imagine a small group of ten males and ten females, living together and fending for themselves in a hostile environment. Now assume that all males but one die, leaving eleven members to the group, one male and ten females. Assuming a human gestation period of nine months, a year after the social group will have twenty one members, one male, ten female, and ten children.
Were the opposite to happen, one female left with ten males, a year after the group would have twelve members, ten male, one female, and one child.
From a biological and evolutionary standpoint therefore, there is a glaring distinction between the genders. Males are *expendable*, whilst females are not.
It makes sense in this situation to send the expendable males to hunt for food in a hostile environment, as their deaths are not as significant for the well being of the group as the death of a single female.
This however brought the caveat that women became indispencible to the group, meaning that the males, becoming stronger and more aggressive in time, could deprive females from their liberties, with the pretext of defending them from dangers, seen and unseen.
Once more complex societies started forming, and different smaller groups started to form bigger ones, this notion of protection then transformed from protecting the females from a hostile environment, to safeguarding the females from other members of other groups/tribes, since the hostile environment had been conquered. Around this idea we see the exact behaviour of cities being formed, which would frequently go to war with each other, with males being the warrior caste and the females being forced to stay at home, with strict societal rules and an expectation to care for the children. Once again, the same biological idea presents itself. Males are expendable, so females must sacrifice their liberties for the greater good.
Looking at the modern age, we see the same patterns emerge. In societies where life is still harsh and survival is not guaranteed, we still see harsh and strict codes of behaviour for women, under the pretext of protection, whilst for men we see their expendability.
In societies where the effort to fulfill basic needs becomes trivial, we see a more egalitarian approach. Since there is no seen or unseen threat to the well being of the group, males have less of a biological excuse to force their ideals on females, who in turn strive and demand the same liberties as males.

View file

@ -1,23 +0,0 @@
---
title: "A proper introduction"
description: "Who am I? How did I get here?"
weight: 2
type: "delosis"
---
The axiomatic system of faith that I choose to believe in is the dogma of the Orthodox Catholic Church, as it was established in the First Ecumenical Council of Nicaea.
This for most people who know me personally oftentimes comes as a surprise, especially to those that know me from a young age, during which I was an atheist; I rejected the axiomatic system I currently believe in, and I followed the system of "pure scientific truth", ignoring the gaps and weaknesses it presents.
The first cracks in my absolute devotion to science occurred during my first years in university, when I came into contact with friends which I will forever hold dear to my heart, as well as with various psychedelic substances, both of which caused me to reevaluate the relationship between faith and science. The substances, psylocybin, lysergic acid diethylamide, and 2C-B, (in this order) created in me, or rather, forced me to demolish the idea of absoluteness of reality and of the nature of truth, and start from the beginning.
Through the above, I became exposed to new ideas, new means by which humans have interpreted nature throughout the millenia of human experience, and for years I delved into the different religions of humanity, as well as the philosophical ideas that rise from them.
These journeys, mental and physical, led me to many questions which no religion, philosophy, or axiomatic system could answer, except for the one I believe in now.
The fact that God is, rather than not, and specifically as he is described in the Orthodox dogma, is a necessity for the system of reality, as I see it and understand it, to be self-consistent. Not only does it close the gaps that are left open by other axiomatic systems, but also eclipses and explains why these other systems occur.
Assuming someone knows, or is near to, the Truth, and modifies it, by removing sections, or by adding new ones, then they are able to create every "truthfull" system we have discovered as humans. As a result of these modifications though, it is impossible to trace back the original Truth, without the Truth itself, and the modifications and the modifiers become lost in history.
After all, the best lie is that which wholly contains the Truth, except for a single point, a detail that nobody can recognize as false, without first knowing the Truth.

View file

@ -1,10 +1,8 @@
--- ---
title: "donations" title: "donations"
type: "peri"
--- ---
# thank you for considering supporting # thank you for considering supporting
Below exist some options
|Monero|Bitcoin| |Monero|Bitcoin|
|:--:|:--:| |:--:|:--:|

12
content/menu/_index.md Normal file
View file

@ -0,0 +1,12 @@
---
headless: true
---
- [metaphysica]({{< relref "/theses/metaphysica" >}})
- [on logic]({{< relref "/theses/metaphysica/on logic" >}})
- [the nature of faith]({{< relref "/theses/metaphysica/on logic/axioms" >}})
- [concerning fallacies]({{< relref "/theses/metaphysica/on logic/fallacies" >}})
- [on free will]({{< relref "/theses/metaphysica/on free will" >}})
- [the existence of free will]({{< relref "/theses/metaphysica/on free will/existence" >}})
- [defining free will]({{< relref "/theses/metaphysica/on free will/definition" >}})

View file

@ -1,4 +0,0 @@
---
title: "theses"
type: "thesis"
---

View file

@ -1,12 +0,0 @@
---
title: "Defining free will"
chapter: "on free will"
section: 2
description: "Trying to define human behaviour"
weight: 5
type: "thesis"
draft: true
---

View file

@ -0,0 +1,15 @@
---
title: "metaphysica"
---
# metaphysica
## introduction
'metaphysica' deals with the unseen, unverifiable, and infallible ideas and processes that I observe as influencing, or guiding, every day life.
This corpus is split into parts; the first part attempts to deconstruct logic, and the second one deals with free will. As more parts are written this page will expand to include them too.
## table of contents
1. [on logic]({{< relref "/theses/metaphysica/on logic" >}})
2. [on free will]({{< relref "/theses/metaphysica/on free will" >}})

View file

@ -0,0 +1,17 @@
---
title: "on free will"
---
# on free will
## task
In this part, I attempt to present and prove free will as a mode of action. Multiple times throughout long discussions with others, and myself, I have run into issues pertaining to the definition and the idea that such a mode even exists.
Moreover, to be able to move ahead with discussing moral, societal, and human issues, I need to define free will, since, in every other mode of action, the aforementioned cannot exist; one needs to be able to *choose* in order to have a moral status, form relationships, and even define themselves.
Due to the infallible nature of free will, the discussion concerning the existence of free will leaves much to be desired; it is nevertheless important to the rest of the text.
## table of contents
1. [the existence of free will]({{< relref "/theses/metaphysica/on free will/existence" >}})
2. [defining free will]({{< relref "/theses/metaphysica/on free will/definition" >}})

View file

@ -0,0 +1,18 @@
---
title: "defining free will"
---
# trying to define the modes of actions
<br />
If we accept [the idea of free will existing]({{< relref "/theses/metaphysica/on free will/existence" >}}), we should be able to define it, in order to be able to self reference and call upon to make use of this idea. This also helps in clarifying the meaning, which in everyday speech is muddled, much like most of language, due to the nature of communication (more on that at a later point).
Alongside free will, there are two more modes of behaviour in nature, determinism and pure randomness. Discussing these first is necessary to properly define free will, since these are directly observable in the outside world; free will is only directly observable in the inner state of the self, with the admission that others behave similarly.
The first term we will explore is determinism, the idea that things in nature behave in a predefined, preordained way. This mode of action is generally linked with non sentient or better yet non living things, such as rocks, metals, everyday objects that we make use of etc. By claiming that they move deterministically, we claim that there is, theoretically if not literally, a way by which we can obtain every single bit of information about the past and the future of the object under study, subject to an adequate amount of information about the current state. Here, by theoretically one can imply the existence of a perfect measurement device, that can give accurate measurements up to any level of significance one might care about. This does not guarantee absolute and complete knowledge of a system, but rather guarantees that the object in question behaves predictably, under a known or unknown set of laws, physical in nature. This means that a deterministic object cannot operate on its own, as it is fully under the influence and flow of the external world.
True randomness is the exact opposite. True randomness implies that under any circumstances, there does not exist a mechanism or set of predefined laws that we can use to guarantee that the outcome will be aligned with any prediction one might make. In this way, true randomness can only be partially predicted with the use of mechanisms that predict expected, or average behaviours, without the possibility to definitively correctly guess a single outcome. As a truly random behaviour cannot be dictated by external factors, since it would be just an extremely complex deterministic system, true randomness is not dictated by any factors.
Both of the above mechanisms appear to influence the individual. Determinism creeps in as pressure, both environmental and evolutionary, while truly random behaviour might manifest as a spontaneous, if instantaneous, change.
These however do not provide for a mechanism that allows for the individual to be influenced by their own inner state. Since deterministic behaviour has a set output for a given input, and random behaviour is nonsensical by definition, there needs to be a mechanism by which the person can, by observing and acting on themselves, change and manipulate a behaviour or outcome.
This mechanism is free will.

View file

@ -1,18 +1,13 @@
--- ---
title: "The existence of free will" title: "the existence of free will"
chapter: "on free will"
section: 1
description: "Attempting to justify why we aren't souless automata"
weight: 4
type: "thesis"
--- ---
# why we are rather than not
<br />
In order to define and then converse on ideas relating to free will, one must first convince themselves on its existence. Surely one can simply make a definition, as well as talk about the emergent system much like any other metaphysical structure, but for there to be a reason to do so, one must be able to argue for its existence. In order to define and then converse on ideas relating to free will, one must first convince themselves on its existence. Surely one can simply make a definition, as well as talk about the emergent system much like any other metaphysical structure, but for there to be a reason to do so, one must be able to argue for its existence.
On this matter, there are many different arguments, however I will focus on the three that I find the strongest; this does not mean that one can prove existence, but these seem to strongly suggest and support that free will is indeed part of reality. On this matter, there are many different arguments, however I will focus on the three that I find the strongest; this does not mean that one can prove existence, but these seem to strongly suggest and support that free will is indeed part of reality.
Before I express these arguments, I would like to take some time to explain why the existence of free will is an unprovable truth. Apart from the ideas discussed earlier [on logic](/theses/logic), and [on axioms](/theses/axioms), there is another reason, metaphysical in nature, and inseparable from the existence of the God. Before I express these arguments, I would like to take some time to explain why the existence of free will is an unprovable truth. Apart from the ideas discussed earlier [on logical fallacies]({{< relref "/theses/metaphysica/on logic/fallacies" >}}), and [on axioms]({{< relref "/theses/metaphysica/on logic/axioms" >}}), there is another reason, metaphysical in nature, and inseparable from the existence of the God.
If one is to believe in a God that loves them fully and unconditionally, one must also believe that such a God would never force them to believe in Him; rather He would give them the option to choose to do so. In such a situation, any factual proof for the existence of God is unwanted, both by Him, and by any believer, since any such proof would ***force*** them to believe in Him, depriving them of the choice. If one is to believe in a God that loves them fully and unconditionally, one must also believe that such a God would never force them to believe in Him; rather He would give them the option to choose to do so. In such a situation, any factual proof for the existence of God is unwanted, both by Him, and by any believer, since any such proof would ***force*** them to believe in Him, depriving them of the choice.

View file

@ -0,0 +1,17 @@
---
title: "on logic"
---
# on logic
## task
In this part, I attempt to deconstruct logic; with one singular purpose, to prove that logic is not self consistent, and therefore fails the necessary condition set by logic itself for a mode of thinking to be useful. This is done since, if logic itself is paradoxically true and false at the same time, it probably does not exist.
This is beneficial, because with the existence of logic one is extremely limited to the ideas that they can discuss; truthfully one can only speak of mathematical concepts given that logic is the only way to approach reality.
To show that we can talk about the unobservable and infallible, I create a weak and a strong claim of axiomatic reliance. The weak claim deals with the nature of axioms as a matter of faith, whilst the strong claim deals with the axiomatic reality of all knowledge.
## table of contents
1. [the nature of faith]({{< relref "/theses/metaphysica/on logic/axioms" >}})
2. [concerning fallacies]({{< relref "/theses/metaphysica/on logic/fallacies" >}})

View file

@ -1,13 +1,8 @@
--- ---
title: "The nature of faith" title: "the nature of faith"
chapter: "on logic"
section: 1
description: "A thesis on the axiomatic foundation of reality"
weight: 1
type: "thesis"
--- ---
# a thesis on the axiomatic foundation of knowledge
<br />
The words "logic" and "knowledge" are often connected in the minds of humans. In the sciences, logic is used religiously, in an attempt to obtain knowledge, in the same way that it is used in religions. The words "logic" and "knowledge" are often connected in the minds of humans. In the sciences, logic is used religiously, in an attempt to obtain knowledge, in the same way that it is used in religions.
In truth, logic is unable to lead to complete, general knowledge inside of a system, which fully describes the Truth. In truth, logic is unable to lead to complete, general knowledge inside of a system, which fully describes the Truth.

View file

@ -1,18 +1,13 @@
--- ---
title: "Concerning logic" title: "concerning fallacies"
chapter: "on logic"
section: 2
description: "Most appeals to logic are appeals to authority"
weight: 3
type: "thesis"
--- ---
# most appeals to logic are appeals to authority
To conclude the [discussion on logic](/theses/axioms/), I would like to examine in depth the propagation of knowledge, in order to present the greatest result; the fact that most appeals to logic are themselves a logical fallacy. <br />
To conclude the [discussion on logic](/theses/metaphysica/on-logic/axioms/), I would like to examine in depth the propagation of knowledge, in order to present the greatest result; the fact that most appeals to logic are themselves a logical fallacy.
Logical fallacies are, like all named things, characterizations; and they grant a person the ability to understand if a proposition is logically consistent in the broader system of an axiomatic system. Logical fallacies are, like all named things, characterizations; and they grant a person the ability to understand if a proposition is logically consistent in the broader system of an axiomatic system.
The fallacy that is most worth discussing here is the one committed when appealing to an authority (*argentum ab auctoritate* in Latin), which states that such appeals to an authority should not and cannot stand as a logical argument. This is because every authoritative figure, being human, has the capacity to make mistakes, or to not express themselves in a perfect manner, or to even act maliciously. At the same time, every individual appealing to said authority might have misunderstood the content of the argument, or act maliciously for personal benefit. The fallacy that is most worth discussing here is the one committed when appealing to an authority, which should not and cannot stand as a logical argument. This is because every authoritative figure, being human, has the capacity to make mistakes, or to not express themselves in a perfect manner, or to even act maliciously. At the same time, every individual appealing to said authority might have misunderstood the content of the argument, or act maliciously for personal benefit.
Besides, such techniques have been used countless times throughout history, in order to convince and manipulate individuals to surrender their liberties, their properties and themselves to others. Besides, such techniques have been used countless times throughout history, in order to convince and manipulate individuals to surrender their liberties, their properties and themselves to others.

157
hugo.toml Executable file → Normal file
View file

@ -1,74 +1,119 @@
baseURL = 'https://apotheke.earth/' baseURL = 'https://apotheke.earth/'
languageCode = 'en-us'
title = 'apothēke' title = 'apothēke'
languageCode = 'en-us' # Book configuration
DefaultContentLanguage = "en" disablePathToLower = false
pygmentsStyle = "monokai" enableGitInfo = false
enableEmoji = false # Needed for mermaid/katex shortcodes
enableRobotsTXT = true [markup]
[markup.goldmark.renderer]
unsafe = true
[menu] [markup.tableOfContents]
[[menu.main]] startLevel = 1
url="/"
name="frontispiece" # Multi-lingual mode config
# There are different options to translate files
# See https://gohugo.io/content-management/multilingual/#translation-by-filename
# And https://gohugo.io/content-management/multilingual/#translation-by-content-directory
[languages]
[languages.en]
languageName = 'English'
contentDir = 'content'
weight = 1 weight = 1
[[menu.main]] [menu]
url="/about/"
# [[menu.before]]
# name = "home"
# url = "/"
# weight = 10
[[menu.after]]
name = "about" name = "about"
weight = 2 url = "/about"
weight = 10
[[menu.main]] [[menu.after]]
url="/theses/" name = "donate"
name="theses" url = "/donate"
weight = 3 weight = 20
[[menu.after]]
[[menu.main]] name = "sr.ht"
url="/deloses/" url = "https://git.sr.ht/~aethrvmn/apotheke.earth"
name="deloses" weight = 100
weight = 4
[[menu.main]]
identifier = "rss"
pre = "<span data-feather='rss' />"
url = "/index.xml"
weight = 7
[menu.main.params]
newPage = true
[sitemap]
changefreq = "monthly"
priority = 0.5
filename = "sitemap.xml"
[params] [params]
# (Optional, default light) Sets color theme: light, dark or auto.
# Theme 'auto' switches between dark and light modes based on browser/os preferences
BookTheme = 'auto'
ShowBackToTopButton=true # (Optional, default true) Controls table of contents visibility on right side of pages.
# Start and end levels can be controlled with markup.tableOfContents setting.
# You can also specify this parameter per page in front matter.
BookToC = false
# Accent color is displayed when you hover over <a> tags # (Optional, default favicon.png) Set the path to a favicon file.
accentColor = "#AC9C6D" # If the favicon is /static/favicon.png then the path would be favicon.png
BookFavicon = 'favicon.ico'
toctitle="table of contents" # (Optional, default none) Set the path to a logo for the book.
# If the logo is /static/logo.png then the path would be logo.png
# BookLogo = 'logo.png'
text_color = "" # (Optional, default none) Set leaf bundle to render as side menu
author = "" # When not specified file structure and weights will be used
favicon = "" BookMenuBundle = '/menu'
site_logo = ""
customHeadHTML = ''' # (Optional, default docs) Specify root page to render child pages as menu.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" integrity="sha384-Xi8rHCmBmhbuyyhbI88391ZKP2dmfnOl4rT9ZfRI7mLTdk1wblIUnrIq35nqwEvC" crossorigin="anonymous"> # Page is resoled by .GetPage function: https://gohugo.io/functions/getpage/
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.js" integrity="sha384-X/XCfMm41VSsqRNQgDerQczD69XqmjOOOwYQvr/uuC+j4OPoNhVgjdGFwhvN02Ja" crossorigin="anonymous"></script> # For backward compatibility you can set '*' to render all sections to menu. Acts same as '/'
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/contrib/auto-render.min.js" integrity="sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR" crossorigin="anonymous"></script> BookSection = 'theses'
'''
customFooterHTML= """ # Set source repository location.
<span style="margin-top:20px;padding-top:10px"> # Used for 'Last Modified' and 'Edit this page' links.
You can support this project by <a href="/donate">donating</a> BookRepo = ''
</span>
"""
showPostsOnHomePage = "recent" # (Optional, default 'commit') Specifies commit portion of the link to the page's last modified
togglePreviousAndNextButtons = "true" # commit hash for 'doc' page type.
# Requires 'BookRepo' param.
# Value used to construct a URL consisting of BookRepo/BookCommitPath/<commit-hash>
# Github uses 'commit', Bitbucket uses 'commits'
# BookCommitPath = 'commit'
# Enable "Edit this page" links for 'doc' page type.
# Disabled by default. Uncomment to enable. Requires 'BookRepo' param.
# Edit path must point to root directory of repo.
# BookEditPath = 'edit/main/exampleSite'
# Configure the date format used on the pages
# - In git information
# - In blog posts
# BookDateFormat = 'Jan 2, 2006'
# (Optional, default true) Enables search function with flexsearch,
# Index is built on fly, therefore it might slowdown your website.
# Configuration for indexing can be adjusted in i18n folder per language.
BookSearch = true
# (Optional, default true) Enables comments template on pages
# By default partals/docs/comments.html includes Disqus template
# See https://gohugo.io/content-management/comments/#configure-disqus
# Can be overwritten by same param in page frontmatter
BookComments = false
# /!\ This is an experimental feature, might be removed or changed at any time
# (Optional, experimental, default false) Enables portable links and link checks in markdown pages.
# Portable links meant to work with text editors and let you write markdown without {{< relref >}} shortcode
# Theme will print warning if page referenced in markdown does not exists.
BookPortableLinks = true
# /!\ This is an experimental feature, might be removed or changed at any time
# (Optional, experimental, default false) Enables service worker that caches visited pages and resources for offline use.
# BookServiceWorker = true
# /!\ This is an experimental feature, might be removed or changed at any time
# (Optional, experimental, default false) Enables a drop-down menu for translations only if a translation is present.
# BookTranslatedOnly = false

View file

@ -1,14 +0,0 @@
[Recent]
other = 'decent'
[error404]
other = 'this page does not exist, go'
[home]
other = 'home'
[nothing]
other = 'nothing to see here, yet'
[previous]
other = 'previous'
[next]
other = 'next'
[tags]
other = 'tags'

14
i18n/en.yaml Normal file
View file

@ -0,0 +1,14 @@
- id: Search
translation: Search
- id: Edit this page
translation: Edit this page
- id: Last modified by
translation: Last modified by
- id: Expand
translation: Expand
- id: bookSearchConfig
translation: '{ cache: true }'

34
layouts/404.html Normal file
View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="{{ .Site.Language.Lang }}">
<head>
{{ partial "docs/html-head" . }}
{{ partial "docs/inject/head" . }}
<style>
.not-found {
text-align: center;
}
.not-found h1 {
margin: .25em 0 0 0;
opacity: .25;
font-size: 40vmin;
}
</style>
</head>
<body>
<main class="flex justify-center not-found">
<div>
<h1>404</h1>
<h2>Page Not Found</h2>
<h3>
<a href="{{ .Site.Home.RelPermalink }}">{{ .Site.Title }}</a>
</h3>
</div>
</main>
{{ partial "docs/inject/body" . }}
</body>
</html>

View file

@ -0,0 +1,4 @@
<h{{ .Level }} id="{{ .Anchor | safeURL }}">
{{ .Text | safeHTML }}
<a class="anchor" href="#{{ .Anchor | safeURL }}">#</a>
</h{{ .Level }}>

View file

@ -0,0 +1,19 @@
{{- if .Page.Site.Params.BookPortableLinks -}}
{{- template "portable-image" . -}}
{{- else -}}
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title }}title="{{ . }}"{{ end }}/>
{{- end -}}
{{- define "portable-image" -}}
{{- $isRemote := or (in .Destination "://") (strings.HasPrefix .Destination "//") }}
{{- if not $isRemote }}
{{- $path := print .Page.File.Dir .Destination }}
{{- if strings.HasPrefix .Destination "/" }}
{{- $path = print "/static" .Destination }}
{{- end }}
{{- if not (fileExists $path) }}
{{- warnf "Image '%s' not found in '%s'" .Destination .Page.File }}
{{- end }}
{{- end }}
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title }}title="{{ . }}"{{ end }}/>
{{- end -}}

View file

@ -0,0 +1,28 @@
{{- if .Page.Site.Params.BookPortableLinks -}}
{{- template "portable-link" . -}}
{{- else -}}
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a>
{{- end -}}
{{- define "portable-link" -}}
{{- $destination := .Destination }}
{{- $isRemote := or (in .Destination ":") (strings.HasPrefix .Destination "//") }}
{{- if not $isRemote }}
{{- $url := urls.Parse .Destination }}
{{- $path := strings.TrimSuffix "/_index.md" $url.Path }}
{{- $path = strings.TrimSuffix "/_index" $path }}
{{- $path = strings.TrimSuffix ".md" $path }}
{{- $page := .Page.GetPage $path }}
{{- if $page }}
{{- $destination = $page.RelPermalink }}
{{- if $url.Fragment }}
{{- $destination = print $destination "#" $url.Fragment }}
{{- end }}
{{- else if fileExists (print .Page.File.Dir .Destination) }}
<!-- Nothing -->
{{- else -}}
{{- warnf "Page '%s' not found in '%s'" .Destination .Page.File }}
{{- end }}
{{- end }}
<a href="{{ $destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a>
{{- end -}}

View file

@ -1,23 +1,83 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="{{ default .Site.Language.Lang .Site.LanguageCode }}" dir="{{ default "ltr" .Site.Language.LanguageDirection }}">
{{- $avatarImgSrc := .Site.Params.AvatarURL -}} <head>
{{- if and (isset site.Params "avatarURL") (not (hasPrefix $avatarImgSrc "http")) -}} {{ partial "docs/html-head" . }}
{{- $avatarImgSrc = (urls.JoinPath $.Site.BaseURL ($.Site.Params.AvatarURL | default "")) -}} {{ partial "docs/inject/head" . }}
{{- end -}} </head>
{{- .Scratch.Set "avatarImgSrc" $avatarImgSrc -}} <body dir="{{ default "ltr" .Site.Language.LanguageDirection }}">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
{{ template "menu" . }} <!-- Left menu Content -->
</div>
</aside>
{{- partial "head.html" . -}} <div class="book-page">
<body> <header class="book-header">
<script type="text/javascript"> {{ template "header" . }} <!-- Mobile layout header -->
// Immediately set theme on page load </header>
setThemeByUserPref();
</script> {{ partial "docs/inject/content-before" . }}
{{- partial "header.html" . -}} {{ template "main" . }} <!-- Page Content -->
<main id="content"> {{ partial "docs/inject/content-after" . }}
{{- block "main" . }}{{- end }}
<footer class="book-footer">
{{ template "footer" . }} <!-- Footer under page content -->
{{ partial "docs/inject/footer" . }}
</footer>
{{ template "comments" . }} <!-- Comments block -->
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
{{ if default true (default .Site.Params.BookToC .Params.BookToC) }}
<aside class="book-toc">
<div class="book-toc-content">
{{ template "toc" . }} <!-- Table of Contents -->
</div>
</aside>
{{ end }}
</main> </main>
{{- partial "footer.html" . -}}
{{ partial "docs/inject/body" . }}
</body> </body>
</html> </html>
{{ define "menu" }}
{{ partial "docs/menu" . }}
{{ end }}
{{ define "header" }}
{{ partial "docs/header" . }}
{{ if default true (default .Site.Params.BookToC .Params.BookToC) }}
<aside class="hidden clearfix">
{{ template "toc" . }}
</aside>
{{ end }}
{{ end }}
{{ define "footer" }}
{{ partial "docs/footer" . }}
{{ end }}
{{ define "comments" }}
{{ if and .Content (default true (default .Site.Params.BookComments .Params.BookComments)) }}
<div class="book-comments">
{{- partial "docs/comments" . -}}
</div>
{{ end }}
{{ end }}
{{ define "main" }}
<article class="markdown book-article">
{{- .Content -}}
</article>
{{ end }}
{{ define "toc" }}
{{ partial "docs/toc" . }}
{{ end }}

View file

@ -1,9 +1 @@
{{ define "main" }} {{ define "dummy" }}{{ end }}
{{ if eq .Type "thesis" }}
{{- partial "thesis-list.html" . -}}
{{ else if eq .Type "delosis" }}
{{- partial "delosis-list.html" . -}}
{{ else }}
{{- partial "404.html" . -}}
{{ end }}
{{ end }}

View file

@ -1,12 +1 @@
{{ define "main" }} {{ define "dummy" }}{{ end }}
{{ if or (eq .Type "dilosis") (eq .Type "thesis") }}
{{- partial "keimeno.html" . -}}
{{- partial "toc.html" . -}}
{{ end }}
{{ if eq .Type "peri" }}
{{- partial "peri.html" . -}}
{{- partial "toc.html" . -}}
{{ end }}
{{ end }}

View file

@ -1,13 +0,0 @@
{{ define "main" }}
<div class ="markdown-content">
{{ readFile "_index.md" | markdownify }}
</div>
<div class="home-posts list-posts">
<h2> {{ .Site.Params.toctitle }} </h2>
{{- partial "thesis-list.html" . -}}
</div>
{{ end }}

View file

@ -1,19 +0,0 @@
{{ define "main"}}
<div class="text-404">
<h1 class="error-emoji"></h1>
<h2>
... {{ i18n "error404" . }} <a href="{{ .Site.BaseURL }}">{{ i18n "home" }}</a>
</h2>
</div>
<script>
const errorEmojiContainer = document.getElementsByClassName('error-emoji')[0];
const emojiArray = [
'\\(o_o)/', '(o^^)o', '(˚Δ˚)b', '(^-^*)', '(≥o≤)', '(^_^)b', '(·_·)',
'(=\'X\'=)', '(>_<)', '(;-;)', '\\(^Д^)/',
];
const errorEmoji = emojiArray[Math.floor(Math.random() * emojiArray.length)];
errorEmojiContainer.appendChild(document.createTextNode(errorEmoji));
</script>
{{ end }}

View file

@ -1,9 +0,0 @@
<div class="container list-posts">
{{ $deloses := where .Site.Pages "Params.type" "delosis"}}
<h1 class="list-title">deloses</h1>
<h3 class="list-title">this is being written</h2>
</div>

View file

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

View file

@ -0,0 +1,2 @@
<!-- This partial can be replaced to support other commenting engines -->
{{ template "_internal/disqus.html" . }}

View file

@ -0,0 +1,6 @@
<!--
Returns formatted date.
Usage: partial "docs/date" (dict "Date" .Date "Format" .Site.Params.BookDateFormat)
-->
{{- $format := default "January 2, 2006" .Format -}}
{{- return (time.Format $format .Date) -}}

View file

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

View file

@ -0,0 +1,11 @@
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="{{ "svg/menu.svg" | relURL }}" class="book-icon" alt="Menu" />
</label>
<label for="toc-control">
{{ if default true (default .Site.Params.BookToC .Params.BookToC) }}
<img src="{{ "svg/toc.svg" | relURL }}" class="book-icon" alt="Table of Contents" />
{{ end }}
</label>
</div>

View file

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

View file

@ -0,0 +1,60 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{{ default .Summary .Description }}">
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#343a40">
<meta name="color-scheme" content="light dark">
{{- with .Page.Params.BookHref -}}
<meta http-equiv="Refresh" content="0; url='{{ . }}'" />
{{- end -}}
{{- template "_internal/opengraph.html" . -}}
<title>{{ partial "docs/html-head-title" . }}</title>
{{- $manifest := resources.Get "manifest.json" | resources.ExecuteAsTemplate "manifest.json" . }}
<link rel="manifest" href="{{ $manifest.RelPermalink }}">
<link rel="icon" href="{{ .Site.Params.BookFavicon | default "favicon.png" | relURL }}" >
<link rel="canonical" href="{{ .Permalink }}">
{{- range .Translations }}
<link rel="alternate" hreflang="{{ default .Language.Lang .Site.LanguageCode }}" href="{{ .Permalink }}" title="{{ partial "docs/title" . }}">
{{- end -}}
<!-- GFS Didot font -->
<link href="https://fonts.googleapis.com/css2?family=GFS+Didot&display=swap" rel="stylesheet" type="text/css">
<!-- Theme stylesheet, you can customize scss by creating `assets/custom.scss` in your website -->
{{- $styles := resources.Get "book.scss" | resources.ExecuteAsTemplate "book.scss" . | resources.ToCSS | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $styles.RelPermalink }}" {{ template "integrity" $styles }}>
{{- if default true .Site.Params.BookSearch -}}
{{- $searchJSFile := printf "%s.search.js" .Language.Lang }}
{{- $searchJS := resources.Get "search.js" | resources.ExecuteAsTemplate $searchJSFile . | resources.Minify | resources.Fingerprint }}
<script defer src="{{ "fuse.min.js" | relURL }}"></script>
<script defer src="{{ $searchJS.RelPermalink }}" {{ template "integrity" $searchJS }}></script>
{{ end -}}
{{- if .Site.Params.BookServiceWorker -}}
{{- $swJS := resources.Get "sw-register.js" | resources.ExecuteAsTemplate "sw.js" . | resources.Minify | resources.Fingerprint }}
<script defer src="{{ $swJS.RelPermalink }}" {{ template "integrity" $swJS }}></script>
{{ end -}}
{{- template "_internal/google_analytics.html" . -}}
<!-- RSS -->
{{- with .OutputFormats.Get "rss" -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
{{ end -}}
{{ "<!--" | safeHTML }}
Made with Book Theme
https://github.com/alex-shpak/hugo-book
{{ "-->" | safeHTML }}
{{- define "integrity" -}}
{{- if (urls.Parse .Permalink).Host -}}
integrity="{{ .Data.Integrity }}" crossorigin="anonymous"
{{- end -}}
{{- end -}}

View file

View file

View file

View file

@ -0,0 +1,33 @@
<!-- Merge home and current page translations -->
{{ $bookTranslatedOnly := default false .Site.Params.BookTranslatedOnly }}
{{ $translations := dict }}
{{ if (eq $bookTranslatedOnly false ) }}
{{ range .Site.Home.Translations }}
{{ $translations = merge $translations (dict .Language.Lang .) }}
{{ end }}
{{ end }}
{{ range .Translations }}
{{ $translations = merge $translations (dict .Language.Lang .) }}
{{ end }}
<ul class="book-languages">
<li>
<input type="checkbox" id="languages" class="toggle" />
<label for="languages" class="flex justify-between">
<a role="button" class="flex align-center">
<img src="{{ "svg/translate.svg" | relURL }}" class="book-icon" alt="Languages" />
{{ $.Site.Language.LanguageName }}
</a>
</label>
<ul>
{{ range .Site.Languages }}{{ with index $translations .Lang }}
<li>
<a href="{{ .Permalink }}">
{{ .Language.LanguageName }}
</a>
</li>
{{ end }}{{ end }}
</ul>
</li>
</ul>

View file

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

View file

@ -0,0 +1,49 @@
{{ $bookSection := default "docs" .Site.Params.BookSection }}
{{ if eq $bookSection "*" }}
{{ $bookSection = "/" }}{{/* Backward compatibility */}}
{{ end }}
{{ with .Site.GetPage $bookSection }}
{{ template "book-section-children" (dict "Section" . "CurrentPage" $) }}
{{ end }}
{{ define "book-section-children" }}{{/* (dict "Section" .Section "CurrentPage" .CurrentPage) */}}
<ul>
{{ range (where .Section.Pages "Params.bookhidden" "ne" true) }}
{{ if .IsSection }}
<li {{- if .Params.BookFlatSection }} class="book-section-flat" {{ end -}}>
{{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
{{ template "book-section-children" (dict "Section" . "CurrentPage" $.CurrentPage) }}
</li>
{{ else if and .IsPage .Content }}
<li>
{{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
</li>
{{ end }}
{{ end }}
</ul>
{{ end }}
{{ define "book-page-link" }}{{/* (dict "Page" .Page "CurrentPage" .CurrentPage) */}}
{{ $current := eq .CurrentPage .Page }}
{{ $ancestor := .Page.IsAncestor .CurrentPage }}
{{ if .Page.Params.BookCollapseSection }}
<input type="checkbox" id="section-{{ md5 .Page }}" class="toggle" {{ if or $current $ancestor }}checked{{ end }} />
<label for="section-{{ md5 .Page }}" class="flex justify-between">
<a {{ if .Page.Content }}href="{{ .Page.RelPermalink }}"{{ else }}role="button"{{ end }} class="{{ if $current }}active{{ end }}">
{{- partial "docs/title" .Page -}}
</a>
</label>
{{ else if .Page.Params.BookHref }}
<a href="{{ .Page.Params.BookHref }}" class="{{ if $current }}active{{ end }}" target="_blank" rel="noopener">
{{- partial "docs/title" .Page -}}
</a>
{{ else if .Page.Content }}
<a href="{{ .Page.RelPermalink }}" class="{{ if $current }}active{{ end }}">
{{- partial "docs/title" .Page -}}
</a>
{{ else }}
<span>{{- partial "docs/title" .Page -}}</span>
{{ end }}
{{ end }}

View file

@ -0,0 +1,28 @@
<!--
This is template for hugo menus, accepts MenuEntity as context
https://gohugo.io/variables/menus/
-->
{{ if . }}
{{ template "book-menu-hugo" . }}
{{ end }}
{{ define "book-menu-hugo" }}
<ul>
{{ range . }}
<li>
<a href="{{ .URL }}" {{ with .Params.class }}class="{{ . }}"{{ end }} {{ if not .Page }}target="_blank" rel="noopener"{{ end }}>
{{- .Pre -}}
{{ with .Page }}
{{ partial "docs/title" .Page }}
{{ else }}
{{ .Name }}
{{ end }}
{{- .Post -}}
</a>
{{- with .Children }}
{{ template "book-menu-hugo" . }}
{{- end }}
</li>
{{ end }}
</ul>
{{ end }}

View file

@ -0,0 +1,25 @@
<nav>
{{ partial "docs/brand" . }}
{{ partial "docs/search" . }}
{{ partial "docs/inject/menu-before" . }}
{{ partial "docs/menu-hugo" .Site.Menus.before }}
{{ if .Site.Params.BookMenuBundle }}
{{ partial "docs/menu-bundle" . }}
{{ else }}
{{ partial "docs/menu-filetree" . }}
{{ end }}
<div style="bottom:0; position:fixed;">
{{ partial "docs/menu-hugo" .Site.Menus.after }}
{{ partial "docs/inject/menu-after" . }}
</div>
</nav>
<!-- Restore menu position as soon as possible to avoid flickering -->
{{ $script := resources.Get "menu-reset.js" | resources.Minify }}
{{ with $script.Content }}
<script>{{ . | safeJS }}</script>
{{ end }}

View file

@ -0,0 +1,23 @@
{{ with .Date }}
<h5>{{ partial "docs/date" (dict "Date" . "Format" $.Site.Params.BookDateFormat) }}</h5>
{{ end }}
{{ range $taxonomy, $_ := .Site.Taxonomies }}
{{ with $terms := $.GetTerms $taxonomy }}
<div>
{{ range $n, $term := $terms }}{{ if $n }}, {{ end }}
<a href="{{ $term.RelPermalink }}">{{ $term.Title }}</a>
{{- end }}
</div>
{{ end }}
{{ end }}
{{ if .Params.image }}
<p>
{{ with .Resources.GetMatch .Params.image }}
<img src={{ .RelPermalink }} />
{{ else }}
<img src={{ .Params.image | relURL }} />
{{ end }}
</p>
{{ end }}

View file

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

View file

@ -0,0 +1,19 @@
<nav>
<ul>
{{ range $term, $_ := .Site.Taxonomies }}
{{ with $.Site.GetPage (printf "/%s" $term | urlize) }}
<li class="book-section-flat">
<strong>{{ .Title | title }}</strong>
<ul>
{{ range .Pages }}
<li class="flex justify-between">
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
<span>{{ len .Pages }}</span>
</li>
{{ end }}
</ul>
</li>
{{ end }}
{{ end }}
</ul>
</nav>

View file

@ -0,0 +1,17 @@
<!--
Partial to generate page name from Title or File name.
Accepts Page as context
-->
{{ $title := "" }}
{{ if .LinkTitle }}
{{ $title = .LinkTitle }}
{{ else if .Title }}
{{ $title = .Title }}
{{ else if and .IsSection .File }}
{{ $title = path.Base .File.Dir | humanize | title }}
{{ else if and .IsPage .File }}
{{ $title = .File.BaseFileName | humanize | title }}
{{ end }}
{{ return $title }}

View file

@ -0,0 +1,3 @@
{{ partial "docs/inject/toc-before" . }}
{{ .TableOfContents }}
{{ partial "docs/inject/toc-after" . }}

View file

@ -1,9 +0,0 @@
<footer class="footer">
<!-- Option for user to inject custom html -->
{{ if .Site.Params.CustomFooterHTML }}
{{ .Site.Params.CustomFooterHTML | safeHTML }}
{{ end }}
<span>&copy; {{ now.Year }} </span>
</footer>

View file

@ -1,66 +0,0 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root {
--accent-color: {{ .Site.Params.AccentColor | default "#FF4D4D" }};
}
</style>
{{ $title := .Title | default .Site.Title }}
{{ $description := .Description | default .Site.Params.Description }}
{{ $image := .Params.image | default (.Scratch.Get "avatarImgSrc") }}
{{ $siteKeywords := .Site.Params.MetaKeywords | default (slice) }}
{{ $postKeywords := .Params.tags | default (slice) }}
{{ $keywords := union $siteKeywords $postKeywords }}
<!-- SEO titles & descriptions -->
{{ if .IsHome }}
<title>{{ lower .Site.Title }} | home</title>
{{else}}
<title> {{ lower .Site.Title }} | {{ lower $title}} </title>
{{ end }}
<meta name="description" content="{{ $description }}">
<meta name="keywords" content='{{ delimit $keywords ", "}}'>
<meta property="og:url" content="{{ .Permalink }}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{ $title }}">
<meta property="og:description" content="{{ $description }}">
<meta property="og:image" content="{{ absURL $image }}">
<meta property="og:image:secure_url" content="{{ absURL $image }}">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{ $title }}">
<meta name="twitter:description" content="{{ $description }}">
<meta property="twitter:domain" content="{{ .Permalink }}">
<meta property="twitter:url" content="{{ .Permalink }}">
<meta name="twitter:image" content="{{ absURL $image }}">
<!-- GFS Didot font -->
<link href="https://fonts.googleapis.com/css2?family=GFS+Didot&display=swap" rel="stylesheet" type="text/css">
<!-- SEO canonicals: helps Google understand your site better when using marketing campaign tagging etc -->
<link rel="canonical" href="{{ .Permalink }}" />
{{ $cssNormalize := resources.Get "css/normalize.min.css" }}
<link rel="stylesheet" type="text/css" href="{{ $cssNormalize.RelPermalink }}" media="print">
{{ $cssMain := resources.Get "css/main.css" | minify }}
<link rel="stylesheet" type="text/css" href="{{ $cssMain.RelPermalink }}">
{{ $cssDark := resources.Get "css/dark.css" | minify }}
<link id="dark-theme" rel="stylesheet" href="{{ $cssDark.RelPermalink }}">
{{ $jsBundle := resources.Match "js/**.js" | resources.Concat "js/bundle.js" | minify | resources.Fingerprint "sha256" }}
<script src="{{ $jsBundle.RelPermalink }}" integrity="{{ $jsBundle.Data.Integrity }}"></script>
<!-- Option for user to inject custom html -->
{{ if .Site.Params.CustomHeadHTML }}
{{ .Site.Params.CustomHeadHTML | safeHTML }}
{{ end }}
</head>

View file

@ -1,52 +0,0 @@
<header class="header">
<nav class="header-nav">
<div class="nav-title">
<a class="nav-brand" href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a>
</div>
<div class="nav-links">
{{ range .Site.Menus.main }}
<div class="nav-link">
<a href="{{ .URL | absURL }}" {{- if .Params.NewPage -}}target="_blank"{{- end -}}>
{{- .Pre | safeHTML }} {{ .Name }} {{ .Post | safeHTML -}}
</a>
</div>
{{ end }}
<span class="nav-icons-divider"></span>
<div class="nav-link dark-theme-toggle">
<span id="dark-theme-toggle-screen-reader-target" class="sr-only"></span>
<a>
<span id="theme-toggle-icon" data-feather="moon"></span>
</a>
</div>
<div class="nav-link" id="hamburger-menu-toggle">
<span id="hamburger-menu-toggle-screen-reader-target" class="sr-only">menu</span>
<a>
<span data-feather="menu"></span>
</a>
</div>
<!-- For mobile -->
<ul class="nav-hamburger-list visibility-hidden">
{{ range .Site.Menus.main }}
<li class="nav-item">
<a href="{{ .URL | absURL }}" {{- if .Params.NewPage -}}target="_blank"{{- end -}}>
{{- .Pre | safeHTML }} {{ .Name }} {{ .Post | safeHTML -}}
</a>
</li>
{{ end }}
<li class="nav-item dark-theme-toggle">
<span id="dark-theme-toggle-screen-reader-target" class="sr-only">theme</span>
<a>
<span id="theme-toggle-icon" data-feather="moon"></span>
</a>
</li>
</ul>
</div>
</nav>
</header>

View file

@ -1,62 +0,0 @@
<div class="post container">
<div class="post-header-section">
<h1>{{ .Title }}</h1>
<small role="doc-subtitle" class="chapter-title">{{ .Description }}</small>
</div>
<div class="post-content">
{{ .Content }}
</div>
<div class="prev-next">
{{ if eq .Site.Params.TogglePreviousAndNextButtons "true" }}
{{ if or .PrevInSection .NextInSection }}
{{ partial "prev-next.html" . }}
{{ end }}
{{ end }}
</div>
<!-- Back to top button -->
{{ if .Site.Params.ShowBackToTopButton }}
<svg id="btt-button" class="arrow-logo" xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 384 512" onclick="topFunction()" title="Go to top">
<!-- Your arrow SVG path or elements go here -->
<path d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"/>
</svg>
<script>
let backToTopButton = document.getElementById("btt-button");
window.onscroll = function() {
scrollFunction()
};
function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
backToTopButton.style.display = "block";
} else {
backToTopButton.style.display = "none";
}
}
function topFunction() {
smoothScrollToTop();
}
function smoothScrollToTop() {
const scrollToTop = () => {
const c = document.documentElement.scrollTop || document.body.scrollTop;
if (c > 0) {
window.requestAnimationFrame(scrollToTop);
window.scrollTo(0, c - c / 8);
}
};
scrollToTop();
}
</script>
{{ end }}
{{ if .Site.Params.CustomCommentHTML }}
<div id="comments">
{{ .Site.Params.CustomCommentHTML | safeHTML }}
</div>
{{ end }}
</div>

View file

@ -1,12 +0,0 @@
<div class="post container">
<div class="post-header-section">
<h1>{{ .Title }}</h1>
</div>
<div class="post-content">
{{ .Content }}
</div>
</div>

View file

@ -1,23 +0,0 @@
{{ with .NextInSection }}
<div class="prev-post">
<a href="{{ .RelPermalink }}">
<p>
&#8592;
{{ i18n "previous" }}:
{{ .Title }}
</p>
</a>
</div>
{{ end }}
{{ with .PrevInSection }}
<div class="next-post">
<p>
<a href="{{ .RelPermalink }}">
{{ i18n "next" }}:
{{ .Title }}
&#8594;
</a>
</p>
</div>
{{ end }}

View file

@ -1,28 +0,0 @@
<div class="container list-posts">
{{ $theses := where .Site.Pages "Params.type" "thesis" }}
{{ $ch1 := "on logic" }}
{{ $ch2 := "on free will"}}
{{ if eq .Title "theses" }}
<h1 class="list-title">{{ .Title }}</h1>
{{ end }}
<h3 class="chapter-title">{{ lower $ch1 }}</h3>
{{ range (where $theses "Params.chapter" $ch1).ByParam "section" }}
<article class="post-title">
<a href="{{ .Permalink }}" class="post-link">{{ .Title }}</a>
</article>
{{ end }}
<h3 class="chapter-title">{{ lower $ch2 }}</h3>
{{ range (where $theses "Params.chapter" $ch2).ByParam "section" }}
<article class="post-title">
<a href="{{ .Permalink }}" class="post-link">{{ .Title }}</a>
</article>
{{ end }}
</div>

View file

@ -1,7 +0,0 @@
{{ if .Params.ShowTableOfContents }}
<aside class="post-toc">
<nav id="toc">
{{ .TableOfContents }}
</nav>
</aside>
{{ end }}

22
layouts/posts/list.html Normal file
View file

@ -0,0 +1,22 @@
{{ define "main" }}
{{ range sort .Paginator.Pages }}
<article class="markdown book-post">
<h2>
<a href="{{ .RelPermalink }}">{{ partial "docs/title.html" . }}</a>
</h2>
{{ partial "docs/post-meta" . }}
<p>
{{- .Summary -}}
{{ if .Truncated }}
<a href="{{ .RelPermalink }}">...</a>
{{ end }}
</p>
</article>
{{ end }}
{{ template "_internal/pagination.html" . }}
{{ end }}
{{ define "toc" }}
{{ partial "docs/taxonomy" . }}
{{ end }}

13
layouts/posts/single.html Normal file
View file

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

View file

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

View file

@ -0,0 +1,7 @@
<div class="book-columns flex flex-wrap">
{{ range split .Inner "<--->" }}
<div class="flex-even markdown-inner">
{{ . | $.Page.RenderString }}
</div>
{{ end }}
</div>

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