diff options
-rw-r--r-- | Master/texmf-dist/doc/metapost/mcf2graph/README | 3 | ||||
-rw-r--r-- | Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf | bin | 255135 -> 257821 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf | 192 | ||||
-rw-r--r-- | Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf | bin | 218519 -> 261290 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex | 285 | ||||
-rw-r--r-- | Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf | bin | 121013 -> 121154 bytes | |||
-rw-r--r-- | Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 158 |
7 files changed, 476 insertions, 162 deletions
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/README b/Master/texmf-dist/doc/metapost/mcf2graph/README index baee7bb54ab..9ef938a6e31 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.58 / 2015-08-18 + version : 3.59 / 2015-08-23 E-mail : akira.yamaji5@gmail.com Located at : http://mirror.ctan.org/pkg/graphics/mcf2graph Home page : http://molecoding.cocolog-nifty.com/blog/ @@ -112,3 +112,4 @@ ver. 3.55 / 2015-08-04 support luamplib(v2.11), renew mcf_mplib_exa.tex ver. 3.57 / 2015-08-14 improve AUX file format ver. 3.58 / 2015-08-18 improve calculation of molecular formula and weight + ver. 3.59 / 2015-08-23 update MCF syntax manual diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf Binary files differindex 9d831190ce9..7e89736b122 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf 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 73c56ca6c5f..a54ac1373d1 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.7 +% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2015.8.22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% input mcf2graph.mf; %----------------------------------------------------------------------- @@ -8,7 +8,7 @@ font_ht#:=30mm#;% font height max_bond_width:=0.18; %----------------------------------------------------------------------- sw_logout:=0; -sw_frame:=0; +sw_mol_frame:=0; sw_expand:=0; sw_start_vector:=0; %%%%%sw_checklist:=1; @@ -217,43 +217,6 @@ beginfont("EN:Inline definition") MCf(^^30,!3,/'(!,/Me,!,OH),!3) endfont %*********************************************************************** -beginfont("EN:Switwch start vector") - sw_start_vector:=0; - MCd(.7,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) - sw_start_vector:=1; - MCd(.7,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) -endfont -%*********************************************************************** -beginfont("EN:Switwch numberingA") - sw_numberA:=1; - sw_start_vector:=1; - MCf(^^30,?6,-4=?6,-3\,!,?6,#10:/Et) -endfont -%*********************************************************************** -beginfont("EN:Switwch numberingB") - sw_numberB:=1; - sw_start_vector:=1; - MCf(^^30,?6,-4=?6,-3\,!,?6,#10:/Et) -endfont -%*********************************************************************** -beginfont("EN:Switwch Frame") - MCd(.7,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) - sw_frame:=1; - MCd(.7,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) -endfont -%*********************************************************************** -beginfont("EN:Switwch Solid ratio") - MCd(.7,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) - sw_solid:=1; ratio_bond_width:=0.08; - MCd(.7,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) -endfont -%*********************************************************************** -beginfont("EN:Switwch Expand") - MCd(.6,.6)(0, 0)(^^30,Ph,4:/COOH,3:/NH2) - sw_expand:=1; - MCd(.6,.6)(1, 1)(^^30,Ph,4:/COOH,3:/NH2) -endfont -%*********************************************************************** beginfont("EN:Ampicillin") MCf(^^45, ?4,2:N,2=??5,-1:S, @@ -291,13 +254,158 @@ beginfont("EN:Lycorine") ) endfont %*********************************************************************** -beginfont("EN:Gibberellin"); +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, - 11=wf,13=wb,7:/COOH,11://Me,1:*/OH,12:/*OH,2:*/Me, + 5=dl,11=wf,13=wb,7:/COOH,11://Me,1:*/OH,12:/*OH,2:*/Me, @(3^-60,9^60)*/H ) -endfont; +endfont +%*********************************************************************** +font_wd#:=30mm#;% +font_ht#:=20mm#;% +beginfont("EN:Font size") + sw_font_frame:=1; + MCf(^^30, + ?6,-4=??5,$(3,8)dl,@(2,6,7,9)N, + @(2,6,9)/Me,@(1,5)//O) +endfont +font_wd#:=60mm#; +font_ht#:=30mm#; +%*********************************************************************** +beginfont("EN:max_bond_width") + sw_mol_frame:=1; + max_bond_width:=0.10; + MCd(1,1)(0, .5)(^^30,Ph) + max_bond_width:=0.15; + MCd(1,1)(.33, .5)(^^30,Ph) + max_bond_width:=0.30; + MCd(1,1)(1, .5)(^^30,Ph) +endfont +%*********************************************************************** +beginfont("EN:ratio_thickness_bond") + ratio_thickness_bond:=0.005; + MCd(.6,.6)(0, .5)(^^30,Ph) + ratio_thickness_bond:=0.015; + MCd(.6,.6)(.5, .5)(^^30,Ph) + ratio_thickness_bond:=0.03; + MCd(.6,.6)(1, .5)(^^30,Ph) +endfont +%*********************************************************************** +beginfont("EN:ratio_char_bond") + ratio_char_bond:=1.0; + MCd(.6,.6)(0, .5)(^^30,?6,5:O,2:NH) + ratio_char_bond:=1.5; + MCd(.6,.6)(.5, .5)(^^30,?6,5:O,2:NH) + ratio_char_bond:=2.0; + MCd(.6,.6)(1, .5)(^^30,?6,5:O,2:NH) +endfont +%*********************************************************************** +beginfont("EN:ratio_bondgap_bond") + ratio_bondgap_bond:=0.10; + MCd(.6,.6)(0, .5)(^^30,Ph) + ratio_bondgap_bond:=0.15; + MCd(.6,.6)(.5, .5)(^^30,Ph) + ratio_bondgap_bond:=0.20; + MCd(.6,.6)(1, .5)(^^30,Ph) +endfont +%*********************************************************************** +beginfont("EN:ratio_atom_bond") + ratio_atom_bond:=0.25; + MCd(.6,.6)(0, .5)(^^30,?6,@(2,5)O) + ratio_atom_bond:=0.33; + MCd(.6,.6)(.5, .5)(^^30,?6,@(2,5)O) + ratio_atom_bond:=0.45; + MCd(.6,.6)(1, .5)(^^30,?6,@(2,5)O) +endfont +%*********************************************************************** +beginfont("EN:ratio_chain_ring") + ratio_chain_ring:= 0.4; + MCd(.6,.6)(0, .5)(^^30,?6,5:/Et) + ratio_chain_ring:= 0.66; + MCd(.6,.6)(.5, .5)(^^30,?6,5:/Et) + ratio_chain_ring:= 1; + MCd(.6,.6)(1, .5)(^^30,?6,5:/Et) +endfont +%*********************************************************************** +beginfont("EN:ratio_wedge_bond") + ratio_wedge_bond:=0.1; + MCd(.6,.6)(0, .5)(^^30,?6,5:*/Me) + ratio_wedge_bond:=0.15; + MCd(.6,.6)(.5, .5)(^^30,?6,5:*/Me) + ratio_wedge_bond:=0.2;; + MCd(.6,.6)(1, .5)(^^30,?6,5:*/Me) +endfont +%*********************************************************************** +beginfont("EN:ratio_zebra_gap") + ratio_zebra_gap:=0.06; + MCd(.6,.6)(0, .5)(^^30,Ph,5:/*Me`1) + ratio_zebra_gap:=0.12; + MCd(.6,.6)(.5, .5)(^^30,Ph,5:/*Me`1) + ratio_zebra_gap:=0.20; + MCd(.6,.6)(1, .5)(^^30,Ph,5:/*Me`1) +endfont +%*********************************************************************** +beginfont("EN:Switwch start vector") + sw_start_vector:=0; + MCd(.7,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + sw_start_vector:=1; + MCd(.7,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) +endfont +%*********************************************************************** +beginfont("EN:Switwch numberingA") + sw_numberA:=1; + sw_start_vector:=1; + MCf(^^30,?6,-4=?6,-3\,!,?6,#10:/Et) +endfont +%*********************************************************************** +beginfont("EN:Switwch numberingB") + sw_numberB:=1; + sw_start_vector:=1; + MCf(^^30,?6,-4=?6,-3\,!,?6,#10:/Et) +endfont +%*********************************************************************** +beginfont("EN:Switwch font frame") + sw_font_frame:=1; + MCf(^^30,Ph,4:/Cl,3:/F) +endfont +%*********************************************************************** +beginfont("EN:Switwch molecular frame") + MCd(.7,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + sw_mol_frame:=1; + MCd(.7,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) +endfont +%*********************************************************************** +%%beginfont("EN:Switwch atom frame") +%% sw_atom_frame:=1; +%% MCf(^^30,Ph,4:/COOH,3:/OH) +%%endfont +%*********************************************************************** +beginfont("EN:Switwch Solid ratio") + MCd(.7,.7)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + sw_solid:=1; ratio_bond_width:=0.08; + MCd(.7,.7)( 1, 1)(^^30,Ph,4:/Cl,3:/F) +endfont +%*********************************************************************** +beginfont("EN:Switwch Expand") + MCd(.6,.6)(0, 0)(^^30,Ph,4:/COOH,3:/NH2) + sw_expand:=1; + MCd(.6,.6)(1, 1)(^^30,Ph,4:/COOH,3:/NH2) +endfont +%*********************************************************************** +beginfont("EN:MCd()") + sw_font_frame:=1; + sw_mol_frame:=1; + MCd(1,.8)(0.2,0.9)(^^30,Ph,2:/OH,5:/NH2) + sw_mol_frame:=1; + MCd(1,.8)(0.8,0.1)(^^30,Ph,2:/OH,5:/NH2) +endfont +%*********************************************************************** +beginfont("EN:MCf()") + sw_font_frame:=1; + sw_mol_frame:=1; + MCf(^^30,Ph,2:/OH,5:/NH2) +endfont %*********************************************************************** bye diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf Binary files differindex 001fc33fdb9..e698bd9a2d8 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex index cbb6bd21c4f..2896e9e0a06 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex @@ -495,59 +495,218 @@ Insert user defined substructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Switch Start Vector} +\MCFtitle{Example(1) Ampicillin} \begin{verbatim} - MCd(.8,.8)( 0, 0)(^^30,Ph,4:/Cl,3:/F) - sw_start_vector:=1; - MCd(.8,.8)( 1, 1)(^^30,Ph,4:/Cl,3:/F) + ^^45, + ?4,2:N,2=??5,-1:S, + @(3^45,4^-45)/*H,1://O^15, + 5:/*COOH^-18,@(6^35,6^-35)/Me, + 4\^75,NH,!,//O,!,NH,!,Ph \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Switch NumberingA} +\MCFtitle{Example(2) Cholesterol} \begin{verbatim} - sw_numberA:=1; - MCf(^^30, - Ph,-4=Ph1,-3\,!,Ph,10:/Et) + ^^30, + ?6,$(-4,-2)??6,-4=??5,7=dl, + 1:*/OH,@(4,12)*/Me^60,9:*/H^60, + 10:/*H^180,@(11,-1)/*H^-60, + -1\^17,/*Me,!4,/Me,!, \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Switch NumberingB} +\MCFtitle{Example(3) alfa-Tocopherol} \begin{verbatim} - sw_numberB:=1; - MCf(^^30, - Ph,-4=Ph1,-3\,!,Ph,10:/Et) + ^^30, + Ph,3=??6, + 7:O,@(1,2,5)/Me,8:/*Me^60,6:/OH, + 8\,!12,@(4,8)/*Me,12:/Me \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Switch Frame} +\MCFtitle{Example(4) Caffeine} \begin{verbatim} - MCd(.8,.8)(0,0)(^^30,Ph,4:/Cl,3:/F) - sw_frame:=1; - MCd(.8,.8)(1,1)(^^30,Ph,4:/Cl,3:/F) + ^^30, + ?6,-4=??5,$(3,8)dl,@(2,6,7,9)N, + @(2,6,9)/Me,@(1,5)//O \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Switch Solid ratio} +\MCFtitle{Example(5) Lycorine} +\begin{verbatim} + + ^^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 +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Example(6) Gibberellin} +\begin{verbatim} + + ^^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, + 5=dl,11=wf,13=wb,7:/COOH,11://Me,1:*/OH, + 12:/*OH,2:*/Me,@(3^-60,9^60)*/H +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Font size} +\begin{verbatim} + font_wd#:=30mm#; + font_ht#:=20mm#; + beginfont("EN:Caffeine") + sw_font_frame:=1; + MCf(^^30,?6,-4=??5,$(3,8)dl,@(2,6,7,9)N, + @(2,6,9)/Me,@(1,5)//O) + endfont +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Max ratio bond/width length} +\begin{verbatim} + max_bond_width:=0.10; + MCd(1,1)(0, .5)(^^30,Ph) + max_bond_width:=0.15; %<<== default ==>> + MCd(1,1)(.33, .5)(^^30,Ph) + max_bond_width:=0.30; + MCd(1,1)(1, .5)(^^30,Ph) +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Ratio thickness/bond length} +\begin{verbatim} +ratio_thickness_bond:= 0.005; +MCd(.6,.6)(0, .5)(^^30,Ph) +ratio_thickness_bond:= 0.015; %<<== default ==>> +MCd(.6,.6)(.5, .5)(^^30,Ph) +ratio_thickness_bond:= 0.030; +MCd(.6,.6)(1, .5)(^^30,Ph) +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Ratio char/bond thickness} +\begin{verbatim} +ratio_char_bond:=1.0; +MCd(.6,.6)(0, .5)(^^30,?6,5:O,2:NH) +ratio_char_bond:=1.5; %<<== default ==>> +MCd(.6,.6)(.5, .5)(^^30,?6,5:O,2:NH) +ratio_char_bond:=2.0; +MCd(.6,.6)(1, .5)(^^30,?6,5:O,2:NH) +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Ratio bondgap/bond length} +\begin{verbatim} +ratio_bondgap_bond:= 0.10; +MCd(.6,.6)(0, .5)(^^30,Ph) +ratio_bondgap_bond:= 0.15; %<<== default ==>> +MCd(.6,.6)(.5, .5)(^^30,Ph) +ratio_bondgap_bond:= 0.20; +MCd(.6,.6)(1, .5)(^^30,Ph) +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Ratio atom/bond length} +\begin{verbatim} +ratio_atom_bond:= 0.25; +MCd(.6,.6)(0, .5)(^^30,?6,@(2,5)O) +ratio_atom_bond:= 0.36; %<<== default ==>> +MCd(.6,.6)(.5, .5)(^^30,?6,@(2,5)O) +ratio_atom_bond:= 0.45; +MCd(.6,.6)(1, .5)(^^30,?6,@(2,5)O) +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Ratio chain/ring length} +\begin{verbatim} +ratio_chain_ring:= 0.4; +MCd(.6,.6)(0, .5)(^^30,?6,5:/Et) +ratio_chain_ring:= 0.66; %<<== default ==>> +MCd(.6,.6)(.5, .5)(^^30,?6,5:/Et) +ratio_chain_ring:= 1.0; +MCd(.6,.6)(1, .5)(^^30,?6,5:/Et) +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Ratio wedge/bond length} +\begin{verbatim} +ratio_wedge_bond:=0.10; +MCd(.6,.6)(0, .5)(^^30,?6,5:*/Me) +ratio_wedge_bond:=0.15; %<<== default ==>> +MCd(.6,.6)(.5, .5)(^^30,?6,5:*/Me) +ratio_wedge_bond:=0.20;; +MCd(.6,.6)(1, .5)(^^30,?6,5:*/Me) +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Ratio zebra gap/bond length} +\begin{verbatim} +ratio_zebra_gap:=0.06; +MCd(.6,.6)(0, .5)(^^30,Ph,5:/*Me`1) +ratio_zebra_gap:=0.12; %<<== default ==>> +MCd(.6,.6)(.5, .5)(^^30,Ph,5:/*Me`1) +ratio_zebra_gap:=0.20; +MCd(.6,.6)(1, .5)(^^30,Ph,5:/*Me`1) +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Switch Start Vector} \begin{verbatim} MCd(.8,.8)( 0, 0)(^^30,Ph,4:/Cl,3:/F) - sw_solid:=1; ratio_bond_width:=0.08; + sw_start_vector:=1; MCd(.8,.8)( 1, 1)(^^30,Ph,4:/Cl,3:/F) \end{verbatim} \end{minipage} @@ -555,92 +714,110 @@ Insert user defined substructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Switch Expand} +\MCFtitle{Switch NumberingA} \begin{verbatim} - MCd(.6,.6)(0,0)(^^30,Ph,4:/COOH,3:/NH2) - sw_expand:=1; - MCd(.6,.6)(1,1)(^^30,Ph,4:/COOH,3:/NH2) + sw_numberA:=1; + MCf(^^30, + Ph,-4=Ph1,-3\,!,Ph,10:/Et) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Example(1) Ampicillin} +\MCFtitle{Switch NumberingB} \begin{verbatim} - ^^45, - ?4,2:N,2=??5,-1:S, - @(3^45,4^-45)/*H,1://O^15, - 5:/*COOH^-18,@(6^35,6^-35)/Me, - 4\^75,NH,!,//O,!,NH,!,Ph + sw_numberB:=1; + MCf(^^30, + Ph,-4=Ph1,-3\,!,Ph,10:/Et) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Example(2) Cholesterol} +\MCFtitle{Switch font frame} \begin{verbatim} - ^^30, - ?6,$(-4,-2)??6,-4=??5,7=dl, - 1:*/OH,@(4,12)*/Me^60,9:*/H^60, - 10:/*H^180,@(11,-1)/*H^-60, - -1\^17,/*Me,!4,/Me,!, + sw_font_frame:=1; + MCf(^^30,Ph,4:/Cl,3:/F) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Example(3) alfa-Tocopherol} +\MCFtitle{Switch molecular frame} \begin{verbatim} - ^^30, - Ph,3=??6, - 7:O,@(1,2,5)/Me,8:/*Me^60,6:/OH, - 8\,!12,@(4,8)/*Me,12:/Me + MCd(.8,.8)(0,0)(^^30,Ph,4:/Cl,3:/F) + sw_mol_frame:=1; + MCd(.8,.8)(1,1)(^^30,Ph,4:/Cl,3:/F) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- +%%\begin{minipage}[t][38mm]{100mm} +%%\MCFtitle{Switch atom frame} +%%\begin{verbatim} +%% +%% sw_atom_frame:=1; +%% MCf(^^30,Ph,4:/COOH,3:/OH) +%%\end{verbatim} +%%\end{minipage} +%%\MCFstructure +%%\vspace{6mm}\\ +%----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Example(4) Caffeine} +\MCFtitle{Switch Solid ratio} \begin{verbatim} - ^^30, - ?6,-4=??5,$(3,8)dl,@(2,6,7,9)N, - @(2,6,9)/Me,@(1,5)//O + MCd(.8,.8)( 0, 0)(^^30,Ph,4:/Cl,3:/F) + sw_solid:=1; ratio_bond_width:=0.08; + MCd(.8,.8)( 1, 1)(^^30,Ph,4:/Cl,3:/F) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Example(5) Lycorine} +\MCFtitle{Switch Expand} \begin{verbatim} - ^^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 + MCd(.6,.6)(0,0)(^^30,Ph,4:/COOH,3:/NH2) + sw_expand:=1; + MCd(.6,.6)(1,1)(^^30,Ph,4:/COOH,3:/NH2) \end{verbatim} \end{minipage} \MCFstructure \vspace{6mm}\\ %----------------------------------------------------------------------------- \begin{minipage}[t][38mm]{100mm} -\MCFtitle{Example(6) Gibberellin} +\MCFtitle{Function MCd} \begin{verbatim} + MCd(1,0.8)(0.2,0.9)(^^30,Ph,2:/OH,5:/NH2) + MCd(1,0.8)(0.8,0.1)(^^30,Ph,2:/OH,5:/NH2) + + MCd(a,b)(c,d)(MCF) + a: ratio molecular width/font width + b: ratio molecular hight/font hight + c: x axis position d:y axis position +\end{verbatim} +\end{minipage} +\MCFstructure +\vspace{6mm}\\ +%----------------------------------------------------------------------------- +\begin{minipage}[t][38mm]{100mm} +\MCFtitle{Function MCf} +\begin{verbatim} + + MCf(^^30,Ph,2:/OH,5:/NH2) + + MCf(MCF) : MCd(1,1)(0.5,0.5)(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, - 11=wf,13=wb,7:/COOH,11://Me,1:*/OH, - 12:/*OH,2:*/Me,@(3^-60,9^60)*/H \end{verbatim} \end{minipage} \MCFstructure diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf Binary files differindex 9b15d30275a..3c4a208015f 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index 0263485267c..8576614b35c 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 3.58 Copyright (c) 2013-2015 Akira Yamaji +% mcf2graph ver 3.59 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, @@ -42,9 +42,10 @@ path pA,pB,pC,pT; string info[],tblA[],com_str[],calc_formula,mp_log_name,mol_name,mol_formula,calc_weight_str; picture atom_font[],chem_structure,temp_picture; %------------------------------------------------------------------------------------------------- -sw_numberA:=sw_numberB:=sw_frame:=sw_logout:=sw_solid:=sw_expand:=sw_start_vector:=0; -sw_atom_frame:=sw_checklist:=sw_MOLfile:=char_num:=str_cnt:=size_changed:=proc_end:=0; -sw_info_file:=sw_info_char:=1; sw_info_lenx:=sw_info_leny:=sw_info_weight:=sw_info_formula:=0; +sw_numberA:=sw_numberB:=sw_mol_frame:=sw_logout:=sw_solid:=sw_expand:=sw_start_vector:=0; +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:=size_changed:=proc_end:=0; if known green: f_MP:=1; mp_log_name:=jobname&"-info.aux"; if ahlength=1: proc_end:=1; fi % first molecular only @@ -69,11 +70,11 @@ clearit; chem_structure:=currentpicture; let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == = =; ?3:=?20:=??3:=??20:=Ph:=Ph1:=Ph2:=ph:=ph1:=ph2:=hz:=0; vt:=1; first_def_number:=500; user_def_number:=2500; ab_def_number:=3000; unit_e:=1/2048; -lr_margin:=tb_margin:=0.4mm; ratio_cr:=-0.66; ratio_atom_bond:=0.33; -ratio_thickness_bond:=0.015; offset_atom#:=0.7pt#; max_bond_width:=0.15; -ratio_pen_wd:=1.4; ratio_bondgap_bond:=0.15; ratio_zebra_gap:=0.12; -ratio_zebra_black:=0.4; ratio_wedge_bond:=0.15; font_gap:=.066; -offset_thick#:=0.2pt#; offset_gap#:=0.3pt#; offset_zebra_gap#:=0.1pt#; +lr_margin:=tb_margin:=0.4mm; ratio_chain_ring:= 0.66; ratio_atom_bond:=0.36; +ratio_thickness_bond:=0.015; offset_atom#:=0.8pt#; max_bond_width:=0.25; +ratio_char_bond:=1.5; ratio_bondgap_bond:=0.15; ratio_zebra_gap:=0.12; +ratio_zebra_black:=0.4; ratio_wedge_bond:=0.15; font_gap:=.066; +offset_thick#:=0.2pt#; offset_gap#:=0.3pt#; offset_zebra_gap#:=0.1pt#; par_s=ASCII("{"); par_e=ASCII("}"); score_u=ASCII("_"); hat=ASCII("^"); max_info_num:=12; for i:=1 upto max_info_num: info[i]:=":"; endfor def def_com(expr n)(text tx)= nA:=n; forsuffixes list=tx:: list:=nA; nA:=nA+1; endfor enddef; @@ -83,15 +84,18 @@ def_com(-4000)(_term,_jp_atom,_jp_atom_abs,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_li _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); %------------------------------------------------------------------------------------------------- -def parameter_list= sw_checklist,sw_numberA,sw_numberB,sw_frame,sw_logout,sw_solid,sw_expand, - sw_MOLfile,sw_start_vector,sw_atom_frame,lr_margin,tb_margin,ratio_atom_bond,ratio_thickness_bond, - ratio_cr,offset_atom,max_bond_width,ratio_pen_wd,ratio_bondgap_bond,ratio_zebra_black, - ratio_zebra_gap,ratio_wedge_bond,font_gap,offset_zebra_gap,offset_gap,offset_thick enddef; +def parameter_list= sw_checklist,sw_numberA,sw_numberB,sw_mol_frame,sw_logout,sw_solid,sw_expand, + sw_MOLfile,sw_start_vector,sw_atom_frame,sw_font_frame, + lr_margin,tb_margin,ratio_atom_bond,ratio_thickness_bond,ratio_char_bond, + ratio_chain_ring,offset_atom,max_bond_width,ratio_bondgap_bond,ratio_zebra_black, + ratio_zebra_gap,ratio_wedge_bond,font_gap,offset_zebra_gap,offset_gap,offset_thick +enddef; %------------------------------------------------------------------------------------------------- nA:=0; for list=parameter_list: st_p[incr nA]:=list; endfor def store_par(text t)= nA:=0; for list=t: if st_p[incr nA]<>list: st_p[nA]:=list; fi endfor enddef; def restore_par(text t)= nA:=0; - forsuffixes list=t: if list<>st_p[incr nA]: list:=st_p[nA]; fi endfor enddef; + forsuffixes list=t: if list<>st_p[incr nA]: list:=st_p[nA]; fi endfor +enddef; %------------------------------------------------------------------------------------------------- def beginfont(text s)= mol_name:=mol_formula:=""; len_x:=len_y:=cntA:=info_num:=mol_weight:=0; store_par(parameter_list); ratio_bond_width:=1mm#/font_wd#; @@ -100,11 +104,11 @@ def beginfont(text s)= mol_name:=mol_formula:=""; len_x:=len_y:=cntA:=info_num: if substring (0,2) of list="FM": mol_formula:=substring (3,length(list)) of list; fi if substring (0,2) of list="MW": mol_weight:=scantokens(substring (3,length(list)) of list); fi endfor - beginchar(char_num,font_wd#,font_ht#,0); clearit; enddef; + beginchar(char_num,font_wd#,font_ht#,0); clearit; +enddef; %------------------------------------------------------------------------------------------------- def endfont= - if sw_frame=1: AUX(draw_frame(len_x,len_y,(min_x,min_y),0.2pt);) fi - if sw_start_vector=1: AUX(start_vector) fi + if sw_font_frame=1: AUX(0,0)(draw_frame(font_wd,font_ht,(0,0),0.2pt);) fi if (sw_logout=1)or(sw_checklist=1)or(sw_MOLfile=1): mol_check; fi if sw_logout=1: logfile_out; fi if sw_checklist=1: checklist_out; fi @@ -116,15 +120,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#; +def size_setup= BL# := font_wd#*ratio_bond_width; + wedge_wd# := ratio_wedge_bond*BL#; zebra_gap# := ratio_zebra_gap*BL#+offset_zebra_gap#; - AL# := ratio_atom_bond*BL#+offset_atom#; - gap# := ratio_bondgap_bond*BL#+offset_gap#; - pen_wd# := ratio_thickness_bond*BL#+offset_thick#; - Apen_wd# := ratio_pen_wd*pen_wd#; - define_pixels(BL,zebra_gap,wedge_wd,AL,gap,pen_wd,Apen_wd,font_wd,font_ht); - font_size_setup; enddef; + AL# := ratio_atom_bond*BL#+offset_atom#; + gap# := ratio_bondgap_bond*BL#+offset_gap#; + bond_pen_wd# := ratio_thickness_bond*BL#+offset_thick#; + 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; for i=1 upto cntA: xpos:=xpart(posA[i]); ypos:=ypart(posA[i]); @@ -150,14 +155,16 @@ enddef; def resize(expr WD,HT)= if (len_y/len_x)>(font_ht/font_wd): factor:=(font_ht*HT-2tb_margin)/len_y; else: factor:=(font_wd*WD-2lr_margin)/len_x; fi - ratio_bond_width:=ratio_bond_width*factor; len_x:=len_x*factor; len_y:=len_y*factor; enddef; + ratio_bond_width:=ratio_bond_width*factor; len_x:=len_x*factor; len_y:=len_y*factor; +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 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; + f_FON[ASCII(pic_c(j,com_str[strA[i]]))]:=1; endfor fi endfor fi +enddef; %------------------------------------------------------------------------------------------------- vardef '(text s)= ''(incr mc_num)(s); mc_num enddef; def set_def_MC= @@ -198,14 +205,16 @@ enddef; %------------------------------------------------------------------------------------------------- def !?(expr a)(expr b)(expr c) = PB(_jp_bond,a) PB(_get_len,a) PB(_push,c) PB(_chg_len,_ring_len) for i==1 upto b-2:: PB(_mk_bond,360 DIV b) endfor PB(_pop,c) - if a>=1:: PB(_cyc_eB,0) elseif a<=0:: PB(_cyc_eB,a-b+2) else:: PB(_cyc_eB,a) fi enddef; + if a>=1:: PB(_cyc_eB,0) elseif a<=0:: PB(_cyc_eB,a-b+2) else:: PB(_cyc_eB,a) fi +enddef; %------------------------------------------------------------------------------------------------- def !!?(expr a)(expr b)(expr c)(expr n) = PB(_jp_bond,xpart(a)) PB(_push,n) if b==6:: PB(_chg_len,0) for i==1 upto c-1:: PB(_mk_bond,60) endfor elseif b==5:: if c==2:: PB(_chg_len,1.25) PB(_mk_bond,80) elseif c==3:: PB(_chg_len,1.1) PB(_mk_bond,78) PB(_mk_bond,72) fi elseif b==4:: PB(_chg_len,1.225) PB(_mk_bond,105) fi - PB(_pop,n) if ypart(a)<=0:: PB(_cyc_eB,ypart(a)-c+1) else:: PB(_cyc_eB,ypart(a)) fi enddef; + PB(_pop,n) if ypart(a)<=0:: PB(_cyc_eB,ypart(a)-c+1) else:: PB(_cyc_eB,ypart(a)) fi +enddef; %------------------------------------------------------------------------------------------------- def PB(expr b,c)= comMC[ab_num][incr cntBS]:=b; parMC[ab_num][cntBS]:=c; enddef; def $$(text t)(expr e) = begingroup save cntBS; cntBS:=0; ab_num:=ab_num+1; @@ -262,17 +271,19 @@ 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]<>ratio_cr: PS(_tmp_len,ps_len[i]) fi PS(_chg_len,ratio_cr) + if ps_len[i]<>chainRT: PS(_tmp_len,ps_len[i]) fi PS(_chg_len,chainRT) 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 enddef; + proc_atom(cntC+1); if cntP>cntPS: ps_get(cntPS+1); fi +enddef; %------------------------------------------------------------------------------------------------- -def AUX(text s)=s addto chem_structure also currentpicture shifted(sft_X,sft_Y); clearit; 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 MCd(expr RW,RH)(expr FW,FH)(text s)= mc_num:=user_def_number; ab_num:=ab_def_number; +def MCd(expr RW,RH)(expr FW,FH)(text s)= + mc_num:=user_def_number; ab_num:=ab_def_number; chainRT:=-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); @@ -291,19 +302,22 @@ def MCd(expr RW,RH)(expr FW,FH)(text s)= mc_num:=user_def_number; ab_num:=ab_ 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 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 addto chem_structure also currentpicture shifted (sft_X,sft_Y); clearit; enddef; %------------------------------------------------------------------------------------------------ -def draw_frame(expr LX,LY,PS,PN)= - draw unitsquare xscaled LX yscaled LY shifted PS wpcs PN; enddef; +def draw_frame(expr LX,LY,PS,PN)= draw unitsquare xscaled LX yscaled LY shifted PS wpcs PN; +enddef; def start_vector= draw (posA[1] shifted (-1mm,0))--(posA[1] shifted (-4mm,0)) - withpen penrazor rotated 90 scaled .8mm; - fill (posA[1] shifted (-2mm,-1mm))--posA[1]--(posA[1] shifted (-2mm,1mm))--cycle; enddef; + withpen penrazor rotated 90 scaled .8mm; + 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:=ratio_cr; lenT:=ratio_cr; stkA[1]:=stkB[1]:=1; + stkL[0]:=B_len:=chainRT; lenT:=chainRT; 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; @@ -324,10 +338,10 @@ def proc_atom(expr n)= 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<>ratio_cr: B_len:=lenT; else: if B_len<0: B_len:=1; fi fi + 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=ratio_cr: B_len:=lenT; fi - else: ring_len:=lenB[getB(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=_set_line: lineB[getB(adrT)]:=par; elseif com=_dl: lineB[getB(par)]:=dl; @@ -340,8 +354,8 @@ def proc_atom(expr n)= 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<>ratio_cr: 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:=ratio_cr; 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 elseif com=_term: termA; elseif com=_set_colorA: colorA[getA(adrT)]:=par; elseif com=_set_colorB: colorB[getB(adrT)]:=par; @@ -351,14 +365,16 @@ enddef; %------------------------------------------------------------------------------------------------- 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:=ratio_cr; fi - if f_rotT=0: rotT:=0; fi if f_envT=0: envT:=hz; fi enddef; + if f_lineT=0: lineT:=si; fi if f_lenT=0: lenT:=chainRT; 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=ratio_cr: lenB[cntB]:=B_len; else: lenB[cntB]:=lenT; lenT:=ratio_cr; fi + 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 enddef; + if f_En=0: eB[cntB]:=cntA+1; f_T:=0; else: eB[cntB]:=f_En; f_En:=0; f_T:=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; @@ -382,11 +398,11 @@ def proc_skelton= stkA[1]:=stkB[1]:=1; envT:=env:=f_lineT:=f_rotT:=f_lenT:=f_en 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:=ratio_cr; rotT:=envT:=0; fi + 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=_term: termB; + elseif com=_term: termB; fi endfor enddef; @@ -401,7 +417,8 @@ def termB= if f_T=0: if f_Br=0: br_ang[incr cntA]:=angT; else: f_Br:=0; fi f_T:= def proc_cyc(expr n)= add_B(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; + else :glu:=glu+((cosd(nB)*.5AL)++.5AL) fi fi +enddef; %------------------------------------------------------------------------------------------------- def add_B(expr m)= cntB:=cntB+1; if m=_arg_ang: tn:=proc_env(angT,env,60,-60); else: tn:=m; fi @@ -420,7 +437,8 @@ 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 - elseif (m>=-180)and(m<=180): m fi fi enddef; + elseif (m>=-180)and(m<=180): m fi fi +enddef; %------------------------------------------------------------------------------------------------- def pic_c(expr i,s)= substring(i,i+1) of s enddef; def put_string(expr n,p,r,s,w)= @@ -436,7 +454,8 @@ def put_string(expr n,p,r,s,w)= 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 enddef; + pairT:=pairT+(nA*dx,0); fi endfor +enddef; %------------------------------------------------------------------------------------------------- def wpcs expr n= withpen pencircle scaled n enddef; def sqr(expr WD,HT)= ((0,0)--(WD,0)--(WD,HT)--(0,HT)--cycle) enddef; @@ -455,18 +474,19 @@ def clipping(expr SA,SB,PA,PB,LEN)= pT:=PA--PB; tn:=0.6AL/LEN; elseif SB=0: Ls:= cut_off(pT,AL*strW[SA],AL,PA); Le:=PB; pA:=Ls--Le; pB:=tn[PA,PB]--Le; pC:=Ls--(0.1)[PB,PA]; else: Ls:=cut_off(pT,AL*strW[SA],AL,PA); Le:=cut_off(pT,AL*strW[SB],AL,PB); - pB:=tn[PA,PB]--tn[PB,PA]; pC:=pA:=Ls--Le; fi enddef; + pB:=tn[PA,PB]--tn[PB,PA]; pC:=pA:=Ls--Le; fi +enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -def draw_wv= nB:=3pen_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:=.5pen_wd; ap:=ANG+90; am:=ANG-90; +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 pen_wd; + pickup pencircle scaled bond_pen_wd; if known colorB[n]: nB:=colorB[n]; fi if LN=si:draw pA Cp(nB); elseif LN=dl:draw pA Cp(nB); draw sfB(pC,gap,ap) Cp(nB); @@ -539,13 +559,15 @@ enddef; def font_size_set(expr m)(expr n)(expr o)(expr s)=% for j=0 upto length(s)-1: num_a:=ASCII(pic_c(j,s)); if f_FON[num_a]=1: atom_w[num_a]:=m*AL; atom_h[num_a]:=n*AL; atom_d[num_a]:=o*AL; fi - endfor enddef; + endfor +enddef; def font_size_setup= font_size_set( 1)( 1)(0)("CGHMNOQ"); font_size_set( .9)( 1)(0)("ABDEFIJKLPRSTUVWXYZ-+/><m"); font_size_set( .7)( 1)(0)(" ()0123456789nhj=*bdiltf"); font_size_set( .7)( 1)(.15)("pqg"); font_size_set( .7)( .8)(0)("acekosuvxzwry"); - font_size_set( .4)( 1)(0)(".,:;'`"); enddef; + font_size_set( .4)( 1)(0)(".,:;'`"); +enddef; %------------------------------------------------------------------------------------------------ def SP(expr a,b)expr p=subpath(a*length(p),b*length(p)) of p enddef; def vL= withpen penrazor scaled fP enddef; def hL= withpen penrazor rotated 90 scaled fP enddef; @@ -561,9 +583,10 @@ if f_FON[ASCII(c)]=1: z10=(fW,hH); z12=( 0,fH); z13=(hP,fH); z14=(hW,fH); z16=(aW,fH); z18=(hP,aH); z19=(hW,hP); s; atom_font[ASCII(c)]:=currentpicture shifted (font_gap*AL,font_gap*AL); - clearxy; save x,y; clearit; fi enddef; + clearxy; save x,y; clearit; fi +enddef; %------------------------------------------------------------------------------------------------- -def font_setup= pickup pencircle scaled Apen_wd; fP:=Apen_wd; hP:=.5Apen_wd; +def font_setup= pickup pencircle scaled char_pen_wd; fP:=char_pen_wd; hP:=.5char_pen_wd; FD(" ")(); FD(".")(drawdot z19 wpcs fP); FD(",")(drawdot z19 wpcs fP; draw (hW+.5fP,hP)..(hW+.3fP,-fP)..(hW-.5fP,hP-2fP)); @@ -654,13 +677,15 @@ def 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 com_str[strA[s]]=t: if nA>n: - warning(fdr(4)(s)&" ["&com_str[strA[s]]&"] has "&fdr(3)(nA)&" bonds"); fi fi enddef; + warning(fdr(4)(s)&" ["&com_str[strA[s]]&"] has "&fdr(3)(nA)&" bonds"); fi fi +enddef; vardef stripP(expr a)=if length(a)=4: substring (1,3) of a else: a fi enddef; def STa(expr a,b)= tblA[incr tbl_cnt]:=a; tblN[tbl_cnt]:=0; wtA[tbl_cnt]:=b; enddef; def STb(expr a)(text s)= tblA[incr tbl_cnt]:=a; tblN[tbl_cnt]:=0; for list=s: tblN[tbl_cnt]:=tblN[tbl_cnt]+1; for j=1 upto tbl_max: if list=tblA[j]: tblB[tbl_cnt][tblN[tbl_cnt]]:=j; fi endfor - endfor enddef; + endfor +enddef; %------------------------------------------------------------------------------------------------- tbl_cnt:=0; STa("C",12.0107); STa("H",1.00794); STa("{Al}",26.9815); STa("{As}",74.9236); STa("B",10.811); @@ -711,7 +736,8 @@ def checklist_out= nA:=0; calc_weight_str:=""; message "% width * height = " & fdr(8)(max_x-min_x)&" * "&fdr(8)(max_y-min_y); message "% Shift width * height = "& fdr(8)(min_x)&" * "&fdr(8)(min_y); message "% Bond length = "&fdr(3)(BL)&" Atom size = "&fdr(3)(AL); - message "% Atom count="&fdr(3)(cntA)&" Bond count="&fdr(3)(cntB)&" Ring count="&fdr(3)(cntB-cntA+1); + message "% Atom count="&fdr(3)(cntA)&" Bond count="&fdr(3)(cntB)& + " Ring count="&fdr(3)(cntB-cntA+1); message "% Hide H = "&fdr(3)(hide_H); message "%-----------------------------------< atom >< bond >-------"; for i=1 upto cntA: message "% "&fdr(3)(i)&" ("&fdr(10)(xpart(posA[i])/BL)&" ) ("& @@ -729,7 +755,8 @@ def checklist_out= nA:=0; calc_weight_str:=""; message "% Weight Calc: " &calc_weight_str &" / Input: " if mol_weight>0: &decimal(mol_weight) &" / weight gap= " &decimal(calc_weight-mol_weight) fi; message "% Fomula Calc: "&calc_formula&" / Input: " - if mol_formula<>"":&mol_formula&" / "& if mol_formula=calc_formula: "MACTCH" else: "NOT MACTCH" fi fi; + if mol_formula<>"":&mol_formula&" / "& + if mol_formula=calc_formula: "MACTCH" else: "NOT MACTCH" fi fi; message "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"; enddef; %------------------------------------------------------------------------------------------------ @@ -745,5 +772,6 @@ def MOL_out= mp_log_name:=jobname&"-"&fit_zero(char_num)&decimal(char_num)&"-"& elseif (lineB[i]=zf)or(lineB[i]=wb)or(lineB[i]=dt): nB:=6; elseif lineB[i]=wv: nB:=4; else: nA:=1; nB:=0; fi printf fdr(3)(sB[i])&fdr(3)(eB[i])&fdr(3)(nA)&fdr(3)(nB)&" 0 0"; fi endfor - printf "M END"; enddef; + printf "M END"; +enddef; %------------------------------------------------------------------------------------------------ |