%% sinewaves11.ldf
%% Created by Laurence D. Finston (LDF) So 20. Aug 21:52:58 CEST 2023

%% * (1) Copyright and License.

%%%% Copyright (C) 2023 Laurence Finston

%%%% This file is free software; you can redistribute it and/or modify 
%%%% it under the terms of the GNU General Public License as published by 
%%%% the Free Software Foundation; either version 3 of the License, or 
%%%% (at your option) any later version.  

%%%% This file is distributed in the hope that it will be useful, 
%%%% but WITHOUT ANY WARRANTY; without even the implied warranty of 
%%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
%%%% GNU General Public License for more details.  

%%%% You should have received a copy of the GNU General Public License 
%%%% along with this file; if not, write to the Free Software 
%%%% Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 

%%%% Please send bug reports to Laurence.Finston@gmx.de

%%%% The author can be contacted at: 

%%%% Laurence Finston 
%%%% Laurence.Finston@gmx.de

input "plainldf.lmc";

medium_pen := pencircle scaled (.333mm, .333mm, .333mm);

verbatim_tex   "\magnification=\magstep2\font\huge=cmbx12 scaled 4000"
             & "\font\Large=cmbx12 scaled 3000\font\large=cmbx12 scaled 1600";

bool do_png;
do_png := false; % true; % 

if do_png:
  verbatim_metapost   "outputformat:=\"png\";outputtemplate := \"%j_%3c.png\";"
                    & "outputformatoptions := \"format=rgb antialias=none\";";
else:
  verbatim_metapost "prologues := 3;outputtemplate := \"%j_%3c.eps\";dotlabeldiam:=2mm;";
fi;

%% * (1)

point p[];
path q[];
rectangle r[];
transform t[];

string s;

focus f;

set f with_position (0, 10, -40) with_direction (0, 10, 10) 
  with_distance 45;

numeric frame_wd;
numeric frame_ht;

% \special{papersize=400mm, 225mm} %% Frame size, proportion 16x9
% \hsize=400mm
% \vsize=225mm

%% (* (/ 300 16.0) 9) 168.75

%% (* (/ 30.0 16) 9) 16.875


picture v[];

pen huge_pen;

huge_pen := pensquare scaled (2mm, 2mm, 2mm);


%% * (1)

pickup medium_pen;

%% * (1)

color_vector cv_zero;
color_vector cv_one;
color_vector cv_two;
color_vector cv_three;
color_vector cv_four;
color_vector cv_five;
color_vector cv_six;
color_vector cv_seven;
color_vector cv_eight;

color orange_rgb;


color D;

n := 1/12;

for i = 15 downto 0:
  m := .3 + i*n;
  D := (m, 0, 0);
  cv_zero += D;
  D  := (0, m, 0);
  cv_one += D;
  D  := (0, 0, m);
  cv_two += D;
  D  := (m, m, 0);
  cv_three += D;
  D  := (m, 0, m);
  cv_four += D;
  D  := (0, m, m);
  cv_five += D;
  D := (m, 0.647m, 0); % orange
  cv_six += D;
  D  := (m, m, m);
  cv_seven += D;
  D  := (.25, m, m);
  cv_eight += D;
endfor;

%% * (1)

sinewave s[];

pickup medium_pen;

dot_pen := pencircle scaled (2mm, 2mm, 2mm);

bool do_labels;
do_labels := false; % true; %

set s0 with_amplitude 8 with_frequency 1 with_phase 0 with_increment .1
  with_period 8pi;


r0 := get_rectangle s0 with_scaled (1, 1.025);


% message "r0:";
% show r0;
% pause;

p11 := get_center r0;


for i = 0 upto 3:
  p[i] := get_point (i) r0;
endfor;


for i = 0 upto 3:
  p[i+4] := mediate(get_point (i) r0, get_point((i+1) mod 4) r0);
endfor;

rectangle frame;

n := magnitude(p2 - p1);

frame_ht := n;

frame_wd := n * 16/9;

frame := ((-.5frame_wd, -.5frame_ht), (.5frame_wd, -.5frame_ht),
          (.5frame_wd, .5frame_ht), (-.5frame_wd, .5frame_ht));

p10 := get_center frame;

shift frame by (p11 - p10);


%% * (1)

