diff options
author | Thomas Letan <lthms@soap.coffee> | 2020-02-23 15:02:58 +0100 |
---|---|---|
committer | Thomas Letan <lthms@soap.coffee> | 2020-02-23 15:02:58 +0100 |
commit | 404d05208192f83523049dabe03126ad064c3395 (patch) | |
tree | 9828cadc8c9a3224d578ea35de63343336e85474 /site/posts | |
parent | Fix several typos in the posts index (diff) |
Reworking cleopatra presentation
Diffstat (limited to 'site/posts')
-rw-r--r-- | site/posts/index.org | 15 | ||||
-rw-r--r-- | site/posts/meta/Bootstrap.org | 344 | ||||
-rw-r--r-- | site/posts/meta/Contents.org | 3 | ||||
-rw-r--r-- | site/posts/meta/Contents/Coq.org | 42 | ||||
-rw-r--r-- | site/posts/meta/Contents/Org.org | 76 | ||||
-rw-r--r-- | site/posts/meta/Soupault.org | 71 | ||||
-rw-r--r-- | site/posts/meta/Theme.org | 242 | ||||
-rw-r--r-- | site/posts/meta/index.org | 37 |
8 files changed, 7 insertions, 823 deletions
diff --git a/site/posts/index.org b/site/posts/index.org index f5a037d..1de9cba 100644 --- a/site/posts/index.org +++ b/site/posts/index.org @@ -67,16 +67,15 @@ One of my goal with this website is for it to /feel/ simple, but the truth is under the hood it is generated from a bunch of files using a not-that-simple process. -- [[./meta/][A Series on Generating this Static Website]] :: +- [[/cleopatra/][A Series on Generating this Static Website]] :: The toolchain behind the generation of this website ---called *~cleopatra~*--- - is a literate programming document which build itself in addition to the HTML - files composing this corner of the Internet. - - 1. [[./meta/Bootstrap.html][Bootstrapping an Extensible Toolchain]] - 2. [[./meta/Contents.html][Authoring Contents and HTML Generation ~(WIP)~]] - 3. [[./meta/Soupault.html][Configuring ~soupault~ ~(WIP)~]] - 4. [[./meta/Theme.html][Theming and Templating ~(WIP)~]] + is a literate program which build itself in addition to the HTML files + composing this corner of the Internet. This series /is/ *~cleopatra~*. + 1. [[/cleopatra/Bootstrap.html][Bootstrapping an Extensible Toolchain]] + 2. [[/cleopatra/Contents.html][Authoring Contents and HTML Generation ~(WIP)~]] + 3. [[/cleopatra/Soupault.html][Configuring ~soupault~ ~(WIP)~]] + 4. [[/cleopatra/Theme.html][Theming and Templating ~(WIP)~]] - [[./Thanks.html][Thanks!]] :: If it were not for many awesome FOSS projects, this corner of the Internet diff --git a/site/posts/meta/Bootstrap.org b/site/posts/meta/Bootstrap.org deleted file mode 100644 index f80ef96..0000000 --- a/site/posts/meta/Bootstrap.org +++ /dev/null @@ -1,344 +0,0 @@ -#+BEGIN_EXPORT html -<h1>Bootstrapping an Extensible Toolchain</h1> -#+END_EXPORT - -A literate program is a particular type of software program where code is not -directly written in source files, but rather in text document as code -snippets. In some sense, literate programming allows for writing in the same -place both the software program and its technical documentation. - -That being said, *~cleopatra~* is a toolchain to build a website before being a -literate program, and one of its objective is to be /part of this very website -it is used to generate/. To acheive this, *~cleopatra~* has been written as a -collection of org files which can be either “tangled” using [[https://orgmode.org/worg/org-contrib/babel/][Babel]] or “exported” -as a HTML document. Tangling here refers to extracted marked code blocks into -files. - -The page you are currently reading is *~cleopatra~* entry point. Its primilarly -purpose is to introduce two Makefiles: ~Makefile~ and ~bootstrap.mk~. - -#+TOC: headlines 2 - -* The Root of Generation - -~Makefile~ serves two purposes: it initiates a few global variables, and it -provides a rule to generate ~bootstrap.mk~. At this point, some readers may -wonder /why/ we need ~Makefile~ in this context, and the motivation behind this -choice is really reminescent of a boot sequence. The rationale is that we need a -“starting point” for *~cleopatra~*. The toolchain cannot live solely inside -org-files, otherwise there would not have any code to execute the first time we -tried to generate the website. We need an initial Makefile, one that has little -chance to change, so that we can almost consider it read-only. Contrary to the -other Makefiles that we will generate, this one will not be deleted by ~make -clean~. - -This is similar to your computer: it requires a firmware to boot, whose purpose -—in a nutshell— is to find and load an operating system. - -Modifying the content of ~Makefile~ in this document /will/ modify -~Makefile~. This means one can easily put *~cleopatra~* into an inconsistent -state, which would prevent further generation. This is why the generated -~Makefile~ should be versioned, so that you can restore it using ~git~ if you -made a mistake when you modified it. - -For readers interested in using *~cleopatra~* for their own websites, this -documents tries to highlight the potential modifications they would have to -make. - -** Global Constants and Variables - -First, ~Makefile~ defines several global “constants” (although as far as I know -~make~ does not support true constant values, it is expected further generation -process will not modify them). - -In a nutshell, - -- ~ROOT~ :: - Tell Emacs where the root of your website sources is, so that tangled output - filenames can be given relative to it rather than the org files. So for - instance, the ~BLOCK_SRC~ headers for ~Makefile~ looks like - - #+BEGIN_SRC org - #+BEGIN_SRC makefile :tangle Makefile :noweb tangle - #+END_SRC - - instead of, /e.g./, - - #+BEGIN_SRC org - #+BEGIN_SRC makefile :tangle ../../../Makefile :noweb tangle - #+END_SRC - -- ~CLEODIR~ :: - Tell *~cleopatra~* where its sources live. If you place it inside the ~site/~ - directory (as it is intended), and you enable the use of ~org~ files to author - your contents, then *~cleopatra~* documents will be part of your website. If - you don’t want that, just move the directory outside the ~site/~ directory, - and update the ~CLEODIR~ variable accordingly. - -For this website, these constants are defined as follows. - -#+BEGIN_SRC makefile :tangle Makefile :noweb tangle -ROOT := $(shell pwd) -CLEODIR := site/posts/meta -#+END_SRC - -We then introduce a variable that “generation” components will populate with -their output files (using ~+=~). - -- ~GENFILES~ :: - List *~cleopatra~* Makefiles and scripts tangled throughout the generation - process (with the notable exception of ~Makefile~ itself). -- ~GENSASS~ :: - List auxiliary ~sass~ files which can later be imported by the main ~sass~ - files (see [[./Theme.org][“Theming and Templating”]]). -- ~CONTENTS~ :: - List generated files which are part of the target website, and acts as inputs - for ~soupault~. - -#+BEGIN_SRC makefile :tangle Makefile :exports none -GENFILES := -CONTENTS := -GENSASS := -#+END_SRC - -** Easy Tangling of Org Documents - -We provide the necessary bits to easily tangle Org documents. - -The configuration of Babel is done using an emacs lisp script called -~tangle-org.el~ whose status is similar to ~Makefile~. It is part of the -bootstrap process, and therefore lives “outside” of *~cleopatra~* (it is not -deleted with ~make clean~ for instance). However, it is overwritten. If you try -to modify it and find that *~cleopatra~* does not work properly, you should -restore it using ~git~. - -#+BEGIN_SRC emacs-lisp :tangle scripts/tangle-org.el -(require 'org) -(cd (getenv "ROOT")) -(setq org-confirm-babel-evaluate nil) -(setq org-src-preserve-indentation t) -(org-babel-do-load-languages - 'org-babel-load-languages - '((shell . t))) -(org-babel-tangle) -#+END_SRC - -We define variables that ensure that the ~ROOT~ environment variable is set and -~tangle-org.el~ is loaded when using Emacs. You can modify ~EMACS~ to use a -custom Emacs that you build yourself if you so desire. - -#+BEGIN_SRC makefile :tangle Makefile :noweb tangle -EMACSBIN := emacs -EMACS := ROOT="${ROOT}" ${EMACSBIN} -TANGLE := --batch --load="${ROOT}/scripts/tangle-org.el" 2>> build.log -#+END_SRC - -** Bootstrapping - -The core purpose of ~Makefile~ remains *(1)* to bootstrap the generation process -by generating and loading ~bootstrap.mk~, and *(2)* to enforce the ~build~ rules -hopefully defined by the latter is called. - -For *(2)*, we introduce a ~default~ rule with ~build~ as a -dependency. - -#+BEGIN_SRC makefile :tangle Makefile :noweb tangle -default: init-log build - -init-log: - @echo "==============[CLEOPATRA BUILD LOG]==============" \ - > build.log - -.PHONY: init-log default build -#+END_SRC - -For *(1)*, we rely on a particular behavior of ~make~ regarding the ~include~ -directive. If an operand of ~include~ does not yet exists, ~make~ will search -for a rule to generate it. - -Basically, we are looking for recipes of the following form: - -#+BEGIN_SRC makefile :noweb yes -<<extends(MK="${MK}", MF="${MF}", IN="${IN}", GF="${GF}", GS="${GS}")>> -#+END_SRC - -where - -- ~${IN}~ is the input Org document -- ~${MK}~ lists the tangled Makefiles (typically one, but it could be more) -- ~${GF}~ lists the tangled scripts -- ~${GS}~ lists the tangled SASS scripts - -~&:~ is used in place of ~:~ to separate the target from its dependencies in -this rule to tell to ~make~ that the runned commands will generate all these -files. - -Writing these rules manually —has yours truly had to do in the early days of his -website— has proven to be error-prone. - -One desirable feature for *~cleopatra~* would be to generate them automatically, -by looking for relevant ~:tangle~ directives inside the input Org document. The -challenge lies in the “relevant” part: the risk exists that we have false -posivite. However and as a first steps towards a fully automated solution, we -can leverage the evaluation features of Babel here. - -Here is a bash script which, given the proper variables, would generate the -expected Makefile rule. - -#+NAME: extends -#+BEGIN_SRC bash :var MK="" :var IN="" :var GF="" :var GS="" :results output -cat <<EOF -GENFILES += ${MK} ${GF} -GENSASS += ${GS} - -include ${MK} - -${MK} ${GF} ${GS} \\ - &: \${CLEODIR}/${IN} - @echo " tangle \$<" - @\${EMACS} $< \${TANGLE} -EOF -#+END_SRC - -The previous source block is given a name (=extends=), and an explicit lists of -variables (~IN~, ~MK~, ~GF~, and ~GS~). Thanks to the [[https://orgmode.org/worg/org-tutorials/org-latex-export.html][noweb syntax of Babel]], we -can insert the result of the evaluation of =extends= inside another source block -when the latter is tangled. - -The twist is, we derive the rule to tangle ~bootstrap.mk~ using -=extends=. The syntax is the following: - -#+BEGIN_SRC verbatim -<<extends(IN="Bootstrap.org", MK="bootstrap.mk", GF="scripts/update-gitignore.sh")>> -#+END_SRC - -For purpose of illustrations, here is the snippet generated by Babel from the -previous source block. - -#+BEGIN_SRC makefile :tangle Makefile :noweb yes -<<extends(IN="Bootstrap.org", MK="bootstrap.mk", GF="scripts/update-gitignore.sh")>> -#+END_SRC - -Beware that, as a consequence, modifying code block of =extends= is as -“dangerous” as modifying ~Makefile~ itself. Keep that in mind if you start -hacking *~cleopatra~*! - -From now on, the bootstrap process is completed: further generation processes -will fully be defined using literate programming, with no special treatment for -its output. For instance, you may not want to use ~soupault~? You can! Just -modify ~bootstrap.mk~ accordingly. - -* Generation Processes - -Thanks to =extends=, *~cleopatra~* is easily extensible. In this section, we -enumerate the generation processes that are currently used to generate the -website you are reading. - -** Authoring Contents - -The fact that *~cleopatra~* is a literate program which gradually generates -itself was not intended: it is a consequence of my desire to be able to easily -use whatever format I so desire for writing my contents, and Org documents in -particular. - -In the present website, contents can be written in the following format: - -- HTML Files :: - This requires no particular set-up, since HTML is the /lingua franca/ of - ~soupault~. -- Regular Coq files :: - Coq is a system which allows to write machine-checked proofs, and it comes - with a source “prettifier” called ~coqdoc~. - [[./Contents/Coq.org][Learn more about the generation process for Coq files]] -- Org documents :: - Emacs comes with a powerful editing mode called [[https://orgmode.org/][Org mode]], and Org documents - are really pleasant to work with. - [[./Contents/Org.org][Learn more about the generation process for Org documents]] - -If you want *~cleopatra~* to support more input formats, you have to - -1. Create an Org document which, once tangled, provides a dedicated makefile -2. Edit this file (~Bootstrap.org~) here, and use =extends= to make sure it - is actually tangled when necessary - -#+BEGIN_SRC makefile :tangle bootstrap.mk :noweb tangle :exports none -<<extends(MK="coq.mk", IN="Contents/Coq.org", GS="site/style/coq.sass")>> -<<extends(MK="org.mk", IN="Contents/Org.org", GF="scripts/export-org.el emacs.d", GS="site/style/org.sass")>> -#+END_SRC - -** Postprocessing HTML using ~soupault~ - -The drawback of using different input formats and generators (~coqdoc~, Org, -etc.) is the heterogeneity of the outputted HTML. This is why *~cleopatra~* -started using ~soupault~. You can read more about [[./Soupault.org][how the ~soupault~ -configuration of the present website in the dedicated document]]. - -#+BEGIN_SRC makefile :tangle bootstrap.mk :noweb tangle :exports none -<<extends(IN="Soupault.org", GF="soupault.conf")>> -#+END_SRC - -Since ~soupault.conf~ is an input for ~soupault~, we explicitely add it to the -~CONTENTS~ variables. - -#+BEGIN_SRC makefile :tangle bootstrap.mk -CONTENTS += soupault.conf -#+END_SRC - -** Theming and Templating - -The last missing piece is the appearance of the website. By default, ~soupault~ -assumes there exists a template available (~templates/main.html~). You can read -more about [[./Theme.org][the structure of this template and how its companion CSS file is -generated in the appropriate document]]. - -#+BEGIN_SRC makefile :tangle bootstrap.mk :noweb tangle :exports none -<<extends(MK="theme.mk", IN="Theme.org", GF="templates/main.html", GS="site/style/main.sass")>> -#+END_SRC - -** Wrapping-up - -#+BEGIN_SRC makefile :tangle bootstrap.mk -build : ${CONTENTS} - @echo " run soupault" - @soupault - @echo " update .gitignore" - @scripts/update-gitignore.sh ${CONTENTS} ${GENFILES} ${GENSASS} -#+END_SRC - -#+BEGIN_SRC bash :tangle scripts/update-gitignore.sh :tangle-mode (identity #o755) -#!/bin/bash - -BEGIN_MARKER="# begin generated files" -END_MARKER="# begin generated files" - -# remove the previous list of generated files to ignore -sed -i -e "/${BEGIN_MARKER}/,/${END_MARKER}/d" .gitignore -# remove trailing empty lines -sed -i -e :a -e '/^\n*$/{$d;N;};/\n$/ba' .gitignore - -# output the list of files to ignore -echo "" >> .gitignore -echo ${BEGIN_MARKER} >> .gitignore -for f in $@; do - echo "${f}" >> .gitignore -done -echo ${END_MARKER} >> .gitignore -#+END_SRC - -#+BEGIN_SRC makefile :tangle bootstrap.mk -serve : - @echo " start a python server" - @cd build; python -m http.server 2>/dev/null - -clean : - @echo " remove generated files" - @rm -rf ${CONTENTS} ${GENFILES} build/ - -force : clean build - -.PHONY : serve clean force build -#+END_SRC - -# Local Variables: -# org-src-preserve-indentation: t -# End: diff --git a/site/posts/meta/Contents.org b/site/posts/meta/Contents.org deleted file mode 100644 index 0863709..0000000 --- a/site/posts/meta/Contents.org +++ /dev/null @@ -1,3 +0,0 @@ -#+BEGIN_EXPORT html -<h1>Authoring Contents and HTML Generation</h1> -#+END_EXPORT diff --git a/site/posts/meta/Contents/Coq.org b/site/posts/meta/Contents/Coq.org deleted file mode 100644 index 6965927..0000000 --- a/site/posts/meta/Contents/Coq.org +++ /dev/null @@ -1,42 +0,0 @@ -* Author Guidelines - -* Under the Hood - -#+BEGIN_SRC makefile :tangle coq.mk -COQ_POSTS := $(shell find site/ -name "*.v") -CONTENTS += $(COQ_POSTS:.v=.html) -GENSASS += site/style/coq.sass - -COQLIB := "https://coq.inria.fr/distrib/current/stdlib/" -COQCARG := -async-proofs-cache force \ - -w -custom-entry-overriden -COQDOCARG := --no-index --charset utf8 --short \ - --body-only --coqlib "${COQLIB}" - -%.html : %.v coq.mk - @echo " export $*.v" - @coqc ${COQCARG} $< - @coqdoc ${COQDOCARG} -d $(shell dirname $<) $< - @sed -i -e 's/href="$(shell basename $@)\#/href="\#/g' $@ - @rm -f $(shell dirname $<)/coqdoc.css -#+END_SRC - -#+BEGIN_SRC sass :tangle site/style/coq.sass -div.code - white-space: nowrap - overflow-x: visible - -.code a[href] - text-decoration: none - - .fa-external-link - display: none - -.paragraph - margin-top: 1em - margin-bottom: 1em -#+END_SRC - -# Local Variables: -# org-src-preserve-indentation: t -# End: diff --git a/site/posts/meta/Contents/Org.org b/site/posts/meta/Contents/Org.org deleted file mode 100644 index f28d1cc..0000000 --- a/site/posts/meta/Contents/Org.org +++ /dev/null @@ -1,76 +0,0 @@ -* Author Guidelines - -* Under the Hood - -#+BEGIN_SRC emacs-lisp :tangle scripts/export-org.el -(require 'package) - -(setq user-emacs-directory (concat (getenv "ROOT") "/emacs.d")) -(setq package-user-dir (concat (getenv "ROOT") "/emacs.d")) -(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") - ("melpa" . "https://melpa.org/packages/"))) - -(package-initialize) - -(or (file-exists-p package-user-dir) - (package-refresh-contents)) - -(defun ensure-package-installed (&rest packages) - "Ensure every PACKAGES is installed. - -Ask for installation if it’s -not. Return a list of installed packages or nil for every skipped -package." - (mapcar - (lambda (package) - (if (package-installed-p package) - nil - (package-install package)) - package) - packages)) - -(ensure-package-installed 'use-package) -(eval-when-compile (require 'use-package)) - -(use-package org :ensure t) -(use-package htmlize :ensure t) -(use-package sass-mode :ensure t :defer t) -(use-package haskell-mode :ensure t :defer t) -(use-package github-modern-theme :ensure t :defer t - :init - (load-theme 'github-modern t)) -#+END_SRC - -#+BEGIN_SRC emacs-lisp :tangle scripts/export-org.el -(org-babel-do-load-languages 'org-babel-load-languages'((shell . t))) -(setq org-src-preserve-indentation t) -(setq org-confirm-babel-evaluate nil) -(setq org-export-with-toc nil) -(org-html-export-to-html nil nil nil t) -#+END_SRC - -#+BEGIN_SRC makefile :tangle org.mk -ORG_POSTS := $(shell find site/ -name "*.org") - -CONTENTS += $(ORG_POSTS:.org=.html) - -EXPORT := --batch --load="${ROOT}/scripts/export-org.el" 2>> build.log - -%.html : %.org scripts/export-org.el - @echo " export $*.org" - @${EMACS} $< ${EXPORT} -#+END_SRC - -#+BEGIN_SRC sass :tangle site/style/org.sass -.footpara - display: inline - margin-left: .2em - -.section-number-2:after, .section-number-3:after, .section-number-4:after - content: ". " - -dl dt - font-weight: bold -dl dd p - margin-top: 0 -#+END_SRC diff --git a/site/posts/meta/Soupault.org b/site/posts/meta/Soupault.org deleted file mode 100644 index aab5476..0000000 --- a/site/posts/meta/Soupault.org +++ /dev/null @@ -1,71 +0,0 @@ -#+BEGIN_EXPORT html -<h1><code>soupault</code> Configuration</h1> - -<div id="history">site/posts/meta/Soupault.org</div> -#+END_EXPORT - -#+BEGIN_SRC toml :tangle (concat (getenv "ROOT") "/soupault.conf") -[settings] - strict = true - verbose = false - debug = false - site_dir = "site" - build_dir = "build" - - page_file_extensions = ["html"] - ignore_extensions = [ - "draft", "vo", "vok", "vos", "glob", - "html~", "org", "aux", "sass", - ] - - generator_mode = true - complete_page_selector = "html" - default_template = "templates/main.html" - content_selector = "main" - doctype = "<!DOCTYPE html>" - clean_urls = false - -[widgets.page-title] - widget = "title" - selector = "h1" - default = "~lthms" - prepend = "~lthms: " - -[widgets.generator-meta] - widget = "insert_html" - html = '<meta name="generator" content="soupault 1.5">' - selector = "head" - -[widgets.table-of-contents] - widget = "toc" - selector = "div#generate-toc" - action = "replace_element" - min_level = 2 - numbered_list = true - -[plugins.fix_urls] - file = "plugins/fix_urls.lua" - -[plugins.external_links] - file = "plugins/external_links.lua" - -[widgets.fix-urls] - widget = "fix_urls" - prefix_url = "/~lthms" - -[widgets.mark-external-urls] - after = "generate-history" - widget = "external_links" - -[widgets.generate-history] - widget = "preprocess_element" - selector = "#history" - command = "./scripts/generate_history.sh \"templates/history.html\"" - action = "replace_content" - -[widgets.math] - widget = "preprocess_element" - selector = ".imath" - command = "node scripts/katex.js" - action = "replace_content" -#+END_SRC diff --git a/site/posts/meta/Theme.org b/site/posts/meta/Theme.org deleted file mode 100644 index 5029380..0000000 --- a/site/posts/meta/Theme.org +++ /dev/null @@ -1,242 +0,0 @@ -#+BEGIN_EXPORT html -<h1>Theming and Templating</h1> -#+END_EXPORT - -* Main HTML Template - -#+NAME: js_lazyloading -#+BEGIN_SRC js -let noscript = document.getElementById('lazyloading'); -let resources = noscript.innerText.split('\n'); - -for (var ix in resources) { - noscript.insertAdjacentHTML('beforebegin', resources[ix]); -} -#+END_SRC - -#+NAME: html_lazyloading -#+BEGIN_SRC html -<noscript id="lazyloading"> - <link rel="stylesheet" href="/vendors/katex.0.11.1/katex.css"> - <link rel="stylesheet" - href="/vendors/fork-awesome.1.1.7/css/fork-awesome.min.css"> - <link rel="stylesheet" href="/vendors/fira-code.2/font.css"> - <link rel="stylesheet" href="/vendors/et-book/font.css"> -</nolink> -#+END_SRC - -#+BEGIN_SRC html :tangle templates/main.html :noweb tangle -<html lang="en"> - <head> - <meta charset="utf-8"> - <title> <!-- set automatically, see soupault.conf --> </title> - <meta name="viewport" - content="width=device-width, initial-scale=1.0"> - <link rel="stylesheet" href="/style/main.css"> - <link rel="icon" type="image/ico" href="/img/merida.webp"> - <<html_lazyloading>> - </head> - <body id="default"> - <nav> - <ul> - <li> <a href="/news">News</a></li> - <li> <a href="/posts">Write-ups</a></li> - <li> <a href="/">About</a></li> - </ul> - </nav> - <header> - <img src="/img/merida.webp" - alt="This picture is Merida in Ralph 2.0, and is my main avatar" /> - </header> - <main> - <!-- your page content will be inserted here, - see the content_selector option in soupault.conf --> - </main> - <script> - <<js_lazyloading>> - </script> - </body> -</html> -#+END_SRC - -* Main SASS File - -#+BEGIN_SRC sass :tangle site/style/main.sass -$bg-color: #fcfcfc -$fg-color: #333 -$primary-color: black - -* - box-sizing: border-box - -body, html - width: 100% - height: 100% - padding: 0 - margin: 0 - font-size: 100% - background: $bg-color - color: $fg-color - font-family: 'et-book', serif - -h1, h2, h3, h4, h5, a[href] - color: $primary-color - -h1, h2, h3, h4, h5 - font-family: sans-serif - -h1 - text-align: center - -a[href] .url-mark - font-size: smaller; - padding-left: 0.2em - -/* default */ - -body#default - overflow-x: hidden - - nav - padding-top: 1em - padding-bottom: 1em - width: 100% - - ul - padding: 0 - margin: 0 - width: 100% - display: flex - flex-direction: row - justify-content: center - list-style-type: none - - li - padding-left: .5em - padding-right: .5em - text-transform: uppercase - font-family: sans-serif - font-size: 130% - font-weight: bold - - a - text-decoration: none - - header - text-align: center - - img - text-align: center - border-radius: 50% - width: 125px - - main - max-width: 550px - margin: auto - padding: 0em 1em 1em 1em - font-size: 130% - -body#default main .code, code, pre, .inlinecode, tt - font-family: 'Fira Code', monospace - font-size: 75% - - -body#default - main - @import coq, org - - .TODO - background: #fae7c5 - .REMARK - background: #d4f2fc - - .TODO, .REMARK - padding: 1em 1em 1em 1em - - p - margin: 0 - p:not(:list-child) - margin-bottom: 1em - -/* VCARD (index.html) */ -body#vcard - display: flex - align-items: center - flex-direction: column - font-size: 125% - - article - max-width: 400px - width: 80% - margin: auto - - img - display: block - border-radius: 50% - width: 175px - margin: auto - margin-bottom: 3em - - h1 - color: $primary-color - font-size: 300% - text-align: center - - nav dt - font-weight: bold - - a - color: $primary-color - -/* indexes */ - -.index - dt - font-weight: bold - color: $primary-color - - dd - margin-left: 0 - margin-bottom: 1em - - ol - margin-top: 0.3em - -#history - summary - color: $primary-color - font-weight: bold - - table - border-top: 2px solid $primary-color - border-bottom: 2px solid $primary-color - border-collapse: collapse; - - td - border-bottom: 1px solid $primary-color - padding: .5em - vertical-align: top - - td.commit - font-size: smaller - - td.commit - font-family: 'Fira Code', monospace - font-size: 80% - white-space: nowrap; - -.imath - font-size: smaller -#+END_SRC - -#+BEGIN_SRC makefile :tangle theme.mk -SASS := site/style/main.sass -CSS := $(SASS:.sass=.css) - -GENFILES += ${CLEO_THEME_TANGLE} ${SASS} -CONTENTS += ${CSS} templates/main.html - -${CSS} : ${SASS} ${GENSASS} - @echo " compile $<" - @sassc --style=compressed --sass $< $@ -#+END_SRC diff --git a/site/posts/meta/index.org b/site/posts/meta/index.org deleted file mode 100644 index a0df3a9..0000000 --- a/site/posts/meta/index.org +++ /dev/null @@ -1,37 +0,0 @@ -#+BEGIN_EXPORT html -<h1>A Series on Generating this Static Website</h1> -#+END_EXPORT - -The generation of this humble static website is far from being trivial, and -require a combination of —too— many tools. It turned out that some choices I -have made early on gave to the build toolchain I ended up writing a pretty nice -property: I could easily integrate its code to the very website it was conceived -to build, by means of [[http://www.literateprogramming.com/][literate programming]]! - -This series is just that: the literate programming document of my home-grown -build toolchain, called *~cleopatra~*. The motivations behind this name are -twofold. First, I wanted to follow the example of [[https://soupault.neocities.org/][~soupault~]], named after [[https://fr.wikipedia.org/wiki/Philippe_Soupault][a -famous personality]]. Secondly, one of my main objective when I started working on -this “project” was to be able to easily use whatever format I wanted to author -my contents. Did you know that Cleopatra was a reputed polyglot (at least -according to [[https://fr.wikipedia.org/wiki/Polyglotte][Wikipedia France]])? - -#+BEGIN_EXPORT html -<article class="index"> -#+END_EXPORT - -#+BEGIN_TODO -This series is work in progress. -#+END_TODO - -- [[./Bootstrap.org][Bootstrapping an Extensible Toolchain]] :: - -- [[./Contents.org][Authoring Content and HTML Generation ~(WIP)~]] :: - -- [[./Soupault.org][Soupault Configuration ~(WIP)~]] :: - -- [[./Theme.org][Theming and Templating ~(WIP)~]] :: - -#+BEGIN_EXPORT html -</article> -#+END_EXPORT |