texlive[76139] Master/texmf-dist: mcf2graph (24aug25)
commits+karl at tug.org
commits+karl at tug.org
Sun Aug 24 22:51:28 CEST 2025
Revision: 76139
https://tug.org/svn/texlive?view=revision&revision=76139
Author: karl
Date: 2025-08-24 22:51:28 +0200 (Sun, 24 Aug 2025)
Log Message:
-----------
mcf2graph (24aug25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
trunk/Master/texmf-dist/doc/metapost/mcf2graph/README
trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp
trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex
trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf
trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex
trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_to_graph.cmd
trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf
trunk/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf
trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,6 +1,15 @@
*******************************************************************************
- Changelog of mcf2graph software package by Akira Yamaji 2025-07-27
+ Changelog of mcf2graph software package by Akira Yamaji 2025-08-24
*******************************************************************************
+[ver. 5.26 / 2025-08-24]
+ -improve mcf_to_graph.cmd
+ output formats can be selected
+ -update mcf2graph.mp
+ fix bug in mol file output
+ delete eps file output
+ -update MCF manual,example
+ remove unnecessary package,option
+
[ver. 5.25 / 2025-07-27]
-improve atom,bond adress check
-update mcf2graph.mp
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/README
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/README 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/README 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,7 +1,7 @@
********************************************************************************
mcf2graph : Convert Molecular Coding Format to graphics with MetaPost
Author : Akira Yamaji
- version : 5.25 2025-07-27
+ version : 5.26 2025-08-24
E-mail : mcf2graph at gmail.com
Located at : http://www.ctan.org/pkg/mcf2graph
********************************************************************************
@@ -11,7 +11,7 @@
chemical structure diagrams.
This Coding is named from programing technique
such as operator,array,scope,macro,adressing,etc.
- mcf2graph convert from MCF to SVG,PNG,EPS,MOL file.
+ mcf2graph convert from MCF to SVG,PNG,MOL file.
It is also able to calculate molecular weight,exact mass,molecular formula.
2. The distribution of software
@@ -20,9 +20,9 @@
( 3) mcf_to_graph.cmd Batch file for compile mcf library file
drag and drop library file on this batch
>mcf_to_graph main_lib.mcf
- create svg(default) in ./main_lib
+ create graphic files in ./main_lib-(format)
>mcf_to_graph template_lib.mcf
- create svg(default) in ./template_lib
+ create graphic files in ./template_lib-(format)
( 4) mcf2graph.mp Main macro of Metapost
( 5) main_lib.mcf MCF library file
( 6) template_lib.mcf Template library file
@@ -46,18 +46,16 @@
4. Use mcf2graph with MetaPost
-command line-
- (1) >mcf_to_graph filename.mp => output svg(default),png,mol,report
+ (1) >mcf_to_graph filename.mp => output svg,png,mol,report
(2) >mpost filename.mp => output svg file
(3) >mpost -s ahangle=1 filename.mp => output png file (600dpi)
- (4) >mpost -s ahangle=11 filename.mp => output png file (1200dpi)
- (5) >mpost -s ahangle=2 filename.mp => output eps(.mps) file
- (6) >mpost -s ahangle=3 filename.mp => output eps(.eps) file
- (7) >mpost -s ahlength=5 filename.mp => output mol file(V2000)
- (8) >mpost -s ahlength=6 filename.mp => output mol file(V3000)
- (9) >mpost -s ahlength=7 filename.mp => output report file
+ (4) >mpost -s ahangle=2 filename.mp => output png file (1200dpi)
+ (5) >mpost -s ahlength=5 filename.mp => output mol file(V2000)
+ (6) >mpost -s ahlength=6 filename.mp => output mol file(V3000)
+ (7) >mpost -s ahlength=7 filename.mp => output report file
5. License
- mcf2graph ver 5.25 Copyright (c) 2013-2025 Akira Yamaji
+ mcf2graph ver 5.26 Copyright (c) 2013-2025 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
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,17 +1,16 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% MCF metapost souce file example by Akira Yamaji 2025.07.27
+% MCF metapost souce file example by Akira Yamaji 2025.08.24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%------------------------------------------------------------------------------
%%%%ahlength:=3; %%% output figure(expanded)
-%%%%ahlength:=5; %%% output MOL(V2000) ** max 500files
-%%%%ahlength:=6; %%% output MOL(V3000) ** max 500files
+%%%%ahlength:=5; %%% output MOL(V2000)
+%%%%ahlength:=6; %%% output MOL(V3000)
%%%%ahlength:=7; %%% output report
%------------------------------------------------------------------------------
-input mcf2graph; %%% it must be version 5.25
-message "* mcf_template 2025.07.27";
-message "";
+input mcf2graph; %%% it must be version 5.26
+message "* mcf_template 2025.08.24"; message "";
%------------------------------------------------------------------------------
-%%%%sw_output:=Fig+Report;
+%%%%sw_output:=Report;
fsize:=(30mm,20mm);
max_blength:=4mm;
%%%%sw_numbering:=Atom+Bond;
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,13 +1,12 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF Typeset with LuaLaTeX(luamplib) by A.Yamaji 2025.07.27
+% Example of MCF Typeset with LuaLaTeX(luamplib) by A.Yamaji 2025.08.24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ** mcf2graph.mf must be version 5.25
+% ** mcf2graph.mf must be version 5.26
% ** use mcf_library.mcf
% ** typeset by LuaLaTeX(luamplib)
%-------------------------------------------------------------------------
\documentclass{article}
\usepackage{luamplib}
-\usepackage[T1]{fontenc}
\mplibcodeinherit{enable}
\mplibnumbersystem{double}
\mpliblegacybehavior{disabled}
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,14 +1,13 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format manual by Akira Yamaji 2025.07.27
+% Molecular Coding Format manual by Akira Yamaji 2025.08.24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ** mcf2graph.mf must be version 5.25
+% ** mcf2graph.mf must be version 5.26
% ** use main_lib.mcf
% ** typeset by LuaLaTeX(luamplib)
%----------------------------------------------------------------------------
\documentclass[a4paper]{article}
-\usepackage{textcomp,verbatim}%
-\usepackage[luatex]{graphicx}
-\usepackage[luatex]{hyperref}
+\usepackage{verbatim}
+\usepackage{hyperref}
\usepackage{makeidx}
\usepackage{luamplib}
\mplibnumbersystem{double}
@@ -37,7 +36,7 @@
\author{Akira Yamaji}
\date{\today}
\maketitle
-\begin{center} mcf2graph version 5.25 \end{center}
+\begin{center} mcf2graph version 5.26 \end{center}
\begin{center} Located at http://www.ctan.org/pkg/mcf2graph \end{center}
\begin{center} Suggestion or request mail to: mcf2graph at gmail.com \end{center}
%-----------------------------------------------------------------------------
@@ -141,7 +140,7 @@
represent chemical structure diagrams.
This Coding is named from programing technique
such as operator, array, scope, macro, adressing, etc.
-mcf2graph convert from MCF to PNG, SVG, EPS, MOL file.
+mcf2graph convert from MCF to PNG, SVG, MOL file.
It is also able to calculate molecular weight,
exact mass, molecular formula.
%-----------------------------------------------------------------------------
@@ -364,7 +363,6 @@
\index{"!dr}%
\begin{verbatim}
(Double,triple)
-a~type : ~~type,a
dm : double middle
dl : double left side
dr : double right side
@@ -511,7 +509,7 @@
#1.25,-30~wf_r,30~bd_r`1,30~wb_r,
120,O,30,&1,##,#.5,6^$90:/!OH,
- 1^$270'2^$90'3^$270'4^$90:/OH,
+ 1^$270'2^$90'3^$270'4^$90:/OH
\end{verbatim}
%-----------------------------------------
\begin{mplibcode}
@@ -519,7 +517,7 @@
#(75mm,16mm);
@(0.05,0.5)
drawm("#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,"&
- "#.5,1^$270'2^$90'3^$270'4^$90:/OH,6^$90:/!OH");
+ "#.5,1^$270'2^$90'3^$270'4^$90:/OH,6^$90:/!OH");
defaultscale:=0.6;
@(0.5,0.7) drawm("0~wf_r") ++(label.lft("wf_r:",A1);)
@(0.5,0.2) drawm("0~wf") ++(label.lft("wf:",A1);)
@@ -1216,7 +1214,7 @@
endfigm
\end{mplibcode}
%-----------------------------------------------------------------------------
-\subsubsection{Move position [ @{ }]}
+\subsubsection{Move position [ @() ]}
\index{@}%
\begin{verbatim}
@(x'y) : Move l*(x,y) from current position
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_to_graph.cmd
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_to_graph.cmd 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_to_graph.cmd 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,20 +1,41 @@
@echo off
-rem Batch file for compile MCF 2025.06.08
+rem Batch file for compile MCF 2025.08.24
rem rename batch name by purpose
rem <drag and drop library files on this batch>
if not %~x1 == .mcf goto end
-echo input mcf2graph; default_library:="%~n1.mcf"; > temp_soc.mp
-echo loadm("EXA<>-"); allm; bye >> temp_soc.mp
-mkdir %~n1
-rem *** mcf_to_svg create svg in ./filename (default)
-mpost -output-directory=./%~n1 ./temp_soc.mp
-rem *** mcf_to_png create png in ./filename
-rem mpost -output-directory=./%~n1 -s ahangle=1 ./temp_soc.mp
-rem *** mcf_to_mol2k create MOL(V2000) in ./filename
-rem mpost -output-directory=./%~n1 -s ahlength=5 ./temp_soc.mp
-rem *** mcf_to_mol3k create MOL(V3000) in ./filename
-rem mpost -output-directory=./%~n1 -s ahlength=6 ./temp_soc.mp
-rem *** mcf_to_report create report
-rem mpost -numbersystem=double -s ahlength=7 ./temp_soc.mp
+echo **** Select output format / Library file [%~n1] ****
+choice /c 1234560 /n /m "1:svg 2:png(600) 3:png(1200) 4:MOL(v2k) 5:MOL(v3k) 6:report 0:cancel"
+if %errorlevel% == 7 goto end
+echo input mcf2graph; default_library:="%~n1.mcf"; loadm("EXA<>-"); allm; bye> temp_soc.mp
+if %errorlevel% == 1 goto svg
+if %errorlevel% == 2 goto png600
+if %errorlevel% == 3 goto png1200
+if %errorlevel% == 4 goto molv2k
+if %errorlevel% == 5 goto molv3k
+if %errorlevel% == 6 goto report
+:svg
+mkdir %~n1-svg
+mpost -output-directory=./%~n1-svg ./temp_soc.mp
+goto skip
+:png600
+mkdir %~n1-pn0600
+mpost -output-directory=./%~n1-pn0600 -s ahangle=1 ./temp_soc.mp
+goto skip
+:png1200
+mkdir %~n1-pn1200
+mpost -output-directory=./%~n1-pn1200 -s ahangle=2 ./temp_soc.mp
+goto skip
+:molv2k
+mkdir %~n1-molv2k
+mpost -output-directory=./%~n1-molv2k -s ahlength=5 ./temp_soc.mp
+goto skip
+:molv3k
+mkdir %~n1-molv3k
+mpost -output-directory=./%~n1-molv3k -s ahlength=6 ./temp_soc.mp
+goto skip
+:report
+mkdir %~n1-report
+mpost -output-directory=./%~n1-report -numbersystem=double -s ahlength=7 ./temp_soc.mp
+:skip
del temp_soc.mp
:end
\ No newline at end of file
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf template file mcf_template.mcf by Akira Yamaji 2025.07.27
+% mcf template file mcf_template.mcf by Akira Yamaji 2025.08.24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% must use version 5.25
+% must use version 5.26
% tag1:var1;tag2:var2;tag3:var3 .....
% first character of line "%" comment out
% first character of line ":" start MCF
Modified: trunk/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf
===================================================================
--- trunk/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% molecular library file main_lib.mcf by Akira Yamaji 2025.07.27
+% molecular library file main_lib.mcf by Akira Yamaji 2025.08.24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% must use version 5.25
+% must use version 5.26
% tag1:var1;tag2:var2;tag3:var3 .....
% first character of line "%" comment out
% first character of line ":" start MCF
@@ -218,7 +218,7 @@
%------------------------------------------------------------------------------
CAT:biological;EN:Fumarate;MW:116.07;EXA:1
:
-<30,COOH,!,!d,!COOH
+<30,COOH,!!d,!COOH
;
%------------------------------------------------------------------------------
CAT:biological;EN:Malate;MW:134.09;EXA:1
@@ -354,7 +354,7 @@
%------------------------------------------------------------------------------
CAT:biological;EN:Allicin;MW:162.28;EXA:1
:
-<-30,!d,!2,S?O,!,S,!2,!d
+<-30,!d,!2,S?O,!S,!2,!d
;
%------------------------------------------------------------------------------
CAT:biological;EN:Benzoic acid;MW:122.12;EXA:1
@@ -708,7 +708,7 @@
%------------------------------------------------------------------------------
CAT:biological;EN:Piperine;MW:285.343;EXA:1
:
-<30,Ph,-1=?5,-1'-3:O, at 4,!,!d,!,!d,!?O!,?6,-6:N
+<30,Ph,-1=?5,-1'-3:O, at 4,!!d,!!d,!?O!,?6,-6:N
;
%------------------------------------------------------------------------------
CAT:biological;EN:Febrifugine;MW:301.34;EXA:1
@@ -774,7 +774,7 @@
CAT:biological;EN:Pyrethrin I;MW:328.452;EXA:1
:
<30,?3,3^35'*3^-35:?w, at 1,!w,!d,?!,
- @2,!z,?O!,O,-36~zb,|,?5,-2=dl,-1:?,-3:?O, at -2,!5,-1'-3=dl
+ @2,!z,?O!O,-36~zb,|,?5,-2=dl,-1:?,-3:?O, at -2,!5,-1'-3=dl
;
%------------------------------------------------------------------------------
CAT:biological;EN:Oseltamivir;MW:312.40;EXA:1
@@ -1377,7 +1377,7 @@
%------------------------------------------------------------------------------
CAT:antibiotics;EN:Cefalonium;MW:458.5107;EXA:1
:
-<45,?4,2=?6,6=db,2:N,8:S,3^45:/*H,1:?O^15, at 5,!z,?O!,O,n_^40,
+<45,?4,2=?6,6=db,2:N,8:S,3^45:/*H,1:?O^15, at 5,!z,?O!O,n_^40,
@4,15~wf,NH!,?O!2,?5,-1'-3=dl,-4:S, at 6,!2,|,Ph,1:N,1:p_^180,4:/?O!'NH2
;
%------------------------------------------------------------------------------
@@ -1385,7 +1385,7 @@
:
<45,?4,2=?6,6=db,2:N,8:S,3^45:/*H,1^15:?O,5:/*COOH,
@4,15~wf,NH!,?O!2,?5,-2'-4=dl,-1'-2'-3'-5:N,
- @6,!2,S,!,?5,-3'-5=dl,-1:S,-2:?,-3'-4:N
+ @6,!2,S!,?5,-3'-5=dl,-1:S,-2:?,-3'-4:N
;
%------------------------------------------------------------------------------
CAT:antibiotics;EN:Cefoperazone;MW:645.67;EXA:9
@@ -1392,12 +1392,12 @@
:
<45,?4,2=?6,6=db,2:N,8:S,3^45:/*H,1:?O^15,5:/*COOH,
@4,15~wf,NH!,?O!,/*Ph'(4:/OH),!NH!,?O!,?6,-3'-6:N,-4'-5:?O,-3:/!,
- @6,!2,S,!,?5,-3'-5=dl,-1:?,-1'-2'-3'-4:N,
+ @6,!2,S!,?5,-3'-5=dl,-1:?,-1'-2'-3'-4:N,
;
%------------------------------------------------------------------------------
CAT:antibiotics;EN:Cefquinome;MW:528.6;EXA:1
:
-<45,?4,2=?6,6=db,2:N,8:S,3^45:/*H,1:?O^15, at 5,!z,?O!,O,n_^40,
+<45,?4,2=?6,6=db,2:N,8:S,3^45:/*H,1:?O^15, at 5,!z,?O!O,n_^40,
@4,15~wf,NH!,?O!,//N!'O!,!,?5,-2'-5=dl,-3:S,-1:N,-2:/NH2,
@6,!2,Ph,-2=?6,-10:N,-10:p_^180
;
@@ -1607,7 +1607,7 @@
#1, at -2,!,NH,60,-60,60~dl,60,60~dl,-60,
60,-60,60,60,-60,60,-53,66,-53~dl,66`1.2,O,##,&$8,
||,9'15:?O,16:?,20'24^30:?w,21'23:/*OH,8^60'22'26^30:?z,
- -4:/*O!, at -6,-30,O!,?O!,@$11,!,!d,N!,|,?6,1:N,4:N?
+ -4:/*O!, at -6,-30,O!,?O!,@$11,!!d,N!,|,?6,1:N,4:N?
;
%==============================================================================
CAT:pesticide;EN:BHC;MW:290.83;EXA:1
@@ -1643,7 +1643,7 @@
CAT:pesticide;EN:Acrinathrin;MW:541.45;EXA:1
:
<-30,?3,2^-35'*2^35:?w,
- @1,!,!d,!?O,!O!,/?F?F!F,!,?F?F!F, at 3,!?O,!O!,/CN,!Ph,-4:/O!'Ph>rl
+ @1,!!d,!?O,!O!,/?F?F!F,!,?F?F!F, at 3,!?O,!O!,/CN,!Ph,-4:/O!'Ph>rl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Azaconazole;MW:300.139;EXA:1
@@ -1678,12 +1678,12 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Iprobenfos;MW:288.34;EXA:1
:
-<30,!?!,O!,P,?O,/O'!?!^170,!,S,!2,Ph
+<30,!?!,O!,P,?O,/O'!?!^170,!S,!2,Ph
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Uninnazole-P;MW:291.779;EXA:1
:
-<30,Ph,6:/Cl, at 3,!,!d,!,/OH,!,??!, at 8,!,|,?5,2'4=dl,1'2'4:N
+<30,Ph,6:/Cl, at 3,!!d,!,/OH,!,??!, at 8,!,|,?5,2'4=dl,1'2'4:N
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Esprocarb;MW:265.4;EXA:1
@@ -1769,12 +1769,12 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Chlorpropham;MW:213.7;EXA:1
:
-<30,Ph,6:/Cl, at 4,!NH!,?O!,O,!?!
+<30,Ph,6:/Cl, at 4,!NH!,?O!O,!?!
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Chlorbenside;MW:269.183;EXA:1
:
-<30,Ph, at 3,!,S,!2,Ph,6'12:/Cl
+<30,Ph, at 3,!S,!2,Ph,6'12:/Cl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Chlorobenzilate;MW:325.2;EXA:1
@@ -1815,7 +1815,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Thiuram;MW:240.43;EXA:1
:
-<30,!,N?!,?S,!,S,!,S,!,?S,!,N?!
+<30,!,N?!,?S,!S,!,S!,?S,!,N?!
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Probenazole;MW:223.25;EXA:1
@@ -1872,7 +1872,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Diethofencarb;MW:267.3;EXA:1
:
-<30,Ph, at 4,!NH!,?O!,O,!?!,1'6:/O!2
+<30,Ph, at 4,!NH!,?O!O,!?!,1'6:/O!2
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Diclofop-methyl;MW:341.2;EXA:1
@@ -1882,12 +1882,12 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Cyhalothrin;MW:449.86;EXA:1
:
-<-30,?3,2^-35'*2^35:?w, at 1,!,!d,/?F?F!F,!Cl, at 3,!?O,!O!,/CN,!Ph,-4:/O!'Ph>rl
+<-30,?3,2^-35'*2^35:?w, at 1,!!d,/?F?F!F,!Cl, at 3,!?O,!O!,/CN,!Ph,-4:/O!'Ph>rl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Cyhalofop-Buthyl;MW:357.381;EXA:1
:
-<30,Ph,1:/CN,4:/F, at 3,!O!,Ph, at -3,!O,!?!,?O!,O,!4
+<30,Ph,1:/CN,4:/F, at 3,!O!,Ph, at -3,!O,!?!,?O!O,!4
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Diphenamid;MW:239.3;EXA:1
@@ -1898,7 +1898,7 @@
CAT:pesticide;EN:Cyfluthrin;MW:434.3;EXA:1
:
<-30,?3,2^-35'*2^35:?w,
- @1,!,!d,/Cl,!Cl, at 3,!?O,!O!,/CN,!Ph,-3:/F,-4:/O!'Ph>rl
+ @1,!!d,?Cl!Cl, at 3,!?O,!O!,/CN,!Ph,-3:/F,-4:/O!'Ph>rl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Diflufenican;MW:394.29;EXA:1
@@ -1913,7 +1913,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Cypermethrin;MW:416.3;EXA:1
:
-<-30,?3,2^-35'*2^35:?w, at 1,!,!d,/Cl,!Cl, at 3,!?O,!O!,/CN,!Ph,-4:/O!'Ph>rl
+<-30,?3,2^-35'*2^35:?w, at 1,!!d,?Cl!Cl, at 3,!?O,!O!,/CN,!Ph,-4:/O!'Ph>rl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Simazine;MW:201.7;EXA:1
@@ -2011,7 +2011,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Tefluthrin;MW:418.736;EXA:1
:
-<-30,?3,2^-35'*2^35:?w, at 1,!,!d,/?F?F!F,!Cl, at 3,!?O!,O!2,|,Ph,2'3'5'6:/F,4:?
+<-30,?3,2^-35'*2^35:?w, at 1,!!d,/?F?F!F,!Cl, at 3,!?O!,O!2,|,Ph,2'3'5'6:/F,4:?
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Terbutryn;MW:241.4;EXA:1
@@ -2036,7 +2036,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Triallate;MW:304.7;EXA:1
:
-<-30,!?!,N,/?!,!?O!,S!2,/Cl,!d,/Cl,!Cl
+<-30,!?!,N,/?!,!?O!,S!2,/Cl,!d,?Cl!Cl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Dimethylvinphos;MW:331.52;EXA:1
@@ -2086,7 +2086,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Bifenthrin;MW:422.88;EXA:1
:
-<-30,?3,2^-35'*2^35:?w, at 1,!,!d,/Cl,!,?F?F!F, at 3,!?O,!O!,-60,Ph,-1:?,-2:/Ph
+<-30,?3,2^-35'*2^35:?w, at 1,!!d,/Cl,!,?F?F!F, at 3,!?O,!O!,-60,Ph,-1:?,-2:/Ph
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Pyraflufen-ethyl;MW:413.174;EXA:1
@@ -2097,7 +2097,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Pyridaben;MW:364.9;EXA:1
:
-<30,?6,2'4=dl,5'6:N,6:/??!,1:?O,2:/Cl, at -4,!,S,!2,Ph,-3:/??!
+<30,?6,2'4=dl,5'6:N,6:/??!,1:?O,2:/Cl, at -4,!S,!2,Ph,-3:/??!
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Pyridaphenthion;MW:340.34;EXA:1
@@ -2187,7 +2187,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Phenthoate;MW:320.358;EXA:1
:
-<-30,!O!,P,?S,/O!^160,!,S,!,/Ph,!?O!,O!2
+<-30,!O!,P,?S,/O!^160,!S,!,/Ph,!?O!,O!2
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Prothyophos;MW:329.18;EXA:1
@@ -2207,7 +2207,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Bromophos;MW:365.99;EXA:1
:
-<-30,!O!, P,?S,/O!^160,!O!,|,Ph,3'6:/Cl,4:/Br
+<-30,!O!,P,?S,/O!^160,!O!,|,Ph,3'6:/Cl,4:/Br
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Phosalone;MW:367.80;EXA:1
@@ -2217,7 +2217,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Phosmet;MW:317.32;EXA:1
:
-<-30,!O!,P,?S,/O!^160,!,S,!2,|,?5,3=Ph2,1:N,2'5:?O
+<-30,!O!,P,?S,/O!^160,!S,!2,|,?5,3=Ph2,1:N,2'5:?O
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Phorate;MW:260.4;EXA:1
@@ -2252,7 +2252,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Cadusafos;MW:270.386;EXA:1
:
-<-30,!2,?!,S!,P,?O,/O!2^160>rl,!,S,!?,!2
+<-30,!2,?!,S!,P,?O,/O!2^160>rl,!S,!?,!2
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Dimethoate;MW:229.25;EXA:1
@@ -2262,7 +2262,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Tribufos;MW:314.50;EXA:1
:
-<30,!4,S,!,P,?O,/S'!4^160>rl,!,S,!4
+<30,!4,S!,P,?O,/S'!4^160>rl,!S,!4
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Tolclofos-methyl;MW:301.13;EXA:1
@@ -2292,7 +2292,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Anilofos;MW:367.9;EXA:1
:
-<-30,!O!,P,?S,/O!^160,!,S,!2,?O!,N,/?!,!Ph,-3:/Cl
+<-30,!O!,P,?S,/O!^160,!S,!2,?O!,N,/?!,!Ph,-3:/Cl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Isazofos;MW:313.74;EXA:1
@@ -2302,17 +2302,17 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Ethion;MW:384.46;EXA:1
:
-<30,!2,O!,P,?S,/O!2^160>rl,!,S,!2,S,!,P,?S,/O!2^200>lr,!,O!2
+<30,!2,O!,P,?S,/O!2^160>rl,!S,!2,S!,P,?S,/O!2^200>lr,!,O!2
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Edifenphos;MW:310.37;EXA:1
:
-<30,Ph, at 3,!O!,P,?S,/O!2>rl^160,!,S,!Ph
+<30,Ph, at 3,!O!,P,?S,/O!2>rl^160,!S,!Ph
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Ethoprophos;MW:242.33;EXA:1
:
-<-30,!3,S,!,P,?O,/S!3^160>rl,!,O!2
+<-30,!3,S!,P,?O,/S!3^160>rl,!,O!2
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Ethrimfos;MW:292.29;EXA:1
@@ -2472,7 +2472,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Bromopropylate;MW:428.12;EXA:1
:
-<30,Ph, at 3,!2,Ph,6'11:/Br,7:/OH^-45, at 7,30,?O!,O,-60,?!
+<30,Ph, at 3,!2,Ph,6'11:/Br,7:/OH^-45, at 7,30,?O!O,-60,?!
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Hexaconazole;MW:314.2;EXA:1
@@ -2492,7 +2492,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Benoxacor;MW:260.1;EXA:1
:
-<90,Ph,3=?6,7:N,10:O,8:?, at 7,!?O!,/Cl,!Cl
+<90,Ph,3=?6,7:N,10:O,8:?, at 7,!?O!,?Cl!Cl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Heptachlor;MW:373.35;EXA:1
@@ -2502,7 +2502,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Permethrin;MW:391.30;EXA:1
:
-<-30,?3,2^-35'*2^35:?w, at 1,!,!d,/Cl,!Cl, at 3,!?O!,O!2,Ph,-4:/O!'Ph>rl
+<-30,?3,2^-35'*2^35:?w, at 1,!!d,?Cl!Cl, at 3,!?O!,O!2,Ph,-4:/O!'Ph>rl
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Penconazole;MW:284.184;EXA:1
@@ -2567,7 +2567,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Resmethrin;MW:338.4;EXA:1
:
-<-30,?3,2^-35'*2^35:?w, at 1,!,!d,?!,3:/?O!'O!2,|,?5,3'5=dl,2:O,3:/!Ph
+<-30,?3,2^-35'*2^35:?w, at 1,!!d,?!,3:/?O!'O!2,|,?5,3'5=dl,2:O,3:/!Ph
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Lenacil;MW:234.3;EXA:1
@@ -2582,7 +2582,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Paraquat;MW:257.16;EXA:1
:
-Ph, at 4,!Ph,1'10:N?,1:p_^-90,10:p_^90, at 1,@(0'1.2),Cl,n_^15, at 10,@(0'1.2),Cl,n_^15
+Ph, at 4,!Ph,1'10:N?,1^-90'10^90:p_, at 1,@(0'1.2),Cl,n_^15, at 10,@(0'1.2),Cl,n_^15
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Oxine-Copper;MW:351.852;EXA:1
@@ -2598,7 +2598,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Uniconazole-P;MW:291.779;EXA:1
:
-<30,Ph,6:/Cl, at 3,!,!d,!,/OH,!??!, at 8,!,|,?5,2'4=dl,1'2'4:N
+<30,Ph,6:/Cl, at 3,!!d,!,/OH,!??!, at 8,!,|,?5,2'4=dl,1'2'4:N
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Dimesulfazet;MW:336.33;EXA:1
@@ -2623,7 +2623,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Aldicarb;MW:190.3;EXA:1
:
-<-30,!,S,!??,!,!d,N,!O!,?O,!NH!
+<-30,!S,!??,!!d,N,!O!,?O,!NH!
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Aldoxycarb;MW:222.3;EXA:1
@@ -2638,7 +2638,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Iprovalicarb;MW:320.4;EXA:1
:
-<30,Ph,6:?, at 3,!,!?!,NH!,?O!,??,!NH!,?O!,O,!?!
+<30,Ph,6:?, at 3,!,!?!,NH!,?O!,??,!NH!,?O!O,!?!
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Imazalil;MW:297.2;EXA:1
@@ -2689,7 +2689,7 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Cloquintocet-methyl;MW:335.83;EXA:1
:
-<90,Ph,4=Ph,2:N,10:/Cl, at 7,!,O!2,?O!,O,!?,!5
+<90,Ph,4=Ph,2:N,10:/Cl, at 7,!,O!2,?O!O,!?,!5
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Clotianidin;MW:249.673;EXA:1
@@ -2855,12 +2855,12 @@
%------------------------------------------------------------------------------
CAT:pesticide;EN:Fenpyroximate;MW:421.49;EXA:1
:
-<-6,?5,3'5=db,1'2:N,2'5:?, at 3,-15,O,!Ph, at 4,!,!d,N!,O!2,Ph, at -3,!?O,!O,!4
+<-6,?5,3'5=db,1'2:N,2'5:?, at 3,-15,O,!Ph, at 4,!!d,N!,O!2,Ph, at -3,!?O,!O,!4
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Phenmedipham;MW:300.32;EXA:1
:
-<30,Ph,5:?, at 3,!NH!,?O!,O,!Ph,-4:/NH!'?O!'O!
+<30,Ph,5:?, at 3,!NH!,?O!O,!Ph,-4:/NH!'?O!'O!
;
%------------------------------------------------------------------------------
CAT:pesticide;EN:Butafenacil;MW:474.817;EXA:1
@@ -3150,17 +3150,17 @@
%------------------------------------------------------------------------------
CAT:antibacterial;EN:Chlorsulon;MW:380.66;EXA:1
:
-<30,Ph,6:/NH2,1'3:/S?O?O'!NH2, at 4,!,/Cl,60~dl,/Cl,!Cl
+<30,Ph,6:/NH2,1'3:/S?O?O'!NH2, at 4,!,/Cl,60~dl,?Cl!Cl
;
%------------------------------------------------------------------------------
CAT:antibacterial;EN:Florfenicol;MW:358.21;EXA:1
:
-<30,Ph,1:/S?O?O!, at 4,!,/OH,!,/!F,!NH!,?O!,/Cl,!Cl
+<30,Ph,1:/S?O?O!, at 4,!,/OH,!,/!F,!NH!,?O!,?Cl!Cl
;
%------------------------------------------------------------------------------
CAT:antibacterial;EN:Thiamphenicol;MW:356.22;EXA:1
:
-<30,Ph,1:/S?O?O!, at 4,!,/OH,!,/!OH,!`1.1,NH,!`1.1,?O!,/Cl,!Cl
+<30,Ph,1:/S?O?O!, at 4,!,/OH,!,/!OH,!`1.1,NH,!`1.1,?O!,?Cl!Cl
;
%------------------------------------------------------------------------------
CAT:antibacterial;EN:Oxadiargyl;MW:341.19;EXA:1
@@ -3180,7 +3180,7 @@
%******************************************************************************
CAT:antibiotics;EN:Vancomycin;MW:1449.25;EXA:9
:
-<-30,#1,!12,1'3'12=zf,7=wf,60,60,Ph, at -3,!O!,Ph, at -4,!O!,Ph, at -3,!,&1,
+<-30,!12`1,1'3'12=zf,7=wf,#1,60,60,Ph, at -3,!O!,Ph, at -4,!O!,Ph, at -3,!,&1,
@7,&26,@$1,60,60,NH,60,-60,Ph, at -1,!Ph, at -2,&4,##,
36'3^40'6'9'12:?O,2'5'8'11:NH,1'4^180'*7^-60'*10^60'*14^60'35^-60:*/H,
41'43'46:/OH,14'*35:*/OH,17'34^15:/Cl,38^180:*/COOH,
Modified: trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp
===================================================================
--- trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp 2025-08-24 20:51:15 UTC (rev 76138)
+++ trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp 2025-08-24 20:51:28 UTC (rev 76139)
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 5.25 Copyright (c) 2013-2025 Akira Yamaji
+% mcf2graph ver 5.26 Copyright (c) 2013-2025 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,
@@ -22,18 +22,17 @@
% This package is located at : http://www.ctan.org/pkg/mcf2graph
% Suggestion or request mail to : mcf2graph at gmail.com
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-message "* This is mcf2graph ver 5.25 2025.07.27";
+message "* This is mcf2graph ver 5.26 2025.08.24";
tracingstats:=1; prologues:=3;
%-------------------------------------------------------------------------------------------------
-newinternal string EN_,tempc,temps,blanks,line_s,atoms,forbiddens,firstc,file_input,file_output;
+newinternal string EN_,tempc,temps,blanks,lines,atoms,forbiddens,firstc,file_input,file_output;
newinternal numeric nA,nB,nC,nD,nE,nL,nN,nP,nR,nS,nU,nX,nY,pX,pY,pB,pcode_int;
numeric save_num[],pcode_x[][],pcode_y[][],param_e[][],pcode_cnt[],tbl_atom[],tbl_group[][],
- tbl_atom_wt[],tbl_atom_mi[],tbl_char_wd[],tbl_char_ht[],at_char[],mc_indent[],op_indent[],
- ex_indent[],ad_indent[],unit_lines[],info[],lenw[],mcode_x[],mcode_y[],mcode_b[],
- error_type[],error_adr[],error_e[],error_b[];
+ tbl_atom_wt[],tbl_atom_mi[],tbl_char_wd[],tbl_char_ht[],at_char[],mc_indent[],
+ unit_lines[],info[],lenw[],mcode_x[],mcode_y[],mcode_b[],error_type[],error_e[],error_b[];
string row[][],save_str[],tbl_atoms[],str_tbl[],arg_s[],mc[],ex[],ad[],op[],tag[],rw[],error_s[],
- warning_s[],lib_tag[][],lib_val[][],block_s[],mc,ex,ad,op,aux_delimiter,default_library,
- EN,LN,FM,MW,MI,CAT,JN,CAS,USE,LOGP,EXA,EXB,default_temp_file,mpfont,atomfont,numberfont;
+ warning_s[],lib_tag[][],lib_val[][],block_s[],mc,op,ex,ad,default_library,No,EN,LN,FM,MW,
+ MI,CAT,JN,CAS,USE,EXA,default_temp_file,mpfont,atomfont,numberfont;
pair save_pair[],msize,mposition,fsize,fmargin;
boolean bA;
color rgb_black,rgb_gray,rgb_silver,rgb_white,rgb_blue,rgb_navy,rgb_teal,rgb_green,rgb_lime,
@@ -48,8 +47,7 @@
fig_num:=str_cnt:=tbl_cnt:=mangle:=sw_frame:=sw_trimming:=sw_ext_all:=sw_omit:=0;
sw_output:=sw_numbering:=tag_cnt:=rw_cnt:=pcode_all:=MW_n:=f_expand:=0;
%-------------------------------------------------------------------------------------------------
-for s="No","EN","JN","LN","MW","MI","FM","CAT","CAS","USE","LOGP","EXA","EXB":
- tag[incr tag_cnt]:=s; endfor
+for s="No","EN","JN","LN","MW","MI","FM","CAT","CAS","USE","EXA": tag[incr tag_cnt]:=s; endfor
Fig:=1; Mcode:=2; Info:=4; Report:=8; MOL2k:=16; MOL3k:=32; Atom:=2; Bond:=4; All:=8;
Group:=8; Mol:=16; Outside:=1; Inside:=2; Bothside:=Outside+Inside;
%-------------------------------------------------------------------------------------------------
@@ -63,17 +61,15 @@
mpfont:="uhvr8r"; atomfont:=numberfont:="draw"; defaultfont:=mpfont; let ef=elseif;
%--default ahangle=45---------------------------------------------------------------------
if ahangle=1: outputformat:="png"; hppp:=vppp:=0.12; % png format(600dpi)
-ef ahangle=11: outputformat:="png"; hppp:=vppp:=0.06; % png format(1200dpi)
-ef ahangle=2: outputformat:="eps"; % eps format(.eps)
-ef ahangle=3: outputformat:="eps"; % eps format(.mps)
+ef ahangle=2: outputformat:="png"; hppp:=vppp:=0.06; % png format(1200dpi)
ef ahangle=45: outputformat:="svg"; % svg format *default
fi
%--default ahlength=4---------------------------------------------------------------------
-if ahlength=3: sw_output:=Fig; f_expand:=1; % output figure(expanded)
-ef ahlength=4: sw_output:=Fig; % output figure *default
-ef ahlength=5: sw_output:=MOL2k; f_expand:=1; % output MOL(V2000) ** max 500files
-ef ahlength=6: sw_output:=MOL3k; f_expand:=1; % output MOL(V3000) ** max 500files
-ef ahlength=7: sw_output:=Report; % output report
+if ahlength=3: sw_output:=Fig; f_expand:=1; % output figure(expanded)
+ef ahlength=4: sw_output:=Fig; % output figure *default
+ef ahlength=5: sw_output:=MOL2k; f_expand:=1; % output MOL(V2000)
+ef ahlength=6: sw_output:=MOL3k; f_expand:=1; % output MOL(V3000)
+ef ahlength=7: sw_output:=Report; % output report
fi
%-- default bboxmargin=2------------------------------------------------------------------
if bboxmargin=3: ext(defaultfont:=mpfont; defaultscale:=.3; label.rt(EN,(0,0));)
@@ -82,10 +78,9 @@
label.rt(EN&" / "&MW&" / "&decimal(MW_n-scantokens(MW)),(0,0));)
fi
%--default outputtemplate:="%j-%3c."&"svg"------------------------------------------------
-if outputformat="svg": outputtemplate:="s%3c-%{EN_}.svg";
-ef outputformat="png": outputtemplate:="p%3c-%{EN_}.png";
-ef (outputformat="eps")and(ahangle=3): outputtemplate:="%j-%3c.mps";
-else: outputtemplate:="%j-%3c."&outputformat;
+if outputformat="svg": outputtemplate:="%3c-%{EN_}.svg";
+ef outputformat="png": if hppp=0.12: outputtemplate:="p06_%3c-%{EN_}.png";
+ ef hppp=0.06: outputtemplate:="p12_%3c-%{EN_}.png"; fi
fi
%-----------------------------------------------------------------------------------------
message "* jobname="&jobname;
@@ -92,10 +87,6 @@
message "* numbersystem="&numbersystem;
message "* outputformat="&outputformat;
message "* outputtemplate="&outputtemplate;
-if ahlength=5: message "* output MOL file(V2000)"; message "* "&jobname&"-nnn-"&"EN"&".mol";
-ef ahlength=6: message "* output MOL file(V3000)"; message "* "&jobname&"-nnn-"&"EN"&".mol";
-ef ahlength=7: message "* output report file"; message "* file name="&jobname&"-report.txt";
-fi
clearit;
%-------------------------------------------------------------------------------------------------
ratio_chain_ring:=0.66; ratio_atom_bond:=0.36; ratio_thickness_bond:=0.012; ratio_char_atom:=0.12;
@@ -123,13 +114,11 @@
vardef fsr(expr n)(expr s)= (substring(0,n-length(s)) of blanks)&s enddef;
vardef fsl(expr n)(expr s)= s&(substring(0,n-length(s)) of blanks) enddef;
vardef fdr(expr n)(expr s)=
- if length(decimal(s))>n: substring (0,n) of decimal(s) else: fsr(n)(decimal(s)) fi
-enddef;
+ if length(decimal(s))>n: substring (0,n) of decimal(s) else: fsr(n)(decimal(s)) fi enddef;
vardef fdl(expr n)(expr s)= fsl(n)(decimal(s)) enddef;
%-------------------------------------------------------------------------------------------------
-aux_delimiter:=";"; blanks:= " "; forbiddens:=" &()[]{}^=;!'+,`~";
+blanks:= " "; forbiddens:=" &()[]{}^=;!'+,`~";
for s="*/*","/*","*/","//","##","||":rw[incr rw_cnt]:=s; lenw[rw_cnt]:=length(s); endfor
-PLS:=ASCII("+"); MIS:=ASCII("-");
%=================================================================================================
pcode_emb_start:=1001; % 1001 => 1900 for embedded pcode (max 900)
pcode_emi_start:=1901; % 1901 => 2000 for embedded internal pcode (max 100)
@@ -138,12 +127,12 @@
%-------------------------------------------------------------------------------------------------
def def_com(expr n)(text tx)= nA:=n; forsuffixes list=tx:: list:=nA; nA:=nA+1; endfor enddef;
def_com(-4090)(_com,_jp_atom,_jp_absA,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_tmp_line,_tmp_rot,
- _tmp_env,_tmp_len,_set_len,_get_len,_ring,_rot_ang,_adj_ang,_chg_env,_set_colorA,_set_colorB,
+ _tmp_env,_tmp_len,_chg_len,_get_len,_set_len,_rot_ang,_adj_ang,_chg_env,_set_colorA,_set_colorB,
_group_si,_group_dm,_group_wf,_group_zf,_set_adrA,_set_adrB,_mk_bond,_set_atom,_auto_ang,
- _chg_atom,_fuse,_fuse_ext,_size_atom,_numeric,_numeric_inv,_numeric_rot,_jump_at,_set_add,
- _chg_add,_nop,_mark,_moff,_term,_end,_group_s,_group_e,_rest,_charge,_chg_len,hz,vt,si,dl,
- dl_,dr,dr_,db,dm,dm_,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,wf_r,wb_r,bd_r,arc_lb,arc_br,arc_lbr,
- arc_ltr,si_,wf_,wb_,zf_,zb_,wv_,bd_);
+ _set_charge,_add_charge,_chg_atom,_fuse,_fuse_ext,_size_atom,_numeric,_numeric_rot,_jump_at,
+ _nop,_mark,_moff,_term,_end,_group_s,_group_e,_rest,_ring,_chain,
+ hz,vt,si,dl,dl_,dr,dr_,db,dm,dm_,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,wf_r,wb_r,bd_r,
+ arc_lb,arc_br,arc_lbr,arc_ltr,si_,wf_,wb_,zf_,zb_,wv_,bd_);
%-------------------------------------------------------------------------------------------------
def parameter_list=
sw_numbering,sw_output,sw_ext_all,sw_frame,sw_trimming,sw_omit,ratio_atom_bond,
@@ -183,25 +172,25 @@
def beginfigm=
begingroup
save '',`,``,//,@,#,#@,##,|=,|<,**,++,f_ext,blen,ext,add,ang_br,fw_n,bw_n,adr_n,at_cmm,
- bond_cntA,warning_cnt,hideH,hideH_cnt,cntM,cntA,cntB,
- minX,minY,maxX,maxY,posA,posM,lineB,sB,eB,angB,angA,lenB,angX,numS,sumA,bond_num,wdM,htM,
- chargeA,addA,add_rot,mol_pic,color_list,no,mw,mi,fm,group_num,f_line,f_type,ay,bx,by,pcnt;
+ bond_cntA,warning_cnt,hideH,hideH_cnt,cntM,cntA,cntB,minX,minY,maxX,maxY,posA,posM,lineB,
+ sB,eB,angB,angA,lenB,angX,numS,sumA,bond_num,wdM,htM,chargeA,addA,add_rot,mol_pic,color_list,
+ no,mw,mi,fm,group_num,f_line,f_type,ay,bx,by,pcnt;
numeric hideH[],lineB[],sB[],eB[],angB[],angA[],lenB[],angX[],strA[],sumA[],bond_num[],
wdM[],htM[],chargeA[],addA[],add_rot[];
pair posA[],posM[][];
- string mi,no,fm,mw;
+ string mi,fm,mw;
picture mol_pic[];
color color_list[];
%-----------------------------------------------------------------------------------------------
store_par(parameter_list);
- no:=mc:=ex:=ad:=op:=mw:=mi:=fm:=""; EN:=JN:=LN:=MW:=FM:=MI:=CAS:=CAT:=EXA:=EXB:=USE:=LOGP:="-";
+ mc:=ex:=ad:=op:=mw:=mi:=fm:=""; No:=EN:=JN:=LN:=MW:=FM:=MI:=CAS:=CAT:=EXA:=USE:="-";
f_ext:=cntM:=mc_row:=ex_row:=ad_row:=op_row:=param_int:=warning_cnt:=error_cnt:=0;
let ext=ext_to_fig; let add=add_to_molecule; let ++=add_to_molecule; let **=ext_to_fig;
- def '' = define_parts enddef; def // = drawm enddef;
- def @ expr p = mposition:=p; enddef; def # expr p = fsize:=p; enddef;
- def #@ expr p = fmargin:=p; enddef; def `(expr s) = define_group_string(s)() enddef;
- def `` = define_group_string enddef; def ## expr p = msize:=p; enddef;
- def |=(expr n) = blength:=n; enddef; def |<(expr n) = max_blength:=n; enddef;
+ def '' = define_parts enddef; def // = drawm enddef; def @ expr p = mposition:=p; enddef;
+ def # expr p = fsize:=p; enddef; def #@ expr p = fmargin:=p; enddef;
+ def `(expr s) = define_group_string(s)() enddef; def `` = define_group_string enddef;
+ def ## expr p = msize:=p; enddef; def |=(expr n) = blength:=n; enddef;
+ def |<(expr n) = max_blength:=n; enddef;
pcode_num:=pcode_usr_start; pcode_int:=pcode_int_start; fig_num:=fig_num+1;
mol_pic[0]:=nullpicture;
enddef;
@@ -260,7 +249,7 @@
endfor
enddef;
%=================================================================================================
-def getm(expr a)=if string a: read_unit(get_adr("EN",a)) ef numeric a: read_unit(a) fi enddef;
+def getm(expr a)=if string a:read_unit(get_adr("EN",a)) ef numeric a:read_unit(a) fi enddef;
%-------------------------------------------------------------------------------------------------
def read_unit(expr n)=
f_line:=0;
@@ -269,17 +258,16 @@
for j=1 upto tag_cnt: if lib_tag[n][i]=tag[j]: scantokens(tag[j]):=lib_val[n][i]; fi endfor
endfor
for i=1 upto unit_lines[n]:
- line_s:=row[n][i]; firstc:=substring(0,1) of line_s; exitif firstc=";";
- if firstc=":": f_line:=1; ef firstc="=": f_line:=2;
- ef firstc="*": f_line:=3; ef firstc="+": f_line:=4;
- ef firstc="%":
+ lines:=row[n][i]; firstc:=substring(0,1) of lines; exitif firstc=";";
+ if firstc=":": f_line:=1; ef firstc="=": f_line:=2; ef firstc="*": f_line:=3;
+ ef firstc="+": f_line:=4; ef firstc="%":
else:
- fw_n:=scan_char(" ",line_s,1,1)-1;
- line_s:=substring(fw_n,length(line_s)) of line_s;
- if f_line=1: mc_indent[incr mc_row]:=fw_n; mc[mc_row]:=line_s; mc:=mc&line_s;
- ef f_line=2: op_indent[incr op_row]:=fw_n; op[op_row]:=line_s; op:=op&line_s;
- ef f_line=3: ex_indent[incr ex_row]:=fw_n; ex[ex_row]:=line_s; ex:=ex&line_s;
- ef f_line=4: ad_indent[incr ad_row]:=fw_n; ad[ad_row]:=line_s; ad:=ad&line_s;
+ fw_n:=scan_char(" ",lines,1,1)-1;
+ lines:=substring(fw_n,length(lines)) of lines;
+ if f_line=1: mc_indent[incr mc_row]:=fw_n; mc[mc_row]:=lines; mc:=mc&lines;
+ ef f_line=2: op[incr op_row]:=lines; op:=op&lines;
+ ef f_line=3: ex[incr ex_row]:=lines; ex:=ex&lines;
+ ef f_line=4: ad[incr ad_row]:=lines; ad:=ad&lines;
fi
fi
endfor
@@ -327,59 +315,47 @@
primarydef a fuse__ b = pcode_extend(_fuse_ext,a,b,2) enddef;
primarydef a fuse___ b = pcode_extend(_fuse_ext,a,b,3) enddef;
primarydef a fuse____ b = pcode_extend(_fuse_ext,a,b,4) enddef;
-tertiarydef a bop_equ b =
- if (known a)and(known b):: if numeric a:: set_bond(a,b) else:: _nop fi else:: _nop fi
-enddef;
-tertiarydef a bop_col b =
- if (known a)and(known b):: if numeric a:: set_atom(a,b) else:: _nop fi else:: _nop fi
-enddef;
+tertiarydef a bop_equ b = if (known a)and(known b)::
+ if (numeric a)or(pair a):: set_bond(a,b) else:: _nop fi else:: _nop fi enddef;
+tertiarydef a bop_col b = if (known a)and(known b)::
+ if (numeric a)or(pair a):: set_atom(a,b) else:: _nop fi else:: _nop fi enddef;
tertiarydef a bop_hat b = if (known a)and(numeric b):: (_tmp_rot,b),a else:: _nop fi enddef;
tertiarydef a bop_til b = if (known a)and(numeric b):: (_tmp_line,b),a else:: _nop fi enddef;
tertiarydef a bop_lth b =
if (known a)and(numeric b)::
- if numeric a:: if (a>=!2)and(a<=!20) :: b for i==1 upto a-!2+1:: ,b endfor
- else:: (_tmp_env,b),a fi
+ if numeric a:: if (a>=!2)and(a<=!20)::b for i==0 upto a-!2::,b endfor else::(_tmp_env,b),a fi
else:: (_tmp_env,b),a fi
else:: _nop fi
enddef;
-tertiarydef a bop_bqu b =
- if (known a)and(numeric b)::
- if numeric a:: if ((a>=!2)and(a<=!20))or((a>=?3)and(a<=?20)):: (_chg_len,b),a,(_chg_len,_end)
- else:: (_tmp_len,b),a fi
- else:: (_tmp_len,b),a fi
- else:: _nop fi
-enddef;
+tertiarydef a bop_bqu b = if (known a)and(numeric b):: (_tmp_len,b),a else:: _nop fi enddef;
%-------------------------------------------------------------------------------------------------
-def chg_length primary n = if numeric n:: (_chg_len,n) else:: _nop fi enddef;
+def set_length primary n = if numeric n:: (_chg_len,n) else:: _nop fi enddef;
def rot_angle primary n = if numeric n:: (_rot_ang,n) else:: _nop fi enddef;
def cyc_atom primary n = if numeric n:: (_cyc,n) else:: _nop fi enddef;
-def jump_atom secondary n = if n>=pcode_int_start:: move_pos(n) else::(_jp_atom,n) fi enddef;
-def jump_atom_abs secondary n = if numeric n::
- if n>=pcode_int_start::(_jp_atom,$1),move_pos(n) else::(_jp_atom,$n) fi else:: _nop fi enddef;
+def jump_atom secondary n = if n>=pcode_int_start:: move_pos(n) else:: (_jp_atom,n) fi enddef;
+def jump_atom_abs secondary n = if n>=pcode_int_start:: @.$1,move_pos(n) else:: @.$n fi enddef;
def group_si secondary n = if numeric n:: (_group_si,n) else:: _nop fi enddef;
def group_dm secondary n = if numeric n:: (_group_dm,n) else:: _nop fi enddef;
def group_wf secondary n = if numeric n:: (_group_wf,n) else:: _nop fi enddef;
def group_zf secondary n = if numeric n:: (_group_zf,n) else:: _nop fi enddef;
-def group_wv secondary n = if numeric n:: /n~wv else:: _nop fi enddef;
%-------------------------------------------------------------------------------------------------
def redefine_tokens=
- save /,//,*,/*,*/,*/*,~,^,`,',<,>,:,=,@,@$,$,$$,&,&$,#,##,|,||,--,---,----,_,
- CP,CA,MB,CB,CC,DL;
+ save /,//,*,/*,*/,*/*,~,^,`,',<,>,:,=,@,@$,$,$$,&,&$,#,##,|,||,--,---,----,_,CP,CA,MB,CB,CC,DL;
| :=mark_adress; || :=reset_adress; ##:=reset_length; let ' == bop_qut; let = ==bop_equ;
let : ==bop_col; let ^ ==bop_hat; let ~ ==bop_til; let > ==bop_lth; let ` ==bop_bqu;
- let -- ==fuse__; let --- ==fuse___; let ---- ==fuse____; let @$ ==jump_atom_abs;
- let < ==rot_angle; let @ ==jump_atom; let & ==cyc_atom; let # ==chg_length; let / ==group_si;
- let // ==group_dm; let */ ==group_wf; let /* ==group_zf; let */* ==group_wv;
- let CP == pcode_add; let CA ==pcode_add_adrA; let CB ==pcode_add_adrB; let _ ==from_until;
+ let -- ==fuse__; let --- ==fuse___; let ---- ==fuse____; let < ==rot_angle; let @ ==jump_atom;
+ let & ==cyc_atom; let # ==set_length; let / ==group_si; let // ==group_dm; let */ ==group_wf;
+ let /* ==group_zf; let CP == pcode_add; let CA ==pcode_add_adrA; let CB ==pcode_add_adrB;
+ let _ ==from_until; def */* expr p == /p~wv enddef;
def DL(expr p)==CP(_set_adrB,p) CP(_set_line,dl) enddef; def MB(expr p)==CP(_mk_bond,p) enddef;
def CC(expr p)==CP(_com,p) enddef; def $ ==abs_adress enddef; def &$ ==&.$ enddef;
- def * primary p == (_numeric_inv,p) enddef; def $$ == read_adr enddef;
+ def $$ == read_adr enddef; def * primary n == (n+0.1) enddef; def @$ ==jump_atom_abs enddef;
enddef;
%=================================================================================================
def read_mcf_string(expr s)=
begingroup
- save lens,at_colequ,at_binop,prs_cnt,pre_cnt,fus_cnt;
- temps:=s; lens:=length(temps);
+ save len_block,at_colequ,at_binop,prs_cnt,pre_cnt,fus_cnt;
+ temps:=s; len_block:=length(temps);
block_cnt:=split_str(temps,",")(block_s);
block_s[incr block_cnt]:="(_com,_term)";
%------------------------------------------------------------------------------
@@ -386,12 +362,11 @@
for i=1 upto block_cnt:
error_type[i]:=check_block(block_s[i]);
if error_type[i]=0:
- at_colequ:=binop_cnt:=prs_cnt:=pre_cnt:=qut_cnt:=fus_cnt:=0;
- lens:=length(block_s[i]);
- for j=1 upto lens:
+ at_colequ:=binop_cnt:=prs_cnt:=pre_cnt:=qut_cnt:=0;
+ len_block:=length(block_s[i]);
+ for j=1 upto len_block:
tempc:=substring(j-1,j) of block_s[i];
- if substring(j-1,j+1) of block_s[i]="--": fus_cnt:=fus_cnt+1;
- ef tempc="'": qut_cnt:=qut_cnt+1;
+ if tempc="'": qut_cnt:=qut_cnt+1;
ef tempc="(": prs_cnt:=prs_cnt+1;
ef tempc=")": pre_cnt:=pre_cnt+1;
ef (tempc=":")or(tempc="="): at_colequ:=j;
@@ -398,16 +373,19 @@
fi
exitif at_colequ>0;
endfor
- if ((at_colequ>0)and(qut_cnt>0)and(prs_cnt=pre_cnt))or(fus_cnt>0):
- binop_cnt:=fus_cnt;
+ if (at_colequ>0)and(qut_cnt>0)and(prs_cnt=pre_cnt):
+ binop_cnt:=0;
for j=1 upto at_colequ-1:
tempc:=substring(j-1,j) of block_s[i];
- if (tempc="^")or(tempc="`")or(tempc="~")or(tempc=">")or(tempc="_"): binop_cnt:=1; fi
+ temps:=substring(j-1,j+1) of block_s[i];
+ if (tempc="^")or(tempc="`")or(tempc="~")or(tempc=">")or(tempc="_")or(temps="--"):
+ binop_cnt:=1;
+ fi
exitif binop_cnt>0;
endfor
if binop_cnt>0:
block_s[i]:="$$("&substring(0,at_colequ-1) of block_s[i]&")"&
- substring(at_colequ-1,lens) of block_s[i];
+ substring(at_colequ-1,len_block) of block_s[i];
fi
fi
else: message_error(i,error_type[i]);
@@ -424,7 +402,7 @@
mcode_b[mcode_cnt]:=i;
ef numeric list::
if list==_nop:: message_error(i,6);
- ef list>=pcode_emb_start:: expand_pcode_b(list,i);
+ ef list>=pcode_emb_start:: expand_pcode(list,i);
else:: mcode_x[Incr mcode_cnt]:=_mk_bond; mcode_y[mcode_cnt]:=list;
mcode_b[mcode_cnt]:=i;
fi
@@ -455,9 +433,9 @@
endgroup
enddef;
%-------------------------------------------------------------------------------------------------
-def expand_pcode_b(expr a,b)=
+def expand_pcode(expr a,b)=
for i==1 upto pcode_cnt[a]::
- if pcode_x[a][i]>=pcode_emb_start:: expand_pcode_b(pcode_x[a][i],b);
+ if pcode_x[a][i]>=pcode_emb_start:: expand_pcode(pcode_x[a][i],b);
else:: mcode_x[Incr mcode_cnt]:=pcode_x[a][i]; mcode_y[mcode_cnt]:=pcode_y[a][i];
mcode_b[mcode_cnt]:=b;
fi
@@ -464,15 +442,6 @@
endfor
enddef;
%-------------------------------------------------------------------------------------------------
-def expand_pcode(expr a)=
- for i==1 upto pcode_cnt[a]::
- if pcode_x[a][i]>=pcode_emb_start:: expand_pcode(pcode_x[a][i]);
- else:: mcode_x[Incr mcode_cnt]:=pcode_x[a][i]; mcode_y[mcode_cnt]:=pcode_y[a][i];
- mcode_b[mcode_cnt]:=0;
- fi
- endfor
-enddef;
-%-------------------------------------------------------------------------------------------------
vardef read_adr(text t)=
save ';
let ' == , ;
@@ -498,8 +467,7 @@
pcode_x[pcode_int][2]:=_numeric; pcode_y[pcode_int][2]:=b; pcode_cnt[pcode_int]:=2;
ef (a>=pcode_int_start)and(b LT pcode_int_start)::
if b>=pcode_emb_start:: pcode_x[a][Incr pcode_cnt[a]]:=b;
- else:: pcode_x[a][Incr pcode_cnt[a]]:=_numeric; pcode_y[a][pcode_cnt[a]]:=b;
- fi
+ else:: pcode_x[a][Incr pcode_cnt[a]]:=_numeric; pcode_y[a][pcode_cnt[a]]:=b; fi
else:: pcode_x[Incr pcode_int][1]:=a; pcode_x[pcode_int][2]:=b; pcode_cnt[pcode_int]:=2;
fi
ef (numeric a)and(pair b)::
@@ -526,15 +494,16 @@
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def fuse_ring(expr a,b) =
- CP(_jp_bond,a) CP(_rot_ang,180) CP(_get_len,a) for i==1 upto b-2:: MB(360 DIV b) endfor
+ CP(_jp_bond,a) CP(_rot_ang,180) CP(_get_len,a) for i==3 upto b:: MB(360 DIV b) endfor
CP(_set_len,_end) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi
enddef;
%-------------------------------------------------------------------------------------------------
def fuse_ring_bonds(expr s,e,b,c) =
CP(_jp_bond,s) CP(_rot_ang,180)
- if b==6:: CP(_set_len,1) for i==1 upto c-1:: MB(60) endfor
+ if b==6:: CP(_set_len,1) for i==2 upto c:: MB(60) endfor
ef b==5:: if c==2:: CP(_set_len,1.25) MB(80) ef c==3:: CP(_set_len,1.1) MB(78) MB(72) fi
- ef b==4:: CP(_set_len,1.225) MB(105) fi
+ ef b==4:: CP(_set_len,1.225) MB(105)
+ fi
CP(_set_len,_end) if e<=0:: CP(_cyc_eB,e-c+1) else:: CP(_cyc_eB,e) fi
enddef;
%-------------------------------------------------------------------------------------------------
@@ -541,7 +510,8 @@
def fuse_ring_size(expr a,b,c) =
CP(_jp_bond,a) CP(_rot_ang,180) CP(_set_len,c)
if b==5:: MB(72-((10c-9) MUL 1.5)) MB(63+10c) MB(63+10c)
- ef b==6:: MB(68-10c) for i==1 upto 3:: MB(60+(5c-4)) endfor fi
+ ef b==6:: MB(68-10c) for i==1 upto 3:: MB(60+(5c-4)) endfor
+ fi
CP(_set_len,_end) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi
enddef;
%=================================================================================================
@@ -551,12 +521,7 @@
if (b>=si)and(b<=bd_)::
if a>=pcode_int_start::
for i==1 upto pcode_cnt[a]::
- if pcode_x[a][i]==_numeric:: CP(_set_adrB,pcode_y[a][i]) CP(_set_line,b)
- elseif pcode_x[a][i]==_numeric_inv::
- if b==dl:: CP(_set_adrB,pcode_y[a][i]) CP(_set_line,dr)
- ef b==dr:: CP(_set_adrB,pcode_y[a][i]) CP(_set_line,dl)
- fi
- fi
+ if pcode_x[a][i]==_numeric:: CP(_set_adrB,pcode_y[a][i]) CP(_set_line,b) fi
endfor
else:: CP(_set_adrB,a) CP(_set_line,b)
fi
@@ -568,11 +533,10 @@
if pcode_x[a][i]==_numeric::
if b==Ph1:: fuse_ring(ay,6) DL(-2) DL(-4)
ef b==Ph2:: fuse_ring(ay,6) DL(-1) DL(-3) DL(-5)
- else:: fuse_ring(ay,b-?3+3) fi
+ else:: fuse_ring(ay,b-?3+3)
+ fi
ef pcode_x[a][i]==_fuse_ext::
- if b==?6:: fuse_ring_bonds(param_e[ay][1],param_e[ay][2],6,6-param_e[ay][3])
- ef b==?5:: fuse_ring_bonds(param_e[ay][1],param_e[ay][2],5,5-param_e[ay][3])
- ef b==?4:: fuse_ring_bonds(param_e[ay][1],param_e[ay][2],4,2) fi
+ fuse_ring_bonds(param_e[ay][1],param_e[ay][2],b-?4+4,b-?4+4-param_e[ay][3])
fi
endfor
else::
@@ -580,14 +544,21 @@
ef b==Ph2:: fuse_ring(a,6) DL(-1) DL(-3) DL(-5)
ef b>=pcode_int_start::
if (pcode_x[b][1]==_chg_len)and(pcode_x[b][2]>=?5)and(pcode_x[b][2]<=?6)::
- fuse_ring_size(a,pcode_x[b][2]-?3+3,pcode_y[b][1]) fi
+ fuse_ring_size(a,pcode_x[b][2]-?3+3,pcode_y[b][1])
+ fi
else:: fuse_ring(a,b-?3+3)
fi
fi
+ ef pair a::
+ if xpart a==_fuse_ext::
+ ay:=ypart a;
+ fuse_ring_bonds(param_e[ay][1],param_e[ay][2],b-?4+4,b-?4+4-param_e[ay][3])
+ fi
fi
else:: message_error(block_cnt,6);
fi
- elseif color b:: cntC:=cntC+1; color_list[cntC]:=b; CB(_set_colorB,cntC,a) fi
+ ef color b:: cntC:=cntC+1; color_list[cntC]:=b; CB(_set_colorB,cntC,a)
+ fi
pcode_int
enddef;
%-------------------------------------------------------------------------------------------------
@@ -599,32 +570,28 @@
fi
if f_type==0::
if (b GT pcode_emb_start)and(b<=pcode_atm_end):: CA(_chg_atom,b,a)
- ef b==NH:: CA(_chg_atom,N,a) if f_expand==0:: CP(_tmp_line,nl) fi
- CC(_group_s) CA(_group_si,H,a) CC(_group_e)
- ef b==N?:: CA(_chg_atom,N,a) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e)
+ ef b==NH:: CA(_chg_atom,N,a) if f_expand==0:: CP(_tmp_line,nl) fi
+ CC(_group_s) CA(_group_si,H,a) CC(_group_e)
+ ef b==N?:: CA(_chg_atom,N,a) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e)
ef b==N?2:: CA(_chg_atom,N,a) CC(_group_s) CA(_group_si,!,a) CC(_group_e)
- ef b==?O:: CC(_group_s) CA(_group_dm,O,a) CC(_group_e)
- ef b==?NH:: CC(_group_s) CA(_group_dm,NH,a) CC(_group_e)
- ef b==??:: CP(_tmp_rot, 35) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e)
- CP(_tmp_rot,-35) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e)
- ef b==n_:: CC(_group_s) CP(_set_add,MIS) CP(_chg_add,a) CC(_group_e)
- ef b==p_:: CC(_group_s) CP(_set_add,PLS) CP(_chg_add,a) CC(_group_e)
+ ef b==??:: CP(_tmp_rot, 35) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e)
+ CP(_tmp_rot,-35) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e)
+ ef b==n_:: CC(_group_s) CA(_set_charge,MIS,a) CC(_group_e)
+ ef b==p_:: CC(_group_s) CA(_set_charge,PLS,a) CC(_group_e)
ef b==_nop:: message_error(block_cnt,6);
fi
ef f_type==1::
- if a>=pcode_emb_start::
+ if numeric a::
CC(_group_s)
- for i==1 upto pcode_cnt[a]::
- if pcode_x[a][i]==_numeric:: CP(_set_adrA,pcode_y[a][i]) CP(bx,by)
- ef pcode_x[a][i]==_numeric_inv::
- if bx==_group_wf:: CP(_set_adrA,pcode_y[a][i]) CP(_group_zf,by)
- ef bx==_group_zf:: CP(_set_adrA,pcode_y[a][i]) CP(_group_wf,by)
+ if a>=pcode_emb_start::
+ for i==1 upto pcode_cnt[a]::
+ if pcode_x[a][i]==_numeric:: CP(_set_adrA,pcode_y[a][i]) CP(bx,by)
+ else:: CP(pcode_x[a][i],pcode_y[a][i])
fi
- else:: CP(pcode_x[a][i],pcode_y[a][i])
- fi
- endfor
+ endfor
+ else:: CA(bx,by,a)
+ fi
CC(_group_e)
- else:: CC(_group_s) CA(bx,by,a) CC(_group_e)
fi
ef f_type==2:: cntC:=cntC+1; color_list[cntC]:=b; CA(_set_colorA,cntC,a)
fi
@@ -676,7 +643,8 @@
B[i]ang:=angB[i]; B[i]up:=dir(angB[i]);
B[i]down:=dir(angB[i]+180); B[i]left:=dir(angB[i]+90); B[i]right:=dir(angB[i]-90);
endfor
- t addto mol_pic[cntM] also currentpicture; clearit;
+ t addto mol_pic[cntM] also currentpicture;
+ clearit;
endgroup;
enddef;
%-------------------------------------------------------------------------------------------------
@@ -710,7 +678,7 @@
save temp_strA,temp_cntB,f_bra,f_term,f_at,f_lineT,f_rotT,f_lenT,f_envT,angL,cpos,tpos,factor,
m_wd,m_ht,raise_pos,slen,sdir,char_wd,char_ht,tcol,f_col,knownA,markA,markB,saveA,saveB,
lenC,lenL,lenT,lineT,angT,rotT,envT,envB,posBs,posBe,group_cnt,group_parts,group_line,
- group_len,group_env,group_rot,colorA,colorB,save_lenL,save_lenT,
+ group_len,group_env,group_rot,colorA,colorB,save_lenS,save_lenL,
aW,aH,fW,fH,hW,hW,hH,qH,fP,hP,ww,aw,ap,am,Ls,Le,pA,zA,zL;
numeric group_adr[],group_line[],group_len[],group_env[],group_rot[],group_parts[],group_lenL[],
colorA[],colorB[];
@@ -718,8 +686,7 @@
path frameA[],zA,zL;
%-----------------------------------------------------------------------------------------------
if f_expand=1: lenC:=1; else: lenC:=-ratio_chain_ring; fi
- cntA:=cntB:=cntC:=group_num:=0; str_tbl[0]:="C"; str_cnt:=2000; save_lenL:=save_lenT:=lenC;
- %-----------------------------------------------------------------------------------------------
+ cntA:=cntB:=cntC:=group_num:=0; str_tbl[0]:="C"; str_cnt:=2000; save_lenL:=save_lenS:=lenC;
fig_wd:=xpart(fsize); fig_ht:=ypart(fsize);
%===============================================================================================
read_mcf_string(s);
@@ -727,8 +694,8 @@
backboneA:=cntA; backboneB:=cntB;
if (group_num>0)and(not scan_bit(sw_omit,Group)): expand_group(1); fi
%-scaling---------------------------------------------------------------------------------------
- if blength>1: blen:=blength; proc_size_setup; proc_skeleton; proc_scaling;
- elseif blength>0: blen:=fig_wd*blength; proc_size_setup; proc_skeleton; proc_scaling;
+ if blength>1: blen:=blength; proc_size_setup; proc_skeleton; proc_scaling;
+ ef blength>0: blen:=fig_wd*blength; proc_size_setup; proc_skeleton; proc_scaling;
else:
blen:=3mm;
proc_size_setup;
@@ -752,8 +719,7 @@
%-----------------------------------------------------------------------------------------------
for i=1 upto cntA:
if addA[i]<>0:
- tempc:=char(addA[i]);
- if tempc="+": chargeA[i]:=1; ef tempc="-": chargeA[i]:=-1; else: chargeA[i]:=0; fi
+ if addA[i]=PLS: chargeA[i]:=1; ef addA[i]=MIS: chargeA[i]:=-1; else: chargeA[i]:=0; fi
else: chargeA[i]:=0;
fi
endfor
@@ -807,19 +773,20 @@
endgroup;
enddef;
%-------------------------------------------------------------------------------------------------
-def add_group(expr a,y)=
- group_adr[incr group_num]:=a;
- if lenL<>lenC: if lenL>=0: group_len[group_num]:=group_lenL[group_num]:=-lenL;
- else: group_len[group_num]:=group_lenL[group_num]:=lenL;
- fi
- else: group_len[group_num]:=lenT; group_lenL[group_num]:=lenC;
+def add_group(expr p)=
+ if f_at=1: nA:=adrT; else: nA:=cntA+1; fi
+ if checkA(nA):
+ group_adr[incr group_num]:=nA;
+ if lenL<>lenC: if lenL>=0: group_len[group_num]:=group_lenL[group_num]:=-lenL;
+ else: group_len[group_num]:=group_lenL[group_num]:=lenL; fi
+ else: group_len[group_num]:=lenT; group_lenL[group_num]:=lenC; fi
+ group_line[group_num]:=lineT; group_env[group_num]:=envT;
+ group_rot[group_num]:=rotT; group_parts[group_num]:=p;
+ if f_lineT=0: lineT:=si; fi
+ if f_lenT=0: lenT:=lenC; fi
+ if f_rotT=0: rotT:=0; fi
+ if f_envT=0: envT:=hz; fi
fi
- group_line[group_num]:=lineT; group_env[group_num]:=envT;
- group_rot[group_num]:=rotT; group_parts[group_num]:=y;
- if f_lineT=0: lineT:=si; fi
- if f_lenT=0: lenT:=lenC; fi
- if f_rotT=0: rotT:=0; fi
- if f_envT=0: envT:=hz; fi
enddef;
%-------------------------------------------------------------------------------------------------
def expand_group(expr n)=
@@ -834,14 +801,14 @@
if group_env[i]<>hz: put_group(_chg_env,group_env[i]) fi
put_group(_mk_bond,group_rot[i])
if group_parts[i]<>NO_ATOM:
- if group_lenL[i]<>lenC: put_group(_set_len,group_lenL[i]) fi
+ if group_lenL[i]<>lenC: put_group(_chg_len,group_lenL[i]) fi
for j=1 upto pcode_cnt[group_parts[i]]:
- if pcode_x[group_parts[i]][j]>=pcode_emb_start: expand_pcode(pcode_x[group_parts[i]][j])
+ if pcode_x[group_parts[i]][j]>=pcode_emb_start: expand_pcode(pcode_x[group_parts[i]][j],0)
else: put_group(pcode_x[group_parts[i]][j],pcode_y[group_parts[i]][j])
fi
endfor
fi
- put_group(_chg_env,hz) put_group(_com,_term) put_group(_com,_rest) put_group(_set_len,_end)
+ put_group(_chg_env,hz) put_group(_com,_term) put_group(_com,_rest) put_group(_chg_len,_end)
endfor
proc_bond_atom(save_mcode_cnt+1);
if group_num>save_group_num: expand_group(save_group_num+1); fi
@@ -890,44 +857,43 @@
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def proc_bond_atom(expr n)=
- f_bra:=f_term:=rotT:=f_lineT:=f_rotT:=f_lenT:=f_envT:=temp_strA:=f_at:=0;
+ f_bra:=f_term:=rotT:=f_lineT:=f_rotT:=f_lenT:=f_envT:=temp_strA:=f_at:=f_inv:=0;
addAT:=markA:=markB:=saveA:=saveB:=sB[0]:=0; eB[0]:=1;
lenL:=lenT:=lenC; lineT:=si; envB:=envT:=hz;
%-----------------------------------------------------------------------------------------------
- for i=n upto mcode_cnt: pX:=mcode_x[i]; pY:=mcode_y[i]; pB:=mcode_b[i];
+ for i=n upto mcode_cnt:
+ pX:=mcode_x[i]; pY:=mcode_y[i]; pB:=mcode_b[i];
if pX=_mk_bond: if (pY=0)and(rotT<>0): rotT:=0; fi add_atom(0);
- ef pX=_set_adrA: adrT:=getA(pY);
- ef pX=_set_adrB: adrT:=getB(pY);
+ ef pX=_set_adrA: if (pY mod 1)>0: f_inv:=1; pY:=round pY; fi adrT:=getA(pY);
+ ef pX=_set_adrB: if (pY mod 1)>0: f_inv:=1; pY:=round pY; fi adrT:=getB(pY);
ef pX=_com: if pY=_mark: saveA:=markA; saveB:=markB; markA:=cntA; markB:=cntB;
ef pY=_rest: markA:=saveA; markB:=saveB;
ef pY=_moff: markA:=markB:=0;
ef pY=_term: termA;
ef pY=_group_s: f_at:=1; if lineT<>si: f_lineT:=1; fi if rotT<>0: f_rotT:=1; fi
- if lenT<>lenC: f_lenT:=1; fi if envT<>hz: f_envT:=1; fi
+ if lenT<>lenC: f_lenT:=1; fi if envT<>hz: f_envT:=1; fi
ef pY=_group_e: f_at:=f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=0;
- lineT:=si; lenT:=lenC; envT:=hz;
- fi
+ lineT:=si; lenT:=lenC; envT:=hz; fi
ef pX=_set_atom: temp_strA:=pY;
- ef pX=_group_si: if f_at=1: if checkA(adrT): add_group(adrT,pY); fi
- else: add_group(cntA+1,pY); fi
- ef pX=_group_dm: if f_at=1: if checkA(adrT): lineT:=dm; add_group(adrT,pY); fi
- else: lineT:=dm; add_group(cntA+1,pY); fi
- ef pX=_group_wf: if f_at=1: if checkA(adrT): lineT:=wf; add_group(adrT,pY); fi
- else: lineT:=wf; add_group(cntA+1,pY); fi
- ef pX=_group_zf: if f_at=1: if checkA(adrT): lineT:=zf; add_group(adrT,pY); fi
- else: lineT:=zf; add_group(cntA+1,pY); fi
- ef pX=_jp_bond: nB:=getB(pY); nB:=checkBn(nB); termA; sB[cntB+1]:=sB[nB]; f_bra:=1;
- ef pX=_jp_atom: nA:=getA(pY); nA:=checkAn(nA); termA; sB[cntB+1]:=nA; f_bra:=1;
- ef pX=_jp_absA: sB[cntB+1]:=pY; f_bra:=1; temp_cntB:=cntB;
+ ef pX=_group_si: add_group(pY);
+ ef pX=_group_dm: lineT:=dm; add_group(pY);
+ ef pX=_group_wf: if f_inv=1: lineT:=zf; f_inv:=0; else: lineT:=wf; fi add_group(pY);
+ ef pX=_group_zf: if f_inv=1: lineT:=wf; f_inv:=0; else: lineT:=zf; fi add_group(pY);
+ ef pX=_jp_bond: nB:=getB(pY); nB:=checkBn(nB); termA; sB[cntB+1]:=sB[nB]; f_bra:=1;
+ ef pX=_jp_atom: nA:=getA(pY); nA:=checkAn(nA); termA; sB[cntB+1]:=nA; f_bra:=1;
+ ef pX=_jp_absA: sB[cntB+1]:=pY; f_bra:=1; temp_cntB:=cntB;
ef pX=_chg_atom: if checkA(adrT): strA[adrT]:=pcode_y[pY][1]; fi
- ef pX=_tmp_len: lenT:=pY;
- ef pX=_set_len: if pY=_end: lenL:=save_lenT;
- else: save_lenT:=lenL;
- if pY=_ring: if lenL<0: lenL:=1; fi else: lenL:=pY; fi
+ ef pX=_tmp_len: lenT:=pY;
+ ef pX=_chg_len: if pY=_end: lenL:=save_lenS; else: save_lenS:=lenL; lenL:=pY; fi
+ ef pX=_set_len: if pY=_end: lenL:=save_lenL;
+ ef pY=_ring: save_lenL:=lenL; if lenT<>lenC:lenL:=lenT; ef lenL<0:lenL:=1; fi
+ ef pY=_chain: save_lenL:=lenL; if lenT<>lenC:lenL:=lenT; fi
+ else: save_lenL:=lenL; lenL:=pY; fi
+ ef pX=_get_len: nB:=getB(pY); save_lenL:=lenL; lenL:=lenB[nB];
+ ef pX=_set_line: if checkB(adrT):
+ if f_inv=1: f_inv:=0; if pY=dl: pY:=dr; ef pY=dr: pY:=dl; fi fi
+ lineB[adrT]:=pY;
fi
- ef pX=_chg_len: if pY=_end: lenL:=save_lenL; else: save_lenL:=lenL; lenL:=pY; fi
- ef pX=_get_len: nB:=getB(pY); nB:=checkBn(nB); save_lenT:=lenL; lenL:=lenB[nB];
- ef pX=_set_line: if checkB(adrT): lineB[adrT]:=pY; fi
ef pX=_tmp_line: lineT:=pY;
ef pX=_tmp_rot: rotT:=pY;
ef pX=_cyc: nA:=getA(pY); nA:=checkAn(nA); add_atom(nA);
@@ -937,10 +903,8 @@
ef pX=_tmp_env: envT:=pY;
ef pX=_set_colorA: if checkA(adrT): colorA[adrT]:=pY; fi
ef pX=_set_colorB: if checkB(adrT): colorB[adrT]:=pY; fi
- ef pX=_set_add: addAT:=pY;
- ef pX=_chg_add: nA:=getA(pY); nA:=checkAn(nA);
- addA[nA]:=addAT; addAT:=0; if rotT<>0: add_rot[nA]:=rotT; fi
- else:
+ ef pX=_add_charge: addAT:=pY;
+ ef pX=_set_charge: if checkA(adrT): addA[adrT]:=pY; if rotT<>0: add_rot[adrT]:=rotT; fi fi
fi
endfor
enddef;
@@ -951,8 +915,7 @@
if f_bra=0: strA[incr cntA]:=temp_strA; sB[cntB]:=cntA;
addA[cntA]:=addAT; addAT:=temp_strA:=add_rot[cntA]:=0;
if rotT<>0: add_rot[cntA]:=rotT; rotT:=0; fi
- else: f_bra:=0;
- fi
+ else: f_bra:=0; fi
if n=0: eB[cntB]:=cntA+1; f_term:=0; else: eB[cntB]:=n; f_term:=1; fi
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -960,13 +923,11 @@
markA:=markB:=cntA:=cntB:=f_bra:=rotT:=f_term:=angA[0]:=angB[0]:=angX[0]:=0;
lineT:=si; envT:=envB:=hz; angT:=mangle; posA[0]:=posBs:=posBe:=(0,0);
%-----------------------------------------------------------------------------------------------
- for i=1 upto mcode_cnt:
- pX:=mcode_x[i]; pY:=mcode_y[i]; pB:=mcode_b[i];
+ for i=1 upto mcode_cnt: pX:=mcode_x[i]; pY:=mcode_y[i]; pB:=mcode_b[i];
if pX=_mk_bond: if (pY=0)and(rotT<>0):pY:=rotT; rotT:=0; fi add_bond(pY,1);
ef pX=_com: if pY=_mark: saveA:=markA; saveB:=markB; markA:=cntA; markB:=cntB;
ef pY=_rest: markA:=saveA; markB:=saveB;
- ef pY=_moff: markA:=markB:=0; ef pY=_term: termB;
- fi
+ ef pY=_moff: markA:=markB:=0; ef pY=_term: termB; fi
ef pX=_jp_bond: adrT:=getB(pY); adrT:=checkBn(adrT);
termB; posBs:=posA[sB[adrT]]; angT:=angB[adrT]; f_bra:=1; rotT:=0;
ef pX=_jp_atom: adrT:=getA(pY); adrT:=checkAn(adrT);
@@ -981,7 +942,6 @@
ef pX=_cyc: nA:=getA(pY); nA:=checkAn(nA); add_bond(angle(posA[nA]-posBs)-angT,0);
ef pX=_cyc_sB: nA:=getB(pY); nA:=checkBn(nA); add_bond(angle(posA[sB[nA]]-posBs)-angT,0);
ef pX=_cyc_eB: nA:=getB(pY); nA:=checkBn(nA); add_bond(angle(posA[eB[nA]]-posBs)-angT,0);
- else:
fi
endfor
enddef;
@@ -1013,7 +973,10 @@
else: if envB>=pcode_emb_start: pcode_y[envB][cntB-temp_cntB]
else: if envB=hz: if n=0: 60 ef n<=90: -60 ef n<=180: 60 ef n<270: -60 else: 60 fi
ef envB=vt: if n=0: -60 ef n<90: 60 ef n<=180: -60 ef n<=270: 60 else: -60 fi
- ef abs(envB)<=180: envB fi fi fi
+ ef abs(envB)<=180: envB
+ fi
+ fi
+ fi
fi
enddef;
%-------------------------------------------------------------------------------------------------
@@ -1024,8 +987,7 @@
vardef checkA(expr n)=
bA:=(n<=(cntA+iif(f_term=0,1,0)))and(n>=1)and(n mod 1=0); if not bA: message_error(pB,4) fi bA
enddef;
-vardef checkB(expr n)=
- bA:=(n<=cntB)and(n>=1)and(n mod 1=0); if not bA: message_error(pB,5) fi bA
+vardef checkB(expr n)= bA:=(n<=cntB)and(n>=1)and(n mod 1=0); if not bA: message_error(pB,5) fi bA
enddef;
vardef checkAn(expr n)= if checkA(n): n else: 1 fi enddef;
vardef checkBn(expr n)= if checkB(n): n else: 1 fi enddef;
@@ -1033,7 +995,8 @@
def termA=
if f_term=0: if f_bra=0: strA[incr cntA]:=temp_strA; addA[cntA]:=addAT; add_rot[cntA]:=rotT;
addAT:=temp_strA:=rotT:=0;
- else: f_bra:=0; fi
+ else: f_bra:=0;
+ fi
f_term:=1;
fi
enddef;
@@ -1173,8 +1136,7 @@
def bz_put(expr a,b,c,d)=
nB:=round(lenL/hash_gap);
for i=0 upto nB-1:
- nA:=i/nB; nD:=nA+ratio_hash_black/nB;
- fill nA[b,a]--nA[d,c]--nD[d,c]--nD[b,a]--cycle;
+ nA:=i/nB; nD:=nA+ratio_hash_black/nB; fill nA[b,a]--nA[d,c]--nD[d,c]--nD[b,a]--cycle;
endfor
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1381,10 +1343,10 @@
enddef;
%=================================================================================================
def proc_report_out=
+ file_output:=jobname&"-report.txt";
block_cnt:=split_str(mc,",")(block_s);
- file_output:=jobname&"-report.txt";
puts "===========================================================================";
- puts " No["&decimal(fig_num)&"],Name<"& EN&">,Category<"&CAT&">,File<"&file_input&">";
+ puts " Fig["&decimal(fig_num)&"],Name["& EN&"],Category["&CAT&"],File["&file_input&"]";
puts "---------------------------------------------------------------------------";
puts " Row["&decimal(mc_row)&"],Length["&decimal(length(mc))&"],Block"&
"["&decimal(block_cnt)&"]"&",BackboneA["&decimal(backboneA)&"]"&
@@ -1392,7 +1354,7 @@
puts "---------------------------------------------------------------------------";
for i=1 upto mc_row: puts (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor
puts "---------------------------------------------------------------------------";
- for i=1 upto block_cnt: puts "["&fdl(3)(i)&"] "&block_s[i]; endfor
+ for i=1 upto block_cnt: puts "["&fdr(3)(i)&"] "&block_s[i]; endfor
puts "- error , warning ---------------------------------------------------------";
for i=1 upto error_cnt:
puts error_s[error_e[i]]&" ["&decimal(error_b[i])&"] "&block_s[error_b[i]];
@@ -1415,7 +1377,7 @@
puts "---------------------------------------------------------------------------";
puts "< NO. >< bond (sdt)><angle +( +- )><length ( pt )>";
for i=1 upto cntB:
- nC:=lenB[i]; if nC=_size_atom: nC:=ratio_atom_bond; elseif nC<0: nC:=-nC; fi
+ nC:=lenB[i]; if nC=_size_atom: nC:=ratio_atom_bond; ef nC<0: nC:=-nC; fi
nB:=angB[i]; if nB>180: nB:=nB-360; fi
puts " B"&fdl(4)(i)&fdr(3)(sB[i])&" -> "&fdr(3)(eB[i])&
" ("&fdr(3)(bond_num[i])&")"&fdr(8)(round(angB[i]))&
@@ -1439,14 +1401,14 @@
%=================================================================================================
def proc_mol_out(expr n)=
if EN<>"-": EN_:=forbidden_to_underbar(EN); fi
- file_output:="m"&fit_zero(fig_num)&"-"&EN_&".mol";
%-V2000---------------------------------------------------------------------------------------
if n=2000:
+ file_output:="m2k_"&fit_zero(fig_num)&"-"&EN_&".mol";
puts ""; puts " -MCFtoMOL- "&fsl(20)(EN); puts "";
puts fdr(3)(cntA)&fdr(3)(cntB)&" 0 0 0 0 0 0 0 0999 V2000";
for i=1 upto cntA:
puts fdr(10)(xpart(posA[i])/blen)& fdr(10)(ypart(posA[i])/blen)&fdr(10)(0)&" "&
- fsl(2)(erase_char(str_tbl[strA[i]]))&" 0"&fdr(3)(bond_charge(chargeA[i]))&" 0 0";
+ fsl(2)(erase_char(str_tbl[strA[i]]))&" 0"&fdr(3)(bond_charge(chargeA[i]))&" 0 0";
endfor
for i=1 upto cntB:
if lineB[i]<>0: puts fdr(3)(sB[i])&fdr(3)(eB[i])&fdr(3)(bond_type(lineB[i]))&
@@ -1453,9 +1415,10 @@
fdr(3)(bond_stereo(lineB[i]))&" 0 0";
fi
endfor
- puts "M END";
+ puts "M END"; puts EOF;
%-V3000---------------------------------------------------------------------------------------
- elseif n=3000:
+ ef n=3000:
+ file_output:="m3k_"&fit_zero(fig_num)&"-"&EN_&".mol";
puts ""; puts " -MCFtoMOL- "&fsl(20)(EN); puts "";
puts " 0 0 0 0 0 0 0 0 0 0 0 V3000";
puts "M V30 BEGIN CTAB";
@@ -1474,7 +1437,8 @@
if bond_stereo(lineB[i])<>0: &" CFG="&decimal(bond_config(lineB[i])) fi;
fi
endfor
- puts "M V30 END BOND"; puts "M V30 END CTAB"; puts "M END"; fi
+ puts "M V30 END BOND"; puts "M V30 END CTAB"; puts "M END"; puts EOF;
+ fi
enddef;
%=================================================================================================
def proc_mc_out=
@@ -1553,7 +1517,7 @@
if f_expand=0:
CH3:=``("C{H_3_}")(C,H,H,H); CH2:=``("C{H_3_}")(C,H,H); CN:=``("CN")(C,N); OH:=``("OH")(O,H);
COOH:=``("COOH")(C,O,O,H); COONa:=``("COO{Na}")(C,O,O,Na); CHO:=``("CHO")(C,H,O);
- NO:=``("NO")(N,O); NO2:=``("N{O_2_}")(N,O,O); NH2:=``("N{H_2_}")(N,H,H);
+ NO:=``("NO")(N,O); NO2:=``("N{O_2_}")(N,O,O); NH2:=``("N{H_2_}")(N,H,H); HO:=``("OH")(O,H);
SH:=``("SH")(S,H); SO2H:=``("S{O_2_}H")(S,O,O,H); SO3H:=``("S{O_3_}H")(S,O,O,O,H);
ONa:=``("O{Na}")(O,Na); SO3Na:=``("S{O_3_}{Na}")(S,O,O,O,Na);
fi
@@ -1562,27 +1526,26 @@
!:=!1:='((_mk_bond,_auto_ang));
if f_expand=1:
NH:='(N,/H); CH3:='(/H,/H^60,/H^-60); NH2:='(N,/H^60,/H^-60); NO2:='(N,//O^60,//O^-60);
- OH:='(O,!,H); NO:='(N,!~dm,O); SH:='(S,!,H); SO2H:='(S,//O,!,OH);
- SO3H:='(S,//O^35,//O^-35,!,OH); CHO:='(//O,!,H); COOH:='(//O,!,OH); CN:='(!~tm,N);
- ONa:='(O,!,Na); SO3Na:='(S,//O^35,//O^-35,!,Na);
+ OH:='(O,/H); NO:='(N,//O); SH:='(S,/H); SO2H:='(S,//O^60,/OH^-60);
+ SO3H:='(S,//O^90,//O^-90,/OH); CHO:='(//O^-60,/H^60); COOH:='(//O^-60,/OH^60); CN:='(/N~tm);
+ ONa:='(O,/Na); SO3Na:='(S,//O^90,//O^-90,/Na);
else: NH:='(N,/H~nl);
fi
- ?:='((_group_si,NO_ATOM)); ?wf:=?w:='((_group_wf,NO_ATOM)); ?zf:=?z:='((_group_zf,NO_ATOM));
- ?dm:=?d:='((_group_dm,NO_ATOM)); ?O:='((_group_dm,O)); ?S:='((_group_dm,S));
- ?NH:='((_group_dm,NH));
+ ?:='(/NO_ATOM); ?wf:=?w:='(/*NO_ATOM); ?zf:=?z:='(*/NO_ATOM);
+ ?S:='(//S); ?O:='(//O); ?NH:='(//NH); ?H:='(/H); ?F:='(/F); ?OH:='(/OH); ?OH:='(/COOH);
+ ?NH2:='(/NH2); ?Cl:='(/Cl); ?2:='(/!); ?dm:=?d:='((_group_dm,NO_ATOM));
%-----------------------------------------------------------------------------------------------
- ?H:='(/H); ?F:='(/F); ?Cl:='(/Cl); ?OH:='(/OH); ?OH:='(/COOH); ?NH2:='(/NH2);
- for i=3 upto 20: ?[i]:='((_set_len,_ring),<((-180 DIV i)-90)
- for j==2 upto i:: ,(360 DIV i) endfor,(_cyc_sB,1-i),(_set_len,_end)); endfor
+ for i=3 upto 20: ?[i]:='((_set_len,_ring),<((-180 DIV i)-90) for j==2 upto i::,360 DIV i endfor
+ ,(_cyc_sB,1-i),(_set_len,_end));
+ endfor
+ for i==2 upto 20: ![i]:='((_set_len,_chain),! for j==2 upto i:: ,! endfor ,(_set_len,_end));
+ endfor
Ph:=Ph1:='(?6,-2=dl,-4=dl,-6=dl); Ph2:='(?6,-1=dl,-3=dl,-5=dl);
- %-----------------------------------------------------------------------------------------------
!db:=!d:='(!~db); !tm:=!t:='(!~tm); !wf:=!w:='(!~wf); !zf:=!z:='(!~zf); !wb:='(!~wb);
!zb:='(!~zb); !dl:='(!~dl); !dr:='(!~dr); !dm:='(!~dm); !d!:='(!~db,!); !!d:='(!,!db);
- !!d!:='(!,!db,!);
- for i==2 upto 20: ![i]:='(! for j==2 upto i:: ,! endfor); endfor
- ?!:='(?,!); ?!d:='(?,!d); ?!2:='(?,!2); ??!:='(?,?^60,60); ??:='(?^35,?^-35);
- !?:='(!,?); !?!:='(!?,!); !??!:='(!,??,!); !??:='(!,??); ?2:='(/!); !?2:='(!,?2); ?2!:='(?2,!);
- n_:='((_set_add,MIS)); p_:='((_set_add,PLS));
+ !!d!:='(!,!db,!); ?!:='(?,!); !?:='(!,?); ?!d:='(?,!d); ?!2:='(?,!2); ??!:='(?,?^60,60);
+ ??:='(?^35,?^-35); !?!:='(!?,!); !??!:='(!,??,!); !??:='(!,??); !?2:='(!,?2); ?2!:='(?2,!);
+ n_:='((_add_charge,MIS)); p_:='((_add_charge,PLS));
mark_adress:='((_com,_mark)); reset_adress:='((_com,_moff)); reset_length:='((_chg_len,_end));
%-----------------------------------------------------------------------------------------------
?F!F:='(/F,60,F); ?F?F!F:='(/F,/F^60,60,F); ?Br!Br:='(/Br,60,Br); ?Cl!Cl:='(/Cl,60,Cl);
@@ -1590,9 +1553,9 @@
%-----------------------------------------------------------------------------------------------
N!:='(N,!); N?:='(N,?); N!2:='(N,!3); N!2:='(N,!3); !N:='(!,N); N?!:='(N,?!); N?2:='(N,?2);
S?O:='(S,?O); S?O!:='(S?O,!); ?O?O:='(?O^-35,?O^35); S?O?O:='(S,?O?O); S?O?O!:='(S?O?O,!);
- O!:='(O,!); O!2:='(O,!2); O!3:='(O,!3); S!:='(S,!); S!2:='(S,!2); S!3:='(S,!3);
+ O!:='(O,!); O!2:='(O,!2); O!3:='(O,!3); S!:='(S,!); S!2:='(S,!2); S!3:='(S,!3); !S:='(!,S);
%-----------------------------------------------------------------------------------------------
- ?O!:='(?O,!); ?O!2:='(?O,!2); ?O!3:='(?O,!3); !?O:='(!,?O); !?O!:='(!,?O!);
+ ?O!:='(?O,!); ?O!2:='(?O,!2); ?O!3:='(?O,!3); !?O:='(!,?O); !?O!:='(!,?O!); ?O!O:='(?O,!,O);
NH!:='(NH,!); NH!2:='(NH,!2); !NH:='(!,NH); !NH!:='(!,NH!);
%-----------------------------------------------------------------------------------------------
!OH:='(!,OH); !SH:='(!,SH); !NH2:='(!,NH2); !S?O:='(!,S?O); !O:='(!,O); !dO:='(!d,O);
@@ -1624,13 +1587,13 @@
%-------------------------------------------------------------------------------------------------
def loadm(text t)=
begingroup
- save f_mcf,lines,unit_cnt,row_s,row_cnt,info_cnt,order,min_n,max_n,sign_at,sign_n,tag_s,
+ save f_mcf,unit_cnt,row_s,row_cnt,info_cnt,order,min_n,max_n,sign_at,sign_n,tag_s,line_cnt,
val_s,filter_n,filter_tag,filter_val,filter_sign,filter_cnt,filter_p,lib_unit_cnt,at_colon,
at_equal,at_less,at_greater,at_n,sort_tbl,key_s,sort_s,sign_s,sV,sT,header_s,sort_oder;
string row_s[][],sort_tbl[],key_s,filter_tag[],filter_val[],sign_s[],tag_s[][],val_s[][],sort_s,
header_s,sV,sT;
numeric row_cnt[],order[],order_tbl[],filter_sign[],filter_p[];
- lines:=f_mcf:=mc_row:=info_cnt:=filter_cnt:=lib_unit_cnt:=0; unit_cnt:=1;
+ line_cnt:=f_mcf:=mc_row:=info_cnt:=filter_cnt:=lib_unit_cnt:=0; unit_cnt:=1;
file_input:=default_library;
sign_s1:="="; sign_s2:="<>"; sign_s3:="<"; sign_s4:=">"; sign_s5:="<="; sign_s6:=">=";
header_s:="";
@@ -1642,13 +1605,10 @@
if at_colon>=2: sign_at:=at_colon; sign_n:=0; at_n:=1;
ef at_equal>=2: if (at_equal-1)=at_less: sign_at:=at_equal; sign_n:=5; at_n:=2;
ef (at_equal-1)=at_greater: sign_at:=at_equal; sign_n:=6; at_n:=2;
- else: sign_at:=at_equal; sign_n:=1; at_n:=1;
- fi
+ else: sign_at:=at_equal; sign_n:=1; at_n:=1; fi
ef at_greater>=2: if (at_greater-1)=at_less: sign_at:=at_greater; sign_n:=2; at_n:=2;
- else: sign_at:=at_greater; sign_n:=4; at_n:=1;
- fi
- ef at_less>=2: sign_at:=at_less; sign_n:=3; at_n:=1;
- fi
+ else: sign_at:=at_greater; sign_n:=4; at_n:=1; fi
+ ef at_less>=2: sign_at:=at_less; sign_n:=3; at_n:=1; fi
sT:=substring(0,sign_at-at_n) of list;
sV:=substring(sign_at,length(list)) of list;
%---------------------------------------------------------------------------------------------
@@ -1667,13 +1627,13 @@
endfor
%-----------------------------------------------------------------------------------------------
forever:
- line_s:=readfrom file_input;
- exitif line_s=EOF;
- firstc:=substring(0,1) of line_s;
+ lines:=readfrom file_input;
+ exitif lines=EOF;
+ firstc:=substring(0,1) of lines;
if firstc<>"%":
- row_s[unit_cnt][incr lines]:=line_s;
+ row_s[unit_cnt][incr line_cnt]:=lines;
if firstc=";":
- row_cnt[unit_cnt]:=lines; f_mcf:=lines:=0; filter_n:=1;
+ row_cnt[unit_cnt]:=line_cnt; f_mcf:=line_cnt:=0; filter_n:=1;
for i=1 upto filter_cnt: filter_p[i]:=0; endfor
sort_s:="";
for i=1 upto info_cnt:
@@ -1683,13 +1643,13 @@
for j=1 upto filter_cnt:
if filter_tag[j]=sT:
filter_p[j]:=1;
- if (filter_sign[j]>=3)and(is_num(sV)=1): line_s:=fix_num(sV); else: line_s:=sV; fi
- if filter_sign[j]=1: if not(line_s= filter_val[j]): filter_n:=0; fi
- ef filter_sign[j]=2: if not(line_s<>filter_val[j]): filter_n:=0; fi
- ef filter_sign[j]=3: if not(line_s< filter_val[j]): filter_n:=0; fi
- ef filter_sign[j]=4: if not(line_s> filter_val[j]): filter_n:=0; fi
- ef filter_sign[j]=5: if not(line_s<=filter_val[j]): filter_n:=0; fi
- ef filter_sign[j]=6: if not(line_s>=filter_val[j]): filter_n:=0; fi
+ if (filter_sign[j]>=3)and(is_num(sV)=1): lines:=fix_num(sV); else: lines:=sV; fi
+ if filter_sign[j]=1: if not(lines= filter_val[j]): filter_n:=0; fi
+ ef filter_sign[j]=2: if not(lines<>filter_val[j]): filter_n:=0; fi
+ ef filter_sign[j]=3: if not(lines< filter_val[j]): filter_n:=0; fi
+ ef filter_sign[j]=4: if not(lines> filter_val[j]): filter_n:=0; fi
+ ef filter_sign[j]=5: if not(lines<=filter_val[j]): filter_n:=0; fi
+ ef filter_sign[j]=6: if not(lines>=filter_val[j]): filter_n:=0; fi
fi
fi
endfor
@@ -1702,7 +1662,7 @@
info[unit_cnt]:=info_cnt:=split_str(header_s,";")(arg_s); header_s:="";
ef firstc<>"%":
if f_mcf=1: mc_row:=mc_row+1;
- else: if header_s="": header_s:=line_s; else: header_s:=header_s&line_s; fi
+ else: if header_s="": header_s:=lines; else: header_s:=header_s&lines; fi
fi
fi
fi
@@ -1722,14 +1682,14 @@
if key_s<>"":
for i=1 upto unit_cnt: order[i]:=0; endfor
for i=1 upto unit_cnt:
- if sort_oder=0: line_s:="~";
+ if sort_oder=0: lines:="~";
for j=1 upto unit_cnt:
- if order[j]=0: if sort_tbl[j]<line_s: line_s:=sort_tbl[j]; min_n:=j; fi fi
+ if order[j]=0: if sort_tbl[j]<lines: lines:=sort_tbl[j]; min_n:=j; fi fi
endfor
order[min_n]:=i; order_tbl[i]:=min_n;
- ef sort_oder=1: line_s:=" ";
+ ef sort_oder=1: lines:=" ";
for j=1 upto unit_cnt:
- if order[j]=0: if sort_tbl[j]>line_s: line_s:=sort_tbl[j]; max_n:=j; fi fi
+ if order[j]=0: if sort_tbl[j]>lines: lines:=sort_tbl[j]; max_n:=j; fi fi
endfor
order[max_n]:=i; order_tbl[i]:=max_n;
fi
@@ -1785,12 +1745,10 @@
err_type
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%=============================================================================================
vardef fix_num(expr s)=
temps:=s; nN:=scan_c(".",temps);
if nN=0: temps:=fsr(4)(temps); ef nN=1: temps:=" 0"&temps;
- ef nN=2: temps:=" "&temps; ef nN=3: temps:=" "&temps; ef nN=4: temps:=" "&temps;
- fi
+ ef nN=2: temps:=" "&temps; ef nN=3: temps:=" "&temps; ef nN=4: temps:=" "&temps; fi
temps
enddef;
%-------------------------------------------------------------------------------------------------
@@ -1808,14 +1766,12 @@
nN:=0; nA:=length(s);
if d=0: for i=n upto nA: if substring(i-1,i) of s=c: nN:=i; fi exitif nN>0; endfor
ef d=1: for i=n upto nA: if substring(i-1,i) of s<>c: nN:=i; fi exitif nN>0; endfor
- ef d=-1: for i=nA downto n: if substring(i-1,i) of s<>c: nN:=i; fi exitif nN>0; endfor
- fi
+ ef d=-1: for i=nA downto n: if substring(i-1,i) of s<>c: nN:=i; fi exitif nN>0; endfor fi
nN
enddef;
%-------------------------------------------------------------------------------------------------
vardef scan_c(expr c,s)=
- nN:=0; nA:=length(s);
- for i=1 upto nA: if substring(i-1,i) of s=c: nN:=i; fi exitif nN>0; endfor
+ nN:=0; nA:=length(s); for i=1 upto nA: if substring(i-1,i) of s=c: nN:=i; fi exitif nN>0; endfor
nN
enddef;
%-------------------------------------------------------------------------------------------------
@@ -1828,6 +1784,5 @@
enddef;
%-------------------------------------------------------------------------------------------------
vardef get_tag_var(expr s)(suffix t,v)=
- nN:=scan_c(":",s); t:=substring(0,nN-1) of s; v:=substring(nN,length(s)) of s;
-enddef;
+ nN:=scan_c(":",s); t:=substring(0,nN-1) of s; v:=substring(nN,length(s)) of s; enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
More information about the tex-live-commits
mailing list.