beginfig(300);
  draw frame with_pen big_square_pen;
  s := "\setbox0=\hbox{{\huge Sine Waves Nr.~11}}"
       &  "\vbox{\copy0\vskip2cm"
       & "\hbox to \wd0{\hss{\Large By}\hss}\vskip1cm"
       & "\hbox to \wd0{\hss{\Large Laurence Finston}\hss}\vskip2.5cm"
       & "\hbox to \wd0{\hss{\large Copyright (C) 2023 Laurence Finston}\hss}"
       & "}";
  label(s, p11);
  %dotlabel.top("$p_{10}$", p11);
endfig with_projection parallel_x_y;

beginfig(301);
  draw frame with_pen big_square_pen;
  s :=   "\hbox{\hfil{\Large Color Flow Nr.~2}\hfil}";
  label(s, p11);
  %dotlabel.top("$p_{11}$", p11);
endfig with_projection parallel_x_y;

beginfig(400);
  draw frame with_pen big_square_pen;
  s :=   "\hbox{\hfil{\huge The End}\hfil}";
  label(s, p11);
  %dotlabel.top("$p_{11}$", p11);
endfig with_projection parallel_x_y;

%% * (1)

k := 7.5;
for i = 1 upto 15:
  set s[i] with_amplitude k with_frequency 1 with_phase 0 with_increment .1
    with_period 8pi;
  k-=.5;
endfor;

% message "n:";
% show n;
%pause;

for i = 0 upto 6:
  n := length s15;
  n /= 8;
  n *= (i+1);
  n := floor n;
  p[12+i] := get_point (n) s15;
endfor;

%% * (1)

%% This works.  LDF 2023.08.18.

n := length s0;
n /= 8;
n := floor n;

for i = 0 upto 15:
  q[i] := s[i];
  q[i+20] := subpath(0, n) of q[i];
endfor;

%% q41--q55

for i = 1 upto 15:
  q[i+40] := p7 & q[i+20] & p12 & reversed q[i+20-1] & p7;
  q[i+40] += cycle;

  for j = 1 upto 3:
    q[i+40+20j] := q[i+40] shifted by (j*(p14 - p12));
  endfor;
endfor;


% message "q35:";
% show q35;
%pause;

%% * (1)

path Q[];

path_vector pv;

for j = 40 step 20 until 100:
  for i = 1 upto 15:
    q[200+j+i] := (q[j+i] rotated_around (p5, p7)) shifted by (p12 -p7);
  endfor;
endfor;


if false: % true; %
for j = 40 step 20 until 100:
  for i = 1 upto 15:
    pv := resolve q[j+i] to 500;
    q[j+i] := pv0;
    q[j+i] += cycle;
    clear pv;
  endfor;
endfor;
fi;

