From ac4c34e7f36adcd9f1b3ecd0179ddbd29daafcce Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 14 Sep 2015 21:53:39 +0000 Subject: mcf2graph (14sep15) git-svn-id: svn://tug.org/texlive/trunk@38374 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/metapost/mcf2graph/README | 8 +- .../doc/metapost/mcf2graph/mcf_exa_soc.mf | 42 ++-- .../doc/metapost/mcf2graph/mcf_example.pdf | Bin 259704 -> 260019 bytes .../doc/metapost/mcf2graph/mcf_example.tex | 4 +- .../doc/metapost/mcf2graph/mcf_man_soc.mf | 159 ++++++++------- .../doc/metapost/mcf2graph/mcf_manual.pdf | Bin 307967 -> 317789 bytes .../doc/metapost/mcf2graph/mcf_manual.tex | 219 ++++++++++++--------- .../doc/metapost/mcf2graph/mcf_mplib_exa.pdf | Bin 120942 -> 120736 bytes .../doc/metapost/mcf2graph/mcf_mplib_exa.tex | 8 +- Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 215 +++++++++++--------- 10 files changed, 370 insertions(+), 285 deletions(-) diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/README b/Master/texmf-dist/doc/metapost/mcf2graph/README index 1c4a5d08512..f5d109556a6 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 : 3.61 / 2015-09-01 + version : 3.63 / 2015-09-14 E-mail : akira.yamaji5@gmail.com Located at : http://mirror.ctan.org/pkg/graphics/mcf2graph Home page : http://molecoding.cocolog-nifty.com/blog/ @@ -56,7 +56,7 @@ \documentclass{article} \usepackage[dvipdfmx]{graphicx}% Change option depend on your tex system - ********************************************************** + ********************************************************** % insert part of info.aux file %------------------------------------------------------------------------- \INFO{{F:MCF_SOC2}{C:0}{EN:Acetamiprid}}% @@ -114,3 +114,7 @@ ver. 3.58 / 2015-08-18 improve calculation of molecular formula and weight ver. 3.59 / 2015-08-23 update MCF syntax manual ver. 3.61 / 2015-09-01 fix bug in local setting of font_wd# and font_ht# + ver. 3.62 / 2015-09-07 improve numbering bond, numbering atom, + update MCF syntax manual + ver. 3.63 / 2015-09-14 add command option of numbering address, + update MCF syntax manual 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 b08865cd267..9db6bd3f491 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2015.8.30 +% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2015.9.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% input mcf2graph.mf; %------------------------------------------------------------------------- @@ -26,13 +26,13 @@ endfont %*********************************************************************** beginfont("EN:Imidacloprid") MCf(^^30, - Ph1,1:N,6:/Cl,3\,!,?5,1:N,3:NH,-4\\,!,NO2 + Ph1,1:N,6:/Cl,3\,!,?5,1:N,3:NH,2\\,!,NO2 ) endfont %*********************************************************************** beginfont("EN:Ethofenprox") MCf(^^30, - Ph,5\,!,Ph,-4\,O,!3,/Me^35,/Me^-35,!,Ph,-3:/OEt + Ph,5\,!,Ph,3\,O,!3,/Me^35,/Me^-35,!,Ph,4:/OEt ) endfont %*********************************************************************** @@ -64,7 +64,7 @@ beginfont("EN:Permethrin") MCf( ^^-30, ?3,2^-35:*/Me,2^35:/*Me,1\,!~dl,/Cl,!,Cl, - 3\,//O,!,O,!2,Ph,-4\>rl,O,!,Ph + 3\,//O,!,O,!2,Ph,3\,O,-60,Ph ) endfont %*********************************************************************** @@ -76,19 +76,19 @@ endfont %*********************************************************************** beginfont("EN:Azoxystorbin") MCf(^^30, - Ph,2:/OH,3\,O,!,Ph,@(4,6)N,-4\,O,!,Ph,-5\,/OMe,!,//O,!,O,! + Ph,2:/OH,3\,O,!,Ph,@(4,6)N,3\,O,!,Ph,2\,/OMe,!,//O,!,O,! ) endfont %*********************************************************************** beginfont("EN:Isoprothiolane") MCf(^^30, - !,/Me,!,O,!,//O,!2,//O,!,O,!,/Me,!,-5\\,?5,@(2,5)S + !,/Me,!,O,!,//O,!2,//O,!,O,!,/Me,!,2\\,?5,@(2,5)S ) endfont %*********************************************************************** beginfont("EN:Iprodion") MCf(^^18, - ?5,@(3,5)N,2://O,3\,Ph,@(3,5)/Cl,#5\,!,NHiPr + ?5,@(3,5)N,2://O,5\,!,NHiPr,3\,Ph,@(3,5)/Cl ) endfont %*********************************************************************** @@ -100,14 +100,14 @@ endfont %*********************************************************************** beginfont("EN:Oxine-Copper") MCf( - Ph,4:N,-2=Ph,-4\,O,-60,^^90,Cu,-90,O,60,Ph,-2=Ph,4:N, + Ph,4:N,5=Ph,-4\,O,-60,^^90,Cu,-90,O,60,Ph,5=Ph,4:N, #4*,&(#12)~vf,#23*,&(#12)~vf ) endfont %*********************************************************************** beginfont("EN:Captan") - MCf(^^0, - ?6,6=d,-4=?5,2:N,@(1,3)//O,#8\,S,!,CCl3 + MCf(^^12, + ?6,6=dl,3=??5,2:N,@(7,9)//O,8\,S,!,CCl3 ) endfont %*********************************************************************** @@ -132,13 +132,13 @@ endfont; %*********************************************************************** beginfont("EN:Flutolanil") MCf(^^30, - Ph,2:/CF3,3\,//O,!,NH,!,Ph,-1:/OiPr + 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^24:/Bu + ?5,$(2,5)d,@(1,3,4)N,4\,!2,Ph,@(4,6)/Cl,#7\,?5,@(2,5)O,3:/Bu^24 ) endfont %*********************************************************************** @@ -156,7 +156,7 @@ endfont %*********************************************************************** beginfont("EN:Oxadixyl") MCf(^^30, - Ph,@(1,3)/Cl,4\,?5,2=d,@(1,2)N,4:O,5://O,-3:/tBu,#6\,O,!2,!~tm + Ph,@(1,3)/Cl,4\,?5,2=dl,@(1,2)N,4:O,5://O,-3:/tBu,#6\,O,!2,!~tm ) endfont %*********************************************************************** @@ -168,19 +168,19 @@ endfont %*********************************************************************** beginfont("EN:Cafenstrole") MCf(^^30, - Ph,@(2,4,6)/Me,3\,SOO,!,?5,$(2,5)d,@(2,4,5)N,-2\,!,N,/Me,!2 + Ph,@(2,4,6)/Me,3\,SOO,!,?5,$(2,5)d,@(2,4,5)N,4\,!,N,/Me,!2 ) endfont %*********************************************************************** beginfont("EN:Cyclosulfamuron") MCf(^^30, - Ph,5\,//O,!,?3,#4\,NH,!,SOO,!,NH,!,//O,!,NH,!,Ph,@(2,6)N,@(3,5)/OMe + Ph,5\,//O,!,??3,4\,NH,!,SOO,!,NH,!,//O,!,NH,!,Ph,@(2,6)N,@(3,5)/OMe ) endfont %*********************************************************************** beginfont("EN:Napropamide") MCf(^^-30, - Ph,-4=Ph,#10\,O,!,/Me^35,/Me^-35,!,//O,!,N,/Et,! + Ph,3=ph,10\,O,!,/Me^35,/Me^-35,!,//O,!,N,/Et,! ) endfont %*********************************************************************** @@ -222,19 +222,19 @@ endfont %*********************************************************************** beginfont("EN:Tricyclazole") MCf(^^30, - Ph,2:/Me,-4=?5,1:N,3:S,-3=?5,$(2,4)d,@(2,3)N + Ph,2:/Me,3=?5,1:N,3:S,2=?5,$(2,4)dl,@(2,3)N ) endfont %*********************************************************************** beginfont("EN:Phthalide") MCf(^^30, - Ph,@(1,2,5,6)/Cl,-4=?5,2:O,3://O + Ph,@(1,2,5,6)/Cl,3=?5,2:O,3://O ) endfont %*********************************************************************** beginfont("EN:Probenazole") MCf(^^12, - Ph,3:d,-4=?5,1:SOO,2:N,3\,O,!2,!~dr + Ph,3:dl,3=?5,1:SOO,2:N,3\,O,!2,!~dr ) endfont %*********************************************************************** @@ -324,7 +324,7 @@ endfont beginfont("EN:Gibberellin A3"); MCf(^^12, ?6`1.3,3=??5,9=??7,12\^160`1.6,&8, - 4\^155~zf`-1.2,O,55,//O^180`1,&2~zb, + 4\^155~zf`1.2,O,55,//O^180`1,&2~zb, 5=dl,11=wf,13=wb,7:/COOH,11://Me,1:*/OH,12:/*OH,2:*/Me, @(3^-60,9^60)*/H ) @@ -560,7 +560,7 @@ endfont beginfont("EN:Atoropin") MCf(^^-30, O,!,//O,!,!,Ph, - #1\~zb^-120,?7,-2*\^-170`1.2,N,/Me,&-5~wb, + #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 c2943bbf6fe..6d28876c3c3 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 7a00b00389f..0d25e6c5e7f 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 2015.8.31 +% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2015.9.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \usepackage{graphicx} @@ -57,7 +57,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} {\hspace{20mm} \LARGE\bf Molecular Coding Format examples \hspace{10mm} }% -{\footnotesize\bf by Akira Yamaji 2015.8.28} \vspace{5mm}\\ +{\footnotesize\bf by Akira Yamaji 2015.9.05} \vspace{5mm}\\ \fontnum=1% \noindent% %------------------------------------------------------------------------ diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf index 2c0ab56fa5e..2b6f04c698a 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2015.8.28 +% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2015.9.12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% input mcf2graph.mf; %----------------------------------------------------------------------- @@ -14,15 +14,17 @@ sw_start_vector:=0; %%%%%sw_checklist:=1; %*********************************************************************** beginfont("EN:Chain") -sw_numberB:=1; - ratio_cr:=1; + sw_numberB:=1; + max_bond_width:=0.20; + ratio_chain_ring:=1; sw_start_vector:=1; MCf(^^30,-60,60,-60,60,-60,60) endfont %*********************************************************************** beginfont("EN:Chain") sw_numberB:=1; - ratio_cr:=1; + max_bond_width:=0.20; + ratio_chain_ring:=1; sw_start_vector:=1; MCf(^^30,!,!,!,!,!,!) endfont @@ -39,12 +41,12 @@ beginfont("EN:rotate 1") endfont %*********************************************************************** beginfont("EN:change bond 1") - ratio_cr:=1; + ratio_chain_ring:=1; MCf(^^30,!~dm,!~dl,!~dr,!~wf,!~wb,!~zf,!~zb) endfont %*********************************************************************** beginfont("EN:change bond 2") - ratio_cr:=1; + ratio_chain_ring:=1; MCf(^^30,!9,1=vf,2=vb,3=tm,4=dt,5=wv,@(7~bd^-45`2,9~ov^45`2)/Me) endfont %*********************************************************************** @@ -62,7 +64,6 @@ endfont %*********************************************************************** beginfont("EN:change bond length3") sw_start_vector:=1; - sw_numberB:=1; MCf(^^30,?6,3\,?6`1.2,4=??6) endfont %*********************************************************************** @@ -72,110 +73,119 @@ beginfont("EN:change atom 1") endfont %*********************************************************************** beginfont("EN:change atom 2") - sw_start_vector:=1; - MCf(^^30,!6,2:O,@(3,5)N) + MCd(1,1)(.5,.8)(^^30,!6,2:O,@(3,5)N) + sw_numberA:=1; + MCd(1,1)(.5,.2)(^^30,!6,2:O,@(3,5)N) endfont %*********************************************************************** beginfont("EN:change atom 3") - sw_start_vector:=1; - MCf(?6,4\,?6,2:N) + MCd(.5,.5)(.5,.9)(?6,4\,??6,2:N) + sw_numberA:=1; + MCd(.5,.5)(.5,.1)(?6,4\,??6) endfont %*********************************************************************** beginfont("EN:change atom 4") - sw_start_vector:=1; - MCf(?6,4\,??6,2:N) + MCd(.5,.5)(.5,.9)(?6,4\,?6,2:N) + sw_numberA:=2; + numberA_start:=7; + MCd(.5,.5)(.5,.1)(?6,4\,?6) endfont %*********************************************************************** beginfont("EN:change atom 5") - sw_start_vector:=1; - MCf(?6,4\,?6,#2:N) + MCd(.5,.5)(.5,.9)(?6,4\,??6,#2:N) + sw_numberA:=1; + MCd(.5,.5)(.5,.1)(?6,4\,??6) endfont %*********************************************************************** beginfont("EN:change atom 6") - sw_start_vector:=1; - MCf(?6,4\,?6,-2:N) + MCd(.5,.5)(.5,.9)(?6,4\,?6,-2:N) + sw_numberA:=3; + MCd(.5,.5)(.5,.1)(?6,4\,?6) endfont %*********************************************************************** beginfont("EN:fused ring 1") sw_start_vector:=1; sw_numberB:=1; + numberB_end:=6; MCf(^^30,?6,3=?5) endfont %*********************************************************************** beginfont("EN:fused ring 1") sw_start_vector:=1; sw_numberB:=1; - MCf(^^30,?6,$(3,3,3)?6) + MCf(^^30,?6,$(3,3)?6) endfont %*********************************************************************** beginfont("EN:fused ring 2") - sw_start_vector:=1; - sw_numberB:=1; - MCf(^^30,?6,$(3,9,14)??6) + sw_numberB:=1; + numberB_end:=11; + MCd(1,.7)(0,0)(^^30,?6,$(3)??6,(11,4)=??6[4]) + MCd(1,.6)(.5,1)(^^30,?6,$(3)??6,(11,4)=??5[3]) + MCd(1,.6)(1,0)(^^30,?6,$(3)??6,(11,4)=??4[2]) endfont %*********************************************************************** beginfont("EN:fused ring 3") - sw_start_vector:=1; - sw_numberB:=1; - MCf(^^30,?6,$(3,9)??6,(11,4)=??6[4],(16,17)=??6[3],(20,5)=??4[2]) -endfont -%*********************************************************************** -beginfont("EN:fused ring 4") - sw_start_vector:=1; sw_numberB:=1; - MCf(^^30,?6,$(3,9)??6,(11,4)=??6[4],(20,5)=??5[3],(16,17)=??5[2]) + numberB_end:=16; + MCd(1,.55)(0,0)(?6,$(3,10)??6,(16,4)=??6[3]) + MCd(1,.55)(.43,1)(?6,$(3,10)??6,(16,4)=??5[2]) + numberB_end:=21; + MCd(1,.53)(1,0)(^^30,?6,$(2,10,15)??6,(21,3)=??6[2]) endfont %*********************************************************************** beginfont("EN:Spiro ring ") - sw_start_vector:=1; - ratio_cr:=1; + sw_numberA:=1; + numberA_end:=7; + ratio_chain_ring:=1; MCf(^^30,!6,4*,?5) endfont %*********************************************************************** beginfont("EN:branch") - sw_numberB:=1; - sw_start_vector:=1; - MCf(^^30,!3,/!2,!3) + sw_numberA:=1; + max_bond_width:=0.30; + ratio_chain_ring:=1; + MCf(^^-30,!8,2\,!,4*\,!,6\*,!,8\\,!) endfont %*********************************************************************** -beginfont("EN:branch") - sw_numberB:=1; - sw_start_vector:=1; - MCf(^^30,!6,4\,!2) +beginfont("EN:branch3") + sw_numberA:=1; + max_bond_width:=0.30; + ratio_chain_ring:=1; + MCf(^^-30,!6,2\~dr,!,4\`1.5,!,6\^15,-60) endfont %*********************************************************************** beginfont("EN:substituent 1") - sw_start_vector:=1; - MCf(^^30,!,//O,!,/*H,!,*/H,!,/?3,!,**?3,!) + MCf(^^30,!,/Me,!,/Et,!3,/Pr,!,/iPr,!3,/tBu,!,/Ph^-30,!) endfont %*********************************************************************** beginfont("EN:substituent 2") sw_start_vector:=1; - MCf(^^30,!,/Me,!,/Et,!3,/Pr,!,/iPr,!3,/tBu,!) + MCf(^^30,!,//O,!,/*H,!,*/H,!,/?3,!,**?3,!) endfont %*********************************************************************** beginfont("EN:substituent 3") sw_start_vector:=1; - MCf(^^30,!10,2:/Me,3:/Et,6:/Pr,7:/iPr,10:/tBu) + MCf(^^30,!`1,/Me~zf`2^30,!`1,/Me~zf`2^30,!2`1,*/Pr>lr,!2`1,*/Pr>rl,!`1) +endfont +%*********************************************************************** +beginfont("EN:substituent 3") + sw_numberA:=1; + numberA_end:=_skeletonA_end; + MCf(^^30,!11,2:/Me,3:/Et,6:/Pr,7:/iPr,10:/tBu,11:/Ph^-30) endfont %*********************************************************************** beginfont("EN:substituent 4") - sw_start_vector:=1; + sw_numberA:=1; numberA_end:=_skeletonA_end; MCf(^^30,?6,@(3`2^30,3~wf,4~zf,6~wf^-30,6~zf^30)/H) endfont %*********************************************************************** beginfont("EN:substituent 5") - sw_start_vector:=1; - MCf(^^30,!7`1,@(2,3)/*Me`2^30,5:*/Pr>lr,7:*/Pr>rl -) -endfont -%*********************************************************************** -beginfont("EN:change atom and substituent") - sw_start_vector:=1; - MCf(^^30,!3,NH,!,SOO,!3) + sw_numberA:=1; numberA_end:=_skeletonA_end; + MCf(^^30,!7`1,@(2,3)/*Me`2^30,5:*/Pr>lr,7:*/Pr>rl) endfont %*********************************************************************** beginfont("EN:chain strech direction mode 1") + ratio_chain_ring:=1; MCf( ?4,@(3^-90,3^-30,3^90)/'(!3,"{>hz}")>hz, @(1^-60,1`1.5,1^60)/'(!2,"{>vt}")>vt @@ -183,6 +193,7 @@ beginfont("EN:chain strech direction mode 1") endfont %*********************************************************************** beginfont("EN:chain strech direction mode 2") + ratio_chain_ring:=1; MCf( ^^30,!6,@(3^-30,3,3^30)/'(!,!,!,"{>lr}")>lr, @(5^-30,5,5^30)/'(!,!,!,"{>rl}")>rl @@ -190,12 +201,18 @@ beginfont("EN:chain strech direction mode 2") endfont %*********************************************************************** beginfont("EN:chain strech direction mode 3") + ratio_chain_ring:=1; sw_start_vector:=1; MCf(^^-30,!6,@(6>45)/'(!3,"{>45}"), @(3>'(90,-90,90))/'(!,!,!,"{>'(90,-90,90)}") ) endfont %*********************************************************************** +beginfont("EN:change atom and substituent") + sw_start_vector:=1; + MCf(^^30,!3,NH,!,SOO,!3) +endfont +%*********************************************************************** beginfont("EN:Change color") sw_start_vector:=1; MCf(^^30,Ph,@(2,5)N,2:red,5:blue,3=green) @@ -258,7 +275,7 @@ endfont beginfont("EN:Gibberellin A3"); MCf( ^^12,?6`1.3,3=??5,9=??7,12\^160`1.6,&8, - 4\^155~zf`-1.2,O,55,//O^180`1,&2~zb, + 4\^155~zf`1.2,O,55,//O^180`1,&2~zb, 5=dl,11=wf,13=wb,7:/COOH,11://Me,1:*/OH,12:/*OH,2:*/Me, @(3^-60,9^60)*/H ) @@ -388,7 +405,7 @@ beginfont("EN:margin_left_right") MCd(1,1)(0.5, .9)(^^30,CH3,!0,!17,CH3) margin_left_right:=0.4mm; MCd(1,1)(0.5, .5)(^^30,CH3,!0,!17,CH3) - margin_left_right:=2mm; + margin_left_right:=5mm; MCd(1,1)(0.5, .1)(^^30,CH3,!0,!17,CH3) endfont %*********************************************************************** @@ -398,27 +415,37 @@ beginfont("EN:margin_top_bottom") MCd(1,1)(0.1, .5)(^^30,Ph,2:/OH,5:/NH2) margin_top_bottom:=0.4mm; MCd(1,1)(0.5, .5)(^^30,Ph,2:/OH,5:/NH2) - margin_top_bottom:=2mm; + margin_top_bottom:=5mm; MCd(1,1)(0.9, .5)(^^30,Ph,2:/OH,5:/NH2) endfont %*********************************************************************** beginfont("EN:Switwch start vector") sw_start_vector:=0; - MCd(1,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.7)( 0, .5)(^^30,Ph,4:/Cl,3:/F) sw_start_vector:=1; - MCd(1,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.7)( 1, .5)(^^30,Ph,4:/Cl,3:/F) endfont %*********************************************************************** beginfont("EN:Switwch numberingA") + ratio_chain_ring:=1; + numberA_start:=3; numberA_end:=8; sw_numberA:=1; - sw_start_vector:=1; - MCf(^^30,?6,-4=?6,-3\,!,?6,#10:/Et) + MCd(1,1)(.5,.9)(^^30,!9) + sw_numberA:=2; + MCd(1,1)(.5,.5)(^^30,!9) + sw_numberA:=3; + MCd(1,1)(.5,.1)(^^30,!9) endfont %*********************************************************************** beginfont("EN:Switwch numberingB") + ratio_chain_ring:=1; + numberB_start:=3; numberB_end:=8; sw_numberB:=1; - sw_start_vector:=1; - MCf(^^30,?6,-4=?6,-3\,!,?6,#10:/Et) + MCd(1,1)(.5,.9)(^^30,!9) + sw_numberB:=2; + MCd(1,1)(.5,.5)(^^30,!9) + sw_numberB:=3; + MCd(1,1)(.5,.1)(^^30,!9) endfont %*********************************************************************** beginfont("EN:Switwch font frame") @@ -427,9 +454,9 @@ beginfont("EN:Switwch font frame") endfont %*********************************************************************** beginfont("EN:Switwch molecular frame") - MCd(1,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.7)( 0, .5)(^^30,Ph,4:/Cl,3:/F) sw_mol_frame:=1; - MCd(1,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.7)( 1, .5)(^^30,Ph,4:/Cl,3:/F) endfont %*********************************************************************** beginfont("EN:Switwch atom frame") @@ -438,15 +465,15 @@ beginfont("EN:Switwch atom frame") endfont %*********************************************************************** beginfont("EN:Switwch Solid ratio") - MCd(1,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.7)( 0, .5)(^^30,Ph,4:/Cl,3:/F) sw_solid:=1; ratio_bond_width:=0.08; - MCd(1,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.7)( 1, .5)(^^30,Ph,4:/Cl,3:/F) endfont %*********************************************************************** beginfont("EN:Switwch Expand") - MCd(1,.6)(0, 0)(^^30,Ph,4:/COOH,3:/NH2) + MCd(1,.6)(0, .5)(^^30,Ph,4:/COOH,3:/NH2) sw_expand:=1; - MCd(1,.6)(1, 1)(^^30,Ph,4:/COOH,3:/NH2) + MCd(1,.6)(1, .5)(^^30,Ph,4:/COOH,3:/NH2) endfont %*********************************************************************** beginfont("EN:MCd()") diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf index 1c7c00b00a9..f2d07399fbe 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 6fff0e21405..45be0f4ad43 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 2015.9.1 +% Molecular Coding Format manual by Akira Yamaji 2015.9.14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \usepackage[dvipdfmx]{graphicx} @@ -33,8 +33,8 @@ \begin{document} \noindent% \begin{picture}(180,0) - \put(25,12){{\LARGE Molecular Coding Format manual}\hspace{10mm} - by Akira Yamaji 2015.9.1} + \put(20,9){{\LARGE\bf Molecular Coding Format manual}\hspace{10mm} + by Akira Yamaji 2015.9.14} \end{picture}\vspace{-4.2mm}\\ %---------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} @@ -80,7 +80,7 @@ six membered ring \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Rotate} +\MCFtitle{Rotate current angle} \begin{verbatim} ^^angle:rotate current angle @@ -91,7 +91,7 @@ six membered ring \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Change bond (1)} +\MCFtitle{Change bond type (1)} \begin{verbatim} ~bond change bond dm:double,dl:double(left),dr:double(right), @@ -105,9 +105,9 @@ six membered ring \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Change bond (2)} +\MCFtitle{Change bond type (2)} \begin{verbatim} - Bn=bond : change bond + Bn=bond type : $(Bn)bond type (change bond type at Bn) vf:vector forward, vb:vector backward, tm:triple, wv:waved, bd:broad single, ov:over line @@ -122,7 +122,7 @@ six membered ring \begin{minipage}[t][38mm]{100mm} \MCFtitle{Change bond length (1)} \begin{verbatim} -B`length : change bond length of B +Bn`length : change bond length at Bn ^^30,!2,!2`1.2,! \end{verbatim} @@ -170,6 +170,8 @@ Insert hetero atom @(3,5)N : change A3,A5 C to N ^^30,!6,2:O,@(3,5)N + +An(n:numeric): atom number \end{verbatim} \end{minipage} \MCFstructure @@ -178,20 +180,21 @@ Insert hetero atom \begin{minipage}[t][38mm]{100mm} \MCFtitle{Change atom (3)} \begin{verbatim} -2:N : change A2(brock ahead) C to N +2:N : change A2 C to N +??6 do not make brock - ?6,4\,?6,2:N + ?6,4\,??6,2:N \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Change atom (4)} +\MCFtitle{Change atom (brock address)} \begin{verbatim} -2:N : change A2(brock ahead) C to N -??6 is not brock - ?6,4\,??6,2:N +2:N : change A2(brock address) C to N + +?6,4\,?6,2:N \end{verbatim} \end{minipage} @@ -199,7 +202,7 @@ Insert hetero atom \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Change atom (5)} +\MCFtitle{Change atoma (absolute address)} \begin{verbatim} #2:N : change A#2 C to N @@ -210,7 +213,7 @@ Insert hetero atom \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Change atom (6)} +\MCFtitle{Change atom (relative address)} \begin{verbatim} -2:N : change A(-2) C to N @@ -221,25 +224,26 @@ Insert hetero atom \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Fused ring (1)} +\MCFtitle{Fuse ring (attached 1 bond)} \begin{verbatim} ?6,3=?5 : fuse ?5 at B3 ?6,3=?5 +Bn(n:numeric): bond number \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Fused ring (2)} +\MCFtitle{Fuse multi ring (attached 1 bond)} \begin{verbatim} - ?6,$(3,3,3)??6 NG - ?6,$(3,9,14)??6 OK - ?6,$(-4,-3,-3)??6 OK - ?6,$(#3,#9,#14)??6 OK +?6,$(3,3)?6 => OK ?6,$(3,3)??6 => NG +?6,$(3,9)?6 => NG ?6,$(3,9)??6 => OK +?6,$(-4,-3)?6 => OK ?6,$(-4,-3)??6 => OK +?6,$(#3,#9)?6 => OK ?6,$(#3,#9)??6 => OK \end{verbatim} \end{minipage} @@ -247,82 +251,89 @@ Insert hetero atom \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Fused ring (3)} +\MCFtitle{Fuse ring (attached 2 bond)} \begin{verbatim} +(4,11)=??6[4] : fuse 4/6 ring to B11..B4 +(4,11)=??5[3] : fuse 3/5 ring to B11..B4 +(4,11)=??4[2] : fuse 2/4 ring to B11..B4 - ?6,$(3,3,3)?6 OK - ?6,$(3,9,14)?6 NG - ?6,$(-4,-3,-3)?6 OK - ?6,$(#3,#9,#14)?6 OK - + MCd(1,.7)( 0,0)(^^30,?6,$(3)??6,(11,4)=??6[4]) + MCd(1,.6)(.5,1)(^^30,?6,$(3)??6,(11,4)=??5[3]) + MCd(1,.6)( 1,0)(^^30,?6,$(3)??6,(11,4)=??4[2]) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Fused ring (4)} +\MCFtitle{Fuse ring (attached 3,4 bond)} \begin{verbatim} -(4,11)=??6[4] : fuse 4/6 ring to B4 ..B11 -(16,17)=??6[3] : fuse 3/6 ring to B16..B17 -(20,5)=??4[2] : fuse 2/4 ring to B20.. B5 - - ^^30,?6,$(3,9)??6,(4,11)=??6[4], - (16,17)=??6[3],(20,5)=??4[2] +(16,4)=??6[3] : fuse 3/6 ring to B16..B4 +(16,4)=??5[2] : fuse 2/5 ring to B16..B4 +(21,3)=??6[2] : fuse 2/6 ring to B21..B3 +MCd(1,.55)(0,0)(?6,$(3,10)??6,(16,4)=??6[3]) +MCd(1,.55)(.43,1)(?6,$(3,10)??6,(16,4)=??5[2]) +MCd(1,.53)(1,0)(^^30,?6,$(2,10,15)??6,(21,3)=??6[2]) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Fused ring (5)} +\MCFtitle{Spiro ring} \begin{verbatim} -(20,5)=??5[3] : fuse 3/5 ring to B20..B5 -(16,17)=??5[2] : fuse 2/5 ring to B16..B17 +4*,?5 : add ?5(5 membered ring) at A4 + +^^30,!6,4*,?5 - ^^30,?6,$(3,9)??6,(4,11)=??6[4], - (20,5)=??5[3],(16,17)=??5[2] +An* : jump to An \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Spiro ring} +\MCFtitle{Branch bond (1)} \begin{verbatim} -4*,?5 : add ?5(5 membered ring) to A4 +2\ : 2*,0 4*\ : 4*,0~wf +6\* : 6*,0~zf 8\\ : 8*,0~dm - ^^30,!6,4*,?5 +MCf(^^30,!8,2\,!,4*\,!,6\*,!,8\\,!) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Branch (1)} +\MCFtitle{Branch bond (2)} \begin{verbatim} -/ : branch bond(make at last) - - ^^30,!3,/!2,!3 +2\~dr : 2*,0~dr +4\`1.5 : 4*,0`1.5 +6\^15 : 6*,0^15 + +MCf(^^-30,!6,2\~dr,!,4\`1.5,!,6\^15,-60) + \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Branch (2)} +\MCFtitle{Insert substituent(1)} \begin{verbatim} -4\ : branch bond at A4 +^^30, +!,/Me,!,/Et,!3,/Pr,!,/iPr,!3,/tBu,!,/Ph^-30,! - ^^30,!6,4\,!2 +** Me:methyl Et:ethyl Pr:propyl iPr:isopropyl + tBu:tertial buthyl Ph:phenyl \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Substituent (1)} +\MCFtitle{Insert substituent(2)} \begin{verbatim} / : single // : double */ : wedge forward /* : wedge backward @@ -335,63 +346,56 @@ Insert hetero atom \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Substituent (2)} +\MCFtitle{Insert substituent(3)} \begin{verbatim} -Insert substituent +~,^,`,> : change type,angle,length,enviroment + of substituent + +MCf(^^30,!`1,/Me~zf`2^30,!`1,/Me~zf`2^30, + !2`1,*/Pr>lr,!2`1,*/Pr>rl,!`1) - ^^30,!,/Me,!,/Et,!3,/Pr,!,/iPr,!3,/tBu,! \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Substituent (3)} +\MCFtitle{Add substituent(1)} \begin{verbatim} -Add substituent - - ^^30,!10,2:/Me,3:/Et,6:/Pr,7:/iPr,10:/tBu +sw_numberA:=1; numberA_end:=_skeletonA_end; +mcf(^^30,!11, + 2:/Me,3:/Et,6:/Pr,7:/iPr,10:/tBu,11:/Ph^-30) +** _skeletonA_end : + end number of molecular skeleton atom \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Substituent (4)} +\MCFtitle{Add substituent(2)} \begin{verbatim} ~,^,`,> : change type,angle,length,enviroment of substituent - ^^30,?6, - @(3`2^30,3~wf,4~zf,6~wf^-30,6~zf^30)/H +sw_numberA:=1; numberA_end:=_skeletonA_end; +MCf(^^30,?6, + @(3`2^30,3~wf,4~zf,6~wf^-30,6~zf^30)/H) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Substituent (5)} +\MCFtitle{Add substituent(3)} \begin{verbatim} ~,^,`,> : change type,angle,length,enviroment of substituent - ^^30,!7`1, - @(2,3)/*Me`2^30,5:*/Pr>lr,7:*/Pr>rl - -\end{verbatim} -\end{minipage} -\MCFstructure -\vspace{6mm}\\ -%----------------------------------------------------------------------------- -\begin{minipage}[t][38mm]{100mm} -\MCFtitle{Change atom and Substituent} -\begin{verbatim} -NH,SOO : inset hetero atom and substituent - simultaneously - - ^^30,!3,NH,!,SOO,!3 - +sw_numberA:=1; numberA_end:=_skeletonA_end; +MCF(^^30,!7`1, +@(2,3)/*Me`2^30,5:*/Pr>lr,7:*/Pr>rl) \end{verbatim} \end{minipage} \MCFstructure @@ -441,6 +445,19 @@ NH,SOO : inset hetero atom and substituent \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} +\MCFtitle{Change atom and Substituent} +\begin{verbatim} +NH,SOO : inset hetero atom and substituent + simultaneously + + ^^30,!3,NH,!,SOO,!3 + +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} \MCFtitle{Change color} \begin{verbatim} @(5)green : change color of A5 green @@ -569,7 +586,7 @@ Insert user defined substructure ^^12, ?6`1.3,3=??5,9=??7,12\^160`1.6,&8, - 4\^155~zf`-1.2,O,55,//O^180`1,&2~zb, + 4\^155~zf`1.2,O,55,//O^180`1,&2~zb, 5=dl,11=wf,13=wb,7:/COOH,11://Me,1:*/OH, 12:/*OH,2:*/Me,@(3^-60,9^60)*/H \end{verbatim} @@ -782,7 +799,7 @@ margin_left_right:=0mm; MCd(1,1)(0.5,0.9)(^^30,CH3,!0,!17,CH3) margin_left_right:=0.4mm; %<<== default MCd(1,1)(0.5,0.5)(^^30,CH3,!0,!17,CH3) -margin_left_right:=2mm; +margin_left_right:=5mm; MCd(1,1)(0.5,0.1)(^^30,CH3,!0,!17,CH3) \end{verbatim} \end{minipage} @@ -796,7 +813,7 @@ margin_top_bottom:=0mm; MCd(1,1)(0.1,0.5)(^^30,Ph,2:/OH,5:/NH2) margin_top_bottom:=0.4mm; %<<== default MCd(1,1)(0.5,0.5)(^^30,Ph,2:/OH,5:/NH2) -margin_top_bottom:=2mm; +margin_top_bottom:=5mm; MCd(1,1)(0.9,0.5)(^^30,Ph,2:/OH,5:/NH2) \end{verbatim} \end{minipage} @@ -807,31 +824,39 @@ MCd(1,1)(0.9,0.5)(^^30,Ph,2:/OH,5:/NH2) \MCFtitle{Switch Start Vector} \begin{verbatim} - MCd(1,.8)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.8)( 0,0.5)(^^30,Ph,4:/Cl,3:/F) sw_start_vector:=1; - MCd(1,.8)( 1, 1)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.8)( 1,0.5)(^^30,Ph,4:/Cl,3:/F) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Switch NumberingA} +\MCFtitle{Switch Numbering atom} \begin{verbatim} - sw_numberA:=1; + numberA_start:=3; numberA_end:=8; - MCf(^^30,Ph,-4=Ph1,-3\,!,Ph,10:/Et) + sw_numberA:=1; MCd(1,1)(.5,.9)(^^30,!9) + sw_numberA:=2; MCd(1,1)(.5,.5)(^^30,!9) + sw_numberA:=3; MCd(1,1)(.5,.1)(^^30,!9) + + ** default: numberA_start=1 numberA_end=4095 \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Switch NumberingB} +\MCFtitle{Switch Numbering bond} \begin{verbatim} - sw_numberB:=1; + numberB_start:=3; numberB_end:=8; + + sw_numberB:=1; MCd(1,1)(.5,.9)(^^30,!9) + sw_numberB:=2; MCd(1,1)(.5,.5)(^^30,!9) + sw_numberB:=3; MCd(1,1)(.5,.1)(^^30,!9) - MCf(^^30,Ph,-4=Ph1,-3\,!,Ph,10:/Et) + ** default: numberB_start=1 numberB_end=4095 \end{verbatim} \end{minipage} \MCFstructure @@ -852,9 +877,9 @@ MCd(1,1)(0.9,0.5)(^^30,Ph,2:/OH,5:/NH2) \MCFtitle{Switch molecular frame} \begin{verbatim} - MCd(1,.8)(0,0)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.8)(0,0.5)(^^30,Ph,4:/Cl,3:/F) sw_mol_frame:=1; - MCd(1,.8)(1,1)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.8)(1,0.5)(^^30,Ph,4:/Cl,3:/F) \end{verbatim} \end{minipage} \MCFstructure @@ -876,9 +901,9 @@ MCd(1,1)(0.9,0.5)(^^30,Ph,2:/OH,5:/NH2) \MCFtitle{Switch solid mode} \begin{verbatim} - MCd(1,.8)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.8)( 0,0.5)(^^30,Ph,4:/Cl,3:/F) sw_solid:=1; ratio_bond_width:=0.08; - MCd(1,.8)( 1, 1)(^^30,Ph,4:/Cl,3:/F) + MCd(1,.8)( 1,0.5)(^^30,Ph,4:/Cl,3:/F) \end{verbatim} \end{minipage} \MCFstructure @@ -888,16 +913,16 @@ MCd(1,1)(0.9,0.5)(^^30,Ph,2:/OH,5:/NH2) \MCFtitle{Switch Expand} \begin{verbatim} - MCd(1,.6)(0,0)(^^30,Ph,4:/COOH,3:/NH2) + MCd(1,.6)(0,0.5)(^^30,Ph,4:/COOH,3:/NH2) sw_expand:=1; - MCd(1,.6)(1,1)(^^30,Ph,4:/COOH,3:/NH2) + MCd(1,.6)(1,0.5)(^^30,Ph,4:/COOH,3:/NH2) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Function MCd} +\MCFtitle{Function MCd (draw)} \begin{verbatim} MCd(a,b)(c,d)(...) a: ratio molecular width/font width @@ -912,7 +937,7 @@ MCd(1,1)(0.9,0.5)(^^30,Ph,2:/OH,5:/NH2) \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Function MCf} +\MCFtitle{Function MCf (fit draw)} \begin{verbatim} MCf(...) : MCd(1,1)(0.5,0.5)(...) 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 16298f169c3..8d911ba9f26 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/doc/metapost/mcf2graph/mcf_mplib_exa.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex index 63286aa6549..a1cebda9941 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2015.8.18 +% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2015.9.06 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass{article} %------------------------------------------------------------------------------- @@ -60,8 +60,8 @@ \unitlength=1mm %------------------------------------------------------------------------------------ \begin{document} -{\LARGE MCF example for luamplib(LuaLaTeX) }% - \hspace{20mm}by Akira Yamaji 2015.8.18\vspace{6mm}\\ +{\Large\bf MCF example for luamplib(LuaLaTeX) }% + \hspace{10mm} by Akira Yamaji 2015.9.06\vspace{6mm}\\ %------------------------------------------------------------------------------------ {{\small {\tt FM(C) :} molecular formula calculated by mcf2graph}\\ {{\small {\tt MW(C) :} molecular weight calculated by mcf2graph}\\ @@ -114,7 +114,7 @@ font_wd:=50mm; font_ht:=40mm; beginfont("NO:4","EN:Gibberellin A3","MW:346.37"); MCf(^^12, ?6`1.3,3=??5,9=??7,12\^160`1.6,&8, - 4\^155~zf`-1.2,O,55,//O^180`1,&2~zb, + 4\^155~zf`1.2,O,55,//O^180`1,&2~zb, 5=dl,11=wf,13=wb,7:/COOH,11://Me,1:*/OH,12:/*OH,2:*/Me, @(3^-60,9^60)*/H ) diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index c7beb8ad15a..2bc472f6efd 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 3.61 Copyright (c) 2013-2015 Akira Yamaji +% mcf2graph ver 3.63 Copyright (c) 2013-2015 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, @@ -46,6 +46,7 @@ sw_numberA:=sw_numberB:=sw_mol_frame:=sw_logout:=sw_solid:=sw_expand:=sw_start_v sw_font_frame:=sw_atom_frame:=sw_checklist:=sw_MOLfile:=0; sw_info_file:=sw_info_char:=1; sw_info_lenx:=sw_info_leny:=sw_info_weight:=sw_info_formula:=0; char_num:=str_cnt:=proc_end:=0; +numberA_start:=1; numberA_end:=4095; numberB_start:=1; numberB_end:=4095; if known green: f_MP:=1; mp_log_name:=jobname&"-info.aux"; if ahlength=1: proc_end:=1; fi % first molecular only @@ -82,6 +83,7 @@ def def_com(expr n)(text tx)= nA:=n; forsuffixes list=tx:: list:=nA; nA:=nA+1; e def_com(-4000)(_term,_jp_atom,_jp_atom_abs,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_chg_line, _dl,_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, + _skeletonA_end,_skeletonB_end, _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,zf,zb,ov,dt,no,ar,vf,vb,wv,nl); %------------------------------------------------------------------------------------------------- @@ -92,7 +94,7 @@ def parameter_list= ratio_chain_ring,offset_atom,offset_atom#,max_bond_width,ratio_bondgap_bond,ratio_zebra_black, ratio_zebragap_bond,ratio_wedge_bond,ratio_atomgap_atom,offset_wedge,offset_wedge#, offset_zebra_gap,offset_zebra_gap#,offset_bond_gap,offset_bond_gap#, - offset_thickness,offset_thickness# + offset_thickness,offset_thickness#,numberA_start,numberA_end,numberB_start,numberB_end enddef; %------------------------------------------------------------------------------------------------- nA:=0; for list=parameter_list: stock_p[incr nA]:=list; endfor @@ -126,15 +128,16 @@ def endfont= if proc_end=1: scantokens("bye"); fi enddef; %------------------------------------------------------------------------------------------------- -def size_setup= BL# := font_wd#*ratio_bond_width; - wedge_wd# := ratio_wedge_bond*BL#+offset_wedge#; - zebra_gap# := ratio_zebragap_bond*BL#+offset_zebra_gap#; - AL# := ratio_atom_bond*BL#+offset_atom#; - gap# := ratio_bondgap_bond*BL#+offset_bond_gap#; - bond_pen_wd# := ratio_thickness_bond*BL#+offset_thickness#; - char_pen_wd# := ratio_char_bond*bond_pen_wd#; - define_pixels(BL,zebra_gap,wedge_wd,AL,gap,bond_pen_wd,char_pen_wd,font_wd,font_ht); - font_size_setup; +def size_setup= + BL# := font_wd#*ratio_bond_width; + wedge_wd# := ratio_wedge_bond*BL#+offset_wedge#; + zebra_gap# := ratio_zebragap_bond*BL#+offset_zebra_gap#; + AL# := ratio_atom_bond*BL#+offset_atom#; + gap# := ratio_bondgap_bond*BL#+offset_bond_gap#; + bond_pen_wd# := ratio_thickness_bond*BL#+offset_thickness#; + char_pen_wd# := ratio_char_bond*bond_pen_wd#; + define_pixels(BL,zebra_gap,wedge_wd,AL,gap,bond_pen_wd,char_pen_wd,font_wd,font_ht); + font_size_setup; enddef; %------------------------------------------------------------------------------------------------- def scaling= min_x:=min_y:= 4095.999; max_x:=max_y:=-4095.999; @@ -167,7 +170,7 @@ enddef; for i=1 upto 128: f_FON[i]=0; endfor asc0:=ASCII("0"); asc9:=ASCII("9"); def font_use_check= for i=1 upto 128: if f_FON[i]<>0: f_FON[i]:=0; fi endfor - if (sw_numberA=1)or(sw_numberB=1): for j=asc0 upto asc9: f_FON[j]:=1; endfor + if (sw_numberA>=1)or(sw_numberB>=1): for j=asc0 upto asc9: f_FON[j]:=1; endfor else: for i=1 upto cntA: if strA[i]<>0: for j=0 upto length(com_str[strA[i]])-1: f_FON[ASCII(pic_c(j,com_str[strA[i]]))]:=1; endfor fi endfor fi enddef; @@ -243,7 +246,8 @@ def $$(text t)(expr e) = begingroup save cntBS; cntBS:=0; ab_num:=ab_num+1; enddef; %------------------------------------------------------------------------------------------------- def PA(expr b,c)= comMC[ab_num][incr cntAS]:=b; parMC[ab_num][cntAS]:=c; enddef; -def @@(text t)(expr s)= begingroup save cntAS; cntAS:=0; ab_num:=ab_num+1; +def @@(text t)(expr s)= + begingroup save cntAS; cntAS:=0; ab_num:=ab_num+1; if known s:: if numeric s:: if (s>=H)and(s<=U):: for list==t:: PA(_set_adr,list) PA(_chg_atom,s) endfor elseif s==NH:: for list==t:: @@ -277,37 +281,46 @@ def ps_get(expr n)= cntC:=cntMC[0]; cntPS:=cntP; if ps_rot[i]<>0: PS(_rot_ang,ps_rot[i]) fi if ps_env[i]<>hz: PS(_chg_env,ps_env[i]) fi if (ps_line[i]<>0)and(ps_line[i]<>nl): PS(_tmp_line,ps_line[i]) fi - if ps_len[i]<>chainRT: PS(_tmp_len,ps_len[i]) fi PS(_chg_len,chainRT) + if ps_len[i]<>crR: PS(_tmp_len,ps_len[i]) fi PS(_chg_len,crR) if ps_line[i]<>nl: if ps_line[i]=no: PS(_adj_ang,0) fi PS(_mk_bond,0) fi for j=1 upto cntMC[ps_com[i]]: PS(comMC[ps_com[i]][j],parMC[ps_com[i]][j]) endfor PS(_pop,1) PS(_term,0) endfor - proc_atom(cntC+1); if cntP>cntPS: ps_get(cntPS+1); fi + proc_bond_atom(cntC+1); if cntP>cntPS: ps_get(cntPS+1); fi enddef; %------------------------------------------------------------------------------------------------- def AUX(expr a,b)(text s)=s addto chem_structure also currentpicture shifted(a,b); clearit; enddef; -def MCf(text s)= MCd(1,1)(.5,.5)(s); enddef; -%------------------------------------------------------------------------------------------------- +def MCf(text s)= MCd(1,1)(.5,.5)(s); enddef; % MC fill draw +%-- MC draw -------------------------------------------------------------------------------------- def MCd(expr RW,RH)(expr FW,FH)(text s)= if f_beginchar=0: beginchar(char_num,font_wd#,font_ht#,0); clearit; f_beginchar:=1; fi - mc_num:=user_def_number; ab_num:=ab_def_number; chainRT:=-ratio_chain_ring; + mc_num:=user_def_number; ab_num:=ab_def_number; crR:=-ratio_chain_ring; adrA:=adrB:=cntA:=cntB:=adrS:=cntPS:=angA[0]:=angB[0]:=br_ang[0]:=sB[0]:=cntC:=cntP:=0; stkA[0]:=stkB[0]:=stkL[0]:=stkM[0]:=strAT:=f_lineT:=f_lenT:=f_envT:=f_rotT:=0; eB[0]:=1; com_str[0]:=""; lineT:=si; str_cnt:=2000; posA[0]:=posB[0]:=posB[1]:=(0,0); - if (sw_numberA=1)or(sw_numberB=1): - ratio_atom_bond:=0.25; ratio_thickness_bond:=0.005; offset_atomn:=0; fi + if (sw_numberA>=1)or(sw_numberB>=1): ratio_atom_bond:=0.25; fi if (sw_expand=1)or(sw_MOLfile=1): expand_set; fi - ''(0)(s,(_term,0)); proc_atom(1); if cntP>0: ps_get(1); fi font_use_check; - if sw_solid=1: size_setup; proc_skelton; scaling; - else: size_setup; proc_skelton; scaling; resize(RW,RH); size_setup; + ''(0)(s,(_term,0)); proc_bond_atom(1); cntA_skeleton:=cntA; cntA_skeleton:=cntB; + if cntP>0: ps_get(1); fi + font_use_check; + if sw_solid=1: size_setup; proc_skeleton; scaling; + else: size_setup; proc_skeleton; scaling; resize(RW,RH); size_setup; if ratio_bond_width>max_bond_width: - ratio_bond_width:=max_bond_width; size_setup; proc_skelton; scaling; - else: for i=1 upto 4: proc_skelton; scaling; resize(RW,RH); size_setup; endfor fi fi + ratio_bond_width:=max_bond_width; size_setup; proc_skeleton; scaling; + else: for i=1 upto 4: proc_skeleton; scaling; resize(RW,RH); size_setup; endfor fi fi font_setup; - for i=1 upto cntB: put_bond(i,sB[i],eB[i],angB[i],lineB[i]); endfor + for i=1 upto cntB: draw_bond(i,sB[i],eB[i],angB[i],lineB[i]); endfor for i=1 upto cntA: - if sw_numberA=1: put_string(i,posA[i],0,decimal(i),1); elseif sw_numberB=1: - else: put_string(i,posA[i],br_ang[i],com_str[strA[i]],strW[strA[i]]); fi endfor + if numberA_end=_skeletonA_end: numberA_end:=cntA_skeleton; fi + if (sw_numberA>=1)and(i>=numberA_start)and(i<=numberA_end): + if sw_numberA=2: nA:=i-numberA_start+1; + elseif sw_numberA=3: if numberA_end=1: + else: draw_atom(i,posA[i],br_ang[i],com_str[strA[i]],strW[strA[i]]); + fi + endfor sft_X:=-min_x+(font_wd-len_x)*FW; sft_Y:=-min_y+(font_ht-len_y)*FH; if sw_mol_frame=1: AUX(sft_X,sft_Y)(draw_frame(len_x,len_y,(min_x,min_y),0.2pt);) fi if sw_start_vector=1: AUX(sft_X,sft_Y)(start_vector) fi @@ -322,15 +335,15 @@ def start_vector= draw (posA[1] shifted (-1mm,0))--(posA[1] shifted (-4mm,0)) fill (posA[1] shifted (-2mm,-1mm))--posA[1]--(posA[1] shifted (-2mm,1mm))--cycle; enddef; %------------------------------------------------------------------------------------------------ -def proc_atom(expr n)= - f_Br:=f_En:=f_T:=rotT:=adrS:=f_lineT:=f_rotT:=f_lenT:=f_envT:=envT:=env:=0; - stkL[0]:=B_len:=chainRT; lenT:=chainRT; stkA[1]:=stkB[1]:=1; +def proc_bond_atom(expr n)= + f_bra:=f_end:=f_term:=rotT:=adrS:=f_lineT:=f_rotT:=f_lenT:=f_envT:=envT:=env:=0; + stkL[0]:=bondL:=crR; lenT:=crR; stkA[1]:=stkB[1]:=1; for i=n upto cntMC[0]: com:= comMC[0][i]; par:=parMC[0][i]; if com=_push: - if par=1: stkL[adrS]:=B_len; stkA[incr adrS]:=adrA:=cntA; stkB[adrS]:=adrB:=cntB; - elseif par=0: temp_len:=B_len; fi - elseif com=_pop: if par=1: adrA:=stkA[decr adrS]; adrB:=stkB[adrS]; B_len:=stkL[adrS]; - elseif par=0: B_len:=temp_len; fi + if par=1: stkL[adrS]:=bondL; stkA[incr 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]; 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; @@ -339,30 +352,28 @@ def proc_atom(expr n)= 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=_jp_bond: tempB:=getB(par); sB[cntB+1]:=sB[tempB]; f_Br:=1; - elseif com=0or_jp_atom: termA; sB[cntB+1]:=getA(par); f_Br:=1; - elseif com=_jp_atom_abs: sB[cntB+1]:=par; f_Br:=1; temp_cntB:=cntB; + 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; elseif com=_chg_atom: strA[getA(adrT)]:=parMC[par][1]; - elseif com=_chg_len: if par=_ring_len: B_len:=ring_len; - elseif par=0: - if lenT<>chainRT: B_len:=lenT; else: if B_len<0: B_len:=1; fi fi - else: B_len:=par; fi - elseif com=_get_len: if par=0: if B_len=chainRT: B_len:=lenT; fi - else: ring_len:=lenB[getB(par)]; fi - elseif com=_tmp_len: lenT:=par; + elseif com=_chg_len: if par=_ring_len: bondL:=ringL; + elseif par=0: if lenT<>crR: bondL:=lenT; else: if bondL<0: bondL:=1; fi fi + else: bondL:=par; fi + elseif com=_get_len: if par=0: if bondL=crR: bondL:=lenT; fi else: ringL:=lenB[getB(par)]; fi + elseif com=_tmp_len: lenT:=par; elseif com=_set_line: lineB[getB(adrT)]:=par; elseif com=_dl: lineB[getB(par)]:=dl; elseif (com=_chg_line)or(com=_tmp_line): lineT:=par; elseif com=_tmp_rot: rotT:=par; - elseif com=_cyc: f_En:=getA(par); add_atom; - elseif com=_cyc_eB: f_En:=eB[getB(par)]; add_atom; - elseif com=_cyc_sB: f_En:=sB[getB(par)]; add_atom; + elseif com=_cyc: f_end:=getA(par); add_atom; + elseif com=_cyc_eB: f_end:=eB[getB(par)]; add_atom; + elseif com=_cyc_sB: f_end:=sB[getB(par)]; add_atom; elseif com=_chg_env: env:=par; elseif com=_tmp_env: envT:=par; elseif com=_set_clr: if par=1: if lineT<>si: f_lineT:=1; fi if rotT<>0: f_rotT:=1; fi - if lenT<>chainRT: f_lenT:=1; fi if envT<>hz: f_envT:=1; fi fi - if par=0: f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=envT:=0; lineT:=si; lenT:=chainRT; fi + if lenT<>crR: f_lenT:=1; fi if envT<>hz: f_envT:=1; fi fi + if par=0: f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=envT:=0; lineT:=si; lenT:=crR; fi elseif com=_term: termA; elseif com=_set_colorA: colorA[getA(adrT)]:=par; elseif com=_set_colorB: colorB[getB(adrT)]:=par; @@ -370,45 +381,48 @@ def proc_atom(expr n)= endfor enddef; %------------------------------------------------------------------------------------------------- -def ps_put(expr n,p)= ps_adr[incr cntP]:=n; ps_com[cntP]:=p; ps_len[cntP]:=lenT; +def ps_put(expr n,p)= + ps_adr[incr cntP]:=n; ps_com[cntP]:=p; ps_len[cntP]:=lenT; ps_line[cntP]:=lineT; ps_rot[cntP]:=rotT; ps_env[cntP]:=envT; - if f_lineT=0: lineT:=si; fi if f_lenT=0: lenT:=chainRT; 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 add_atom= lineB[incr cntB]:=lineT; lineT:=si; - if lenT=chainRT: lenB[cntB]:=B_len; else: lenB[cntB]:=lenT; lenT:=chainRT; fi - if f_Br=0: cntA:=cntA+1; sB[cntB]:=cntA; strA[cntA]:=strAT; strAT:=0; - if f_MP=1: colorA[cntA]:=colorB[cntA]:=0; fi else: f_Br:=0; fi - if f_En=0: eB[cntB]:=cntA+1; f_T:=0; else: eB[cntB]:=f_En; f_En:=0; f_T:=1; fi +def add_atom= + lineB[incr cntB]:=lineT; lineT:=si; + if lenT=crR: lenB[cntB]:=bondL; else: lenB[cntB]:=lenT; lenT:=crR; fi + if f_bra=0: cntA:=cntA+1; sB[cntB]:=cntA; strA[cntA]:=strAT; strAT:=0; + if f_MP=1: colorA[cntA]:=colorB[cntA]:=0; fi else: f_bra:=0; fi + if f_end=0: eB[cntB]:=cntA+1; f_term:=0; else: eB[cntB]:=f_end; f_end:=0; f_term:=1; fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -def proc_skelton= stkA[1]:=stkB[1]:=1; envT:=env:=f_lineT:=f_rotT:=f_lenT:=f_envT:=0; - adrA:=adrB:=cntA:=cntB:=angT:=adrS:=f_En:=f_Br:=rotT:=f_T:=0; +def proc_skeleton= + stkA[1]:=stkB[1]:=1; envT:=env:=f_lineT:=f_rotT:=f_lenT:=f_envT:=0; + adrA:=adrB:=cntA:=cntB:=angT:=adrS:=f_end:=f_bra:=rotT:=f_term:=0; for i=1 upto cntMC[0]: com:=comMC[0][i]; par:=parMC[0][i]; if com=_push: if par=1: stkM[adrS]:=env; adrS:=adrS+1; stkA[adrS]:=adrA:=cntA; stkB[adrS]:=adrB:=cntB; - elseif par=0: temp_len:=B_len; fi + elseif par=0: temp_len:=bondL; fi elseif com=_pop: if par=1: adrA:=stkA[decr adrS]; adrB:=stkB[adrS]; env:=stkM[adrS]; - elseif par=0: temp_len:=B_len; fi + 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_Br:=1; rotT:=0; + angT:=angB[tempB]-180; f_bra:=1; rotT:=0; elseif com=0or_jp_atom: termB; adrT:=getA(par); posB[cntB+1]:=posA[adrT]; - angT:=br_ang[adrT]; f_Br:=1; rotT:=0; + angT:=br_ang[adrT]; f_bra:=1; rotT:=0; elseif com=_jp_atom_abs: adrT:=par; posB[cntB+1]:=posA[adrT]; - angT:=br_ang[adrT]; f_Br:=1; rotT:=0; temp_cntB:=cntB; + angT:=br_ang[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_B(par); + 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=_chg_env: env:=par; elseif com=_tmp_env: envT:=par; - elseif com=_set_clr: f_clr:=par; if par=0: lineT:=si; lenT:=chainRT; rotT:=envT:=0; fi - elseif com=_cyc: f_En:=1; proc_cyc(getA(par)); - elseif com=_cyc_sB: f_En:=1; proc_cyc(sB[getB(par)]); - elseif com=_cyc_eB: f_En:=1; proc_cyc(eB[getB(par)]); + elseif com=_set_clr: f_clr:=par; if par=0: lineT:=si; lenT:=crR; rotT:=envT:=0; fi + elseif com=_cyc: f_end:=1; proc_cyc(getA(par)); + elseif com=_cyc_sB: f_end:=1; proc_cyc(sB[getB(par)]); + elseif com=_cyc_eB: f_end:=1; proc_cyc(eB[getB(par)]); elseif com=_term: termB; fi endfor @@ -418,29 +432,31 @@ vardef getA(expr n)= if n>=1: stkA[adrS+1]+n elseif n<=-1: cntA+n+1 elseif n>0: stkA[adrS]+2048n elseif n<0: -2048n fi enddef; vardef getB(expr n)= if n>=1: stkB[adrS+1]+n elseif n<=-1: cntB+n+1 elseif n=0: tempB elseif n>0: stkB[adrS]+2048n elseif n<0: -2048n fi enddef; -def termA= if f_T=0: if f_Br=0: strA[incr cntA]:=strAT; strAT:=0; - if f_MP=1: colorA[cntA]:=0; fi else: f_Br:=0; fi f_T:=1; fi enddef; -def termB= if f_T=0: if f_Br=0: br_ang[incr cntA]:=angT; else: f_Br:=0; fi f_T:=1; fi enddef; -def proc_cyc(expr n)= add_B(angle(posA[n]-posB[cntB+1])-angT); enddef; +def termA= if f_term=0: if f_bra=0: strA[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: br_ang[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 glu_c(expr n)= if strA[n]<>0: nB:=angT mod 180; nC:=.5strW[strA[n]]*AL; if (nB<45)or(nB>135):glu:=glu+((sind(nB)*nC)++nC); else :glu:=glu+((cosd(nB)*.5AL)++.5AL) fi fi enddef; %------------------------------------------------------------------------------------------------- -def add_B(expr m)= +def add_bond(expr m)= cntB:=cntB+1; if m=_arg_ang: tn:=proc_env(angT,env,60,-60); else: tn:=m; fi - if f_Br=0: adrT:=cntA:=cntA+1; posA[cntA]:=posB[cntB]; angA[cntA]:=angT; + if f_bra=0: adrT:=cntA:=cntA+1; posA[cntA]:=posB[cntB]; angA[cntA]:=angT; if tn>=0: br_ang[cntA]:=angT+tn/2-90; else: br_ang[cntA]:=angT+tn/2+90; fi - else: f_Br:=0; fi + else: f_bra:=0; fi angB[cntB]:=angT:=(angT+tn) mod 360; - if f_En=0: if lenB[cntB]=_size_a: posB[cntB+1]:=sfB(posB[cntB],AL,angT); + if f_end=0: if lenB[cntB]=_size_a: posB[cntB+1]:=sfB(posB[cntB],AL,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*BL+glu,angT); fi - posA[cntA+1]:=posB[cntB+1]; f_T:=0; - else: f_En:=0; f_T:=1; fi + posA[cntA+1]:=posB[cntB+1]; f_term:=0; + else: f_end:=0; f_term:=1; fi enddef; %------------------------------------------------------------------------------------------------- -vardef proc_env(expr n,m,a,b)= r:=(n mod 360); +vardef proc_env(expr n,m,a,b)= + r:=(n mod 360); if m>=first_def_number: parMC[m][cntB-temp_cntB-1] 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 @@ -448,7 +464,7 @@ vardef proc_env(expr n,m,a,b)= r:=(n mod 360); enddef; %------------------------------------------------------------------------------------------------- def pic_c(expr i,s)= substring(i,i+1) of s enddef; -def put_string(expr n,p,r,s,w)= +def draw_atom(expr n,p,r,s,w)= if ((r mod 360)<=90+1)or((r mod 360)>=270-1): dx:=1; else: dx:=-1; fi pairT:=p-(.5AL*w*dx,.5AL); u:=j:=0; for i=0 upto length(s)-1: nB:=ASCII(pic_c(i,s)); @@ -458,7 +474,7 @@ def put_string(expr n,p,r,s,w)= elseif nB=hat: if u=0: u:= .5; else:u:=0; fi; elseif (nB<>par_s)and(nB<>par_e): nA:=atom_w[nB]; pairA:=pairT+(.5*((dx-1)*nA),u*AL); if sw_atom_frame=1: draw_frame(nA,AL,pairA,0.01pt); fi - if (sw_numberA=1)or(sw_numberB=1): + if (sw_numberA>=1)or(sw_numberB>=1): erase fill unitsquare xscaled nA yscaled AL shifted pairA wpcs 0.01pt; fi addto currentpicture also atom_font[nB] shifted (pairA-(0,atom_d[nB])) Cp(colorA[n]); pairT:=pairT+(nA*dx,0); fi endfor @@ -474,7 +490,8 @@ def z_put(expr PA,PB,PD,CL)= save nA,nC,nD; nC:=length(Le-Ls); fill nA[PB,PA]--nA[PD,PA]--nD[PD,PA]--nD[PB,PA]--cycle Cp(CL); endfor enddef; def cut_off(expr p,w,h,s)= p intersectionpoint sqr(1.1w,1.1h) shifted (s-(.5(1.1w),.5(1.1h))); enddef; -def clipping(expr SA,SB,PA,PB,LEN)= pT:=PA--PB; tn:=0.6AL/LEN; +def clipping(expr SA,SB,PA,PB,LEN)= + pT:=PA--PB; tn:=0.6AL/LEN; if (SA=0)and(SB=0): Ls:=PA; Le:=PB; pA:=pB:=pT; pC:=0.1[PA,PB]--0.1[PB,PA]; elseif SA=0: Ls:=PA; Le:=cut_off(pT,AL*strW[SB],AL,PB); pA:=Ls--Le; pB:=Ls--tn[PB,PA]; pC:=0.1[PA,PB]--Le; @@ -484,14 +501,17 @@ def clipping(expr SA,SB,PA,PB,LEN)= pT:=PA--PB; tn:=0.6AL/LEN; pB:=tn[PA,PB]--tn[PB,PA]; pC:=pA:=Ls--Le; fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -def draw_wv= nB:=3bond_pen_wd; nA:=nB/length(Le-Ls); +def draw_wv= + nB:=3bond_pen_wd; nA:=nB/length(Le-Ls); draw Le for i=1 upto 1/nA: if odd(i): ..controls(((i-.5)*nA)[sfB(Le,nB,ap),sfB(Ls,nB,ap)]) else: ..controls(((i-.5)*nA)[sfB(Le,nB,am),sfB(Ls,nB,am)]) fi ..(i*nA)[Le,Ls] endfor ..Ls; enddef; %------------------------------------------------------------------------------------------------- -def put_bond(expr n,BP,EP,ANG,LN)= nC:=length(posA[EP]-posA[BP]); -if (nC>0)and(LN<>0): ww:=wedge_wd; hpt:=.5bond_pen_wd; ap:=ANG+90; am:=ANG-90; - if sw_numberB=1: clipping(0,0,posA[BP],posA[EP],nC); +def draw_bond(expr n,BP,EP,ANG,LN)= +nC:=length(posA[EP]-posA[BP]); +if (nC>0)and(LN<>0): + ww:=wedge_wd; hpt:=.5bond_pen_wd; ap:=ANG+90; am:=ANG-90; + if sw_numberB>=1: clipping(0,0,posA[BP],posA[EP],nC); else: clipping(strA[BP],strA[EP],posA[BP],posA[EP],nC); fi pickup pencircle scaled bond_pen_wd; if known colorB[n]: nB:=colorB[n]; fi @@ -510,7 +530,12 @@ if (nC>0)and(LN<>0): ww:=wedge_wd; hpt:=.5bond_pen_wd; ap:=ANG+90; am:=ANG-90; elseif LN=ov:erase draw 0.15[Ls,Le]--0.85[Ls,Le] wpcs gap; draw pA Cp(nB); elseif LN=vf:draw pA Cp(nB);draw sfB(Le,gap,ANG-150)--Le--sfB(Le,gap,ANG+150) Cp(nB); elseif LN=vb:draw pA Cp(nB);draw sfB(Ls,gap,ANG-30)--Ls--sfB(Ls,gap,ANG+30) Cp(nB); fi - if sw_numberB=1: put_string(n,.5[posA[BP],posA[EP]],0,decimal(n),1); fi fi + if (sw_numberB>=1)and(n>=numberB_start)and(n<=numberB_end): + if sw_numberB=2: nB:=n-numberB_start+1; + elseif sw_numberB=3: if numberB_end