From 5f80d92d8bebc775b30e2b212e33b08089517654 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 28 Mar 2022 03:02:13 +0000 Subject: CTAN sync 202203280302 --- graphics/mcf2graph/CHANGELOG | 11 +- graphics/mcf2graph/README | 28 ++-- graphics/mcf2graph/mcf2graph.mp | 306 +++++++++++++++++------------------ graphics/mcf2graph/mcf_exa_code.pdf | Bin 78732 -> 79140 bytes graphics/mcf2graph/mcf_exa_code.tex | 22 +-- graphics/mcf2graph/mcf_exa_soc.mp | 16 +- graphics/mcf2graph/mcf_example.pdf | Bin 431496 -> 431296 bytes graphics/mcf2graph/mcf_example.tex | 6 +- graphics/mcf2graph/mcf_library.mcf | 17 +- graphics/mcf2graph/mcf_man_soc.mp | 76 ++++----- graphics/mcf2graph/mcf_manual.pdf | Bin 289186 -> 289251 bytes graphics/mcf2graph/mcf_manual.tex | 54 +++---- graphics/mcf2graph/mcf_mplib_exa.pdf | Bin 195576 -> 196130 bytes graphics/mcf2graph/mcf_mplib_exa.tex | 20 +-- 14 files changed, 273 insertions(+), 283 deletions(-) (limited to 'graphics') diff --git a/graphics/mcf2graph/CHANGELOG b/graphics/mcf2graph/CHANGELOG index ac54744493..aefa94b116 100644 --- a/graphics/mcf2graph/CHANGELOG +++ b/graphics/mcf2graph/CHANGELOG @@ -1,6 +1,15 @@ ******************************************************************************* - Changelog of mcf2graph software package by Akira Yamaji 2022-03-13 + Changelog of mcf2graph software package by Akira Yamaji 2022-03-27 ******************************************************************************* +[ver. 4.83 / 2022-03-27] + -fix bug in bond check + -change fuction name + check() => mc_check() + query() => mc_query() + -improve report output + -update mcf_library.mcf + -update MCF manual + [ver. 4.82 / 2022-03-13] -add new example file mcf_exa_code.tex (example include code) diff --git a/graphics/mcf2graph/README b/graphics/mcf2graph/README index bac51eca95..61465c30aa 100644 --- a/graphics/mcf2graph/README +++ b/graphics/mcf2graph/README @@ -1,7 +1,7 @@ ******************************************************************************** mcf2graph : Convert Molecular Coding Format to graphics with MetaPost Author : Akira Yamaji - version : 4.82 2022-03-13 + version : 4.83 2022-03-27 E-mail : mcf2graph@gmail.com Located at : http://www.ctan.org/pkg/mcf2graph ******************************************************************************** @@ -34,21 +34,21 @@ 3. How to use mcf2graph with MetaPost Minimum requirement to use mcf2graph : mpost.exe,mpost.dll,mpost.mp,plain.mp - ( 1) >mpost FILENAME => output eps(.mps) file - ( 2) >mpost -s ahangle=1 FILENAME => output png file (600dpi) - ( 3) >mpost -s ahangle=11 FILENAME => output png file (1200dpi) - ( 4) >mpost -s ahangle=2 FILENAME => output svg file - ( 5) >mpost -s ahangle=3 FILENAME => output eps(.eps) file - ( 6) >mpost -s ahlength=1 FILENAME => output information-aux file(for tex) - ( 7) >mpost -s ahlength=2 FILENAME => output information-aux file - (for spread sheet) - ( 8) >mpost -s ahlength=3 FILENAME => output library-aux file - ( 9) >mpost -s ahlength=5 FILENAME => output mol file(V2000) - (10) >mpost -s ahlength=6 FILENAME => output mol file(V3000) - (11) >mpost -s ahlength=7 FILENAME => output report file + ( 1) >mpost FILENAME => output eps(.mps) file + ( 2) >mpost -s ahangle=1 FILENAME => output png file (600dpi) + ( 3) >mpost -s ahangle=11 FILENAME => output png file (1200dpi) + ( 4) >mpost -s ahangle=2 FILENAME => output svg file + ( 5) >mpost -s ahangle=3 FILENAME => output eps(.eps) file + ( 6) >mpost -s ahlength=1 FILENAME => output information-aux file(for tex) + ( 7) >mpost -s ahlength=2 FILENAME => output information-aux file + (for spread sheet) + ( 8) >mpost -s ahlength=3 FILENAME => output library-aux file + ( 9) >mpost -s ahlength=5 FILENAME => output mol file(V2000) + (10) >mpost -s ahlength=6 FILENAME => output mol file(V3000) + (11) >mpost -s ahlength=7 FILENAME => output report file 4. License - mcf2graph ver 4.82 Copyright (c) 2013-2022 Akira Yamaji + mcf2graph ver 4.83 Copyright (c) 2013-2022 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 diff --git a/graphics/mcf2graph/mcf2graph.mp b/graphics/mcf2graph/mcf2graph.mp index 6bf2292510..10c14d4cec 100644 --- a/graphics/mcf2graph/mcf2graph.mp +++ b/graphics/mcf2graph/mcf2graph.mp @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.82 Copyright (c) 2013-2022 Akira Yamaji +% mcf2graph ver 4.83 Copyright (c) 2013-2022 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, @@ -33,7 +33,7 @@ % Set output MOL file (V3000) : mpost -s ahlength=6 FILENAME % Set output report : mpost -s ahlength=7 FILENAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -message "* This is mcf2graph ver 4.82 2022.03.13"; +message "* This is mcf2graph ver 4.83 2022.03.27"; tracingstats:=1; prologues:=3; warningcheck:=0; %------------------------------------------------------------------------------------------------- numeric save_num[],parts_com[][],parts_par[][],parts_cnt[],tbl_atom[],tbl_group[][],tbl_atom_wt[], @@ -162,25 +162,25 @@ enddef; %-------------------------------------------------------------------------------------------------- def init_par(text t)= nA:=nB:=nC:=0; - for list=t: if numeric list: nA:=nA+1; save_num[nA]:=list; - ef pair list: nB:=nB+1; save_pair[nB]:=list; - ef string list: nC:=nC+1; save_str[nC]:=list; fi + for list=t: if numeric list: save_num[incr nA]:=list; + ef pair list: save_pair[incr nB]:=list; + ef string list: save_str[incr nC]:=list; fi endfor enddef; %-------------------------------------------------------------------------------------------------- def store_par(text t)= nA:=nB:=nC:=0; - for list=t: if numeric list: nA:=nA+1; if save_num[nA]<>list: save_num[nA]:=list; fi - ef pair list: nB:=nB+1; if save_pair[nB]<>list: save_pair[nB]:=list; fi - ef string list: nC:=nC+1; if save_str[nC]<>list: save_str[nC]:=list; fi fi + for list=t: if numeric list: if save_num[incr nA]<>list: save_num[nA]:=list; fi + ef pair list: if save_pair[incr nB]<>list: save_pair[nB]:=list; fi + ef string list: if save_str[incr nC]<>list: save_str[nC]:=list; fi fi endfor enddef; %-------------------------------------------------------------------------------------------------- def restore_par(text t)= nA:=nB:=nC:=0; - forsuffixes list=t: if numeric list: nA:=nA+1; if list<>save_num[nA]: list:=save_num[nA]; fi - ef pair list: nB:=nB+1; if list<>save_pair[nB]: list:=save_pair[nB]; fi - ef string list: nC:=nC+1; if list<>save_str[nC]: list:=save_str[nC]; fi fi + forsuffixes list=t: if numeric list: if list<>save_num[incr nA]: list:=save_num[nA]; fi + ef pair list: if list<>save_pair[incr nB]: list:=save_pair[nB]; fi + ef string list: if list<>save_str[incr nC]: list:=save_str[nC]; fi fi endfor enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -201,25 +201,24 @@ def beginfigm(text s)= picture mol_pic[]; color color_list[]; %------------------------------------------------------------------------------------------------ + store_par(parameter_list); + %------------------------------------------------------------------------------------------------ let ext=ext_to_fig; let add=add_to_molecule; def '=read_ud enddef; %------------------------------------------------------------------------------------------------ inf_NO:=inf_EN:=inf_JN:=inf_MW:=inf_FM:=inf_CAS:=inf_Cat:=inf_EXA:=inf_EXB:="-"; - mc:=temps:=cal_MW:=cal_MI:=cal_FM:=filter_s:=""; - file_input:=default_library; + mc:=temps:=cal_MW:=cal_MI:=cal_FM:=filter_s:=""; file_input:=default_library; %------------------------------------------------------------------------------------------------ parts_num:=parts_usr_start; parts_int:=parts_int_start; - %------------------------------------------------------------------------------------------------ - store_par(parameter_list); fig_num:=fig_num+1; f_ext:=cntM:=mc_row:=info_cnt:=f_EOF:=0; %------------------------------------------------------------------------------------------------ for list=s: at_colon:=scan_char(":",list,0,1); if at_colon=1: fw_n:=scan_char(" ",list,1,2); bw_n:=scan_char(" ",list,-1,2); - mc_row:=mc_row+1; mc_indent[mc_row]:=fw_n-2; + mc_indent[incr mc_row]:=fw_n-2; mc[mc_row]:=substring(fw_n-1,bw_n) of list; mc:=mc&mc[mc_row]; ef at_colon>=1: - info_cnt:=info_cnt+1; info_s[info_cnt]:=list; + info_s[incr info_cnt]:=list; sT:=substring(0,at_colon-1) of list; sV:=substring(at_colon,length(list)) of list; if sT="f": if scan_char(".",sV,0,1)=0: file_input:=sV&".mcf"; else: file_input:=sV; fi ef sT="t": temps:=sV; @@ -307,7 +306,7 @@ def pickup_data_unit(expr t,v,f)= sS:=readfrom file_input; if sS=EOF: f_EOF:=1; fi exitif f_EOF=1; exitif subc(1,sS)="+"; if subc(1,sS)<>"%": - fw_n:=scan_char(" ",sS,1,1); mc_row:=mc_row+1; mc_indent[mc_row]:=fw_n-1; + fw_n:=scan_char(" ",sS,1,1); mc_indent[incr mc_row]:=fw_n-1; mc[mc_row]:=substring(fw_n-1,length(sS)) of sS; mc:=mc&mc[mc_row]; fi endfor for i=1 upto inf_num: @@ -336,7 +335,6 @@ def pickup_data_unit(expr t,v,f)= enddef; %-------------------------------------------------------------------------------------------------- vardef scan_bit(expr n,b)= if b>=1: odd(floor(n/b)) else: odd(floor((frac n)/b)) fi enddef; -%-------------------------------------------------------------------------------------------------- vardef scan_char(expr c,s,d,n)= nN:=0; if d=0: for i=n upto length(s): if subc(i,s)=c: nN:=i; fi exitif nN>0; endfor @@ -345,16 +343,18 @@ vardef scan_char(expr c,s,d,n)= enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% vardef '(text t)= parts_num:=parts_num+1; read_mcf(parts_num)(t); parts_num enddef; -vardef read_id(text t)=read_mcf(incr parts_num)(|,#rate_cr,t,##,(_com,_rest)); parts_num enddef; -vardef read_ud(text t)=read_mcf(incr parts_num)(dum,dum,|,t,(_com,_rest)); parts_num enddef; +vardef read_id(text t)= parts_num:=parts_num+1; + read_mcf(parts_num)(|,#rate_cr,t,##,(_com,_rest)); parts_num enddef; +vardef read_ud(text t)= parts_num:=parts_num+1; + read_mcf(parts_num)(dum,dum,|,t,(_com,_rest)); parts_num 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; tertiarydef a op_til b = if known b:: (_tmp_line,b),a else:: _nop,a fi enddef; -tertiarydef a op_lt b = if known b:: (_tmp_env,b),a else:: _nop,a fi enddef; -tertiarydef a op_bq b = if known b:: (_tmp_len,b),a else:: _nop,a fi enddef; +tertiarydef a op_lth b = if known b:: (_tmp_env,b),a else:: _nop,a fi enddef; +tertiarydef a op_bqu b = if known b:: (_tmp_len,b),a else:: _nop,a fi enddef; def rot_angle primary n = (_rot_ang,n) enddef; def cyc_atom primary n = (_cyc,n) enddef; def jump_atom_abs primary a = if numeric a:: (_jp_atom,$a) ef pair a:: (_jp_atom,$1),<$0,angle(a)~0`length(a),<$0 fi @@ -367,21 +367,19 @@ def group_si secondary n = if known n:: (_group_si,n) else:: _nop fi enddef; def group_dm secondary n = if known n:: (_group_dm,n) else:: _nop fi enddef; def group_wf secondary n = if known n:: (_group_wf,n) else:: _nop fi enddef; def group_zf secondary n = if known n:: (_group_zf,n) else:: _nop fi 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; +def group_wv secondary n = /n~wv enddef; def group_nb secondary n = /n~nb enddef; %================================================================================================= def read_mcf(expr n)(text t)= begingroup save nCP; if unknown inside_MC:: - save /,//,/*,*/,**,*/*,~,^,',`,<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_,inside_MC; + save /,//,/*,*/,**,*/*,~,^,',`,<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_,CP,CA, + inside_MC; | :=mark_adress; || :=reset_adress; ##:=reset_length; _:=Me; \:=0; \\:=zero_dm; *\:=zero_wf; \*:=zero_zf; *\*:=zero_wv; - let = ==op_equ; let : ==op_col; let ^==op_hat; let ~==op_til; let > ==op_lt; let `==op_bq; + let = ==op_equ; let : ==op_col; let ^==op_hat; let ~==op_til; let > ==op_lth; let `==op_bqu; def $==abs_adress enddef; def &$==&.$ enddef; def '==read_id enddef; - def {==read_number( enddef; + def {==read_number( enddef; def CP == com_par enddef; def CA == com_par_adr enddef; let }==); let @$==jump_atom_abs; let < ==rot_angle; let @==jump_atom; let &==cyc_atom; let #==chg_length; let /==group_si; let //==group_dm; let */==group_wf; let /*==group_zf; let */*==group_wv; let **==group_nb; @@ -391,15 +389,14 @@ def read_mcf(expr n)(text t)= nCP:=0; for list==t:: if known list:: - if pair list:: nCP:=nCP+1; parts_com[n][nCP]:=xpart(list); parts_par[n][nCP]:=ypart(list); + if pair list:: parts_com[n][incr nCP]:=xpart(list); parts_par[n][nCP]:=ypart(list); ef numeric list:: if list==_nop:: message "unknown command in "AND decimal(n); ef list>=parts_emb_start:: for i==1 upto parts_cnt[list]:: - nCP:=nCP+1; - parts_com[n][nCP]:=parts_com[list][i]; parts_par[n][nCP]:=parts_par[list][i]; + parts_com[n][incr nCP]:=parts_com[list][i]; parts_par[n][nCP]:=parts_par[list][i]; endfor - else:: nCP:=nCP+1; parts_com[n][nCP]:=_mk_bond; parts_par[n][nCP]:=list; fi + else:: parts_com[n][incr nCP]:=_mk_bond; parts_par[n][nCP]:=list; fi fi else:: message "unknown command in "AND decimal(n); fi @@ -416,16 +413,15 @@ vardef read_number(text t)= if known list:: if numeric list:: if list==_nop:: message "unknown command in "AND decimal(parts_int); - else:: nA:=nA+1; parts_com[parts_int][nA]:=_numeric; parts_par[parts_int][nA]:=list; + else:: parts_com[parts_int][incr nA]:=_numeric; parts_par[parts_int][nA]:=list; fi ef pair list:: if xpart(list)==_from:: nB:=ypart(list); ef xpart(list)==_until:: nC:=ypart(list); for i==nB upto nC:: - nA:=nA+1; parts_com[parts_int][nA]:=_numeric; parts_par[parts_int][nA]:=i; + parts_com[parts_int][incr nA]:=_numeric; parts_par[parts_int][nA]:=i; endfor - else:: nA:=nA+1; - parts_com[parts_int][nA]:=xpart(list); parts_par[parts_int][nA]:=ypart(list); + else:: parts_com[parts_int][incr nA]:=xpart(list); parts_par[parts_int][nA]:=ypart(list); fi fi else:: message "unknown command in "AND decimal(parts_int); @@ -462,27 +458,27 @@ enddef; vardef change_bond(expr a,b) = if known b:: parts_int:=parts_int+1; nC:=0; if numeric b:: - if (b>=si)and(b<=bd_):: + if (b>=si)and(b<=bd_):: if a>=parts_int_start:: for i==1 upto parts_cnt[a]:: if parts_com[a][i]==_numeric:: - if frac parts_par[a][i]==0:: com_par(_set_adr,parts_par[a][i]) com_par(_set_line,b) - ef b==dl:: com_par(_set_adr,floor parts_par[a][i]) com_par(_set_line,dr) - ef b==dr:: com_par(_set_adr,floor parts_par[a][i]) com_par(_set_line,dl) - else:: com_par(_set_adr,floor parts_par[a][i]) com_par(_set_line,b) fi fi + if frac parts_par[a][i]==0:: CA(_set_line,b,parts_par[a][i]) + ef b==dl:: CA(_set_line,dr,floor parts_par[a][i]) + ef b==dr:: CA(_set_line,dl,floor parts_par[a][i]) + else:: CA(_set_line,b,floor parts_par[a][i]) + fi + fi endfor - else:: com_par(_set_adr,a) com_par(_set_line,b) + else:: CP(_set_adr,a) CP(_set_line,b) fi elseif (b>=?3)and(b<=?8[15]):: if numeric a:: if a>=parts_int_start:: for i==1 upto parts_cnt[a]:: if parts_com[a][i]==_numeric:: - if b==Ph1:: fuse_ring(parts_par[a][i],6) - CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl) - ef b==Ph2:: fuse_ring(parts_par[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) + if b==Ph1:: fuse_ring(parts_par[a][i],6) CA(_set_line,dl,-2) CA(_set_line,dl,-4) + ef b==Ph2:: fuse_ring(parts_par[a][i],6) CA(_set_line,dl,-1) CA(_set_line,dl,-3) + CA(_set_line,dl,-5) 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) @@ -503,24 +499,21 @@ vardef change_bond(expr a,b) = ef frac parts_com[a][i]==0:: fuse_ring_bonds((parts_com[a][i],floor parts_par[a][i]),5,2) ef frac parts_par[a][i]==0:: - fuse_ring_bonds((floor parts_com[a][i],floor parts_par[a][i]),5,2) - fi + fuse_ring_bonds((floor parts_com[a][i],floor parts_par[a][i]),5,2) fi ef b==?4:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),4,2) ef b==?6[3]:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),6,3) ef b==?6[2]:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),6,2) ef b==?5[2]:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),5,2) ef b==Ph1:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),6,4) - CP(_set_adr,-1) CP(_set_line,dl) CP(_set_adr,-3) CP(_set_line,dl) + CA(_set_line,dl,-1) CA(_set_line,dl,-3) ef b==Ph2:: fuse_ring_bonds((parts_com[a][i],parts_par[a][i]),6,4) - CP(_set_adr,-2) CP(_set_line,dl) CP(_set_adr,-4) CP(_set_line,dl) + CA(_set_line,dl,-2) CA(_set_line,dl,-4) 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) + if b==Ph1:: fuse_ring(a,6) CA(_set_line,dl,-2) CA(_set_line,dl,-4) + ef b==Ph2:: fuse_ring(a,6) CA(_set_line,dl,-1) CA(_set_line,dl,-3) CA(_set_line,dl,-5) 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) @@ -533,13 +526,12 @@ vardef change_bond(expr a,b) = 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 + ef b==Ph1:: fuse_ring_bonds(a,6,4) CA(_set_line,dl,-1) CA(_set_line,dl,-3) + ef b==Ph2:: fuse_ring_bonds(a,6,4) CA(_set_line,dl,-2) CA(_set_line,dl,-4) + fi fi fi - elseif color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorB,cntC) fi + elseif color b:: color_list[incr cntC]:=b; CA(_set_colorB,cntC,a) fi parts_cnt[parts_int]:=nC; parts_int fi enddef; @@ -547,16 +539,16 @@ enddef; vardef change_atom(expr a,b)= if known b:: parts_int:=parts_int+1; nC:=0; if numeric b:: - if (b GT parts_emb_start)and(b<=parts_atom_end):: CPe(a)(_chg_atom,b) - ef b==NH:: CPe(a)(_chg_atom,N) if NH<>xNH:: CP(_tmp_line,nl) fi - CP(_com,_group_s) CPx(a)(_group_si,H) CP(_com,_group_e) - ef b==N!:: CPe(a)(_chg_atom,N) CP(_com,_group_s) CPx(a)(_group_si,_) CP(_com,_group_e) - ef b==N!2:: CPe(a)(_chg_atom,N) CP(_com,_group_s) CPx(a)(_group_si,!) CP(_com,_group_e) - ef b==??:: CP(_com,_group_s) CP(_tmp_rot,35) CPx(a)(_group_si,_) - CP(_tmp_rot,-35) CPx(a)(_group_si,_) CP(_com,_group_e) - ef b==SOO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) CP(_tmp_rot,35) CPx(a)(_group_dm,O) - CP(_tmp_rot,-35) CPx(a)(_group_dm,O) CP(_com,_group_e) - ef b==SO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) CPx(a)(_group_dm,O) CP(_com,_group_e) + if (b GT parts_emb_start)and(b<=parts_atom_end):: CA(_chg_atom,b,a) + ef b==NH:: CA(_chg_atom,N,a) if NH<>xNH:: CP(_tmp_line,nl) fi + CP(_com,_group_s) CA(_group_si,H,a) CP(_com,_group_e) + ef b==N!:: CA(_chg_atom,N,a) CP(_com,_group_s) CA(_group_si,_,a) CP(_com,_group_e) + ef b==N!2:: CA(_chg_atom,N,a) CP(_com,_group_s) CA(_group_si,!,a) CP(_com,_group_e) + ef b==??:: CP(_com,_group_s) CP(_tmp_rot,35) CA(_group_si,_,a) + CP(_tmp_rot,-35) CA(_group_si,_,a) CP(_com,_group_e) + ef b==SOO:: CA(_chg_atom,S,a) CP(_com,_group_s) CP(_tmp_rot,35) CA(_group_dm,O,a) + CP(_tmp_rot,-35) CA(_group_dm,O,a) CP(_com,_group_e) + ef b==SO:: CA(_chg_atom,S,a) CP(_com,_group_s) CA(_group_dm,O,a) CP(_com,_group_e) ef b==n_:: CP(_com,_group_s) CP(_set_add,a_minus) CP(_chg_add,a) CP(_com,_group_e) ef b==p_:: CP(_com,_group_s) CP(_set_add,a_plus) CP(_chg_add,a) CP(_com,_group_e) fi @@ -565,33 +557,27 @@ vardef change_atom(expr a,b)= if a>=parts_emb_start:: for i==1 upto parts_cnt[a]:: if parts_com[a][i]==_numeric:: - if xpart(b)==_group_wf:: - if frac parts_par[a][i]==0:: CP(_set_adr,parts_par[a][i]) CP(_group_wf,ypart(b)) - else:: CP(_set_adr,floor parts_par[a][i]) CP(_group_zf,ypart(b)) fi - ef xpart(b)==_group_zf:: - if frac parts_par[a][i]==0:: CP(_set_adr,parts_par[a][i]) CP(_group_zf,ypart(b)) - else:: CP(_set_adr,floor parts_par[a][i]) CP(_group_wf,ypart(b)) fi - else:: CP(_set_adr,parts_par[a][i]) CP(xpart(b),ypart(b)) fi + if frac parts_par[a][i]==0:: CA(xpart(b),ypart(b),parts_par[a][i]) + ef xpart(b)==_group_wf:: CA(_group_zf,ypart(b),floor parts_par[a][i]) + ef xpart(b)==_group_zf:: CA(_group_wf,ypart(b),floor parts_par[a][i]) + else:: CA(xpart(b),ypart(b),parts_par[a][i]) fi else:: CP(parts_com[a][i],parts_par[a][i]) fi endfor - else:: CP(_set_adr,a) CP(xpart(b),ypart(b)) - fi + else:: CA(xpart(b),ypart(b),a) fi CP(_com,_group_e) - ef color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorA,cntC) - fi + ef color b:: color_list[incr cntC]:=b; CA(_set_colorA,cntC,a) fi parts_cnt[parts_int]:=nC; parts_int fi enddef; %------------------------------------------------------------------------------------------------- -def com_par(expr a,b)= nC:=nC+1; parts_com[parts_int][nC]:=a; parts_par[parts_int][nC]:=b; enddef; -%------------------------------------------------------------------------------------------------- -def com_par_ex(expr f)(expr c)(expr a,b)= - if c>=parts_emb_start:: - for i==1 upto parts_cnt[c]:: - if parts_com[c][i]==_numeric:: com_par(_set_adr,parts_par[c][i]) com_par(a,b) - ef f==1:: com_par(parts_com[c][i],parts_par[c][i]) fi +def com_par(expr c,p)= parts_com[parts_int][incr nC]:=c; parts_par[parts_int][nC]:=p; enddef; +def com_par_adr(expr c,p,a)= + if a>=parts_emb_start:: + for i==1 upto parts_cnt[a]:: + if parts_com[a][i]==_numeric:: com_par(_set_adr,parts_par[a][i]) com_par(c,p) + else:: com_par(parts_com[a][i],parts_par[a][i]) fi endfor - else:: com_par(_set_adr,c) com_par(a,b) + else:: com_par(_set_adr,a) com_par(c,p) fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -670,8 +656,7 @@ def MC(text t)= path frameA[],zA,zL; %----------------------------------------------------------------------------------------------- if (sw_expand=1)or(scan_bit(sw_output,MOL2k))or(scan_bit(sw_output,MOL3k)): - expand_set; rate_cr:=1; else: rate_cr:=-ratio_chain_ring; - fi + expand_set; rate_cr:=1; else: rate_cr:=-ratio_chain_ring; fi cC:="C"; cH:="H"; cO:="O"; cN:="N"; cS:="S"; cF:="F"; cP:="P"; cntA:=cntB:=cntC:=group_num:=0; str_tbl[0]:=cC; str_cnt:=2000; %----------------------------------------------------------------------------------------------- @@ -693,12 +678,10 @@ def MC(text t)= proc_skeleton(0); proc_scaling; if (mol_ht/mol_wd)>(m_ht/m_wd): if ypart(msize)>1: factor:=ypart(msize)/mol_ht; - else: factor:=((fig_ht-2margin_tb)*ypart(msize))/mol_ht; - fi + else: factor:=((fig_ht-2margin_tb)*ypart(msize))/mol_ht; fi else: if xpart(msize)>1: factor:=xpart(msize)/mol_wd; - else: factor:=((fig_wd-2margin_lr)*xpart(msize))/mol_wd; - fi + else: factor:=((fig_wd-2margin_lr)*xpart(msize))/mol_wd; fi fi exitif (factor>=1-eps)and(factor<=1+eps); blen:=blen*factor; proc_size_setup; endfor @@ -722,8 +705,7 @@ def MC(text t)= if addA[i]<>0: nA:=angX[i]+add_rot[i]; nC:=nA mod 90; if strA[i]=0: nB:=.5atom_wd; else: nB:=atom_wd; fi - draw_char(char(addA[i]),sfrt(posA[i],nB,nA)); - fi + draw_char(char(addA[i]),sfrt(posA[i],nB,nA)); fi endfor fi %-draw bond----------------------------------------------------------------------------------- @@ -759,7 +741,7 @@ def MC(text t)= else: nX:=margin_lr-minX+(fig_wd-mol_wd-2margin_lr)*xpart(mposition); fi if ypart(mposition)>1: nY:=ypart(mposition)-minY; else: nY:=margin_tb-minY+(fig_ht-mol_ht-2margin_tb)*ypart(mposition); fi - cntM:=cntM+1; posM[0][cntM]:=(nX,nY); + posM[0][incr cntM]:=(nX,nY); posM[1][cntM]:=(minX+nX,minY+nY); posM[2][cntM]:=(maxX+nX,maxY+nY); wdM[cntM]:=mol_wd; htM[cntM]:=mol_ht; mol_pic[cntM]:=currentpicture; @@ -771,8 +753,7 @@ enddef; %------------------------------------------------------------------------------------------------- def add_group= if f_at=1: nE:=getA(adrT); check_adrA(nE); else: nE:=cntA+1; fi - group_num:=group_num+1; group_cnt[group_num]:=0; - store_group(_jp_absA,nE) store_group(_com,_len_s) + group_cnt[incr group_num]:=0; store_group(_jp_absA,nE) store_group(_com,_len_s) if lineT<>nb: store_group(_tmp_line,lineT) fi if rotT<>0: store_group(_rot_ang,rotT) fi if lenT<>rate_cr: store_group(_chg_len,lenT) @@ -791,16 +772,16 @@ def add_group= enddef; %------------------------------------------------------------------------------------------------- def store_group(expr a,b)= - group_cnt[group_num]:=group_cnt[group_num]+1; - group_com[group_num][group_cnt[group_num]]:=a; group_par[group_num][group_cnt[group_num]]:=b; + group_com[group_num][incr group_cnt[group_num]]:=a; + group_par[group_num][group_cnt[group_num]]:=b; enddef; %================================================================================================= def read_group(expr a)(expr n)= save_group_cnt:=group_num; save_cntD:=parts_cnt[a]; for i=n upto group_num: for j=1 upto group_cnt[i]: - parts_cnt[a]:=parts_cnt[a]+1; - parts_com[a][parts_cnt[a]]:=group_com[i][j]; parts_par[a][parts_cnt[a]]:=group_par[i][j]; + parts_com[a][incr parts_cnt[a]]:=group_com[i][j]; + parts_par[a][parts_cnt[a]]:=group_par[i][j]; endfor endfor proc_bond_atom(a)(save_cntD+1); @@ -834,8 +815,7 @@ def proc_scaling= tempc:=subc(j,str_tbl[strA[i]]); if tempc="^": nU:=.5atom_wd; ef tempc="_": nD:=.5atom_wd; - ef (tempc<>"{")and(tempc<>"}"): nP:=nP+atom_wd*tbl_char_wd[ASCII(tempc)]; - fi + ef (tempc<>"{")and(tempc<>"}"): nP:=nP+atom_wd*tbl_char_wd[ASCII(tempc)]; fi endfor if (angX[i]<=90)or(angX[i]>=270): nR:=nP; else: nL:=nP; fi if (nX-nL+.5atom_wd)0: add_rot[cntA]:=rotT; rotT:=0; fi + if f_bra=0: sB[cntB]:=incr cntA; strA[cntA]:=temp_strA; + addA[cntA]:=addAT; addAT:=temp_strA:=add_rot[cntA]:=0; + if rotT<>0: add_rot[cntA]:=rotT; rotT:=0; fi else: f_bra:=0; fi if n=0: eB[cntB]:=cntA+1; f_term:=0; else: eB[cntB]:=n; f_term:=1; fi enddef; @@ -978,14 +958,14 @@ vardef getB(expr n)= if n>=0: markB+n ef n>=-999: cntB+n+1 else: n+4095 fi endde def termA= if f_term=0: if f_bra=0: - cntA:=cntA+1; strA[cntA]:=temp_strA; addA[cntA]:=addAT; add_rot[cntA]:=rotT; + strA[incr cntA]:=temp_strA; addA[cntA]:=addAT; add_rot[cntA]:=rotT; addAT:=temp_strA:=rotT:=0; else: f_bra:=0; fi f_term:=1; fi enddef; %------------------------------------------------------------------------------------------------- def termB= - if f_term=0: if f_bra=0:cntA:=cntA+1; angX[cntA]:=angT mod 360; else:f_bra:=0; fi f_term:=1; fi + if f_term=0: if f_bra=0: angX[incr cntA]:=angT mod 360; else:f_bra:=0; fi f_term:=1; fi enddef; %------------------------------------------------------------------------------------------------- vardef glu_atom(expr n)= @@ -1337,10 +1317,14 @@ def proc_report_out(expr f)= printf "---------------------------------------------------------------------------"; for i=1 upto mc_row: printf (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor printf "---------------------------------------------------------------------------"; - printf " row="&fdr(3)(mc_row)&" / length="&fdr(4)(length(mc))&" / commands="&fdr(3)(cnt_cmm); - printf " {}=X ="&fdr(3)(cnt_chgB)&" / {}:X ="&fdr(3)(cnt_chgA)& - " / '() ="&fdr(3)(cnt_inline_def)&" / @ ="&fdr(3)(cnt_at)& - " / & ="&fdr(3)(cnt_and)&" / < ="&fdr(3)(cnt_gtn); fi + printf " row="&fdr(3)(mc_row)&" , length="&fdr(4)(length(mc))& + " , commands="&fdr(3)(cnt_cmm); + printf " {}=X["&decimal(cnt_chgB)&"],{}:X["&decimal(cnt_chgA)& + "],'()["&decimal(cnt_inline_def)&"],@["&decimal(cnt_at)& + "],&["&decimal(cnt_and)&"],<["&decimal(cnt_gtn)&"],=["&decimal(cnt_equ)& + "],|["&decimal(cnt_bar-cnt_bars)&"],||["&decimal(cnt_bars)& + "],#["&decimal(cnt_hsh-cnt_hshs)&"],##["&decimal(cnt_hshs)&"]"; + fi printf "---------------------------------------------------------------------------"; printf " Warnings = "&fdr(3)(warning_cnt)&" / Code= "&decimal(parts_cnt[0]); printf " Width * Height = " & fdr(10)(mol_wd)&" * "&fdr(10)(mol_ht); @@ -1372,15 +1356,14 @@ def proc_report_out(expr f)= if sumA[i]>=1: printf " "&fsl(5)(erase_brace(tbl_atom_str[i]))& "("&fdr(9)(tbl_atom_wt[i])&")"&"["&fdr(9)(tbl_atom_mi[i])&"]"&" * "&fdr(4)(sumA[i]) - &fdr(15)(tbl_atom_wt[i]*sumA[i])&"["&fdr(12)(tbl_atom_mi[i]*sumA[i])&"]"; - fi + &fdr(15)(tbl_atom_wt[i]*sumA[i])&"["&fdr(12)(tbl_atom_mi[i]*sumA[i])&"]"; fi endfor printf " Molecular Weight [Mono Isotopic] = "&fsr(12)(cal_MW)&"["&fsr(12)(cal_MI)&"]"; printf "---------------------------------------------------------------------------"; printf " Weight Calc: " &cal_MW &" / Input: " - if inf_MW<>"-": &inf_MW &" / weight gap= " &decimal(num_MW-scantokens(inf_MW)) fi; - printf " Fomula Calc: "&cal_FM&" / Input: " - if inf_FM<>"-": &inf_FM&" / "& iif(inf_FM=cal_FM,"MACTCH","NOT MACTCH") fi; + if inf_MW<>"-": &inf_MW &" / weight gap= " &decimal(num_MW-scantokens(inf_MW)) fi; + printf " Fomula Calc: "&cal_FM &" / Input: " + if inf_FM<>"-": &inf_FM&" / "& iif(inf_FM=cal_FM,"MACTCH","NOT MACTCH") fi; printf "==========================================================================="; if f=1: printf EOF; fi enddef; @@ -1432,8 +1415,7 @@ def proc_mc_out(expr f)= forever: for i=nN downto 1: if at_comma[i]<=nA+mc_length: - printf substring(nA,at_comma[i]) of mc; nA:=at_comma[i]; exitif true; - fi + printf substring(nA,at_comma[i]) of mc; nA:=at_comma[i]; exitif true; fi endfor if nL-nA<=mc_length: printf substring(nA,nL) of mc; exitif true; fi endfor @@ -1444,7 +1426,9 @@ def proc_mc_out(expr f)= enddef; %================================================================================================= vardef fit_zero(expr n)= if n<=9: "00" ef n<=99: "0" else: "" fi &decimal(n) enddef; -vardef bond_type(expr n)= if (n>=dl)and(n<=dm_):2 ef n=tm:3 ef n=0: 0 else: 1 fi enddef; +vardef bond_type(expr n)= + if (n>=dl)and(n<=dm_):2 ef n=tm:3 ef (n=0)or(n=vf)or(n=vb): 0 else: 1 fi +enddef; vardef bond_charge(expr n)= if n=2: 1 ef n=1: 3 ef n=-1: 5 ef n=-2: 6 else: 0 fi enddef; vardef bond_stereo(expr n)= if (n=wf)or(n=zb)or(n=bd): 1 ef (n=zf)or(n=wb)or(n=dt): 6 ef n=wv: 4 else: 0 fi enddef; @@ -1454,8 +1438,8 @@ vardef bond_config(expr n)= vardef STa(expr s,WT,MI)= str_cnt:=str_cnt+1; tbl_cnt:=tbl_cnt+1; parts_num:=parts_num+1; parts_com[parts_num][1]:=_set_atom; parts_par[parts_num][1]:=str_cnt; parts_cnt[parts_num]:=1; - str_tbl[str_cnt]:=tbl_atom_str[tbl_cnt]:=s; - tbl_atom[tbl_cnt]:=0; tbl_atom_wt[tbl_cnt]:=WT; tbl_atom_mi[tbl_cnt]:=MI; + str_tbl[str_cnt]:=tbl_atom_str[tbl_cnt]:=s; tbl_atom[tbl_cnt]:=0; + tbl_atom_wt[tbl_cnt]:=WT; tbl_atom_mi[tbl_cnt]:=MI; parts_num enddef; %------------------------------------------------------------------------------------------------- @@ -1463,10 +1447,7 @@ vardef STb(expr s)(text t)= str_cnt:=str_cnt+1; tbl_cnt:=tbl_cnt+1; parts_num:=parts_num+1; parts_com[parts_num][1]:=_set_atom; parts_par[parts_num][1]:=str_cnt; parts_cnt[parts_num]:=1; str_tbl[str_cnt]:=tbl_atom_str[tbl_cnt]:=s; tbl_atom[tbl_cnt]:=0; - for list=t: - tbl_atom[tbl_cnt]:=tbl_atom[tbl_cnt]+1; - tbl_group[tbl_cnt][tbl_atom[tbl_cnt]]:=list-parts_emb_start; - endfor + for list=t: tbl_group[tbl_cnt][incr tbl_atom[tbl_cnt]]:=list-parts_emb_start; endfor parts_num enddef; %================================================================================================= @@ -1486,9 +1467,9 @@ K:= STa("K" ,39.0983, 38.9637064864); Li:=STa("{Li}",6.941, 7.016003 Mg:=STa("{Mg}",24.305, 23.985041697); Mn:=STa("{Mn}",54.938044, 54.93804391); N:= STa("N" ,14.0067, 14.00307400443); Na:=STa("{Na}",22.98977, 22.9897692820); Ni:=STa("{Ni}",58.693, 57.93534241); O:= STa("O" ,15.9994, 15.99491461957); -P:= STa("P" ,30.973762, 30.97376199842); Pb:= STa("Pb" ,207.2, 205.974455); -Pd:=STa("Pd" ,106.4, 107.905075); -S:= STa("S" ,32.065, 31.9720711744); Sb:= STa("Sb" ,121.75, 120.90381); +P:= STa("P" ,30.973762, 30.97376199842); Pb:= STa("{Pb}",207.2, 205.974455); +Pd:=STa("{Pd}",106.4, 107.905075); +S:= STa("S" ,32.065, 31.9720711744); Sb:= STa("{Sb}",121.75, 120.90381); Se:=STa("{Se}",78.971, 79.9165218); Si:=STa("{Si}",28.0855, 27.97692653465); Sn:=STa("{Sn}",118.71, 119.90220163); Ti:=STa("{Ti}",47.867, 47.94794198); U:= STa("U", 238.0289, 238.05079); V:= STa("V", 50.9415, 50.943957); @@ -1504,7 +1485,7 @@ ONa:=STb("O{Na}")(O,Na); SO3Na:=STb("S{O_3_}{Na}")(S,O,O,O,Na); tbl_group_end:=tbl_cnt; parts_atom_end:=parts_num; %================================================================================================= 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 + 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 @@ -1563,7 +1544,7 @@ def expand_set= !CH3:=!xCH3; !OH:=!xOH; !NH2:=!xNH2; !CHO:=!xCHO; !COOH:=!xCOOH; !CN:=!xCN; !NO2:=!xNO2; enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -vardef check(expr s)= +vardef mc_check(expr s)= save mc_char,err_cnt,char_cnt,f_depth,cnt_prn_s,cnt_prn_e,cnt_brc_s,cnt_brc_e,cnt_brk_s, cnt_brk_e,cmm_adr; string err_str[],err_type[]; @@ -1575,15 +1556,16 @@ vardef check(expr s)= %--------------------------------------------------------------------------------------------- if mc_row>=1: for i=1 upto length(s): - tempc:=subc(i,s); if tempc<>" ": char_cnt:=char_cnt+1; mc_char[char_cnt]:=ASCII(tempc); fi + tempc:=subc(i,s); if tempc<>" ": mc_char[incr char_cnt]:=ASCII(tempc); fi endfor mc_char[0]:=mc_char[char_cnt+1]:=mc_char[char_cnt+2]:=a_cmm; %-- argument missing chkeck -------------------------------------------------------------- - cnt_prn_s:=cnt_prn_e:=cnt_brc_s:=cnt_brc_e:=cnt_brk_s:=cnt_brk_e:=cnt_inline_def:=cnt_at:=0; - cnt_cmm:=cnt_and:=cnt_gtn:=cnt_gtn:=nA:=f_depth:=0; + cnt_prn_s:=cnt_prn_e:=cnt_brc_s:=cnt_brc_e:=cnt_brk_s:=cnt_brk_e:=cnt_inline_def:=0; + cnt_at:=cnt_cmm:=cnt_and:=cnt_gtn:=cnt_equ:=cnt_cln:=cnt_bar:=cnt_bars:=0; + cnt_hsh:=cnt_hshs:=f_depth:=nA:=0; forever: nA:=nA+1; nB:=mc_char[nA-1]; nC:=mc_char[nA]; nD:=mc_char[nA+1]; - if nC=a_cmm: if f_depth=0: cnt_cmm:=cnt_cmm+1; cmm_adr[cnt_cmm]:=nA; fi + if nC=a_cmm: if f_depth=0: cmm_adr[incr cnt_cmm]:=nA; fi ef nC=a_ast: if nD=a_sls: if mc_char[nA+2]=a_ast: if mc_char[nA+3]=a_cmm: proc_err(7,nA) nA:=nA+2; fi % */* x @@ -1592,24 +1574,28 @@ vardef check(expr s)= ef nC=a_sls: if nD=a_sls: if mc_char[nA+2]=a_cmm: proc_err(7,nA) nA:=nA+1; fi % // x ef nD=a_ast: if mc_char[nA+2]=a_cmm: proc_err(7,nA) nA:=nA+1; fi % /* x ef nD=a_cmm: proc_err(7,nA) fi % / x - ef nC=a_hsh: if nD=a_hsh: nA:=nA+1; % ## + ef nC=a_hsh: cnt_hsh:=cnt_hsh+1; % #+## + if nD=a_hsh: cnt_hshs:=cnt_hshs+1; nA:=nA+1; % ## ef nD=a_cmm: proc_err(7,nA) fi if nB<>a_cmm: proc_err(8,nA) fi % a # x ef nC=a_dol: if nD=a_cmm: proc_err(7,nA) fi % $ x - ef nC=a_equ: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x = x - ef nC=a_cln: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x : x + ef nC=a_equ: cnt_equ:=cnt_equ+1; + if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x = x + ef nC=a_cln: cnt_cln:=cnt_cln+1; + if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x : x ef nC=a_amk: cnt_at:=cnt_at+1; if nD= a_cmm: proc_err(7,nA) fi if nB<>a_cmm: proc_err(8,nA) fi % a @ x ef nC=a_and: cnt_and:=cnt_and+1; if nD= a_cmm: proc_err(7,nA) fi if nB<>a_cmm: proc_err(8,nA) fi % a & x ef nC=a_gtn: cnt_gtn:=cnt_gtn+1; - ef nC=a_ltn: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x > x - ef nC=a_tld: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ~ x - ef nC=a_hat: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ^ x - ef nC=a_bqt: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ` x - ef nC=a_bar: if nD= a_bar: if mc_char[nA+2]=a_bar: nA:=nA+1; % || - ef mc_char[nA+2]<>a_cmm: proc_err(8,nA) fi % | a - if nB<>a_cmm: proc_err(8,nA) fi fi % a | - ef nC=a_prn_s: if nD= a_cmm: proc_err(7,nA) fi % ( x + ef nC=a_ltn: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x > x + ef nC=a_tld: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ~ x + ef nC=a_hat: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ^ x + ef nC=a_bqt: if nD= a_cmm: proc_err(7,nA) fi if nB= a_cmm: proc_err(7,nA) fi % x ` x + ef nC=a_bar: cnt_bar:=cnt_bar+1; % |+|| + if nD= a_bar: cnt_bars:=cnt_bars+1; if mc_char[nA+2]=a_bar: nA:=nA+1; % || + ef mc_char[nA+2]<>a_cmm: proc_err(8,nA) fi % | a + if nB<>a_cmm: proc_err(8,nA) fi fi % a | + ef nC=a_prn_s: if nD= a_cmm: proc_err(7,nA) fi % ( x cnt_prn_s:=cnt_prn_s+1; f_depth:=1; if nB=a_qut: cnt_inline_def:=cnt_inline_def+1; fi ef nC=a_prn_e: cnt_prn_e:=cnt_prn_e+1; f_depth:=0; @@ -1635,11 +1621,11 @@ vardef check(expr s)= err_cnt enddef; %------------------------------------------------------------------------------------------------- -def proc_err(expr e,n)= err_cnt:=err_cnt+1; err_adr[err_cnt]:=n; err_code[err_cnt]:=e; +def proc_err(expr e,n)= err_adr[incr err_cnt]:=n; err_code[err_cnt]:=e; if e<=6: err_str[err_cnt]:=" "; else: err_str[err_cnt]:=substring(n-3,n+2) of mc; fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -def query(text s)= +def mc_query(text s)= begingroup save f_mcf,f_line,unit_row,unit_cnt,line_s,row_cnt,semic_cnt,info_cnt,order,min_n,key_cnt, info_s,sign_at,sign_n,filter_n,filter_tag,filter_var,filter_sign,filter_cnt,filter_p, @@ -1665,9 +1651,9 @@ def query(text s)= if sign_n=0: if sT="f": if scan_char(".",sV,0,1)=0: file_input:=sV&".mcf"; else: file_input:=sV; fi ef sT="o": if scan_char(".",sV,0,1)=0: file_output:=sV&".aux"; else: file_output:=sV; fi - ef sT="s": key_cnt:=key_cnt+1; key_s[key_cnt]:=sV; fi + ef sT="s": key_s[incr key_cnt]:=sV; fi else: - filter_cnt:=filter_cnt+1; filter_tag[filter_cnt]:=sT; filter_sign[filter_cnt]:=sign_n; + filter_tag[incr filter_cnt]:=sT; filter_sign[filter_cnt]:=sign_n; if (sign_n>=3)and(is_num(sV)=1): filter_var[filter_cnt]:=fix_num(sV); else: filter_var[filter_cnt]:=sV; fi fi @@ -1676,7 +1662,7 @@ def query(text s)= forever: temps:=readfrom file_input; exitif temps=EOF; if subc(1,temps)<>"%": - unit_row:=unit_row+1; line_s[unit_cnt][unit_row]:=temps; + line_s[unit_cnt][incr unit_row]:=temps; if (substring(0,2) of temps)="+-": row_cnt[unit_cnt]:=unit_row; f_mcf:=unit_row:=0; filter_n:=1; for i=1 upto filter_cnt: filter_p[i]:=0; endfor @@ -1757,12 +1743,10 @@ vardef is_num(expr s)= enddef; %------------------------------------------------------------------------------------------------- vardef split_semic(expr s)= - nN:=at_semic[0]:=0; - for i=1 upto length(s): if subc(i,s)=";": nN:=nN+1; at_semic[nN]:=i; fi endfor nN + nN:=at_semic[0]:=0; for i=1 upto length(s): if subc(i,s)=";": at_semic[incr nN]:=i; fi endfor nN enddef; %------------------------------------------------------------------------------------------------- vardef split_comma(expr s)= - nN:=at_comma[0]:=0; - for i=1 upto length(s): if subc(i,s)=",": nN:=nN+1; at_comma[nN]:=i; fi endfor nN + nN:=at_comma[0]:=0; for i=1 upto length(s): if subc(i,s)=",": at_comma[incr nN]:=i; fi endfor nN enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/graphics/mcf2graph/mcf_exa_code.pdf b/graphics/mcf2graph/mcf_exa_code.pdf index c4f74a9d58..59e94dd93e 100644 Binary files a/graphics/mcf2graph/mcf_exa_code.pdf and b/graphics/mcf2graph/mcf_exa_code.pdf differ diff --git a/graphics/mcf2graph/mcf_exa_code.tex b/graphics/mcf2graph/mcf_exa_code.tex index 90096a0f34..b7d3807fe6 100644 --- a/graphics/mcf2graph/mcf_exa_code.tex +++ b/graphics/mcf2graph/mcf_exa_code.tex @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Print out mcf data list (LuaLaTeX) by A.Yamaji 2022.03.13 +% Print out mcf data list by A.Yamaji 2022.03.27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ** mcf2graph.mf must be version 4.82 +% ** mcf2graph.mf must be version 4.83 % ** use mcf_library.mcf % ** typeset by LuaLaTeX(luamplib) \documentclass{article} @@ -19,14 +19,14 @@ fsize:=(35mm,34mm); max_blength:=4mm; row_h:=3.8mm; + header_h:=3.8mm; def make_frame= draw (0,0)--(185mm,0)--(185mm,h)--(0,h)--cycle wpcs thickness_frame; - draw (w,h-row_h)--(185mm,h-row_h) wpcs thickness_frame; + draw (w,h-header_h)--(185mm,h-header_h) wpcs thickness_frame; draw (w,h)--(w,0) wpcs thickness_frame; - draw ( 75mm,h)--( 75mm,h-row_h) wpcs thickness_frame; - draw (105mm,h)--(105mm,h-row_h) wpcs thickness_frame; - draw (130mm,h)--(130mm,h-row_h) wpcs thickness_frame; - draw (155mm,h)--(155mm,h-row_h) wpcs thickness_frame; + for col_w=75mm,105mm,130mm,155mm: + draw (col_w,h)--(col_w,h-header_h) wpcs thickness_frame; + endfor enddef; fi }% @@ -48,7 +48,7 @@ \noindent% \begin{mplibcode} beginfigm(":<0,0~nb") - if check(mc)=0: + if mc_check(mc)=0: MC(scantokens(mc)) ext( defaultfont:="cmtt9"; @@ -78,15 +78,15 @@ %%%%%% beginfigm("t:EXA","v+:*") %%%%%% beginfigm("t:EXA","v+:1") beginfigm("t:EXA","v+:2") - if check(mc)=0: + if mc_check(mc)=0: MC(scantokens(mc)) ext( defaultfont:="cmtt9"; label.lrt("["&decimal(fig_num)&"]",(0,h)); label.llft(inf_EXA,(w,h)); if length(inf_EN)>23: - nA:=defaultscale; defaultscale:=23/length(inf_EN); - label.lrt(inf_EN, (w,h)); + nA:=defaultscale; + defaultscale:=23/length(inf_EN); label.lrt(inf_EN, (w,h)); defaultscale:=nA; else: label.lrt(inf_EN, (w,h)); diff --git a/graphics/mcf2graph/mcf_exa_soc.mp b/graphics/mcf2graph/mcf_exa_soc.mp index 9be5d18af1..b4144fd0ce 100644 --- a/graphics/mcf2graph/mcf_exa_soc.mp +++ b/graphics/mcf2graph/mcf_exa_soc.mp @@ -1,15 +1,15 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format by Akira Yamaji 2022.03.13 +% Molecular Coding Format by Akira Yamaji 2022.03.27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph; %%% it must be version 4.82 -message "* mcf_exa_soc 2022.03.13"; +input mcf2graph; %%% it must be version 4.83 +message "* mcf_exa_soc 2022.03.27"; message ""; %------------------------------------------------------------------------------ %%%%sw_frame:=Outside; %%%%sw_numbering:=Bond; %%%%sw_numbering:=Atom; %%%%sw_frame:=Atom; -sw_expand:=1; +%%%%sw_expand:=1; tag1:="J"; tag2:="C"; tag3:="fm"; tag4:="mw"; tag5:="EN"; tag6:="MW"; %------------------------------------------------------------------------------ %% outputformat:="png"; hppp:=vppp:=0.1; outputtemplate:="%j-%3c.png"; @@ -20,9 +20,9 @@ tag1:="J"; tag2:="C"; tag3:="fm"; tag4:="mw"; tag5:="EN"; tag6:="MW"; %ext(defaultfont:=mpfont; defaultscale:=.3; %label.rt(inf_EN&" / "&cal_MW&" / "&decimal(num_MW-scantokens(inf_MW)),(0,0));) %------------------------------------------------------------------------------ -%%%%query("Cat=biological","MW<200","s:MW"); -%%%%query("Cat=biological","MW<150.0","s:EN"); -%%%%query("MW>=150","MW<=250","s:MW"); +%%%%mc_query("Cat=biological","MW<200","s:MW"); +%%%%mc_query("Cat=biological","MW<150.0","s:EN"); +%%%%mc_query("MW>=150","MW<=250","s:MW"); %****************************************************************************** fsize:=(35mm,24mm); max_blength:=4mm; @@ -33,7 +33,7 @@ forever: %%%% beginfigm("f:temp","v+:*") % use query output 'temp.mcf' %%%% beginfigm("v+:*") % select all beginfigm("t:EXA","v+:1") % 'v+:1': select EXA=1 - if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi + if f_EOF=0: if mc_check(mc)=0: MC(scantokens(mc)) fi fi endfigm exitif f_EOF=1; % exit if file end endfor diff --git a/graphics/mcf2graph/mcf_example.pdf b/graphics/mcf2graph/mcf_example.pdf index 4a658c43b5..f14cc81259 100644 Binary files a/graphics/mcf2graph/mcf_example.pdf and b/graphics/mcf2graph/mcf_example.pdf differ diff --git a/graphics/mcf2graph/mcf_example.tex b/graphics/mcf2graph/mcf_example.tex index 8508fc134f..c356799a8f 100644 --- a/graphics/mcf2graph/mcf_example.tex +++ b/graphics/mcf2graph/mcf_example.tex @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF Typeset with LuaLaTeX(luamplib) by A.Yamaji 2022.03.13 +% Example of MCF Typeset with LuaLaTeX(luamplib) by A.Yamaji 2022.03.27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ** mcf2graph.mf must be version 4.82 +% ** mcf2graph.mf must be version 4.83 % ** use mcf_library.mcf % ** typeset by LuaLaTeX(luamplib) \documentclass{article} @@ -64,7 +64,7 @@ \sbox{\fig@box}{% \begin{mplibcode} beginfigm("t:EXA","v+:1") - if check(mc)=0: + if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}"); VerbatimTeX("\gdef\MW{"&inf_MW&"}"); diff --git a/graphics/mcf2graph/mcf_library.mcf b/graphics/mcf2graph/mcf_library.mcf index ac330fef91..2ea49f3b41 100644 --- a/graphics/mcf2graph/mcf_library.mcf +++ b/graphics/mcf2graph/mcf_library.mcf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% molecular library file mcf_library.mcf by Akira Yamaji 2022.03.13 +% molecular library file mcf_library.mcf by Akira Yamaji 2022.03.27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % tag1:var1;tag2:var2;tag3:var3 ..... % first character of line "%" comment out @@ -394,7 +394,7 @@ Cat:biological;EN:Isoflavone;MW:222.24;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:Flavanone;MW:224.25;EXA:1 + -<30,Ph,3=?6,10:O,7://O,8:/OH,9:/Ph, +<30,Ph,3=?6,10:O,7://O,9:/Ph, +------------------------------------------------------------------------------ Cat:biological;EN:Flavonol;MW:238.24;EXA:1 + @@ -2203,14 +2203,13 @@ Cat:biological;EN:Okadaic acid;MW:805.00;EXA:2 +------------------------------------------------------------------------------ Cat:antibiotics;EN:Vancomycin;MW:1449.25;EXA:2 + -<-30,#1,!12,{1,3,12}=zf,7=wf,/H^-60,60,*/OH,60, - Ph,-4:/Cl,@-3,\,O,!,Ph,@-4,\,O,!,Ph,-1^15:/Cl,@-3,\,/*OH,*/H^-60,&1, - @7,&26,@$1,60,//O,60,NH,60,/*H,*/COOH^180,-60, - Ph,{-2,-4}:/OH,@-1,\,Ph,-5:/OH,@-2,&4,##, - {3^40,6,9,12}://O,{2,5,8,11}:NH,{1,4^180,7'^-60,10'^60,14'^60}:*/H, +<-30,#1,!12,{1,3,12}=zf,7=wf,60,60,Ph,@-3,\,O,!,Ph,@-4,\,O,!,Ph,@-3,\,&1, + @7,&26,@$1,60,60,NH,60,-60,Ph,@-1,\,Ph,@-2,&4,##, + {36,3^40,6,9,12}://O,{2,5,8,11}:NH,{1,4^180,7'^-60,10'^60,14'^60,35^-60}:*/H, + {41,43,46}:/OH,{14,35'}:*/OH,{17,34^15}:/Cl,38^180:*/COOH, @10,*\^-60,60,//O,!,NH2,@13,*\,NH,!,//O,!,/??!,*/H^60,!~zf,NH,!, - @23,\,O,!,|,?6`.7,2:O,3^10:/!OH,{4,5}:/OH, - @-1,\,O,!,|,?6`.7,6:O,{3^35,5}:/_,3^-35:/NH2,4:/OH + @23,\,O,!~zf,|,?6`.7,2:O,3^10:*/!OH,{4',5}:*/OH, + @-1,\*,O,!~wb,|,?6`.7,6:O,{3'^35,5}:*/_,3^-35:/NH2,4:/*OH, +------------------------------------------------------------------------------ Cat:biological;EN:Maitotoxin;MW:3425.86;EXA:2 + diff --git a/graphics/mcf2graph/mcf_man_soc.mp b/graphics/mcf2graph/mcf_man_soc.mp index da1e9b8093..62d042bbf7 100644 --- a/graphics/mcf2graph/mcf_man_soc.mp +++ b/graphics/mcf2graph/mcf_man_soc.mp @@ -1,9 +1,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2022.03.13 +% MCF file for mcf_manual.tex by Akira.Yamaji 2022.03.27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph; %% it must be version 4.82 +input mcf2graph; %% it must be version 4.83 % ** use library file 'mcf_library.mcf' -message "mcf_man_soc 2022.03.13"; message ""; +message "mcf_man_soc 2022.03.27"; message ""; %------------------------------------------------------------------------ sw_mframe:=0; sw_expand:=0; @@ -13,120 +13,120 @@ fsize:=(40mm,25mm); blength:=6mm; %*********************************************************************** beginfigm("EN:Glycine",":<30,NH2,!2,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Alanine",":<30,NH2,!~wb,/_,!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Valine",":<30,NH2,!~wb,/?!,!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Leucine",":<30,NH2,!~wb,/'(!,?!),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Isoleucine",":<30,NH2,!~wb,/'(/*_,!2),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Serine",":<30,NH2,!~wb,/!OH,!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Threonine",":<30,NH2,!~wb,/'(/_,!~wf,OH),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Cysteine",":<30,NH2,!~wb,/!SH,!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Methionine",":<30,NH2,!~wb,/'(!2,S,!),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Phenylalanine",":<30,NH2,!~wb,/!Ph,!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Tyrosine",":<30,NH2,!~wb,/'(!Ph,-3:/OH),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Triptophan", ":<30,NH2,!~wb,!,COOH,@2,\,!,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Prorine",":<18,?5,3:NH,4:*/COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Glutamine", ":<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!,//O,!,NH2") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Asparagine",":<30,NH2,!~wb,/'(!,//O,!,NH2),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Aspartic acid",":<30,NH2,!~wb,/!COOH,!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Glutamic acid",":<30,NH2,!~wb,/'(!2,COOH),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Lysine",":<30,NH2,!~wb,/'(!4,NH2),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Arginine", ":<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!2,NH,!,//NH,!,NH2") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Hystidine", ":<30,NH2,!~wb,!,COOH,@2,\,!,|,?5,{1,3}=dl,3:N,5:NH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-DOPA",":<30,NH2,!~wb,!,COOH,@2,\,!,Ph,{-3,-4}:/OH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:Ornithine",":<30,NH2,!~wb,/'(!3,NH2),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:Citrulline",":<30,NH2,!~wb,/'(!3,NH,!,//O,!,NH2),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:GABA",":<30,NH2,!4,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:amino Levulinic acid",":<30,NH2,!2,//O,!3,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:4-amino benzoic acid",":<30,Ph,1:/NH2,4:/COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Carboxyl glutamic acid", ":<30,NH2,!~wb,/'(!,/COOH,!,COOH),!,COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:L-Hydroxy Prorine",":<18,?5,1:/OH,3:NH,4:*/COOH") - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1085,13 +1085,13 @@ endfigm beginfigm("EN:Pyridine",":<30,Ph,2:N") sw_trimming:=0; fsize:=(12mm,12mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %----------------------------------------------------------------------- beginfigm("EN:Pyridine",":<30,Ph,2):N") sw_trimming:=0; fsize:=(12mm,12mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:add() 1") @@ -1216,7 +1216,7 @@ defaultsize:=save_defaultsize; %*************************************************************************** beginfigm("t:EN","v:Luciferin") fsize:=(50mm,15mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*************************************************************************** beginfigm("EN:Colchicine","MW:385.41", @@ -1226,7 +1226,7 @@ beginfigm("EN:Colchicine","MW:385.41", ": @9,\,NH,!,//O,! ") %--------------------------------------- fsize:=(50mm,20mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*************************************************************************** beginfigm("EN:Paclitaxel","MW:853.91", @@ -1240,7 +1240,7 @@ beginfigm("EN:Paclitaxel","MW:853.91", ": @12,\*^-15,O,60,//O,-60 ") %------------------------------------------------------ fsize:=(50mm,25mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*************************************************************************** beginfigm("EN:Maltose","MW:342.3", @@ -1252,7 +1252,7 @@ beginfigm("EN:Maltose","MW:342.3", ": #.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH ") %------------------------------------------------------ fsize:=(50mm,20mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %*********************************************************************** beginfigm("EN:Cellobiose","MW:342.3", @@ -1264,7 +1264,7 @@ beginfigm("EN:Cellobiose","MW:342.3", ": #.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH ") %------------------------------------------------------ fsize:=(50mm,20mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bye diff --git a/graphics/mcf2graph/mcf_manual.pdf b/graphics/mcf2graph/mcf_manual.pdf index cec3c7ffbc..605c3a0c24 100644 Binary files a/graphics/mcf2graph/mcf_manual.pdf and b/graphics/mcf2graph/mcf_manual.pdf differ diff --git a/graphics/mcf2graph/mcf_manual.tex b/graphics/mcf2graph/mcf_manual.tex index 01d25e170c..71ac080b10 100644 --- a/graphics/mcf2graph/mcf_manual.tex +++ b/graphics/mcf2graph/mcf_manual.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format manual by Akira Yamaji 2022.03.13 +% Molecular Coding Format manual by Akira Yamaji 2022.03.27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \usepackage[pdftex]{graphicx} @@ -1093,8 +1093,8 @@ endfor \end{verbatim} \MCFgraph %----------------------------------------------------------------------------- -\subsection{Function check()} -\index{check()}% +\subsection{Function mc\_check()} +\index{mc\_check()}% \begin{verbatim} (immediately compile) @@ -1104,17 +1104,17 @@ endfigm (check mcf and compile) -** check(mc) : error count +** mc_check(mc) : error count beginfigm("EN:Pyridine", ":<30,Ph,}2:N") % ** extra '}' - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{verbatim} \MCFgraph\hspace{22mm}\MCFgraph \begin{verbatim} -check(mc)=0 check(mc)>=1 +mc_check(mc)=0 mc_check(mc)>=1 \end{verbatim} %=============================================================================== \newpage @@ -1382,13 +1382,13 @@ endfigm \section{MCF example} %----------------------------------------------------------------------------- \subsection{Luciferin} -\index{check()}% +\index{mc\_check()}% \begin{verbatim} (use library file 'mcf_library') beginfigm("f:mcf_library", "t:EN","v:Luciferin") fsize:=(50mm,15mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{verbatim} \MCFgraph @@ -1402,7 +1402,7 @@ beginfigm("EN:Colchicine","MW:385.41", ": @9,\,NH,!,//O,! ") %------------------------------------- fsize:=(50mm,20mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{verbatim} \MCFgraph @@ -1424,7 +1424,7 @@ beginfigm("EN:Paclitaxel","MW:853.91", ": @12,\*^-15,O,60,//O,-60 ") %------------------------------------ fsize:=(50mm,25mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{verbatim} \MCFgraph @@ -1450,7 +1450,7 @@ beginfigm("EN:Maltose","MW:342.3", ": 6^$90:/!OH ") %----------------------------------------- fsize:=(50mm,20mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{verbatim} \MCFgraph @@ -1476,7 +1476,7 @@ beginfigm("EN:Cellobiose","MW:342.3", ": 6^$90:/!OH ") %----------------------------------------- fsize:=(50mm,20mm); - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{verbatim} \MCFgraph @@ -1516,29 +1516,29 @@ beginfigm("EN:Cholesterol","MW:386.65", >information ": {4,12}:*/_^60, ", > mc3 ": @-1,18,/*_,-60,!3,?! ") > mc4 %---------------------------------------- > - if check(mc)=0: MC(scantokens(mc)) fi > mc=mc1 - mc4 + if mc_check(mc)=0: MC(scantokens(mc)) fi > mc=mc1 - mc4 endfigm > %------------------------------------------------------------------------------ beginfigm("f:mcf_library.mcf","t:EN","v:Adenine") > from mcf_library.mcf - if check(mc)=0: MC(scantokens(mc)) fi > select EN="Adenine" + if mc_check(mc)=0: MC(scantokens(mc)) fi > select EN="Adenine" endfigm > %------------------------------------------------------------------------------ beginfigm("t:EN","v:Guanine") > select EN="Guanine" - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm %------------------------------------------------------------------------------ beginfigm("t:EN","v:Cytosine") > select EN="Cytosine" - if check(mc)=0: MC(scantokens(mc)) fi > + if mc_check(mc)=0: MC(scantokens(mc)) fi > endfigm > %------------------------------------------------------------------------------ beginfigm("t:n","v+:4") > v+:4 = select No.4 - if check(mc)=0: MC(scantokens(mc)) fi > keep file open + if mc_check(mc)=0: MC(scantokens(mc)) fi > keep file open endfigm > %------------------------------------------------------------------------------ forever: %%%%%%%%%% beginfigm("f:mcf_library","v+:*") > select all beginfigm("f:mcf_library","t:EXA","v+:1") > 'v+:1'= select EXA=1 - if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi > keep file open + if f_EOF=0: if mc_check(mc)=0: MC(scantokens(mc)) fi fi > keep file open endfigm > exitif f_EOF=1; > exit if file end endfor @@ -1609,12 +1609,12 @@ Cat:biological;EN:Stearic acid;MW:284.48 %------------------------------------------------------------------------------ \noindent% \newpage -\subsection{Function query()} -\index{query()}% +\subsection{Function mc\_query()} +\index{mc\_query()}% \paragraph{(Example)} \begin{verbatim} %-------------------------------------------------------------- -% query() +% mc_query() % % "f:filename" : input file name (default "mcf_library.mcf") % "o:filename" : output file name (default "temp.mcf") @@ -1626,13 +1626,11 @@ Cat:biological;EN:Stearic acid;MW:284.48 % filter 2 : MW>=285 % filter 3 : MW<=295 %-------------------------------------------------------------- -query("s:EN", -%%%%% "f:mcf_library.mcf","o:temp.mcf","s:EN", - "Cat=biological","MW>=285","MW<=295"); +mc_query("s:EN","Cat=biological","MW>=285","MW<=295"); %-------------------------------------------------------------- forever: beginfigm("f:temp","v+:*") % use file temp.mcf / select all - if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi + if f_EOF=0: if mc_check(mc)=0: MC(scantokens(mc)) fi fi endfigm exitif f_EOF=1; endfor @@ -1952,7 +1950,7 @@ M END ": {1^60,5^180,16^60}:/*H, ", ": @14,\*,|,?5,{1,4}=dl,3:O ") %---------------------------------------- - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- @@ -1965,7 +1963,7 @@ M END ": {3,7,12,16}:/_, ", ": |,?6,6=dl,{6,2^35,2^-35}:/_ ") %------------------------------------------ - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm \end{mplibcode}\\ %-------------------------------------------------------------------- @@ -1979,7 +1977,7 @@ M END ": 2:/COOH,7://_,13:*/OH,8:/*OH, ", ": 14:*/_,{1^60,4^60}:*/H ") %------------------------------------ - if check(mc)=0: MC(scantokens(mc)) fi + if mc_check(mc)=0: MC(scantokens(mc)) fi endfigm; %-------------------------------------------------------------------- \end{mplibcode}\\ diff --git a/graphics/mcf2graph/mcf_mplib_exa.pdf b/graphics/mcf2graph/mcf_mplib_exa.pdf index 91de41e545..ed678e74bd 100644 Binary files a/graphics/mcf2graph/mcf_mplib_exa.pdf and b/graphics/mcf2graph/mcf_mplib_exa.pdf differ diff --git a/graphics/mcf2graph/mcf_mplib_exa.tex b/graphics/mcf2graph/mcf_mplib_exa.tex index 8a37c82760..666885b91d 100644 --- a/graphics/mcf2graph/mcf_mplib_exa.tex +++ b/graphics/mcf2graph/mcf_mplib_exa.tex @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2022.03.13 +% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2022.03.27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ** mcf2graph.mp must be version 4.82 +% ** mcf2graph.mp must be version 4.83 % ** use mcf_library.mcf \documentclass{article} %------------------------------------------------------------------------------ @@ -85,7 +85,7 @@ beginfigm("EN:Paclitaxel","MW:853.918", ": @7,\*,O,-45,//O,60,Ph,11:*/OCO!>rl,12:/*OCO!^-15>lr ") %--------------------------------------------------------------------- fsize:=(140mm,30mm); - if check(mc)=0: MCat(0,0.5)(scantokens(mc)) + if mc_check(mc)=0: MCat(0,0.5)(scantokens(mc)) sw_numbering:=Atom; MCat(0.6,0.5)(scantokens(mc)) sw_numbering:=Bond; MCat(1,0.5)(scantokens(mc)) fi @@ -101,7 +101,7 @@ beginfigm("EN:Paclitaxel","MW:853.918", ": @7,\*,O,-45,//O,60,Ph,11:*/OCO!>rl,12:/*OCO!^-15>lr ") %--------------------------------------------------------------------- fsize:=(140mm,30mm); - if check(mc)=0: MCat(0,0.5)(scantokens(mc)) + if mc_check(mc)=0: MCat(0,0.5)(scantokens(mc)) sw_numbering:=Atom; MCat(0.6,0.5)(scantokens(mc)) sw_numbering:=Bond; MCat(1,0.5)(scantokens(mc)) fi @@ -116,7 +116,7 @@ endfigm beginfigm("f:mcf_library.mcf","t:EN","v:Chlorophyll a","NO:-") sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% fsize:=(100mm,30mm); - if check(mc)=0: + if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); @@ -130,7 +130,7 @@ endfigm \begin{mplibcode} beginfigm("f:mcf_library.mcf","t:EN","v:Chlorophyll a","NO:-") sw_output:=Fig+Calc+Mcode; fsize:=(100mm,30mm); - if check(mc)=0: + if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); @@ -148,7 +148,7 @@ beginfigm("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1", "MW:819",":,38:*/_,65=red") %%%% add methyl group (color red) %%%% sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% fsize:=(120mm,20mm); - if check(mc)=0: MC(scantokens(mc)) + if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi @@ -163,7 +163,7 @@ beginfigm("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1", "MW:819",":,38:*/_,65=red") %%%% add methyl group (color red) %%%% sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% fsize:=(120mm,20mm); - if check(mc)=0: MC(scantokens(mc)) + if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi @@ -184,7 +184,7 @@ endfigm; beginfigm("t:EN","v:Maitotoxin") sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% fsize:=(120mm,60mm); fmargin:=(0,3mm); sw_frame:=Outside; - if check(mc)=0: MC(scantokens(mc)) + if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi @@ -199,7 +199,7 @@ endfigm; beginfigm("t:EN","v:Maitotoxin") sw_output:=Fig+Calc+Mcode; fsize:=(120mm,60mm); fmargin:=(0,3mm); sw_frame:=Outside; %% mc_length:=40; - if check(mc)=0: MC(scantokens(mc)) + if mc_check(mc)=0: MC(scantokens(mc)) VerbatimTeX("\gdef\EN{"&inf_EN&"}\gdef\MW{"&inf_MW&"}"); VerbatimTeX("\gdef\mw{"&cal_MW&"}\gdef\fm{"&cal_FM&"}"); fi -- cgit v1.2.3