m := 30;
k := 0;
for i = 15 downto 0:

  if false:
    s := "\hbox to 0pt{\large i == " & decimal i & ", m == " & decimal m & ", k == " & decimal k & "\hss}";
    label.rt(s, p0 shifted (0, -2));
  fi;
  
  beginfig(k);
    filldraw frame with_pen big_square_pen with_fill_color black;
    fill r0;
    %draw r0 with_pen big_square_pen with_color blue;
    draw frame with_pen big_square_pen;

    if do_labels:
      dotlabel.top("$p_{12}$", p12);
      dotlabel.top("$p_{13}$", p13);
      dotlabel.top("$p_{14}$", p14);
      dotlabel.top("$p_{15}$", p15);
      dotlabel.top("$p_{16}$", p16);
      dotlabel.top("$p_{17}$", p17);
      dotlabel.top("$p_{18}$", p18);
      dotlabel.lft("$p_{7}$", p7);
      dotlabel.rt("$p_{5}$", p5);
    fi;
    for j = 15 downto i:
      % if k == 0:
      % 	draw s[j] with_pen big_pen with_color white;
      % fi;
      % This works:
      % Q[j] := s[j];
      % rotate Q[j] (30, -40);
      % draw Q[j] with_pen big_pen with_color blue;
      % LDF 2023.08.19.
    endfor;

    if k == 15:
      fill q41  with_color cv_zero1;
      fill q61  with_color cv_one1;
      fill q81  with_color cv_two1;
      fill q101 with_color cv_three1;

      fill q241 with_color cv_zero1;
      fill q261 with_color cv_one1;
      fill q281 with_color cv_two1;  
      fill q301 with_color cv_three1;
    fi;

    if k > 13:

      fill q42  with_color cv_zero2;
      fill q62  with_color cv_one2;
      fill q82  with_color cv_two2;
      fill q102 with_color cv_three2;

      fill q242 with_color cv_zero2;
      fill q262 with_color cv_one2;
      fill q282 with_color cv_two2;  
      fill q302 with_color cv_three2;

    fi;

    if k > 12:

      fill q43  with_color cv_zero3;
      fill q63  with_color cv_one3;
      fill q83  with_color cv_two3;
      fill q103 with_color cv_three3;

      fill q243 with_color cv_zero3;
      fill q263 with_color cv_one3;
      fill q283 with_color cv_two3;  
      fill q303 with_color cv_three3;

    fi;

    if k > 11:
      fill q44  with_color cv_zero4;
      fill q64  with_color cv_one4;
      fill q84  with_color cv_two4;
      fill q104 with_color cv_three4;

      fill q244 with_color cv_zero4;
      fill q264 with_color cv_one4;
      fill q284 with_color cv_two4;  
      fill q304 with_color cv_three4;
    fi;

    if k > 10:
      fill q45  with_color cv_zero5;
      fill q65  with_color cv_one5;
      fill q85  with_color cv_two5;
      fill q105 with_color cv_three5;

      fill q245 with_color cv_zero5;
      fill q265 with_color cv_one5;
      fill q285 with_color cv_two5;  
      fill q305 with_color cv_three5;

    fi;

    if k > 9:
      fill q46  with_color cv_zero6;
      fill q66  with_color cv_one6;
      fill q86  with_color cv_two6;
      fill q106 with_color cv_three6;

      fill q246 with_color cv_zero6;
      fill q266 with_color cv_one6;
      fill q286 with_color cv_two6;  
      fill q306 with_color cv_three6;
    fi;

    if k > 8:
      fill q47  with_color cv_zero7;
      fill q67  with_color cv_one7;
      fill q87  with_color cv_two7;
      fill q107 with_color cv_three7;

      fill q247 with_color cv_zero7;
      fill q267 with_color cv_one7;
      fill q287 with_color cv_two7;  
      fill q307 with_color cv_three7;

    fi;

    if k > 7:
      fill q48  with_color cv_zero8;
      fill q68  with_color cv_one8;
      fill q88  with_color cv_two8;
      fill q108 with_color cv_three8;

      fill q248 with_color cv_zero8;
      fill q268 with_color cv_one8;
      fill q288 with_color cv_two8;  
      fill q308 with_color cv_three8;

    fi;

    if k > 6:
      fill q49  with_color cv_zero9;
      fill q69  with_color cv_one9;
      fill q89  with_color cv_two9;
      fill q109 with_color cv_three9;

      fill q249 with_color cv_zero9;
      fill q269 with_color cv_one9;
      fill q289 with_color cv_two9;  
      fill q309 with_color cv_three9;
    fi;

    if k > 5:
      fill q50 with_color cv_zero10;
      fill q70 with_color cv_one10;
      fill q90 with_color cv_two10;
      fill q110 with_color cv_three10;

      fill q250 with_color cv_zero10;
      fill q270 with_color cv_one10;
      fill q290 with_color cv_two10;
      fill q310 with_color cv_three10;
    fi;

    if k > 4:
      fill q51 with_color cv_zero11;
      fill q71 with_color cv_one11;
      fill q91 with_color cv_two11;
      fill q111 with_color cv_three11;

      fill q251 with_color cv_zero11;
      fill q271 with_color cv_one11;
      fill q291 with_color cv_two11;
      fill q311 with_color cv_three11;
    fi;

    if k > 3:
      fill q52 with_color cv_zero12;
      fill q72 with_color cv_one12;
      fill q92 with_color cv_two12;
      fill q112 with_color cv_three12;

      fill q252 with_color cv_zero12;
      fill q272 with_color cv_one12;
      fill q292 with_color cv_two12;
      fill q312 with_color cv_three12;
    fi;

    if k > 2:
      fill q53 with_color cv_zero13;
      fill q73 with_color cv_one13;
      fill q93 with_color cv_two13;
      fill q113 with_color cv_three13;

      fill q253 with_color cv_zero13;
      fill q273 with_color cv_one13;
      fill q293 with_color cv_two13;
      fill q313 with_color cv_three13;
    fi;


    if k > 1:
      fill q54 with_color cv_zero14;
      fill q74 with_color cv_one14;
      fill q94 with_color cv_two14;
      fill q114 with_color cv_three14;

      fill q254 with_color cv_zero14;
      fill q274 with_color cv_one14;
      fill q294 with_color cv_two14;
      fill q314 with_color cv_three14;
    fi;

    if k > 0:
      fill q55 with_color cv_zero15;
      fill q75 with_color cv_one15;
      fill q95 with_color cv_two15;
      fill q115 with_color cv_three15;

      fill q255 with_color cv_zero15;
      fill q275 with_color cv_one15;
      fill q295 with_color cv_two15;
      fill q315 with_color cv_three15;
    fi;

    clear v0;
    v0 := current_picture;

  endfig with_projection parallel_x_y;

  if k <> 15:
    beginfig(m);
      current_picture := v0;
    endfig with_projection parallel_x_y;
    m-= 1;
  fi;
  
  k+=1;

