]> git.donarmstrong.com Git - lilypond.git/blobdiff - tex/lily-ps-defs.tex
Merge branch 'master' of ssh+git://git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / tex / lily-ps-defs.tex
index 68721567558b5478a8c0fc10e61d1f165a78e3c5..4a05f9d46fba820359d498e7d56eb8a9f41f3cef 100644 (file)
@@ -1,95 +1,43 @@
-%
-% WARNING: don't leave blank lines in the PS-code; they are
-% transformed into \par 
-%
-
-%
-% header info (macros/defs, etc) should go into a \special{! ... }, 
-% note the ! sign.  See dvips.info for details.
-%
-
-% Use of 
-% /foo { operatorname } bind def
-%
-% ``compiles'' operatorname binding in the body of foo, making
-% the code faster, and more reliable (less flexible)
-
-%must come before PSTeXDimen
-\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
-}
-% transplant a TeX dimension into the PS output.
-\def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\the\csname #1\endcsname) deftexdimen}}
-% must come before lily.ps
-\PSsetTeXdimen{stafflinethickness}
-\PSsetTeXdimen{staffheight}
-{%
-   \def\par{ }%         %Ugh.  Don't try this at home, kids!
-   % neat file-include trick by Piet van Oostrum <piet@cs.uu.nl>
-   \newread\defin 
-   \newtoks\toksfiledefi\newtoks\toksfiledefii 
-   \def\ifnot#1{#1\else\expandafter\expandafter\fi\iffalse\iftrue\fi} 
-   \def\filedef#1#2{%#1=command name, #2=file name 
-           \openin\defin=#2\relax\def#1{} 
-           \ifeof\defin
-                   \message{***************************************}
-                   \message{lily-ps-defs.tex: can't open `#2'}
-                   \message{***************************************}
-                   \end
-           \fi 
-           \loop\ifnot{\ifeof\defin}\read\defin to\tempfiledef
-           \toksfiledefi=\expandafter{#1}% 
-           \toksfiledefii=\expandafter{\tempfiledef}% 
-   %        \expandafter\special\expandafter{!\the\toksfiledefi\the\toksfiledefii}\repeat%
-          \global\edef#1{\the\toksfiledefi\the\toksfiledefii}\repeat%
-   }
-   %
-   % This seems a little backwards, but we don't want to include the PS
-   % stuff too early
-   %
-   \filedef\includelilyps{lily.ps}%
-   \expandafter\special{! \includelilyps}
-}
-
-
-
-\def\turnOnPostScript{%
-        \PSsetTeXdimen{stafflinethickness}
-        \PSsetTeXdimen{staffheight}
-        
-        % This sets CTM so that you get to the currentpoint
-        % by executing a 0 0 moveto
-        \def\embeddedps##1{%
-                \special{ps: @beginspecial @setspecial ##1 @endspecial}       
-        }
-        %
-
-        \special{! 
-/interline \mudelapaperinterline0  def % ugh.  Only works x.yyyy floats 
-stafflinethickness 1.2 mul /plet_t exch def
-interline 3 div /bracket_b exch def
-interline 2 mul /bracket_w exch def
-stafflinethickness 2 mul /bracket_t exch def
-interline 1.5 mul /bracket_v exch def
-bracket_v /bracket_u exch def
-50 /bracket_alpha exch def
-staffheight 4 div /interline exch def
-1 setlinecap}
-}
-
-\def\turnOnExperimentalFeatures{}
-
+%% lily-ps-defs.tex
+%%
+\edef\lilypsdefsELC{\the\endlinechar}%
+\endlinechar -1\relax
+
+%% Header info (macros/defs, etc) should go into a \special{! ... };
+%% note the ! sign.  See dvips.info for details.
+%%
+%% 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}}
+
+\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}}}
+
+\endlinechar \lilypsdefsELC
+\endinput
+
+%% end lily-ps-defs.tex