|
| 1 | +# Codex Woltiensis |
| 2 | + |
| 3 | +Highly customizable student songbook template that provides a macro system and a semantic format to describe songs, including metadata, lyrics, refrains, and various annotations. The goal is to simplify songbook creation while maintaining high typographic quality. |
| 4 | + |
| 5 | +## ✨ Features |
| 6 | + |
| 7 | +- **Semantic Song Definition**: Write songs using high-level, readable commands like `#header`, `#bis`, and custom footnotes. |
| 8 | +- **Metadata Blocks**: Specify song metadata like melody (`air`), lyrics author (`paroles`), and comments using a structured format. |
| 9 | +- **Line Duplication**: Automatically duplicate lines with `#bis()` and control the repetition count (`#bis(n:3)`). |
| 10 | +- **Formatted Refrains**: Define language-specific refrains (`=== fr.`, `=== nl`) and support custom-styled chorus sections. |
| 11 | +- **Rich Text Formatting**: Supports bold (`*bold*`), italics (`_italic_`), strikethrough (`#strike[...]`), underline (`#underline[...]`), and footnotes (`#note[...]`). |
| 12 | +- **Multiline Bis**: Repeat entire blocks of lines using `#bis()[...]` with multiple lines. |
| 13 | +- **Comment Annotations**: Provide context and background to each song using the `#header.commentaire` field. |
| 14 | +- **Refrain Sections**: Clearly separate verses from refrains with dedicated syntax (`=== fr.`, `=== Refrain custom`, etc). |
| 15 | + |
| 16 | +## 📄 Example |
| 17 | + |
| 18 | +Here is a sample song using the Codex Woltiensis format: |
| 19 | + |
| 20 | +```typst |
| 21 | +== Song of Demonstration |
| 22 | +#header( |
| 23 | + air: air(author: "Traditional")[The Drunken Sailor], |
| 24 | + paroles: paroles(date: "1850")[Anonymous], |
| 25 | + commentaire: com()[This song demonstrates all features of the Codex Woltiensis template in English, including repeats, formatting, footnotes, and structured metadata.] |
| 26 | +) |
| 27 | +
|
| 28 | +What shall we do with a drunken sailor \ |
| 29 | +What shall we do with a drunken sailor \ |
| 30 | +What shall we do with a drunken sailor #bis() \ |
| 31 | +Early in the morning? \ |
| 32 | +
|
| 33 | +Put him in the longboat till he's sober #bis(n:3) \ |
| 34 | +Put him in the scuppers with a hosepipe on him #bis(n:4) \ |
| 35 | +Shave his belly with a rusty razor #bis(n:69) \ |
| 36 | +
|
| 37 | +=== fr. |
| 38 | +_This is the chorus section \ |
| 39 | +Repeated after each verse \ |
| 40 | +May include footnotes #note()[Footnotes are useful for contextual notes] \ |
| 41 | +May be marked as en (English), nl (Dutch), fr (French), or custom._ |
| 42 | +
|
| 43 | +This shows repeated multiline blocks \ |
| 44 | +#bis()[ |
| 45 | +Haul him up and let him dangle\ |
| 46 | +Haul him up and let him dangle\ |
| 47 | +Let the bosun give a warning\ |
| 48 | +] |
| 49 | +
|
| 50 | +=== nl |
| 51 | +
|
| 52 | +This stanza tests text formatting \ |
| 53 | +*Bold Text* \ |
| 54 | +_Italic Text_ \ |
| 55 | +#strike[Strikethrough Text] \ |
| 56 | +#underline[Underlined Text] |
| 57 | +
|
| 58 | +=== Custom Refrain |
| 59 | +``` |
0 commit comments