This year, I started writing a historical novel about a branch of my family. I quickly realized I needed some tooling to organize my data: what I know about the characters, the places, a general timeline, etc.
Manuskript
I looked for software to do that and found that the reference is Scrivener. However interesting it looked, I'd rather use Open Source software whenever possible, so I started using Manuskript, an Open Source software for writers similar to Scrivener.
I laid out some chapters, characters, plots… then I realized the saving format was binary. It's actually a Zip archive which contains all the information in flat files:
1 2020-05-09 08:05 MANUSKRIPT 137 2020-05-09 08:05 infos.txt 0 2020-05-09 08:05 summary.txt 46 2020-05-09 08:05 status.txt 147 2020-05-09 08:05 labels.txt 284 2020-05-09 08:05 characters/0-Samuel_L-on.txt 281 2020-05-09 08:05 characters/1-L-on_Grunberg.txt 261 2020-05-09 08:05 characters/2-Adolphe_Grunberg.txt 309 2020-05-09 08:05 characters/3-Elisabeth_Rau.txt 112 2020-05-09 08:05 characters/4-Victor_Grunberg.txt 109 2020-05-09 08:05 characters/5-Maria_Schorr.txt 224 2020-05-09 08:05 characters/6-Fred_Grunberg.txt 125 2020-05-09 08:05 characters/7-Colonel_de_Villebois-Mareuil.txt 107 2020-05-09 08:05 characters/8-Said_Pacha.txt 109 2020-05-09 08:05 characters/9-Isaac_Aghion.txt 92 2020-05-09 08:05 outline/00-Setup.md 322 2020-05-09 08:05 outline/01-Les_joyaux_-gyptiens/folder.txt 3753 2020-05-09 08:05 outline/01-Les_joyaux_-gyptiens/0-Une_rencontre_inattendue.md 1706 2020-05-09 08:05 outline/01-Les_joyaux_-gyptiens/1-Office_de_chabbat.md 715 2020-05-09 08:05 outline/01-Les_joyaux_-gyptiens/2-Un_d-ner_chez_Isaac.md 482 2020-05-09 08:05 outline/01-Les_joyaux_-gyptiens/3-Proc-s_1.md 166 2020-05-09 08:05 outline/01-Les_joyaux_-gyptiens/4-Sc-ne_5.md 83 2020-05-09 08:05 outline/02-Paris/folder.txt 102 2020-05-09 08:05 outline/02-Paris/0-Sc-ne_1.md 97 2020-05-09 08:05 outline/03-Etudes_des_enfants/folder.txt 103 2020-05-09 08:05 outline/03-Etudes_des_enfants/0-Sc-ne_1.md 103 2020-05-09 08:05 outline/03-Etudes_des_enfants/1-Sc-ne_2.md 95 2020-05-09 08:05 outline/04-Premiers_emplois/folder.txt 103 2020-05-09 08:05 outline/04-Premiers_emplois/0-Sc-ne_1.md 96 2020-05-09 08:05 outline/05-Vers_le_Transvaal/folder.txt 103 2020-05-09 08:05 outline/05-Vers_le_Transvaal/0-Sc-ne_1.md 334 2020-05-09 08:05 outline/21-Epilogue.md 40074 2020-05-09 08:05 revisions.xml 275 2020-05-09 08:05 world.opml 1669 2020-05-09 08:05 plots.xml 2499 2020-05-09 08:05 settings.txt This is rather good news, and there's ways to automate PDF creation from this within the software, good news again!
However, some things were problematic to me:
- I like to tune my pandoc/LaTeX rendering, and the options in Manuskript were pretty limited for that
- I'd rather not commit a single Zip file in Git, so I would have preferred to have all the files in the current directory
- Manuskript cannot be automated to compile the PDF, you need to go through the GUI and click on buttons. That's a blocker for me.
Going the full-git way
So I decided I would do everything in Git + Markdown, without the help of a third-party application.
Chapters
I'm currently storing the chapters in their own directories, with numbered Markdown files:
chapitres/ ├── 01_les_joyaux_egyptiens │ ├── 00_titre.md │ ├── 01_une_rencontre_innatendue.md │ ├── 02_office_de_chabbat.md │ ├── 03_brody.md │ ├── 04_chabbat_2.md │ ├── 05_diner_chez_isaac.md │ └── 06_audience.md ├── 02_les_enfants_grunberg │ ├── 00_titre.md │ ├── 01_leon.md │ ├── 02_retour.md │ ├── 03_coffre.md │ ├── 04_burtaux.md │ ├── 05_article.md │ └── 06_article2.md ├── 03_annees_noires │ └── 00_titre.md ├── 04_etudes │ └── 00_titre.md ├── 05_premier_travail │ └── 00_titre.md ├── 06_le_creusot │ └── 00_titre.md └── 21_epilogue.md Characters & Places
The characters documentation is stored in Markdown files as well, and links can be made between them when necessary:
personnages/ ├── Adolphe_Grunberg.md ├── Charlotte_Grunberg.md ├── Elisabeth_Rau.md ├── Emilie_Grunberg.md ├── Felix_Zottier.md ├── Frederic_Grunberg.md ├── Isaac_Aghion.md ├── Jacques_Grunberg.md ├── Leon_Grunberg.md ├── Lucie_Leon.md ├── Marc_Leon.md ├── Mirel_Schorr.md ├── Paul_Grunberg.md └── Samuel_Leon.md Same goes for places:
lieux/ ├── Alexandrie.md ├── Brody.md ├── Dubno.md ├── Grunberg_Boulogne.md ├── Paris.md ├── Petite_Jonchere.md └── Vienne.md Links can easily be made between these documentation files:
# Mirel Schorr ## État civil * Prénoms : Mirel, dite Maria * Nom : Grünberg * Nom de naissance : Schorr ## Portrait Inconnu ## Description physique Inconnu ## Evénements * ca 1800 : ° à [Dubno](../lieux/Dubno.md) (Russie) * Enfance à [Brody](../lieux/Brody.md) (Autriche) avec ses parents [Schachne](Schachne_Schorr.md) et [Sarah](Sarah_Bick.md) et ses frères [Naphtali](Naphtali_Mendel_Schorr.md) et [Osias](Osias_Heschel_Schorr.md) * 1821: Mariage à [Brody](../lieux/Brody.md) * 1870 : habite à [Vienne](../lieux/Vienne.md) (testament [Adolphe](Adolphe_Grunberg.md)) * 1877 : habite à [Paris](../lieux/Paris.md) (+) * 1877 : + à [Vienne](../lieux/Vienne.md) ## Habillement Voir sa garde-robe en 1853 dans l'inventaire de [Victor](Victor_Grunberg.md) Section stats
Manuskript provides stats about the number of words in a section. I've added a Make target for that:
stats: find chapitres/ -name "*.md" -not -name '00_titre.md' -print0 | sort -z | xargs -0 wc -w Caveat: it also lists the words in the comments…
Building the project
I'm using Pandoc to build the project with my own LaTeX template.
%.md: cat meta.md > $@ find chapitres/ -name "*.md" -print0 | sort -z | xargs -0 cat >> $@ %.tex: %.md pandoc --pdf-engine lualatex --template extended.tex \ --variable numbersections --toc --variable toc-depth=2 \ --variable documentclass=memoir --variable fontsize=12pt \ --filter pandoc-citeproc \ --verbose \ $< -o $@ %.pdf: %.tex OSFONTDIR=$(FONTSDIR) lualatex $< makeindex $*.idx OSFONTDIR=$(FONTSDIR) lualatex $< The novel project can be found in this GitHub repository:
raphink / genearoman
📖 Long Tom, un roman généalogique
Long Tom
Un roman généalogique autour de la famille Grünberg.
Lire en ligne: https://raphink.github.io/genearoman/ PDF: https://raphink.github.io/genearoman/long_tom.pdf

Top comments (0)