diff options
author | Karl Berry <karl@freefriends.org> | 2020-07-09 22:32:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-07-09 22:32:46 +0000 |
commit | 664ac603ac89d9dcd374f9905a667d26692d1da9 (patch) | |
tree | b10b51034a98ea55a82001432bff5983cac0f017 /Master/texmf-dist/metapost/mcf2graph | |
parent | 0799681b5ebca9c800642958339f0a2905b5b6fe (diff) |
mcf2graph (10jul20)
git-svn-id: svn://tug.org/texlive/trunk@55793 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/metapost/mcf2graph')
-rw-r--r-- | Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 64 |
1 files changed, 35 insertions, 29 deletions
diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index 15aeb765196..f0dedd16483 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/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 |