diff options
author | Karl Berry <karl@freefriends.org> | 2021-07-18 20:22:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-07-18 20:22:29 +0000 |
commit | 07a55c4c3220d83181e9bca4a0fd432e567a42aa (patch) | |
tree | 1341ac421ad5c562d97b0374124ff6f65df23fb2 /Master/texmf-dist/metapost | |
parent | 78591567fc12bcecdf39f8d632d39c12568401ea (diff) |
mcf2graph (18jul21)
git-svn-id: svn://tug.org/texlive/trunk@59974 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/metapost')
-rw-r--r-- | Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 58 |
1 files changed, 42 insertions, 16 deletions
diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index 33fec242fe0..d248fe014a8 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.68 Copyright (c) 2013-2021 Akira Yamaji +% mcf2graph ver 4.69 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, @@ -37,17 +37,16 @@ % Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tracingstats:=1; -message "* This is mcf2graph ver 4.68 2021.06.28"; +message "* This is mcf2graph ver 4.69 2021.07.18"; %------------------------------------------------------------------------------------------------- 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; numeric save_num[],comD[][],parD[][],adrD[][],cntD[],tbl_atom[],tbl_group[][],f_char[], tbl_atom_wt[],tbl_atom_mi[],tbl_char_wd[],tbl_char_ht[],addA[],add_rot[],chargeA[], - com_group[][],par_group[][],cnt_group[],colorA[],colorB[],sumA[],bondC[],hideH[], - lineB[],sB[],eB[],angB[],angA[],lenB[],angX[],numS[],wdM[],htM[],wdA[],dxA[],cmm_adr[], - mc_indent[]; -string save_str[],tbl_atom_str[],strD[],tag[],file_name_output,blank_str,aux_delimiter, - atomfont,mpfont,s_tag,s_var,cal_FM,cal_MW,cal_MI, + com_group[][],par_group[][],cnt_group[],colorA[],colorB[],sumA[],bondC[],hideH[],lineB[], + sB[],eB[],angB[],angA[],lenB[],angX[],numS[],wdM[],htM[],wdA[],dxA[],cmm_adr[],mc_indent[]; +string save_str[],tbl_atom_str[],strD[],tag[],file_name_output,blank_str,aux_delimiter,atomfont, + mpfont,s_tag,s_var,cal_FM,cal_MW,cal_MI, inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW; pair save_pair[],posA[],posM[][],msize,mposition,fsize,fmargin,save_mposition,posBs,posBe,dum; picture mol_stru[],atom_picture,save_picture,temp_picture; @@ -207,7 +206,8 @@ def_com(-4090)(_com,_jp_atom,_jp_absA,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_t _group_si,_set_adr,_mk_bond,_set_atom,_arrange_ang,_chg_atom,_tmp_rot,_fuse,_size_atom,_numeric, _jump_at,_set_add,_chg_add,_nop,_mark,_moff,_term,_len_s,_len_e,_len_ss,_len_ee, _group_s,_group_e,_rest,_charge,_from,_until, - si,dl,dl_,dr,dr_,db,dm,dm_,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,nb,si_,wf_,wb_,zf_,zb_,wv_,bd_); + si,dl,dl_,dr,dr_,db,dm,dm_,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,nb,wf_r,wb_r,bd_r, + si_,wf_,wb_,zf_,zb_,wv_,bd_); %-------------------------------------------------------------------------------------------------- def parameter_list= sw_numbering,sw_expand,sw_output,sw_ext_all,sw_frame,sw_trimming,sw_arrow_emu,sw_abbreviate, @@ -384,7 +384,7 @@ def pickup_data_unit(expr t,v)= if temps=EOF: f_EOF:=1; fi exitif temps=EOF; if subc(1,temps)="%": - ef subc(1,temps)="+": + ef (subc(1,temps)="+")and(subc(2,temps)<>"-"): data_unit_cnt:=data_unit_cnt+1; if v="*": cond:=1; ef t="n": if data_unit_cnt=n_var: cond:=1; fi @@ -410,7 +410,7 @@ def pickup_data_unit(expr t,v)= temps:=readfrom file_name_input; if temps=EOF: f_EOF:=1; fi exitif temps=EOF; - exitif subc(1,temps)="+"; + exitif (subc(1,temps)="+")and(subc(2,temps)="-"); endfor fi else: @@ -464,8 +464,8 @@ enddef; vardef '(text TXT)= parts_cnt:=parts_cnt+1; read_mcf(parts_cnt)(TXT); parts_cnt enddef; vardef read_id(text TXT)=read_mcf(incr parts_cnt)(|,#crR,TXT,##,(_com,_rest)); parts_cnt enddef; vardef read_ud(text TXT)=read_mcf(incr parts_cnt)(dum,dum,|,TXT,(_com,_rest)); parts_cnt enddef; -vardef abs_adress primary n == n-4095 enddef; -primarydef a from_until b == (_from,a),(_until,b) enddef; +vardef abs_adress primary n = if n LT 0:: (n+360)-4095 else:: n-4095 fi enddef; +primarydef a from_until b = (_from,a),(_until,b) enddef; tertiarydef a op_equ b = if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef; tertiarydef a op_col b = if (known a)and(known b):: change_atom(a,b) else:: _nop fi enddef; tertiarydef a op_hat b = if known b:: (_tmp_rot,b),a else:: _nop,a fi enddef; @@ -478,10 +478,10 @@ def jump_atom primary a = if numeric a:: (_jp_atom,a) elseif pair a:: (_jp_atom,$1),<$0,angle(a)~0`length(a),<$0 fi enddef; def chg_length primary n = (_com,_len_s),(_chg_len,n) enddef; -def group_si secondary n == if known n:: (_group_si,n) else:: _nop fi enddef; -def group_dm secondary n == /n~dm enddef; def group_wf secondary n == /n~wf enddef; -def group_zf secondary n == /n~zf enddef; def group_wv secondary n == /n~wv enddef; -def group_nb secondary n == /n~nb enddef; +def group_si secondary n = if known n:: (_group_si,n) else:: _nop fi enddef; +def group_dm secondary n = /n~dm enddef; def group_wf secondary n = /n~wf enddef; +def group_zf secondary n = /n~zf enddef; def group_wv secondary n = /n~wv enddef; +def group_nb secondary n = /n~nb enddef; %------------------------------------------------------------------------------------------------- def CP = com_par enddef; def CPe = com_par_ex(0) enddef; def CPx = com_par_ex(1) enddef; %================================================================================================= @@ -1323,6 +1323,11 @@ def draw_bond(expr NUM)= draw Le for i=1 upto nB: ..controls(((i-.5)/nB)[sfrt(Le,nA,iif(odd(i),ap,am)),sfrt(Ls,nA,iif(odd(i),ap,am))]) ..(i/nB)[Le,Ls] endfor ..Ls Cp(col); +% + ef nL=wf_r: filldraw Ls--sfrt(Le,.35ww,am)--sfrt(Le,.35ww,ap)--cycle wpcs .05ww Cp(col); + ef nL=wb_r: filldraw sfrt(Ls,.35ww,am)--Le--sfrt(Ls,.35ww,ap)--cycle wpcs .05ww Cp(col); + ef nL=bd_r: draw zA wpcs .65bondgap Cp(col); +% ef nL=vf: draw zA Cp(col);draw sfrt(Le,bondgap,ang-150)--Le--sfrt(Le,bondgap,ang+150) Cp(col); ef nL=vb: draw zA Cp(col);draw sfrt(Ls,bondgap,ang-30)--Ls--sfrt(Ls,bondgap,ang+30) Cp(col); ef nL=si_: erase draw subpath (0.15,0.85) of zA wpcs 0.8bondgap; draw zA Cp(col); @@ -2053,3 +2058,24 @@ def proc_err(expr ERR_CODE,ADR)= fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +vardef count_data_unit(expr f)= + save temps,file_name,f_mcf,f_error,line_cnt,unit_cnt; + string temps,file_name; + line_cnt:=unit_cnt:=f_mcf:=f_error:=0; + file_name:=f&".mcf"; + forever: + temps:=readfrom file_name; + exitif temps=EOF; + line_cnt:=line_cnt+1; + if subc(1,temps)="%": + else: + if (subc(1,temps)="+")and(subc(2,temps)<>"-"): if f_mcf=1: f_error:=1; fi f_mcf:=1; fi + if (subc(1,temps)="+")and(subc(2,temps)="-"): + if f_mcf=0: f_error:=1; else: f_mcf:=0; unit_cnt:=unit_cnt+1; fi + fi + exitif f_error=1; + fi + endfor + if f_error=1: -line_cnt else: unit_cnt fi +enddef; +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |