-% Attempt to keep lilypiecetitle together with the piece:
-\def\myfilbreak{\par\vfil\penalty200\vfilneg}
-
-% stacked horizontal lines
-\def\interscoreline{\vskip 16pt\myfilbreak}
-\def\placebox#1#2#3{%
- \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}}%
-
-% Are we using PDFTeX? If so, use pdf definitions to translate
-% \embeddedps commands to embedded PDF.
-\ifx\pdfoutput\undefined
- \input lily-ps-defs
-\else
- \pdfoutput=1
- \input lily-pdf-defs
-\fi
-
-\def\EndLilyPondOutput{%
- \csname bye\endcsname
+\gdef\lilypondstart{
+ \begingroup
+ \catcode `\@=11\relax
+ % \@nodocument is defined as \relax after `\begin{document}'
+ \lilypondifundefined{@nodocument}
+ {
+ % either plain TeX or texinfo or not at the beginning of LaTeX input
+ \def\x{\endgroup}
+ }
+ {
+ % provide a proper LaTeX preamble (for A4 paper format)
+ \def\x{
+ \endgroup
+ \def\lilyponddocument{}
+ \documentclass[a4paper]{article}
+ \pagestyle{empty}
+ % \begin is defined as \outer in texinfo, thus we use \csname
+ \csname begin\endcsname{document}
+ % center staves horizontally on page
+ \ifdim\lilypondpaperlinewidth\lilypondpaperunit > 0pt
+ \hsize\lilypondpaperlinewidth\lilypondpaperunit
+ % we abuse \scoreshift temporarily
+ \scoreshift \paperwidth
+ \advance\scoreshift -\the\hsize
+ \scoreshift 0.5\scoreshift
+ \advance\scoreshift -1in
+ \oddsidemargin \scoreshift
+ \evensidemargin \scoreshift
+ \fi
+ \parindent 0pt
+ }
+ }
+
+ \x
+
+ \lilypondifundefined{mustmakelilypondtitle}
+ {}
+ {\makelilypondtitle}
+
+ \lilypondifundefined{mustmakelilypondpiecetitle}
+ {}
+ {\makelilypondpiecetitle}
+}
+
+\gdef\lilypondend{
+ \lilypondifundefined{lilypondbook}
+ {\lilypondifundefined{lilypondpaperlastpagefill}
+ {\vskip 0pt plus \lilypondpaperinterscorelinefill00 fill}
+ {}
+ }
+ {}
+
+ \begingroup
+ \lilypondifundefined{lilyponddocument}
+ {
+ \def\x{\endgroup}
+ }
+ {
+ \def\x{
+ \endgroup
+ \csname end\endcsname{document}
+ }
+ }
+
+ \x
+}
+
+% this is an inversed \loop ... \repeat macro
+\def\lilypondloop#1\lilypondrepeat{
+ \def\lilypondbody{#1}
+ \lilyponditerate
+}
+
+\def\lilyponditerate{
+ % \if ...
+ \lilypondbody
+ \let\lilypondnext \relax
+ \else
+ \let\lilypondnext \lilyponditerate
+ \fi
+ \lilypondnext
+}
+
+% the following macro is executed only once
+\gdef\lilypondspecial{
+ \special{header=music-drawing-routines.ps}
+ \gdef\lilypondspecial{}
+}
+
+% the feta characters
+\input feta20
+
+\global\font\fetasixteen = feta16
+\gdef\fetafont{\fetasixteen}
+\gdef\fetachar#1{\hbox{\fetasixteen#1}}
+
+\gdef\botalign#1{
+ \vbox to 0pt{\vss #1}
+}
+\gdef\leftalign#1{
+ \hbox to 0pt{#1\hss}
+}
+
+\gdef\lyitem#1#2#3{
+ \botalign{
+ \hbox{\raise #1\outputscale
+ \leftalign{\kern #2\outputscale #3}}
+ }