commit 153fe47a37ba80692dccdd5907595c3bcf821cd7
parent 7b52cffc9ae5d89c1cbb5874449b8ab61911eb7c
Author: lou woell <lou@repetitions.de>
Date:   Mon, 31 Aug 2026 04:00:16 +0200

Add readme

Diffstat:
Areadme.md | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+), 0 deletions(-)

diff --git a/readme.md b/readme.md @@ -0,0 +1,61 @@ +This repository contains the full latin text of Spinoza's Ethics as well as +various translations in a format that makes it easy to programatically process +them. + +The repository also contains the sources to generate +https://ethica.repetitions.de. + +# ethica + +The `data` directory contains all data and metadata needed to reconstruct the +full text of the ethics. + +`data/meta.json` contains a json representation of the structure of the ethics. +Each json object represents one node (axioms, propositions, proofs, etc.). Each +node has fields: + + - id: unique identifier of the node. + - children: array of ids of child-nodes. + - ref: array of ids of nodes referenced by this node. + - number: Number of node. Only present if the node appears in the text with a + number attached (e.g. Axiom 1). + - type: Type of the node, according to the latin versin. + +Each subdirectory of data contains one version of the text. Each version of the +text is split into one file per node, named by the id of the node. The files are +Markdown formatted. Each version also requires a file `types.json` that maps +each type of node to a name to be used for that type of node in the text +version. + +e.g. `data/de_stern/types.json` looks like this: +```json +{ + "ethica": "Ethik", + "pars": "Teil", + "definitiones": "Definitionen", + "definitio": "Definition", + "explicatio": "Erläuterung", + "axiomata": "Axiome", + "axioma": "Axiom", + "propositio": "Lehrsatz", + "demonstratio": "Beweis", + "corollarium": "Zusatz", + "aliter": "Anderer Beweis", + "scholium": "Anmerkung", + "appendix": "Anhang", + "praefatio": "Vorwort", + "lemma": "Hilfssatz", + "postulatum": "Postulat", + "postulata": "Postulate", + "affectuum definitiones": "Definitionen der Affekte", + "affectuum generalis definitio": "Allgemeine Definition der Affekte", + "caput": "§" +} +``` + +# ethica.repetitions.de + +Building the page source for `ethica.repetitions.de` requires a common lisp +implementation as well as a functional quicklisp setup. The code to generate the +dite is located in the `lisp` directory. The `html` directory contains templates +used by the lisp programm.