[Tex/LaTex] Creating a custom songbook with the songs package

line-spacingmusicsongs

Friends, I usually create songbooks with the help of songs package (I guess the CTAN version is a little old, the newest one can be downloaded from here). Consider the follow example (taken from the author's webpage):

\documentclass[letterpaper]{article}
%\usepackage[chorded]{songs}
\usepackage[lyric]{songs}

\newindex{titleidx}{cbtitle}

\begin{document}

\begin{songs}{titleidx}

\beginsong{Amazing Grace}[
  by={John Newton},
  sr={Luke 15:4; 2 Corinthians 4:8,9; Ephesians 2:8; Revelation 14:3},
  cr={Public domain.}]

\beginverse
A\[E]mazing \[E/D#]grace! How \[A/C#]sweet the \[E/B]sound
That \[E]saved a \[E/C#]wretch like \[B7]me!
I \[E]once was \[E/D#]lost, but \[A/C#]now am \[E/B]found;
Was \[A]blind, but \[A/B]now I \[E]see.
\endverse

\beginverse
T'was ^grace that ^taught my ^heart to ^fear,
And ^grace my ^fears re^lieved;
How ^precious ^did that ^grace ap^pear
The ^hour I ^first be^lieved!
\endverse

\endsong

\end{songs}

\end{document}

The output is according to the parameter provided in \usepackage[<<type of songbook>>]{songs}:

Songbook output

I always use the chorded parameter for musicians and the lyric one for the rest of the audience. As you can see in the code, using the ^ symbol will make the other verses repeat the chords in those positions. Most of the songs have the same melody, so I'd love to save some space and spare some trees by putting the chords in the first verse and leaving the other verses untouched, like this:

\beginverse
A\[E]mazing \[E/D#]grace! How \[A/C#]sweet the \[E/B]sound
That \[E]saved a \[E/C#]wretch like \[B7]me!
I \[E]once was \[E/D#]lost, but \[A/C#]now am \[E/B]found;
Was \[A]blind, but \[A/B]now I \[E]see.
\endverse

\beginverse
T'was grace that taught my heart to fear,
And grace my fears relieved;
How precious did that grace appear
The hour I first believed!
\endverse

\endsong

Sadly, the chorded output still preserves the spaces between lines:

Songbook output

My idea was something like this: when chords were provided, display them like the chorded option, otherwise keep the lyric one. This is the output I'd like to obtain:

I have a dream

I read the songs documentation but could not find any references on how to mix chorded and lyrics styles the way I want. I'd like to stick with the songs package, as it has great index features and since I have already a book with thousands of songs. Of course, if not possible, I'm open to other suggestions on packages. =)

Best Answer

One possible solution would be to use \singlespacing from the setspace package:

\documentclass[letterpaper]{article}
\usepackage[chorded]{songs}
\usepackage{setspace}

\newindex{titleidx}{cbtitle}

\begin{document}

\begin{songs}{titleidx}

\beginsong{Amazing Grace}[
  by={John Newton},
  sr={Luke 15:4; 2 Corinthians 4:8,9; Ephesians 2:8; Revelation 14:3},
  cr={Public domain.}]

\beginverse
A\[E]mazing \[E/D#]grace! How \[A/C#]sweet the \[E/B]sound
That \[E]saved a \[E/C#]wretch like \[B7]me!
I \[E]once was \[E/D#]lost, but \[A/C#]now am \[E/B]found;
Was \[A]blind, but \[A/B]now I \[E]see.
\endverse

\beginverse\singlespacing
T'was grace that taught my heart to fear,
And grace my fears relieved;
How precious did that grace appear
The hour I first believed!
\endverse

\endsong

\end{songs}

\end{document}

EDIT: the songs package offers a native solution: the \baselineadj length controls the vertical distance between the baselines of consecutive lines of lyrics; so a redefinition of this length will also do the job (without loading extra packages):

\documentclass[letterpaper]{article}
\usepackage[chorded]{songs}

\newindex{titleidx}{cbtitle}

\begin{document}

\setlength\baselineadj{-\baselineskip}

\begin{songs}{titleidx}

\beginsong{Amazing Grace}[
  by={John Newton},
  sr={Luke 15:4; 2 Corinthians 4:8,9; Ephesians 2:8; Revelation 14:3},
  cr={Public domain.}]

\beginverse
A\[E]mazing \[E/D#]grace! How \[A/C#]sweet the \[E/B]sound
That \[E]saved a \[E/C#]wretch like \[B7]me!
I \[E]once was \[E/D#]lost, but \[A/C#]now am \[E/B]found;
Was \[A]blind, but \[A/B]now I \[E]see.
\endverse

\beginverse
T'was grace that taught my heart to fear,
And grace my fears relieved;
How precious did that grace appear
The hour I first believed!
\endverse

\endsong

\end{songs}

\end{document}
Related Question