LilyPond Notation Reference: 5. Changing defaults

The purpose of LilyPond’s design is to provide the finest quality
output by default. Nevertheless, it may happen that you need to
change this default layout. The layout is controlled through a large
number of ‘knobs and switches’ collectively called ‘properties’.
A tutorial introduction to accessing and modifying these properties
can be found in the Learning Manual, see

Tweaking output.
This should be read first. This chapter covers similar ground, but
in a style more appropriate to a reference manual.

The definitive description of the controls available for tuning can
be found in a separate document:

the Internals Reference. That manual lists all the variables, functions and
options available in LilyPond. It is written as a HTML document,
which is available
and is also included with the LilyPond documentation package.

Internally, LilyPond uses Scheme (a LISP dialect) to provide
infrastructure. Overriding layout decisions in effect accesses the
program internals, which requires Scheme input. Scheme elements are
introduced in a ‘.ly’ file with the hash
mark #.1

Read more here: Source link