Tiny examples
What are “Tiny examples”?
A tiny example is an example from which nothing can be removed.
Why create them?
- The simpler the example is, the quicker potential helpers can understand it and help you.
- A tiny example demonstrates that you have put effort towards solving the problem yourself. When people send huge portions of input, it looks like they don’t care if we help them or not.
- Creating a tiny example helps you to understand what is happening. Many false problem reports can be avoided by attempting to create a tiny example; if you cannot replicate a “bug” in a tiny example, then the problem was probably an insufficient understanding of LilyPond, not an actual bug!
How to create them?
- Include the
\version
number. - Make it small! Examples about spacing or page layout might require many bars of music, but most issues can be reproduced using less than a single measure.
- When trying to create an example, try commenting out (
%
or%{ … %}
) sections of your file. If you can comment something while still demonstrating the main idea, then remove the commented-out material. - Avoid using complicated notes, keys or time signatures, unless the bug is about the behavior of those items.
- Do not use
\override
or\set
commands unless the bug is about those specific commands. - Use an attachment for your code while sending it to the mailing list – many e-mail programs don’t handle LilyPond input code well, scrambling newlines (which makes the code unreadable) or inserting non-breaking space characters (which makes the code uncompilable).
- Optionally, attach an image showing the desired graphical output.
How tiny should they be?
Is the code below a minimal example?
\version "2.14.1" \include "english.ly" \score { \new Staff { \key d \major \numericTimeSignature \time 2/4 <cs' d'' b''>16 <cs' d'' b''>8. %% Here: the tie on the D's looks funny %% Too tall? Left-hand endpoint is not aligned with the B tie? ~ <cs' d'' b''>8 [ <b d'' a''> ] } }
Well, it is not very big, but a truly minimal example is here:
\version "2.14.1" { % middle tie looks funny here: <c' d'' b''>8. ~ <c' d'' b''>8 }
Very few tiny examples exceed 10 lines of code - quite often 4 lines are enough to demonstrate the problem!