From 9a85ca320191b3d06008f820b014995ad9dc7d6b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 15 Nov 2016 22:46:47 +0000 Subject: mcf2graph (15nov16) git-svn-id: svn://tug.org/texlive/trunk@42515 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG | 6 +- Master/texmf-dist/doc/metapost/mcf2graph/README | 2 +- .../doc/metapost/mcf2graph/mcf_exa_soc.mf | 153 ++++++------ .../doc/metapost/mcf2graph/mcf_example.pdf | Bin 246692 -> 242422 bytes .../doc/metapost/mcf2graph/mcf_example.tex | 2 +- .../doc/metapost/mcf2graph/mcf_manual.pdf | Bin 436188 -> 436379 bytes .../doc/metapost/mcf2graph/mcf_manual.tex | 84 ++++--- .../doc/metapost/mcf2graph/mcf_mplib_exa.pdf | Bin 122594 -> 122594 bytes Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 275 +++++++++++++-------- 9 files changed, 293 insertions(+), 229 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG index 3826f7ec8c4..dbd4f1ecf86 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG +++ b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG @@ -1,6 +1,10 @@ ******************************************************************************* - Changelog of mcf2graph software package by Akira Yamaji 2016-11-05 + Changelog of mcf2graph software package by Akira Yamaji 2016-11-15 ******************************************************************************* +[ver. 4.05 / 2016-11-15] + -improve molecular checklist + -update MCF syntax manual + [ver. 4.04 / 2016-11-05] -improve clipping mode -update MCF syntax manual diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/README b/Master/texmf-dist/doc/metapost/mcf2graph/README index 2a152fe77da..aa648091eca 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/README +++ b/Master/texmf-dist/doc/metapost/mcf2graph/README @@ -1,7 +1,7 @@ ******************************************************************************** mcf2graph : Convert Molecular Coding Format to graphics with METAFONT/METAPOST Author : Akira Yamaji - version : 4.04 2016-11-05 + version : 4.05 2016-11-15 E-mail : mcf2graph@gmail.com Located at : http://www.ctan.org/pkg/mcf2graph ******************************************************************************** diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf index bbf4929b2e4..3ebecf6107a 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf @@ -1,10 +1,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2016.10.19 +% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2016.11.15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% input mcf2graph.mf; %%% it must be version 4.02 or later %------------------------------------------------------------------------- font_wd#:=33mm#; font_ht#:=24mm#; +max_bond_length#:=5mm#; %------------------------------------------------------------------------- sw_auxout:=1; sw_font_frame:=0; @@ -26,152 +27,152 @@ var4:="cal_MW"; tag4:="cMW"; %%%% sw_MOLout:=1; %%%% outputformat:="png"; hppp:=vppp:=0.1; outputtemplate:="%j-%3c.png"; %************************************************************************** -beginfont("EN:Acetamiprid") - MCf(<30,Ph,4\,!,NH,!,!~dr,N,!,CN) +beginfont("EN:Acetamiprid","MW:222.676") + MCf(<30,Ph,2:N,1:/Cl,4\,!,N,/Me,!,/Me,!~dr,N,!,CN) endfont %*************************************************************************** -beginfont("EN:Imidacloprid") - MCf(<30,Ph,1:N,6:/Cl,3\,!,|,?5,1:N,3:NH,2\\,!,NO2) +beginfont("EN:Imidacloprid","MW:255.662") + MCf(<30,Ph,1:N,6:/Cl,3\,!,|,?5,2=dl,1:N,3:N,2\,NH,!,NO2) endfont %*************************************************************************** -beginfont("EN:Thiamethoxam") - MCf(<30,?6,@(4,6)N,2:O,6:/Me,5\\,!,NO2,4\,!,|,?5,$(1,3)dl,3:N,5:S,4:/Cl) +beginfont("EN:Thiamethoxam","MW:291.71") + MCf(<30,?6,@(4,6)N,2:O,6:/Me,5\\,N,!,NO2,4\,!,|,?5,$(1,3)dl,3:N,5:S,4:/Cl) endfont %*************************************************************************** -beginfont("EN:Tebufenozide") +beginfont("EN:Tebufenozide","MW:352.478") MCf(<30,Ph,6:/Et,3\,//O,!,NH,!,N,/tBu,!,//O,!,|,Ph,@(3,5)/Me) endfont %*************************************************************************** -beginfont("EN:Pyridaphenthion") +beginfont("EN:Pyridaphenthion","MW:340.334") MCf(<-30,!2,O,!,P,//S,/OEt^160>rl,!,O,!,|,?6,$(1,5)dl,@(2,3)N,4://O,3:/Ph) endfont %*************************************************************************** -beginfont("EN:Fenitrothion") +beginfont("EN:Fenitrothion","MW:277.231") MCf(<30,!,O,!,P,//S,/OMe^160,!,O,!,|,Ph,3:/Me,4:/NO2) endfont %*************************************************************************** -beginfont("EN:Permethrin") +beginfont("EN:Permethrin","MW:391.288") MCf(<-30,?3,2^-35:*/Me,2^35:/*Me,1\,!~dl,/Cl,!,Cl, 3\,//O,!,O,!2,|,Ph,3\,O,-60,Ph) endfont %*************************************************************************** -beginfont("EN:Bensultap") +beginfont("EN:Bensultap","MW:431.598") MCf(<30,Ph,4\,SOO,!,S,!2,N,/Me,!2,S,!,SOO,!,Ph) endfont %*************************************************************************** -beginfont("EN:Azoxystorbin") +beginfont("EN:Azoxystorbin","MW:403.394") MCf(<30,Ph,2:/OH,3\,O,!,|,Ph,@(4,6)N,3\,O,!,|,Ph,2\,/OMe,!,//O,!,O,!) endfont %*************************************************************************** -beginfont("EN:Isoprothiolane") +beginfont("EN:Isoprothiolane","MW:290.392") MCf(<30,!,/Me,!,O,!,//O,|,!2,//O,!,O,!,/Me,!,2\\,|,?5,@(2,5)S) endfont %*************************************************************************** -beginfont("EN:Etridiazole") +beginfont("EN:Etridiazole","MW:247.518") MCf(<18,?5,$(1,3)dl,@(2,4)N,5:S,1:/OEt,3:/CCl3) endfont %*************************************************************************** -beginfont("EN:Oxine-Copper") +beginfont("EN:Oxine-Copper","MW:351.852") MCf(Ph,4:N,5=Ph,-4\,O,-60,<90,Cu,-90,O,60,|,Ph,5=Ph,10:N, ||,4*,&12~vf,23*,&12~vf) endfont %*************************************************************************** -beginfont("EN:Captan") - MCf(<12,?6,6=dl,3=?5,2:N,@(7,9)//O,8\,S,!,CCl3) +beginfont("EN:Captan","MW:300.578") + MCf(<12,?6,6=dl,3=?5,8:N,@(7,9)//O,8\,S,!,CCl3) endfont %*************************************************************************** -beginfont("EN:Chlorothalonil") +beginfont("EN:Chlorothalonil","MW:265.902") MCf(<30,Ph,@(1,2,4,6)/Cl,@(3,5)/CN) endfont %*************************************************************************** -beginfont("EN:Tetraconazole") +beginfont("EN:Tetraconazole","MW:372.145") MCf(<-6, ?5,$(2,5)d,@(1,2,4)N,4\,!3,O,!,/F^35,/F^-35,!,CF2,#7\,|,Ph,@(4,6)/Cl) endfont %*************************************************************************** -beginfont("EN:Endosulfan"); +beginfont("EN:Endosulfan","MW:406.904"); MCf(<26,?7,7=?6[13],11*,208~wf`1.45,&8~wb,10=dl,@(3,5)O,4:S,4://O, @(8,9,10,11,12^-210,12^-150)/Cl) endfont; %*************************************************************************** -beginfont("EN:Flutolanil") +beginfont("EN:Flutolanil","MW:323.315") MCf(<30,Ph,2:/CF3,3\,//O,!,NH,!,|,Ph,6:/OiPr) endfont %*************************************************************************** -beginfont("EN:Propiconazole") - MCf(<-6,?5,$(2,5)d,@(1,3,4)N,4\,!2,|,Ph,@(4,6)/Cl,#7\,|,?5,@(2,5)O,3:/Bu^24) +beginfont("EN:Propiconazole","MW:342.22") + MCf(<-6,?5,$(2,5)d,@(1,3,4)N,4\,!2,|,Ph,@(4,6)/Cl,#7*,|,?5,@(2,5)O,3:/Bu^24) endfont %*************************************************************************** -beginfont("EN:Pencycuron") +beginfont("EN:Pencycuron","MW:328.84") MCf(<30,Ph,6:/Cl,3\,!,N,/?6,!,//O,!,NH,!,Ph) endfont %*************************************************************************** -beginfont("EN:Asulam") +beginfont("EN:Asulam","MW:230.238") MCf(<30,Ph,6:/NH2,3\,SOO,!,NH,!,//O,!,O,!) endfont %*************************************************************************** -beginfont("EN:Oxadixyl") +beginfont("EN:Oxadiargyl","MW:341.19") MCf(<30,Ph,@(1,3)/Cl,4\,|,?5,2=dl,@(1,2)N,4:O,5://O,-3:/tBu,#6\,O,!2,!~tm) endfont %*************************************************************************** -beginfont("EN:Oxaziclomefone") +beginfont("EN:Oxaziclomefone","MW:376.277") MCf(<30,?6,4:N,2:O,1:/Me,5://O,6:/Ph,4\,/Me^35,/Me^-35,!,|,Ph,@(3,5)/Cl) endfont %*************************************************************************** -beginfont("EN:Cafenstrole") +beginfont("EN:Cafenstrole","MW:350.437") MCf(<30,Ph,@(2,4,6)/Me,3\,SOO,!,|,?5,$(2,5)d,@(2,4,5)N,4\,!,N,/Me,!2) endfont %*************************************************************************** -beginfont("EN:Cyclosulfamuron") +beginfont("EN:Cyclosulfamuron","MW:421.428") MCf(<30, Ph,5\,//O,!,?3,4\,NH,!,SOO,!,NH,!,//O,!,NH,!,|,Ph,@(2,6)N,@(3,5)/OMe) endfont %*************************************************************************** -beginfont("EN:Napropamide") +beginfont("EN:Napropamide","MW:271.36") MCf(<-30,Ph,3=Ph,10\,O,!,/Me^35,/Me^-35,!,//O,!,N,/Et,!) endfont %*************************************************************************** -beginfont("EN:Pyributicarb") +beginfont("EN:Pyributicarb","MW:330.446") MCf(<30,Ph,5:/tBu,3\,//O,!,S,!,N,/Me,!,|,Ph,@(5,6)/Me,3:/OMe) endfont %*************************************************************************** -beginfont("EN:Propyzamide") +beginfont("EN:Propyzamide","MW:256.126") MCf(<30,Ph,@(1,5)/Cl,3\,//O,!,NH,!,/Me^35,/Me^-35,!,!~tm) endfont %*************************************************************************** -beginfont("EN:Pendimethalin") +beginfont("EN:Pendimethalin","MW:281.312") MCf(<30,Ph,@(1,2)/Me,6:/Cl,@(3,5)/NO2,4\,NH,!,/Et,!2) endfont %*************************************************************************** -beginfont("EN:Benfluralin") +beginfont("EN:Benfluralin","MW:335.283") MCf(<30,Ph,@(1,3)/NO2,5:/CF3,2\,N,/Et,!4) endfont %*************************************************************************** -beginfont("EN:Trinexapac-ethyl") +beginfont("EN:Trinexapac-ethyl","MW:252.266") MCf(<30,?6,@(2,4)//O,6:/COOEt,3\\,/OH,!,?3) endfont %*************************************************************************** -beginfont("EN:Buprofezin") +beginfont("EN:Buprofezin","MW:305.44") MCf(<-30,?6,@(1,5)N,3:S,6://O,5:/tBu,4\\,N,!,tBu,1:/Ph) endfont %*************************************************************************** -beginfont("EN:Tricyclazole") +beginfont("EN:Tricyclazole","MW:189.236") MCf(<30,Ph,2:/Me,|,-4=?5,1:N,3:S,|,-3=?5,$(2,4)dl,@(2,3)N) endfont %*************************************************************************** -beginfont("EN:Phthalide") +beginfont("EN:Phthalide","MW:134.134") MCf(<30,Ph,@(1,2,5,6)/Cl,|,-4=?5,2:O,3://O) endfont %*************************************************************************** -beginfont("EN:Probenazole") +beginfont("EN:Probenazole","MW:223.246") MCf(<12,Ph,|,-4=?5,1:SOO,2:N,3\,O,!2,!~dr) endfont %*************************************************************************** -beginfont("EN:Simetryn") +beginfont("EN:Simetryn","MW:213.303") MCf(<30,Ph,@(2,4,6)N,5:/SMe,@(1,3)/NHEt) endfont %*************************************************************************** -beginfont("EN:Rifampicin") +beginfont("EN:Rifampicin","MW:822.953") MCf(<30, Ph,6:/Me^30,5:/OH,|,-6=?5,1:O,3://O,2:/*Me^60,|,-8=?6,@(2,4)d,@(1,4)/OH, {,``1,-2\,NH,60,//O,-60,/Me,60~dl,60,60~dl,-60, @@ -187,19 +188,19 @@ beginfont("EN:Wortmanin") #5\*,60,O,!,#14\*^-25,//O,!,O,!) endfont %*************************************************************************** -beginfont("EN:Ampicillin") +beginfont("EN:Ampicillin","MW:349.405") MCf(<45,?4,-3=?5,2:N,7:S, @(3^45,4^-45)/*H,1://O^15,5:/*COOH^-18,@(6^35,6^-35)/Me, ,4*\^75,NH,!,//O,!,/*NH2,!,Ph) endfont %*************************************************************************** -beginfont("EN:Validamycin") +beginfont("EN:Validamycin","MW:497.494") MCf(<30,?6,@(5,6)/OH,3\,-60,OH, #4\,O,-60,|,?6,2:O,@(3,4,5,6)/OH, #1\,NH,!,|,?6,2=d,@(4,5,6)/OH,-4\,!,OH) endfont %************************************************************************** -beginfont("EN:Oceltamivir") +beginfont("EN:Oceltamivir","MW:312.41") MCf(<30,?6,3=dl,1:/NH2,3:/COOEt,6:/NHCOMe,5\~zf,O,!,/Et,!2) endfont %*************************************************************************** @@ -208,7 +209,7 @@ beginfont("EN:Etyprostontromethamine") #3*\^6,!~dl,!3,O,0,Ph,#8*,|,?5,@(1,4)O,#4\*^-6,!,30~dl,30,!3,COOH) endfont %*************************************************************************** -beginfont("EN:Chlorophyll a") +beginfont("EN:Chlorophyll a","MW:893.509") MCf(<54,{,``1,?5,$(2,5)dl,4:N,3\,54~dl,|,?5,$(2,4)dl,5:N, -2\,54~dl,|,?5,2=d,5:N,-2\~dl,54,|,?5,5=d,5:N,-2\~dl,, -1*,24,/*COOMe^15,72,//O,,}, @@ -217,36 +218,36 @@ MCf(<54,{,``1,?5,$(2,5)dl,4:N,3\,54~dl,|,?5,$(2,4)dl,5:N, #21*,-6~wf,!2,//O,!,O,!2,!~dl,|,!13,@(1,5,9,13)/Me) endfont %************************************************************************** -beginfont("EN:Gibberellin A3"); +beginfont("EN:Gibberellin A3","MW:346.379"); MCf(<18,?5,3=?7,5=?6[12],8*,160`1.3,&3,13=dl,6=wf,8=wb, 5*,40~zf`1,O,50,//O^180,&14~zb, 2:/COOH,7://Me,13:*/OH,8:/*OH,14:*/Me,@(1^60,4^60)*/H) endfont; %************************************************************************** -beginfont("EN:Cholesterol") +beginfont("EN:Cholesterol","MW:386.664") MCf(<30,?6,$(-4,-2)?6,-4=?5,7=dl, 1:*/OH,@(4,12)*/Me^60, 10:/*H^180,@(11,-1)/*H^-60,9:*/H^60,-1\^17,/*Me,!4,/Me,!) endfont %*************************************************************************** -beginfont("EN:Lycorine") +beginfont("EN:Lycorine","MW:287.315") MCf(<30,Ph,-4=?6,-2=?6,6=?5,(9,12)=?5[3],13=dl,8:N,@(15,17)O, 9:/*H^180,10:*/H^60,13:*/OH,14:/*OH) endfont %************************************************************************** -beginfont("EN:Tetrodotoxine") +beginfont("EN:Tetrodotoxine","MW:319.27") MCf({,``1,<60,-90,60,-30`1.15,150,60,,#3*,-135,60,-30`1.15,150,, #10\,O,60`1.33,60,~si_,#8*,-15~si_,O, ,},#9*,45,-60,OH,1^120://NH, @(5~zf^-15,7,9^-75,12,13~zf)/OH,@(2,6^180)NH) endfont %*************************************************************************** -beginfont("EN:beta-Carotene") +beginfont("EN:beta-Carotene","MW:536.888") MCf(<30,?6,3=dl,@(3,5^35,5^-35)/Me, 4\,|,!18,$(1,3,5,7,9,11,13,15,17)dr,@(3,7,12,16)/Me, |,?6,6=dl,@(6,2^35,2^-35)/Me) endfont %************************************************************************** -beginfont("EN:alfa-Tocopherol") +beginfont("EN:alfa-Tocopherol","MW:430.717") MCf(<30,Ph,3=?6,7:O,@(1,2,5)/Me,8:/*Me^60,6:/OH,8\,|,!12,@(4,8)/*Me,12:/Me) endfont %************************************************************************** @@ -254,50 +255,50 @@ beginfont("EN:Qercetin") MCf(<30,Ph,3=?6,9\,Ph,9=dl,10:O,7://O,@(2,6,8,13,14)/OH) endfont %*************************************************************************** -beginfont("EN:Limonin") +beginfont("EN:Limonin","MW:470.518") MCf(<30,?6,$(-3,-4)?6,-5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf, @(13,15,17,20)O,@(3,12,21)//O, @(4~wf^60,8~zf^60,18^35,18^-35)/Me,@(1^60,5^180,16^60)/*H, 14\*,|,?5,$(1,4)dl,3:O) endfont %************************************************************************** -beginfont("EN:Cromolyn") +beginfont("EN:Cromolyn","MW:468.37") MCf(<30,Ph,|,-1=?6,3=dl,1:O,4://O,2:/COOH, #2\,O,!2,/OH,!2,O,60,Ph,|,-5=?6,3=dl,4:O,1://O,3:/COOH) endfont %************************************************************************** -beginfont("EN:Emetine") +beginfont("EN:Emetine","MW:480.649") MCf(<30,Ph,$(-4,-4)?6,8:N,@(1,6)/OMe,-2:/*Et,@(7^-60,12^-60)/*H, -3\,!~zb,<-60,|,?6,5=d,2:NH,-6^-60:*/H,|,-2=?6,$(2,4)dl) endfont %*************************************************************************** -beginfont("EN:Colchicine") +beginfont("EN:Colchicine","MW:399.443") MCf(<30,Ph,@(1,2,6)/OMe,-4=?7,-5=?7,$(-1,-4,-6)dl,-2://O,-3:/OH, 9\,NH,!,//O,!) endfont %*************************************************************************** -beginfont("EN:Caffeine") +beginfont("EN:Caffeine","MW:194.194") MCf(<30,?6,3=d,@(2,6)N,@(2,6)/Me,@(1,5)//O,|,-4=?5,2=dl,@(1,3)N,3:/Me) endfont %************************************************************************** -beginfont("EN:Acronycine") +beginfont("EN:Acronycine","MW:321.376") MCf(<30,Ph,|,-4=?6,1:N,4://O,,1:/Me,-3=Ph2,-1:/OMe, |,-4=?6,2=d,4:O,-2^-35:/Me,-2^35:/Me) endfont %*************************************************************************** -beginfont("EN:Ibotenic acid") +beginfont("EN:Ibotenic acid","MW:158.113") MCf(<18,?5,4=d,3:O,2:NH,1://O,4\^-24,/NH2,!,COOH) endfont %************************************************************************** -beginfont("EN:Piperine") +beginfont("EN:Piperine","MW:285.343") MCf(<30,Ph,|,-1=?5,@(1,3)O,#4\,!~dr,!,!~dr,!,//O,!,|,?6,1:N) endfont %*************************************************************************** -beginfont("EN:Febrifugine") +beginfont("EN:Febrifugine","MW:301.346") MCf(<30,Ph,|,-4=?6,2=d,@(1,3)N,4://O,#9\,!,//O,!,!~zf,|,?6,2:NH,-1:*/OH) endfont %*************************************************************************** -beginfont("EN:Mitomycine C") +beginfont("EN:Mitomycine C","MW:334.332") MCf(<30,?6,$(3,6)dl,@(2,5)//O,1:/Me,|,-4=?5,1:N, #6:/NH2,|,-3=?5,|,-2=?3,-1=wb,-2=wf,-1:NH, #8:/*OMe^35,#9\`1^17.9,!,O,!,//O,!,NH2) @@ -308,15 +309,15 @@ beginfont("EN:Podophyllotoxin"); 10\*,Ph,@(-2,-3,-4)/OMe,#13:/*OH,@(#11~wf^-60,#12~zf^60)/H) endfont; %*************************************************************************** -beginfont("EN:Warfarin"); +beginfont("EN:Warfarin","MW:308.333"); MCf(<30,Ph,3=?6,8=dl,10:O,7:/OH,9://O,8\,/Ph`1,60,!,//O,!) endfont; %*************************************************************************** -beginfont("EN:Genistein"); +beginfont("EN:Genistein","MW:270.24"); MCf(<30,Ph,3=?6,10:O,@(2,6)/OH,9://O,8\,Ph,-3:/OH) endfont; %*************************************************************************** -beginfont("EN:Baicalein"); +beginfont("EN:Baicalein","MW:270.24"); MCf(<30,Ph,3=?6,10:O,@(1,2,6)/OH,9://O,8\,Ph) endfont; %*************************************************************************** @@ -324,24 +325,24 @@ beginfont("EN:Baicalein"); MCf(<30,Ph,3=?6,9=d,10:O,@(1,2,6)/OH,7://O,-2\,Ph) endfont; %*************************************************************************** -beginfont("EN:Reserpine"); +beginfont("EN:Reserpine","MW:608.688"); MCf(<54,Ph,-4=?5,-2=?6,-4=?6,-3=?6,9=dl,11:N,7:NH,10:*/H^-60, @(15^-60,16^60)/*H, #20*\,O,!,//O,!,|,Ph,@(-2,-3,-4)/OMe,@(#1,#19~zf>rl)/OMe, #18*\,//O,!,O,!) endfont; %*************************************************************************** -beginfont("EN:Rotenone"); +beginfont("EN:Rotenone","MW:394.423"); MCf(<-60,?5,$(-3,-2,-3,-4)?6,$(7,9,-2,-4)dl,$(3,17)dr, @(2,13,16)O,10://O,@(11^-60,12^60)*/H,@(-2,-3)/OMe,1*\,/Me,!~dl) endfont; %*************************************************************************** -beginfont("EN:Pyrethrin I"); +beginfont("EN:Pyrethrin I","MW:328.452"); MCf(<30,?3,@(3^35~wf,3^-35~zf)/Me,1*\,!~dl,iPr, 2\*,//O,!,O,-36~zb,|,?5,-2=d,-1:/Me,-3://O,-2\,!4,$(-1,-3)dl) endfont; %*************************************************************************** -beginfont("EN:Erythromycin"); +beginfont("EN:Erythromycin","MW:733.937"); MCf(<30,{,``1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,},&1, 14:O,13:/*Et,@(1,9)//O,@(2,10)*/Me,@(4,6^-35,8,12^35)/*Me, @(6^35,11,12^-35)*/OH, @@ -349,39 +350,39 @@ MCf(<30,{,``1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,},&1, #5\*^30`1.7,O,!,|,?6`.7,6:O,5:/Me,2:/OH,3:/NMeMe) endfont; %************************************************************************** -beginfont("EN:Paclitaxel") +beginfont("EN:Paclitaxel","MW:853.918") MCf(?6,5=d,3*,{,``1,36,45,45,45,45,},,-4=?6,-4=?4,||,-1=wb,-3=wf,-1:O, @(4^35,4^-35,6)/Me,@(3^-60,15)*/OH,8:/*H^-60,9:*/Me^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:Mevastatin") +beginfont("EN:Mevastatin","MW:390.52") MCf(<30,?6,2=d,4:*/H^60,|,-4=?6,2=dl,9:*/Me, #10*\,!,60~wb,|,?6,6:O,-2://O,-4:/*OH,#5\*,O,60,//O,!,*/Me,!2) endfont %*************************************************************************** -beginfont("EN:Sesamine") +beginfont("EN:Sesamine","MW:330.336") MCf(<54,?5,1=?5,@(4,7)O,@(1^-54,2^54)*/H, #5*\^-12,Ph,|,-3=?5,@(-1,-3)O,#8*\^-12,Ph,|,-3=?5,@(-1,-3)O) endfont %************************************************************************** -beginfont("EN:Morphine") +beginfont("EN:Morphine","MW:285.343") MCf(<30,Ph,2=?6,-4=?6,(1,12)=?5[2],-1:O,-1=zb, 7*,60~wf`0.75,70~si_`1.3,45,N,/Me,&9~wb, 15=dl,6:/OH,8^180:*/H,12:/*OH) endfont %************************************************************************** -beginfont("EN:Capsaicin") +beginfont("EN:Capsaicin","MW:305.418") MCf(<30,Ph,1:/OH,6:/OMe,4\,!,NH,!,//O,|,!8,-3=dr,-1:/Me) endfont %*************************************************************************** -beginfont("EN:Quinine") +beginfont("EN:Quinine","MW:324.424") MCf(<30,Ph,3=Ph,7:N,6:/OMe, 10\,*/OH,/H~zf^-60,!,|,?6,2:N,1:*/H^60,4*\,!~dr,2*,165~zf,60,&5~zb) endfont %*************************************************************************** -beginfont("EN:Atoropin") +beginfont("EN:Atoropin","MW:289.375") MCf(<-30,O,!,//O,!,!,Ph, #1\~zb^-120,|,?7`1.1,6*\^190`1.25,N,/Me,&3~wb,#3\~wv,!,OH) endfont diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf index 5efadc6d550..42d11722bb7 100644 Binary files a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf and b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf differ diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex index db3d5b2ff6b..c039f1e1611 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2016.8.06 +% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2016.11.15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \usepackage{graphicx} diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf index 25b0d186306..8126f5e7e67 100644 Binary files a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf and b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf differ diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex index 04ee963c93e..03b78cd584e 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format manual by Akira Yamaji 2016.11.05 +% Molecular Coding Format manual by Akira Yamaji 2016.11.15 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} %%%%\usepackage{graphicx} @@ -1198,52 +1198,54 @@ MW : molecular weight from literature data \end{verbatim} \paragraph{(Output)} \begin{verbatim} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular name = Caffeine -% There were 0 warnings / Expanded command count= 75 -% width * height = 39.54677 * 36.84769 -% Shift width * height = -9.33592 * -12.77518 -% Bond length = 9.23628 Atom size = 4.12209 -% Atom count= 14 Bond count= 15 Ring count= 2 Hide H = 10 -%-----------------------------------< atom >< bond >------- -% 1 ( 0 ) ( 0 ) C 4 -% 2 ( 0.86603 ) ( -0.5 ) N 3 -% 3 ( 1.73206 ) ( 0 ) C 4 -% 4 ( 1.73206 ) ( 1 ) C 4 -% 5 ( 0.86603 ) ( 1.5 ) C 4 -% 6 ( 0 ) ( 1 ) N 3 -% 7 ( 2.6831 ) ( -0.30902 ) N 3 -% 8 ( 3.27089 ) ( 0.5 ) C 3 -% 9 ( 2.6831 ) ( 1.30902 ) N 3 -% 10 ( 0.86603 ) ( -1.38315 ) C 1 -% 11 ( -0.78764 ) ( 1.45474 ) C 1 -% 12 ( 2.95923 ) ( 2.15886 ) C 1 -% 13 ( -0.78764 ) ( -0.45474 ) O 2 -% 14 ( 0.86603 ) ( 2.38315 ) O 2 -%Bond list--------------------------------------------------------- -% 1 1 -> 2 ( 1) -% 2 2 -> 3 ( 1) -% 3 3 -> 4 ( 2) -% 4 4 -> 5 ( 1) -% 5 5 -> 6 ( 1) -% 6 6 -> 1 ( 1) -% 7 3 -> 7 ( 1) -% 8 7 -> 8 ( 2) -% 9 8 -> 9 ( 1) -% 10 9 -> 4 ( 1) -% 11 2 -> 10 ( 1) -% 12 6 -> 11 ( 1) -% 13 9 -> 12 ( 1) -% 14 1 -> 13 ( 2) -% 15 5 -> 14 ( 2) -%Fomula / Molecular weight --------------------------------------- +%------------------------------------------------------------------ +% Molecular name = Caffeine +% Warnings = 0 / Expanded command = 75 +% Width * Height = 39.5496 * 36.85023 +% Shift width * height = -9.33653 * -12.77606 +% Bond length = 9.23695 Atom size = 4.12231 +% Atom count= 14 Bond count= 15 Ring count= 2 Hide H count= 10 +%------------------------------------------------------------------ +%< NO. >< x axis , y axis >< atom >< bond >< hide_H > +% A1 ( 0 , 0 ) C 4 +% A2 ( 0.866 , -0.5 ) N 3 +% A3 ( 1.732 , 0 ) C 4 +% A4 ( 1.732 , 1 ) C 4 +% A5 ( 0.866 , 1.5 ) C 4 +% A6 ( 0 , 1 ) N 3 +% A7 ( 2.683 , -0.309 ) N 3 +% A8 ( 3.271 , 0.5 ) C 3 1 +% A9 ( 2.683 , 1.309 ) N 3 +% A10 ( 0.866 , -1.383 ) C 1 3 +% A11 ( -0.788 , 1.455 ) C 1 3 +% A12 ( 2.959 , 2.159 ) C 1 3 +% A13 ( -0.788 , -0.455 ) O 2 +% A14 ( 0.866 , 2.383 ) O 2 +%------------------------------------------------------------------ +%< NO. >< bond (sdt)> +% B1 1 -> 2 ( 1) 330 ( -30) 1 ( 9.24) +% B2 2 -> 3 ( 1) 30 ( 30) 1 ( 9.24) +% B3 3 -> 4 ( 2) 90 ( 90) 1 ( 9.24) +% B4 4 -> 5 ( 1) 150 ( 150) 1 ( 9.24) +% B5 5 -> 6 ( 1) 210 ( -150) 1 ( 9.24) +% B6 6 -> 1 ( 1) 270 ( -90) 1 ( 9.24) +% B7 3 -> 7 ( 1) 342 ( -18) 1 ( 9.24) +% B8 7 -> 8 ( 2) 54 ( 54) 1 ( 9.24) +% B9 8 -> 9 ( 1) 126 ( 126) 1 ( 9.24) +% B10 9 -> 4 ( 1) 198 ( -162) 0.66 ( 6.1) +% B11 2 -> 10 ( 1) 270 ( -90) 0.66 ( 6.1) +% B12 6 -> 11 ( 1) 150 ( 150) 0.66 ( 6.1) +% B13 9 -> 12 ( 1) 72 ( 72) 0.66 ( 6.1) +% B14 1 -> 13 ( 2) 210 ( -150) 0.66 ( 6.1) +% B15 5 -> 14 ( 2) 90 ( 90) 0.66 ( 6.1) +%------------------------------------------------------------------ % C ( 12.0107) * 8 = 96.08557 % H ( 1.00793) * 10 = 10.07935 % N ( 14.0067) * 4 = 56.0268 % O ( 15.9994) * 2 = 31.99881 % Weight Calc: 194.19052 / Input: 194.19 / weight gap= 0.00052 % Fomula Calc: C8H10N4O2 / Input: C8H10N4O2 / MACTCH -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%================================================================== \end{verbatim}% \newpage %------------------------------------------------------------------------ diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf index 90998d55bdf..7e6621922a2 100644 Binary files a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf and b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf differ diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index 4a110f441a0..01d2d083e29 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.04 Copyright (c) 2013-2016 Akira Yamaji +% mcf2graph ver 4.05 Copyright (c) 2013-2016 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, @@ -32,7 +32,7 @@ tracingstats:=1; message " This is mcf2graph ver 4.0 2016.11"; %------------------------------------------------------------------------------------------------- -newinternal nA,nB,nC,nD,nE,nF,def_num,def_int,tbl_cnt; +newinternal nA,nB,nC,nD,nE,nF,char_num,str_cnt,def_num,def_int,tbl_cnt; numeric save_para[],comD[][],parD[][],cntD[],tbl_str_wd[],tbl_atom[],tbl_subst[][],tbl_atom_wt[], tbl_char_wd[],tbl_char_ht[],tbl_char_dp[]; string tbl_atom_str[],strD[],var[],tag[],mp_log_name,aux_delimiter; @@ -88,11 +88,10 @@ def_int_start:=3000; % 3000 => 4000 for internal definition (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,_N,_O,_S,_H,_tmp_line,_chg_len,_get_len,_ring_len,_tmp_len,_rot_ang,_set_ang,_adj_ang, - _chg_env,_tmp_env,_set_colorA,_set_colorB,_postA,_postB,_postC,_postD,_postE,_postF,_set_psA, - _stack_reset,_set_clr,_set_adr,_mk_bond,_set_atom,_arg_ang,_chg_atom,_tmp_rot,_fuse,_push, - _pop,_size_a); -def_com(1)(si,dl,dr,dm,tm,wf,wb,bd,bz,zf,zb,dt,no,ar,vf,vb,wv,nl,si_,wf_,wb_,bd_); + _dl,_N,_O,_S,_H,_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,_set_psA,_stack_reset, + _set_clr,_set_adr,_mk_bond,_set_atom,_arg_ang,_chg_atom,_tmp_rot,_fuse,_push,_pop,_size_a); +def_com(1)(si,dl,dr,dm,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,si_,wf_,wb_,bd_); %-------------------------------------------------------------------------------------------------- def parameter_list= sw_checklist,sw_numberA,sw_numberB,sw_mol_frame,sw_auxout,sw_solid,sw_expand,sw_MOLout, @@ -115,17 +114,16 @@ def restore_par(text t)= nA:=0; def beginfont(text s)= store_par(parameter_list); begingroup - save cntA,cntB,cntM,minX,minY,f_beginchar,numS,sftX,sftY, - posB,posA,posM,lineB,sB,eB,angB,angA,lenB,ang_br,info,pT; + save cntA,cntB,cntM,minX,minY,f_beginchar,numS,sftX,sftY,f_ext, + posBs,posBe,posA,posM,lineB,sB,eB,angB,angA,lenB,ang_br,info,pT; numeric lineB[],sB[],eB[],angB[],angA[],lenB[],ang_br[],numS[]; - pair posB[],posA[],posM[][],pT; + pair posA[],posM[][],pT,posBs,posBe; string info[]; %------------------------------------------------------------------------------------------------ for i:=1 upto max_inf_num: info[i]:=":"; endfor - f_beginchar:=inf_num:=cntM:=0; + f_ext:=inf_num:=cntM:=0; for list=s: info[incr inf_num]:=list; endfor char_num:=char_num+1; - posM[0][0]:=(0,0); enddef; %================================================================================================== def endfont= @@ -151,9 +149,10 @@ def endfont= draw_frame(pT,nA,nB,thickness_font_frame); fi if sw_font_frame=4: draw_corner(w,h,thickness_font_frame); fi if (sw_auxout=1)or(sw_checklist=1)or(sw_MOLout=1): proc_calc_out; fi - for i=0 upto cntM: + for i=1 upto cntM: addto currentpicture also mol_stru[i] shifted posM[0][i]; mol_stru[i]:=nullpicture; endfor + if f_ext=1: addto currentpicture also mol_stru[0]; mol_stru[0]:=nullpicture; fi endchar; clearit; endgroup; @@ -180,9 +179,9 @@ def set_def_MC= def { == (_push,1) enddef; def } == (_pop,1) enddef; def {{ == (_push,0) enddef; def }} == (_pop,0) enddef; def | == {,} enddef; def || == (_stack_reset,0) enddef; - def /secondary n == (_postA,n) enddef; def //secondary n == (_postB,n) enddef; - def */secondary n == (_postC,n) enddef; def /*secondary n == (_postD,n) enddef; - def **secondary n == (_postE,n) enddef; def */*secondary n == (_postF,n) enddef; + def /secondary n == (_postA,n) enddef; def //secondary n == (_postB,n) enddef; + def */secondary n == (_postC,n) enddef; def /*secondary n == (_postD,n) enddef; + def */*secondary n == (_postE,n) enddef; def **secondary n == (_postF,n) enddef; enddef; %================================================================================================= vardef '(text s)= ''(incr def_num)(s); def_num enddef; @@ -274,7 +273,7 @@ vardef @@(text t)(expr s)= for list==t:: if s==N:: PA(_N,list) elseif s==O:: PA(_O,list) elseif s==S:: PA(_S,list) else:: PA(_set_adr,list) PA(_chg_atom,s) fi endfor - elseif s==NH:: for list==t:: if numeric list:: PAs((_N,list),~~no,'`_size_a,(_H,list)) + elseif s==NH:: for list==t:: if numeric list:: PAs((_N,list),~~nl,'`_size_a,(_H,list)) elseif pair list:: PAs(list) fi endfor elseif s==SOO:: for list==t:: PAs((_S,list),(_set_adr,list), ^^35,~~dm,(_set_psA,O),^^-35,~~dm,(_set_psA,O)) endfor @@ -287,7 +286,8 @@ vardef @@(text t)(expr s)= if numeric list:: if nE==_postA:: elseif nE==_postB:: PAs(~~dm) elseif nE==_postC:: PAs(~~wf) elseif nE==_postD:: PAs(~~zf) - elseif nE==_postE:: PAs(~~nl) elseif nE==_postF:: PAs(~~no) fi + elseif nE==_postE:: PAs(~~nl) elseif nE==_postF:: PAs(~~0) + fi PA(_set_adr,list) PA(_set_psA,nF) elseif pair list:: PAs(list) fi endfor @@ -302,8 +302,9 @@ def EXT(text s)= begingroup save w,h,wd,ht,n,p; pair p[]; w:=font_wd; h:=font_ht; wd:=w-2margin_left_right; ht:=h-2margin_top_bottom; - p0:=(margin_left_right,margin_top_bottom); n:=cntM; for i=1 upto n: p[i]:=posM[1][i]; endfor - s addto mol_stru[0] also currentpicture; clearit; + p0:=(margin_left_right,margin_top_bottom); n:=cntM; + for i=1 upto n: p[i]:=posM[1][i]; endfor + s addto mol_stru[0] also currentpicture; clearit; f_ext:=1; endgroup; enddef; %-------------------------------------------------------------------------------------------------- @@ -319,10 +320,10 @@ def MCf(text s)= MCd(1,1)(.5,.5)(s) enddef; % MC fill draw %------------------------------------------------------------------------------------------------- def MCd(expr RW,RH)(expr FW,FH)(text TX)= begingroup - save com,par,adrA,adrB,f_bra,envT,envB,lenT,lineT,strAT,stkA,stkB,stkL,stkM,cntP, - bondL,temp_len,temp_cntB,f_end,f_term,rotT,adrS,f_lineT,f_rotT,f_lenT,f_envT,angT,tempB, - glu,xpos,ypos,str_len,max_x,max_y,par_s,par_e,score_u,hat,f_char,lenB, - ps_adr,ps_com,op_com,op_par,op_cnt,crR,colorA,colorB; + save com,par,adrA,adrB,f_bra,envT,envB,lenT,lineT,strAT,stkA,stkB,stkL,stkM,cntP,bondL,temp_len, + temp_cntB,f_end,f_term,rotT,adrS,f_lineT,f_rotT,f_lenT,f_envT,angT,tempB,glu,xpos,ypos, + str_len,max_x,max_y,par_s,par_e,score_u,hat,f_char,ps_adr,ps_com,op_com,op_par,op_cnt,crR, + colorA,colorB; %----------------------------------------------------------------------------------------------- save PA,PAs,PP,PG; def PA(expr a,b)= comD[def_int][incr nA]:=a; parD[def_int][nA]:=b; enddef; @@ -386,11 +387,16 @@ enddef; %------------------------------------------------------------------------------------------------- def ps_put(expr n,p)= ps_adr[incr cntP]:=n; ps_com[cntP]:=p; op_cnt[cntP]:=0; - if lineT<>0: PP(_tmp_line,lineT) fi if rotT<>0: PP(_rot_ang,rotT) fi - if lenT<>crR: PP(_chg_len,lenT) fi if envT<>hz: PP(_chg_env,envT) fi - if lineT=nl: PP(_tmp_len,0) elseif lineT=no: PP(_adj_ang,0) fi PP(_mk_bond,0) - if f_lineT=0: lineT:=si; fi if f_lenT=0: lenT:=crR; fi - if f_rotT=0: rotT:=0; fi if f_envT=0: envT:=hz; fi + if lineT<>0: PP(_tmp_line,lineT) fi + if rotT<>0: PP(_rot_ang,rotT) fi + if lenT<>crR: PP(_chg_len,lenT) fi + if envT<>hz: PP(_chg_env,envT) fi + if lineT=nl: PP(_chg_len,_size_a) PP(_adj_ang,0) fi + if lineT<>0: PP(_mk_bond,0) fi + if f_lineT=0: lineT:=si; fi + if f_lenT=0: lenT:=crR; fi + if f_rotT=0: rotT:=0; fi + if f_envT=0: envT:=hz; fi enddef; %------------------------------------------------------------------------------------------------- def ps_get(expr n)= @@ -472,14 +478,16 @@ def proc_bond_atom(expr n)= elseif par=0: temp_len:=bondL; fi elseif com=_pop: if par=1: adrA:=stkA[decr adrS]; adrB:=stkB[adrS]; bondL:=stkL[adrS]; elseif par=0: bondL:=temp_len; fi - elseif com=_mk_bond: if (par=0)and(rotT<>0): rotT:=0; fi add_atom; - elseif com=_set_adr: adrT:=par; - elseif com=_set_atom: strAT:=par; - elseif com=_set_psA: ps_put(getA(adrT),par); - elseif (com>=_postA)and(com<=_postF): - if com=_postA: elseif com=_postB: lineT:=dm; elseif com=_postC: lineT:=wf; - elseif com=_postD: lineT:=zf; elseif com=_postE: lineT:=nl; - elseif com=_postF: lineT:=no; lenT:=_size_a; fi ps_put(cntA+1,par); + elseif com=_mk_bond: if (par=0)and(rotT<>0): rotT:=0; fi add_atom; + elseif com=_set_adr: adrT:=par; + elseif com=_set_atom: strAT:=par; + elseif com=_set_psA: ps_put(getA(adrT),par); + elseif com=_postA: ps_put(cntA+1,par); + elseif com=_postB: lineT:=dm; ps_put(cntA+1,par); + elseif com=_postC: lineT:=wf; ps_put(cntA+1,par); + elseif com=_postD: lineT:=zf; ps_put(cntA+1,par); + elseif com=_postE: lineT:=nl; ps_put(cntA+1,par); + elseif com=_postF: lineT:=0; ps_put(cntA+1,par); elseif com=_jp_bond: tempB:=getB(par); sB[cntB+1]:=sB[tempB]; f_bra:=1; elseif com=0or_jp_atom: termA; sB[cntB+1]:=getA(par); f_bra:=1; elseif com=_jp_atom_abs: sB[cntB+1]:=par; f_bra:=1; temp_cntB:=cntB; @@ -525,28 +533,28 @@ enddef; def proc_skeleton= adrA:=adrB:=cntA:=cntB:=angT:=adrS:=f_end:=f_bra:=rotT:=f_term:=0; envT:=envB:=f_lineT:=f_rotT:=f_lenT:=f_envT:=stkM[0]:=0; lineT:=si; - angA[0]:=angB[0]:=ang_br[0]:=0; posA[0]:=posB[0]:=posB[1]:=(0,0); + angA[0]:=angB[0]:=ang_br[0]:=0; posA[0]:=posBs:=posBe:=(0,0); for i=0 upto 5: stkA[i]:=stkB[i]:=0; endfor %---------------------------------------------------------------------------------------------- for i=1 upto cntD[0]: com:=comD[0][i]; par:=parD[0][i]; - if com=_push: if par=1: stkM[adrS]:=envB; adrS:=adrS+1; stkA[adrS]:=adrA:=cntA; + if com=_push: if par=1: stkM[adrS]:=envB; adrS:=adrS+1; stkA[adrS]:=adrA:=cntA; stkB[adrS]:=adrB:=cntB; elseif par=0: temp_len:=bondL; fi elseif com=_pop: if par=1: adrA:=stkA[decr adrS]; adrB:=stkB[adrS]; envB:=stkM[adrS]; elseif par=0: temp_len:=bondL; fi - elseif com=_jp_bond: tempB:=getB(par); posB[cntB+1]:=posA[sB[tempB]]; - angT:=angB[tempB]-180; f_bra:=1; rotT:=0; - elseif com=0or_jp_atom: termB; adrT:=getA(par); posB[cntB+1]:=posA[adrT]; + elseif com=_jp_bond: tempB:=getB(par); posBs:=posA[sB[tempB]]; + angT:=angB[tempB]-180; f_bra:=1; rotT:=0; + elseif com=0or_jp_atom: termB; adrT:=getA(par); posBs:=posA[adrT]; angT:=ang_br[adrT]; f_bra:=1; rotT:=0; - elseif com=_jp_atom_abs: adrT:=par; posB[cntB+1]:=posA[adrT]; + elseif com=_jp_atom_abs: adrT:=par; posBs:=posA[adrT]; angT:=ang_br[adrT]; f_bra:=1; rotT:=0; temp_cntB:=cntB; - elseif com=_adj_ang: if (angT<40)or(angT>320): angT:=0; elseif angT<140: angT:=90; - elseif angT<220: angT:=180; else: angT:=270; fi - elseif com=_mk_bond: if (par=0)and(rotT<>0):par:=rotT; rotT:=0; fi add_bond(par); - elseif com=_rot_ang: angT:=(angT+par) mod 360; - elseif com=_tmp_rot: rotT:=par; - elseif (com>=_postA)and(com<=_postF): rotT:=0; + elseif com=_adj_ang: if (angT<40)or(angT>320): angT:=0; elseif angT<140: angT:=90; + elseif angT<220: angT:=180; else: angT:=270; fi + elseif com=_mk_bond: if (par=0)and(rotT<>0):par:=rotT; rotT:=0; fi add_bond(par); + elseif com=_rot_ang: angT:=(angT+par) mod 360; + elseif com=_tmp_rot: rotT:=par; + elseif (com>=_postA)and(com<=_postE): rotT:=0; elseif com=_chg_env: envB:=par; elseif com=_tmp_env: envT:=par; elseif com=_set_clr: f_clr:=par; if par=0: lineT:=si; lenT:=crR; rotT:=envT:=0; fi @@ -560,16 +568,24 @@ def proc_skeleton= enddef; %------------------------------------------------------------------------------------------------- def add_bond(expr m)= - cntB:=cntB+1; if m=_arg_ang: nA:=proc_env(angT,envB,60,-60); else: nA:=m; fi - if f_bra=0: adrT:=cntA:=cntA+1; posA[cntA]:=posB[cntB]; angA[cntA]:=angT; - if nA>=0: ang_br[cntA]:=angT+nA/2-90; else: ang_br[cntA]:=angT+nA/2+90; fi - else: f_bra:=0; fi - angB[cntB]:=angT:=(angT+nA) mod 360; - if f_end=0: if lenB[cntB]=_size_a: posB[cntB+1]:=sfB(posB[cntB],atom_wd,angT); - else: nA:=lenB[cntB];glu:=0; if nA<0: nA:=-nA; glu_c(adrT);glu_c(cntA+1); fi - posB[cntB+1]:=sfB(posB[cntB],nA*bond_len+glu,angT); fi - posA[cntA+1]:=posB[cntB+1]; f_term:=0; - else: f_end:=0; f_term:=1; fi + if m=_arg_ang: nA:=proc_env(angT,envB,60,-60); else: nA:=m; fi + if f_bra=0: + adrT:=cntA:=cntA+1; posA[cntA]:=posBs; angA[cntA]:=angT; + if nA>=0: ang_br[cntA]:=angT+nA/2-90; else: ang_br[cntA]:=angT+nA/2+90; fi + else: f_bra:=0; + fi + angB[cntB+1]:=angT:=(angT+nA) mod 360; + if f_end=0: + if lenB[cntB+1]=_size_a: posBe:=sfB(posBs,atom_wd,angT); + else: + nA:=lenB[cntB+1];glu:=0; if nA<0: nA:=-nA; glu_c(adrT); glu_c(cntA+1); fi + posBe:=sfB(posBs,nA*bond_len+glu,angT); + fi + posA[cntA+1]:=posBe; f_term:=0; + else: + f_end:=0; f_term:=1; + fi + cntB:=cntB+1; posBs:=posBe; enddef; %================================================================================================== vardef getA(expr n)= @@ -581,41 +597,41 @@ def termA= if f_term=0: if f_bra=0: numS[incr cntA]:=strAT; strAT:=0; if f_MP=1: colorA[cntA]:=0; fi else: f_bra:=0; fi f_term:=1; fi enddef; def termB= if f_term=0: if f_bra=0: ang_br[incr cntA]:=angT; else: f_bra:=0; fi f_term:=1; fi enddef; -def proc_cyc(expr n)= add_bond(angle(posA[n]-posB[cntB+1])-angT); enddef; +def proc_cyc(expr n)= add_bond(angle(posA[n]-posBs)-angT); enddef; def glu_c(expr n)= if numS[n]<>0: nB:=angT mod 180; nC:=.5tbl_str_wd[numS[n]]*atom_wd; if (nB<45)or(nB>135):glu:=glu+((sind(nB)*nC)++nC); else :glu:=glu+((cosd(nB)*.5atom_wd)++.5atom_wd) fi fi enddef; vardef proc_env(expr n,m,a,b)= r:=(n mod 360); - if m>=def_emb_start: parD[m][cntB-temp_cntB-1] else: + if m>=def_emb_start: parD[m][cntB-temp_cntB] else: if m=hz:if r=0:a elseif r<=90:b elseif r<=180:a elseif r<270:b else:a fi elseif m=vt:if r=0:b elseif r<90:a elseif r<=180:b elseif r<=271:a else:b fi elseif (m>=-180)and(m<=180): m fi fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -def draw_atom(expr n,p,r,s,WD)= +def draw_atom(expr NUM,POS,ANG,STR,WD)= begingroup save pA,pT,dx; pair pA,pT; %---------------------------------------------------------------------------------------------- - if ((r mod 360)<=90+1)or((r mod 360)>=270-1): dx:=1; else: dx:=-1; fi - pT:=p-(.5atom_wd*dx*WD,.5atom_wd); + if ((ANG mod 360)<=90+1)or((ANG mod 360)>=270-1): dx:=1; else: dx:=-1; fi + pT:=POS-(0.5atom_wd*dx*WD,0.5atom_wd); nE:=nC:=0; - for i=0 upto length(s)-1: - nB:=ASCII(pic_c(i,s)); - if dx<0: if nB=par_s:k:=i+1; nC:=1; forever:exitif pic_c(i+(incr nC),s)="}";endfor fi - if nC>0: nB:=ASCII(pic_c(k+(decr nC),s)); fi + for i=0 upto length(STR)-1: + nB:=ASCII(pic_c(i,STR)); + if dx<0: if nB=par_s:k:=i+1; nC:=1; forever:exitif pic_c(i+(incr nC),STR)="}";endfor fi + if nC>0: nB:=ASCII(pic_c(k+(decr nC),STR)); fi fi if nB=score_u: if nE=0: nE:=-.5; else: nE:=0; fi; elseif nB=hat: if nE=0: nE:= .5; else: nE:=0; fi; elseif (nB<>par_s)and(nB<>par_e): nA:=atom_wd*tbl_char_wd[nB]; - pA:=pT+(.5*((dx-1)*nA),nE*atom_wd); + pA:=pT+(0.5*((dx-1)*nA),nE*atom_wd); if sw_atom_frame=1: draw_frame(pA,nA,atom_wd,0.1pt); fi if (sw_numberA>=1)or(sw_numberB>=1): erase fill unitsquare xscaled nA yscaled atom_wd shifted pA wpcs 0.01pt; fi addto currentpicture also atom_font[nB] - shifted (pA-(0,atom_wd*tbl_char_dp[nB])) Cp(colorA[n]); + shifted (pA-(0,atom_wd*tbl_char_dp[nB])) Cp(colorA[NUM]); pT:=pT+(nA*dx,0); fi endfor @@ -874,10 +890,13 @@ def blank_str:= " " enddef; vardef fixed_r(expr n)(expr s)= (substring(0,n-length(s)) of blank_str)&s enddef; vardef fixed_l(expr n)(expr s)= s&(substring(0,n-length(s)) of blank_str) enddef; vardef fdr(expr n)(expr s)=fixed_r(n)(decimal(s)) enddef; -def warning(expr s)= message "% "&decimal(char_num)&fdr(3)(incr warning_cnt)&")"&s&" !!!"; enddef; -def B_check(expr s)(expr t)(expr n)= - if strD[numS[s]]=t: if bond_cnt>n: - warning(fdr(4)(s)&" ["&strD[numS[s]]&"] has "&fdr(3)(bond_cnt)&" bonds"); fi fi +vardef fdl(expr n)(expr s)=fixed_l(n)(decimal(s)) enddef; +def warning(expr s)= message "% "&decimal(char_num)&fdr(3)(incr warning_cnt)&")"&s; enddef; +def bond_check(expr a)(text s)= + nF:=0; for list=s: if list=bond_cnt: nF:=1; fi endfor + if nF=0: + warning("A"&decimal(a)&" ( "&fixed_l(8)(strD[numS[a]])&") has"&fdr(2)(bond_cnt)&" bonds"); + fi enddef; vardef stripP(expr a)=if length(a)=4: substring (1,3) of a else: a fi enddef; %================================================================================================== @@ -895,12 +914,13 @@ def STb(expr a)(text s)= enddef; %================================================================================================== tbl_cnt:=0; -STa("C",12.0107); STa("H",1.00794); STa("{Al}",26.9815); STa("{As}",74.9236); STa("B",10.811); -STa("{Br}",79.904); STa("{Ca}",40.078); STa("{Cl}",35.453); STa("{Cu}",63.546); STa("D",2.012); -STa("F",18.9984); STa("{Fe}",55.845); STa("{Hg}",200.59); STa("I",126.90447); STa("K",39.0983); -STa("{Li}",6.941); STa("{Mg}",24.305); STa("N",14.0067); STa("{Na}",22.98977); STa("{Ni}",58.693); -STa("O",15.9994); STa("P",30.973761); STa("S",32.065); STa("{Si}",28.0855); STa("{Sn}",118.71); -STa("{Ti}",47.867); STa("{Zn}",65.409); +STa("C" ,12.0107); STa("H" ,1.00794); STa("{Al}",26.9815); STa("{As}",74.9236); +STa("B" ,10.811); STa("{Br}",79.904); STa("{Ca}",40.078); STa("{Cl}",35.453); +STa("{Cu}",63.546); STa("D" ,2.012); STa("F" ,18.9984); STa("{Fe}",55.845); +STa("{Hg}",200.59); STa("I" ,126.90447); STa("K" ,39.0983); STa("{Li}",6.941); +STa("{Mg}",24.305); STa("N" ,14.0067); STa("{Na}",22.98977); STa("{Ni}",58.693); +STa("O" ,15.9994); STa("P" ,30.973761); STa("S" ,32.065); STa("{Si}",28.0855); +STa("{Sn}",118.71); STa("{Ti}",47.867); STa("{Zn}",65.409); %-------------------------------------------------------------------------------------------------- STb("{H_2_}")("H","H"); STb("OH")("O","H"); STb("O{Na}")("O","{Na}"); STb("CN")("C","N"); STb("SH")("S","H"); STb("CHO")("C","H","O"); STb("N{O_2_}")("N","O","O"); @@ -921,26 +941,45 @@ enddef; %================================================================================================== def proc_calc_out= begingroup - save warning_cnt,cal_MW,cal_MWp,knownA,cal_FM,bondC,tmp_wtp,bond_cnt,hide_H, + save warning_cnt,cal_MW,cal_MWp,knownA,cal_FM,bondC,tmp_wtp,bond_cnt,cnt_hide_H, inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW; - numeric sumA[],bondC[]; + numeric sumA[],bondC[],hideH[]; string cal_FM,cal_MW_str,sumA,s_tag,s_var, inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW; inf_NO:=inf_EN:=inf_JN:=inf_FM:=inf_CAS:=inf_USE:=inf_EXA:=inf_EXB:=inf_MW:=""; - cal_MW_str:=cal_FM:=""; hide_H:=warning_cnt:=cal_MW:=cal_MWp:=0; + cal_MW_str:=cal_FM:=""; cnt_hide_H:=warning_cnt:=cal_MW:=cal_MWp:=0; %------------------------------------------------------------------------------------------ proc_get_info; for i=1 upto tbl_cnt: sumA[i]:=0; endfor - for i=1 upto cntA: knownA:=bond_cnt:=0; - for j=1 upto cntB: if (lineB[j]=dl)or(lineB[j]=dr)or(lineB[j]=dm): bondC[j]:=2; - elseif (lineB[j]=tm): bondC[j]:=3; elseif lineB[j]=nl: bondC[j]:=0; - elseif lineB[j]=0: bondC[j]:=0; else: bondC[j]:=1; fi - if (sB[j]=i)or(eB[j]=i): bond_cnt:=bond_cnt+bondC[j]; fi endfor + for i=1 upto cntA: + knownA:=bond_cnt:=0; + for j=1 upto cntB: + if (lineB[j]=dl)or(lineB[j]=dr)or(lineB[j]=dm): bondC[j]:=2; + elseif lineB[j]=tm: bondC[j]:=3; + elseif (lineB[j]=vf)or(lineB[j]=vb): bondC[j]:=0; + else: bondC[j]:=1; + fi + if (sB[j]=i)or(eB[j]=i): bond_cnt:=bond_cnt+bondC[j]; fi + endfor Bcnt[i]:=bond_cnt; if strD[numS[i]]="": strD[numS[i]]:="C"; fi - if strD[numS[i]]="C": if bond_cnt<4: hide_H:=hide_H+(4-bond_cnt); fi fi - B_check(i)("C")(4); B_check(i)("H")(1); B_check(i)("O")(2); - B_check(i)("F")(1); B_check(i)("{Cl}")(1); B_check(i)("Br}")(1); + if (strD[numS[i]]="C")and(bond_cnt<4): + hideH[i]:=4-bond_cnt; cnt_hide_H:=cnt_hide_H+hideH[i]; else: hideH[i]:=0; + fi + if strD[numS[i]]="C": bond_check(i)(1,2,3,4); + elseif strD[numS[i]]="N": bond_check(i)(3,5); + elseif strD[numS[i]]="H": bond_check(i)(1); + elseif strD[numS[i]]="O": bond_check(i)(2); + elseif strD[numS[i]]="S": bond_check(i)(2,4,6); + elseif strD[numS[i]]="P": bond_check(i)(5); + elseif strD[numS[i]]="OH": bond_check(i)(1); + elseif strD[numS[i]]="COOH": bond_check(i)(1); + elseif strD[numS[i]]="CN": bond_check(i)(1); + elseif strD[numS[i]]="N{H_2_}": bond_check(i)(1); + elseif strD[numS[i]]="F": bond_check(i)(1); + elseif strD[numS[i]]="{Cl}": bond_check(i)(1); + elseif strD[numS[i]]="{Br}": bond_check(i)(1); + fi for j=1 upto tbl_cnt: if strD[numS[i]]=tbl_atom_str[j]: if tbl_atom[j]=0: sumA[j]:=sumA[j]+1; @@ -948,12 +987,11 @@ def proc_calc_out= knownA:=1; fi endfor if knownA=0: warning(" Unknown Str("&strD[numS[i]]&") is used "&decimal(i)); fi endfor - sumA[2]:=sumA[2]+hide_H; + sumA[2]:=sumA[2]+cnt_hide_H; for i=1 upto tbl_cnt: if sumA[i]>=1: - tmp_wtp:=(tbl_atom_wt[i]/100)*sumA[i]; - if (tmp_wtp<=40)and(cal_MWp<=40): cal_MW:=cal_MW+(tbl_atom_wt[i]*sumA[i]); - else: cal_MWp:=cal_MWp+tmp_wtp; fi + nA:=tbl_atom_wt[i]/100*sumA[i]; cal_MWp:=cal_MWp+nA; + if (cal_MWp<40)and(nA<40): cal_MW:= cal_MW +tbl_atom_wt[i]*sumA[i]; fi cal_FM:=cal_FM&stripP(tbl_atom_str[i]) if sumA[i]>=2: &decimal(sumA[i]) fi; fi endfor @@ -969,6 +1007,7 @@ def auxtag_out= enddef; %================================================================================================== def proc_auxfile_out= + message "%["&decimal(char_num)&"]:"&inf_EN; 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 string scantokens(var[i]): scantokens(var[i]) @@ -977,35 +1016,53 @@ def proc_auxfile_out= if sw_auxfix=0: for i=1 upto inf_num: &aux_delimiter&info[i] endfor; fi enddef; %================================================================================================== -def proc_checklist_out= nA:=0; - message "% Molecular name = "& inf_EN; - message "% warnings = "&fdr(3)(warning_cnt)&" / Expanded command = "&decimal(cntD[0]); - message "% width * height = " & fdr(8)(mol_wd)&" * "&fdr(8)(mol_ht); +vardef round_auto(expr n)= + if (n<4) and(n>-4): round(n*1000)/1000 elseif (n<40) and(n>-40): round(n*100)/100 + elseif (n<400)and(n>-400): round(n*10)/10 else: round(n) fi +enddef; +%-------------------------------------------------------------------------------------------------- +def proc_checklist_out= + message "%------------------------------------------------------------------"; + message "% Molecular name = "& inf_EN; + message "% Warnings = "&fdr(3)(warning_cnt)&" / Expanded command = "&decimal(cntD[0]); + message "% Width * Height = " & fdr(8)(mol_wd)&" * "&fdr(8)(mol_ht); message "% Shift width * height = "& fdr(8)(minX)&" * "&fdr(8)(minY); message "% Bond length = "&fdr(3)(bond_len)&" Atom size = "&fdr(3)(atom_wd); message "% Atom count="&fdr(3)(cntA)&" Bond count="&fdr(3)(cntB)& - " Ring count="&fdr(3)(cntB-cntA+1)&" Hide H ="&fdr(3)(hide_H); - message "%-----------------------------------< atom >< bond >-------"; - for i=1 upto cntA: message "% "&fdr(3)(i)&" ("&fdr(10)(xpart(posA[i])/bond_len)&" ) ("& - fdr(10)(ypart(posA[i])/bond_len)&" ) "&fixed_l(8)(strD[numS[i]])&" "&fdr(3)(Bcnt[i]); + " Ring count="&fdr(3)(cntB-cntA+1)&" Hide H count="&fdr(3)(cnt_hide_H); + message "%------------------------------------------------------------------"; + message "%< NO. >< x axis , y axis >< atom >< bond >< hide_H >"; + for i=1 upto cntA: + message "% A"&fdl(4)(i)&" ("&fdr(7)(round_auto(xpart(posA[i])/bond_len))&" , "& + fdr(7)(round_auto(ypart(posA[i])/bond_len))&" ) "&fixed_l(8)(strD[numS[i]])& + " "&fdr(3)(Bcnt[i]) if hideH[i]>0: &fdr(8)(hideH[i]) fi; endfor - message "%Bond list---------------------------------------------------------"; - for i=1 upto cntB: if lineB[i]<>0: message "% "&fdr(3)(incr nA)&" "&fdr(3)(sB[i])& - " -> "&fdr(3)(eB[i])&" ("&fdr(3)(bondC[i]-si+1)&")"; fi + message "%------------------------------------------------------------------"; + message "%< NO. >< bond (sdt)>"; + for i=1 upto cntB: + nC:=lenB[i]; if nC=_size_a: nC:=ratio_atom_bond; elseif nC<0: nC:=-nC; fi + if lineB[i]<>0: + nB:=angB[i]; if nB>180: nB:=nB-360; fi + message "% B"&fdl(4)(i)&fdr(3)(sB[i])&" -> "&fdr(3)(eB[i])& + " ("&fdr(3)(bondC[i]-si+1)&")"&fdr(9)(round_auto(angB[i]))& + " ("&fdr(6)(round_auto(nB))&")"&fdr(8)(nC)&" ("&fdr(8)(round_auto(nC*bond_len))&")"; + fi endfor - message "%Fomula / Molecular weight ---------------------------------------"; + message "%------------------------------------------------------------------"; if cal_MWp<=40: cal_MW_str:=fdr(10)(cal_MW); else: cal_MW_str:=fdr(10)(cal_MWp)&" * 100"; fi for i=1 upto tbl_cnt: if sumA[i]>=1: + nA:=tbl_atom_wt[i]/100*sumA[i]; message "% "&fixed_l(4)(stripP(tbl_atom_str[i]))&"("&fdr(9)(tbl_atom_wt[i])& ") * "&fdr(6)(sumA[i])&" = " - if tmp_wtp<=40: &fdr(12)(tbl_atom_wt[i]*sumA[i]); else: &fdr(12)(tmp_wtp)&" * 100"; fi fi + if nA<40: &fdr(12)(tbl_atom_wt[i]*sumA[i]); else: &fdr(12)(nA)&" * 100"; fi + fi endfor message "% Weight Calc: " &cal_MW_str &" / Input: " if inf_MW<>"": &inf_MW &" / weight gap= " &decimal(cal_MW-scantokens(inf_MW)) fi; message "% Fomula Calc: "&cal_FM&" / Input: " if inf_FM<>"": &inf_FM&" / "& if inf_FM=cal_FM: "MACTCH" else: "NOT MACTCH" fi fi; - message "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"; + message "%=================================================================="; enddef; %================================================================================================== def proc_MOLfile_out= -- cgit v1.2.3