summaryrefslogtreecommitdiff
path: root/graphics/mcf2graph/mcf2graph.mf
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/mcf2graph/mcf2graph.mf')
-rw-r--r--graphics/mcf2graph/mcf2graph.mf64
1 files changed, 35 insertions, 29 deletions
diff --git a/graphics/mcf2graph/mcf2graph.mf b/graphics/mcf2graph/mcf2graph.mf
index 15aeb76519..f0dedd1648 100644
--- a/graphics/mcf2graph/mcf2graph.mf
+++ b/graphics/mcf2graph/mcf2graph.mf
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 4.48 Copyright (c) 2013-2020 Akira Yamaji
+% mcf2graph ver 4.49 Copyright (c) 2013-2020 Akira Yamaji
%
% Permission is hereby granted, free of charge, to any person obtaining a copy of this software
% and associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -60,7 +60,7 @@ if (known green)and(known ahlength):
color color_list[];
prologues:=3;
%-----------------------------------------------------------------------------------------
- fontmapfile "pdftex.map";
+%% fontmapfile "pdftex.map";
%-----------------------------------------------------------------------------------------
atomfont:=defaultfont:="";
out_file_aux:=jobname&"-info.aux";
@@ -125,7 +125,7 @@ fi
clearit;
%--------------------------------------------------------------------------------------------------
message "---------------------------------------------";
-message "This is mcf2graph ver 4.48 2020.01";
+message "This is mcf2graph ver 4.49 2020.07";
if f_MP=1:
if bboxmargin=0: message "output no image file";
elseif bboxmargin=1: message "output first font only";
@@ -156,7 +156,7 @@ let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == =
primarydef a at b = fat(a,b) enddef;
def fat(expr a,b)= mposition:=b; a enddef;
def ext(text TXT)= sw_ext_all:=1; def EXT_ALL = TXT enddef; enddef;
-def ext_clear= sw_ext_all:=0; def EXT_ALL = enddef; enddef;
+def ext_clear= sw_ext_all:=0; def EXT_ALL = enddef; enddef;
%--------------------------------------------------------------------------------------------------
?3:=?20:=Ph:=Ph1:=Ph2:=hz:=0; vt:=1;
ratio_chain_ring:= 0.66; ratio_atom_bond:=0.36;
@@ -249,8 +249,8 @@ def beginfont(text s)=
string info[],sumA,s_tag,s_var,cal_FM,cal_MW,cal_MW_str,cal_MI,cal_MI_str,
inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW;
%------------------------------------------------------------------------------------------------
- def ext=ext_font enddef;
- def add=add_mole enddef;
+ def ext=ext_to_font enddef;
+ def add=add_to_molecule enddef;
%------------------------------------------------------------------------------------------------
inf_NO:=inf_EN:=inf_JN:=inf_FM:=inf_CAS:=inf_USE:=inf_EXA:=inf_EXB:=inf_MW:="";
cal_MW:=cal_MW_str:=cal_FM:="";
@@ -274,7 +274,7 @@ def beginfont(text s)=
enddef;
%==================================================================================================
def endfont=
- if sw_ext_all=1: ext_font(EXT_ALL); fi
+ if sw_ext_all=1: ext_to_font(EXT_ALL); fi
if sw_trimming>=1:
nA:=nC:=4095; nB:=nD:=-4095;
for i=1 upto cntM:
@@ -311,8 +311,8 @@ def endfont=
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def set_def_MC=
- save /,//,/*,*/,**,*/*,~,^,`,``,<,>,&,:,=,\,\\,*\,\*,*\*,@,#,@#,$,{,},
- |,||,|||,|=,=|,|<,>|,|:,:|,_,d,w,z,inside_def_MC;
+ save /,//,/*,*/,**,*/*,~,^,`,``,<,>,&,:,=,\,\\,*\,\*,*\*,@,#,@#,$,
+ {,},|,||,|||,|=,=|,|<,>|,|:,:|,_,d,w,z,inside_def_MC;
inside_def_MC:=1;
_:=Me; d:=db; w:=wf; z:=zf;
tertiarydef a=b == if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef;
@@ -466,7 +466,7 @@ enddef;
%-------------------------------------------------------------------------------------------------
def com_par(expr a,b)= nCP:=nCP+1; comD[parts_int][nCP]:=a; parD[parts_int][nCP]:=b; enddef;
%-------------------------------------------------------------------------------------------------
-def com_par_ext(expr f)(expr c)(expr a,b)=
+def com_par_ex(expr f)(expr c)(expr a,b)=
if c>=parts_int_start::
for i==1 upto cntD[c]::
if comD[c][i]==_numeric:: com_par(_set_adr,parD[c][i]) com_par(a,b)
@@ -529,7 +529,7 @@ def ext_setup=
fi
enddef;
%--------------------------------------------------------------------------------------------------
-def add_mole(text TXT)=
+def add_to_molecule(text TXT)=
begingroup
save w,h,n,l,p,am,aw,A,B,plus,minus,lonepair,**,<<,/*;
numeric A[]dir,B[]up,A[]ang,B[]ang;
@@ -564,7 +564,7 @@ def add_mole(text TXT)=
endgroup;
enddef;
%--------------------------------------------------------------------------------------------------
-def ext_font(text TXT)=
+def ext_to_font(text TXT)=
begingroup
save w,h,wd,ht,n,p,am,aw;
pair p[];
@@ -730,8 +730,8 @@ def MC(text TXT)=
maxX,maxY,sA,sC,sD,pA,pB,factor,m_wd,m_ht,crR,CP,CPe,CPx,defaultsize,defaultscale;
%-----------------------------------------------------------------------------------------------
def CP= com_par enddef;
- def CPe= com_par_ext(0) enddef;
- def CPx= com_par_ext(1) enddef;
+ def CPe= com_par_ex(0) enddef;
+ def CPx= com_par_ex(1) enddef;
%-----------------------------------------------------------------------------------------------
string sA,sC,sD;
pair pA,pB;
@@ -863,7 +863,7 @@ def add_group=
if lineT=nl: store_group(_chg_len,_size_atom) store_group(_adj_ang,0) fi
if lineT<>nb: store_group(_mk_bond,0) fi
for i=1 upto cntD[par]: store_group(comD[par][i],parD[par][i]) endfor
- store_group(_com,_len_e) store_group(_com,_term)
+ store_group(_com,_len_e) store_group(_chg_env,hz) store_group(_com,_term)
if f_lineT=0: lineT:=si; fi
if f_lenT=0: lenT:=crR; fi
if f_rotT=0: rotT:=0; fi
@@ -1036,7 +1036,23 @@ def proc_skeleton(expr a)=
enddef;
%-------------------------------------------------------------------------------------------------
def add_bond(expr ROT)=
- if ROT=_arg_ang: nA:=proc_env(angT,envB); else: nA:=ROT; fi
+ if ROT=_arg_ang:
+ if cntB=0:
+ angT:=(angT-180) mod 360; nA:=180;
+ else:
+ nB:=(angT mod 360);
+ if envB>=parts_emb_start: nA:=parD[envB][cntB-temp_cntB];
+ else:
+ if envB=hz:
+ if nB=0:nA:= 60;ef nB<=90:nA:=-60;ef nB<=180:nA:= 60;ef nB<270:nA:=-60;else:nA:= 60; fi
+ ef envB=vt:
+ if nB=0:nA:=-60;ef nB<90: nA:= 60;ef nB<=180:nA:=-60;ef nB<=270:nA:=60;else:nA:=-60; fi
+ ef (envB>=-180)and(envB<=180): nA:=envB;
+ fi
+ fi
+ fi
+ else: nA:=ROT;
+ fi
if f_bra=0:
adrT:=cntA:=cntA+1; posA[cntA]:=posBs; angA[cntA]:=angT;
angX[cntA]:=(angT+nA/2+iif(nA>=0,-90,90)) mod 360;
@@ -1081,17 +1097,6 @@ def proc_cyc(expr n)= add_bond(angle(posA[n]-posBs)-angT); enddef;
vardef glu_atom(expr NUM)=
if numS[NUM]<>0: nE:=angT mod 90; nF:=0.5atom_wd;(iif(nE<45,sind(nE),cosd(nE))*nF)++nF else: 0 fi
enddef;
-%--------------------------------------------------------------------------------------------------
-vardef proc_env(expr ANG,ENV)=
- nA:=(ANG mod 360);
- if ENV>=parts_emb_start: parD[ENV][cntB-temp_cntB]
- else:
- if ENV=hz: if nA=0:60 ef nA<=90:-60 ef nA<=180:60 ef nA<270:-60 else:60 fi
- ef ENV=vt: if nA=0:-60 ef nA<90:60 ef nA<=180:-60 ef nA<=270:60 else:-60 fi
- ef (ENV>=-180)and(ENV<=180): ENV
- fi
- fi
-enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def draw_atom(expr NUM)=
begingroup
@@ -1101,7 +1106,8 @@ def draw_atom(expr NUM)=
picture bA;
%----------------------------------------------------------------------------------------------
sA:=strD[numS[NUM]]; slen:=length(sA)-1;
- nA:=angX[NUM]; dxA[NUM]:=dx:=iif((nA<=90)or(nA>=270),1,-1);
+ nA:=angX[NUM];
+ dxA[NUM]:=dx:=iif((nA<=90)or(nA>=270),1,-1);
wdA[NUM]:=nC:=0; pB:=(0,0);
pA:=posA[NUM]-(.5atom_wd*dx,.5atom_wd);
if (atomfont<>"draw")and(f_MP=1):
@@ -1222,7 +1228,7 @@ lr:='(60 for i==1 upto 10:: ,-60,60 endfor); rl:='(-60,lr);
for i=3 upto 20: ?[i]:='(|:,(_get_len,_ring_len),<((-180 DIV i)-90)
for j==2 upto i:: ,(360 DIV i) endfor,(_cyc_sB,1-i),:|); endfor
Ph:=Ph1:='(?6,(_dl,-2),(_dl,-4),(_dl,-6)); Ph2:='(?6,(_dl,-1),(_dl,-3),(_dl,-5));
-!:=!1:='((_mk_bond,_arg_ang)); !!:='(!~db); !!!:='(!~tm); !0:='(<180,180);
+!:=!1:='((_mk_bond,_arg_ang)); !!:='(!~db); !!!:='(!~tm);
for i=2 upto 20: ![i]:='(|:,(_get_len,_tmp_len),! for j==2 upto i::,! endfor ,:|); endfor
Me:='(); Et:='(!); Pr:='(!,!); Bu:='(!,!,!);
for i=4,5,6: for j=2 upto i-2: ?[i][j]:='((_fuse,i),(j,0)); endfor endfor