diff options
Diffstat (limited to 'Master/texmf-dist/metapost')
-rw-r--r-- | Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 121 |
1 files changed, 82 insertions, 39 deletions
diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index c6cedf1637d..d4d60da3c42 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.72 Copyright (c) 2013-2021 Akira Yamaji +% mcf2graph ver 4.74 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.73 2021.10.10"; +message "* This is mcf2graph ver 4.74 2021.11.23"; %------------------------------------------------------------------------------------------------- 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; @@ -65,9 +65,9 @@ Outside:=1; Inside:=2; Bothside:=Outside+Inside; %------------------------------------------------------------------------------------------------- a_prn_s:=ASCII("("); a_prn_e:=ASCII(")"); a_brc_s:=ASCII("{"); a_brc_e:=ASCII("}"); a_brk_s:=ASCII("["); a_brk_e:=ASCII("]"); a_cmm:=ASCII(","); a_equ:=ASCII("="); -a_ast:=ASCII("*"); a_sls:=ASCII("/"); a_gtn:=ASCII("<"); a_ltn:=ASCII(">"); a_and:=ASCII("&"); -a_dol:=ASCII("$"); a_hsh:=ASCII("#"); a_hat:=ASCII("^"); a_tld:=ASCII("~"); a_bqt:=ASCII("`"); -a_cln:=ASCII(":"); a_amk:=ASCII("@"); a_zero:=ASCII("0"); a_nine:=ASCII("9"); a_qut:=ASCII("'"); +a_ast:=ASCII("*"); a_sls:=ASCII("/"); a_gtn:=ASCII("<"); a_ltn:=ASCII(">"); a_and:=ASCII("&"); +a_dol:=ASCII("$"); a_hsh:=ASCII("#"); a_hat:=ASCII("^"); a_tld:=ASCII("~"); a_bqt:=ASCII("`"); +a_cln:=ASCII(":"); a_amk:=ASCII("@"); a_zero:=ASCII("0"); a_nine:=ASCII("9"); a_qut:=ASCII("'"); a_bar:=ASCII("|"); a_plus:=ASCII("+"); a_minus:=ASCII("-"); %-------------------------------------------------------------------------------------------------- let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == = =; let ef=elseif; @@ -101,25 +101,30 @@ if (known green)and(known ahlength): mpfont:="uhvr8r"; atomfont:=defaultfont:=""; %--default ahangle=45--------------------------------------------------------------------- - if ahangle=0: outputformat:="eps"; % eps format(.mps) - elseif ahangle=1: outputformat:="png"; hppp:=vppp:=0.12; % png format(600dpi) - elseif ahangle=11: outputformat:="png"; hppp:=vppp:=0.06; % png format(1200dpi) - elseif ahangle=2: outputformat:="svg"; % svg format - elseif ahangle=3: outputformat:="eps"; % eps format(.eps) - elseif ahangle=45: outputformat:="eps"; % eps format(.mps) *default + if ahangle=0: outputformat:="eps"; % eps format(.mps) + ef ahangle=1: outputformat:="png"; hppp:=vppp:=0.12; % png format(600dpi) + ef ahangle=11: outputformat:="png"; hppp:=vppp:=0.06; % png format(1200dpi) + ef ahangle=2: outputformat:="svg"; % svg format + ef ahangle=3: outputformat:="eps"; % eps format(.eps) + ef ahangle=45: outputformat:="eps"; % eps format(.mps) *default fi %--default ahlength=4--------------------------------------------------------------------- - if ahlength=1: sw_output:=Info; % output aux file - elseif ahlength=2: sw_output:=Info+Table; % output aux file(Table mode) - elseif ahlength=3: sw_output:=Report; % output report - elseif ahlength=4: sw_output:=Font; % *default - elseif ahlength=5: sw_output:=MOL2k; % output MOL(V2000) - elseif ahlength=6: sw_output:=MOL3k; % output MOL(V3000) - elseif ahlength=7: sw_output:=Mfont; % output aux mf - elseif ahlength=8: sw_output:=Mcode+Info; % output aux data-base + if ahlength=1: sw_output:=Info; % output aux file + ef ahlength=2: sw_output:=Info+Table; % output aux file(Table mode) + ef ahlength=3: sw_output:=Report; % output report + ef ahlength=4: sw_output:=Font; % *default + ef ahlength=5: sw_output:=MOL2k; % output MOL(V2000) + ef ahlength=6: sw_output:=MOL3k; % output MOL(V3000) + ef ahlength=7: sw_output:=Mfont; % output aux mf + ef ahlength=8: sw_output:=Mcode+Info; % output aux data-base fi %-- default bboxmargin=2------------------------------------------------------------------ - if bboxmargin=1: proc_end:=1; fi % output first font only + if bboxmargin=1: proc_end:=1; % output first font only + ef bboxmargin=3: ext(defaultfont:="uhvr8r"; defaultscale:=.3; label.rt(inf_EN,(0,0));) + ef bboxmargin=4: sw_output:=Font+Info; + ext(defaultfont:="uhvr8r"; defaultscale:=.3; + label.rt(inf_EN&" / "&cal_MW&" / "&decimal(num_MW-scantokens(inf_MW)),(0,0));) + fi %--default labeloffset=3------------------------------------------------------------------ if labeloffset=1: defaultfont:=mpfont; % mpost label elseif labeloffset=2: defaultfont:=atomfont:=mpfont; % mpost label,atom @@ -192,9 +197,9 @@ max_blength:=10mm; blength:=mangle:=0; max_labelsize:=20mm; dottedline_gap:=1.5b %-------------------------------------------------------------------------------------------------- fsize:=(30mm,20mm); fmargin:=(0.4mm,0.4mm); msize:=(1,1); mposition:=(0.5,0.5); %================================================================================================== +bboxmargin:=0; % 2bp => 0 ahangle:=45; ahlength:=4bp; -bboxmargin:=2bp; defaultsize:=8bp; defaultscale:=1; labeloffset:=3bp; @@ -586,16 +591,52 @@ vardef change_bond(expr a,b) = nCP:=0; if numeric b:: if (b>=si)and(b<=bd_):: CPe(a)(_set_line,b) - elseif (b>=?3)and(b<=?20):: - if a>=parts_int_start:: for i==1 upto cntD[a]:: fuse_ring(parD[a][i],b-?3+3) endfor - else:: fuse_ring(a,b-?3+3) + elseif ((b>=?3)and(b<=?20))or(b==Ph1)or(b==Ph2):: + 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) + 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) + 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) + 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]) + 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) + 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) + fi fi - elseif b==Ph1:: fuse_ring(a,6) CP(_set_adr,-2) CP(_set_line,dl) - CP(_set_adr,-4) CP(_set_line,dl) - elseif 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) - elseif comD[b][1]==_fuse:: - if comD[b][2]<=6:: fuse_ring_bonds(a,parD[b][1],comD[b][2]) + 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 @@ -945,16 +986,18 @@ def MC(text TXT)= %-draw atom----------------------------------------------------------------------------------- if sw_numbering=0: for i=1 upto cntA: draw_atom(i); endfor fi %-draw add to atom---------------------------------------------------------------------------- - for i=1 upto cntA: - if addA[i]<>0: - nA:=angX[i]+add_rot[i]; nC:=nA mod 90; - if numS[i]=0: nB:=.5atom_wd; - else: nB:=.85wdA[i]+iif(nC<45,sind(nC),cosd(nC))*.5wdA[i]; + if (not scan_bit(sw_numbering,Atom))and(not scan_bit(sw_numbering,Bond)): + for i=1 upto cntA: + if addA[i]<>0: + nA:=angX[i]+add_rot[i]; nC:=nA mod 90; + if numS[i]=0: nB:=.5atom_wd; + else: nB:=.85wdA[i]+iif(nC<45,sind(nC),cosd(nC))*.5wdA[i]; + fi + temp_p:=sfrt(posA[i]-(.35atom_wd,.35atom_wd),nB,nA); + draw_char(temp_c,temp_p,atom_wd,bond_pen_wd*ratio_char_bond,0); fi - temp_p:=sfrt(posA[i]-(.35atom_wd,.35atom_wd),nB,nA); - draw_char(temp_c,temp_p,atom_wd,bond_pen_wd*ratio_char_bond,0); - fi - endfor + endfor + fi %-draw bond----------------------------------------------------------------------------------- for i=1 upto cntB: if lineB[i]<si_ : draw_bond(i); fi endfor for i=1 upto cntB: if lineB[i]>=si_: draw_bond(i); fi endfor |