Explanatory diagrams on the site were made using mermaid.live in simple markdown to generate SVG.
Diagram of relationships among the versions of Frankenstein in the Variorum.
flowchart TD
A[\MS Notebook/] --- B[\fragmentary alt. passages/]
style A fill:#827fe2,
A --> C([1818 first publication])
style C fill:#fab37e
C --> D[\Marginalia in the “Thomas copy”/]
style D fill:#e378be
D -..-x F
linkStyle 3 stroke:#e378be,stroke-width:1px,color:black;
C --> E([Godwin's 1823 publication])
style E fill:#6ebdc0
C -..-> F([1831 edition])
E -..-> F
style F fill:#d7536a
Print and Digital Editions of Frankenstein leading to the Frankenstein Variorum
flowchart TD
A((<b>1970s</b>))---B([ <b>1974: James Reiger's edition</b>:
First edition of the 1818 text in 141 years.
Collates the Thomas copy variants inline, represents 1831 variants in endnotes.]) --...--> C([<b>1990s</b>])
C --- D([<b>1996: Charles Robinson’s <i>Frankenstein Notebooks</i></b>:
facsimile printing of the MS notebooks of 1816-1817])
C --- E{{<b>mid-1990s: Pennsylvania Electronic Edition</b>
eds. Stuart Curran and Jack Lynch
side-by-side collation of 1818 and 1831}}
C --- F([<b>1996: Nora Crook's edition of 1818</b>
with Thomas copy, 1823, and 1831 variants in endnotes,
in Pickering & Chatto series of MWS's works])
style B fill:#d9ead3
style D fill:#d9ead3
style E fill:#fed966
style F fill:#d9ead3
D --> G((<b>2000s</b>))
E --> G
F --> G
G --- H{{<b>2007: <i>Romantic Circles</i>: separate editions of 1818 and 1831</b>
TEI conversions from Pennsylvania Electronic Edition}}
style H fill:#fed966
H --> I((<b>2010s</b>))
D ---> J
I --- J{{<b>2013: Shelley-Godwin Archive</b>:
diplomatic/documentary digital edition}}
style J fill:#fed966
J --> K((<b>2020s</b>))
E --> L
K --- L{{<b>2024: Frankenstein Variorum</b>
collates MS, 1818, Thomas, 1832, and 1831}}
style L fill:#fed966
subgraph legend [Legend]
Y([print edition])
Z{{digital edition}}
style Y fill:#d9ead3
style Z fill:#fed966
end
flowchart TD
A([Source texts preparation]):::titleNode---B[[<b>Perl regular expressions, oXygen XML Editor</b><br/> for converting old HTML without end-tags to XML <br/> for marking collation chunk boundaries in source files]]:::tech
A---C[[<b>XSLT</b><br/> for resequencing margin notes <br/> for organizing text files into 'chunks' for collation <br/> For 'flattening' the markup for collation.]]:::tech
D([Collation of five versions of Frankenstein]):::titleNode---E[[<b>Python</b> <br/> for preparing the tokenizing and normalizing algorithm + instructing CollateX]]:::tech
E---F[[<b>CollateX</b> <br/> Python-based library for locating alignments and divergences in pairwise comparison of text strings<br/> Output XML format of a single file holding information about all five source texts and where they align and diverge from each other.]]:::tech
G([Prepare the Spine and 5 edition files from collation output]):::titleNode---H[[<b>XSLT postCollation pipeline</b><br/> Series of XSLTs: transforms collation XML output into Spine file + 5 edition files]]:::tech
G---I[[<b>Python</b> for Levenshtein edit distance calculations<br/> find the maximum value of all pairwise comparisons at each variant location]]:::tech
I---J[[<b>XSLT</b> Pull data from the Python edit-distance output<br/> Apply to spine file and to create hotspots in the edition files]]:::tech
I---L[[<b>XSLT</b> to prepare the Interactive Variorum Heatmap in SVG]]:::tech
H---K[[<b>XSLT</b> for preparing the data for the interface<br/> Split into letter/chapter-size unit files<br/><b>Transform the spine from XML to JSON</b>]]:::tech
J---K
M([Prepare the Interface]):::titleNode---N[[<b>React + Astro JavaScript</b></br> Pull the XML data into JSON structures for web interface delivery]]:::tech
Y([Sharing project workflow and data]):::titleNode---Z[[<b>git/GitHub</b>, Slack, meetings]]:::collab
A===>D
D===>G
G===>M
A===>Y
D===>Y
G===>Y
M===>Y
classDef titleNode font-size:5rem
classDef tech fill:#d9ead3,font-size:3rem
classDef collab fill:#fed966,font-size:3rem