Here's a patch that solves Andrei's problems and also
includes a cleaner reimplementation of Jan's page layout
patch for ly2dvi.
Unfortunately, the national characters have to be coded
with some care. TeX can understand many different syntaxes
but Lilypond is somewhat restrictive if you want to get the
correct size calculations for the syllables.
The basic syntax is "\texmacro{character}", e.g.
b\u{a} instead of "b\u a" and m\^{a} instead of m\^a.
Also, Lilypond beleives the "\i" has length zero, since
it's a TeX macro, therefore you have to write v\^{\i}n_
instead of v\^{\i}n (the '_' gives a space at the end
of the syllable which will compensate the missing lenght
of the \i). The text in Andrei's example should thus be
coded:
text = \lyrics {
Ca m\u{a} -- ta -- sea prun -- du -- ie ier -- bi -- le se un --
du -- ie
%5
\^{\i}n_ b\u{a} -- ta -- ia v\^{\i}n_ -- tu -- lui
s\^{a}n -- ge -- le p\u{a} -- m\^{a}n -- tu -- lui,
s\^{a}n -- ge -- le p\u{a} -- m\^{a}n -- tu -- lui
%8
\^{\i}n_ b\u{a} -- ta -- ia v\^{\i}n_ -- tu -- lui,
\^{\i}n_ b\u{a} -- ta -- ia v\^{\i}n_ -- tu -- lui2
}
/Mats
Generated by (address unknown),
>From = lilypond-1.3.47, To = lilypond-1.3.47.mb1
usage
cd lilypond-source-dir; patch -E -p1 < lilypond-1.3.47.mb1.diff
Patches do not contain automatically generated files
or (urg) empty directories,
i.e., you should rerun autoconf, configure
diff -urN ../lilypond-1.3.47/CHANGES ./CHANGES
--- ../lilypond-1.3.47/CHANGES Thu Apr 27 00:12:25 2000
+++ ./CHANGES Sun Apr 30 18:06:58 2000
@@ -1,3 +1,12 @@
+1.3.47.mb1
+===========
+
+* Simplified ly2dvi using the power of the geometry package.
+
+* Improved heuristic size calculation of TeX macros. Handles e.g.
+ "\\u{a}", "\\"{o}" and "\\^{u}" correctly.
+
+
1.3.46.jcn2
===========
diff -urN ../lilypond-1.3.47/VERSION ./VERSION
--- ../lilypond-1.3.47/VERSION Thu Apr 27 14:11:00 2000
+++ ./VERSION Sun Apr 30 18:07:16 2000
@@ -2,7 +2,7 @@
MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=47
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=mb1
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
diff -urN ../lilypond-1.3.47/lily/font-metric.cc ./lily/font-metric.cc
--- ../lilypond-1.3.47/lily/font-metric.cc Wed Mar 15 13:36:28 2000
+++ ./lily/font-metric.cc Sun Apr 30 18:04:15 2000
@@ -4,7 +4,8 @@
source file of the GNU LilyPond music typesetter
(c) 1999--2000 Han-Wen Nienhuys <[EMAIL PROTECTED]>
-
+
+ Mats Bengtsson <[EMAIL PROTECTED]> (the ugly TeX parsing in text_dimension)
*/
#include <math.h>
@@ -22,23 +23,29 @@
for (int i = 0; i < text.length_i (); i++)
{
- if (text[i]=='\\')
+ switch (text[i])
{
- for (i++; (i < text.length_i ()) && isalpha(text[i]); i++)
+ case '\\':
+ for (i++; (i < text.length_i ()) && !isspace(text[i])
+ && text[i]!='{' && text[i]!='}'; i++)
;
// ugh.
i--; // Compensate for the increment in the outer loop!
- }
- else
- {
+ break;
+ case '{': // Skip '{' and '}'
+ case '}':
+ break;
+
+ default:
Box b = get_char ((unsigned char)text[i],false);
-
+
// Ugh, use the width of 'x' for unknown characters
if (b[X_AXIS].length () == 0)
b = get_char ((unsigned char)'x',false);
w += b[X_AXIS].length ();
ydims.unite (b[Y_AXIS]);
+ break;
}
}
if (ydims.empty_b ())
@@ -72,7 +79,6 @@
Font_metric::Font_metric (Font_metric const &)
{
}
-
Box
diff -urN ../lilypond-1.3.47/scripts/ly2dvi.py ./scripts/ly2dvi.py
--- ../lilypond-1.3.47/scripts/ly2dvi.py Wed Apr 26 10:58:56 2000
+++ ./scripts/ly2dvi.py Thu Apr 27 22:40:50 2000
@@ -245,8 +245,6 @@
pageheight = Props.get('pageheight')
pagewidth = Props.get('pagewidth')
- horizontalMarginArg = ( (pagewidth - linewidth)/2 )
- verticalMarginArg = ( (pageheight - textheight)/2 )
top= r"""
%% Creator: %s
@@ -265,16 +263,7 @@
%%\headheight9pt
%%\headsep0pt
%% Maybe this is too drastic, but let us give it a try.
-\headheight0pt
-\headsep2mm
-\footskip2mm
-%%
-%%\addtolength{\oddsidemargin}{-1cm}
-%%\addtolength{\topmargin}{-1cm}
-%%\setlength{\textwidth}{%s}
-%%\setlength{\textheight}{%s}
-%%
-\geometry{width=%spt, left=%spt, height=%spt, top=%spt}
+\geometry{width=%spt, height=%spt,headheight=2mm,headsep=0pt,footskip=2mm}
\input lilyponddefs
\input titledefs
%s
@@ -286,9 +275,8 @@
\renewcommand{\@oddfoot}{\parbox{\textwidth}{\mbox{}\thefooter}}%%
\begin{document}
""" % ( program_id(), Props.get('filename'), now, Props.get('papersize'),
- Props.get('language'), Props.get('pagenumber'), linewidth, textheight,
- linewidth, horizontalMarginArg, textheight, verticalMarginArg,
- Props.get('header') )
+ Props.get('language'), Props.get('pagenumber'), linewidth,
+ textheight, Props.get('header') )
base, ext = os.path.splitext(file)
this.__base = base