# todo: add latex.
PDF_FILES = $(TELY_FILES:%.tely=$(outdir)/%.pdf)
-INFO_DOCS = lilypond lilypond-internals music-glossary lilypond-program
+INFO_DOCS = lilypond lilypond-internals music-glossary lilypond-program lilypond-learning
INFO_FILES = $(INFO_DOCS:%=$(outdir)/%.info)
STEPMAKE_TEMPLATES=tex texinfo omf documentation
-$(INSTALL) -d $(DESTDIR)$(package_infodir)
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
+ -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-learning.info
install-info --info-dir=$(infodir) $(outdir)/lilypond.info
(cd $(package_infodir) && ln -sf $(webdir)/Documentation/user/*png .)
endif
-$(INSTALL) -d $(DESTDIR)$(package_infodir)
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond.info
-install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-program.info
+ -install-info --remove --info-dir=$(infodir) $(outdir)/lilypond-learning.info
install-info --info-dir=$(infodir) $(outdir)/lilypond.info
@echo
@echo "***************************************************************"
# symbolic links to save space
(cd $(outdir)/lilypond-program/ ; ln -sf ../*.png ../*.ly . )
+#
+# The Learning Manual
+#
+$(outdir)/lilypond-learning/index.html: $(outdir)/lilypond-learning.texi $(OUT_PNG_IMAGES) $(OUT_EPS_IMAGES)
+ mkdir -p $(dir $@)
+ $(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond-learning --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
+ find $(outdir)/lilypond-learning/ -name '*'.png -o -name '*'.ly | xargs rm -f
+# symbolic links to save space
+ (cd $(outdir)/lilypond-learning/ ; ln -sf ../*.png ../*.ly . )
+
+
#
# One big page program usage
#
$(outdir)/lilypond-program-big-page.html: $(outdir)/lilypond-program.texi $(OUT_PNG_IMAGES)
$(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
+#
+# One big page learning manual
+#
+$(outdir)/lilypond-learning-big-page.html: $(outdir)/lilypond-learning.texi $(OUT_PNG_IMAGES)
+ $(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split -D bigpage --no-headers $<
+
+
+
#
# The split internals reference
$(outdir)/lilypond-program.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
+$(outdir)/lilypond-learning.pdf: $(OUT_PDF_IMAGES) $(OUT_PNG_IMAGES)
+
$(outdir)/%.png: %.png
convert -depth 8 -geometry 50x50% $< $@
$(outdir)/lilypond/index.html\
$(outdir)/lilypond-internals/index.html\
$(outdir)/music-glossary/index.html\
- $(outdir)/lilypond-program/index.html
+ $(outdir)/lilypond-program/index.html\
+ $(outdir)/lilypond-learning/index.html
# Symlinks to refer to external source documents from split and non-split HTML
-source-links = $(outdir)/source $(outdir)/lilypond/source $(outdir)/music-glossary/source $(outdir)/lilypond-program/source
+source-links = $(outdir)/source $(outdir)/lilypond/source $(outdir)/music-glossary/source $(outdir)/lilypond-program/source $(outdir)/lilypond-learning/source
$(outdir)/source:
@rm -f $(@)
mkdir -p $(outdir)/lilypond-program
ln -sf ../../../ $(@)
+$(outdir)/lilypond-learning/source:
+ @rm -f $(@)
+ mkdir -p $(outdir)/lilypond-learning
+ ln -sf ../../../ $(@)
local-WWW: $(HTML_FILES) $(DEEP_HTML_FILES)\
$(datafiles) $(PDF_FILES) $(source-links) info info-dir
info-dir:
- $(SHELL) $(buildscript-dir)/install-info-html.sh --dir=$(outdir) lilypond lilypond-internals music-glossary lilypond-program
+ $(SHELL) $(buildscript-dir)/install-info-html.sh --dir=$(outdir) lilypond lilypond-internals music-glossary lilypond-program lilypond-learning
$(outdir)/%.bib: %.bib
E-natural, and an F-natural,} regardless of the key
signature. For more information about the distinction between
musical content and the presentation of that content, see
-@ref{Accidentals and key signatures}.
+@rlearning{Accidentals and key signatures}.
@lilypond[fragment,quote,ragged-right,verbatim,relative]
\key d \major
Accidentals and key signatures often confuse new users, because
unaltered notes get natural signs depending on the key signature. For
-more information, see @ref{Accidentals}, or @ref{Accidentals and key signatures}.
+more information, see @ref{Accidentals}, or @rlearning{Accidentals
+and key signatures}.
@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
\key g \major
is a rather crude method of making objects disappear since it will affect
the entire staff. This method also influences the spacing, which may or
may not be desirable. A more
-sophisticated method of blanking objects is shown in @ref{Common tweaks}.
+sophisticated method of blanking objects is shown in @rlearning{Common tweaks}.
The next example shows a practical application. Bar lines and time
signatures are normally synchronized across the score. This is done
We have been talking of @emph{the} @code{Fingering} object, but actually it
does not amount to much. The initialization file (see
-@ref{Default files})
+@rlearning{Default files})
@file{scm/@/define@/-grobs@/.scm} shows the soul of the @q{object},
@example
some key concepts in easy terms. It is recommended to read these
chapters in a linear fashion.
+
@itemize @bullet
@item
assumes that readers are familiar with the concepts in the Learning
manual.
+All of this needs to be rewritten after GDP, anyway.
+
+@ignore
+
@itemize @bullet
@item
-@emph{@ref{Basic notation}},
+@emph{@r ef{Basic notation}},
discusses topics grouped by notation construct. This section gives
details about basic notation that will be useful in almost any
notation project.
@item
-@emph{@ref{Instrument-specific notation}},
+@emph{@r ef{Instrument-specific notation}},
discusses topics grouped by notation construct. This section gives
details about special notation that will only be useful for particular
instrument (or vocal) groups.
@item
-@emph{@ref{Advanced notation}},
+@emph{@r ef{Advanced notation}},
discusses topics grouped by notation construct. This section gives
details about complicated or unusual notation.
@item
-@emph{@ref{Changing defaults}},
+@emph{@r ef{Changing defaults}},
explains how to fine tune layout.
@item
-@emph{@ref{Non-musical notation}},
+@emph{@r ef{Non-musical notation}},
discusses non-musical output such as titles, multiple movements,
and how to select which MIDI instruments to use.
@item
-@emph{@ref{Spacing issues}},
+@emph{@r ef{Spacing issues}},
discusses issues which affect the global output, such as selecting
paper size or specifying page breaks.
@item
-@emph{@ref{Interfaces for programmers}},
+@emph{@r ef{Interfaces for programmers}},
explains how to create music functions.
@end itemize
@ifhtml
The
@end ifhtml
-@emph{@ref{Literature list}},
+@emph{@r ef{Literature list}},
contains a set of useful reference books for those who wish to know
more on notation and engraving.
@item
The
-@emph{@ref{Scheme tutorial}},
+@emph{@r ef{Scheme tutorial}},
presents a short introduction to Scheme, the programming
language that music functions use.
@item
-@emph{@ref{Notation manual tables}},
+@emph{@r ef{Notation manual tables}},
are a set of tables showing the chord names, MIDI instruments,
a list of color names, and the Feta font.
@item
-@emph{@ref{Templates}},
+@emph{@r ef{Templates}},
of LilyPond pieces. Just cut and paste a
template into a file, add notes, and you're done!
@item
The
-@emph{@ref{Cheat sheet}},
+@emph{@r ef{Cheat sheet}},
is a handy reference of the most common LilyPond commands.
@item
The
-@emph{@ref{LilyPond command index}},
+@emph{@r ef{LilyPond command index}},
is an index of all LilyPond @code{\commands}.
@item
The
-@emph{@ref{LilyPond index}},
+@emph{@r ef{LilyPond index}},
is a complete index.
@end itemize
+@end ignore
@subheading Program usage
--- /dev/null
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+ Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+ When revising a translation, copy the HEAD committish of the
+ version that you are working on. See TRANSLATION for details.
+@end ignore
+@setfilename lilypond-learning.info
+@settitle GNU LilyPond Learning Manual
+@documentencoding UTF-8
+@documentlanguage en
+
+@iftex
+@afourpaper
+@c don't replace quotes with directed quotes
+@tex
+\gdef\SETtxicodequoteundirected{Foo}
+\gdef\SETtxicodequotebacktick{Bla}
+@end tex
+@end iftex
+
+
+@c don't remove this comment.
+@ignore
+@omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival
+@omfdescription User manual of the LilyPond music engraving system
+@omftype program usage
+@omfcategory Applications|Publishing
+@omflanguage English
+@end ignore
+
+
+@ifhtml
+This document is also available as a
+@uref{source/Documentation/user/lilypond-learning.pdf,PDF} and as
+@uref{source/Documentation/user/lilypond-learning-big-page.html,one big page}.
+@end ifhtml
+
+
+@c This produces the unified index
+@syncodeindex fn cp
+@syncodeindex vr cp
+
+
+@finalout
+
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{Learning Manual}
+@author The LilyPond development team
+
+
+Copyright @copyright{} 1999--2007 by the authors
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+
+@vskip 20pt
+
+@lilypond[ragged-right]
+\score {
+ \context Lyrics {
+ \override Score.RehearsalMark #'self-alignment-X = #LEFT
+ \override Score.RehearsalMark #'font-size = #-2
+ \mark #(ly:export (string-append
+ "(For LilyPond version " (lilypond-version) ")"))
+ s2
+ }
+ \layout {
+ indent = 0.0\pt
+ }
+}
+@end lilypond
+
+@end titlepage
+
+@copying
+Copyright @copyright{} 1999--2007 by the authors
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+@end copying
+
+@ifnottex
+This file documents GNU LilyPond program usage.
+
+Copyright 1999--2007 by the authors
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+@end ifnottex
+
+@ifnottex
+@node Top
+@top GNU LilyPond --- learning manual
+@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
+
+This is the program usage manual for GNU LilyPond 2.11.x series.
+@ifhtml
+(See the bottom of this page for the exact version number).
+@end ifhtml
+
+@cindex web site
+@cindex URL
+
+More information can be found at
+@uref{http://@/www@/.lilypond@/.org/}. The website contains on-line copies
+of this and other documentation.
+
+@menu
+* Preface:: Preface.
+* Introduction:: What, Why, How.
+* Tutorial:: A tutorial introduction.
+* Putting it all together:: More explanation about LilyPond
+* concepts.
+* Working on LilyPond projects:: Discusses real-life usage.
+* Tweaking output:: Introduction to modifying output.
+
+Appendices
+
+* GNU Free Documentation License:: License of this document.
+* LilyPond index::
+@end menu
+@end ifnottex
+
+@contents
+
+
+@include macros.itexi
+
+@include preface.itely
+@include introduction.itely
+@include tutorial.itely
+@include putting.itely
+@include working.itely
+@include tweaks.itely
+
+@include fdl.itexi
+
+@node LilyPond index
+@appendix LilyPond index
+
+@printindex cp
+
+@bye
@include dedication.itely
@menu
-Learning Manual
-
-* Preface:: Preface.
-* Introduction:: What, Why, How.
-* Tutorial:: A tutorial introduction.
-* Putting it all together:: More explanation about LilyPond concepts.
-* Working on LilyPond projects:: Discusses real-life usage.
-* Tweaking output:: Introduction to modifying output.
-
Notation Reference
* Basic notation:: Standard musical notation.
@include macros.itexi
-@include preface.itely
-@include introduction.itely
-@include tutorial.itely
-@include putting.itely
-@include working.itely
-@include tweaks.itely
@include basic-notation.itely
@include instrument-notation.itely
@ref{\NAME\,,,lilypond-big-page}
@end macro
+@macro rlearning{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-learning-big-page}
+@end macro
+
@end ifset
@ref{\NAME\,,,lilypond}
@end macro
+@macro rlearning{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-learning}
+@end macro
+
@end ifclear
@ref{\NAME\,,,lilypond}
@end macro
+@macro rlearning{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-learning}
+@end macro
+
+@c to get decent quotes in `foo'
@c to get decent quotes in `foo'
@macro q{TEXT}
@xml
@inforef{\NAME\}
@end macro
+@macro learningref{NAME}
+@inforef{\NAME\}
+@end macro
+
@macro rprogram{NAME}
@vindex \NAME\
@ref{\NAME\,,,lilypond-program}
@ref{\NAME\,,,lilypond}
@end macro
+@macro rlearning{NAME}
+@vindex \NAME\
+@ref{\NAME\,,,lilypond-learning}
+@end macro
+
+@c to get decent quotes in `foo'
@c to get decent quotes in `foo'
@macro q{TEXT}
`\TEXT\'
user manual, @internalsref{\NAME\}
@end macro
+@macro learningref{NAME}
+learning manual, @internalsref{\NAME\}
+@end macro
+
@macro rprogram{NAME}
program usage manual, @internalsref{\NAME\}
@end macro
@alias ruser=usermanref
+@alias rlearning=learningref
@c to get decent quotes in `foo'
@macro q{TEXT}
@macro usermanref{NAME}
@ref{\NAME\}
@end macro
+
+@macro learningref{NAME}
+@ref{\NAME\}
+@end macro
@end ifnotinfo
@end ifnottex
wish. However, this flexibility can make things confusing for
new users. This section will explain some of this structure, but
may gloss over some details in favor of simplicity. For a complete
-description of the input format, see @ref{File structure}.
+description of the input format, see @ruser{File structure}.
Most examples in this manual are little snippets -- for example
@code{pianorighthand}, or @code{foofoobarbaz}. You
can use whatever variable names you want. For
more details, see
-@ref{Saving typing with identifiers and functions}.
+@ruser{Saving typing with identifiers and functions}.
For a complete definition
-of the input format, see @ref{File structure}.
+of the input format, see @ruser{File structure}.
@node Score is a single musical expression
@section Score is a single musical expression
-In the previous section, @ref{How LilyPond files work},
+In the previous section, @ruser{How LilyPond files work},
we saw the general organization of LilyPond input
files. But we seemed to skip over the most important
part: how do we figure out what to write after
@noindent
You may find it useful to review
-@ref{Music expressions explained}. In that section, we
+@ruser{Music expressions explained}. In that section, we
saw how to build big music expressions from small
pieces -- we started from notes, then chords, etc. Now
we're going to start from a big music expression and
@noindent
Remember that you can use almost any name you like. The
limitations on identifier names are detailed in
-@ref{File structure}.
+@ruser{File structure}.
When writing a @code{\score} section, or when reading
one, just take it slowly and carefully. Start with
@end lilypond
More in-depth information on preparing parts and scores can be found
-in the notation manual; see @ref{Orchestral music}.
+in the notation manual; see @ruser{Orchestral music}.
Setting run-time variables (@q{properties}) is discussed in
-@ref{Changing context properties on the fly}.
+@ruser{Changing context properties on the fly}.
@end lilypond
-In the introduction (see @ref{Engraving}), it was explained that stem
+In the introduction (see @rlearning{Engraving}), it was explained that stem
directions influence spacing. This is controlled with the
@code{stem-spacing-correction} property in the
@internalsref{NoteSpacing}, object. These are generated for every
By cutting and pasting everything in the @qq{ly snippet} section, you have a
starting template for experiments. If you like learning in this way,
you will probably want to print out or bookmark the
-@ref{Cheat sheet}, which is a table listing of the most common
+@ruser{Cheat sheet}, which is a table listing of the most common
commands for quick reference.
@end ifhtml
@quotation
@table @asis
@item Entering pitches and durations
-see @ref{Pitches}, and @ref{Durations}.
+see @ruser{Pitches}, and @ruser{Durations}.
@item Rests
-see @ref{Rests}.
+see @ruser{Rests}.
@item Time signatures and other timing commands
-see @ref{Time signature}.
+see @ruser{Time signature}.
@item Clefs
-see @ref{Clef}.
+see @ruser{Clef}.
@end table
@end quotation
@end itemize
There are more tips for constructing input files in
-@ref{Suggestions for writing LilyPond files}.
+@ruser{Suggestions for writing LilyPond files}.
@node How to read the tutorial
@subsection How to read the tutorial
-As we saw in @ref{Working on text files}, LilyPond input must be
+As we saw in @ruser{Working on text files}, LilyPond input must be
surrounded by @{ @} marks or a @code{\relative c'' @{ ... @}}. For the
rest of this manual, most examples will omit this.
@node Relative note names
@subsection Relative note names
-As we saw in @ref{Simple notation}, LilyPond calculates the pitch of
+As we saw in @ruser{Simple notation}, LilyPond calculates the pitch of
each note relative to the previous one@footnote{There is another mode of
-entering pitches, @ref{Absolute note names}, but in practice relative
+entering pitches, @ruser{Absolute note names}, but in practice relative
mode is much easier and safer to use.}. If no extra octave marks
(@code{'} and @code{,}) are added, it assumes that each pitch is within
a fourth of the previous note.
@quotation
@table @asis
@item Relative octaves
-see @ref{Relative octaves}.
+see @ruser{Relative octaves}.
@item Octave check
-see @ref{Octave check}.
+see @ruser{Octave check}.
@end table
@end quotation
made by adding @samp{isis} or @samp{eses}@footnote{This syntax
derived from note naming conventions in Nordic and Germanic languages,
like German and Dutch. To use other names for accidentals, see
-@ref{Note names in other languages}.}
+@ruser{Note names in other languages}.}
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
cis1 ees fisis, aeses
Adding all alterations explicitly might require a little more effort
when typing, but the advantage is that transposing is easier, and
accidentals can be printed according to different conventions. See
-@ref{Automatic accidentals}, for some examples how accidentals can be printed
+@ruser{Automatic accidentals}, for some examples how accidentals can be printed
according to different rules.
@moreinfo
@quotation
@table @asis
@item Accidentals
-see @ref{Accidentals}, and @ref{Automatic accidentals}.
+see @ruser{Accidentals}, and @ruser{Automatic accidentals}.
@item Key signature
-see @ref{Key signature}.
+see @ruser{Key signature}.
@end table
@end quotation
@quotation
@table @asis
@item Ties
-see @ref{Ties}.
+see @ruser{Ties}.
@item Slurs
-see @ref{Slurs}.
+see @ruser{Slurs}.
@item Phrasing slurs
-see @ref{Phrasing slurs}.
+see @ruser{Phrasing slurs}.
@end table
@end quotation
@quotation
@table @asis
@item Articulations
-see @ref{Articulations}.
+see @ruser{Articulations}.
@item Fingering
-see @ref{Fingering instructions}.
+see @ruser{Fingering instructions}.
@item Dynamics
-see @ref{Dynamics}.
+see @ruser{Dynamics}.
@end table
@end quotation
@quotation
@table @asis
@item Automatic beams
-see @ref{Automatic beams}.
+see @ruser{Automatic beams}.
@item Manual beams
-see @ref{Manual beams}.
+see @ruser{Manual beams}.
@end table
@end quotation
@quotation
@table @asis
@item Grace notes
-see @ref{Grace notes},
+see @ruser{Grace notes},
@item Tuplets
-see @ref{Tuplets},
+see @ruser{Tuplets},
@item Pickups
-see @ref{Partial measures}.
+see @ruser{Partial measures}.
@end table
@end quotation
@node Multiple staves
@subsection Multiple staves
-As we saw in @ref{Music expressions explained}, LilyPond input files
+As we saw in @ruser{Music expressions explained}, LilyPond input files
are constructed out of music expressions. If the score begins with
simultaneous music expressions, LilyPond creates multiples staves. However,
it is easier to see what happens if we create each staff explicitly.
Time signatures entered in one staff affects all other
staves@footnote{This behavior may be changed if desired; see
-@ref{Polymetric notation}, for details.}. On the other hand,
+@ruser{Polymetric notation}, for details.}. On the other hand,
the key signature of one staff does @emph{not} affect other
staves.
@cindex staff switch, manual
@cindex cross staff voice, manual
Piano music is typeset in two staves connected by a brace. Printing
-such a staff is similar to the polyphonic example in @ref{Multiple staves},
+such a staff is similar to the polyphonic example in @ruser{Multiple staves},
but now this entire expression is inserted inside a @code{PianoStaff}:
@example
@moreinfo
@quotation
-See @ref{Piano music}.
+See @ruser{Piano music}.
@end quotation
@moreinfo
@quotation
-See @ref{Basic polyphony}.
+See @ruser{Basic polyphony}.
@end quotation
@moreinfo
@quotation
More options, such as putting multiple stanzas below a melody, are
-discussed in @ref{Vocal music}.
+discussed in @ruser{Vocal music}.
@end quotation
@moreinfo
@quotation
A complete list of modifiers and other options for layout can be found
-in @ref{Chords}.
+in @ruser{Chords}.
@end quotation
The title, composer, opus number, and similar information are entered
in the @code{\header} block. This exists outside of the main
music expression; the @code{\header} block is usually placed underneath
-the @ref{Version number}.
+the @ruser{Version number}.
@example
\version "2.11.23"
@end example
When the file is processed, the title and composer are printed above
-the music. More information on titling can be found in @ref{Creating
+the music. More information on titling can be found in @ruser{Creating
titles}.
@subsection After the tutorial
After finishing the tutorial, you should probably try writing a
-piece or two. Start with one of the @ref{Templates}, and
+piece or two. Start with one of the @ruser{Templates}, and
add notes. If you need any notation that was not covered in the
tutorial, look at the Notation Reference, starting with
-@ref{Basic notation}. If you want to write for an instrument
+@ruser{Basic notation}. If you want to write for an instrument
ensemble that is not covered in the templates,
-take a look at @ref{Extending the templates}.
+take a look at @ruser{Extending the templates}.
Once you have written a few short pieces, read the rest of
the Learning Manual (chapters 3-5). There's nothing wrong
@node How to read the manual
@subsection How to read the manual
-As we saw in @ref{How to read the tutorial}, many examples in the
+As we saw in @ruser{How to read the tutorial}, many examples in the
tutorial omitted a @code{\relative c'' @{ ... @}} around the printed
example.
input that LilyPond used to generate this manual.
For information about the structure of the rest of the manual, see
-@ref{About this manual}.
+@ruser{About this manual}.
the next bit of text). To change the behavior of everything after
the command, omit the @code{\once}. To stop this tweak, use a
@code{\revert}. This is explained in depth in
-@ref{The \override command}.
+@ruser{The \override command}.
@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
% temporary code to break this example:
@seealso
-This manual: @ref{The \override command}, @ref{Common tweaks}.
+This manual: @ruser{The \override command}, @ruser{Common tweaks}.
@node Fixing overlapping notation
@section Fixing overlapping notation
-In @ref{Moving objects}, we saw how to move a @code{TextScript}
+In @ruser{Moving objects}, we saw how to move a @code{TextScript}
object. The same mechanism can be used to move other types of
objects; simply replace @code{TextScript} with the name of
another object.
To find the object name, look at the @q{@strong{see also}} at
bottom of the relevant documentation page. For example, at
-the bottom of @ref{Dynamics}, we see
+the bottom of @ruser{Dynamics}, we see
@quotation
@seealso
context handles a certain object. Since the @code{MetronomeMark} object
is handled in the @code{Score} context, property changes in the
@code{Voice} context will not be noticed. For more details, see
-@ref{Constructing a tweak}.
+@ruser{Constructing a tweak}.
@cindex extra-offset
When investigating layout issues, @code{annotate-spacing} is
an invaluable tool. This command prints the values of various
-layout spacing commands; see @ref{Displaying spacing}, for more
+layout spacing commands; see @ruser{Displaying spacing}, for more
details. From the output of @code{annotate-spacing}, we can
see which margins we may wish to alter.
@item
Alter the horizontal spacing via @code{SpacingSpanner}. See
-@ref{Changing horizontal spacing}, for more details.
+@ruser{Changing horizontal spacing}, for more details.
@lilypond[verbatim,quote]
\score {
commands like
@code{\override TextScript #'extra-offset = ( 1 . -1)}. But
we have even more power if we use Scheme. For a full explantion
-of this, see the @ref{Scheme tutorial}, and
-@ref{Interfaces for programmers}.
+of this, see the @ruser{Scheme tutorial}, and
+@ruser{Interfaces for programmers}.
We can use Scheme to simply @code{\override} commands,
using a few years ago. @code{convert-ly} requires you to declare
which version of LilyPond you used.
-@item @strong{Include checks}: @ref{Bar check}, @ref{Octave check}, and
-@ref{Barnumber check}. If you
+@item @strong{Include checks}: @ruser{Bar check}, @ruser{Octave check}, and
+@ruser{Barnumber check}. If you
include checks every so often, then if you make a mistake, you can pinpoint
it quicker. How often is @q{every so often}? It depends on the complexity
of the music. For very simple music, perhaps just once or twice. For
problems if you rearrange your music later.
@item @strong{Separate tweaks} from music definitions. See
-@ref{Saving typing with identifiers and functions}, and
-@ref{Style sheets}.
+@ruser{Saving typing with identifiers and functions}, and
+@ruser{Style sheets}.
@end itemize
only one bar per line of text), and
check each system when you finish it. You may use the
@code{showLastLength} command to speed up processing -- see
-@ref{Skipping corrected music}.
+@ruser{Skipping corrected music}.
@item Define @code{mBreak = @{ \break @}} and insert @code{\mBreak}
in the input file whenever the manuscript has a line break. This
@end example
@item @strong{Separate tweaks from music definitions}. This
-point was made in @ref{General suggestions}, but for large
+point was made in @ruser{General suggestions}, but for large
projects it is absolutely vital. We might need to change
the definition of @code{fthenp}, but then we only need
to do this once, and we can still avoid touching anything
@end lilypond
Using identifiers is also a good way to reduce work if the
-LilyPond input syntax changes (see @ref{Updating old files}). If
+LilyPond input syntax changes (see @ruser{Updating old files}). If
you have a single definition (such as @code{\dolce}) for all your
-files (see @ref{Style sheets}), then if the syntax changes, you
+files (see @ruser{Style sheets}), then if the syntax changes, you
only need to update your single @code{\dolce} definition,
instead of making changes throughout every @code{.ly} file.
@section Style sheets
The output that LilyPond produces can be heavily modified; see
-@ref{Tweaking output}, for details. But what if you have many
+@ruser{Tweaking output}, for details. But what if you have many
files that you want to apply your tweaks to? Or what if you
simply want to separate your tweaks from the actual music? This
is quite easy to do.
Let's look at an example. Don't worry if you don't understand
the parts with all the @code{#()}. This is explained in
-@ref{Advanced tweaks with Scheme}.
+@ruser{Advanced tweaks with Scheme}.
@lilypond[quote,verbatim,ragged-right]
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
@end lilypond
There are some problems with overlapping output; we'll fix those using
-the techniques in @ref{Moving objects}. But let's also
+the techniques in @ruser{Moving objects}. But let's also
do something about the @code{mpdolce} and @code{tempoMark}
definitions. They produce the output we desire, but we might want
to use them in another piece. We could simply copy-and-paste them
@code{bass} part until you find the problem line.
Another very useful debugging technique is constructing
-@ref{Minimal examples}.
+@ruser{Minimal examples}.
@node Minimal examples