+% lily-ps-defs.tex
%
-% WARNING: don't leave blank lines in the PS-code; they are
-% transformed into \par
-%
+\edef\lilypsdefsELC{\the\endlinechar}%
+\endlinechar -1\relax
-%
-% header info (macros/defs, etc) should go into a \special{! ... },
+% Header info (macros/defs, etc) should go into a \special{! ... };
% note the ! sign. See dvips.info for details.
%
-% escape the colon with \string to avoid problems with french babel
-%
-\def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\csname #1\endcsname) set_tex_dimen}}
-\def\lilySpace{ }
-\def\turnOnPostScript{%
- % This sets CTM so that you get to the currentpoint
- % by executing a 0 0 moveto
- \def\embeddedps##1{%
- \special{ps\string: @beginspecial @setspecial
- \lilypondpaperoutputscale\lilySpace
- \lilypondpaperoutputscale\lilySpace
- % FUCKING REDHAT XDVI -- ARG!
- skeel ##1 @endspecial}%
- }
- \PSsetTeXdimen{lilypondpaperblotdiameter}
+% We protect punctuation characters with \string to avoid problems with
+% language specific shorthands (e.g. `:' for French, `"' for German, etc.).
+
+\gdef\lilypondsetdimen#1{
+ \expandafter\gdef\csname #1ps\endcsname{}
+ \special{
+ \string!
+ /#1 (\csname #1\endcsname) set_tex_dimen
+ }
}
-\def\turnOnExperimentalFeatures{}
+\gdef\lilypondspace{ }
+
+\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}
+ }
+
+ \lilypondifundefined{lilypondpaperblotdiameterps}
+ {\lilypondsetdimen{lilypondpaperblotdiameter}}
+ {}
+}
+
+\gdef\lilypondexperimentalfeatures{}
+
+\endlinechar \lilypsdefsELC
+\endinput