summaryrefslogtreecommitdiff
path: root/graphics/mcf2graph/mcf2graph.mf
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-12-13 03:02:58 +0000
committerNorbert Preining <norbert@preining.info>2021-12-13 03:02:58 +0000
commit8164c2be3b4849a9c77e44b9659a3de8af010bd7 (patch)
tree4414d792306f426cccf2f370b64dee20cd239244 /graphics/mcf2graph/mcf2graph.mf
parent9ed1a61f45b05f58016912a6bd6c13daab6db9eb (diff)
CTAN sync 202112130302
Diffstat (limited to 'graphics/mcf2graph/mcf2graph.mf')
-rw-r--r--graphics/mcf2graph/mcf2graph.mf109
1 files changed, 71 insertions, 38 deletions
diff --git a/graphics/mcf2graph/mcf2graph.mf b/graphics/mcf2graph/mcf2graph.mf
index d4d60da3c4..f6aa34ab01 100644
--- a/graphics/mcf2graph/mcf2graph.mf
+++ b/graphics/mcf2graph/mcf2graph.mf
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 4.74 Copyright (c) 2013-2021 Akira Yamaji
+% mcf2graph ver 4.75 Copyright (c) 2013-2021 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,
@@ -38,7 +38,7 @@
% Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tracingstats:=1;
-message "* This is mcf2graph ver 4.74 2021.11.23";
+message "* This is mcf2graph ver 4.75 2021.12.12";
%-------------------------------------------------------------------------------------------------
newinternal cntA,cntB,cntM,minX,minY,maxX,maxY,sftX,sftY,com,par,envT,envB,lenT,lineT,angT,rotT,
crR,nA,nB,nC,nD,nE,nF,nS,nL,nR,nU,nP,xpos,ypos,markA,markB,saveA,saveB,bondL;
@@ -533,8 +533,9 @@ def read_mcf(expr n)(text TXT)=
enddef;
%-------------------------------------------------------------------------------------------------
vardef read_number(text TXT)=
- save --,-+,nA,nB,nC;
+ save --,-+,<,nA,nB,nC;
let -- == from_until;
+ def < == -3000 enddef;
parts_int:=parts_int+1;
nA:=0;
for list==TXT::
@@ -590,55 +591,88 @@ vardef change_bond(expr a,b) =
parts_int:=parts_int+1;
nCP:=0;
if numeric b::
- if (b>=si)and(b<=bd_):: CPe(a)(_set_line,b)
- elseif ((b>=?3)and(b<=?20))or(b==Ph1)or(b==Ph2)::
+ if (b>=si)and(b<=bd_)::
+ if a>=parts_int_start::
+ for i==1 upto cntD[a]::
+ if comD[a][i]==_numeric::
+ if parD[a][i]>=-999:: com_par(_set_adr,parD[a][i]) com_par(_set_line,b)
+ ef b==dl:: com_par(_set_adr,parD[a][i]+3000) com_par(_set_line,dr)
+ ef b==dr:: com_par(_set_adr,parD[a][i]+3000) com_par(_set_line,dl)
+ else:: com_par(_set_adr,parD[a][i]+3000) com_par(_set_line,b)
+ fi
+ fi
+ endfor
+ else:: com_par(_set_adr,a) com_par(_set_line,b)
+ fi
+ elseif (b>=?3)and(b<=?8[15])::
if numeric a::
if a>=parts_int_start::
for i==1 upto cntD[a]::
if comD[a][i]==_numeric::
- if b==Ph1::
- fuse_ring(parD[a][i],6)
+ if b==Ph1:: fuse_ring(parD[a][i],6)
CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl)
- ef b==Ph2::
- fuse_ring(parD[a][i],6)
+ ef b==Ph2:: fuse_ring(parD[a][i],6)
CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl)
CP(_set_adr,-5) CP(_set_line,dl)
- else::
- fuse_ring(parD[a][i],b-?3+3)
+ ef (b>=?5[11])and(b<=?5[15]):: fuse_ring_size(a,5,b-?5[11]+11)
+ ef (b>=?6[11])and(b<=?6[15]):: fuse_ring_size(a,6,b-?6[11]+11)
+ ef (b>=?7[11])and(b<=?7[15]):: fuse_ring_size(a,7,b-?7[11]+11)
+ ef (b>=?8[11])and(b<=?8[15]):: fuse_ring_size(a,8,b-?8[11]+11)
+ else:: fuse_ring(parD[a][i],b-?3+3)
fi
else::
- if b==?6:: fuse_ring_bonds((comD[a][i],parD[a][i]),parD[?6[4]][1],comD[?6[4]][2])
- ef b==?5:: fuse_ring_bonds((comD[a][i],parD[a][i]),parD[?5[3]][1],comD[?5[3]][2])
- ef b==?4:: fuse_ring_bonds((comD[a][i],parD[a][i]),parD[?4[2]][1],comD[?4[2]][2])
+ if b==?6:: if (comD[a][i]>=-999)and(parD[a][i]>=-999)::
+ fuse_ring_bonds((comD[a][i],parD[a][i]),6,4)
+ ef comD[a][i]>=-999::
+ fuse_ring_bonds((comD[a][i],parD[a][i]+3000),6,3)
+ ef parD[a][i]>=-999::
+ fuse_ring_bonds((comD[a][i]+3000,parD[a][i]),6,3)
+ else::
+ fuse_ring_bonds((comD[a][i]+3000,parD[a][i]+3000),6,2)
+ fi
+ ef b==?5:: if (comD[a][i]>=-999)and(parD[a][i]>=-999)::
+ fuse_ring_bonds((comD[a][i],parD[a][i]),5,3)
+ ef comD[a][i]>=-999::
+ fuse_ring_bonds((comD[a][i],parD[a][i]+3000),5,2)
+ ef parD[a][i]>=-999::
+ fuse_ring_bonds((comD[a][i]+3000,parD[a][i]),5,2)
+ fi
+ ef b==?4:: fuse_ring_bonds((comD[a][i],parD[a][i]),4,2)
+ ef b==?6[3]:: fuse_ring_bonds((comD[a][i],parD[a][i]),6,3)
+ ef b==?6[2]:: fuse_ring_bonds((comD[a][i],parD[a][i]),6,2)
+ ef b==?5[2]:: fuse_ring_bonds((comD[a][i],parD[a][i]),5,2)
+ ef b==Ph1:: fuse_ring_bonds((comD[a][i],parD[a][i]),6,4)
+ CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl)
+ ef b==Ph2:: fuse_ring_bonds((comD[a][i],parD[a][i]),6,4)
+ CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl)
fi
fi
endfor
else::
- if b==Ph1::
- fuse_ring(a,6) CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl)
- ef b==Ph2::
- fuse_ring(a,6) CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl)
- CP(_set_adr,-5) CP(_set_line,dl)
- else::
- fuse_ring(a,b-?3+3)
+ if b==Ph1:: fuse_ring(a,6) CP(_set_adr,-2) CP(_set_line,dl)
+ CP(_set_adr,-4) CP(_set_line,dl)
+ ef b==Ph2:: fuse_ring(a,6) CP(_set_adr,-1) CP(_set_line,dl)
+ CP(_set_adr,-3) CP(_set_line,dl) CP(_set_adr,-5) CP(_set_line,dl)
+ ef (b>=?5[11])and(b<=?5[15]):: fuse_ring_size(a,5,b-?5[11]+11)
+ ef (b>=?6[11])and(b<=?6[15]):: fuse_ring_size(a,6,b-?6[11]+11)
+ ef (b>=?7[11])and(b<=?7[15]):: fuse_ring_size(a,7,b-?7[11]+11)
+ ef (b>=?8[11])and(b<=?8[15]):: fuse_ring_size(a,8,b-?8[11]+11)
+ else:: fuse_ring(a,b-?3+3)
fi
fi
ef pair a::
- if b==?6:: fuse_ring_bonds(a,parD[?6[4]][1],comD[?6[4]][2])
- ef b==?5:: fuse_ring_bonds(a,parD[?5[3]][1],comD[?5[3]][2])
- ef b==?4:: fuse_ring_bonds(a,parD[?4[2]][1],comD[?4[2]][2])
- ef b==Ph1::
- fuse_ring_bonds(a,parD[?6[4]][1],comD[?6[4]][2])
- CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl)
- ef b==Ph2::
- fuse_ring_bonds(a,parD[?6[4]][1],comD[?6[4]][2])
- CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl)
+ if b==?6:: fuse_ring_bonds(a,6,4)
+ ef b==?5:: fuse_ring_bonds(a,5,3)
+ ef b==?4:: fuse_ring_bonds(a,4,2)
+ ef b==?6[3]:: fuse_ring_bonds(a,6,3)
+ ef b==?6[2]:: fuse_ring_bonds(a,6,2)
+ ef b==?5[2]:: fuse_ring_bonds(a,5,2)
+ ef b==Ph1:: fuse_ring_bonds(a,6,4)
+ CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl)
+ ef b==Ph2:: fuse_ring_bonds(a,6,4)
+ CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl)
fi
fi
- ef comD[b][1]==_fuse::
- if comD[b][2]<=6:: fuse_ring_bonds(a,parD[b][1],comD[b][2])
- elseif (comD[b][2]>=11)and(comD[b][2]<=15):: fuse_ring_size(a,parD[b][1],comD[b][2])
- fi
fi
elseif color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorB,cntC)
fi
@@ -1974,6 +2008,9 @@ parts_atom_end:=parts_cnt;
for i==3 upto 20: ?[i]:='((_com,_len_ss),(_get_len,_ring_len),<((-180 DIV i)-90)
for j==2 upto i:: ,(360 DIV i) endfor,(_cyc_sB,1-i),(_com,_len_ee)); endfor
Ph:=Ph1:='(?6,-2=dl,-4=dl,-6=dl); Ph2:='(?6,-1=dl,-3=dl,-5=dl);
+for i=4,5,6: for j=2 upto i-2: ?[i][j]:='(); endfor endfor
+for i=5,6,7,8: for j=11 upto 15: ?[i][j]:='(); endfor endfor
+%-------------------------------------------------------------------------------------------------
!:=!1:='((_mk_bond,_arrange_ang)); !!:='(!~db); !!!:='(!~tm);
for i==2 upto 20:
![i]:='((_com,_len_ss),(_get_len,_tmp_len),! for j==2 upto i::,! endfor ,(_com,_len_ee));
@@ -2003,8 +2040,6 @@ CF3:='(/F,/F^60,60,F); CCl3:='(/Cl,/Cl^60,60,Cl); CBr3:='(/Br,/Br^60,60,Br);
%-------------------------------------------------------------------------------------------------
lr:='(0,0,0,60 for i==1 upto 10:: ,-60,60 endfor);
rl:='(0,0,0,-60 for i==1 upto 10:: ,60,-60 endfor);
-for i=4,5,6: for j=2 upto i-2: ?[i][j]:='((_fuse,i),(j,0)); endfor endfor
-for i=5,6,7,8: for j=11 upto 15: ?[i][j]:='((_fuse,i),(j,0)); endfor endfor
%-------------------------------------------------------------------------------------------------
R:='("R"); R1:='("{R^1^}"); R2:='("{R^2^}"); R3:='("{R^3^}"); R4:='("R^4^"); R5:='("{R^5^}");
R6:='("R6"); R7:='("{R^7^}"); R8:='("{R^8^}"); R9:='("{R^9^}"); R10:='("R^10^"); R11:='("{R^11^}");
@@ -2078,8 +2113,6 @@ vardef check(expr s)=
if nD= a_cmm: proc_err(7,nA) fi % & x
if nB<>a_cmm: proc_err(8,nA) fi % a &
ef nC=a_gtn: cnt_gtn:=cnt_gtn+1;
- if nD= a_cmm: proc_err(7,nA) fi % < x
- if nB<>a_cmm: proc_err(8,nA) fi % a <
ef nC=a_ltn: if nD= a_cmm: proc_err(7,nA) fi % > x
if nB= a_cmm: proc_err(7,nA) fi % x >
ef nC=a_tld: if nD= a_cmm: proc_err(7,nA) fi % ~ x