From 37778869d20a42439b123bb0c553953f716886b1 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 6 Oct 2019 03:01:15 +0000 Subject: CTAN sync 201910060301 --- graphics/mcf2graph/CHANGELOG | 8 +- graphics/mcf2graph/README | 7 +- graphics/mcf2graph/mcf2graph.mf | 187 +++++++++++++++++------------------ graphics/mcf2graph/mcf_exa_soc.mf | 13 ++- graphics/mcf2graph/mcf_example.pdf | Bin 282495 -> 282475 bytes graphics/mcf2graph/mcf_example.tex | 7 +- graphics/mcf2graph/mcf_man_soc.mf | 53 +++++----- graphics/mcf2graph/mcf_manual.pdf | Bin 594168 -> 594219 bytes graphics/mcf2graph/mcf_manual.tex | 24 ++--- graphics/mcf2graph/mcf_mplib_exa.pdf | Bin 172091 -> 172190 bytes graphics/mcf2graph/mcf_mplib_exa.tex | 5 +- 11 files changed, 151 insertions(+), 153 deletions(-) (limited to 'graphics/mcf2graph') diff --git a/graphics/mcf2graph/CHANGELOG b/graphics/mcf2graph/CHANGELOG index fa35cf4dd9..36a80e4aed 100644 --- a/graphics/mcf2graph/CHANGELOG +++ b/graphics/mcf2graph/CHANGELOG @@ -1,6 +1,12 @@ ******************************************************************************* - Changelog of mcf2graph software package by Akira Yamaji 2019-07-07 + Changelog of mcf2graph software package by Akira Yamaji 2019-10-05 ******************************************************************************* +[ver. 4.45 / 2019-10-05] + -improve function ext() + -delete option parameter sw_auxfix + sw_auxfix=1 => sw_aux_out=2 + -update MCF manual,example + [ver. 4.44 / 2019-07-07] -improve to ignore unknown command diff --git a/graphics/mcf2graph/README b/graphics/mcf2graph/README index 879a75196a..d9538548e2 100644 --- a/graphics/mcf2graph/README +++ b/graphics/mcf2graph/README @@ -1,7 +1,7 @@ ******************************************************************************** mcf2graph : Convert Molecular Coding Format to graphics with METAFONT/METAPOST Author : Akira Yamaji - version : 4.44 2019-07-07 + version : 4.45 2019-10-05 E-mail : mcf2graph@gmail.com Located at : http://www.ctan.org/pkg/mcf2graph ******************************************************************************** @@ -37,8 +37,9 @@ ( 4) >mpost -s ahangle=1 FILENAME => output png file ( 5) >mpost -s ahangle=2 FILENAME => output svg file ( 6) >mpost -s ahangle=3 FILENAME => output eps file (.eps) - ( 7) >mpost -s ahlength=1 FILENAME => output aux file - ( 8) >mpost -s ahlength=2 FILENAME => output report file + ( 7) >mpost -s ahlength=1 FILENAME => output aux file (tag1:var1;tag2:var2;) + ( 7) >mpost -s ahlength=2 FILENAME => output aux file (tag1;tag2; var1;var2;) + ( 8) >mpost -s ahlength=3 FILENAME => output report file ( 9) >mpost -s ahlength=5 FILENAME => output mol file(V2000) (10) >mpost -s ahlength=6 FILENAME => output mol file(V3000) (11) >mpost -s labeloffset=1 FILENAME => use plain.mp 'label','drawarrow' diff --git a/graphics/mcf2graph/mcf2graph.mf b/graphics/mcf2graph/mcf2graph.mf index 0906454eb5..8de584bebe 100644 --- a/graphics/mcf2graph/mcf2graph.mf +++ b/graphics/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.44 Copyright (c) 2013-2019 Akira Yamaji +% mcf2graph ver 4.45 Copyright (c) 2013-2019 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, @@ -28,8 +28,9 @@ % Set outputformat to "png" : mpost -s ahangle=1 FILENAME % Set outputformat to "svg" : mpost -s ahangle=2 FILENAME % Set outputformat to "eps" (.eps) : mpost -s ahangle=3 FILENAME -% Set output aux file : mpost -s ahlength=1 FILENAME -% Set output report : mpost -s ahlength=2 FILENAME +% Set output aux file (tag1:var1;tag2:var2) : mpost -s ahlength=1 FILENAME +% Set output aux file (tag1;tag2 var1;var2) : mpost -s ahlength=2 FILENAME +% Set output report : mpost -s ahlength=3 FILENAME % Set output MOL(V2000) : mpost -s ahlength=5 FILENAME % Set output MOL(V3000) : mpost -s ahlength=6 FILENAME % Set to use plain.mp (label,arrow) : mpost -s labeloffset=1 FILENAME @@ -46,9 +47,9 @@ pair save_pair[],msize,mposition,fsize,fmargin,save_mposition; picture mol_stru[],save_picture,temp_picture; path arrow_path,arrow_head; %------------------------------------------------------------------------------------------------- -char_num:=str_cnt:=proc_end:=mangle:=sw_label_emu:=sw_calc:=sw_extall:=0; -sw_numberA:=sw_numberB:=sw_mframe:=sw_aux_out:=sw_expand:=sw_fframe:=sw_trimming:=0; -sw_aframe:=sw_rep_out:=sw_mol_out:=sw_subst_off:=sw_single:=sw_auxfix:=sw_arrow:=0; +char_num:=str_cnt:=proc_end:=mangle:=sw_label_emu:=sw_calc:=sw_ext_all:=0; +sw_numberA:=sw_numberB:=sw_aux_out:=sw_expand:=sw_fframe:=sw_mframe:=sw_aframe:=sw_trimming:=0; +sw_rep_out:=sw_mol_out:=sw_subst_off:=sw_single:=sw_arrow:=0; numberA_start:=numberB_start:=1; numberA_end:=numberB_end:=4095; aux_max:=max_inf_num:=20; aux_delimiter:=";"; var1:="jobname"; tag1:="F"; var2:="char_num"; tag2:="C"; for i=3 upto aux_max: var[i]:=tag[i]:=""; endfor @@ -76,7 +77,8 @@ if (known green)and(known ahlength): fi %--default ahlength=4--------------------------------------------------------------------- if ahlength=1: sw_aux_out:=1; bboxmargin:=0; % output aux file - elseif ahlength=2: sw_rep_out:=1; bboxmargin:=0; % output report + elseif ahlength=2: sw_aux_out:=2; bboxmargin:=0; % output aux file(fixed mode) + elseif ahlength=3: sw_rep_out:=1; bboxmargin:=0; % output report elseif ahlength=5: sw_mol_out:=1; bboxmargin:=0; % output MOL(V2000) elseif ahlength=6: sw_mol_out:=2; bboxmargin:=0; % output MOL(V3000) fi @@ -98,7 +100,6 @@ if (known green)and(known ahlength): def # = enddef; vardef totalweight expr a= 0 enddef; def Cp(expr s) = if known s: if s<>0: withcolor color_list[s] fi fi enddef; - def ext(text TXT)= sw_extall:=sw_calc:=1; def EXTALL = TXT enddef; enddef; if atomfont="": atomfont:="draw"; fi % default atom font if defaultfont="": defaultfont:="draw"; fi % default label font %----------------------------------------------------------------------------------------- @@ -113,7 +114,6 @@ else: f_MP:=0; dotlabeldiam:=3bp; def Cp(expr s) = enddef; def color = transform enddef; - def ext(text TXT)= enddef; sw_arrow:=0; atomfont:="draw"; defaultfont:="draw"; @@ -122,11 +122,17 @@ fi clearit; %-------------------------------------------------------------------------------------------------- message "---------------------------------------------"; -message "This is mcf2graph ver 4.44 2019.07"; +message "This is mcf2graph ver 4.45 2019.10"; if f_MP=1: + if bboxmargin=0: message "output no image file"; + elseif bboxmargin=1: message "output first font only"; + fi + message "jobname="&jobname; message "numbersystem="&numbersystem; if ahlength=1: message "output aux file"; message "out_file_aux="&out_file_aux; + message "aux_delimiter="&aux_delimiter; + message "aux_delimiter="&aux_delimiter; elseif ahlength=2: message "output report file"; message "out_file_rep="&out_file_rep; elseif ahlength=5: message "output MOL file(V2000)"; @@ -134,16 +140,11 @@ if f_MP=1: elseif ahlength=6: message "output MOL file(V3000)"; message jobname&"-nnn-"&"inf_EN"&".mol"; fi - if bboxmargin=0: - message "No image file"; - else: - if outputformat="png": - message "outputformat="&outputformat &" / ppp="&decimal(hppp); - else: - message "outputformat="&outputformat; - fi - message "outputtemplate="&outputtemplate; - fi + message "outputformat="&outputformat; + if outputformat="png": message "hppp="&decimal(hppp)&"/vppp="&decimal(vppp); fi + message "outputtemplate="&outputtemplate; + message "atomfont="&atomfont; + message "defaultfont="&defaultfont; fi message "---------------------------------------------"; %-------------------------------------------------------------------------------------------------- @@ -151,6 +152,8 @@ let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == = %-------------------------------------------------------------------------------------------------- primarydef a at b = fat(a,b) enddef; def fat(expr a,b)= mposition:=b; a enddef; +def ext(text TXT)= sw_ext_all:=1; def EXT_ALL = TXT enddef; enddef; +def ext_clear= sw_ext_all:=0; def EXT_ALL = enddef; enddef; %-------------------------------------------------------------------------------------------------- ?3:=?20:=Ph:=Ph1:=Ph2:=hz:=0; vt:=1; ratio_chain_ring:= 0.66; ratio_atom_bond:=0.36; @@ -180,14 +183,14 @@ sub_int_start:=3000; % 3000 => 4000 for internal sub structure (max 1000) def def_com(expr n)(text tx)= nA:=n; forsuffixes list=tx:: list:=nA; nA:=nA+1; endfor enddef; def_com(-4000)(_term,_jp_atom,_jp_atom_abs,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_chg_line, _dl,_mb,_N,_O,_S,_tmp_line,_chg_len,_get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang,_chg_env, - _tmp_env,_set_colorA,_set_colorB,_postA,_postB,_postC,_postD,_postE,_postF,_postG,_postH, + _tmp_env,_set_colorA,_set_colorB,_substA,_substB,_substC,_substD,_substE,_substF,_substG,_substH, _set_clr,_set_adr,_mk_bond,_set_atom,_arg_ang,_chg_atom,_tmp_rot,_fuse,_push,_pop, _size_a,_numeric,_jump_at,_connect_at,_set_and,_chg_charge,_nop); def_com(1)(si,dl,dr,db,dm,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,si_,wf_,wb_,bd_); %-------------------------------------------------------------------------------------------------- def parameter_list= - sw_rep_out,sw_numberA,sw_numberB,sw_mframe,sw_aux_out,sw_expand,sw_mol_out,sw_calc,sw_extall, - sw_aframe,sw_fframe,sw_subst_off,sw_single,sw_trimming,sw_arrow,sw_label_emu, + sw_rep_out,sw_numberA,sw_numberB,sw_mframe,sw_aux_out,sw_expand,sw_mol_out,sw_calc,sw_single, + sw_ext_all,sw_aframe,sw_fframe,sw_subst_off,sw_trimming,sw_arrow,sw_label_emu, ratio_atom_bond,ratio_thickness_bond,ratio_char_bond, ratio_chain_ring,ratio_bondgap_bond,ratio_zebra_black,ratio_zebragap_bond,ratio_thickness_char, ratio_wedge_bond,ratio_atomgap_atom,lonepairdiam,lonepairspace, @@ -271,7 +274,7 @@ def beginfont(text s)= enddef; %================================================================================================== def endfont= - if (f_MP=1)and(sw_extall=1): ext_font(EXTALL); fi + if sw_ext_all=1: ext_font(EXT_ALL); fi if sw_trimming>=1: nA:=nC:=4095; nB:=nD:=-4095; for i=1 upto cntM: @@ -308,27 +311,23 @@ def endfont= enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def set_def_MC= - save /,//,/*,*/,**,*/*,~,~~,^,^^,`,'`,<,>,>>,:>,&,:,=,\,\\,*\,\*,*\*,@,$,{,},#, + save /,//,/*,*/,**,*/*,~,^,`,<,>,>>,&,:,=,\,\\,*\,\*,*\*,@,$,{,},#, |,||,|<,>|,|<=,|=,=|,|:,:|,_,d,w,z,inside_def_MC; inside_def_MC:=1; _:=Me; d:=db; w:=wf; z:=zf; tertiarydef a=b == if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef; tertiarydef a:b == if (known a)and(known b):: change_atom(a,b) else:: _nop fi enddef; - def { == '''( enddef; + def { == read_number( enddef; let } == ); def &primary s == (_set_and,ASCII(s)) enddef; vardef $primary a == a-4095 enddef; - def ^^primary n == (_tmp_rot,n) enddef; def ``primary n == (_chg_len,n) enddef; - def '`primary n == (_tmp_len,n) enddef; def >primary n == (_chg_env,n) enddef; - def ~~primary n == (_tmp_line,n) enddef; - def :>primary n == (_tmp_env,n) enddef; - tertiarydef a^b == if known b:: ^^b,a else:: _nop,a fi enddef; - tertiarydef a`b == if known b:: '`b,a else:: _nop,a fi enddef; - tertiarydef a~b == if known b:: ~~b,a else:: _nop,a fi enddef; - tertiarydef a>b == if known b:: :>b,a else:: _nop,a fi enddef; + tertiarydef a^b == if known b:: (_tmp_rot,b),a else:: _nop,a fi enddef; + tertiarydef a`b == if known b:: (_tmp_len,b),a else:: _nop,a fi enddef; + tertiarydef a~b == if known b:: (_tmp_line,b),a else:: _nop,a fi enddef; + tertiarydef a>b == if known b:: (_tmp_env,b),a else:: _nop,a fi enddef; def # == _connect_at enddef; def @ == _jump_at enddef; def \ == @,0 enddef; @@ -344,17 +343,17 @@ def set_def_MC= def =| == (_pop,0) enddef; def | == (_push,2) enddef; def || == (_pop,2) enddef; - def /secondary n == if known n:: (_postA,n) else:: _nop fi enddef; - def //secondary n == if known n:: (_postB,n) else:: _nop fi enddef; - def */secondary n == if known n:: (_postC,n) else:: _nop fi enddef; - def /*secondary n == if known n:: (_postD,n) else:: _nop fi enddef; - def **secondary n == if known n:: (_postF,n) else:: _nop fi enddef; - def */*secondary n == if known n:: (_postG,n) else:: _nop fi enddef; + def /secondary n == if known n:: (_substA,n) else:: _nop fi enddef; + def //secondary n == if known n:: (_substB,n) else:: _nop fi enddef; + def */secondary n == if known n:: (_substC,n) else:: _nop fi enddef; + def /*secondary n == if known n:: (_substD,n) else:: _nop fi enddef; + def **secondary n == if known n:: (_substF,n) else:: _nop fi enddef; + def */*secondary n == if known n:: (_substG,n) else:: _nop fi enddef; enddef; %================================================================================================= -vardef '(text TXT)= ''(incr sub_usr)(TXT); sub_usr enddef; +vardef '(text TXT)= read_command(incr sub_usr)(TXT); sub_usr enddef; %------------------------------------------------------------------------------------------------- -def ''(expr ADR)(text TXT)= +def read_command(expr ADR)(text TXT)= begingroup save list_cnt; if unknown inside_def_MC:: set_def_MC fi @@ -394,7 +393,7 @@ def ''(expr ADR)(text TXT)= endgroup enddef; %------------------------------------------------------------------------------------------------- -vardef '''(text TXT)= +vardef read_number(text TXT)= sub_int:=sub_int+1; cntD[sub_int]:=0; for list==TXT:: @@ -475,7 +474,7 @@ vardef change_atom(expr a,b)= if (b>=H)and(b<=U):: if b==N:: PP(a,_N) elseif b==O:: PP(a,_O) elseif b==S:: PP(a,_S) else:: PX(a)(_chg_atom,b) fi - ef b==NH:: PA(_set_clr,1) PP(a,_N) PX(a)(_postH,H) PA(_set_clr,0) + ef b==NH:: PA(_set_clr,1) PP(a,_N) PX(a)(_substH,H) PA(_set_clr,0) ef b==_jump_at:: PA(_jp_atom,a) ef b==_connect_at:: PA(_cyc,a) fi @@ -743,7 +742,7 @@ def sub_add(expr a,b)= enddef; %------------------------------------------------------------------------------------------------- def sub_add_op(expr a,b)= - op_cnt[cntP]:=op_cnt[cntP]+1; op_com[cntP][op_cnt[cntP]]:=a; op_par[cntP][op_cnt[cntP]]:=b; + op_cnt[cntS]:=op_cnt[cntS]+1; op_com[cntS][op_cnt[cntS]]:=a; op_par[cntS][op_cnt[cntS]]:=b; enddef; %------------------------------------------------------------------------------------------------- def sub_pro(expr a,b)= @@ -769,7 +768,7 @@ enddef; %------------------------------------------------------------------------------------------------- def MC(text TXT)= begingroup - save com,par,adrA,adrB,f_bra,envT,envB,lenT,lineT,strAT,stkA,stkB,stkL,stkM,cntP,bondL,temp_len, + save com,par,adrA,adrB,f_bra,envT,envB,lenT,lineT,strAT,stkA,stkB,stkL,stkM,cntS,bondL,temp_len, temp_cntB,f_end,f_term,rotT,adrS,f_at,f_lineT,f_rotT,f_lenT,f_envT,angT,tempB,tempA, maxX,maxY,f_char,ps_adr,ps_com,sA,sC,sD,pA,pB,factor,m_wd,m_ht, op_com,op_par,op_cnt,crR,colorA,colorB,PA,PO,PP,PX,defaultsize,defaultscale; @@ -788,18 +787,18 @@ def MC(text TXT)= if (sw_expand=1)or(sw_mol_out>=1): expand_set; fi sub_usr:=sub_usr_start; sub_int:=sub_int_start; - cntA:=cntB:=cntP:=cntC:=0; strD[0]:=""; str_cnt:=2000; crR:=-ratio_chain_ring; + cntA:=cntB:=cntS:=cntC:=0; strD[0]:=""; str_cnt:=2000; crR:=-ratio_chain_ring; %----------------------------------------------------------------------------------------------- font_wd:=xpart(fsize); font_ht:=ypart(fsize); margin_lr:=xpart(fmargin); margin_tb:=ypart(fmargin); %=============================================================================================== - ''(0)(TXT,(_term,0)); + read_command(0)(TXT,(_term,0)); %----------------------------------------------------------------------------------------------- proc_bond_atom(1); %----------------------------------------------------------------------------------------------- - if (cntP>0)and(sw_subst_off=0): post_get(1); fi + if (cntS>0)and(sw_subst_off=0): subst_get(1); fi %----------------------------------------------------------------------------------------------- char_use_check; %-scaling--------------------------------------------------------------------------------------- @@ -898,18 +897,18 @@ def MC(text TXT)= mol_stru[cntM]:=currentpicture; clearit; endgroup; - if ((sw_aux_out=1)or(sw_rep_out=1)or(sw_mol_out>=1)or(sw_calc=1))and(f_MP=1): proc_calc; fi + if ((sw_aux_out>=1)or(sw_rep_out=1)or(sw_mol_out>=1)or(sw_calc=1))and(f_MP=1): proc_calc; fi %----------------------------------------------------------------------------------------------- %%%% message "count of usr ="& decimal(sub_usr) &" "& decimal(sub_usr-sub_usr_start); %%%% message "count of int ="& decimal(sub_int) &" "& decimal(sub_int-sub_int_start); %----------------------------------------------------------------------------------------------- enddef; %------------------------------------------------------------------------------------------------- -def post_put= +def subst_put= begingroup save nA; if f_at=1: nA:=getA(adrT); check_adrA(nA); else: nA:=cntA+1; fi - cntP:=cntP+1; ps_adr[cntP]:=nA; ps_com[cntP]:=par; op_cnt[cntP]:=0; + cntS:=cntS+1; ps_adr[cntS]:=nA; ps_com[cntS]:=par; op_cnt[cntS]:=0; if lineT<>0: PO(_tmp_line,lineT) fi if rotT<>0: PO(_rot_ang,rotT) fi if lenT<>crR: PO(_chg_len,lenT) fi @@ -923,16 +922,16 @@ def post_put= endgroup enddef; %------------------------------------------------------------------------------------------------- -def post_get(expr n)= +def subst_get(expr n)= sub_int:=0; - nA:=cntP; nB:=cntD[0]; - for i=n upto cntP: + nA:=cntS; nB:=cntD[0]; + for i=n upto cntS: PA(_jp_atom_abs,ps_adr[i]) PA(_push,1) for j=1 upto op_cnt[i]: PA(op_com[i][j],op_par[i][j]) endfor for j=1 upto cntD[ps_com[i]]: PA(comD[ps_com[i]][j],parD[ps_com[i]][j]) endfor PA(_pop,1) PA(_term,0) endfor - proc_bond_atom(nB+1); if cntP>nA: post_get(nA+1); fi + proc_bond_atom(nB+1); if cntS>nA: subst_get(nA+1); fi enddef; %------------------------------------------------------------------------------------------------- def draw_frame(expr PS,LX,LY,PN)= @@ -1013,14 +1012,14 @@ def proc_bond_atom(expr n)= ef nC=_mk_bond: if (par=0)and(rotT<>0): rotT:=0; fi add_atom; ef nC=_set_adr: adrT:=par; ef nC=_set_atom: strAT:=par; - ef nC=_postA: post_put; - ef nC=_postB: lineT:=dm; post_put; - ef nC=_postC: lineT:=wf; post_put; - ef nC=_postD: lineT:=zf; post_put; - ef nC=_postE: lineT:=nl; post_put; - ef nC=_postF: lineT:=0; post_put; - ef nC=_postG: lineT:=wv; post_put; - ef nC=_postH: lineT:=nl; lenT:=_size_a; post_put; + ef nC=_substA: subst_put; + ef nC=_substB: lineT:=dm; subst_put; + ef nC=_substC: lineT:=wf; subst_put; + ef nC=_substD: lineT:=zf; subst_put; + ef nC=_substE: lineT:=nl; subst_put; + ef nC=_substF: lineT:=0; subst_put; + ef nC=_substG: lineT:=wv; subst_put; + ef nC=_substH: lineT:=nl; lenT:=_size_a; subst_put; ef nC=_jp_bond: termA; tempB:=getB(par); check_adrB(tempB); sB[cntB+1]:=sB[tempB]; f_bra:=1; ef nC=_jp_atom: termA; tempA:=getA(par); check_adrA(tempA); sB[cntB+1]:=tempA; f_bra:=1; ef nC=_jp_atom_abs: sB[cntB+1]:=par; f_bra:=1; temp_cntB:=cntB; @@ -1106,7 +1105,7 @@ def proc_skeleton= ef nC=_mk_bond: if (par=0)and(rotT<>0):par:=rotT; rotT:=0; fi add_bond(par); ef nC=_rot_ang: angT:=(angT+par) mod 360; ef nC=_tmp_rot: rotT:=par; - ef (nC>=_postA)and(nC<=_postH): rotT:=0; + ef (nC>=_substA)and(nC<=_substH): rotT:=0; ef nC=_chg_env: envB:=par; ef nC=_tmp_env: envT:=par; ef nC=_set_clr: f_at:=par; if par=0: lineT:=si; lenT:=crR; rotT:=envT:=0; fi @@ -1347,7 +1346,7 @@ Li[1]:='("{Li^+^}"); Na[1]:='("{Na^+^}"); Cl[-1]:='("{Cl^-^}"); Br[-1]:='("{Br^- R:='("R"); R1:='("{R^1^}"); R2:='("{R^2^}"); R3:='("{R^3^}"); R4:='("R^4^"); R5:='("{R^5^}"); %------------------------------------------------------------------------------------------------- CHO:='("CHO"); OH:='("OH"); COOH:='("COOH"); CH2:='("C{H_2_}"); CH3:='("C{H_3_}"); CN:='("CN"); -NH2:='("N{H_2_}"); NO2:='("N{O_2_}"); SH:='("SH"); SO3:='("S{O_3_}"); NH:='(N,(_postE,H)); +NH2:='("N{H_2_}"); NO2:='("N{O_2_}"); SH:='("SH"); SO3:='("S{O_3_}"); NH:='(N,(_substE,H)); NMe:=N!:='(N,/Me); iPr:=Me!:='(/Me,60); tBu:='(/Me,/Me^60,60); SO:='(S,//O); SOO :='(S,//O^-35,//O^35); OMe:=O!:='(O,!); OEt:=O!2:='(O,!x2); OPr:=O!3:='(O,!x3); OiPr:=OMe!:='(O,!,iPr); @@ -1574,25 +1573,25 @@ def STb(expr ATOM)(text TXT)= enddef; %================================================================================================== tbl_cnt:=0; -STa("C" ,12.0107, 12.0000000); STa("H" , 1.00794, 1.00782503223); -STa("{Al}",26.9815, 26.98153853); STa("{As}",74.9216, 74.92159457); -STa("B" ,10.811, 11.00930536); STa("{Br}",79.904, 78.9183376); -STa("{Ca}",40.078, 39.962590863); STa("{Cl}",35.453, 34.968852); -STa("{Co}",58.933194, 58.93319429); STa("{Cr}",51.9961, 51.94050623); -STa("{Cu}",63.546, 62.92959772); STa("D" ,2.012, 2.01410177812); -STa("F" ,18.9984, 18.99840316273); STa("{Fe}",55.845, 55.93493633); -STa("{Hg}",200.59, 201.97064340); STa("I" ,126.90447,126.9044719); -STa("K" ,39.0983, 38.9637064864); STa("{Li}",6.941, 7.0160034366); -STa("{Mg}",24.305, 23.985041697); STa("{Mn}",54.938044, 54.93804391); -STa("N" ,14.0067, 14.00307400443); STa("{N^+^}",14.0067, 14.00307400443); +STa("C" ,12.0107, 12.0000000); STa("H" , 1.00794, 1.00782503223); +STa("{Al}",26.9815, 26.98153853); STa("{As}",74.9216, 74.92159457); +STa("B" ,10.811, 11.00930536); STa("{Br}",79.904, 78.9183376); +STa("{Ca}",40.078, 39.962590863); STa("{Cl}",35.453, 34.968852); +STa("{Co}",58.933194, 58.93319429); STa("{Cr}",51.9961, 51.94050623); +STa("{Cu}",63.546, 62.92959772); STa("D" ,2.012, 2.01410177812); +STa("F" ,18.9984, 18.99840316273); STa("{Fe}",55.845, 55.93493633); +STa("{Hg}",200.59, 201.97064340); STa("I" ,126.90447,126.9044719); +STa("K" ,39.0983, 38.9637064864); STa("{Li}",6.941, 7.0160034366); +STa("{Mg}",24.305, 23.985041697); STa("{Mn}",54.938044, 54.93804391); +STa("N" ,14.0067, 14.00307400443); STa("{N^+^}",14.0067, 14.00307400443); STa("{N^-^}",14.0067, 14.00307400443); -STa("{Na}",22.98977, 22.9897692820); STa("{Ni}",58.693, 57.93534241); -STa("O" ,15.9994, 15.99491461957); STa("{O^-^}",15.9994, 15.99491461957); -STa("{O^p^}",15.9994, 15.99491461957); STa("P" ,30.973762, 30.97376199842); -STa("S" ,32.065, 31.9720711744); STa("{S^p^}",32.065, 31.9720711744); -STa("{S^m^}",32.065, 31.9720711744); -STa("{Se}",78.971, 79.9165218); STa("{Si}",28.0855, 27.97692653465); -STa("{Sn}",118.71, 119.90220163); STa("{Ti}",47.867, 47.94794198); +STa("{Na}",22.98977, 22.9897692820); STa("{Ni}",58.693, 57.93534241); +STa("O" ,15.9994, 15.99491461957); STa("{O^-^}",15.9994, 15.99491461957); +STa("{O^p^}",15.9994, 15.99491461957); STa("P" ,30.973762, 30.97376199842); +STa("S" ,32.065, 31.9720711744); STa("{S^p^}",32.065, 31.9720711744); +STa("{S^m^}",32.065, 31.9720711744); +STa("{Se}",78.971, 79.9165218); STa("{Si}",28.0855, 27.97692653465); +STa("{Sn}",118.71, 119.90220163); STa("{Ti}",47.867, 47.94794198); STa("{Zn}",65.409, 63.92914201); %-------------------------------------------------------------------------------------------------- STb("{H_2_}")("H","H"); STb("OH")("O","H"); STb("O{Na}")("O","{Na}"); STb("CN")("C","N"); @@ -1658,26 +1657,26 @@ def proc_calc= endfor cal_MI:=substring (0,10) of decimal(num_MI); cal_MW:=substring (0,8) of decimal(num_MW); - if sw_aux_out=1: proc_auxfile_out; fi + if sw_aux_out>=1: proc_auxfile_out; fi if sw_rep_out=1: proc_report_out; fi if sw_mol_out>=1: proc_mol_out; fi endgroup enddef; %================================================================================================== -def auxtag_out= - for i=1 upto aux_max: exitif tag[i]=""; if i=1: printf tag[1] else: &aux_delimiter&tag[i] fi - endfor -enddef; -%================================================================================================== def proc_auxfile_out= message "["&decimal(char_num)&"]:"&inf_EN; out_file_name:=out_file_aux; - for i=1 upto aux_max: exitif tag[i]=""; - if i=1: printf "" else: &aux_delimiter fi if sw_auxfix=0: &tag[i]&":" fi & + if (char_num=1)and(sw_aux_out=2): + printf tag[1] for i=2 upto aux_max: exitif tag[i]=""; &";"&tag[i] endfor ; + fi + for i=1 upto aux_max: exitif tag[i]=""; + if i=1: printf "" else: &aux_delimiter fi + if sw_aux_out=1: &tag[i]&":" fi & if string scantokens(var[i]): scantokens(var[i]) - elseif numeric scantokens(var[i]): decimal(scantokens(var[i])) fi + elseif numeric scantokens(var[i]): decimal(scantokens(var[i])) + fi endfor - if sw_auxfix=0: for i=1 upto inf_num: &aux_delimiter&info[i] endfor; fi + if sw_aux_out=1: for i=1 upto inf_num: &aux_delimiter&info[i] endfor; fi enddef; %================================================================================================== vardef round_auto(expr n)= diff --git a/graphics/mcf2graph/mcf_exa_soc.mf b/graphics/mcf2graph/mcf_exa_soc.mf index 7ade70ca72..99101f031f 100644 --- a/graphics/mcf2graph/mcf_exa_soc.mf +++ b/graphics/mcf2graph/mcf_exa_soc.mf @@ -1,12 +1,12 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2019.07.07 +% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2019.10.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %%% it must be version 4.44 or later +input mcf2graph.mf; %%% it must be version 4.45 or later %------------------------------------------------------------------------- fsize:=(33mm,24mm); max_blength:=4.5mm; %------------------------------------------------------------------------- -%%%%sw_aux_out:=1; +%%%%sw_aux_out:=1; % or 2 %%%%sw_fframe:=1; %%%%sw_aframe:=1; %%%%sw_mframe:=1; @@ -14,7 +14,6 @@ max_blength:=4.5mm; var3:="cal_FM"; tag3:="cFM"; var4:="cal_MW"; tag4:="cMW"; %%%% outputtemplate:="%3c-%j.png"; -%%%% sw_auxfix:=1; %%%% var3:="mol_wd"; tag3:="mWD"; %%%% var4:="mol_ht"; tag4:="mHT"; %%%% var5:="cal_MW"; tag5:="cMW"; @@ -22,13 +21,17 @@ var4:="cal_MW"; tag4:="cMW"; %%%% var7:="cal_FM"; tag7:="cFM"; %%%% var8:="inf_USE"; tag8:="USE"; %%%% var9:="inf_EXA"; tag9:="EXA"; -%%%% auxtag_out; %%%% sw_rep_out:=1; %%%% sw_mol_out:=1; %%%% atomfont:="uhvb8r"; %%%% atomfont:="cmtt8"; %%%% atomfont:="cmvtt10"; %%%% outputformat:="png"; hppp:=vppp:=0.1; outputtemplate:="%j-%3c.png"; +%--------------------------------------------------------------------------- +%%%% ext(nA:=10mm; pickup pencircle scaled 0.1pt; +%%%% draw(0,0)--(w,0)--(w,h)--(0,h)--cycle; +%%%% for i=nA step nA until w: draw(i,0)--(i,h); endfor +%%%% for i=nA step nA until h: draw(0,i)--(w,i); endfor ); %*************************************************************************** beginfont("EN:Acetamiprid","MW:222.676","FM:C10H11ClN4") MC(<30,Ph,2:N,1:/Cl,4:\,!,N,/_,!,/_,!!,N,!,CN) diff --git a/graphics/mcf2graph/mcf_example.pdf b/graphics/mcf2graph/mcf_example.pdf index 0d9a7977c9..6963eb33fa 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 5e26c477d7..41548467eb 100644 --- a/graphics/mcf2graph/mcf_example.tex +++ b/graphics/mcf2graph/mcf_example.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2019.05.26 +% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2019.10.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \usepackage{graphicx} @@ -38,15 +38,16 @@ \def\@fst@param#1:#2;{#1}\def\@sec@param#1:#2;{#2}% \def\@stru#1[#2]{\font\@strufont=#1\relax\hbox{\@strufont\char#2}}% %------------------------------------------------------------------------------- +\font\labelM=cmtt8 at 6pt% \def\put@char{% \unitlength=0.01mm\relax \@tempcnta=3300\relax \@tempcntb=3750\relax% \begin{picture}(\@tempcntb,\@tempcnta)% \advance\@tempcnta -300\relax% \put(20,\@tempcnta){\footnotesize\bf [\the\fontnum] \MOLnameE}% \advance\@tempcnta -250\relax% - \put(20,\@tempcnta){\tiny\tt MW:\CALmw { / }FM:\CALfm}% + \put(20,\@tempcnta){\labelM MW:\CALmw { / }FM:\CALfm}% \advance\@tempcnta -220\relax% - \put(20,\@tempcnta){\tiny\tt MW:\MOLmw(data)}% + \put(20,\@tempcnta){\labelM MW:\MOLmw(data)}% \put( 0,0){\makebox(\@tempcntb,\@tempcnta){\@stru{\MOLfile}[\MOLchar]}}% \end{picture}% } diff --git a/graphics/mcf2graph/mcf_man_soc.mf b/graphics/mcf2graph/mcf_man_soc.mf index 53e5a5671d..a64742bb3b 100644 --- a/graphics/mcf2graph/mcf_man_soc.mf +++ b/graphics/mcf2graph/mcf_man_soc.mf @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2019.07.07 +% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2019.10.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %% it must be version 4.44 or later +input mcf2graph.mf; %% it must be version 4.45 or later %------------------------------------------------------------------------ sw_mframe:=0; sw_expand:=0; @@ -1005,7 +1005,10 @@ sw_trimming:=1; %*************************************************************************** beginfont("EN:Acetamiprid","MW:222.676") fsize:=(60mm,18mm); - MC(<30,Ph,2:N,1:/Cl,4:\,!,N,/_,!,/_,!!,N,!,CN) + MC( + <30,Ph,2:N,1:/Cl, + 4:\,!,N,/_,!,/_,!!,N,!,CN + ) endfont %*************************************************************************** beginfont("EN:Fenitrothion","MW:277.231") @@ -1097,17 +1100,23 @@ endfont; %*************************************************************************** beginfont("EN:Validamycin") fsize:=(60mm,20mm); - MC(<30,?6,{5,6}:/OH,3:/!OH>rl, - $4:\,O,-60,|,?6,2:O,{3,4,5}:/OH,6:/!OH, - $1:\,NH,!,|,?6,2=dl,{4,5,6}:/OH,3:/!OH) + MC( + <30,?6,{5,6}:/OH,3:/!OH>rl, + $4:\,O,-60,|,?6,2:O,{3,4,5}:/OH,6:/!OH, + $1:\,NH,!,|,?6,2=dl,{4,5,6}:/OH,3:/!OH + ) endfont %*************************************************************************** beginfont("EN:Paclitaxel","CAS:33069-62-4","FM:C47H51NO14","MW:853.91") - MC(?6,5=dl,3:@,|<,``1,36,45,45,45,45,>|, - $5:#,-4=?6,-4=?4,-1=wb,-3=wf,-1:O,||, - {4^35,4^-35,6}:/_,{3^-60,15}:*/OH,8:/*H^-60,9:*/_^60,10://O, - 1:\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, - 7:\*,O,-45,//O,60,Ph,11:*\,O,-60,//O,60,12:\*^-15,O,60,//O,-60) + MC( + ?6,5=dl,3:@,|<,``1,36,45,45,45,45,>|, + $5:#,-4=?6,-4=?4,-1=wb,-3=wf,-1:O,||, + {4^35,4^-35,6}:/_,{3^-60,15}:*/OH,8:/*H^-60, + 9:*/_^60,10://O, + 1:\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, + 7:\*,O,-45,//O,60,Ph,11:*\,O,-60,//O,60, + 12:\*^-15,O,60,//O,-60 + ) endfont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% beginfont("EN:Ampicillin","MW:349.405") @@ -1120,23 +1129,11 @@ endfont beginfont("EN:Cholesterol","CAS:57-88-5","FM:C27H46O","MW:386.65") fsize:=(60mm,15mm); MC( - <30,?6,{-4,-2}=?6,-4=?5,7=dl, - 1:*/OH,{4,12}:*/_^60,9:*/H^60, - 10:/*H^180,11:/*H^-60,17:/*H^-54, - -1:@,18,/*_,-60,!3,/_,!, - ) -endfont -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -bye -?6,{-4,-2}=?6,-4=?5,7=dl, - 1:*/OH,{4,12}:*/_^60,9:*/H^60, - 10:/*H^180,11:/*H^-60,17:/*H^-54, - -1:@,18,/*_,-60,!3,/_,!, - ) + <30,?6,{-4,-2}=?6,-4=?5,7=dl, + 1:*/OH,{4,12}:*/_^60,9:*/H^60, + 10:/*H^180,11:/*H^-60,17:/*H^-54, + -1:@,18,/*_,-60,!3,/_,! + ) endfont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bye -%%%%% -bye - -bye diff --git a/graphics/mcf2graph/mcf_manual.pdf b/graphics/mcf2graph/mcf_manual.pdf index b76b2dc02a..26d32a8547 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 71ca0286fd..272451b4dc 100644 --- a/graphics/mcf2graph/mcf_manual.tex +++ b/graphics/mcf2graph/mcf_manual.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format manual by Akira Yamaji 2019.07.07 +% Molecular Coding Format manual by Akira Yamaji 2019.10.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} %%%%\documentclass[a4paper,twoside]{article} @@ -1367,14 +1367,6 @@ beginfont("NO:4","EN:beta-carotene) > begin font(information) |,?6,6=dl,{6,2^35,2^-35}:/_) > end MCF endfont > end font %------------------------------------------------------------------------ -beginfont("NO:5","EN:Gibberellin A3"); > begin font(information) - MC(<18,?5,3=?7,5=?6[12], > begin MCF (5) - 8:@,160`1.3,3:#,13=dl,6=wf,8=wb, > - 5:@,40~zf`1,O,60,//O^180,14~zb:#, > - 2:/COOH,7://_,13:*/OH,8:/*OH, > - 14:*/_,{1^60,4^60}:*/H) > end MCF -endfont; > end font -%------------------------------------------------------------------------ bye \end{verbatim} %------------------------------------------------------------------------ @@ -1383,12 +1375,14 @@ bye \subsection{Information auxfile output} \paragraph{(Insert option parameter setting)} \begin{verbatim} - sw_aux_out:=1; + sw_aux_out=1 : tag1:var1;tag2:var2 + sw_aux_out=2 : tag1;tag2 var1;var2 ** default : sw_aux_out=0 \end{verbatim} \paragraph{(Command line)} \begin{verbatim} - >mpost -s ahlength=1 FILENAME + >mpost -s ahlength=1 FILENAME (sw_aux_out=1) + >mpost -s ahlength=2 FILENAME (sw_aux_out=2) \end{verbatim} \paragraph{(Sourse)} \begin{verbatim} @@ -1396,7 +1390,6 @@ beginfont("EN:Ampicillin")(....) beginfont("EN:Cholesterol")(....) beginfont("EN:Limonin")(....) beginfont("EN:beta-Carotene")(....) -beginfont("EN:Gibberellin A3")(....) \end{verbatim} \paragraph{(Setting)} \begin{verbatim} @@ -1407,27 +1400,24 @@ tag4:="cFM"; var4:="calc_formula"; \end{verbatim} \paragraph{(Output)} \begin{verbatim} -(sw_auxfix=0) +(sw_aux_out=1) F:mcf_man_soc;C:1;cMW:349.40462;cFM:C16H19N3O4S;EN:Ampicillin F:mcf_man_soc;C:2;cMW:386.6532;cFM:C27H46O;EN:Cholesterol F:mcf_exa_soc;C:3;cMW:470.5113;cFM:C26H30O8;EN:Limonin F:mcf_exa_soc;C:4;cMW:536.8722;cFM:C40H56;EN:beta-Carotene -F:mcf_exa_soc;C:5;cMW:346.3742;cFM:C19H22O6;EN:Gibberellin A3 -(sw_auxfix=1) +(sw_aux_out=2) F;C;cMW;cFM;EN mcf_man_soc;1;349.40462;C16H19N3O4S;Ampicillin mcf_man_soc;2;386.6532;C27H46O;Cholesterol mcf_exa_soc;3;470.5113;C26H30O8;Limonin mcf_exa_soc;4;536.8722;C40H56;beta-Carotene -mcf_exa_soc;5;346.3742;C19H22O6;Gibberellin A3 (aux_delimiter:="/";) F:mcf_man_soc/C:1/cMW:349.40462/cFM:C16H19N3O4S/EN:Ampicillin F:mcf_man_soc/C:2/cMW:386.6532/cFM:C27H46O/EN:Cholesterol F:mcf_exa_soc/C:3/cMW:470.5113/cFM:C26H30O8/EN:Limonin F:mcf_exa_soc/C:4/cMW:536.8722/cFM:C40H56/EN:beta-Carotene -F:mcf_exa_soc/C:5/cMW:346.3742/cFM:C19H22O6/EN:Gibberellin A3 \end{verbatim} \paragraph{(Tag)} \begin{verbatim} diff --git a/graphics/mcf2graph/mcf_mplib_exa.pdf b/graphics/mcf2graph/mcf_mplib_exa.pdf index cf946f3f49..0ad6c716f0 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 b71e80a2f7..ac29ba5441 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 2019.07.07 +% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2019.10.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% mcf2graph.mf it must be version 4.44 or later +%%% mcf2graph.mf it must be version 4.45 or later \documentclass{article} %------------------------------------------------------------------------------ \usepackage{luamplib}% @@ -38,6 +38,7 @@ {{\tt FM(C) :} molecular formula calculated by mcf2graph\\ {{\tt MW(C) :} molecular weight calculated by mcf2graph\\ {{\tt MW(D) :} molecular weight from literature data\vspace{5mm}\\ +%------------------------------------------------------------------------------------ \begin{mplibcode} fsize:=(80mm,40mm); beginfont("NO:1","EN:Chlorophyll a","MW:893.49") -- cgit v1.2.3