%%%
%%% source file of the GNU LilyPond music typesetter
%%%
-%%% (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
+%%% (c) 1998--2005 Jan Nieuwenhuizen <janneke@gnu.org>
%%% Han-Wen Nienhuys <hanwen@cs.uu.nl>
%%% Mats Bengtsson <mats.bengtsson@s3.kth.se>
%%%
%% As a safety guard, don't produce auxiliary files.
\nofiles
- \usepackage[\lilypondpaperinputencoding]{inputenc}
+ %% FIXME: workaround non-existent TeX.def.
+ \def\TeXdef{TeX}\ifx\TeXdef\lilypondpaperinputencoding
+ \usepackage[latin1]{inputenc}
+ \else
+ \usepackage[\lilypondpaperinputencoding]{inputenc}
+ \fi
\pagestyle{empty}
\lilypondifundefined{lilypondclassic}
\special{header=music-drawing-routines.ps}
\gdef\lilypondspecial{}}
-%% Put the argument into a box which has zero height and depth (the
-%% \vss forces the latter -- TeXbook, page 80).
-%%
-\gdef\topalign#1{
- \vbox to 0pt{
- \hbox{#1}
- \vss}}
-
-%% Put the argument into a box which has zero width.
-%%
-\gdef\leftalign#1{
- \hbox to 0pt{
- #1
- \hss}}
-
%% The most used macro in LilyPond output. Put #3 into a zero-width box
%% which is moved to the right by #1 (scaled by \outputscale) and moved
-%% up by #2 (also scaled by \outputscale). Note that negative values for
-%% #2 change the depth of the box defined by \leftalign, not the height.
+%% up by #2 (also scaled by \outputscale).
%%
\gdef\lyitem#1#2#3{
- \raise#2\outputscale \leftalign{
- \kern#1\outputscale
- #3}}
-
-%% All LilyPond music data is enclosed in this macro (as fifth argument).
-%% The data is first put into a box with zero height and depth which is
-%% then moved to the right by #1 and moved down by #2. After this, it is
-%% put into a zero-width box, giving it a height #4 (and depth zero).
-%% Finally, the box is raised so that its true height is exactly the
-%% distance from one baseline to the next.
+ \raise #2\outputscale \hbox to 0pt {
+ \kern #1\outputscale
+ #3
+ \hss}}
+
+%% All LilyPond music data is enclosed in this macro (as third argument).
+%% The data (which consists of boxes with zero width) gets an artificial
+%% width of #1 and a height of #2. The resulting box is then centered
+%% vertically along the x-height of the current font.
%%
-%% Parameters #1 to #4 are scaled by \outputscale.
+%% Parameters #1 and #2 are scaled by \outputscale.
%%
-\gdef\lybox#1#2#3#4#5{
- \lytempdim\baselineskip
- \advance\lytempdim -#4\outputscale
- \raise\lytempdim
- \vbox to #4\outputscale{
- \leftalign{
- \kern #1\outputscale
- \lower #2\outputscale \topalign{
- #5}}
- \vss}}
+\gdef\lybox#1#2#3{
+ \lytempdim #2\outputscale
+ \lytempdim -0.5\lytempdim
+ \advance\lytempdim 1ex
+ \leavevmode
+ \raise \lytempdim \hbox to #1\outputscale {
+ %% Convert depth of #3 into height only.
+ \vbox to #2\outputscale {\hbox{#3}\vss}
+ \hss}}
%% Produce a black bar (width #2, depth #3, height #4) with a vertical
%% offset #1. Everything is scaled by \outputscale.
%%
%% (Don't remove the spaces after the arguments to \input!)
%%
-\lilypondifundefined{lilypondpostscript}
- {\lilypondifundefined{pdfoutput}
- {\input lily-ps-defs }
- {\pdfoutput = 1
- \input lily-pdf-defs }}
- {}
-
+%
+%% In teTeX-3.0, latex is actually pdfetex, and we need
+%% ifpdf.sty to determinine if we are really *tex or pdf*tex.
+%
+%% \input ifpdf.sty
+%
+%% However, ifpfd.sty is too smart for LilyPond, so we copy the
+%% logic here. Using \input ifpdf.sty is a no-op when using latex,
+%% and the \ifpdf switch is needed before \documentclass, using
+%% \usepackage{ifpdf} is not an option.
+%
+\input lily-ps-defs
+
+% barfs with texi
+% Runaway argument?
+%{
+%! Forbidden control sequence found while scanning use of \lilypondfirst.
+%<inserted text>
+% \par
+%<to be read again>
+% \newif
+%l.330 {\newif
+% \ifpdf
+%?
+%
+%%
+%\lilypondifundefined{lilypondpostscript}
+% {\newif\ifpdf
+% \ifx\pdfoutput\undefined
+% \else
+% \ifx\pdfoutput\relax
+% \else
+% \ifcase\pdfoutput
+% \else
+% \pdftrue
+% \fi
+% \fi
+% \fi
+% \ifpdf
+% {\input lily-pdf-defs }
+% \else
+% {\input lily-ps-defs }
+% \fi}
+% {}
+%
%% Restore newline functionality (disabled to avoid \par).
%%
\endlinechar \lilyponddefsELC