endfor;

j := .5;
for i = 0 upto 15:
  set s[31+i] with_amplitude j with_frequency 1 with_phase pi with_increment .1
    with_period 8pi;
  j+=.5;
endfor;

for i = 0 upto 6:
  n := length s31;
  n /= 8;
  n *= (i+1);
  n := floor n;
  p[19+i] := get_point (n) s31;
endfor;


%% * (1) Figures 31--61 (31 figures.)

k := 61; % Last fig. created by this section.  LDF 2023.08.20.
for i = 0 upto 15:
  %message "i+31: " & decimal (i+31);
  beginfig(31+i);
    filldraw frame with_pen big_square_pen with_fill_color black;
    %draw frame with_pen big_square_pen;
    %draw r0 with_pen big_square_pen with_color blue;
    % if i == 0:
    %   draw s[31+i] with_pen big_pen with_color white;
    % fi;
    if do_labels:
      dotlabel.rt("$p_5$", p5);
      dotlabel.lft("$p_7$", p7);
      dotlabel.top("$p_{19}$", p19);
      dotlabel.top("$p_{20}$", p20);
      dotlabel.top("$p_{21}$", p21);
      dotlabel.top("$p_{22}$", p22);
      dotlabel.top("$p_{23}$", p23);
      dotlabel.top("$p_{24}$", p24);
      dotlabel.top("$p_{25}$", p25);
    fi;
    n := 31+i;
    % for j = n downto 31:
    %   draw s[j] with_pen big_pen with_color white;
    % endfor;

    if i == 15:

      fill q41 rotated_around (p5, p7)  with_color cv_five1;
      fill q61  rotated_around (p5, p7) with_color cv_four1;
      fill q81  rotated_around (p5, p7) with_color cv_seven1;
      fill q101 rotated_around (p5, p7) with_color cv_six1;  
					             
      fill q241 rotated_around (p5, p7) with_color cv_five1; 
      fill q261 rotated_around (p5, p7) with_color cv_four1; 
      fill q281 rotated_around (p5, p7) with_color cv_seven1;
      fill q301 rotated_around (p5, p7) with_color cv_six1;  
    fi;

    if i > 13:

      fill q42 rotated_around (p5, p7)  with_color cv_five2;  
      fill q62  rotated_around (p5, p7) with_color cv_four2;  
      fill q82  rotated_around (p5, p7) with_color cv_seven2; 
      fill q102 rotated_around (p5, p7) with_color cv_six2;   
					                      
      fill q242 rotated_around (p5, p7) with_color cv_five2;  
      fill q262 rotated_around (p5, p7) with_color cv_four2;  
      fill q282 rotated_around (p5, p7) with_color cv_seven2; 
      fill q302 rotated_around (p5, p7) with_color cv_six2;   
    fi;

    if i > 12:
      fill q43 rotated_around (p5, p7)  with_color cv_five3;  
      fill q63  rotated_around (p5, p7) with_color cv_four3;  
      fill q83  rotated_around (p5, p7) with_color cv_seven3; 
      fill q103 rotated_around (p5, p7) with_color cv_six3;   
					                      
      fill q243 rotated_around (p5, p7) with_color cv_five3;  
      fill q263 rotated_around (p5, p7) with_color cv_four3;  
      fill q283 rotated_around (p5, p7) with_color cv_seven3; 
      fill q303 rotated_around (p5, p7) with_color cv_six3;   
    fi;

    if i > 11:
      fill q44 rotated_around (p5, p7)  with_color cv_five4;  
      fill q64  rotated_around (p5, p7) with_color cv_four4;  
      fill q84  rotated_around (p5, p7) with_color cv_seven4; 
      fill q104 rotated_around (p5, p7) with_color cv_six4;   
					                      
      fill q244 rotated_around (p5, p7) with_color cv_five4;  
      fill q264 rotated_around (p5, p7) with_color cv_four4;  
      fill q284 rotated_around (p5, p7) with_color cv_seven4; 
      fill q304 rotated_around (p5, p7) with_color cv_six4;   

    fi;

    if i > 10:
      fill q45 rotated_around (p5, p7)  with_color cv_five5;  
      fill q65  rotated_around (p5, p7) with_color cv_four5;  
      fill q85  rotated_around (p5, p7) with_color cv_seven5; 
      fill q105 rotated_around (p5, p7) with_color cv_six5;   
					                      
      fill q245 rotated_around (p5, p7) with_color cv_five5;  
      fill q265 rotated_around (p5, p7) with_color cv_four5;  
      fill q285 rotated_around (p5, p7) with_color cv_seven5; 
      fill q305 rotated_around (p5, p7) with_color cv_six5;   
    fi;

    if i > 9:
      fill q46 rotated_around (p5, p7)  with_color cv_five6;  
      fill q66  rotated_around (p5, p7) with_color cv_four6;  
      fill q86  rotated_around (p5, p7) with_color cv_seven6; 
      fill q106 rotated_around (p5, p7) with_color cv_six6;   
					                      
      fill q246 rotated_around (p5, p7) with_color cv_five6;  
      fill q266 rotated_around (p5, p7) with_color cv_four6;  
      fill q286 rotated_around (p5, p7) with_color cv_seven6; 
      fill q306 rotated_around (p5, p7) with_color cv_six6;   
    fi;

    if i > 8:
      fill q47 rotated_around (p5, p7)  with_color cv_five7;  
      fill q67  rotated_around (p5, p7) with_color cv_four7;  
      fill q87  rotated_around (p5, p7) with_color cv_seven7; 
      fill q107 rotated_around (p5, p7) with_color cv_six7;   
					                      
      fill q247 rotated_around (p5, p7) with_color cv_five7;  
      fill q267 rotated_around (p5, p7) with_color cv_four7;  
      fill q287 rotated_around (p5, p7) with_color cv_seven7; 
      fill q307 rotated_around (p5, p7) with_color cv_six7;   
    fi;

    if i > 7:
      fill q48 rotated_around (p5, p7)  with_color cv_five8;  
      fill q68  rotated_around (p5, p7) with_color cv_four8;  
      fill q88  rotated_around (p5, p7) with_color cv_seven8; 
      fill q108 rotated_around (p5, p7) with_color cv_six8;      
					                      
      fill q248 rotated_around (p5, p7) with_color cv_five8;      
      fill q268 rotated_around (p5, p7) with_color cv_four8;     
      fill q288 rotated_around (p5, p7) with_color cv_seven8;    
      fill q308 rotated_around (p5, p7) with_color cv_six8;      
    fi;

    if i > 6:
      fill q49 rotated_around (p5, p7)  with_color cv_five9;  
      fill q69  rotated_around (p5, p7) with_color cv_four9;  
      fill q89  rotated_around (p5, p7) with_color cv_seven9; 
      fill q109 rotated_around (p5, p7) with_color cv_six9;      
					                      
      fill q249 rotated_around (p5, p7) with_color cv_five9;      
      fill q269 rotated_around (p5, p7) with_color cv_four9;     
      fill q289 rotated_around (p5, p7) with_color cv_seven9;    
      fill q309 rotated_around (p5, p7) with_color cv_six9;      
    fi;

    if i > 5:
      fill q50 rotated_around (p5, p7)  with_color cv_five10;  
      fill q70  rotated_around (p5, p7) with_color cv_four10;  
      fill q90  rotated_around (p5, p7) with_color cv_seven10; 
      fill q110 rotated_around (p5, p7) with_color cv_six10;      
					                      
      fill q250 rotated_around (p5, p7) with_color cv_five10;      
      fill q270 rotated_around (p5, p7) with_color cv_four10;     
      fill q290 rotated_around (p5, p7) with_color cv_seven10;    
      fill q310 rotated_around (p5, p7) with_color cv_six10;      
    fi;

    if i > 4:
      fill q51 rotated_around (p5, p7)  with_color cv_five11;  
      fill q71  rotated_around (p5, p7) with_color cv_four11;  
      fill q91  rotated_around (p5, p7) with_color cv_seven11; 
      fill q111 rotated_around (p5, p7) with_color cv_six11;      
					                        
      fill q251 rotated_around (p5, p7) with_color cv_five11;      
      fill q271 rotated_around (p5, p7) with_color cv_four11;     
      fill q291 rotated_around (p5, p7) with_color cv_seven11;    
      fill q311 rotated_around (p5, p7) with_color cv_six11;      
    fi;

    if i > 3:
      fill q52 rotated_around (p5, p7)  with_color cv_five12;  
      fill q72  rotated_around (p5, p7) with_color cv_four12;  
      fill q92  rotated_around (p5, p7) with_color cv_seven12; 
      fill q112 rotated_around (p5, p7) with_color cv_six12;      
					                      
      fill q252 rotated_around (p5, p7) with_color cv_five12;      
      fill q272 rotated_around (p5, p7) with_color cv_four12;     
      fill q292 rotated_around (p5, p7) with_color cv_seven12;    
      fill q312 rotated_around (p5, p7) with_color cv_six12;      
    fi;

    if i > 2:
      fill q53 rotated_around (p5, p7)  with_color cv_five13;  
      fill q73  rotated_around (p5, p7) with_color cv_four13;  
      fill q93  rotated_around (p5, p7) with_color cv_seven13; 
      fill q113 rotated_around (p5, p7) with_color cv_six13;      
					                      
      fill q253 rotated_around (p5, p7) with_color cv_five13;      
      fill q273 rotated_around (p5, p7) with_color cv_four13;     
      fill q293 rotated_around (p5, p7) with_color cv_seven13;    
      fill q313 rotated_around (p5, p7) with_color cv_six13;      
    fi;


    if i > 1:
      fill q54 rotated_around (p5, p7)  with_color cv_five14;  
      fill q74  rotated_around (p5, p7) with_color cv_four14;  
      fill q94  rotated_around (p5, p7) with_color cv_seven14; 
      fill q114 rotated_around (p5, p7) with_color cv_six14;      
					                      
      fill q254 rotated_around (p5, p7) with_color cv_five14;      
      fill q274 rotated_around (p5, p7) with_color cv_four14;     
      fill q294 rotated_around (p5, p7) with_color cv_seven14;    
      fill q314 rotated_around (p5, p7) with_color cv_six14;      
    fi;

    if i > 0:
      fill q55 rotated_around (p5, p7)  with_color cv_five15;  
      fill q75  rotated_around (p5, p7) with_color cv_four15;  
      fill q95  rotated_around (p5, p7) with_color cv_seven15; 
      fill q115 rotated_around (p5, p7) with_color cv_six15;      
					                      
      fill q255 rotated_around (p5, p7) with_color cv_five15;      
      fill q275 rotated_around (p5, p7) with_color cv_four15;     
      fill q295 rotated_around (p5, p7) with_color cv_seven15;    
      fill q315 rotated_around (p5, p7) with_color cv_six15;      
    fi;

    clear v0;
    v0 := current_picture;
  endfig with_projection parallel_x_y;
  if i <> 15:
    %message "k: " & decimal k;
    beginfig(k);
      current_picture := v0;
    endfig with_projection parallel_x_y;
    k -= 1;
  fi;
endfor;


%% * (1)

bye;



%% ** (2) 

%% * (1) Emacs-Lisp code for use in indirect buffers when using the          
%%       GNU Emacs editor.  The local variable list is not evaluated when an 
%%       indirect buffer is visited, so it's necessary to evaluate the       
%%       following s-expression in order to use the facilities normally      
%%       accessed via the local variables list.                              
%%       LDF 2004.02.12.

%% (progn (metafont-mode) (outline-minor-mode t) (setq fill-column 80) (ignore '(  
%% )) (setq outline-regexp "%% [*\f]+"))

%% * (1) Local variables for Emacs.

%% Local Variables:
%% mode:Metapost
%% eval:(outline-minor-mode t)
%% eval:(read-abbrev-file abbrev-file-name)
%% outline-regexp:"%% [*\f]+"
%% End:
