-\def\turnOnPostScript{%
-\special{!
-% PS helper: convert (0.2pt) to the token 0.2
-/settexdimen
-{
- /thestring exch def
- thestring 0 thestring length 2 sub
- getinterval
- token
- pop exch pop
-} def
-%
-/deftexdimen
-{
- settexdimen
- def
-} def
-}
-\PSsetTeXdimen{staffrulethickness}
-\PSsetTeXdimen{staffheight}
-% urg, no dvips.info over here...
-%\special{! \input lily.ps }
-\special{!
-(lily.ps) findlibfile
-{
- exch pop //systemdict /run get exec
-}
-{
- /undefinedfilename signalerror
-} ifelse
-}
-%
-\def\embeddedps##1{%
- % This sets CTM so that you get to the currentpoint
- % by executing a 0 0 moveto
- \special{ps: @beginspecial @setspecial ##1 @endspecial}
-}
-%
-%
-%\PSsetTeXdimen{staffrulethickness}
-%\PSsetTeXdimen{staffheight}
-}
+\gdef\lilypondpostscript{
+ %% A document processed with lilypond-book can contain music fragments in
+ %% different sizes. To reduce overhead, we define `lyscaleXXX' PS macros
+ %% only once.
+ \lilypondifundefined{lyscale\lilypondpaperoutputscale}
+ {\expandafter\gdef\csname lyscale\lilypondpaperoutputscale\endcsname{}
+ %% This sets CTM so that you get to the currentpoint
+ %% by executing a 0 0 moveto
+ \special{
+ \string!
+ /lyscale\lilypondpaperoutputscale
+ {\lilypondpaperoutputscale\lilypondspace\scaletounit %
+ dup scale} def}}
+ {}
+
+ \def\embeddedps##1{
+ \special{
+ \string"
+ lyscale\lilypondpaperoutputscale\lilypondspace ##1}}}