#poetry #book #poem #verse #latex

app poetry-book-cli

poetry-book command line interface. Create a poetry book in latex from your terminal.

5 releases

0.1.4 Feb 9, 2020
0.1.3 Feb 9, 2020
0.1.2 Feb 9, 2020
0.1.1 Feb 9, 2020
0.1.0 Feb 8, 2020

#1853 in Command line utilities


284 lines

Poetry book cli

Crates.io CI unsafe forbidden

Poetry-book Command line interface.

Create a latex poetry book starting from poems written in plain text files.


$ cargo install poetry-book-cli


    poetry-book-cli <book-dir>

    -h, --help       Prints help information
    -V, --version    Prints version information

    <book-dir>    The path of the book directory


The directory structure that contains the input of the program looks like this:

├── book.json
├── poems/
│   ├── A Silvia
│   ├── La ginestra.txt
│   └── L'infinito
└── Preface.txt


book.json file has the following format:

    "author": "Giacomo Leopardi",
    "title": "Leopardi's poetry book",
    "toc_title": "Table of Contents",
    "language": "Italian",
    "preface": "Preface.txt",
    "poem_formatting": {
        "centered_verse": "average"
    "poems": [
        "La ginestra.txt",
        "A Silvia"
  • author: book author
  • title: book title
  • toc_title: table of contents title (optional)
  • language: language of the poems (optional)
  • preface: filename of the preface (optional). The preface (without extension) is used as preface title.
  • poem_formatting: how poems should be formatted (optional)
    • centered_verse: Determine which verse will be centered. There are two options:
      • longest: The verse with the longest length (default)
      • average: A verse with a number of 'x' equal to the average length among all verses
  • poems: ordered list of poems filename. The filename (without extension) is used as poem title.


Poems are just plain text files, with an empty line between stanzas. The name of the file (without extension) is the poem title, the content of the file is the poem body.


Preface is just a plain text file, with an empty line between paragraphs. The name of the file (without extension) is the preface title, the content of the file is the preface body.


When you run the executable, the output is places in the out/ directory.


Licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


~69K SLoC