From 44348e1db56f09b2409c6372d5b8f53b0b9f1962 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 12 Dec 2021 22:29:25 +0000 Subject: mcf2graph (12dec21) git-svn-id: svn://tug.org/texlive/trunk@61284 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 109 ++++++++++++++-------- 1 file changed, 71 insertions(+), 38 deletions(-) (limited to 'Master/texmf-dist/metapost') diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index d4d60da3c42..f6aa34ab01b 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/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 -- cgit v1.2.3