--- /dev/null
+
+
+AUTHORS - who did what on GNU LilyPond?
+***************************************
+
+ This file lists authors of GNU LilyPond, and what they wrote. This
+list is alphabetically ordered.
+
+ * Tom Cato Amundsen <tomcato@xoommail.com>, cembalo-partita in
+ mudela, accordion symbols, some mudela-book.py
+
+ * Mats Bengtsson <matsb@s3.kth.se>,
+ `http://www.s3.kth.se/~matsb/' lots of testing, fixes, general
+ comments and contributions.
+
+ * Eric Bullinger <eric@aut.ee.ethz.ch>, accidental transposition.
+
+ * Laura Conrad (lconrad@world.std.com) fixes to abc2ly
+
+ * Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>, TeX
+ titling and lytodvi.sh
+
+ * Anthony Fok <foka@debian.org>, debian package: debian/*
+
+ * Bjoern Jacke <bjoern.jacke@gmx.de> german glossary stuff.
+
+ * Neil Jerram <nj104@cus.cam.ac.uk>. parts of
+ Documentation/Vocab*
+
+ * Donald Ervin Knuth, `http://www-cs-staff.stanford.edu/~knuth/'
+ mf/ital-*.mf (these were taken from the CM fonts)
+
+ * Michael Krause <m.krause@tu-harburg.de>, breathing signs
+
+ * Werner Lemberg <wl@gnu.org>, misc bugfixes, some Beam and Stem
+ code.
+
+ * David R. Linn <drl@vuse.vanderbilt.edu>, Mailing list
+ maintenance.
+
+ * Adrian Mariano <> Reference manual, tutorial fixes, glossary.
+
+ * Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+ `http://www.cs.uu.nl/~hanwen/' Main author (initials: HWN).
+
+ * Jan Nieuwenhuizen <janneke@gnu.org>,
+ `http://www.xs4all.nl/~jantien/' Main author (initials: JCN).
+
+ * Alexandre Oliva <oliva@dcc.unicamp.br>,
+ `http://sunsite.unicamp.br/~oliva/' testing
+
+ * Francois Pinard <pinard@iro.umontreal.ca>, parts of
+ Documentation/Vocab*, started internationalization stuff
+
+ * Stephen Peters <portnoy@ai.mit.edu>, pdfTeX support
+
+ * Glen Prideaux <glenprideaux@iname.com>, minor bug fix to
+ script used to generate doc++ documentation
+
+ * Roy R. Rankin <Roy.Rankin@alcatel.com.au>, major extension,
+ fixes to abc2ly, lilypond bug fixes
+
+ * Jeffrey B. Reed <daboys@austin.rr.com>, Windows-NT support.
+
+ * Shay Rojanski Some mudela source.
+
+ Your name could be here! If you want to fix something, do it, and
+send us a patch!
+
+
+pl 6.uu2
+ - bf: PS font selecting.
+
+pl 6.uu1
+ - bf: ls-latex
+ - mudela-book --no-pictures
+ - bf: ly2dvi
+ - convert-mudela: beamAuto moment syntax.
+
+pl 6.jcn3
+ - fixed scm output
+
+pl 6.jcn2
+ - half-baken ly-gulp-file in scm
+ - resurrected scm output through guile
+
+pl 5.mb1
+ - bf: version of init.sly, init.fly
+ - Clarify necessary version of texinfo
+ - bf: texi files, minor errors and syntax compatible with
+ older makeinfo
+
+pl 6.jcn1
+ - bf: scm output
+
+*******
+
pl 5.hwn2
- Bach preludes: mutopification
- dots are Directional_element too; use \property dotDirection
@Book{tyboni94:_noter_handb_i_tradit_noter,
- author = {B\"oje Tyboni},
+ author = {B\"orje Tyboni},
title = {Noter Handbok I Traditionell Notering},
publisher = {Gehrmans Musikf\"orlag},
year = 1994,
@unnumberedsubsec Introduction
-@itemize
+@itemize @bullet
@item @uref{DEDICATION.txt,Dedication}
@item @uref{../topdocs/out-www/AUTHORS.html, Authors}
@item @uref{../topdocs/out-www/README.html, Readme file}
@unnumberedsubsec Status
-@itemize
+@itemize @bullet
@item @uref{TODO.txt, Thing to do}
@item @uref{CHANGES.txt, Things recently done}
@end itemize
@end itemize
@unnumberedsubsec Logo:
-@itemize
+@itemize @bullet
@item @uref{../pictures/out-www/lelieblond.png, logo} in large size
@item @uref{../pictures/out-www/lelie-logo.png, logo} in medium size
@item @uref{../pictures/out-www/lelie-icon.png, logo} in small size
@unnumberedsubsec Music
-@itemize
+@itemize @bullet
@item @uref{http://www.geocities.com/Vienna/Studio/1714/} and
@uref{http://johnsankey.webjump.com/}
John Sankey has taken up the task of recording classical
@unnumberedsubsec Software
-@itemize
+@itemize @bullet
@item @uref{http://www.zib.de/Visual/software/doc++/index.html}
A documentation system for C++ sources, which is used for the
LilyPond sources.
@unnumberedsubsec Philosophy
-@itemize
+@itemize @bullet
@item @uref{http://www.gnu.org/}
LilyPond is part of the GNU Project. The GNU project is the name
of Richard Stallman's effort to create a freely available
@top
Miscellaneous texts
-@itemize
+@itemize @bullet
@item @uref{CHANGES-0.0.txt, Change logs from 0.0 till 0.1 }
@item @uref{CHANGES-0.1.txt, Change logs from 0.1 till 1.0 }
@item @uref{CHANGES-1.0.txt, Change logs from 1.0 till 1.1 }
@item @email{oliva@@dcc.unicamp.br, Alexandre Oliva},
@uref{http://sunsite.unicamp.br/~oliva/}
testing
-@item @email{pinard@@iro.umontreal.ca, Franc@,ois Pinard},
+@item @email{pinard@@iro.umontreal.ca, Francois Pinard},
parts of Documentation/Vocab*, started internationalization stuff
+@c urg: @c,{} in @email{} barfs.
@item @email{portnoy@@ai.mit.edu,Stephen Peters}, pdfTeX support
@item @email{glenprideaux@@iname.com, Glen Prideaux},
minor bug fix to script used to generate doc++ documentation
@item Bison (version 1.25 or newer).
Check out @uref{ftp://ftp.gnu.org/bison/,ftp://ftp.gnu.org/bison/}.
-@item Texinfo. Check out @uref{ftp://ftp.gnu.org/pub/texinfo/,ftp://ftp.gnu.org/pub/texinfo/}.
+@item Texinfo (version 4.0 or newer).
+Check out @uref{ftp://ftp.gnu.org/pub/texinfo/,ftp://ftp.gnu.org/pub/texinfo/}.
Most documentation is in texinfo.
@item The geometry package for LaTeX is needed to use ly2dvi.
@unnumbered LinuxPPC Bugs:
-@itemize
+@itemize @bullet
@item egcs-1.1.2-12c (stock LinuxPPC R5) has a serious bug, upgrade to
fixed in egcs-1.1.2-12f or gcc-2.95-0a, @uref{ftp://dev.linuxppc.org/users/fsirl/R5/RPMS/ppc/}
@unnumbered Linux-i386
-@itemize
+@itemize @bullet
@item SuSE6.2 and similar platforms (glibc 2.1, libstdc++ 2.9.0)
Lily will crash during parsing (which suggests a C++ library
@unnumbered Solaris:
-@itemize
+@itemize @bullet
@item Sparc64/Solaris 2.6, GNU make-3.77
GNU make-3.77 is buggy on this platform, upgrade to 3.78.1 or newer.
@unnumbered AIX
-@itemize
+@itemize @bullet
@item AIX 4.3 ld
The following is from the gcc install/SPECIFIC file.
@titlepage
-@title LilyPond
+@title LilyPond Reference Manual
@subtitle The GNU Project Typesetter
@author Han-Wen Nienhuys, Jan Nieuwenhuizen and Adrian Mariano
\input texinfo @c -*-texinfo-*-
-@setfilename reference-manual.info
-@settitle Reference Manual
+@setfilename mudela-book.info
+@settitle mudela-book Manual
+
+
+@titlepage
+@title mudela-book Manual
+@subtitle Integrating mudela with LateX and TeXinfo
+@author Tom Cato Amundsen and Han-Wen Nienhuys
+
+ Copyright @copyright 1999 by the authors
+
+@vskip 0pt plus 1filll
+
+Permission is granted to make and distribute verbatim
+copies of this manual provided the copyright notice and
+this permission notice are preserved on all copies.
+
+Permission is granted to copy and distribute modified
+versions of this manual under the conditions for
+verbatim copying, provided also that the sections
+entitled ``Copying'' and ``GNU General Public License''
+are included exactly as in the original, and provided
+that the entire resulting derived work is distributed
+under the terms of a permission notice identical to this
+one.
+
+Permission is granted to copy and distribute
+translations of this manual into another language,
+under the above conditions for modified versions,
+except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.
+
+@end titlepage
+
+@ifinfo
+This file documents GNU LilyPond.
+
+Copyright 1999 Tom Cato Amundsen and Han-Wen Nienhuys
+
+
+Permission is granted to make and distribute verbatim
+copies of this manual provided the copyright notice and
+this permission notice are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX
+and print the results, provided the printed document
+carries a copying permission notice identical to this
+one except for the removal of this paragraph (this
+paragraph not being relevant to the printed manual).
+
+@end ignore
+
+Permission is granted to copy and distribute modified
+versions of this manual under the conditions for
+verbatim copying, provided also that the sections
+entitled ``Copying'' and ``GNU General Public License''
+are included exactly as in the original, and provided
+that the entire resulting derived work is distributed
+under the terms of a permission notice identical to this
+one.
+
+Permission is granted to copy and distribute
+translations of this manual into another language,
+under the above conditions for modified versions,
+except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.
+
+@end ifinfo
+
@node Top, , , (dir)
@top
* Bison (version 1.25 or newer). Check out ftp://ftp.gnu.org/bison/
(ftp://ftp.gnu.org/bison/).
- * Texinfo. Check out ftp://ftp.gnu.org/pub/texinfo/
- (ftp://ftp.gnu.org/pub/texinfo/). Most documentation is in
- texinfo.
+ * Texinfo (version 4.0 or newer). Check out
+ ftp://ftp.gnu.org/pub/texinfo/ (ftp://ftp.gnu.org/pub/texinfo/).
+ Most documentation is in texinfo.
* The geometry package for LaTeX is needed to use ly2dvi. Available
at
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=6
+PATCH_LEVEL=7
MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
}}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
\header{
enteredby = "jcn";
-\version "1.3.4";
+\version "1.3.5";
onestaff = \context Staff = foo\notes {
\property Staff.instr = instr
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes\transpose c'{
}
}
-\version "1.3.4";
+\version "1.3.5";
}
}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes\transpose c''{
TestedFeatures = "beams and beamflags";
}
-\version "1.3.4";
+\version "1.3.5";
\score{
<
-\version "1.3.4";
+\version "1.3.5";
\score {
\notes \relative c' {
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.3.4";
+\version "1.3.5";
shortlong = \notes{
c4()c( c c |
>
}
-\version "1.3.4";
+\version "1.3.5";
}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
%{
Would this be acceptable/good enough/convenient for entry?
-\version "1.3.4";
+\version "1.3.5";
\score {
\notes{
copyright = "public domain";
Tested = "test the Collision resolution ";
}
-\version "1.3.4";
+\version "1.3.5";
twovoice = \context Staff \notes <
\context Voice=i { \stemdown c4 d e f g2~ g4 a [c8 d e f] c2| }
-\version "1.3.4";
+\version "1.3.5";
\score {
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes{
>
}
-\version "1.3.4";
+\version "1.3.5";
}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
FontBody= \notes\transpose c''{
\bar "|:";
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.3.4";
+\version "1.3.5";
\include "font-body.ly"
\score{
% "(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.3.4";
+\version "1.3.5";
\include "paper16.ly"
\include "font-body.ly"
gourlay_maxmeasures =5.;
}
}
-\version "1.3.4";
+\version "1.3.5";
% perhaps the current modifier approach is too simplistic
-\version "1.3.4";
+\version "1.3.5";
gmsus=\notes\relative c \chords{
g1
-\version "1.3.4";
+\version "1.3.5";
%{
-\version "1.3.4";
+\version "1.3.5";
voiceOne = \notes \relative c'' {
a1 a a
-\version "1.3.4";
+\version "1.3.5";
toeter_i = \notes\relative c <{
\property Staff.instrument = "Toeters"
>
}
-\version "1.3.4";
+\version "1.3.5";
/Mats B
%}
-\version "1.3.4";
+\version "1.3.5";
incipit = \notes\relative c'{
<b1 fis' b d>
-\version "1.3.4";
+\version "1.3.5";
%{
test key itemv breaking
-\version "1.3.4";
+\version "1.3.5";
blah = \notes {
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes\relative c'{
[c16 \stemdown c'' \stemboth c,, d]
copyright = "public domain";
}
-\version "1.3.4";
+\version "1.3.5";
m =\notes \relative c'' {
\property Staff.automaticMelismata = ##t
-\version "1.3.4";
+\version "1.3.5";
global = \notes {
s1 | \mark "A";
>
\paper { Gourlay_maxmeaures = 2.; }
}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
voice_one = \notes\transpose c''{ \stemup
R1 * 2 | f'4-. r r2 | R1 * 3 |
}
}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes \transpose c''{
-\version "1.3.4";
+\version "1.3.5";
m = \notes \relative c''{
c1 | c2 c | c c | c c | c c | c c | c c | c c |
-\version "1.3.4";
+\version "1.3.5";
\score {
}
}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
blah = \notes{ \transpose c'' {
"(Feta definitively is not an abbreviation of Font-En-TjA)";
}
-\version "1.3.4";
+\version "1.3.5";
shortlong = \notes{
c4()c( c c |
}
}
-\version "1.3.4";
+\version "1.3.5";
% test damping
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes\relative c'{
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes\transpose c'{
}
}
-\version "1.3.4";
+\version "1.3.5";
TestedFeatures = "This file tests various spacings";
}
-\version "1.3.4";
+\version "1.3.5";
multipart = \notes \relative c'{
\context StaffGroup <
-\version "1.3.4";
+\version "1.3.5";
nt = \notes { c1 \break c1 c1 }
stuff = \notes \relative c'' <
\context Staff = stone { \nt }
-\version "1.3.4";
+\version "1.3.5";
\score {
}
-\version "1.3.4";
+\version "1.3.5";
\property Staff.fontSize = #-1
\property Voice.fontSize = #-1
- \property Voice . dynamicDirectionection = \up \stemdown
+ \property Voice . dynamicDirection = \up \stemdown
%\key gis;
c8 d [e f g a] b c \ff
}
-\context Staff = VB { \property Voice . dynamicDirectionection = \down c,,4 \ff c c c }
+\context Staff = VB { \property Voice . dynamicDirection = \down c,,4 \ff c c c }
>
\paper { linewidth = -1.; }
}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes \transpose c'''{
\stemup
}
-\version "1.3.4";
+\version "1.3.5";
beamintervals = \notes{
\time 7/4;
instrument= "Violoncello";
}
-\version "1.3.4";
+\version "1.3.5";
% this is an example of extreme dynamics
-\version "1.3.4";
+\version "1.3.5";
$somewhat_long = \lyrics{
\property Lyrics . textStyle = "roman"
% the thumb-script is used in cello music to indicate a note that should
% be played with your thumb.
-\version "1.3.4";
+\version "1.3.5";
\score { \notes \relative c'' {
[<a8_\thumb a'8-3(> <)b_\thumb b'-3>
instrument= "Instrument";
}
-\version "1.3.4";
+\version "1.3.5";
\score{
\notes
}
-\version "1.3.4";
+\version "1.3.5";
vOne = \notes \relative c''{
\clef"violin";
}
}
-\version "1.3.4";
+\version "1.3.5";
-\version "1.3.4";
+\version "1.3.5";
\score {
\notes <
}
}
-\version "1.3.4";
+\version "1.3.5";
class Paper_stream
{
public:
- bool outputting_comment;
+ bool outputting_comment_b_;
ostream *os;
int nest_level;
/// to check linelen in output. TeX has limits.
SCM
ly_quote_scm (SCM s)
{
+#if 0
+ /*
+ This internal quote symbol breaks list->string and display,
+ and thus scm output.
+ */
return scm_m_quote (scm_cons2 (SCM_EOL, s, SCM_EOL) ,SCM_EOL);
+#else
+ return gh_list (ly_symbol2scm ("quote"), s, SCM_UNDEFINED);
+#endif
}
void
-Paper_outputter::dump_onto (Paper_stream *os)
+Paper_outputter::dump_onto (Paper_stream *ps)
{
-
- if (output_global_ch == String ("scm"))
- *os << ""
- "(primitive-load-path 'lily.scm)\n"
- "(eval (tex-scm 'all-definitions))\n"
- ";(eval (ps-scm 'all-definitions))\n"
- "(display (map (lambda (x) (string-append (eval x) \"\\n\")) '(\n"
- ;
-
- for (SCM s = gh_cdr (molecules_); gh_pair_p (s); s = gh_cdr (s))
+ if (String (output_global_ch) == "scm")
+#if 1 // both are fine
+ {
+ /*
+ default to stdin
+ */
+ int fd = 1;
+ if (ofstream* of = dynamic_cast<ofstream*> (ps->os))
+ fd = of->rdbuf ()->fd ();
+ SCM port = scm_fdes_to_port (fd, "a", SCM_EOL);
+
+ /*
+ lilypond -f scm x.ly
+ guile -s x.scm
+ */
+ scm_display (gh_str02scm (
+ ";;; Usage: guile -s x.scm > x.tex\n"
+ "(primitive-load-path 'lily.scm)\n"
+ "(scm-tex-output)\n"
+ ";(scm-ps-output)\n"
+ "(map (lambda (x) (display (eval x))) '(\n"
+ ), port);
+
+ SCM newline = gh_str02scm ("\n");
+ for (SCM s = gh_cdr (molecules_); gh_pair_p (s); s = gh_cdr (s))
+ {
+ scm_write (gh_car (s), port);
+ scm_display (newline, port);
+ scm_flush (port);
+ }
+ scm_display (gh_str02scm (")))"), port);
+ scm_display (newline, port);
+ scm_flush (port);
+ scm_close_port (port);
+ }
+#else
{
- if (String (output_global_ch) == "scm")
+ /*
+ lilypond -f scm x.ly
+ guile -s x.scm
+ */
+ if (output_global_ch == String ("scm"))
+ *ps << ""
+ ";;; Usage: guile -s x.scm > x.tex\n"
+ "(primitive-load-path 'lily.scm)\n"
+ "(scm-tex-output)\n"
+ ";(scm-ps-output)\n"
+ "(map (lambda (x) (display (eval x))) '(\n"
+ ;
+ for (SCM s = gh_cdr (molecules_); gh_pair_p (s); s = gh_cdr (s))
{
SCM result = scm_eval (scm_listify (ly_symbol2scm ("scm->string"),
ly_quote_scm (gh_car (s)), SCM_UNDEFINED));
- *os << ly_scm2string (result);
+ *ps << ly_scm2string (result);
}
- else
+ *ps << ")))";
+ }
+#endif
+
+ else
+ {
+ for (SCM s = gh_cdr (molecules_); gh_pair_p (s); s = gh_cdr (s))
{
SCM result = scm_eval (gh_car (s));
char *c=gh_scm2newstr (result, NULL);
- *os << c;
+ *ps << c;
free (c);
}
-
- }
-
-
- if (String (output_global_ch) == "scm")
- {
- *os << ")))";
}
}
error (_f ("Can't open file: `%s'", filename));
nest_level = 0;
line_len_i_ = 0;
- outputting_comment=false;
+ outputting_comment_b_=false;
}
Paper_stream::~Paper_stream ()
{
for (char const *cp = s.ch_C (); *cp; cp++)
{
- if (outputting_comment)
+ if (outputting_comment_b_)
{
*os << *cp;
if (*cp == '\n')
{
- outputting_comment=false;
-
+ outputting_comment_b_=false;
+ line_len_i_ =0;
}
continue;
}
switch (*cp)
{
case '%':
- outputting_comment = true;
+ outputting_comment_b_ = true;
*os << *cp;
break;
case '{':
{
*os << '\n';
*os << to_str (' ', nest_level);
+ outputting_comment_b_ = false;
line_len_i_ = 0;
}
#include "proto.hh"
#include "misc.hh"
#include "cross-staff.hh"
-
+#include "debug.hh"
#include "stem.hh"
#include "paper-def.hh"
#include "lookup.hh"
set_direction (stem_l_->get_direction ());
SCM bd = stem_l_->remove_elt_property ("beam-dir");
- beam_dir_ = gh_scm2int (bd);
-
+ if (gh_number_p (bd))
+ {
+ beam_dir_ = gh_scm2int (bd);
+ }
+ else
+ {
+ programming_error ("Beam direction not set.");
+ beam_dir_ = UP; // GURAUGRNAGURAGU! urg !
+ }
+
Paper_def* paper_l = stem_l_->paper_l ();
Real internote_f = stem_l_->staff_line_leading_f ()/2;
Real interbeam_f = paper_l->interbeam_f (mult_i_);
\paper {
texsetting = "";
pssetting = "";
- scmsetting = "\"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\";\n";% UGH.
+ scmsetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse;\n";% UGH.
}
% Toplevel initialisation file.
-\version "1.1.52";
+\version "1.3.4";
\include "declarations.ly"
Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
-Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+# get Packager from (undocumented?) ~/.rpmmacros!
+# Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
# Icon: @package@-icon.gif
BuildRoot: /tmp/lilypond-install
Prereq: tetex
Begin3
Title: LilyPond
-Version: 1.3.6
-Entered-date: 15NOV99
+Version: 1.3.7
+Entered-date: 18NOV99
Description:
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 1000k lilypond-1.3.6.tar.gz
+ 1000k lilypond-1.3.7.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.3.6.tar.gz
+ 1000k lilypond-1.3.7.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.3.6
+Version: 1.3.7
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.6.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.7.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
-Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+# get Packager from (undocumented?) ~/.rpmmacros!
+# Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
# Icon: lilypond-icon.gif
BuildRoot: /tmp/lilypond-install
Prereq: tetex
SCRIPTS = configure aclocal.m4
README_FILES = DEDICATION COPYING NEWS TODO CHANGES
-README_TXT_FILES = README.txt INSTALL.txt
+README_TXT_FILES = AUTHORS.txt README.txt INSTALL.txt
IN_FILES := $(wildcard *.in)
EXTRA_DIST_FILES = dstreamrc mudela-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS) $(IN_FILES)
NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
slurVerticalDirection = 1;
verticalDirection = -1;
- beamAutoEnd = "1/2";
+ beamAutoEnd = #(make-moment 1 2)
}
}
\midi {
Tested Features: cross staff auto beams and slurs, grace notes, no bars
%}
-\version "1.3.4";
+\version "1.3.5";
\include "nederlands.ly"
\accepts "Staff";
slurVerticalDirection = 1;
verticalDirection = -1;
- beamAutoEnd = "1/2";
+ beamAutoEnd = #(make-moment 1 2)
}
\translator {
\type "Engraver_group_engraver";
Tested Features:
%}
-\version "1.3.4";
+\version "1.3.5";
\include "nederlands.ly"
\translator{ \OrchestralScoreContext }
\translator{
\VoiceContext
- beamAutoEnd_8 = "1/4";
- beamAutoEnd_16 = "1/4";
+ beamAutoEnd_8 = #(make-moment 1 4)
+ beamAutoEnd_16 = #(make-moment 1 4)
}
}
\midi {
\version "1.3.4";
vocalVerse = \notes\relative c''{
- \property Voice.dynamicDirectionection=1
+ \property Voice.dynamicDirection=1
\times 2/3 { [ g8( )as] g } c4. g8 |
\times 2/3 { [ f8( )g] f } c'4 f,8 r |
g4.-> f8 \times 2/3 { [ f( )es] d } |
}
vocalThrough = \notes\relative c{
- \property Voice.dynamicDirectionection=1
+ \property Voice.dynamicDirection=1
g''8. g16 b8. b16 d8. d16 |
c4 b r |
g4. b8 d8. c16 |
}
bassIntro = \notes\relative c{
- \property Voice.dynamicDirectionection=1
+ \property Voice.dynamicDirection=1
%1
<c,2 c'> r4 |
<as2 as'> r4 |
bassVerseOne = \notes\relative c{
% \clef bass;
- \property Voice.dynamicDirectionection=1
+ \property Voice.dynamicDirection=1
%5
<c,2 c'> r4 |
<as2 as'> r4 |
}
bassEentje = \notes\relative c{
- \property Voice.dynamicDirectionection=1
+ \property Voice.dynamicDirection=1
<c,8 c'> [<c' f as!> <f as c> <c f as> <f as c> <c f as>] |
c,8 [<c' e g> <e g c> <c e g> <e g c> <c e g>] |
<g,8 g'> [<d'' g> <g b> <d g> <g b> <d g>] |
}
bassThrough = \notes\relative c{
- \property Voice.dynamicDirectionection=1
+ \property Voice.dynamicDirection=1
%61
<g,8^"cresc." g'> [<g' b d> <b d f> <g b d> <as!-> b-> d->> <b d f>] |
<g,8 g'> [<g' d'> <d' f> <g, d'> <as-> b-> d->> <b d f>] |
\property Voice.noAutoBeaming = "1"
\property Staff.automaticMelismata=1
- \property Voice.dynamicDirectionection = \up
+ \property Voice.dynamicDirection = \up
\skip 4 * 12;
\vocalVerse
\skip 4 * 24;
-\version "1.3.4";
+\version "1.3.5";
$global_i = \notes{
\time 12/8;
-\version "1.3.4";
+\version "1.3.5";
$global_ii = \notes{
\time 4/4;
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
\include "global-i.ly"
\include "violoncello-i.ly";
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
\include "global-ii.ly"
\include "violoncello-ii.ly";
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
% {
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
$violino_i = \notes\relative c'' {
\property Voice.beamAutoEnd = "3/8"
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
$violino_ii = \notes\relative c''{
R1*8 |
\$violino_ii
\$global_ii
>
-\version "1.3.4";
+\version "1.3.5";
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
% {
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
% {
\include "violino-i.ly";
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
% {
\include "violino-i.ly";
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
$violoncello_i = \notes\relative c{
\property Voice.beamAutoEnd = "3/8"
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
$violoncello_ii = \notes\relative c{
r2 a'2|c e,| f8(e)d2 e8()fis| g a bes2 a8()gis|
copyright = "Public Domain";
}
-\version "1.3.4";
+\version "1.3.5";
% {
\context PianoStaff <
\context Staff = upper <
\global
- { \upper \bar "|." }
+ { \upper \bar "|."; }
>
\context Staff = lower <
\global
composer = "Johann Sebastian Bach (1685-1750)";
enteredby = "jcn";
copyright = "public domain";
+maintainer = "Jan Nieuwenhuizen";
% mutopia headers.
mutopiatitle = "Petites Pr&aigueludes";
\paper{
\translator{
\VoiceContext
- beamAutoEnd_8 = "3/4";
- beamAutoEnd_16 = "3/4";
+ beamAutoEnd_8 = #(make-moment 3 4)
+ beamAutoEnd_16 = #(make-moment 3 4)
}
}
\midi{ \tempo 4 = 60; }
\paper{
\translator{
\VoiceContext
- beamAutoEnd_8 = "3/4";
- beamAutoEnd_16 = "3/4";
+ beamAutoEnd_8 = #(make-moment 3 4)
+ beamAutoEnd_16 = #(make-moment 3 4)
}
}
\midi{ \tempo 4 = 60; }
\paper{
\translator{
\VoiceContext
- beamAutoEnd_8 = "3/4";
+ beamAutoEnd_8 = #(make-moment 3 4)
}
}
\midi{ \tempo 4 = 110; }
\paper{
\translator{
\VoiceContext
- beamAutoEnd_8 = "3/4";
+ beamAutoEnd_8 = #(make-moment 3 4)
+
}
}
\midi{ \tempo 4 = 130; }
gourlay_maxmeasures = 7.0;
\translator{
\VoiceContext
- beamAutoEnd_8 = "3/4";
+ beamAutoEnd_8 = #(make-moment 3 4)
+
}
}
\midi{ \tempo 4 = 110; }
\paper{
\translator{
\VoiceContext
- beamAutoEnd_8 = "3/4";
+ beamAutoEnd_8 = #(make-moment 3 4)
+
}
}
\midi{ \tempo 4 = 130; }
\property Staff.instr = "Cor."
\context Voice = corI <
\globalNoKey
- \stemup \property Voice.dynamicDirectionection = \up
+ \stemup \property Voice.dynamicDirection = \up
\property Voice.articulationScriptVerticalDirection = \up
\corI
>
\context Voice = corII {
- \stemdown \property Voice.dynamicDirectionection = \down
+ \stemdown \property Voice.dynamicDirection = \down
\property Voice.articulationScriptVerticalDirection = \down
\corII
}
\property Staff.instr = "Trp."
\context Voice = trpI <
\globalNoKey
- \stemup \property Voice.dynamicDirectionection = \up
+ \stemup \property Voice.dynamicDirection = \up
\property Voice.articulationScriptVerticalDirection = \up
\trpI
>
\context Voice = trpII {
- \stemdown \property Voice.dynamicDirectionection = \down
+ \stemdown \property Voice.dynamicDirection = \down
\property Voice.articulationScriptVerticalDirection = \down
\trpII
}
>
\paper {
% \paper_sixteen;
- linewidth = 180.\mm;
- textheight = 260.\mm;
+ linewidth = 18.0\cm;
\translator {
\OrchestralScoreContext
minVerticalAlign = 2.5*\staffheight;
\paper{
\translator { \StaffContext \consists Mark_engraver; }
\translator { \ScoreContext
- skipBars = 1;
+ skipBars = ##t
}
linewidth = 180. \mm;
}
% round cappings
1 setlinecap
%
-%
+% scm/lily.scm should allow blank lines, now
+%
/draw_beam % width slope thick
{
2 div /beam_thick exch def
% hmm
% /setgray { 1 add } bind def
-/stafflinethickness mudelapaperstaffline def
+/stafflinethickness mudelapaperstafflinethickness def
/staffheight mudelapaperstaffheight def
/xoffset 30 def
(define generic-voice-properties
(list
generic-stem-properties
+ generic-breathing-sign-properties
generic-tie-properties
generic-rest-properties
generic-slur-properties
;;; library funtions
-; :use-module (ice-9 regex))
+(use-modules (ice-9 regex))
;; do nothing in .scm output
(define (comment s)
""
)
-
(define
(xnumbers->string l)
(string-append
(define (style-to-cmr s)
(assoc s cmr-alist )
)
+
-(define (define-font name-mag)
- (cons name-mag
- (string-append "\\magfont"
- (string-encode-integer (hash (car name-mag) 1000000))
- "m"
- (string-encode-integer (cdr name-mag)))
-
- )
- )
(define font-name-alist '())
+(define (font-command name-mag)
+ (cons name-mag
+ (string-append "magfont"
+ (string-encode-integer (hash (car name-mag) 1000000))
+ "m"
+ (string-encode-integer (cdr name-mag)))
+
+ )
+ )
(define (define-fonts names)
- (set! font-name-alist (map define-font names))
- (apply string-append (map (lambda (x)
- (string-append "\\font" (cdr x) "="
- (symbol->string (caar x))
- " scaled "
- (number->string (magstep (cdar x)))
- "\n"))
- font-name-alist
- )
- )
- )
+ (set! font-name-alist (map font-command names))
+ (apply string-append
+ (map (lambda (x)
+ (font-load-command (car x) (cdr x))) font-name-alist)
+ ))
-
(define (tex-scm action-name)
(define (unknown)
"%\n\\unknown%\n")
(ly-warn (string-append
"Programming error: No such font known " (car font-name-symbol)))
"") ; issue no command
- (cdr c))
+ (string-append "\\" (cdr c)))
))
;This sets CTM so that you get to the currentpoint
; by executing a 0 0 moveto
-
+
+
+
+
+ (define (font-load-command name-mag command)
+ (string-append
+ "\\font\\" command "="
+ (symbol->string (car name-mag))
+ " scaled "
+ (number->string (magstep (cdr name-mag)))
+ "\n"))
+
+
(define (embedded-ps s)
(string-append "\\embeddedps{" s "}"))
(define (header-end)
(string-append
"\\special{! "
- (ly-gulp-file "lily.ps")
- ;; breaks on ppc
-;; (regexp-substitute/global #f "\n" (ly-gulp-file "lily.ps") 'pre " %\n" 'post)
+ ; fixed in 1.3.4
+ ;(ly-gulp-file "lily.ps")
+
+ (regexp-substitute/global #f "\n" (ly-gulp-file "lily.ps") 'pre " %\n" 'post)
"}"
"\\input lilyponddefs \\turnOnPostScript"))
(define (header creator generate)
(string-append
- "%created by: " creator generate "\n"))
+ "%created by: " creator generate))
(define (invoke-char s i)
(string-append
(define (lily-def key val)
(string-append
"\\def\\"
-; (regexp-substitute/global #f "_" (output-tex-string key) 'pre "X" 'post)
- (output-tex-string key)
+ ; fixed in 1.3.4
+ (regexp-substitute/global #f "_" (output-tex-string key) 'pre "X" 'post)
+ ;(output-tex-string key)
"{" (output-tex-string val) "}\n"))
(define (number->dim x)
(define (placebox x y s)
(string-append
"\\placebox{"
- (number->dim y) "}{" (number->dim x) "}{" s "}"))
-
- ;;;;
- (define (pianobrace y staffht)
- (let* ((step 1.0)
- (minht (* 2 staffht))
- (maxht (* 7 minht))
- )
- (string-append
- (select-font (string-append "feta-braces" (number->string (inexact->exact staffht))) 0)
- (char (max 0 (/ (- (min y (- maxht step)) minht) step))))
- )
- )
+ (number->dim y) "}{" (number->dim x) "}{" s "}\n"))
+
(define (bezier-sandwich l thick)
;; (should merge the 2 lists)
(cond ((eq? action-name 'all-definitions)
`(begin
+ (define font-load-command ,font-load-command)
(define beam ,beam)
(define bezier-sandwich ,bezier-sandwich)
(define bracket ,bracket)
(define header ,header)
(define invoke-char ,invoke-char)
(define invoke-dim1 ,invoke-dim1)
- (define pianobrace ,pianobrace)
(define placebox ,placebox)
(define select-font ,select-font)
(define start-line ,start-line)
)
)
+
;;;;;;;;;;;; PS
(define (ps-scm action-name)
(6 30) ; really: 29.856
)))
- (define (select-font font-name magnification)
- (define font-cmd (assoc font-name font-alist))
- (if (not (equal? font-name current-font))
- (begin
- (set! current-font font-name)
- (if (eq? font-cmd #f)
- (begin
- (set! font-cmd (cached-fontname font-count))
- (set! font-alist (acons font-name font-cmd font-alist))
- (set! font-count (+ 1 font-count))
- (string-append "\n/" font-cmd " {/"
- font-name " findfont "
- (mag-to-size magnification)
- " scalefont setfont} bind def \n"
- font-cmd " \n"))
- (string-append (cdr font-cmd) " ")))
- ; font-name == current-font no switch needed
- ""
- ))
-
+
+ (define (select-font font-name-symbol)
+ (let*
+ (
+ (c (assoc font-name-symbol font-name-alist))
+ )
+
+ (if (eq? c #f)
+ (begin
+ (ly-warn (string-append
+ "Programming error: No such font known " (car font-name-symbol)))
+ "") ; issue no command
+ (string-append " " (cdr c) " "))
+
+
+ ))
+
+ (define (font-load-command name-mag command)
+ (string-append
+ "/" command
+ " { /"
+ (symbol->string (car name-mag))
+ " findfont "
+ (number->string (magstep (cdr name-mag)))
+ " 1000 div 12 mul scalefont setfont } bind def "
+ "\n"))
+
+
(define (beam width slope thick)
(string-append
(numbers->string (list width slope thick)) " draw_beam" ))
(string-append
(number->string x) " " (number->string y) " {" s "} placebox "))
- (define (pianobrace y staffht)
- (let* ((step 1.0)
- (minht (* 2 staffht))
- (maxht (* 7 minht))
- )
- (string-append
- (select-font (string-append "feta-braces" (number->string (inexact->exact staffht))) 0)
- (char (max 0 (/ (- (min y (- maxht step)) minht) step))))
- )
- )
-
-
(define (bezier-sandwich l thick)
(string-append
(apply string-append (map control->string l))
(define filledbox ,filledbox)
(define font-def ,font-def)
(define font-switch ,font-switch)
- (define pianobrace ,pianobrace)
(define header-end ,header-end)
(define lily-def ,lily-def)
+ (define font-load-command ,font-load-command)
(define header ,header)
(define invoke-char ,invoke-char)
(define invoke-dim1 ,invoke-dim1)
)
)
- ;
+
+(define (gulp-file name)
+ (let* ((port (open-file name "r"))
+ (content (let loop ((text ""))
+ (let ((line (read-line port)))
+ (if (or (eof-object? line)
+ (not line))
+ text
+ (loop (string-append text line "\n")))))))
+ (close port)
+ content))
+
+(define (scm-gulp-file name)
+ (set! %load-path
+ (cons (string-append
+ (getenv 'LILYPONDPREFIX) "/ps") %load-path))
+ (let ((path (%search-load-path name)))
+ (if path
+ (gulp-file path)
+ (gulp-file name))))
+
+(define (scm-tex-output)
+ (eval (tex-scm 'all-definitions)))
+
+(define (scm-ps-output)
+ (eval (ps-scm 'all-definitions)))
+
+
; Russ McManus, <mcmanus@IDT.NET>
;
; I use the following, which should definitely be provided somewhere
(set! ret-ls (cons (fn (car (car alist)) (cdr (car alist))) ret-ls)))))
-;;;; print a SCM expression. Isn't this part of the std lib?
-
+;; guile-1.3.4 has list->string
(define (scmlist->string exp)
+ (list->string exp))
+
+;; obsolete, maybe handy for testing
+;; print a SCM expression. Isn't this part of the std lib?
+(define (xxscmlist->string exp)
(cond
+ ((null? (car exp)) (begin (display ("urg:") (newline))))
((pair? (cdr exp)) (string-append (scm->string (car exp)) " " (scmlist->string (cdr exp))))
((eq? '() (cdr exp)) (string-append (scm->string (car exp)) ")"))
+ ;; howto check for quote?
(else (string-append (scm->string (car exp)) " . " (scm->string (cdr exp)) ")"))
))
((number? exp) (number->string exp))
((symbol? exp) (symbol->string exp))
((string? exp) (string-append "\"" exp "\""))
+ ;; probably: #@quote
+ (else (begin (display "programming error: scm->string: ") (newline) "'"))
))
conversions.append ((1,3,4), conv,
'\\cadenza -> \cadenza{On|Off}')
+if 1:
+ def conv (str):
+ str = re.sub ('beamAuto([^=]+)= *"([0-9]+)/([0-9]+)" *;',
+ 'beamAuto\\1 = #(make-moment \\2 \\3)',
+ str)
+ return str
+
+ conversions.append ((1,3,5), conv, 'beamAuto moment properties')
+
############################
def getTeXFile(contents):
texfiles=[]
for line in string.split(contents,'\n'):
- m = re.search('^paper output to (.+)\.\.\.', line)
+ m = re.search('paper output to (.+)\.\.\.', line)
if m:
texfiles.append(m.group(1))
('', '', 'force-verbatim', 'make all mudela verbatim'),
('', 'M', 'dependencies', 'write dependencies'),
('', 'n', 'no-lily', 'don\'t run lilypond'),
+ ('', '', 'no-pictures', "don\'t generate pictures"),
('FILE', 'o', 'outname', 'prefix for filenames'),
('', 'v', 'version', 'print version information' ),
('PREF', '', 'dep-prefix', 'prepend PREF before each -M dependency')
run_lilypond = 1
use_hash = 1
no_match = 'a\ba'
+do_pictures = 1
# format specific strings, ie. regex-es for input, and % strings for output
output_dict= {
eps.append (base)
elif e == 'tex':
tex.append (base + '.ly')
- elif e == 'png':
+ elif e == 'png' and do_pictures:
png.append (base)
if __main__.use_hash:
initfile = a
elif o == '--dep-prefix':
dep_prefix = a
+ elif o == '--no-pictures':
+ do_pictures = 0
identify()
+pl 81
+ - Yodl-free (tm)
+ - bf: package-zet: too many symlinks
+ - bf: yodl-targets.make
+
pl 80
- use mgsmerge iso tupdate
PACKAGE_NAME=StepMake
MAJOR_VERSION=0
MINOR_VERSION=1
-PATCH_LEVEL=80
+PATCH_LEVEL=81
MY_PATCH_LEVEL=
# use the above to send patches, always empty for released version:
import __main__
fullname = "unknown"
-changelog_file = ''
index_file=''
banner_file = ''
changelog_file=''
def gulp_file(f):
try:
- i = open(f)
- i.seek (0, 2)
- n = i.tell ()
- i.seek (0,0)
+ i = open(f)
+ i.seek (0, 2)
+ n = i.tell ()
+ i.seek (0,0)
except:
- sys.stderr.write ("can't open file: %s\n" % f)
- return ''
+ sys.stderr.write ("can't open file: %s\n" % f)
+ return ''
s = i.read (n)
if len (s) <= 0:
- sys.stderr.write ("gulped empty file: %s\n" % f)
+ sys.stderr.write ("gulped empty file: %s\n" % f)
i.close ()
return s
sys.stdout.write (r"""Usage: add-html-footer [OPTION]... HTML-FILE
Add a nice footer, add the top of the ChangLog file (up to the ********)
Options:
--h, --help print this help
---version package version
---name package_name
---footer footer file.
+-h, --help print this help
+--version package version
+--name package_name
+--footer footer file
""")
sys.exit (0)
banner_id = '<! banner_id >'
-if changelog_file:
- changes = gulp_file (changelog_file)
- m = re.search ('^\*\*', changes)
- if m:
- changes = changes[:m.start (0)]
-
def do_file (s):
+
if changelog_file:
+ changes = gulp_file (changelog_file)
+ # urg?
+ #m = re.search ('^\\\\*\\\\*', changes)
+ m = re.search (r'\*\*\*', changes)
+ if m:
+ changes = changes[:m.start (0)]
s = re.sub ('top_of_ChangeLog', '<XMP>\n'+ changes + '\n</XMP>\n', s)
import sys
import os
import string
-
-def gulp_file (fn):
- f = open (fn)
- return f.read ()
-
import __main__
import glob
-
import re
format_names = {'ps.gz': 'Compressed PostScript',
- 'html' : 'HTML'
- }
+ 'html' : 'HTML'
+ }
+
+def gulp_file(f):
+ try:
+ i = open(f)
+ i.seek (0, 2)
+ n = i.tell ()
+ i.seek (0,0)
+ except:
+ sys.stderr.write ("can't open file: %s\n" % f)
+ return ''
+ s = i.read (n)
+ if len (s) <= 0:
+ sys.stderr.write ("gulped empty file: %s\n" % f)
+ i.close ()
+ return s
class Latex_head:
- def __init__ (self):
- self.author = ''
- self.title = ''
- self.date = ''
- self.format = ''
-
+ def __init__ (self):
+ self.author = ''
+ self.title = ''
+ self.date = ''
+ self.format = ''
+
def read_latex_header (s):
- header = Latex_head()
- m = re.search(r'\\author{([^}]+)}', s)
- if m:
- header.author = m.group (1)
+ header = Latex_head()
+ m = re.search(r'\\author{([^}]+)}', s)
+ if m:
+ header.author = m.group (1)
- m = re.search (r'\\title{([^}]+)}',s )
- if m:
- header.title = m.group (1)
+ m = re.search (r'\\title{([^}]+)}',s )
+ if m:
+ header.title = m.group (1)
- header.formats = ['ps.gz']
- return header
+ header.formats = ['ps.gz']
+ return header
def read_bib_header (s):
+ m = re.search ('% *AUTHOR *= *(.*)\n',s)
- m = re.search ('% *AUTHOR *= *(.*)\n',s)
+ header = Latex_head()
- header = Latex_head()
+ if m:
+ header.author = m.group (1)
- if m:
- header.author = m.group (1)
+ m = re.search ('% *TITLE *= *(.*)\n',s )
+ if m:
+ header.title = m.group (1)
- m = re.search ('% *TITLE *= *(.*)\n',s )
- if m:
- header.title = m.group (1)
-
- header.formats = ['html']
- return header
+ header.formats = ['html']
+ return header
def read_pod_header (s):
- header = Latex_head ()
+ header = Latex_head ()
- i = re.search( '[^\n \t]', s)
- s = s[i:]
- i = re.search( '\n\n', s)
- s = s[i+2:]
- i = re.search( '\n\n', s)
- header.title = s[:i]
+ i = re.search( '[^\n \t]', s)
+ s = s[i:]
+ i = re.search( '\n\n', s)
+ s = s[i+2:]
+ i = re.search( '\n\n', s)
+ header.title = s[:i]
- return header
+ header.formats = ['html']
+ return header
def read_texinfo_header (s):
- header = Latex_head ()
-
- m = re.search( '@settitle (.*$)', s)
- if m:
- header.title = m.group (1)
-
- header.formats = ['html', 'ps.gz']
- return header
-
+ header = Latex_head ()
+
+ m = re.search( '@settitle (.*)\n', s)
+ if m:
+ print 'title found! '
+ header.title = m.group (1)
+ m = re.search( '@author (.*)\n', s)
+ if m:
+ header.author = m.group (1)
+
+ header.formats = ['html', 'ps.gz']
+ return header
+
+# urg
+# should make a 'next_parens '
+yo_article_re = re.compile ('article(\\([^)]*\\))[ \t\n]*(\\([^)]*\\))')
+yo_report_re = re.compile ('report(\\([^)]*\\))[\t\n ]*(\\([^)]*\\))')
+yo_sect_re = re.compile ('sect(\\([^)]*\\))')
+yo_chapter_re = re.compile ('chapter(\\([^)]*\\))')
+
+def read_yodl_header (s):
+ header = Latex_head ()
+ report = yo_report_re.search (s)
+ article = 0
+ sect = 0
+ chapter = 0
+ if report:
+ header.author = report.group (2)
+ header.title = yo_report_re.group (1)
+ else:
+ article = yo_article_re.search (s)
+ if article:
+ header.author = article.group (2)
+ header.title = article.group (1)
+ else:
+ chapter = yo_chapter_re.search (s)
+ if chapter:
+ header.title = chapter.group (1)
+ else:
+ sect = yo_sect_re.search (s)
+ if sect:
+ header.title = sect.group (1)
+
+ header.formats = ['html']
+ return header
def print_html_head (l,o,h):
- pre =o
-
-
- fn = pre + h.basename
+ pre =o
+
+ fn = pre + h.basename
- t = h.filename
- if h.title :
- t = t + ': '+ h.title
+ t = h.filename
+ if h.title :
+ t = t + ': '+ h.title
- l.write ('<li>%s </a>' % t)
+ l.write ('<li>%s </a>' % t)
- if h.author:
- l.write ('<p>by %s</p>' % h.author)
+ if h.author:
+ l.write ('<p>by %s</p>' % h.author)
- for f in h.formats:
- l.write ('(<a href=%s.%s>%s</a>)' % (fn, f, format_names [f]))
- l.write ('</li>\n')
+ for f in h.formats:
+ l.write ('(<a href=%s.%s>%s</a>)' % (fn, f, format_names [f]))
+ l.write ('</li>\n')
def help ():
- sys.stdout.write ("Usage: ls-latex [OPTION]... FILE...\n"
- "Generate html index file for FILE...\n\n"
- + "Options:\n"
- + " -h, --help print this help\n"
- )
- sys.exit (0)
+ sys.stdout.write (r"""Usage: ls-latex [OPTION]... FILE...
+Generate html index file for FILE...
+
+Options:
+-h, --help print this help
+""")
+ sys.exit (0)
import getopt
(options, files) = getopt.getopt(sys.argv[1:],
- 'e:h', ['help', 'prefix=', 'title='])
+ 'e:h', ['help', 'prefix=', 'title='])
tex = ''
output =''
pre = ''
title = ''
for opt in options:
- o = opt[0]
- a = opt[1]
- if o == '--prefix':
- pre = a
- elif o == '--title':
- title = a
- elif o == '-h' or o == '--help':
- help ()
+ o = opt[0]
+ a = opt[1]
+ if o == '--prefix':
+ pre = a
+ elif o == '--title':
+ title = a
+ elif o == '-h' or o == '--help':
+ help ()
l = sys.stdout
read_header_funcs = {
- 'pod' : read_pod_header,
- 'tex' : read_latex_header,
- 'doc' : read_latex_header,
- 'bib': read_bib_header,
- 'latex' : read_latex_header,
- 'tely' : read_texinfo_header,
- 'texi': read_texinfo_header,
-}
+ 'pod' : read_pod_header,
+ 'tex' : read_latex_header,
+ 'doc' : read_latex_header,
+ 'bib': read_bib_header,
+ 'latex' : read_latex_header,
+ 'tely' : read_texinfo_header,
+ 'texi': read_texinfo_header,
+ 'yo': read_yodl_header,
+}
for x in files:
- m = re.search ('\\.([^.]*)$', x)
- if m == None:
- continue
+ m = re.search ('\\.([^.]*)$', x)
+ if m == None:
+ continue
- s = gulp_file (x)
- head = read_header_funcs [m.group(1)] (s)
+ s = gulp_file (x)
+ head = read_header_funcs [m.group(1)] (s)
- head.filename = x
- head.basename = re.sub ("\\.[^.]+", '', x)
-
- print_html_head (l, pre, head)
+ head.filename = x
+ head.basename = re.sub ("\\.[^.]+", '', x)
+
+ print_html_head (l, pre, head)
l.write ('</ul></body></html>')
#!@PYTHON@
+#
+# TODO: CLEAN THIS UP.
+#
+
import find
import sys
Patches do not contain automatically generated files
or (urg) empty directories,
-i.e., you should rerun autoconf, configure """
+i.e., you should rerun autoconf, configure
+
+"""
def makediff (fromdir, todir, patch_name):
# and create links to here, if necessary
#
sourcetree=`basename \`pwd\``
-if [ "xsourcetree" != "x$package" ]; then
+if [ "x$sourcetree" != "x$package" ]; then
(cd ..; rm -f $package 2>&1 > /dev/null)
(cd ..; ln -s $sourcetree $package)
fi
Begin3
Title: StepMake
-Version: 0.1.80
-Entered-date: 16AUG99
+Version: 0.1.81
+Entered-date: 18NOV99
Description:
Keywords: music notation typesetting midi fonts engraving
Author: janneke@gnu.org (Jan Nieuwenhuizen)
hanwen@cs.ruu.nl (Han-Wen Nienhuys)
Maintained-by: janneke@gnu.org (Jan Nieuwenhuizen)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 40k stepmake-0.1.80.tar.gz
+ 40k stepmake-0.1.81.tar.gz
Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
- 40k stepmake-0.1.80.tar.gz
+ 40k stepmake-0.1.81.tar.gz
Copying-policy: GPL
End
Name: stepmake
-Version: 0.1.80
+Version: 0.1.81
Release: 1
Copyright: GPL
Group: Development
-Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.80.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.81.tar.gz
Summary: generic make package
Packager: janneke@gnu.org (Jan Nieuwenhuizen)
Buildroot: /tmp/stepmake-install
OUTTXT_FILES = $(OUTYO_FILES:.yo=.txt) $(OUTIN_FILES:.yo=.txt)
OUTHTML_FILES = $(OUTYO_FILES:.yo=.html) $(OUTIN_FILES:.yo=.html)
+
+ALL_SOURCES += $(YO_FILES)