@c -*-texinfo-*- @node Invoking LilyPond @chapter Invoking LilyPond @menu * Reporting bugs:: * Website:: * Point and click:: * Invoking ly2dvi:: Titling LilyPond scores. @end menu @cindex Invoking LilyPond @cindex command line options @cindex options, command line @cindex switches Usage: @example lilypond [@var{option}]@dots{} @var{file}@dots{} @end example When invoked with a filename that has no extension, the @file{.ly} extension is tried first. To read input from stdin, use a dash @code{-} for @var{file}. When @file{filename.ly} is processed it will produce @file{filename.tex} as output (or @file{filename.ps} for PostScript output). If @file{filename.ly} contains more than one @code{\score} block, then the rest of the scores will be output in numbered files, starting with @file{filename-1.tex}. Several files can be specified; they will each be processed independently. @footnote{The status of GUILE is not reset across invocations, so be careful not to change any default settings from within Scheme .} @section Command line options The following options are supported: @table @code @item -e,--evaluate=@var{expr} 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 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 ly2dvi), @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). @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 @item -h,--help Show a summary of usage. @item --include, -I=@var{directory} Add @var{directory} to the search path for input files. @cindex file searching @cindex search path @item -i,--init=@var{file} Set init file to @var{file} (default: @file{init.ly}). @item -m,--no-paper @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 @item -v,--version Show version information @item -V,--verbose Be verbose: show full paths of all files read, and give timing information. @item -w,--warranty Show the warranty with which GNU LilyPond comes. (It comes with @strong{NO WARRANTY}!) @end table @section Environment variables For processing both the @TeX{} and the PostScript output, the appropriate environment variables must be set. The following scripts do this: @itemize @bullet @item @file{buildscripts/out/lilypond-profile} (for SH shells) @item @file{buildscripts/out/lilypond-login} (for C-shells) @end itemize They should normally be sourced as part of the login process. If these scripts are not run from the system wide login process, then you must run it yourself. @cindex installing LilyPond If you use sh, bash, or a similar shell, then add the following to your @file{.profile} @example . lilypond-profile @end example If you use csh, tcsh or a similar shell, then add the following to your @file{~/.login} @example source lilypond-login @end example These scripts set the following variables @table @code @item TEXMF To make sure that @TeX{} and lilypond find data files (among others @file{.tex}, @file{.mf} and @file{.tfm}), you have to set @code{TEXMF} to point to the lilypond data file tree. A typical setting would be @example @{/usr/share/lilypond/1.6.0,@{!!/usr/share/texmf@}@} @end example @item GS_LIB For processing PostScript output (obtained with @code{-f ps}) with Ghostscript you have to set @code{GS_LIB} to point to the directory containing library PS files. @item GS_FONTPATH For processing PostScript output (obtained with @code{-f ps}) with Ghostscript you have to set @code{GS_FONTPATH} to point to the directory containing PFA files. When you print direct PS output, remember to send the PFA files to the printer as well. @end table @cindex ghostscript @cindex PostScript @cindex GS_FONTPATH @cindex GS_LIB @cindex TEXMF @cindex printing postscript The binary itself recognizes the following environment variables @table @code @item LILYPONDPREFIX This specifies a directory where locale messages and data files will be looked up by default. The directory should contain subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc. @item LANG This selects the language for the warning messages @end table @cindex LANG @cindex LILYPONDPREFIX @cindex bugs @cindex reporting bugs @node Reporting bugs @section Reporting bugs Since there is no finder's fee which doubles every year, there is no need to wait for the prize money to grow. Send a bug report today! Development moves quickly, so if you have a problem, it is wise to check if it has been fixed in a newer release. If not, please send in a bugreport. When you send us a bugreport, we have to diagnose the problem and if necessary, duplicate it. To make this possible, it is important that you include the following information in your report: @itemize @bullet @item A sample input which causes the error. Please have mercy on the developers, send a @emph{small} sample file. @item The version number @item A description of the platform you use (i.e., operating system, system libraries, whether you downloaded a binary release) @item If necessary, send a description of the bug itself. If you include output a ly2dvi run, please use @code{--debug} option of ly2dvi. @end itemize You can send the report to @email{bug-lilypond@@gnu.org}. This is a mailinglist, but you do not have to be subscribed to it to post. @node Website @section Website If you are reading this manual in print, it is possible that the website contains updates to the manual. You can find the website at @uref{http://www.lilypond.org/}. @node Point and click @section Point and click @cindex poind and click 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 error in the sheet music. To use it, you need the following software @itemize @bullet @item A dvi viewer that supports src specials. @itemize @bullet @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}. @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}. Apparently, KDVI does not process PostScript specials correctly. Beams and slurs will not be visible in KDVI. @cindex Xdvi @cindex KDVI @cindex KDE @end itemize @item An editor with a client/server interface (or a lightweight GUI editor). @cindex editor @itemize @bullet @item Emacs. Emacs is an extensible text-editor. It is available from @uref{http://www.gnu.org/software/emacs/}. You need version 21 to use column location. @c move this elsewhere? There is also support for emacs: lilypond-mode for emacs provides indentation, autocompletion, syntax coloring, handy compile short-cuts and reading Info documents of lilypond inside emacs. If lilypond-mode is not installed on your platform, then refer to the installation instructions for more information. @cindex emacs @cindex emacs mode @cindex lilypond-mode for emacs @cindex syntax coloring @item XEmacs. Xemacs is very similar to emacs. @cindex XEmacs @item NEdit. NEdit runs under Windows, and Unix. It is available from @uref{http://www.nedit.org}. @cindex NEdit @item GVim. GVim is a GUI variant of VIM, the popular VI clone. It is available from @uref{http://www.vim.org}. @cindex GVim @cindex Vim @end itemize @end itemize Xdvi must be configured to find the @TeX{} fonts and music fonts. Refer to the Xdvi documentation for more information. To use point-and-click, add one of these lines to the top of your .ly file. @example #(ly:set-point-and-click 'line) @end example @cindex line-location When viewing, Control-Mousebutton 1 will take you to the originating spot in the @file{.ly} file. Control-Mousebutton 2 will show all clickable boxes. If you correct large files with point-and-click, be sure to start correcting at the end of the file. When you start at the top, and insert one line, all following locations will be off by a line. @cindex Emacs For using point-and-click with emacs, add the following In your emacs startup file (usually @file{~/.emacs}), @example (server-start) @end example Make sure that the environment variable @var{XEDITOR} is set to @example emacsclient --no-wait +%l %f @end example @cindex @var{XEDITOR} If you use xemacs instead of emacs, you use @code{(gnuserve-start)} in your @file{.emacs}, and set @code{XEDITOR} to @code{gnuclient -q +%l %f} For using Vim, set @code{XEDITOR} to @code{gvim --remote +%l %f}, or use this argument with Xdvi's @code{-editor} option. @cindex NEdit For using NEdit, set @code{XEDITOR} to @code{nc -noask +%l %f}, or use this argument with Xdvi's @code{-editor} option. If can also make your editor jump to the exact location of the note you clicked. This is only supported on Emacs and VIM. Users of Emacs version 20 must apply the patch @file{emacsclient.patch}. Users of version 21 must apply @file{server.el.patch} (version 21.2 and earlier). At the top of the @code{ly} file, replace the @code{set-point-and-click} line with the following line, @example #(ly:set-point-and-click 'line-column) @end example @cindex line-colomn-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. @node Invoking ly2dvi @section Invoking ly2dvi Nicely titled output is created through a separate program: @file{ly2dvi} is a script that uses LilyPond and La@TeX{} to create a nicely titled piece of sheet music, in DVI format or PostScript. @example ly2dvi [@var{option}]@dots{} @var{file}@dots{} @end example To have ly2dvi read from stdin, use a dash @code{-} for @var{file}. Ly2dvi supports the following options: @table @code @item -k,--keep Keep the temporary directory including LilyPond and ly2dvi output files. The temporary directory is created in the current directory as @code{ly2dvi.dir}. @item -d,--dependencies Write @code{Makefile} dependencies for every input file. @item -h,--help Print usage help. @item -I,--include=@var{dir} Add @var{dir} to LilyPond's include path. @item -m,--no-paper Produce MIDI output only. @item --no-lily Do not run LilyPond; useful for debugging ly2dvi. @item -o,--output=@var{file} Generate output to @var{file}. The extension of @var{file} is ignored. @item -P,--postscript Also generate PostScript output, using dvips. The postscript uses the standard @TeX{} bitmap fonts for your printer. @item -p,--pdf Also generate Portable Document Format (PDF). This option will generate a PS file using scalable fonts, and will run the PS file through @code{ps2pdf} producing a PDF file. @cindex PDF @cindex Scalable fonts 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 Gzip the postscript files @item --html Make a .HTML file with links to all output files. @item --preview Also generate a picture of the first system of the score. @cindex preview @cindex picture @cindex bitmap @cindex pixmap @cindex thumbnail @cindex screenshot @item -s,--set=@var{key}=@var{val} Add @var{key}= @var{val} to the settings, overriding those specified in the files. Possible keys: @code{language}, @code{latexheaders}, @code{latexpackages}, @code{latexoptions}, @code{papersize}, @code{pagenumber}, @code{linewidth}, @code{orientation}, @code{textheight}. @item -v,--version Show version information . @item -V,--verbose Be verbose. @item --debug Print even more information. This is useful when generating bugreports. @item -w,--warranty Show the warranty with which GNU LilyPond comes. (It comes with @strong{NO WARRANTY}!) @end table @subsection Titling layout Ly2dvi extracts the following header fields from the LY files to generate titling. An example demonstrating all these fields is in @inputfileref{input/test,ly2dvi-testpage.ly}. @table @code @item title The title of the music. Centered on top of the first page. @item subtitle Subtitle, centered below the title. @item poet Name of the poet, left flushed below the subtitle. @item composer Name of the composer, right flushed below the subtitle. @item meter Meter string, left flushed below the poet. @item opus Name of the opus, right flushed below the composer. @item arranger Name of the arranger, right flushed below the opus. @item instrument Name of the instrument, centered below the arranger @item dedication To whom the piece is dedicated. @item piece Name of the piece, left flushed below the instrument @item head A text to print in the header of all pages. It is not called @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. @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}''. @end table @cindex header @cindex footer @cindex page layout @cindex titles @subsection Additional parameters Ly2dvi responds to several parameters specified in a @code{\paper} section of the input file. They can be overridden by supplying a @code{--set} command line option. @table @code @item language Specify La@TeX{} language: the @code{babel} package will be included. Default: unset. Read from the @code{\header} block. @item latexheaders Specify additional La@TeX{} headers file. Normally read from the @code{\header} block. Default value: empty @item latexpackages Specify additional La@TeX{} packages file. This works cumulative, so you can add multiple packages using multiple @code{-s=latexpackages} options. Normally read from the @code{\header} block. Default value: @code{geometry}. @item latexoptions Specify additional options for the La@TeX{} @code{\documentclass}. You can put any valid value here. This was designed to allow ly2dvi to produce output for double-sided paper, with balanced margins and pagenumbers on alternating sides. To achieve this specify @code{twoside} @item orientation Set orientation. Choices are @code{portrait} or @code{landscape}. Is read from the @code{\paper} block, if set. @item textheight The vertical extension of the music on the page. It is normally calculated automatically, based on the paper size. @item linewidth The music line width. It is normally read from the @code{\paper} block. @item papersize The paper size (as a name, e.g. @code{a4}). It is normally read from the @code{\paper} block. @item pagenumber If set to @code{no}, no page numbers will be printed. If set to a positive integer, start with this value as the first page number. @item fontenc The font encoding, should be set identical to the @code{font-encoding} property in the score. @end table