+2002-07-31 Han-Wen <hanwen@cs.uu.nl>
+
+ * input/bugs/: remove various files.
+
+ * Documentation/user/refman.itely: doco updates.
+
+ * scripts/ly2dvi.py (find_pfa_fonts): add and document --pdf
+ option.
+
2002-07-30 Rune Zedeler <rune@zedeler.dk>
* ly/engraver-init.ly: add alias "Current" to all contexts.
@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.
-@item --preview
+ Also generate PostScript output, using dvips. The postscript uses
+the standard @TeX{} bitmap fonts for your printer.
+@item --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, don't use
+\use package[[T1]{fontenc} in the file header but don't forget
+\usepackage[[latin1]{inputenc} if you use any other non-anglosaxian
+characters.
+
+ @item --preview
Also generate a picture of the first system of the score.
@item -s,--set=@var{key}=@var{val}
Add @var{key}= @var{val} to the settings, overriding those specified
@table @code
@item LANG
selects the language for the warning messages of Ly2dvi and LilyPond.
+
+@item GUILE_MAX_SEGMENT_SIZE
+is an option for GUILE, the scheme interpreter; it sets the size of
+the chunks of memory allocated by GUILE. By increasing this from its
+default 8388608, the performance of LilyPond on large scores is
+slightly improved.
+
+
@end table
@end lilypond
+@refbugs
+
+Dot placement for chords is not perfect. In some cases, dots overlap:
+@lilypond[]
+ \context Voice { <f,4. c'' d e f> }
+@end lilypond
+
+
@node Ties
@subsection Ties
@cindex Staff notation
@menu
+* Staff symbol::
* Key signature::
* Clef::
* Time signature::
* Bar lines::
@end menu
+@node Staff symbol
+@subsection Staff symbol
+
+
+@cindex adjusting staff symbol
+@cindex StaffSymbol, using \property
+@cindex staff lines, setting number of
+
+
+The lines of the staff symbol are formed by the
+@internalsref{StaffSymbol} grob. This grob is created at the moment
+that their context is created. You can not change the appearance of
+the staff symbol by using @code{\override} or @code{\set}. At the
+moment that @code{\property Staff} is interpreted, a Staff context is
+made, and the StaffSymbol is created before any @code{\override} is
+effective. You can deal with this either overriding properties in a
+@code{\translator} definition, or by using @code{\outputproperty}.
+
+
+@refbugs
+
+If you end a staff half way a piece, the staff symbol may not end
+exactly on the barline.
+
+
@c . {Key}
@node Key signature
@subsection Key signature
c1 \mark \default
c1 \mark "12"
c1 \mark \default
- c1 \mark #'(music "scripts-segno")
c1
}
@end lilypond
@code{input/test/boxed-molecule.ly} if you need boxes around the
marks.
+The @code{\mark} command can also be used to put signs like coda,
+segno and fermatas on a barline. The trick is to use the text markup
+mechanism to access the fermata symbol.
+@lilypond[fragment,verbatim,relative=1]
+ c1 \mark #'(music "scripts-ufermata")
+ c1
+@end lilypond
+
+The problem is that marks that occur at a line break are typeset only
+at the beginning of the next line, opposite to what you want for the
+fermata. This can be corrected by the following property setting
+@example
+\property Score.RehearsalMark \override
+ #'visibility-lambda = #begin-of-line-invisible
+@end example
+
+@cindex fermatas
+@cindex coda
+@cindex segno
+@cindex barlines, putting symbols on
+
+
@node Bar numbers
@subsection Bar numbers
LilyPond may crash.
-@cindex adjusting staff symbol
-@cindex StaffSymbol, using \property
-@cindex staff lines, setting number of
-
-Some grobs are created at the moment that their context is created. An
-example of such a grob is the staff itself (i.e. the horizontal lines).
-You can not change the appearance of the staff symbol by manipulating
-@code{\property Staff.StaffSymbol}. At the moment that @code{\property
-Staff} is interpreted, a Staff context is made, and the StaffSymbol is
-created before any @code{\override} is effective. You can deal with this
-either overriding properties in a @code{\translator} definition, or by
-using @code{\outputproperty}.
-
-
@node Tuning per grob
The DVI file (@file{test.dvi}) contains the same sheet music in a
different format. DVI files are more easily processed by the computer,
-so viewing them usually is quicker. Execute @code{xdvi test.dvi}
-to view the DVI file.
+so viewing them usually is quicker. Execute @code{xdvi test.dvi} or
+@code{kdvi test.dvi} to view the DVI file. In Xdvi, the mouse buttons
+activate magnifying glasses. Unfortunately, variable symbols, such as
+beams and slurs won't show up in these.
If your DVI viewer does not have a "Print" button, you can print the
file by executing @code{lpr test.ps}.
@c volgende alinea schrappen?
-If you can't get the examples to print, then you should look into
-installing and configuring ghostscript. Refer to GhostScript's website
-at @uref{http://www.ghostscript.com}.
+If your system does not support printing PostScript files, then you
+can install GhostScript, a PostScript emulator. Refer to
+GhostScript's website at @uref{http://www.ghostscript.com}.
@cindex GhostScript
@cindex @code{lpr}
@cindex Printing output
@cindex PostScript
+@cindex PDF
+
+A final option, is to use the popular PDF format. You can get a PDF
+file by running @code{ly2dvi --pdf test.ly}. With the @code{--pdf},
+you will get a DVI, PS and PDF file. The viewers for the PS files also
+accept PDF files, but there are also many other applications for
+viewing PDF files.
+
+If you are familiar with @TeX{}, then one warning is in place: do not
+use other DVI drivers like @code{dvilj}. The @TeX{} coming out of
+LilyPond uses embedded PostScript code, and will not render correctly
+if you use anything different than @code{dvips}.
+
+@cindex dvips
+@cindex dvilj
+@cindex DVI driver
@unnumberedsubsec Windows users
Windows users start the terminal by clicking on the LilyPond or Cygwin
datadir=`echo "@local_lilypond_datadir@" | sed 's!//!/!g'`
else
if [ -d "$LILYPONDPREFIX/share" ]; then
- datadir=$LILYPONDPREFIX
+ datadir=$LILYPONDPREFIX/share/lilypond/
fi
echo "Setting tree to $datadir"
fi
+++ /dev/null
-\version "1.5.68"
-
-\header {
-texidoc = "Staves that end half way a system should end at the bar line."
-}
-
-melody = \notes \relative c' {
- \partial 8
- g8 |
- \bar "|."\clef bass
-}
-
-
-
-accompaniment = \chords \sequential {
- r8
- r2 r2
-}
-
-\score {
- \simultaneous {
- \context ChordNames \accompaniment
- \context Staff {
- \melody }
- }
- \paper { }
-}
+++ /dev/null
-
-
-u = { \translator Staff = up \stemDown }
-m = { \translator Staff = mid \stemUp }
-
-global = \notes { \key fis \major \time 6/8 }
-
-righta = \notes \transpose c'' {
- \repeat unfold 4 { \m [a,16 \u d a d] \m [c \u d c' d ] [c \m b,] [d \u d ] } ]
-}
-
-
-\score { \notes
- \context PianoStaff <
- \context Staff = up {
- \clef G \global \righta
- }
- \context Staff = mid {
- \clef F \global s2. *4
- }
- >
- \paper { }
-}
+++ /dev/null
-\version "1.5.68"
-
-\header {
-texidoc = " Spacing for one staff in polymetric music should
-be not hampered by a staff in another time signature.
-
-FIXME example was broken at some point.
-"
-}
-
-\score{
- \context PianoStaff <
- \context Staff = upper \notes\relative c''{
- \property Staff.timeSignatureFraction = #'(3 . 4)
- c4 c c
- c2.
-
- }
- \context Staff = lower \notes\relative c' {
- \property Staff.timeSignatureFraction = #'(4 . 4)
- c4 c c c
- c1
- }
- >
- \paper{
- linewidth=-1.0
- \translator {
- \ScoreContext
- \remove Timing_engraver
- }
- \translator {
- \StaffContext
- \consists Timing_engraver
- }
- }
-}
+++ /dev/null
-\version "1.5.68"
-
-\header {
- texidoc = "Dots should remain close to the heads they belong to, but should not overlap."
-}
-
-
-\score {
- \notes
- \context Voice { <f,4. c'' d e f> }
-}
+++ /dev/null
-\version "1.5.68"
-%% oops, weird small ties
-
-\score {
- \context Staff \notes <
- \time 3/8
- \context Voice=one \relative c'' {
- \property Voice.Stem \set #'direction = #1
- \property Voice.Tie \set #'direction = #1
- \property Voice.Slur \set #'direction = #1
- \property Voice.Slur \set #'attachment = #'(head . head)
- c8 c()c
- }
- \context Voice=two \relative c'' {
- \property Voice.Stem \set #'direction = #-1
- \property Voice.Tie \set #'direction = #-1
- \property Voice.Slur \set #'direction = #-1
- \property Voice.Slur \set #'attachment = #'(head . head)
- a8()a~a
- }
- >
- \paper { linewidth = -1. }
-% \paper { linewidth = 40*\staffspace }
-}
+++ /dev/null
-
-\header {
- texidoc = "Fermata on rest doesn't go up"
- }
-
-\score { \notes { r4-\fermata }}
+++ /dev/null
-\score{<
- \notes \relative c'' \context Staff=violin{
- \time 3/4
- b4. b8 a g |
- \grace a g8.^\trill fis32 g fis4 a8. a16 |
- }
- \notes \relative c'' \context Staff=violoncello{
- \time 3/4
- \clef tenor
-
- g8 d^\trill [g d c b] |
- \clef bass b8.^\trill a32 b a4 r |
- }
->
-\paper{
- linewidth=-1
-}
-}
-
('', '', 'preview', _("Make a picture of the first system.")),
(_ ('RES'), '', 'preview-resolution', _("Set the resolution of the preview to RES.")),
('', 'P', 'postscript', _ ("generate PostScript output")),
+ ('', '', 'pdf', _ ("generate PDF output")),
(_ ("KEY=VAL"), 's', 'set', _ ("change global setting KEY to VAL")),
('', 'V', 'verbose', _ ("verbose")),
('', 'v', 'version', _ ("print version number")),
if extra['orientation'] and extra['orientation'][0] == 'landscape':
opts = opts + ' -tlandscape'
+ if 'PDF' in targets:
+ opts = opts + '-Ppdf -G0 -u lilypond.map'
+
cmd = 'dvips %s -o%s %s' % (opts, outbase + '.ps', outbase + '.dvi')
quiet_system (cmd, 'dvips')
cmd = 'dvips -E -o%s %s' % ( outbase + '.preview.ps', outbase + '.preview.dvi')
quiet_system (cmd, 'dvips for preview')
+ if 'PDF' in targets:
+ cmd = 'ps2pdf %s.ps %s.pdf' % (outbase , outbase)
+ quiet_system (cmd, 'ps2pdf')
+
def get_bbox (filename):
# cut & paste
system ('gs -sDEVICE=bbox -q -sOutputFile=- -dNOPAUSE %s -c quit > %s.bbox 2>&1 ' % (filename, filename))
include_path.append (a)
elif o == '--postscript' or o == '-P':
targets.append ('PS')
+ elif o == '--pdf':
+ targets.append ('PDF')
+ targets.append ('PS')
elif o == '--keep' or o == '-k':
keep_temp_dir_p = 1
elif o == '--no-lily':