summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-03-28 03:02:13 +0000
committerNorbert Preining <norbert@preining.info>2022-03-28 03:02:13 +0000
commit5f80d92d8bebc775b30e2b212e33b08089517654 (patch)
treee1e56652895e1debfdeb684d33a53189e63dc776 /graphics
parentcfc8605fb8316f9b12730374e205212fc07b49ff (diff)
CTAN sync 202203280302
Diffstat (limited to 'graphics')
-rw-r--r--graphics/mcf2graph/CHANGELOG11
-rw-r--r--graphics/mcf2graph/README28
-rw-r--r--graphics/mcf2graph/mcf2graph.mp306
-rw-r--r--graphics/mcf2graph/mcf_exa_code.pdfbin78732 -> 79140 bytes
-rw-r--r--graphics/mcf2graph/mcf_exa_code.tex22
-rw-r--r--graphics/mcf2graph/mcf_exa_soc.mp16
-rw-r--r--graphics/mcf2graph/mcf_example.pdfbin431496 -> 431296 bytes
-rw-r--r--graphics/mcf2graph/mcf_example.tex6
-rw-r--r--graphics/mcf2graph/mcf_library.mcf17
-rw-r--r--graphics/mcf2graph/mcf_man_soc.mp76
-rw-r--r--graphics/mcf2graph/mcf_manual.pdfbin289186 -> 289251 bytes
-rw-r--r--graphics/mcf2graph/mcf_manual.tex54
-rw-r--r--graphics/mcf2graph/mcf_mplib_exa.pdfbin195576 -> 196130 bytes
-rw-r--r--graphics/mcf2graph/mcf_mplib_exa.tex20
14 files changed, 273 insertions, 283 deletions
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)<minX: minX:=nX-nL+.5atom_wd; fi
@@ -900,11 +880,11 @@ def proc_bond_atom(expr a)(expr n)=
enddef;
%-------------------------------------------------------------------------------------------------
def add_atom(expr n)=
- cntB:=cntB+1; lineB[cntB]:=lineT; lineT:=si;
+ lineB[incr cntB]:=lineT; lineT:=si;
if lenT=rate_cr: lenB[cntB]:=bondL; else: lenB[cntB]:=lenT; lenT:=rate_cr; fi
- if f_bra=0: cntA:=cntA+1; sB[cntB]:=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
+ 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
--- a/graphics/mcf2graph/mcf_exa_code.pdf
+++ b/graphics/mcf2graph/mcf_exa_code.pdf
Binary files 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
--- a/graphics/mcf2graph/mcf_example.pdf
+++ b/graphics/mcf2graph/mcf_example.pdf
Binary files 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
--- a/graphics/mcf2graph/mcf_manual.pdf
+++ b/graphics/mcf2graph/mcf_manual.pdf
Binary files 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
--- a/graphics/mcf2graph/mcf_mplib_exa.pdf
+++ b/graphics/mcf2graph/mcf_mplib_exa.pdf
Binary files 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