From 03c75645664be34a27afa8e4e30b0f96d25de53b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 13 Feb 2017 23:21:29 +0000 Subject: mcf2graph (13feb17) git-svn-id: svn://tug.org/texlive/trunk@43218 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG | 6 +- Master/texmf-dist/doc/metapost/mcf2graph/README | 2 +- .../doc/metapost/mcf2graph/mcf_exa_soc.mf | 4 +- .../doc/metapost/mcf2graph/mcf_example.pdf | Bin 235841 -> 236045 bytes .../doc/metapost/mcf2graph/mcf_man_soc.mf | 42 ++++---- .../doc/metapost/mcf2graph/mcf_manual.pdf | Bin 462405 -> 462957 bytes .../doc/metapost/mcf2graph/mcf_manual.tex | 111 ++++++++++++--------- .../doc/metapost/mcf2graph/mcf_mplib_exa.pdf | Bin 122254 -> 174656 bytes .../doc/metapost/mcf2graph/mcf_mplib_exa.tex | 7 +- Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 100 +++++++++++++------ 10 files changed, 169 insertions(+), 103 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG index a3bee0be47d..3b29fbf0e96 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG +++ b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG @@ -1,6 +1,10 @@ ******************************************************************************* - Changelog of mcf2graph software package by Akira Yamaji 2017-01-29 + Changelog of mcf2graph software package by Akira Yamaji 2017-02-13 ******************************************************************************* +[ver. 4.10 / 2017-02-13] + -improve function EXT(),ext() + -update MCF syntax manual + [ver. 4.09 / 2017-01-29] -add new function puts() put string in EXT(),ext() diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/README b/Master/texmf-dist/doc/metapost/mcf2graph/README index 15ae275aa52..5fde3c5e34b 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/README +++ b/Master/texmf-dist/doc/metapost/mcf2graph/README @@ -1,7 +1,7 @@ ******************************************************************************** mcf2graph : Convert Molecular Coding Format to graphics with METAFONT/METAPOST Author : Akira Yamaji - version : 4.09 2017-01-29 + version : 4.10 2017-02-13 E-mail : mcf2graph@gmail.com Located at : http://www.ctan.org/pkg/mcf2graph ******************************************************************************** diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf index 3cb3c1facd0..c906b10a0d9 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2017.01.29 +% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2017.02.13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %%% it must be version 4.09 or later +input mcf2graph.mf; %%% it must be version 4.10 or later %------------------------------------------------------------------------- font_wd#:=33mm#; font_ht#:=24mm#; diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf index 641c2fab99e..5512e3d7717 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_man_soc.mf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf index bf9e92058d3..0f8aaf33876 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2017.01.29 +% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2017.02.13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %% it must be version 4.09 or later +input mcf2graph.mf; %% it must be version 4.10 or later %------------------------------------------------------------------------ sw_auxout:=0; sw_mol_frame:=0; @@ -272,7 +272,7 @@ endfont %*********************************************************************** beginfont("EN:change ring length") margin_top_bottom:=2mm; - font_ht#:=15mm#; + font_ht#:=20mm#; sw_clip:=1; sw_numberB:=1; MCf(?6,4\,?6`1.2) @@ -818,7 +818,7 @@ beginfont("EN:MCf() vt") endfont %*********************************************************************** beginfont("EN:EXT()") - margin_left_right:=margin_top_bottom:=3mm; + margin_left_right:=margin_top_bottom:=5mm; font_wd#:=70mm#; font_ht#:=35mm#; bond_len#:=8mm#; @@ -826,14 +826,18 @@ beginfont("EN:EXT()") MCd(1,0.8)(0.1,0.5)(<30,Ph,2:/OH,5:/OH) MCd(1,0.8)(0.9,0.5)(<30,?6,$(3,6)dl,@(2,5)//O) EXT( - draw ((0,0)--(25mm,0)--(21mm,2mm)) shifted (0.3w,0.52h); - draw ((4mm,-2mm)--(0,0)--(25mm,0)) shifted (0.3w,0.48h); - draw fullcircle scaled 3mm shifted p0; - drawdot p1 withpen pencircle scaled 2mm; - drawdot p2 withpen pensquare scaled 2mm; - use_font(5pt#); - puts((0.4w,0.6h))("Oxidation"); - puts((0.4w,0.35h))("Reduction"); + draw_vector((0.7w,0.52h), 0,0.2mm,0.4w); + draw_vector((0.3w,0.48h),180,0.2mm,0.4w); + drawdot p0 withpen pencircle scaled 3pt; + drawdot p1 withpen pencircle scaled 3pt; + drawdot p2 withpen pencircle scaled 3pt; + label.bot("p0",p0); + label.bot("p1",p1); + label.bot("p2",p2); + label("Ox",(0.5w,0.6h)); + label("Red",(0.5w,0.4h)); + use_font(6pt#); + label("Reaction example",(0.5w,0.8h)); ) endfont %*********************************************************************** @@ -844,15 +848,15 @@ beginfont("EN:ext()") sw_solid:=0; MCd(1,0.9)(0.1,0.5)(<30,Ph,3:/F,4:/Cl) ext( - drawdot p0 withpen pencircle scaled 2mm; - draw p0--(p0+(wd,0))--(p0+(wd,ht)); + drawdot p0 withpen pencircle scaled 3pt; + drawdot A6 withpen pencircle scaled 3pt; + drawdot B3 withpen pencircle scaled 3pt; + label.bot("p0",p0); + label.ulft("A6",A6); + label.rt("B3",B3); ) MCd(1,0.9)(0.9,0.5)(<30,Ph,3:/F,4:/Cl) - ext( - draw_vector(p6,a6-180,l); - drawdot p0 withpen pensquare scaled 2mm; - draw p0--(p0+(wd,0))--(p0+(wd,ht)); - ) + ext(draw p0--(p0+(wd,0))--(p0+(wd,ht));) endfont %*********************************************************************** beginfont("EN:Local setting 1") diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf index 656035e1754..eec407f55b5 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 a3468a88fc1..d9636c5d350 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 2017.01.29 +% Molecular Coding Format manual by Akira Yamaji 2017.02.13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} %%%%\usepackage{graphicx} @@ -927,27 +927,28 @@ pk font,PNG,SVG,EPS or MDL MOL file(V2000).\\ \newpage \subsection{Function EXT()} \begin{verbatim} -(Extra graphic to font) +(Add extra graphic to font) w: font width h: font height wd: font width-margin_left_right*2 ht: font height-margin_top_bottom*2 + em: embedded font size p0: x=margin_left_right y=margin_top_bottom n: molecular number p[m]: molecular origin position - (1<=m<=molecular count) -(Function) - puts(pos)(string): - put string at pos - use_font(wd#): - make string font for puts() - (font width = wd#) - draw_vector(pos,angle,length): +(Function for EXT(),ext()) + draw_vector(pos,angle,thickness,length): draw vector at pos + use_font(wd#): + make font for 'label' + label: + sw_label_mp=0: ** default + use embedded font + sw_label_mp=1: + use original metapost 'label' - %---------------------------------- beginfont() sw_font_frame:=3; %---------------------------------- @@ -957,20 +958,19 @@ pk font,PNG,SVG,EPS or MDL MOL file(V2000).\\ (<30,?6,$(3,6)dl,@(2,5)//O) %---------------------------------- EXT( - draw ((0,0)--(25mm,0)--(21mm,2mm)) - shifted (0.3w,0.52h); - draw ((4mm,-2mm)--(0,0)--(25mm,0)) - shifted (0.3w,0.48h) - draw fullcircle scaled 3mm - shifted p0; - drawdot p1 - withpen pencircle scaled 2mm; - drawdot p2 - withpen pensquare scaled 2mm; - %---------------------------------- - use_font(5pt#); - puts((0.4w,0.6h))("Oxidation"); - puts((0.4w,0.35h))("Reduction"); + draw_vector((0.7w,0.48h), 0,0.2mm,0.4w): + draw_vector((0.3w,0.52h),180,0.2mm,0.4w): + drawdot p0 withpen pencircle scaled 3pt; + drawdot p1 withpen pencircle scaled 3pt; + drawdot p2 withpen pencircle scaled 3pt; + %---------------------------------- + label.bot("p0",p0); + label.bot("p1",p1); + label.bot("p2",p2); + label("Ox",(0.5w,0.6h)); + label("Red",(0.5w,0.4h)); + use_font(6pt#); % **defalt 5pt# + label("Reaction example",(0.5w,0.8h)); ) %---------------------------------- endfont @@ -980,31 +980,33 @@ pk font,PNG,SVG,EPS or MDL MOL file(V2000).\\ \newpage \subsection{Function ext()} \begin{verbatim} -(Extra graphic to molecule) - wd: molecular width - ht: molecular height - p0: origin of molecular structure - n: atom number - l: bond length - p[m]: atom position of A[m] - a[m]: branch angle of A[m] - (1<=m<=atom count) +(Add extra graphic to molecule) + wd: molecular width + ht: molecular height + p0: origin of molecular structure + l: bond length + An: atom number + A[m]: atom position + A[m]bra: branch angle of A[m] + Bn: bond number + B[m]: bond position + B[m]ang: bond angle beginfont() - %------------------------------- + %---------------------------------- MCd(1,0.9)(0.1,0.5)(<30,Ph,3:/F,4:/Cl) ext( - drawdot p0 withpen pencircle scaled 2mm; - draw p0--(p0+(wd,0))--(p0+(wd,ht)); + drawdot p0 withpen pencircle scaled 3pt; + drawdot A6 withpen pencircle scaled 3pt; + drawdot B3 withpen pencircle scaled 3pt; + label.bot("p0",p0); + label.ulft("A6",A6); + label.rt("B3",B3); ) - %------------------------------- + %---------------------------------- MCd(1,0.9)(0.9,0.5)(<30,Ph,3:/F,4:/Cl) - ext( - draw_vector(p6,a6-180,l); - drawdot p0 withpen pensquare scaled 2mm; - draw p0--(p0+(wd,0))--(p0+(wd,ht)); - ) - %------------------------------- + ext(draw p0--(p0+(wd,0))--(p0+(wd,ht));) + %---------------------------------- endfont \end{verbatim} \MCFstructure @@ -1036,16 +1038,20 @@ pk font,PNG,SVG,EPS or MDL MOL file(V2000).\\ \begin{verbatim} tag3:="cMW"; var3:="calc_weight"; tag4:="cFM"; var4:="calc_formula"; -%----------------------------------------- +%-------------------------------- beginfont() MCf(<30,?6,3=d, @(2,6)N,@(2,6)/_,@(1,5)//O, |,-4=?5,2=dl,@(1,3)N,3:/_) endfont -%----------------------------------------- +beginfont(......) + ........... +endfont +.............. %% Output to mcf_man_soc-info.aux %% ..... ;C:85;cMW:194.19174;cFM:C8H10N4O2 +....................................... ** default value tag1:="F"; var1:="jobname"; @@ -1063,13 +1069,22 @@ beginfont("EN:Tocopherol","CAS:59-02-9") 7:O,@(1,2,5)/_,8:/*_^60,6:/OH, 8\,|,!12,@(4,8)/*_,12:/_) endfont +beginfont(......) + ........... +endfont +.............. %% Output to mcf_man_soc-info.aux %% F:mcf_man_soc;C:86;EN:Tocopherol;CAS:59-02-9 ............................................ -*F:filename *C:char number EN:molecular name -CAS:CAS number *:default output +1* F:filename +2* C:char number +3 EN:molecular name +4 CAS:CAS number + +*:default output + \end{verbatim} \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 index 9d792f89f10..5aabd3d1b3d 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 32373b33a9a..af0caea790b 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex @@ -1,10 +1,13 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2017.01.29 +% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2017.02.13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% mcf2graph.mf it must be version 4.09 or later +%%% mcf2graph.mf it must be version 4.10 or later \documentclass{article} %------------------------------------------------------------------------------ \usepackage{luamplib}% +\usepackage{lmodern}% +\usepackage[T1]{fontenc}% +\usepackage{textcomp}% \mplibcodeinherit{enable}% \mplibverbatim{enable}% \everymplib{if unknown Ph1: diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index 7fa4db15f74..c2d6f991841 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.09 Copyright (c) 2013-2017 Akira Yamaji +% mcf2graph ver 4.10 Copyright (c) 2013-2017 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, @@ -30,7 +30,7 @@ % Set output report : mpost -s ahlength=2 FILENAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tracingstats:=1; -message " This is mcf2graph ver 4.0 2017.1"; +message " This is mcf2graph ver 4.1 2017.2"; %------------------------------------------------------------------------------------------------- newinternal nA,nB,nC,nD,nE,nF,char_num,str_cnt,def_num,def_int,tbl_cnt; numeric save_para[],comD[][],parD[][],cntD[],tbl_str_wd[],tbl_atom[],tbl_subst[][],tbl_atom_wt[], @@ -39,8 +39,8 @@ string tbl_atom_str[],strD[],var[],tag[],mp_log_name,aux_delimiter; picture atom_font[],str_font[],mol_stru[],save_pict; %------------------------------------------------------------------------------------------------- char_num:=str_cnt:=proc_end:=0; -sw_numberA:=sw_numberB:=sw_mol_frame:=sw_auxout:=sw_solid:=sw_expand:=sw_font_frame:=0; -sw_atom_frame:=sw_report:=sw_MOLout:=sw_subst_off:=sw_bond_single:=sw_auxfix:=sw_clip:=0; +sw_numberA:=sw_numberB:=sw_mol_frame:=sw_auxout:=sw_solid:=sw_expand:=sw_font_frame:=sw_clip:=0; +sw_atom_frame:=sw_report:=sw_MOLout:=sw_subst_off:=sw_bond_single:=sw_auxfix:=sw_label_mp:=0; numberA_start:=numberB_start:=1; numberA_end:=numberB_end:=4095; aux_max:=max_inf_num:=20; aux_delimiter:=";"; var1:="jobname"; tag1:="F"; var2:="char_num"; tag2:="C"; for i=3 upto aux_max: var[i]:=tag[i]:=""; endfor @@ -63,9 +63,13 @@ if (known green)and(known ahlength): def # = enddef; def Cp(expr s) = if known s: if s<>0: withcolor color_list[s] fi fi enddef; def define_pixels(text s) = enddef; + if sw_label_mp=0: def label = label_ext enddef; fi else: f_MP:=0; - def Cp(expr s) = enddef; def color = transform enddef; - mode_setup; def printf expr s= message s enddef; + def Cp(expr s) = enddef; + def color = transform enddef; + def label = label_ext enddef; + def printf expr s= message s enddef; + mode_setup; fi ahangle:=45; ahlength:=4; clearit; @@ -80,7 +84,9 @@ ratio_char_bond:=1.5; ratio_bondgap_bond:=0.15; ratio_zebragap_bond:=0. ratio_zebra_black:=0.4; ratio_wedge_bond:=0.12; ratio_atomgap_atom:=0.050; offset_thickness#:=0.2pt#; offset_bond_gap#:=0.3pt#; offset_zebra_gap#:=0.1pt#; offset_atom#:=0.8pt#; offset_wedge#:=0.4pt#; thickness_font_frame#:=0.2pt#; -max_bond_length#:=10mm; bond_len#:=8mm#; font_wd#:=30mm#; font_ht#:=20mm#; +max_bond_length#:=10mm; bond_len#:=8mm#; +font_wd#:=30mm#; font_ht#:=20mm#; +labeloffset:=3bp; default_emb_font#:=5pt#; %-------------------------------------------------------------------------------------------------- def_emb_start:=500; % 500 => 2499 for embedded definition (max 2000) def_usr_start:=2500; % 2500 => 2999 for user definition (max 500) @@ -95,10 +101,10 @@ def_com(1)(si,dl,dr,db,dm,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,si_,wf_,wb_,bd_); %-------------------------------------------------------------------------------------------------- def parameter_list= sw_report,sw_numberA,sw_numberB,sw_mol_frame,sw_auxout,sw_solid,sw_expand,sw_MOLout, - sw_atom_frame,sw_font_frame,sw_subst_off,sw_bond_single,sw_clip, + sw_atom_frame,sw_font_frame,sw_subst_off,sw_bond_single,sw_clip,sw_label_mp, margin_left_right,margin_top_bottom,ratio_atom_bond,ratio_thickness_bond,ratio_char_bond, ratio_chain_ring,max_bond_width,ratio_bondgap_bond,ratio_zebra_black,ratio_zebragap_bond, - ratio_wedge_bond,ratio_atomgap_atom,ratio_bond_width,font_wd#,font_ht#, + ratio_wedge_bond,ratio_atomgap_atom,ratio_bond_width,font_wd#,font_ht#,labeloffset, bond_len#,offset_atom#,offset_wedge#,max_bond_length#,offset_zebra_gap#,offset_bond_gap#, thickness_font_frame#,offset_thickness#,numberA_start,numberA_end,numberB_start,numberB_end enddef; @@ -302,9 +308,13 @@ enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def EXT(text s)= begingroup - save w,h,wd,ht,n,p; pair p[]; + save w,h,wd,ht,n,p,em; + pair p[]; + use_font(default_emb_font#); w:=font_wd; h:=font_ht; wd:=w-2margin_left_right; ht:=h-2margin_top_bottom; - p0:=(margin_left_right,margin_top_bottom); n:=cntM; + p0:=(margin_left_right,margin_top_bottom); + em:=emb_font_size; + n:=cntM; for i=1 upto n: p[i]:=posM[1][i]; endfor s addto mol_stru[0] also currentpicture; clearit; f_ext:=1; endgroup; @@ -312,18 +322,28 @@ enddef; %-------------------------------------------------------------------------------------------------- def ext(text s)= begingroup - save wd,ht,n,a,l,p; numeric a[]; pair p[]; wd:=mol_wd; ht:=mol_ht; l:=bond_len; - p0:=(minX,minY); n:=cntA; for i=1 upto n: p[i]:=posA[i]; a[i]:=ang_br[i]; endfor + save wd,ht,n,l,p,zw,sp,ep,em,A,B; + numeric A[]bra,B[]ang; + pair p[],A[],B[],sp,ep; + use_font(default_emb_font#); + wd:=mol_wd; + ht:=mol_ht; + l:=bond_len; + em:=emb_font_size; + p0:=(minX,minY); + An:=cntA; Bn:=cntB; + for i=1 upto An: A[i]:=posA[i]; A[i]bra:=ang_br[i]; endfor + for i=1 upto Bn: sp:=posA[sB[i]]; ep:=posA[eB[i]]; B[i]:=0.5[sp,ep]; B[i]ang:=angB[i]; endfor s addto mol_stru[cntM] also currentpicture; clearit; endgroup; enddef; %-------------------------------------------------------------------------------------------------- def use_font(expr WD)= - save_pict:=currentpicture; + save_pict:=currentpicture; clearit; for i=1 upto 128: f_char[i]:=1; endfor proc_char_setup(str_font)(WD); - str_wd#:=WD; - define_pixels(str_wd); + emb_font_size#:=WD; + define_pixels(emb_font_size); currentpicture:=save_pict; enddef; %-------------------------------------------------------------------------------------------------- @@ -333,11 +353,35 @@ def puts(expr PA)(expr STR)= cp:=PA; for i=0 upto length(STR)-1: nA:=ASCII(pic_c(i,STR)); - addto currentpicture also str_font[nA] shifted (cp-(0,str_wd*tbl_char_dp[nA])); - cp:=cp+(str_wd*tbl_char_wd[nA],0); + addto currentpicture also str_font[nA] shifted (cp-(0,emb_font_size*tbl_char_dp[nA])); + cp:=cp+(emb_font_size*tbl_char_wd[nA],0); endfor endgroup; enddef; +%-------------------------------------------------------------------------------------------------- +vardef label_ext@#(expr STR,POS) = + save oft,fx,fy,wds; + pair oft,oft.lft,oft.rt,oft.top,oft.bot,oft.ulft,oft.llft,oft.urt,oft.lrt; + wds:=0; + for i=0 upto length(STR)-1: + wds:=wds+emb_font_size*tbl_char_wd[ASCII(pic_c(i,STR))]; + endfor + oft:= ( 0, 0); fx:=0.5; fy:=0.5; + oft.lft:= ( -1, 0); fx.lft:=1; fy.lft:=0.5; + oft.rt := ( 1, 0); fx.rt :=0; fy.rt :=0.5; + oft.bot:= ( 0, -1); fx.bot:=0.5; fy.bot:=1; + oft.top:= ( 0, 1); fx.top:=0.5; fy.top:=0; + oft.ulft:=(-.7, .7); fx.ulft:=1; fy.ulft:=0; + oft.urt:= ( .7, .7); fx.urt:=0; fy.urt:=0; + oft.llft:=(-.7,-.7); fx.llft:=1; fy.llft:=1; + oft.lrt:= ( .7,-.7); fx.lrt:=0; fy.lrt:=1; + puts(POS+(labeloffset*oft@#)-(wds*fx@#,emb_font_size*fy@#))(STR); +enddef; +%------------------------------------------------------------------------------------------------- +def draw_vector(expr POS,ROT,THICK,LEN)= + fill (-2mm,-(.5THICK+.4mm))--(0,0)--(-2mm,.5THICK+.4mm)--(-2mm,.5THICK)--(-LEN,.5THICK)-- + (-LEN,-.5THICK)--(-2mm,-.5THICK)--cycle rotated ROT shifted POS; +enddef; %================================================================================================= def MCf(text s)= MCd(1,1)(.5,.5)(s) enddef; % MC fill draw %------------------------------------------------------------------------------------------------- @@ -441,11 +485,6 @@ def draw_corner(expr LX,LY,PN)= drawdot(0,0) wpss PN; drawdot(LX,0) wpss PN; drawdot(LX,LY) wpss PN; drawdot(0,LY) wpss PN; enddef; %------------------------------------------------------------------------------------------------- -def draw_vector(expr POS,ROT,LEN)= - fill (-2mm,-1mm)--(0,0)--(-2mm,1mm)--(-2mm,.4mm)--(-LEN,.4mm)-- - (-LEN,-.4mm)--(-2mm,-.4mm)--cycle rotated ROT shifted POS; -enddef; -%------------------------------------------------------------------------------------------------- def proc_size_setup= if (bond_len#*ratio_atom_bond+offset_atom#)<.8bond_len#: atom_wd#:=bond_len#*ratio_atom_bond+offset_atom#; @@ -803,8 +842,9 @@ enddef; %--------------------------------------------------------------- char_size_set( 1)( 1)( 0)("CGHMNOQ"); char_size_set(.9)( 1)( 0)("ABDEFIJKLPRSTUVWXYZ-+/>