2 % WARNING: don't leave blank lines in the PS-code; they are
3 % transformed into \par
7 % Should put in a lily-ps.ps header?
12 % header info (macros/defs, etc) should go into a \special{! ... },
13 % note the ! sign. See dvips.info for details.
17 % /foo { operatorname } bind def
19 % ``compiles'' operatorname binding in the body of foo, making
20 % the code faster, and more reliable (less flexible)
23 % transplant a TeX dimension into the PS output.
24 \def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\the\csname #1\endcsname) deftexdimen}}
26 \def\turnOnPostScript{%
28 % This sets CTM so that you get to the currentpoint
29 % by executing a 0 0 moveto
30 \special{ps: @beginspecial @setspecial ##1 @endspecial}
33 % width, slope, height
35 \special{! % round cappings
39 2 div /beam_thick exch def
42 beam_slope beam_wd mul /beam_ht exch def
43 0 beam_thick neg moveto
44 beam_wd beam_ht rlineto
45 0 beam_thick 2 mul rlineto
49 % PS helper: convert (0.2pt) to the token 0.2
50 /settexdimen { /thestring exch def
51 thestring 0 thestring length 2 sub
63 \PSsetTeXdimen{staffrulethickness}
64 \PSsetTeXdimen{staffheight}
68 staffrulethickness setlinewidth
73 cresc_wd cresc_cont moveto
76 cresc_wd cresc_cont neg moveto
83 staffrulethickness setlinewidth
89 cresc_wd cresc_ht lineto
91 0 cresc_cont neg moveto
92 cresc_wd cresc_ht neg lineto
97 1 copy mul exch 1 copy mul add sqrt
99 staffrulethickness 1.2 mul /plet_t exch def
109 staffheight 2 div /plet_gapx exch def
110 plet_dy plet_dx div plet_gapx mul /plet_gapy exch def
111 staffheight 4 div dir mul /plet_h exch def
115 plet_dx plet_gapx sub 2 div
116 plet_dy plet_gapy sub 2 div plet_h add lineto
117 plet_dx plet_gapx add 2 div
118 plet_dy plet_gapy add 2 div plet_h add moveto
119 plet_dx plet_dy plet_h add lineto
120 plet_dx plet_dy lineto
126 staffrulethickness setlinewidth
148 staffheight 4 div /interline exch def
153 /traject_alpha exch def
154 traject_ds traject_alpha sin mul add
156 traject_ds traject_alpha cos mul add
160 interline 2 div /bracket_b exch def
161 interline 2 mul /bracket_w exch def
162 staffrulethickness /stafflinethickness exch def
163 stafflinethickness 2 mul /bracket_t exch def
164 interline 1.5 mul /bracket_v exch def
165 bracket_v /bracket_u exch def
166 50 /bracket_alpha exch def
173 bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
174 bracket_alpha bracket_v -0.15 mul bracket_traject
177 0 bracket_v 0.5 mul bracket_traject
181 bracket_b bracket_h bracket_t sub
182 0 bracket_v 0.4 mul bracket_traject
184 bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
185 bracket_alpha bracket_v -0.25 mul bracket_traject
187 bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
189 bracket_b bracket_h bracket_t sub
210 2 div bracket_b add /bracket_h exch def
211 bracket_t setlinewidth
228 \def\turnOnExperimentalFeatures{%
229 % draw a slur in embedded postscript