* Invoking the lilypond binary::
* Error messages::
* Reporting bugs::
+* Editor support::
* Point and click::
@end menu
@code{lilypond} [@var{option}]@dots{} @var{file}@dots{}
@end example
-To have @code{lilypond} read from stdin, use a dash @code{-} for @var{file}.
-
-The @code{lilypond} program supports the following options:
+To have @code{lilypond} read from stdin, use a dash @code{-} for
+@var{file}. The program supports the following options.
@table @code
@item -k,--keep
Keep the temporary directory with all output
files. The temporary directory is created in the current directory as @code{@code{lilypond}.dir}.
-@item -d,--dependencies
- Write @code{Makefile} dependencies for every input file.
@item -h,--help
Print usage help.
@item -I,--include=@var{dir}
@cindex PDF
@cindex Scalable fonts
-@c why is this comment here? --hwn
-
- If you use lilypond-book or your own wrapper files, do not use
-@code{\usepackage[[T1]@{fontenc@}} in the file header but do not forget
-@code{\usepackage[latin1]@{inputenc@}} if you use any other
-non-anglosaxian characters.
-
@item --png
Also generate pictures of each page, in PNG format.
@item --psgz
@cindex bitmap
@cindex pixmap
@cindex thumbnail
-@cindex screenshot
+@cindex screen shot
@item -s,--set=@var{key}=@var{val}
Add @var{key}= @var{val} to the settings, overriding those specified
Be verbose. This prints out commands as they are executed, and more
information about the formatting process is printed.
@item --debug
-Print even more information. This is useful when generating bugreports.
+Print even more information. This is useful when generating bug reports.
@item -w,--warranty
Show the warranty with which GNU LilyPond comes. (It comes with
@strong{NO WARRANTY}!)
@code{header}, because @code{\header} is a reserved word in LilyPond.
@item copyright
A text to print in the footer of the first page. Default is to
- print the standard footer also on the first page.
+ print the standard footer also on the first page. Note that if the
+ score consists of only a single page, the first page is also the
+ last page, and in this case, the tagline is printed instead of the
+ copyright.
@item footer
A text to print in the footer of all but the last page.
@item tagline
- Line to print at the bottom of last page. The default text is ``Lily
-was here, @var{version-number}''.
+ Line to print at the bottom of last page. The default text is ``Engraved
+by LilyPond @var{version-number}''.
@end table
Specify additional options for the La@TeX{}
@code{\documentclass}. You can put any valid value here. This was
designed to allow @code{lilypond} to produce output for double-sided
-paper, with balanced margins and pagenumbers on alternating sides. To
+paper, with balanced margins and page numbers on alternating sides. To
achieve this specify @code{twoside}.
@item orientation
@cindex switches
-The LilyPond system consists of two parts: a binary executable, which
-is responsible for the formatting functionality, and support scripts,
-which post-process the resulting output. Normally, the support scripts
-are called, which in turn invoke the @code{lilypond-bin}
-binary. However, @code{lilypond-bin} may be called directly as
-follows.
+The formatting system consists of two parts: a binary executable
+(@file{lilypond-bin}), which is responsible for the formatting
+functionality, and support scripts, which post-process the resulting
+output. Normally, the support scripts are called, which in turn invoke
+the @code{lilypond-bin} binary. However, @code{lilypond-bin} may be
+called directly as follows.
@example
lilypond-bin [@var{option}]@dots{} @var{file}@dots{}
GUILE is not reset across invocations, so be careful not to change any
system defaults from within Scheme.}
+We strongly advise against making LilyPond formatting available
+through a web server. That is, processing input from untrusted users,
+and returning the resulting PDF file. LilyPond is a big and complex
+program. It was not written with security in mind. Making it available
+to the outside world is a huge risk; consider the security
+implications of
+
+@verbatim
+ #(system "rm -rf /")
+ \score {
+ c4^#(ly:export (ly:gulp-file "/etc/passwd"))
+ }
+@end verbatim
+
@section Command line options
Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
Multiple @code{-e} options may be given, they will be evaluated
sequentially. The function @code{ly:set-option} allows for access to
-some internal variables. Use @code{-e '(ly:option-usage')} for more
+some internal variables. Use @code{-e '(ly:option-usage)'} for more
information.
@item -f,--format=@var{format}
@c
@c
Output format for sheet music. Choices are @code{tex} (for @TeX{}
-output, to be processed with plain @TeX{}, or through @code{lilypond}),
+output, to be processed with La@TeX{}, or through @code{lilypond}),
@code{pdftex} for PDF@TeX{} input, @code{ps} (for PostScript),
-@code{scm} (for a Scheme dump), @code{sk} (for Sketch) and @code{as}
-(for ASCII-art).
+@code{scm} (for a Scheme dump), @code{sk} (for Sketch).
@strong{This option is only for developers}. Only the @TeX{} output of
these is usable for real work.
@cindex output format, setting
@cindex Sketch output
-@cindex ASCII-art output
@cindex PDFTeX output
@cindex PostScript output
@cindex Scheme dump
@cindex MIDI
Disable @TeX{} output. If you have a @code{\midi} definition MIDI output
will be generated.
-@item -M,--dependencies
-Output rules to be included in Makefile.
@item -o,--output=@var{FILE}
Set the default output file to @var{FILE}.
-@ignore
@item -s,--safe
-Disallow untrusted @code{\include} directives, in-line
-Scheme evaluation, backslashes in @TeX{}, code.
-
-@strong{WARNING}: the @code{--safe} option has not been reviewed for a
-long time. Do not rely on it for automatic invocation (e.g. over the
-web). Volunteers are welcome to do a new audit.
-@end ignore
+Disallow untrusted @code{\include} directives, limit available in-line
+Scheme function, disable backslashes in @TeX{}, code.
@item -v,--version
Show version information.
Something is definitely wrong, and LilyPond cannot continue. This
happens rarely. The most usual cause is misinstalled fonts.
+@cindex trace, Scheme
@cindex call trace
@cindex Scheme error
@item Scheme error
There was some internal inconsistency. These error messages are
intended to help the programmers and debuggers. Usually, they can be
ignored. Sometimes, they come in such big quantities that they obscure
-other output. In this case, a bug-report should be filed.
+other output. In this case, file a bug-report.
+
+@item Aborted (core dumped)
+This signals a serious programming error that caused the program to
+crash. Such errors are considered critical. If you stumble on one,
+send a bugreport.
+
@end table
platform you run it. Send the report to
@email{bug-lilypond@@gnu.org}.
+@node Editor support
+@section Editor support
+
+@cindex editors
+@cindex vim
+@cindex emacs
+@cindex modes, editor
+@cindex syntax coloring
+@cindex coloring, syntax
+
+There is support from different editors for LilyPond.
+
+@table @asis
+@item Emacs
+ Emacs has a @file{lilypond-mode}, which provides keyword
+autocompletion, indentation, LilyPond specific parenthesis matching
+and syntax coloring, handy compile short-cuts and reading LilyPond
+manuals using Info. If lilypond-mode is not installed on your
+platform, then refer to the installation instructions for more
+information.
+
+@item VIM
+
+For @uref{http://www.vim.org,VIM}, a vimrc is supplied, along with
+syntax coloring tools. For more information, refer to the
+@ifhtml
+@uref{../../../topdocs/out-www/INSTALL.html,installation instructions}.
+@end ifhtml
+@ifnothtml
+installation instructions.
+@end ifnothtml
+
+
+For both editors, there is also a facility to jump in the input file
+to the source of errors in the graphical output. See @ref{Point and
+click}.
+
+@item JEdit
+
+There exists a plugin for @uref{http://www.jedit.org/,jEdit}. Refer to
+the @uref{http://lily4jedit.sourceforge.net,plugin website} for more
+information.
+
+@end table
+
@node Point and click
@section Point and click
-@cindex poind and click
+@cindex point and click
+
+@cindex source specials
+@cindex specials, source
Point and click lets you find notes in the input by clicking on them in
the Xdvi window. This makes it easier to find input that causes some
@item Xdvi, version 22.36 or newer. Available from
@uref{ftp://ftp.math.berkeley.edu/pub/Software/TeX/xdvi.tar.gz,ftp.math.berkeley.edu}.
- Most @TeX{} distributions ship with xdvik, which is always
- a few versions behind the official Xdvi. To find out which Xdvi you
- are running, try @code{xdvi -version} or @code{xdvi.bin -version}.
+ Most @TeX{} distributions ship with xdvik, which is always a few
+versions behind the official Xdvi. To find out which Xdvi you are
+running, try @code{xdvi -version} or @code{xdvi.bin -version}.
@item KDVI. A dvi viewer for KDE. You need KDVI from KDE 3.0 or
newer. Enable option @emph{Inverse search} in the menu @emph{Settings}.
@c move this elsewhere?
-There is also support for Emacs: lilypond-mode for Emacs provides
-keyword autocompletion, indentation, LilyPond specific parenthesis
-matching and syntax coloring, handy compile short-cuts and reading
-LilyPond manuals using Info. If lilypond-mode is not installed on
-your platform, then refer to the installation instructions for more
-information.
@cindex Emacs
@cindex Emacs mode
@example
#(ly:set-point-and-click 'line-column)
@end example
-@cindex line-colomn-location
+@cindex line-column-location
and set @code{XEDITOR} to @code{emacsclient --no-wait +%l:%c %f}. Vim
users can set @var{XEDITOR} to @code{gvim --remote +:%l:norm%c| %f}.
-
-@refbugs
-
-When you convert the @TeX{} file to PostScript using @code{dvips}, it
-will complain about not finding @code{src:X:Y} files. These complaints
-are harmless, and can be ignored.
-
-
-