You can use the Lilypond feature that a complete score can be included in a line of text markup. The only special requirement is that the included score must have a \layout
block (but an empty one will do).
So: make a separate score for each theme, the put them in a centered column inside text markup block, like this:
\version "2.18.2"
\markup \fill-line {
\override #'(baseline-skip . 10) \center-column {
\line { \score {
\new Staff { \relative c' { c d e } } \layout {} } }
\line { \score {
\new Staff { \relative c' { f g a b } } \layout {} } }
\line { \score {
\new Staff { \relative c
{ \time 3/4 \key d \major \clef "bass" d2. } }
\layout {} } }
} }
Set the \baseline-skip
property to adjust the vertical spacing between the examples.
If you have a lot of themes you will probably want to define some macros for the repetitive parts of the input, of course.
This complete \markup
block goes outside of your "real" score (either before or after it). See Chapter 3 of the Notation manual.
Note: the \line { \score { ... } }
constructs can be changed to just \score { ... }
, as an anonymous user (whose edit was rejected by other users) correctly pointed out. Having built and tested the answer incrementally, I didn't check if it was a minimal solution to the problem. The \line
macros may have some value as self-documentation of the input.