From d2feb6daf6bb87d92a2a816be0e5c0633ea29e3a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 7 Jul 2019 20:21:04 +0000 Subject: mcf2graph (7jul19) git-svn-id: svn://tug.org/texlive/trunk@51573 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG | 5 +- Master/texmf-dist/doc/metapost/mcf2graph/README | 2 +- .../doc/metapost/mcf2graph/mcf_exa_soc.mf | 6 +- .../doc/metapost/mcf2graph/mcf_example.pdf | Bin 282227 -> 282495 bytes .../doc/metapost/mcf2graph/mcf_man_soc.mf | 19 ++- .../doc/metapost/mcf2graph/mcf_manual.pdf | Bin 594241 -> 594168 bytes .../doc/metapost/mcf2graph/mcf_manual.tex | 2 +- .../doc/metapost/mcf2graph/mcf_mplib_exa.pdf | Bin 172135 -> 172091 bytes .../doc/metapost/mcf2graph/mcf_mplib_exa.tex | 4 +- Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf | 139 +++++++++++++++------ 10 files changed, 125 insertions(+), 52 deletions(-) diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG index 57e699c7965..fa35cf4dd94 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG +++ b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG @@ -1,6 +1,9 @@ ******************************************************************************* - Changelog of mcf2graph software package by Akira Yamaji 2019-06-23 + Changelog of mcf2graph software package by Akira Yamaji 2019-07-07 ******************************************************************************* +[ver. 4.44 / 2019-07-07] + -improve to ignore unknown command + [ver. 4.43 / 2019-06-23] -add binop for add() a << b : a rotated b diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/README b/Master/texmf-dist/doc/metapost/mcf2graph/README index ccb4b68c70f..879a75196ab 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.43 2019-06-23 + version : 4.44 2019-07-07 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 e7602063f29..7ade70ca727 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 2019.06.23 +% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2019.07.07 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %%% it must be version 4.43 or later +input mcf2graph.mf; %%% it must be version 4.44 or later %------------------------------------------------------------------------- fsize:=(33mm,24mm); max_blength:=4.5mm; @@ -263,7 +263,7 @@ endfont %*************************************************************************** beginfont("EN:Limonin","MW:470.518") MC(<30,?6,{-3,-4}=?6,-5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf, - {13,15,17,20}:O,{3,12,21}://O, + {13,15,17,20}:O,{3,12,21}://O, {4~wf^60,8~zf^60,18^35,18^-35}:/_,{1^60,5^180,16^60}:/*H, 14:\*,|,?5,{1,4}=dl,3:O) endfont diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf index 574beea3a3d..0d9a7977c9c 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 31afd36f966..53e5a5671d7 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf @@ -1,13 +1,12 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2019.06.23 +% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2019.07.07 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %% it must be version 4.43 or later +input mcf2graph.mf; %% it must be version 4.44 or later %------------------------------------------------------------------------ sw_mframe:=0; sw_expand:=0; %%%%sw_aux_out:=0; -%%%%%sw_arrow:=1; -%%%%%sw_rep_out:=1; +%%%%sw_rep_out:=1; %*********************************************************************** fsize:=(35mm,25mm); blength:=6mm; @@ -1129,3 +1128,15 @@ beginfont("EN:Cholesterol","CAS:57-88-5","FM:C27H46O","MW:386.65") endfont %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bye +?6,{-4,-2}=?6,-4=?5,7=dl, + 1:*/OH,{4,12}:*/_^60,9:*/H^60, + 10:/*H^180,11:/*H^-60,17:/*H^-54, + -1:@,18,/*_,-60,!3,/_,!, + ) +endfont +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +bye +%%%%% +bye + +bye diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf index 55094d64389..b76b2dc02aa 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 7dea8b88f28..71ca0286fd0 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 2019.06.23 +% Molecular Coding Format manual by Akira Yamaji 2019.07.07 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} %%%%\documentclass[a4paper,twoside]{article} 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 01beb82d74d..cf946f3f498 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 1c5d30bf9f4..b71e80a2f7b 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2019.06.23 +% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2019.07.07 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% mcf2graph.mf it must be version 4.43 or later +%%% mcf2graph.mf it must be version 4.44 or later \documentclass{article} %------------------------------------------------------------------------------ \usepackage{luamplib}% diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf index 289739d439b..0906454eb51 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.43 Copyright (c) 2013-2019 Akira Yamaji +% mcf2graph ver 4.44 Copyright (c) 2013-2019 Akira Yamaji % % Permission is hereby granted, free of charge, to any person obtaining a copy of this software % and associated documentation files (the "Software"), to deal in the Software without restriction, @@ -36,7 +36,6 @@ % Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tracingstats:=1; -message " This is mcf2graph ver 4.43 2019.06"; %------------------------------------------------------------------------------------------------- newinternal char_num,str_cnt,sub_usr,sub_int,tbl_cnt,sharp_char; numeric save_num[],comD[][],parD[][],cntD[],tbl_atom[],tbl_subst[][], @@ -65,10 +64,6 @@ if (known green)and(known ahlength): out_file_aux:=jobname&"-info.aux"; out_file_rep:=jobname&"-report.txt"; def out_file_mol= jobname&"-"&fit_zero(char_num)&"-"&inf_EN&".mol" enddef; - %-- default bboxmargin=2------------------------------------------------------------------ - if bboxmargin=0: def shipit = enddef; % No image file - elseif bboxmargin=1: proc_end:=1; % output first font only - fi %--default ahangle=45--------------------------------------------------------------------- if ahangle=0: outputformat:="eps"; % eps format(.mps) elseif ahangle=1: outputformat:="png"; hppp:=vppp:=0.12; % png format(600dpi) @@ -80,10 +75,14 @@ if (known green)and(known ahlength): elseif ahangle=13: outputformat:="png"; hppp:=vppp:=0.06; % png format(1200dpi) fi %--default ahlength=4--------------------------------------------------------------------- - if ahlength=1: sw_aux_out:=1; def shipit = enddef; % output aux file - elseif ahlength=2: sw_rep_out:=1; def shipit = enddef; % output report - elseif ahlength=5: sw_mol_out:=1; def shipit = enddef; % output MOL(V2000) - elseif ahlength=6: sw_mol_out:=2; def shipit = enddef; % output MOL(V3000) + if ahlength=1: sw_aux_out:=1; bboxmargin:=0; % output aux file + elseif ahlength=2: sw_rep_out:=1; bboxmargin:=0; % output report + elseif ahlength=5: sw_mol_out:=1; bboxmargin:=0; % output MOL(V2000) + elseif ahlength=6: sw_mol_out:=2; bboxmargin:=0; % output MOL(V3000) + fi + %-- default bboxmargin=2------------------------------------------------------------------ + if bboxmargin=0: def shipit = enddef; % No image file + elseif bboxmargin=1: proc_end:=1; % output first font only fi %--default labeloffset=3------------------------------------------------------------------ if labeloffset=1: sw_arrow:=1; defaultfont:="uhvr8r"; % plain.mp label @@ -104,7 +103,7 @@ if (known green)and(known ahlength): if defaultfont="": defaultfont:="draw"; fi % default label font %----------------------------------------------------------------------------------------- else: f_MP:=0; - %----------------------------------- + %------------------------------------ def image = image_emu enddef; def llcorner = llcorner_emu enddef; def lrcorner = lrcorner_emu enddef; @@ -122,6 +121,32 @@ else: f_MP:=0; fi clearit; %-------------------------------------------------------------------------------------------------- +message "---------------------------------------------"; +message "This is mcf2graph ver 4.44 2019.07"; +if f_MP=1: + message "numbersystem="&numbersystem; + if ahlength=1: message "output aux file"; + message "out_file_aux="&out_file_aux; + elseif ahlength=2: message "output report file"; + message "out_file_rep="&out_file_rep; + elseif ahlength=5: message "output MOL file(V2000)"; + message jobname&"-nnn-"&"inf_EN"&".mol"; + elseif ahlength=6: message "output MOL file(V3000)"; + message jobname&"-nnn-"&"inf_EN"&".mol"; + fi + if bboxmargin=0: + message "No image file"; + else: + if outputformat="png": + message "outputformat="&outputformat &" / ppp="&decimal(hppp); + else: + message "outputformat="&outputformat; + fi + message "outputtemplate="&outputtemplate; + fi +fi +message "---------------------------------------------"; +%-------------------------------------------------------------------------------------------------- let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == = =; let ef=elseif; %-------------------------------------------------------------------------------------------------- primarydef a at b = fat(a,b) enddef; @@ -157,7 +182,7 @@ def_com(-4000)(_term,_jp_atom,_jp_atom_abs,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_li _dl,_mb,_N,_O,_S,_tmp_line,_chg_len,_get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang,_chg_env, _tmp_env,_set_colorA,_set_colorB,_postA,_postB,_postC,_postD,_postE,_postF,_postG,_postH, _set_clr,_set_adr,_mk_bond,_set_atom,_arg_ang,_chg_atom,_tmp_rot,_fuse,_push,_pop, - _size_a,_numeric,_jump_at,_connect_at,_set_and,_chg_charge); + _size_a,_numeric,_jump_at,_connect_at,_set_and,_chg_charge,_nop); def_com(1)(si,dl,dr,db,dm,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,si_,wf_,wb_,bd_); %-------------------------------------------------------------------------------------------------- def parameter_list= @@ -287,44 +312,64 @@ def set_def_MC= |,||,|<,>|,|<=,|=,=|,|:,:|,_,d,w,z,inside_def_MC; inside_def_MC:=1; _:=Me; d:=db; w:=wf; z:=zf; - tertiarydef a=b == change_bond(a,b) enddef; - tertiarydef a:b == change_atom(a,b) enddef; - def { == '''( enddef; let } == ); + tertiarydef a=b == if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef; + tertiarydef a:b == if (known a)and(known b):: change_atom(a,b) else:: _nop fi enddef; + def { == '''( enddef; + let } == ); def &primary s == (_set_and,ASCII(s)) enddef; vardef $primary a == a-4095 enddef; - def ^^primary n == (_tmp_rot,n) enddef; def ~~primary n == (_tmp_line,n) enddef; - def '`primary n == (_tmp_len,n) enddef; def :>primary n == (_tmp_env,n) enddef; - def >>primary n == (_chg_env,n) enddef; def ``primary n == (_chg_len,n) enddef; + def ^^primary n == (_tmp_rot,n) enddef; + def ``primary n == (_chg_len,n) enddef; + def '`primary n == (_tmp_len,n) enddef; def b == :>b,a enddef; - def # == _connect_at enddef; def @ == _jump_at enddef; def \ == @,0 enddef; - def \\ == \~dm enddef; def *\ == \~wf enddef; def \* == \~zf enddef; def *\* == \~wv enddef; - def |: == (_push,0) enddef; def :| == (_pop,0) enddef; - def |< == (_push,1) enddef; def >| == (_pop,1) enddef; - def |<=primary n == ``n,(_push,0) enddef; + def >>primary n == (_chg_env,n) enddef; + def ~~primary n == (_tmp_line,n) enddef; + def :>primary n == (_tmp_env,n) enddef; + tertiarydef a^b == if known b:: ^^b,a else:: _nop,a fi enddef; + tertiarydef a`b == if known b:: '`b,a else:: _nop,a fi enddef; + tertiarydef a~b == if known b:: ~~b,a else:: _nop,a fi enddef; + tertiarydef a>b == if known b:: :>b,a else:: _nop,a fi enddef; + def # == _connect_at enddef; + def @ == _jump_at enddef; + def \ == @,0 enddef; + def \\ == \~dm enddef; + def *\ == \~wf enddef; + def \* == \~zf enddef; + def *\* == \~wv enddef; + def |: == (_push,0) enddef; + def :| == (_pop,0) enddef; + def |< == (_push,1) enddef; + def >| == (_pop,1) enddef; def |=primary n == (_push,0),``n enddef; - def =| == (_pop,0) enddef; - def | == (_push,2) enddef; def || == (_pop,2) enddef; - def /secondary n == (_postA,n) enddef; def //secondary n == (_postB,n) enddef; - def */secondary n == (_postC,n) enddef; def /*secondary n == (_postD,n) enddef; - def **secondary n == (_postF,n) enddef; def */*secondary n == (_postG,n) enddef; + def =| == (_pop,0) enddef; + def | == (_push,2) enddef; + def || == (_pop,2) enddef; + def /secondary n == if known n:: (_postA,n) else:: _nop fi enddef; + def //secondary n == if known n:: (_postB,n) else:: _nop fi enddef; + def */secondary n == if known n:: (_postC,n) else:: _nop fi enddef; + def /*secondary n == if known n:: (_postD,n) else:: _nop fi enddef; + def **secondary n == if known n:: (_postF,n) else:: _nop fi enddef; + def */*secondary n == if known n:: (_postG,n) else:: _nop fi enddef; enddef; %================================================================================================= vardef '(text TXT)= ''(incr sub_usr)(TXT); sub_usr enddef; %------------------------------------------------------------------------------------------------- def ''(expr ADR)(text TXT)= begingroup + save list_cnt; if unknown inside_def_MC:: set_def_MC fi - cntD[ADR]:=0; + cntD[ADR]:=list_cnt:=0; for list==TXT:: + list_cnt:=list_cnt+1; if known list:: if pair list:: cntD[ADR]:=cntD[ADR]+1; comD[ADR][cntD[ADR]]:=xpart(list); parD[ADR][cntD[ADR]]:=ypart(list); elseif numeric list:: - if list>=sub_emb_start:: + if list==_nop:: + message "unknown command in "AND decimal(list_cnt); + elseif list>=sub_emb_start:: for i==1 upto cntD[list]:: cntD[ADR]:=cntD[ADR]+1; comD[ADR][cntD[ADR]]:=comD[list][i]; @@ -342,6 +387,8 @@ def ''(expr ADR)(text TXT)= comD[ADR][cntD[ADR]]:=_set_atom; parD[ADR][cntD[ADR]]:=str_cnt; fi + else:: + message "unknown command in "AND decimal(list_cnt); fi endfor endgroup @@ -350,13 +397,23 @@ enddef; vardef '''(text TXT)= sub_int:=sub_int+1; cntD[sub_int]:=0; - for list==TXT:: cntD[sub_int]:=cntD[sub_int]+1; - if numeric list:: - comD[sub_int][cntD[sub_int]]:=_numeric; - parD[sub_int][cntD[sub_int]]:=list; - elseif pair list:: - comD[sub_int][cntD[sub_int]]:=xpart(list); - parD[sub_int][cntD[sub_int]]:=ypart(list); + for list==TXT:: + if known list:: + if numeric list:: + if list==_nop:: + message "unknown command in "AND decimal(sub_int); + else:: + cntD[sub_int]:=cntD[sub_int]+1; + comD[sub_int][cntD[sub_int]]:=_numeric; + parD[sub_int][cntD[sub_int]]:=list; + fi + elseif pair list:: + cntD[sub_int]:=cntD[sub_int]+1; + comD[sub_int][cntD[sub_int]]:=xpart(list); + parD[sub_int][cntD[sub_int]]:=ypart(list); + fi + else:: + message "unknown command in "AND decimal(sub_int); fi endfor sub_int %------- Retern value ------- @@ -852,7 +909,7 @@ def post_put= begingroup save nA; if f_at=1: nA:=getA(adrT); check_adrA(nA); else: nA:=cntA+1; fi - cntP:=cntP+1; ps_adr[cntP]:=nA; ps_com[cntP]:=par; op_cnt[cntP]:=0; + cntP:=cntP+1; ps_adr[cntP]:=nA; ps_com[cntP]:=par; op_cnt[cntP]:=0; if lineT<>0: PO(_tmp_line,lineT) fi if rotT<>0: PO(_rot_ang,rotT) fi if lenT<>crR: PO(_chg_len,lenT) fi @@ -997,6 +1054,7 @@ def proc_bond_atom(expr n)= ef nC=_set_colorB: colorB[getB(adrT)]:=par; ef nC=_set_and: andAT:=par; ef nC=_chg_charge: andA[getA(par)]:=andAT; andAT:=0; if rotT<>0: and_rot[getA(par)]:=rotT; fi + else: fi endfor enddef; @@ -1056,6 +1114,7 @@ def proc_skeleton= ef nC=_cyc_sB: f_end:=1; proc_cyc(sB[getB(par)]); ef nC=_cyc_eB: f_end:=1; proc_cyc(eB[getB(par)]); ef nC=_term: termB; + else: fi endfor endgroup -- cgit v1.2.3