texlive[73011] Master/texmf-dist: mcf2graph (1dec24)

commits+karl at tug.org commits+karl at tug.org
Sun Dec 1 22:05:26 CET 2024


Revision: 73011
          https://tug.org/svn/texlive?view=revision&revision=73011
Author:   karl
Date:     2024-12-01 22:05:26 +0100 (Sun, 01 Dec 2024)
Log Message:
-----------
mcf2graph (1dec24)

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/doc/metapost/mcf2graph/template_soc.mp
    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	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,6 +1,13 @@
 *******************************************************************************
- Changelog of mcf2graph software package          by Akira Yamaji 2024-11-17
+ Changelog of mcf2graph software package          by Akira Yamaji 2024-12-01
 *******************************************************************************
+[ver. 5.15  / 2024-12-01]
+  -change syntax of separator inside @(..)
+   @(a,b) => @(a'b)
+  -update mcf2graph.mp
+  -update main_lib.mcf
+  -update MCF manual,example
+
 [ver. 5.14  / 2024-11-17]
   -change syntax of inverter inside {..}
    {n1,n2',n3..} => {n1,*n2,n3..}

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/README
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/README	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/README	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,7 +1,7 @@
 ********************************************************************************
  mcf2graph  : Convert Molecular Coding Format to graphics with MetaPost
  Author     : Akira Yamaji
- version    : 5.14 2024-11-17
+ version    : 5.15 2024-12-01
  E-mail     : mcf2graph at gmail.com
  Located at : http://www.ctan.org/pkg/mcf2graph
 ********************************************************************************
@@ -20,7 +20,7 @@
  ( 3) mcf_to_graph.cmd   Batch file for compile MCF lib
                           >mcf_to_graph template_lib.mcf
                          drag and drop library files on this batch
-                         create svg in ./template_lib
+                         create svg(default) in ./template_lib
  ( 4) mcf2graph.mp       Main macro of Metapost
  ( 5) mcf_exa_soc.mp     Metapost source file example
  ( 6) main_lib.mcf       MCF library file
@@ -31,8 +31,14 @@
  (11) mcf_example.tex    List of Molecule
  (12) mcf_example.pdf    PDF of (11) typeset with LuaLaTeX
 
-3. How to use mcf2graph with MetaPost
- Minimum requirement to use mcf2graph : mpost.exe,mpost.dll,mpost.mp,plain.mp
+3. Minimum required files to use mcf2graph
+ (1) mpost.exe
+ (2) mpost.dll
+ (3) mpost.mp
+ (4) plain.mp
+
+4. Use mcf2graph with MetaPost
+     -command line-
  (1) >mcf_to_graph        filename.mcf => output svg(default),png,mol,report
  (2) >mpost               filename.mp  => output svg file
  (3) >mpost -s ahangle=1  filename.mp  => output png file (600dpi)
@@ -43,8 +49,8 @@
  (8) >mpost -s ahlength=6 filename.mp  => output mol file(V3000)
  (9) >mpost -s ahlength=7 filename.mp  => output report file
 
-4. License
- mcf2graph ver 5.14   Copyright (c) 2013-2024   Akira Yamaji
+5. License
+ mcf2graph ver 5.15   Copyright (c) 2013-2024   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	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,8 +1,9 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% MCF metapost souce file example                 by Akira Yamaji  2024.11.17
+% MCF metapost souce file example                 by Akira Yamaji  2024.12.01
+% Public domain.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-if unknown mcftograph: input mcf2graph; fi  %%% it must be version 5.14
-message "* mcf_template 2024.11.17";
+if unknown mcftograph: input mcf2graph; fi  %%% it must be version 5.15
+message "* mcf_template 2024.12.01";
 message "";
 %------------------------------------------------------------------------------
 fsize:=(30mm,20mm);
@@ -20,7 +21,7 @@
 %%%%sw_comment:=1; loadm("CAT=biological","MW>=100","MW<=250","a:MW");
 %%%%savem("temp.mcf");                    % save to temp.mcf
 %%%%loadm("EN<>*");                       % select all
-loadm("EXA=9");                           % select EXA=1
+loadm("EXA=1");                           % select EXA=1
 %------------------------------------------------------------------------------
 for i=1 upto ucount: beginfigm $(i) \\ endfigm  endfor
 %******************************************************************************

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	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF   Typeset with LuaLaTeX(luamplib)   by A.Yamaji   2024.11.17
+% Example of MCF   Typeset with LuaLaTeX(luamplib)   by A.Yamaji   2024.12.01
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ** mcf2graph.mf must be version 5.14
+% ** mcf2graph.mf must be version 5.15
 % ** use mcf_library.mcf
 % ** typeset by LuaLaTeX(luamplib)
 %-------------------------------------------------------------------------
@@ -95,7 +95,7 @@
   loadm("EXA=2");
   fig_num:=0;
   fsize:=(50mm,34mm);
-  fmargin:=(1mm,1mm);
+  fmargin:=(4mm,4mm);
   max_blength:=4mm;
   row_h:=3.8mm;
   header_h:=3.8mm;
@@ -103,7 +103,7 @@
     draw (0,0)--(185mm,0)--(185mm,h)--(0,h)--cycle wpcs thickness_frame;
     draw (w,h-header_h)--(185mm,h-header_h) wpcs thickness_frame;
     draw (w,h)--(w,0) wpcs thickness_frame;
-    for col_w=75mm,105mm,130mm,155mm:
+    for col_w=85mm,110mm,130mm,150mm:
       draw (col_w,h)--(col_w,h-header_h) wpcs thickness_frame;
     endfor
   enddef;
@@ -114,7 +114,7 @@
 \fig at num=0%
 \loop%
 \advance\fig at num\@ne\relax%
-\ifnum\fig at num=9 \CONT at false%
+\ifnum\fig at num=25 \CONT at false%
 \else%
 \begin{mplibcode}%
   beginfigm
@@ -132,10 +132,10 @@
         else:
           label.lrt(EN, (w,h));
         fi
-        label.lrt(CAT,(75mm,h));
-        label.lrt(MW,(105mm,h));
+        label.lrt(CAT,(85mm,h));
+        label.lrt(MW,(110mm,h));
         label.lrt(mw,(130mm,h));
-        label.lrt(fm,(155mm,h));
+        label.lrt(fm,(150mm,h));
         make_frame;
         if mc_row>12: defaultscale:=0.6; row_h:=5.25;
         ef mc_row>8:  defaultscale:=0.8; row_h:=6.5;

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	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  Molecular Coding Format manual                by  Akira Yamaji 2024.11.17
+%  Molecular Coding Format manual                by  Akira Yamaji 2024.12.01
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ** mcf2graph.mf must be version 5.14
+% ** mcf2graph.mf must be version 5.15
 % ** use main_lib.mcf
 % ** typeset by LuaLaTeX(luamplib)
 %----------------------------------------------------------------------------
@@ -60,16 +60,16 @@
 % L-Valine
 beginfigm \(<30,NH2,!~wb,/?!,!,COOH) endfigm
 % L-Leucine
-beginfigm \(<30,NH2,!~wb,/''(!,?!),!,COOH) endfigm
+beginfigm \(<30,NH2,!~wb,/!'?!,!,COOH) endfigm
 \end{mplibcode}
 \\
 \begin{mplibcode}
 % L-Isoleucine
-beginfigm \(<30,NH2,!~wb,/''(/*_,!2),!,COOH) endfigm
+beginfigm \(<30,NH2,!~wb,/?z'!2,!,COOH) endfigm
 % L-Serine
 beginfigm \(<30,NH2,!~wb,/!OH,!,COOH) endfigm
 % L-Threonine
-beginfigm \(<30,NH2,!~wb,/''(/_,!~wf,OH),!,COOH) endfigm
+beginfigm \(<30,NH2,!~wb,/?'!w'OH,!,COOH) endfigm
 % L-Cysteine
 beginfigm \(<30,NH2,!~wb,/!SH,!,COOH) endfigm
 \end{mplibcode}
@@ -111,9 +111,9 @@
 % L-DOPA
 beginfigm \(<30,NH2,!~wb,!,COOH, at 2,\,!,Ph,-3'-4:/OH) endfigm
 % Ornithine
-beginfigm \(<30,NH2,!~wb,/''(!3,NH2),!,COOH) endfigm
+beginfigm \(<30,NH2,!~wb,/!3'NH2,!,COOH) endfigm
 % Citrulline
-beginfigm \(<30,NH2,!~wb,/''(!3,NH,!,//O,!,NH2),!,COOH) endfigm
+beginfigm \(<30,NH2,!~wb,/!3'NH!'?O'!NH2,!,COOH) endfigm
 % GABA
 beginfigm \(<30,NH2,!4,COOH) endfigm
 \end{mplibcode}
@@ -124,7 +124,7 @@
 % 4-amino benzoic acid
 beginfigm \(<30,Ph,1:/NH2,4:/COOH) endfigm
 % L-Carboxyl glutamic acid
-beginfigm \(<30,NH2,!~wb,/''(!,/COOH,!,COOH),!,COOH) endfigm
+beginfigm \(<30,NH2,!~wb,/!'?COOH'!COOH,!,COOH) endfigm
 % L-Hydroxy Prorine
 beginfigm \(<18,?5,1:/OH,3:NH,4:*/COOH) endfigm
 \end{mplibcode}
@@ -425,8 +425,7 @@
 wb: wedge backward
 zf: hashed(zebra stripe) wedge foward
 zb: hashed(zebra stripe) wedge backward
-vf:vector forward
-vb:vector backward
+vf:vector forward  /  vb:vector backward
 
 <-30,
  !~wf,!,!~wb,!,!~zf,!,!~zb,!,!~vf,!~vb
@@ -529,7 +528,7 @@
 
 #1.25,-30~wf_r,30~bd_r`1,30~wb_r,
  120,O,30,&1,##,#.5,6^$90:/!OH,
- {1^$-90'2^$90'3^$-90'4^$90}:/OH,
+ {1^$270'2^$90'3^$270'4^$90}:/OH,
 \end{verbatim}
 %-----------------------------------------
 \begin{mplibcode}
@@ -536,7 +535,7 @@
 beginfigm
   #(75mm,16mm);
   @(0.05,0.5)\(#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,
-     #.5,{1^$-90'2^$90'3^$-90'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)\(0~wf_r)  ++(label.lft("wf_r:",A1);)
   @(0.5,0.2)\(0~wf)    ++(label.lft("wf:",A1);)
@@ -752,7 +751,7 @@
   #(60mm,18mm) #@(2mm,1.5mm)
   sw_trimming:=1;
   sw_numbering:=Bond;
-  \(<30,?6,3=?6,3=dt,7'11=bd_r)
+  \(<30,?6,3=?6,3=dt,{7:11}=bd_r)
 endfigm
 \end{mplibcode}
 %-----------------------------------------------------------------------------
@@ -776,7 +775,7 @@
 \begin{verbatim}
 ?6,3=?6[13] : fuse ?6[13] at B3
 ?6[13]: 6 membered ring scaled 13/10
-** ?m[n] (5<=m<=8,11<=n<=15)
+** ?m[n] (5<=m<=6,11<=n<=15)
 
 ?6,3=?6[13]
 \end{verbatim}
@@ -787,7 +786,7 @@
   margin_top_bottom:=1.5mm;
   sw_numbering:=Bond;
   sw_trimming:=1;
-  \(<30,?6,3=?6[13],3=dt,7'11=bd_r)
+  \(<30,?6,3=?6[13],3=dt,{7:11}=bd_r)
 endfigm
 \end{mplibcode}
 %-----------------------------------------------------------------------------
@@ -823,7 +822,7 @@
   #(75mm,20mm) #@(2mm,2mm)
   sw_numbering:=Bond;
   ##(1,.9)
-  @( 0,.5)\(<30,?6,{3,11--4}=?6,11'4=dt,{12:15}=bd_r)
+  @( 0,.5)\(<30,?6,{3'11--4}=?6,11'4=dt,{12:15}=bd_r)
   ++(defaultscale:=0.4; label("(1)",p0);)
   ##(1,.9)
   @(.5,.5)\(<30,?6,3=?6,{11--4}=?5,11'4=dt,{12:14}=bd_r)
@@ -851,7 +850,7 @@
 beginfigm
   #(60mm,20mm) #@(2mm,2mm)
   sw_numbering:=Bond;
-  @(0,1)\(?6,3'10=?6,16---4=?6,16'4=dt,17'19=bd_r)
+  @(0,1)\(?6,3'10=?6,16---4=?6,16'4=dt,{17:19}=bd_r)
   ++(defaultscale:=0.4; label("(1)",p0);)
   @(1,0)\(?6,3'10=?6,16---4=?5,16'4=dt,17'18=bd_r)
   ++(defaultscale:=0.4; label("(2)",p0);)
@@ -915,7 +914,7 @@
 \begin{mplibcode}
 beginfigm
   #(75mm,18mm);
-  \(<30,!,/_,!2,/!,!2,/!,!4,/?!,!4,/??!,!2,/''(Ph`0.8)^-60,!)
+  \(<30,!,/_,!2,/!,!2,/!,!4,/?!,!4,/??!,!2,/#.8'Ph^-60,!)
 endfigm
 \end{mplibcode}
 %-----------------------------------------------------------------------------
@@ -974,7 +973,7 @@
 \subsubsection{Add group}
 \begin{verbatim}
 <30,!17,2:/_,3:/!,4:/!2,7:/iPr,
- 8:/tBu,10:/''(Ph`0.6)^-15,
+ 8:/tBu,10^-15:/#.6'Ph,
   11'12'*13:*/_,15'16'*17:/*_
 \end{verbatim}
 %-----------------------------------------
@@ -983,7 +982,7 @@
   #(75mm,25mm) #@(2mm,2mm)
   sw_numbering:=Atom;
   numbering_end:=17;
-  \(<30,!17,2:/_,3:/!,4:/!2,7:/iPr,8:/tBu,10:/''(Ph`0.6)^-15,
+  \(<30,!17,2:/_,3:/!,4:/!2,7:/iPr,8:/tBu,10^-15:/#.6'Ph,
      11'12'*13:*/_,15'16'*17:/*_)
 endfigm
 \end{mplibcode}
@@ -1034,6 +1033,7 @@
 
 ?4,
 {3^-90'3^-30'3^90}:/!3>hz,
+
 {1^-60'1'1^60}:/!3>vt
 \end{verbatim}
 %-----------------------------------------
@@ -1065,7 +1065,6 @@
 
 <-30,!6,
 {3^-30'3'3^30}:/!3>lr,
-{5^-30'5'5^30}:/!3>rl
 \end{verbatim}
 %-----------------------------------------
 \begin{mplibcode}
@@ -1112,7 +1111,7 @@
 %-----------------------------------------------------------------------------
 \subsubsection{Rotate multiple angle}
 \begin{verbatim}
->{90,-90,...} : rotate 90,-90,...
+>{90'-90,...} : rotate 90,-90,...
 
 <30,!6,6>{90'-90'90'-90'90}:/!5
 \end{verbatim}
@@ -1120,7 +1119,7 @@
 \begin{mplibcode}
 beginfigm
   #(60mm,20mm);
-  \(<30,!6,6>{90'-90'90'-90'90}:/!5)
+  \(<30,!6,6>90'-90'90'-90'90:/!5)
   ++(defaultscale:=0.5; labeloffset:=2bp;
       label.lft(">{90'-90'90'-90'90}",A13);
       label.rt(">90",A12);
@@ -1209,6 +1208,7 @@
 /!?!'OH : /''(!?!,OH)
 
  <30,!8,2'6:/!?!'OH
+or  <30,!8,{2'6}:/''(!?!,OH)
 \end{verbatim}
 %-----------------------------------------
 \begin{mplibcode}
@@ -1222,11 +1222,11 @@
 \subsubsection{Move position [ @{ }]}
 \index{@}%
 \begin{verbatim}
-@(x,y) : Move l*(x,y) from current position
-@$(x,y): Move l*(x,y) from origin(@1)
+@(x'y) : Move l*(x,y) from current position
+@$(x'y): Move l*(x,y) from origin(@1)
           ** l=bond length of ring
 
-<30,?6, at 3,!4,//O,!,O,n_^60,@$(6,1),H,p_^15
+<30,?6, at 3,!4,//O,!,O,n_^60,@$(6'1),H,p_^15
 \end{verbatim}
 %-----------------------------------------
 \begin{mplibcode}
@@ -1233,7 +1233,7 @@
 beginfigm
   #(70mm,13mm) #@(2mm,1mm)
   sw_trimming:=1;
-  \(<30,?6, at 3,\,!3,//O,!,O,n_^60,@$(6,1),H,p_^15)
+  \(<30,?6, at 3,\,!3,//O,!,O,n_^60,@$(6'1),H,p_^15)
   ++(drawdot A1 withpen pencircle scaled 3bp;
      drawdot A12 withpen pencircle scaled 3bp;
       pickup pencircle scaled 0.1bp;
@@ -2135,7 +2135,7 @@
 \(): abbreviated form of drawm()
 
   drawm(<30,Ph,3:/F,4:/Cl)
-  \(<30,Ph,3:/F,4:/Cl)
+      \(<30,Ph,3:/F,4:/Cl)
 \end{verbatim}
 %------------------------------------------------
 \begin{mplibcode}
@@ -2671,10 +2671,10 @@
   '`(
   %----------------------------------------------------
   "#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,   ",
-  "#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH,          ",
-  "@4,$-50~arc_lb`1,O,$50~arc_br`1,<$0,               ",
+  "#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,          ",
+  "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0,               ",
   "|,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ",
-  "#.5,{2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH           ")
+  "#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH           ")
   %----------------------------------------------------
   #(50mm,20mm) \\
 endfigm
@@ -2686,10 +2686,10 @@
   '`(
   %-------------------------------------------------------
   "#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,   ",
-  "#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH,          ",
-  "@4,$-50~arc_lb`1,O,$50~arc_br`1,<$0,               ",
+  "#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,          ",
+  "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0,               ",
   "|,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ",
-  "#.5,{2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH           ")
+  "#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH           ")
   %-------------------------------------------------------
   #(50mm,20mm) \\
 endfigm
@@ -2704,7 +2704,7 @@
   '`(
   %-----------------------------------------------------------------------
     "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1,        ",
-    " 14:O,13:/*Et,1'9://O,                                               ",
+    " 14:O,13:/*!,1'9://O,                                               ",
     " {*2'4'6^-35'8'*10'12^35}:/*_,                                       ",
     " {6^35'11'12^-35}:*/OH,                                              ",
     " @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:/_,4:/*OH,3^-35:/*O!,##, ",
@@ -2728,7 +2728,7 @@
   '`(
   %-----------------------------------------------------------------------
     "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1,        ",
-    " 14:O,13:/*Et,1'9://O,                                               ",
+    " 14:O,13:/*!,1'9://O,                                               ",
     " {*2'4'6^-35'8'*10'12^35}:/*_,                                       ",
     " {6^35'11'12^-35}:*/OH,                                              ",
     " @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:/_,4:/*OH,3^-35:/*O!,##, ",
@@ -3245,9 +3245,9 @@
 file name = 'temp-mc.aux'
 
 <30,?6, at 4,?6, at -4,\,!3,<-12,?5, at -3,<-12,?6,-3=?6, at -3,*\,!3,
- ?6, at -4,?6, at 6,\,!,/*Me^-40,*/OH^20,!,//O,!1,OH,
- 3=wb,11=dl,15=dr,17=wf,19=wf,38=wb,5'7'16'24'25'33'42:O,
- 32:*/H^60,10:/Me,12'31:*/_,27://_,37:/*_,28:/OH,3'29:/*OH
+ ?6, at -4,?6, at 6,\,!,/*_^-40,*/OH^20,!,//O,!1,OH,
+ 3=wb,11=dl,15=dr,17'19=wf,38=wb,5'7'16'24'25'33'42:O,
+ 32:*/H^60,10:/_,12'31:*/_,27://_,37:/*_,28:/OH,3'29:/*OH
 \end{verbatim}
 %------------------------------------------------------------------------
 \newpage
@@ -3419,7 +3419,7 @@
     "<30,?6,3=dl,{3'5^35'5^-35}:/_,         ",
     " @4,\,|,!18,1'3'5'7'9'11'13'15'17=dr,  ",
     " 3'7'12'16:/_,                         ",
-    " |,?6,6=dl,{6,2^35,2^-35}:/_           ")
+    " |,?6,6=dl,{6'2^35'2^-35}:/_           ")
     %-----------------------------------------
     \\
   endfigm

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_to_graph.cmd
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_to_graph.cmd	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_to_graph.cmd	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,4 +1,4 @@
-rem  Batch file for compile MCF  2023.05.07
+rem  Batch file for compile MCF  2024.12.01
 rem  rename filename by purpose
 rem  <drag and drop library files on this batch>
 

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf template file    mcf_template.mcf   by Akira Yamaji   2024.11.17
+% mcf template file    mcf_template.mcf   by Akira Yamaji   2024.12.01
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  must use version 5.14
+%  must use version 5.15
 %  tag1:var1;tag2:var2;tag3:var3 .....
 %  first character of line "%" comment out
 %  first character of line ":"  start MCF

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_soc.mp
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_soc.mp	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/template_soc.mp	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,8 +1,8 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% MCF compile template file                    by Akira Yamaji  2024.11.17
+% MCF compile template file                    by Akira Yamaji  2024.12.01
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-if unknown mcftograph: input mcf2graph; fi  %%% it must be version 5.14
-message "* mcf_template 2024.11.17";
+if unknown mcftograph: input mcf2graph; fi  %%% it must be version 5.15
+message "* mcf_template 2024.12.01";
 message "";
 %------------------------------------------------------------------------------
 %%%%ext(defaultscale:=.3; label.rt(EN,(0,0));)

Modified: trunk/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf
===================================================================
--- trunk/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% molecular library file    main_lib.mcf   by Akira Yamaji   2024.11.17
+% molecular library file    main_lib.mcf   by Akira Yamaji   2024.12.01
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  must use version 5.14
+%  must use version 5.15
 %  tag1:var1;tag2:var2;tag3:var3 .....
 %  first character of line "%" comment out
 %  first character of line ":"  start MCF
@@ -234,7 +234,7 @@
 %------------------------------------------------------------------------------
 CAT:biological;EN:D-Glucose;MW:180.16;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH
+hexose_hp,#.5,{1^$270'2^$90'3^$270'4^$270}:/OH,6^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Fructose 1;MW:180.16;EXA:1
@@ -249,83 +249,83 @@
 %------------------------------------------------------------------------------
 CAT:biological;EN:D-Fluctose;MW:180.16;EXA:1
 :
-Pyranose_hp,#.5,1^$-90:/OH,{2^$-90'3^$90}:/OH,{1^$90'4^$-90}:/!OH
+Pyranose_hp,#.5,1^$270:/OH,{2^$270'3^$90}:/OH,{1^$90'4^$270}:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:D-Galactose;MW:180.16;EXA:1
 :
-hexose_hp,#.5,{1^$90'2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH
+hexose_hp,#.5,{1^$90'2^$90'3^$270'4^$270}:/OH,6^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:D-Mannose;MW:180.16;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'3^$90'4^$-90}:/OH,6^$90:/!OH
+hexose_hp,#.5,{1^$270'2^$90'3^$90'4^$270}:/OH,6^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:L-Fucose;MW:164.16;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$-90'3^$90'4^$90}:/OH,6^$-90:/_
+hexose_hp,#.5,{1^$270'2^$270'3^$90'4^$90}:/OH,6^$270:/_
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:D-Ribose;MW:150.13;EXA:1
 :
-Pyranose_hp,#.5,{2^$-90'3^$-90'4^$90}:/OH,1^$90:/!OH
+Pyranose_hp,#.5,{2^$270'3^$270'4^$90}:/OH,1^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:D-Deoxyribose;MW:134.13;EXA:1
 :
-Pyranose_hp,#.5,{2^$-90'4^$90}:/OH,1^$90:/!OH
+Pyranose_hp,#.5,{2^$270'4^$90}:/OH,1^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:D-Glucosamine;MW:179.17;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'4^$-90}:/OH,3^$-90:/NH2,6^$90:/!OH
+hexose_hp,#.5,{1^$270'2^$90'4^$270}:/OH,3^$270:/NH2,6^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:N-acetyl-Glucosamine;MW:221.21;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'4^$-90}:/OH,3^$-90>lr:/NH!'?O!,6^$90:/!OH
+hexose_hp,#.5,{1^$270'2^$90'4^$270}:/OH,3^$270>lr:/NH!'?O!,6^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Glucuronic acid;MW:194.14;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'3^$-90'4^$-90}:/OH,6^$90:/COOH
+hexose_hp,#.5,{1^$270'2^$90'3^$270'4^$270}:/OH,6^$90:/COOH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Maltose;MW:342.3;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH,##,
- @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0,
- |,hexose_hp,#.5,{2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH
+hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,
+ @4,$310~arc_lb`1,O,$50~arc_br`1,<$0,
+ |,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Sucrose;MW:342.3;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH,##,
- @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0,
+hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,
+ @4,$310~arc_lb`1,O,$50~arc_br`1,<$0,
  |,#1.4,-35~wf_r,35~bd_r`1,30~wb_r,130`1.66,O,&1,##,
- #.5,{2^$-90'3^$90}:/OH,{1^$90'4^$-90}:/!OH
+ #.5,{2^$270'3^$90}:/OH,{1^$90'4^$270}:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Lactose;MW:342.3;EXA:1
 :
-hexose_hp,#.5,{1^$90'2^$90'3^$-90}:/OH,6^$90:/!OH,##,
+hexose_hp,#.5,{1^$90'2^$90'3^$270}:/OH,6^$90:/!OH,##,
  @4,$0~arc_ltr,O,$0~arc_lbr,
- |,hexose_hp,#.5,{2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH
+ |,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Cellobiose;MW:342.3;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH,##,
+hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,
  @4,$0~arc_lbr,O,$0~arc_ltr,
- |,hexose_hp,#.5,{2^$90'3^$-90'4^$-90}:/OH,6^$90:/!OH
+ |,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Trehalose;MW:342.3;EXA:1
 :
-hexose_hp,#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH,##,
- @4,@(1,0),|,hexose_hp,#.5,{1^$-90'2^$90'3^$-90}:/OH,6^$90:/!OH,##,
- ||, at 4,$-37~arc_lb`3.25,O,&10~arc_br
+hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,
+ @4,@(1'0),|,hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,
+ ||, at 4,$323~arc_lb`3.25,O,&10~arc_br
 ;
 %==============================================================================
 CAT:biological;EN:Geraniol;MW:154.25;EXA:1
@@ -382,6 +382,7 @@
 :
 <30,Ph,1:/OH,6:/O!,4:/CHO
 ;
+%------------------------------------------------------------------------------
 CAT:biological;EN:alfa-Terpinene;MW:136.24;EXA:-
 :
 <30,?6,3:/?!,6:/_,3'5=db
@@ -498,7 +499,7 @@
  -3^-12:/!2'OH,8:p_^72
 ;
 %------------------------------------------------------------------------------
-CAT:biological;EN:Riboflavin;MW:376.37;EXA:1
+CAT:biological;EN:Riboflavin;MW:376.37;EXA:2
 :
 <30,Ph,3'9=?6,8'16=dl,7'10'14:N,12:NH,11'13:?O,1'6:/_,
  @10,\`1.5,!,*/OH,!,/*OH,!,*/OH,!2,OH
@@ -561,7 +562,7 @@
 <30,Ph,1:/OH,6:/O!, at 4,\,!NH!,?O,!7,?!,-3=dl
 ;
 %------------------------------------------------------------------------------
-CAT:biological;EN:Gibberellin A3;MW:346.379;EXA:1
+CAT:biological;EN:Gibberellin A3;MW:346.379;EXA:2
 :
 <18,?5,3=?7,5=?6[12], at 8,160`1.3,&3,13=dl,6=wf,8=wb,
  @5,40~zf`1,O,50,?O^180,&14~zb,2:/COOH,7://_,*8'13:*/OH,14:*/_,1'4:*/H^60
@@ -706,11 +707,10 @@
 <30,Ph,3=?6, at 9,8=dl,\,!2,!zb,?6,7'9:N,-5:NH,10'12:?O,-1:*/OH
 ;
 %------------------------------------------------------------------------------
-CAT:biological;EN:Hypericin;MW:504.44;EXA:1
+CAT:biological;EN:Hypericin;MW:504.44;EXA:2
 :
-<30,Ph,{-4'-3'11--4'16---17'19'23---24'22--29}=?6,
- 12'14'16'17'*22'24'26'28'33'35=dl,
- 7'25:?O,13'26:/_,2'6'11'21'23'28:/OH
+<30,Ph,-4'-3'(11--4)'(16---17)'19'(23---24)'(22--29)=?6,
+ 12'14'16'17'*22'24'26'28'33'35=dl,7'25:?O,13'26:/_,2'6'11'21'23'28:/OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Camphor;MW:152.23;EXA:1
@@ -840,7 +840,7 @@
 <30,Ph,3=?5,8=dl,9:NH, at 2,\,O,-60,P,?O^-45,/OH^45,90,OH,7:/!2'N?!>lr
 ;
 %------------------------------------------------------------------------------
-CAT:biological;EN:Tetrodotoxine;MW:319.27;EXA:1
+CAT:biological;EN:Tetrodotoxine;MW:319.27;EXA:2
 :
 #1,<60,-90,60,-30`1.15,150,60,&1, at 3,-135,60,-30`1.15,150,&4,
  @10,\,O,60`1.33,60,&$3~si_, at 8,-15~si_,O,&12,##,
@@ -849,37 +849,32 @@
 %------------------------------------------------------------------------------
 CAT:biological;EN:Aflatoxin B1;MW:312.27;EXA:1
 :
-<30,Ph,6=?6,-2=?5,4=?5,-2=?5,-2'10=dl,7'14'17:O,
- 2:/O!,8'11:?O,{15^-54'16^54}:*/H
+<30,Ph,6=?6,-2'4'-2=?5,-2'10=dl,7'14'17:O,2:/O!,8'11:?O,{15^-54'16^54}:*/H
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Aflatoxin B2;MW:314.3;EXA:-
 :
-<30,Ph,6=?6,-2=?5,4=?5,-2=?5,10=dl,7'14'17:O,2:/O!,8'11:?O,{15^-54'16^54}:*/H
+<30,Ph,6=?6,-2'4'-2=?5,10=dl,7'14'17:O,2:/O!,8'11:?O,{15^-54'16^54}:*/H
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Aflatoxin G1;MW:328.27;EXA:2
 :
-<30,Ph,6=?6,-2=?6,4=?5,-2=?5,-2'10=dl,7'12'15'18:O,
- 2:/O!,8'11:?O,{16^-54'17^54}:*/H
+<30,Ph,6'-2=?6,4'-2=?5,-2'10=dl,7'12'15'18:O,2:/O!,8'11:?O,{16^-54'17^54}:*/H
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Aflatoxin G2;MW:330.29;EXA:-
 :
-<30,Ph,6=?6,-2=?6,4=?5,-2=?5,10=dl,7'12'15'18:O,
- 2:/O!,8'11:?O,{16^-54'17^54}:*/H
+<30,Ph,6'-2=?6,4'-2=?5,10=dl,7'12'15'18:O,2:/O!,8'11:?O,{16^-54'17^54}:*/H
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Aflatoxin M1;MW:328.3;EXA:-
 :
-<30,Ph,6=?6,-2=?5,4=?5,-2=?5,-2'10=dl,7'14'17:O,
- 2:/O!,8'11:?O,15^-54:*/H,16^54:*/OH
+<30,Ph,6=?6,-2'4'-2=?5,-2'10=dl,7'14'17:O,2:/O!,8'11:?O,15^-54:*/H,16^54:*/OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Aflatoxin M2;MW:330.29;EXA:-
 :
-<30,Ph,6=?6,-2=?5,4=?5,-2=?5,10=dl,7'14'17:O,
- 2:/O!,8'11:?O,15^-54:*/H,16^54:*/OH
+<30,Ph,6=?6,-2'4'-2=?5,10=dl,7'14'17:O,2:/O!,8'11:?O,15^-54:*/H,16^54:*/OH
 ;
 %------------------------------------------------------------------------------
 CAT:biological;EN:Ochratoxin A;MW:403.813;EXA:1
@@ -995,9 +990,9 @@
 <30,Ph,{1'11--2'15--3'19--4'23--5'27---7}=?6,9'12'14'17'20'22'25'28'30=dl
 ;
 %------------------------------------------------------------------------------
-CAT:synthetic;EN:Kekulene;MW:600.7;EXA:1
+CAT:synthetic;EN:Kekulene;MW:600.7;EXA:2
 :
-<30,?6,{3'-3'-2'-3'-2'-3'-2'-3'-2'-3'-2----5'5---- -4}=?6,
+<30,?6,3'-3'-2'-3'-2'-3'-2'-3'-2'-3'(-2----5)'(5---- -4)=?6,
  1'*5'7'9'11'13'17'19'21'23'27'29'31'33'37'39'41'43'47'49'51'53'57'60=dl
 ;
 %==============================================================================
@@ -1006,7 +1001,7 @@
 <-180,O,30,60,60,O,-30,60,60,O,-30,60,60,O,-30,60,&1
 ;
 %------------------------------------------------------------------------------
-CAT:synthetic;EN:15-Crown-5;MW:220.26;EXA:2
+CAT:synthetic;EN:15-Crown-5;MW:220.26;EXA:-
 :
 <-180,O,48,60,60,O,-48,60,60,O,-48,60,60,O,-48,60,60,O,-48,60,&1
 ;
@@ -1016,7 +1011,7 @@
 <-180,O,60,60,60,O,-60,60,60,O,-60,60,60,O,-60,60,60,O,-60,60,60,O,-60,60,&1
 ;
 %==============================================================================
-CAT:synthetic;EN:Porphyrin;MW:310.4;EXA:1
+CAT:synthetic;EN:Porphyrin;MW:310.4;EXA:2
 :
 <9,#1,?5, at 3,\,54,?5, at -2,\,54,?5, at -2,\,54,?5, at -2,\,&5,##,
  1'4'6'8'10'14'16'18'21'23'27=dl,4'17:N,11'23:NH
@@ -1072,7 +1067,7 @@
 %------------------------------------------------------------------------------
 CAT:synthetic;EN:Basic blue 1;MW:319.86;EXA:1
 :
-<30,Ph,3=Ph,6=Ph,2:S,5:N,8'13:/N?!,2:p_, at 2,@(3.5,1.5),Cl,n_^15
+<30,Ph,3=Ph,6=Ph,2:S,5:N,8'13:/N?!,2:p_, at 2,@(3.5'1.5),Cl,n_^15
 ;
 %------------------------------------------------------------------------------
 CAT:synthetic;EN:Disperse red 11;MW:268.274;EXA:1
@@ -1103,20 +1098,18 @@
 %------------------------------------------------------------------------------
 CAT:antibiotics;EN:Ampicillin;MW:349.405;EXA:1
 :
-<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, 
+<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,
  @4,*\^15,NH!,?O!,/*NH2,!Ph       
 ;
 %------------------------------------------------------------------------------
-CAT:antibiotics;EN:Penicillin G;MW:334.4;EXA:1
+CAT:antibiotics;EN:Penicillin G;MW:334.4;EXA:2
 :
-<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,
- @4,*\^15,NH!,?O!2,Ph
+<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, at 4,*\^15,NH!,?O!2,Ph
 ;
 %------------------------------------------------------------------------------
 CAT:antibiotics;EN:Penicillin V;MW:350.3895;EXA:1
 :
-<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,
- @4,*\^15,NH!,?O!2,O,!Ph
+<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, at 4,*\^15,NH!,?O!2,O,!Ph
 ;
 %------------------------------------------------------------------------------
 CAT:antibiotics;EN:Mecillinam;MW:325.4264;EXA:1
@@ -1158,13 +1151,12 @@
 CAT:antibiotics;EN:Cefalonium;MW:458.5107;EXA:1
 :
 <45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15, at 5,\*,?O!,O,n_^40,
- @4,*\^15,NH!,?O!2,?5,-1'-3=dl,-4:S,
- @6,\,!,|,Ph,1:N,1:p_^180,4:/?O!'NH2
+ @4,*\^15,NH!,?O!2,?5,-1'-3=dl,-4:S, at 6,\,!,|,Ph,1:N,1:p_^180,4:/?O!'NH2
 ;
 %------------------------------------------------------------------------------
-CAT:antibiotics;EN:Cefazorin;MW:454.51;EXA:1
+CAT:antibiotics;EN:Cefazorin;MW:454.51;EXA:2
 :
-<45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,5:/*COOH,
+<45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1^15:?O,5:/*COOH,
  @4,*\^15,NH!,?O!2,?5,-2'-4=dl,-1'-2'-3'-5:N,
  @6,\,!,S,!,?5,-3'-5=dl,-1:S,-2:/_,-3'-4:N
 ;
@@ -1199,8 +1191,7 @@
 CAT:antibiotics;EN:Apramycin;MW:539.58;EXA:1
 :
 <30,?6,3=?6,2'10:O, at 1,\*,O,60~zb,?6, at 9,\*,O,-60~zb,?6,-5:O,
- 7'13'*14'*-1'-2:*/OH,*6'15'17'*-3:*/NH2,8:*/NH!^-20,
- -4:*/!OH,{*3^-60,4^60}:*/H
+ 7'13'*14'*-1'-2:*/OH,*6'15'17'*-3:*/NH2,8:*/NH!^-20,-4:*/!OH,{*3^-60,4^60}:*/H
 ;
 %------------------------------------------------------------------------------
 CAT:antibiotics;EN:Gentamycin;MW:477.596;EXA:1
@@ -1212,7 +1203,7 @@
 CAT:antibiotics;EN:Kanamycin;MW:484.499;EXA:1
 :
 <-30,?6, at 1,\*,O,0~zb,?6,-5:O, at 5,\,O,0,?6,-5:O,
- 2'4'12:*/NH2,*6'11'13'18'*19,20:/*OH,10:*/!OH,17:*/!NH2
+ 2'4'12:*/NH2,*6'11'13'18'*19'20:/*OH,10:*/!OH,17:*/!NH2
 ;
 %------------------------------------------------------------------------------
 CAT:antibiotics;EN:Neomycin;MW:614.644;EXA:1
@@ -1223,11 +1214,10 @@
  @-2,\*^-24,O,-60~zb,?6,-5:O,-1:/*NH2,-2'*-3:*/OH,-4:/*!NH2>60
 ;
 %------------------------------------------------------------------------------
-CAT:antibiotics;EN:Streptmycin;MW:581.574;EXA:1
+CAT:antibiotics;EN:Streptmycin;MW:581.574;EXA:2
 :
 <54,?5,3:O,4:/*_,5:/OH^45, at 1,\*,O,-24~wb,?6,-5:O, at 2,*\,O,24~zb,?6,
-  5:/!dO^-48,10'*11'15'*16'*18:*/OH,9:/*!OH,12:*/NH!,
-  {17^-18'19}:*/NH!'?NH'!NH2
+  5:/!dO^-48,10'*11'15'*16'*18:*/OH,9:/*!OH,12:*/NH!,{17^-18'19}:*/NH!'?NH'!NH2
 ;
 %------------------------------------------------------------------------------
 CAT:antibiotics;EN:Streptmycin-H2O;MW:599.574;EXA:-
@@ -1336,7 +1326,7 @@
    @-3,\*`1,O,60~wb,?6`.7,-5:O,#.5,{-2^35'-3}:*/OH,{-2^-35'-4}:/*_,##,
 ;
 %------------------------------------------------------------------------------
-CAT:antibiotics;EN:Tilmicosin;MW:869.133;EXA:1
+CAT:antibiotics;EN:Tilmicosin;MW:869.133;EXA:2
 :
 <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##,
  12'14=dl,2:O,1:/*!,5:/*OH,3'11:?O,6'10:/*_,14:/_,
@@ -1359,7 +1349,7 @@
  {5'7~zf^35'13~wf^60'14'16}:/OH,15:*/N?!,17:/?O!'NH2
 ;
 %------------------------------------------------------------------------------
-CAT:antibiotics;EN:Oxytetracyclin;MW:460.434;EXA:1
+CAT:antibiotics;EN:Oxytetracyclin;MW:460.434;EXA:2
 :
 <30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:*/_^-35,11:*/OH,
  {5'7~zf^35'13~wf^60'14'16}:/OH,15:*/N?!,17:/?O!'NH2
@@ -1623,7 +1613,7 @@
 <6,?5,3'5=db,1'2:N,2:/_,5:/Cl, at 3,\,S?O?O,!NH!,?O,!NH!,Ph,-2'-4:/O!,4:/?O!'O!
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Flupoxam;MW:460.8;EXA:2
+CAT:pesticide;EN:Flupoxam;MW:460.8;EXA:1
 :
 <30,Ph,4:/Cl, at 1,\,?5,-2'-4=db,-2'-4'-5:N,-1:/Ph,-3:/?O!'NH2,
  @3,\,!,O!2,/F^35,/F^-35,!,?F?F!F
@@ -1646,8 +1636,7 @@
 %------------------------------------------------------------------------------
 CAT:pesticide;EN:Cyhalothrin;MW:449.86;EXA:1
 :
-<-30,?3,{2^-35'*2^35}:*/_, at 1,\,!d,/?F?F!F,!Cl,
- @3,\,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl
+<-30,?3,{2^-35'*2^35}:*/_, 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
@@ -1849,10 +1838,9 @@
 <30,Ph,4'6:/Cl, at 3,\,O,!Ph,-4:/?O!'O!,-3:/NO2
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Bifenthrin;MW:422.88;EXA:-
+CAT:pesticide;EN:Bifenthrin;MW:422.88;EXA:2
 :
-<-30,?3,{2^-35'*2^35}:*/_,
- @1,\,!d,/Cl,!,?F?F!F, at 3,\,?O,!O!,-60,Ph,-1:/_,-2:/Ph
+<-30,?3,{2^-35'*2^35}:*/_, 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:-
@@ -1901,7 +1889,7 @@
 <36,?5,3:N,5:O,2'4:?O,1:/_^54,1:/!d^-30,3:/Ph'(3'5:/Cl)
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Fipronil;MW:437.2;EXA:-
+CAT:pesticide;EN:Fipronil;MW:437.2;EXA:1
 :
 <30,Ph,2'4:/Cl,6:/?F?F!F, at 3,\,|,?5,2'4=dl,1'2:N,3:/CN,5:/NH2,-2:/S?O'!?F?F!F
 ;
@@ -2006,7 +1994,7 @@
 <-30,!O!,P,?O,/O!^160,!O,!?,!d,!,?O!,O!
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Chlorpyrifos;MW:350.59;EXA:-
+CAT:pesticide;EN:Chlorpyrifos;MW:350.59;EXA:1
 :
 <30,!2,O!,P,//S,/O!2^160>rl,!O!,|,Ph,6:N,2'4'5:/Cl
 ;
@@ -2116,7 +2104,7 @@
 <30,Ph,6:/Cl, at 3,\,/?!,!,?O,!O!,/CN,!Ph,-4:/O'!Ph>rl
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Fenpropathrin;MW:349.4;EXA:-
+CAT:pesticide;EN:Fenpropathrin;MW:349.4;EXA:1
 :
 <-30,?3,{1^35'2^-35}:*/_,{1^-35'2^35}:/*_, at 3,\,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl
 ;
@@ -2216,7 +2204,7 @@
 <30,Ph,1'5:/Cl, at 3,\,?O,!NH,!??!,!t
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Propiconazole;MW:342.22;EXA:-
+CAT:pesticide;EN:Propiconazole;MW:342.22;EXA:1
 :
 <30,Ph,4'6:/Cl, at 3,\,!2,|,?5,2'4=dl,1'2'4:N,@$7,?5,-1'-4:O,-3:/!2^-15
 ;
@@ -2266,7 +2254,7 @@
 <90,Ph,3=?6,7:N,10:O,8:/_, at 7,\,?O!,/Cl,!Cl
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Heptachlor;MW:373.35;EXA:1
+CAT:pesticide;EN:Heptachlor;MW:373.35;EXA:2
 :
 <30,?6`1.3,3=?5,6'8=dl, at 2,210~wf`1.5,&5~wb,{1'2'5'6'9'10^-210'10^-150}:/Cl
 ;
@@ -2336,7 +2324,7 @@
 <47,?7,3:N, at 3,\,?O!,S!2
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Resmethrin;MW:338.4;EXA:1
+CAT:pesticide;EN:Resmethrin;MW:338.4;EXA:2
 :
 <-30,?3,{2^-35'*2^35}:*/_, at 1,\,!d,?!,3:/?O!'O!2,|,?5,3'5=dl,2:O,3:/!Ph
 ;
@@ -2353,8 +2341,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,
- @10,@(0,1.2),Cl,n_^15
+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
 ;
 %------------------------------------------------------------------------------
 CAT:pesticide;EN:Oxine-Copper;MW:351.852;EXA:1
@@ -2362,7 +2349,7 @@
 Ph,4:N,5=Ph, at -4,\,O,-60,<90,Cu,-90,O,60,Ph,-2=Ph,10:N, at 4,&12~vf, at 23,&12~vf
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Endosulfan;MW:406.904;EXA:1
+CAT:pesticide;EN:Endosulfan;MW:406.904;EXA:2
 :
 <26,?7,7=?6[13], at 11,208~wf`1.45,&8~wb,10=dl,3'5:O,4:S,4:?O,
  {8'9'10'11'12^-210'12^-150}:/Cl
@@ -2378,7 +2365,7 @@
 <-30,!O!,P,//S,/O!^160,!,S!2,|,?6,-3=?6,2'4'8'10=dl,1'3:N,6:?O
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Azoxystorbin;MW:403.394;EXA:1
+CAT:pesticide;EN:Azoxystorbin;MW:403.394;EXA:2
 :
 <30,Ph,2:/CN, at 3,\,O,!Ph,-1'-3:N, at -4,\,O,!Ph, at -5,\,//!O!,!,?O!,O!
 ;
@@ -2398,7 +2385,7 @@
 <30,!,?O,!NH!,O!,N,!d,!,??,!,S?O?O,!
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Isoxaflutole;MW:359.319;EXA:-
+CAT:pesticide;EN:Isoxaflutole;MW:359.319;EXA:1
 :
 <30,Ph,6:/?F?F!F, at 4,\,S?O?O,!, at 3,\`1,?O,!`1,<-12,|,?5,1'4=dl,3:O,4:N,2:/?3
 ;
@@ -2423,7 +2410,7 @@
 <30,Ph,3=?5,7'9:?O,8^55>lr:/!, at 8,-30,!2,Ph,-2:/Cl, at 11,?3,-2:O
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Indoxacarb;MW:527.837;EXA:-
+CAT:pesticide;EN:Indoxacarb;MW:527.837;EXA:2
 :
 <-6,Ph,3=?5,9=?6,15=dl,10:O,12'13:N,1:/Cl,8`1^-54:/?O!'O!,
  @12,\,?O!,N,/?O!'O!,!Ph,-3:/O!'?F?F!F
@@ -2464,7 +2451,7 @@
 <6,?5,3'5=dl,2:S,5:N,1:/Cl, at 3,\,!NH!,/NH!,!d,N,!NO2
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Chromafenozide;MW:394.515;EXA:-
+CAT:pesticide;EN:Chromafenozide;MW:394.515;EXA:1
 :
 <30,?6,3=?6,5:O,7'9'11=dl,7:/_, at 8,\,?O,!NH!,N,/??!,!,?O,!Ph,-4'-3:/_
 ;
@@ -2484,7 +2471,7 @@
 <30,Ph,6:/Cl, at 3,\,O,!Ph, at -3,\,NH!,?O!,N?!
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Cyazofamid;MW:324.783;EXA:-
+CAT:pesticide;EN:Cyazofamid;MW:324.783;EXA:1
 :
 <18,?5,2'5=dl,2'4:N,1:/Cl,3:/CN, at 4,\,S?O?O,!,N?!,5:/Ph'(4:/_)
 ;
@@ -2494,7 +2481,7 @@
 <30,Ph,1'6:/Cl, at 3,\,NH!,?O!,N?!
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Cyflufenamid;MW:412.36;EXA:-
+CAT:pesticide;EN:Cyflufenamid;MW:412.36;EXA:2
 :
 <30,Ph,4^20:/?F?F!F,1'2:/F, at 3,\,!NH!,?O!2,Ph, at -10,\\,N,!,<-12,O!2,?3
 ;
@@ -2509,7 +2496,7 @@
 <30,Ph,2'4:N,5:/_,1:/?3,3:/NH!'Ph
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Simeconazole;MW:293.417;EXA:-
+CAT:pesticide;EN:Simeconazole;MW:293.417;EXA:1
 :
 <36,?5,1'3'5:N,1'4=dl, at 3,30,!,/OH^30,!2,Si,??!,7^-30:/Ph'(4:/F),
 ;
@@ -2544,12 +2531,12 @@
 <30,Ph,1:N,6:/Cl, at 3,\,!,<-12,|,?5,1:N,3:S,-4://N'!CN
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Thiabendazole;MW:201.247;EXA:-
+CAT:pesticide;EN:Thiabendazole;MW:201.247;EXA:1
 :
 <30,Ph,3=?5,8=dl,9:NH,7:N, at 8,\,|,?5,1'4=dl,3:S,5:N
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Thiamethoxam;MW:291.71;EXA:-
+CAT:pesticide;EN:Thiamethoxam;MW:291.71;EXA:2
 :
 <30,?6,2:O,4'6:N,6:/_, at 5,\\,N,!NO2, at 4,\,!,|,?5,1'3=dl,3:N,5:S,4:/Cl
 ;
@@ -2640,7 +2627,7 @@
 <6,?5,2'5=dl,1'2:N,4:S,5:/?F?F!F, at 3,\,O!,-60,?O!,N,/?!,!Ph,-3:/F
 ;
 %------------------------------------------------------------------------------
-CAT:pesticide;EN:Flufenoxuron;MW:488.77;EXA:-
+CAT:pesticide;EN:Flufenoxuron;MW:488.77;EXA:1
 :
 <30,Ph,2'4:/F, at 3,\,?O,!NH!,?O,!NH!,Ph,-1:/F, at -3,\,O,!Ph,-3:/?F?F!F,-1:/Cl
 ;
@@ -2751,7 +2738,7 @@
 <30,Ph,1:/NH2, at 4,\,S?O?O,!NH!,Ph,-1:N
 ;
 %------------------------------------------------------------------------------
-CAT:antibacterial;EN:Marbofloxacin;MW:362.361;EXA:-
+CAT:antibacterial;EN:Marbofloxacin;MW:362.361;EXA:1
 :
 <30,Ph,3'(2--7)=?6,9=dl,6:/F,7'13:N,11:O,9:/COOH,10:?O,13:/_,1:/?6'(1:N)'(4:N?)
 ;
@@ -2768,8 +2755,7 @@
 %------------------------------------------------------------------------------
 CAT:antibacterial;EN:Ofloxacin;MW:361.373;EXA:-
 :
-<30,Ph,3'(2--7)=?6,9=dl,7:N,11:O,
- 6:/F,9:/COOH,10:?O,13:/_,1:/?6'(1:N)'(4:N?)
+<30,Ph,3'(2--7)=?6,9=dl,7:N,11:O,6:/F,9:/COOH,10:?O,13:/_,1:/?6'(1:N)'(4:N?)
 ;
 %------------------------------------------------------------------------------
 CAT:antibacterial;EN:Ciprofloxacin;MW:331.347;EXA:-
@@ -2948,7 +2934,7 @@
 :
 <30,?6, at 4,?6, at -4,\,!3,<-12,?5, at -3,<-12,?6,-3=?6, at -3,*\,!3,
  ?6, at -4,?6, at 6,\,!,/*_^-40,*/OH^20,!,?O!,OH,
- 3=wb,11=dl,15=dr,17=wf,19=wf,38=wb,5'7'16'24'25'33'42:O,
+ 3'38=wb,11=dl,15=dr,17'19=wf,5'7'16'24'25'33'42:O,
  32:*/H^60,10:/_,12'31'*37:*/_,27://_,28:/OH,3'29:/*OH
 ;
 %------------------------------------------------------------------------------
@@ -2963,13 +2949,13 @@
  @-1,\*,O,!wb,|,?6`.7,6:O,{*3^35'5}:*/_,3^-35:/NH2,4:/*OH,
 ;
 %------------------------------------------------------------------------------
-CAT:biological;EN:Maitotoxin;MW:3425.86;EXA:2
+CAT:biological;EN:Maitotoxin;MW:3425.86;EXA:-
 :
 <55.8,?6,-4=?7,-4'-3'-3'-3=?6, at -3,\,!3,?6,-4'-3'-3'-3=?6, at -3,\,?6,-3=?6,
  @-3,\,!3,60,<-30,?6,-3=?6, at -3,30,<30,?6,-3'-3=?6,-3=?7,-4'-3'-3=?6,
  @-2,\,?6,-3=?6,-3=?7,-3'-3=?6,-3=?8,-3=dl,-5'-3'-3'-3=?6,
- {5'7'15'16'23'24'32'40'41'48'49'58'59'72'73'82'83'90'91'99'
-   100'107'113'114'122'123'130'131'140'141'148'149}:O,
+ 5'7'15'16'23'24'32'40'41'48'49'58'59'72'73'82'83'90'91'99'
+   100'107'113'114'122'123'130'131'140'141'148'149:O,
  {1^60'2'26'28'29'51'54'61'63'68'75^60'78'109}:*/OH,
  11'20'35'45'52'55'65'69'86:/*OH,
  3'8'13'17'21'33'38'42'56'70'84'92'101'106'111'128'138'142'146'150:/*H^-60,

Modified: trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp
===================================================================
--- trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp	2024-12-01 21:05:17 UTC (rev 73010)
+++ trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp	2024-12-01 21:05:26 UTC (rev 73011)
@@ -1,5 +1,5 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 5.14    Copyright (c) 2013-2024   Akira Yamaji
+% mcf2graph ver 5.15    Copyright (c) 2013-2024   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,13 +22,13 @@
 % 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.14  2024.11.17";
+message "* This is mcf2graph ver 5.15  2024.12.01";
 tracingstats:=1; prologues:=3; warningcheck:=0;
 %-------------------------------------------------------------------------------------------------
 newinternal string EN_;
-numeric save_num[],pcode_com[][],pcode_par[][],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[],tbl_asc[],lenw[];
+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[],tbl_asc[],lenw[];
 string  row[][],save_str[],tbl_atom_str[],str_tbl[],arg_s[],mc[],ex[],ad[],op[],tag[],rw[],
         lib_tag[][],lib_val[][],mc,ex,ad,op,aux_delimiter,default_library,EN,FM,MW,MI,CAT,JN,CAS,
         USE,EXA,EXB,file_input,file_output,default_temp_file,mpfont,atomfont,tempc,temps,blanks,
@@ -128,10 +128,11 @@
 pcode_int_start:=3000;     % 3001 => 4000   for internal pcode (max 1000)
 %-------------------------------------------------------------------------------------------------
 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,_chg_len,
-  _get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang,_chg_env,_tmp_env,_set_colorA,_set_colorB,
+def_com(-4090)(_com,_jp_atom,_jp_absA,_jp_bond,_cyc,_cyc_sB,_cyc_eB,
+  _set_line,_tmp_line,_chg_len,_chg_slen,_get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang,
+  _chg_env,_tmp_env,_set_colorA,_set_colorB,
   _group_si,_group_dm,_group_wf,_group_zf,_set_adr,_mk_bond,_set_atom,_arrange_ang,_chg_atom,
-  _tmp_rot,_fuse,_fuse_di,_size_atom,_numeric,_numeric_inv,_jump_at,_set_add,_chg_add,_nop,
+  _tmp_rot,_fuse,_fuse_ext,_size_atom,_numeric,_numeric_inv,_jump_at,_set_add,_chg_add,_nop,
   _mark,_moff,_term,_len_s,_len_e,_len_ss,_len_ee,_group_s,_group_e,_rest,_charge,_from,_until,
   si,dl,dl_,dr,dr_,db,dm,dm_,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,nb,wf_r,wb_r,bd_r,arc_lb,arc_br,
   arc_lbr,arc_ltr,si_,wf_,wb_,zf_,zb_,wv_,bd_);
@@ -185,11 +186,9 @@
   store_par(parameter_list);
   no:=mc:=ex:=ad:=op:=temps:=mw:=mi:=fm:=filter_s:="";
   EN:=JN:=MW:=FM:=MI:=CAS:=CAT:=EXA:=EXB:=USE:="-";
-  f_ext:=cntM:=mc_row:=ex_row:=ad_row:=op_row:=info_cnt:=err_cnt:=0;
+  f_ext:=cntM:=mc_row:=ex_row:=ad_row:=op_row:=info_cnt:=err_cnt:=param_int:=0;
   let ext=ext_to_fig; let add=add_to_molecule; let ++=add_to_molecule; let **=ext_to_fig;
-  def '' = define_parts enddef; def '` = readm enddef;
-  def \ = drawm enddef; def \\ = putm enddef;
-  def \* = checkm enddef; def $ = getm enddef; def @ expr p = mposition:=p; enddef;
+  def '' = define_parts enddef; def '` = readm enddef; def \ = drawm enddef; def \\ = putm enddef;   def \* = checkm enddef; def $ = getm 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;
@@ -310,29 +309,37 @@
 enddef;
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 vardef define_parts(text t)= pcode_num:=pcode_num+1; read_mcf(pcode_num)(t); pcode_num enddef;
-vardef abs_adress primary n = if n LT 0:: (n+360)-4095 else:: n-4095 fi enddef;
+vardef pcode_extend(expr p,a,b,c,d)=
+  param_e[Incr param_int][1]:=a; param_e[param_int][2]:=b;
+  param_e[param_int][3]:=c;      param_e[param_int][4]:=d; (p,param_int)
+enddef;
+def move_pos(expr n) =
+  <$0,angle(pcode_y[n][1],pcode_y[n][2])~0`length(pcode_y[n][1],pcode_y[n][2]),<$0 enddef;
+%-------------------------------------------------------------------------------------------------
+vardef abs_adress primary n = if (n>=si)and(n<=bd_):: (_tmp_line,n) else:: n-4095 fi enddef;
 primarydef a from_until b = (_from,a),(_until,b) enddef;
-primarydef a op_quot b = add_parts(a,b) enddef;
-primarydef a bond__bond b = (a,b) enddef;
-primarydef a bond___bond b = (a+2000,b) enddef;
-primarydef a bond____bond b = (a+2000,b+2000) enddef;
+primarydef a op_quot b = if (known a)and(known b):: add_parts(a,b) else:: _nop fi enddef;
+primarydef a fuse__   b = pcode_extend(_fuse_ext,a,b,2,0) enddef;
+primarydef a fuse___  b = pcode_extend(_fuse_ext,a,b,3,0) enddef;
+primarydef a fuse____ b = pcode_extend(_fuse_ext,a,b,4,0) enddef;
 tertiarydef a op_equ b = if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef; 
 tertiarydef a op_col b = if (known a)and(known b):: change_atom(a,b) else:: _nop fi enddef;
-tertiarydef a op_hat b = if known b:: (_tmp_rot,b),a  else:: _nop,a fi enddef;
-tertiarydef a op_til b = if known b:: (_tmp_line,b),a else:: _nop,a fi enddef;
-tertiarydef a op_lth b = if known b:: (_tmp_env,b),a  else:: _nop,a fi enddef;
-tertiarydef a op_bqu b = if known b:: (_tmp_len,b),a  else:: _nop,a fi enddef;
-def rot_angle primary n = (_rot_ang,n) enddef; def cyc_atom  primary n = (_cyc,n) enddef;
-def jump_atom_abs primary a =
-  if numeric a:: (_jp_atom,$a) ef pair a:: (_jp_atom,$1),<$0,angle(a)~0`length(a),<$0 fi enddef;
-def jump_atom primary a =
-  if numeric  a:: (_jp_atom,a) ef pair a:: <$0,angle(a)~0`length(a),<$0 fi enddef;
-def chg_length primary n = (_com,_len_s),(_chg_len,n) enddef;
+tertiarydef a op_hat b = if (known a)and(known b):: (_tmp_rot,b),a   else:: _nop fi enddef;
+tertiarydef a op_til b = if (known a)and(known b):: (_tmp_line,b),a  else:: _nop fi enddef;
+tertiarydef a op_lth b = if (known a)and(known b):: (_tmp_env,b),a   else:: _nop fi enddef;
+tertiarydef a op_bqu b = if (known a)and(known b):: (_tmp_len,b),a   else:: _nop fi enddef;
+def chg_length primary n = (_chg_slen,n) enddef;
+def rot_angle  primary n = if known n:: (_rot_ang,n) else:: _nop fi enddef;
+def cyc_atom   primary n = if known 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 n>=pcode_int_start::(_jp_atom,$1),move_pos(n)
+                                else::(_jp_atom,$n) fi enddef;
 def group_si secondary n = if known n:: (_group_si,n) else:: _nop fi enddef;
 def group_dm secondary n = if known n:: (_group_dm,n) else:: _nop fi enddef;
 def group_wf secondary n = if known n:: (_group_wf,n) else:: _nop fi enddef;
 def group_zf secondary n = if known n:: (_group_zf,n) else:: _nop fi enddef;
-def group_wv secondary n = /n~wv enddef;  def group_nb secondary n = /n~nb enddef;
+def group_wv secondary n = if known n:: /n~wv         else:: _nop fi enddef;
+def group_nb secondary n = if known n:: /n~nb         else:: _nop fi enddef;
 %=================================================================================================
 def read_mcf(expr n)(text t)=
   begingroup
@@ -340,10 +347,10 @@
     save /,//,*,/*,*/,**,*/*,~,^,`,',<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_,
          --,---,----,CP,CA,CC,DL,FR,inside_mc;
     inside_mc:=1; | :=mark_adress; || :=reset_adress; ##:=reset_length; _:=NO_ATOM;
-    \:=0; \\:=zero_dm; *\:=zero_wf; \*:=zero_zf; *\*:=zero_wv; let ' == op_quot;
-    let = ==op_equ; let : ==op_col; let ^ ==op_hat; let ~ ==op_til; let > ==op_lth;
-    let ` ==op_bqu; let -- == bond__bond; let --- == bond___bond; let ---- == bond____bond;
-    let } == ); let @$ ==jump_atom_abs; let < ==rot_angle; let @ ==jump_atom; let & ==cyc_atom;
+    \:=0; \\:=zero_dm; *\:=zero_wf; \*:=zero_zf; *\*:=zero_wv; let ' == op_quot; let = ==op_equ;
+    let : ==op_col; let ^ ==op_hat; let ~ ==op_til; let > ==op_lth; let ` ==op_bqu;
+    let -- == fuse__; let --- == fuse___; let ---- == fuse____; let } == );
+    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 ** ==group_nb; let CP == pcode_add; let CA == pcode_add_adr;
     let FR == fuse_ring_bonds; def DL(expr p)==CA(_set_line,dl,p) enddef;
@@ -356,11 +363,11 @@
   for list==t::
     if known list::
       if pair list::
-        pcode_com[n][Incr pcode_cnt[n]]:=xpart(list); pcode_par[n][pcode_cnt[n]]:=ypart(list);
+        pcode_x[n][Incr pcode_cnt[n]]:=xpart(list); pcode_y[n][pcode_cnt[n]]:=ypart(list);
       ef numeric list::
         if list==_nop:: message "unknown command in "AND decimal(n);
         ef list>=pcode_emb_start:: expand_pcode(n,list);
-        else:: pcode_com[n][Incr pcode_cnt[n]]:=_mk_bond; pcode_par[n][pcode_cnt[n]]:=list;
+        else:: pcode_x[n][Incr pcode_cnt[n]]:=_mk_bond; pcode_y[n][pcode_cnt[n]]:=list;
         fi
       fi
     else:: message "unknown command in "AND decimal(n);
@@ -372,70 +379,68 @@
 def expand_pcode(expr n,a)=
   if n==0::
     for i==1 upto pcode_cnt[a]::
-      if pcode_com[a][i]>=pcode_emb_start:: expand_pcode(n,pcode_com[a][i]);
+      if pcode_x[a][i]>=pcode_emb_start:: expand_pcode(n,pcode_x[a][i]);
       else::
-        pcode_com[n][Incr pcode_cnt[n]]:=pcode_com[a][i];
-        pcode_par[n][pcode_cnt[n]]:=pcode_par[a][i];
+        pcode_x[n][Incr pcode_cnt[n]]:=pcode_x[a][i]; pcode_y[n][pcode_cnt[n]]:=pcode_y[a][i];
       fi
     endfor
-  else:: pcode_com[n][Incr pcode_cnt[n]]:=a;
+  else:: pcode_x[n][Incr pcode_cnt[n]]:=a;
   fi
 enddef;
 %-------------------------------------------------------------------------------------------------
 vardef read_adress(text t)=
-  save :,';
+  save :,',pcnt,start_num;
   let ' == , ; let : == from_until;
-  pcode_int:=pcode_int+1;
-  nA:=0;
+  pcode_int:=pcode_int+1; pcnt:=0;
   for list==t::
     if known list::
       if numeric list::
         if list==_nop:: message "unknown command in "AND decimal(pcode_int);
-        else:: pcode_com[pcode_int][Incr nA]:=_numeric; pcode_par[pcode_int][nA]:=list;
+        else:: pcode_x[pcode_int][Incr pcnt]:=_numeric; pcode_y[pcode_int][pcnt]:=list;
         fi
       ef pair list::
-        if xpart(list)==_from:: nB:=ypart(list);
+        if xpart(list)==_from:: start_num:=ypart(list);
         ef xpart(list)==_until::
-           for i==nB upto ypart(list)::
-             pcode_com[pcode_int][Incr nA]:=_numeric; pcode_par[pcode_int][nA]:=i; endfor
-        else:: pcode_com[pcode_int][Incr nA]:=xpart(list); pcode_par[pcode_int][nA]:=ypart(list);
+           for i==start_num upto ypart(list)::
+             pcode_x[pcode_int][Incr pcnt]:=_numeric; pcode_y[pcode_int][pcnt]:=i;
+           endfor
+        else:: pcode_x[pcode_int][Incr pcnt]:=xpart(list); pcode_y[pcode_int][pcnt]:=ypart(list);
         fi
       fi
     else:: message "unknown command in "AND decimal(pcode_int);
     fi
   endfor
-  pcode_cnt[pcode_int]:=nA; pcode_int
+  pcode_cnt[pcode_int]:=pcnt; pcode_int
 enddef;
 %-------------------------------------------------------------------------------------------------
 vardef add_parts(expr a,b)=
   if (pair a)and(pair b)::
-    pcode_com[Incr pcode_int][1]:=xpart a; pcode_par[pcode_int][1]:=ypart a;
-    pcode_com[Incr pcode_int][2]:=xpart b; pcode_par[pcode_int][2]:=ypart b;
-    pcode_cnt[pcode_int]:=2;
+    pcode_x[Incr pcode_int][1]:=xpart a; pcode_y[pcode_int][1]:=ypart a;
+    pcode_x[pcode_int][2]:=xpart b; pcode_y[pcode_int][2]:=ypart b; pcode_cnt[pcode_int]:=2;
   elseif pair a::
-    pcode_com[Incr pcode_int][1]:=xpart a; pcode_par[pcode_int][1]:=ypart a;
-    if b>=pcode_emb_start:: pcode_com[pcode_int][2]:=b;
-    else:: pcode_com[pcode_int][2]:=_numeric; pcode_par[pcode_int][2]:=b;
+    pcode_x[Incr pcode_int][1]:=xpart a; pcode_y[pcode_int][1]:=ypart a;
+    if b>=pcode_emb_start:: pcode_x[pcode_int][2]:=b;
+    else:: pcode_x[pcode_int][2]:=_numeric; pcode_y[pcode_int][2]:=b;
     fi
     pcode_cnt[pcode_int]:=2;
   elseif pair b::
     if a>=pcode_int_start::
-      pcode_com[a][Incr pcode_cnt[a]]:=xpart b; pcode_par[a][pcode_cnt[a]]:=ypart b;
+      pcode_x[a][Incr pcode_cnt[a]]:=xpart b; pcode_y[a][pcode_cnt[a]]:=ypart b;
     elseif a>=pcode_emb_start::
-      pcode_com[Incr pcode_int][1]:=a;
-      pcode_com[pcode_int][2]:=xpart b; pcode_par[pcode_int][2]:=ypart b; pcode_cnt[pcode_int]:=2;
+      pcode_x[Incr pcode_int][1]:=a;
+      pcode_x[pcode_int][2]:=xpart b; pcode_y[pcode_int][2]:=ypart b; pcode_cnt[pcode_int]:=2;
     else::
-      pcode_com[Incr pcode_int][1]:=_numeric; pcode_par[pcode_int][1]:=a;
-      pcode_com[pcode_int][2]:=xpart b; pcode_par[pcode_int][2]:=ypart b; pcode_cnt[pcode_int]:=2;
+      pcode_x[Incr pcode_int][1]:=_numeric; pcode_y[pcode_int][1]:=a;
+      pcode_x[pcode_int][2]:=xpart b; pcode_y[pcode_int][2]:=ypart b; pcode_cnt[pcode_int]:=2;
     fi
   elseif (a LT pcode_emb_start)and(b LT pcode_emb_start)::
-    pcode_com[Incr pcode_int][1]:=_numeric; pcode_par[pcode_int][1]:=a;
-    pcode_com[pcode_int][2]:=_numeric; pcode_par[pcode_int][2]:=b; pcode_cnt[pcode_int]:=2;
+    pcode_x[Incr pcode_int][1]:=_numeric; pcode_y[pcode_int][1]:=a;
+    pcode_x[pcode_int][2]:=_numeric; pcode_y[pcode_int][2]:=b; pcode_cnt[pcode_int]:=2;
   elseif (a>=pcode_int_start)and(b LT pcode_int_start)::
-    if b>=pcode_emb_start:: pcode_com[a][Incr pcode_cnt[a]]:=b;
-    else:: pcode_com[a][Incr pcode_cnt[a]]:=_numeric; pcode_par[a][pcode_cnt[a]]:=b;
+    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_com[Incr pcode_int][1]:=a; pcode_com[pcode_int][2]:=b; pcode_cnt[pcode_int]:=2;
+  else:: pcode_x[Incr pcode_int][1]:=a; pcode_x[pcode_int][2]:=b; pcode_cnt[pcode_int]:=2;
   fi
   pcode_int
 enddef;
@@ -459,79 +464,63 @@
   CP(_jp_bond,a) CP(_rot_ang,180) CC(_len_s) CP(_chg_len,c DIV 10)
   if b==5:: CB(72-((c-9) MUL 1.5)) CB(72+(c-9)) CB(72+(c-9))
   ef b==6:: CB(60-(c-8)) for i==1 upto 3:: CB(60+((c-8) DIV 2)) endfor
-  ef b==7:: CB(360 DIV 7-(c-8)) for i==1 upto 4:: CB(360 DIV 7+((c-8) DIV 2.5)) endfor
-  ef b==8:: CB(45-(c-8))  for i==1 upto 5:: CB(45+((c-8) DIV 3)) endfor
   fi
   CC(_len_e) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi
 enddef;
 %=================================================================================================
 vardef change_bond(expr a,b) =
-  if known b:: pcode_int:=pcode_int+1; nC:=0;
+  save pY;
+  if known b:: pcode_cnt[Incr pcode_int]:=0;
     if numeric b::
       if (b>=si)and(b<=bd_)::
         if a>=pcode_int_start::
           for i==1 upto pcode_cnt[a]::
-            if pcode_com[a][i]==_numeric:: CA(_set_line,b,pcode_par[a][i])
-            elseif pcode_com[a][i]==_numeric_inv::
-              if b==dl:: CA(_set_line,dr,pcode_par[a][i])
-              ef b==dr:: CA(_set_line,dl,pcode_par[a][i]) fi
+            if pcode_x[a][i]==_numeric:: CA(_set_line,b,pcode_y[a][i])
+            elseif pcode_x[a][i]==_numeric_inv::
+              if b==dl:: CA(_set_line,dr,pcode_y[a][i])
+              ef b==dr:: CA(_set_line,dl,pcode_y[a][i]) fi
             fi
           endfor
         else:: CP(_set_adr,a) CP(_set_line,b)
         fi
-      elseif (b>=?3)and(b<=?8[15])::
+      elseif (b>=?3)and(b<=?6[15])::
         if numeric a::
           if a>=pcode_int_start::
             for i==1 upto pcode_cnt[a]::
-              if pcode_com[a][i]==_numeric::
-                if b==Ph1:: fuse_ring(pcode_par[a][i],6) DL(-2) DL(-4)
-                ef b==Ph2:: fuse_ring(pcode_par[a][i],6) DL(-1) DL(-3) DL(-5)
-                ef (b>=?5[11])and(b<=?8[15]):: fuse_ring_size(a,pcode_com[b][1],pcode_par[b][1])
-                else:: fuse_ring(pcode_par[a][i],b-?3+3) fi
-              else::
-                if b==?6:: 
-                  if (pcode_com[a][i]<=1800)and(pcode_par[a][i]<=1800)::
-                    FR(pcode_com[a][i],pcode_par[a][i],6,4)
-                  ef pcode_par[a][i]<=1800:: FR(pcode_com[a][i]-2000,pcode_par[a][i],6,3)
-                  else:: FR(pcode_com[a][i]-2000,pcode_par[a][i]-2000,6,2)
-                  fi
-                ef b==?5::
-                  if (pcode_com[a][i]<=1800)and(pcode_par[a][i]<=1800)::
-                    FR(pcode_com[a][i],pcode_par[a][i],5,3)
-                  ef pcode_par[a][i]<=1800:: FR(pcode_com[a][i]-2000,pcode_par[a][i],5,2)
-                  fi
-                ef b==?4::  FR(pcode_com[a][i],pcode_par[a][i],4,2)
-                ef b==Ph1:: FR(pcode_com[a][i],pcode_par[a][i],6,4) DL(-1) DL(-3)
-                ef b==Ph2:: FR(pcode_com[a][i],pcode_par[a][i],6,4) DL(-2) DL(-4)
+              pY:=pcode_y[a][i];
+              if pcode_x[a][i]==_numeric::
+                if b==Ph1:: fuse_ring(pY,6) DL(-2) DL(-4)
+                ef b==Ph2:: fuse_ring(pY,6) DL(-1) DL(-3) DL(-5)
+                ef (b>=?5[11])and(b<=?6[15]):: fuse_ring_size(a,pcode_x[b][1],pcode_y[b][1])
+                else:: fuse_ring(pY,b-?3+3)
                 fi
+              ef pcode_x[a][i]==_fuse_ext::
+                if b==?6:: FR(param_e[pY][1],param_e[pY][2],6,6-param_e[pY][3])
+                ef b==?5:: FR(param_e[pY][1],param_e[pY][2],5,5-param_e[pY][3])
+                ef b==?4:: FR(param_e[pY][1],param_e[pY][2],4,2)
+                fi
               fi
-           endfor
+            endfor
           else::
             if b==Ph1:: fuse_ring(a,6) DL(-2) DL(-4)
             ef b==Ph2:: fuse_ring(a,6) DL(-1) DL(-3) DL(-5)
-            ef (b>=?5[11])and(b<=?8[15]):: fuse_ring_size(a,pcode_com[b][1],pcode_par[b][1])
-            else:: fuse_ring(a,b-?3+3)
-            fi
+            ef (b>=?5[11])and(b<=?6[15]):: fuse_ring_size(a,pcode_x[b][1],pcode_y[b][1])
+            else:: fuse_ring(a,b-?3+3) fi
           fi
         ef pair a::
-          if b==?6:: if (xpart a<=1800)and(ypart a<=1800):: FR(xpart a,ypart a,6,4)
-                     ef ypart a<=1800:: FR((xpart a)-2000,ypart a,6,3)
-                     else:: FR((xpart a)-2000,(ypart a)-2000,6,2)
-                     fi
-          ef b==?5:: if (xpart a<=1800)and(ypart a<=1800):: FR(xpart a,ypart a,5,3)
-                     ef ypart a<=1800:: FR((xpart a)-2000,ypart a,5,2)
-                     fi
+          if b==?6:: FR(param_e[ypart a][1],param_e[ypart a][2],6,6-param_e[ypart a][3])
+          ef b==?5:: FR(param_e[ypart a][1],param_e[ypart a][2],5,5-param_e[ypart a][3])
           ef b==?4:: FR(xpart a,ypart a,4,2)
+          fi
         fi
       fi
-    fi
     elseif color b:: cntC:=cntC+1; color_list[cntC]:=b; CA(_set_colorB,cntC,a) fi
-    pcode_cnt[pcode_int]:=nC; pcode_int
+    pcode_int
   fi
 enddef;
 %-------------------------------------------------------------------------------------------------
 vardef change_atom(expr a,b)=
-  if known b:: pcode_int:=pcode_int+1; nC:=0;
+  if known b:: pcode_cnt[Incr pcode_int]:=pcnt:=0;
     if numeric b::
       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 sw_expand==0:: CP(_tmp_line,nl) fi
@@ -549,11 +538,11 @@
       CC(_group_s)
       if a>=pcode_emb_start::
         for i==1 upto pcode_cnt[a]::
-          if pcode_com[a][i]==_numeric:: CA(xpart(b),ypart(b),pcode_par[a][i])
-          elseif pcode_com[a][i]==_numeric_inv::
-            if xpart(b)==_group_wf:: CA(_group_zf,ypart(b),pcode_par[a][i])
-            ef xpart(b)==_group_zf:: CA(_group_wf,ypart(b),pcode_par[a][i]) fi
-          else:: CP(pcode_com[a][i],pcode_par[a][i])
+          if pcode_x[a][i]==_numeric:: CA(xpart(b),ypart(b),pcode_y[a][i])
+          ef pcode_x[a][i]==_numeric_inv::
+            if xpart(b)==_group_wf:: CA(_group_zf,ypart(b),pcode_y[a][i])
+            ef xpart(b)==_group_zf:: CA(_group_wf,ypart(b),pcode_y[a][i])  fi
+          else:: CP(pcode_x[a][i],pcode_y[a][i])
           fi
         endfor
       else:: CA(xpart(b),ypart(b),a) fi
@@ -560,16 +549,18 @@
       CC(_group_e)
     ef color b:: cntC:=cntC+1; color_list[cntC]:=b; CA(_set_colorA,cntC,a)
     fi
-    pcode_cnt[pcode_int]:=nC; pcode_int
+    pcode_cnt[pcode_int]:=pcode_cnt[pcode_int]; pcode_int
   fi
 enddef;
 %-------------------------------------------------------------------------------------------------
-def pcode_add(expr c,p)= pcode_com[pcode_int][Incr nC]:=c; pcode_par[pcode_int][nC]:=p; enddef;
+def pcode_add(expr c,p)= pcode_x[pcode_int][Incr pcode_cnt[pcode_int]]:=c;
+                         pcode_y[pcode_int][pcode_cnt[pcode_int]]:=p;
+enddef;
 def pcode_add_adr(expr c,p,a)=
   if a>=pcode_emb_start::
     for i==1 upto pcode_cnt[a]::
-      if pcode_com[a][i]==_numeric:: pcode_add(_set_adr,pcode_par[a][i]) pcode_add(c,p) 
-      else:: pcode_add(pcode_com[a][i],pcode_par[a][i])
+      if pcode_x[a][i]==_numeric:: pcode_add(_set_adr,pcode_y[a][i]) pcode_add(c,p) 
+      else:: pcode_add(pcode_x[a][i],pcode_y[a][i])
       fi
     endfor
   else:: pcode_add(_set_adr,a) pcode_add(c,p)
@@ -736,8 +727,8 @@
   for i=n upto group_num:
     for j=1 upto group_cnt[i]:
       if group_com[i][j]>=pcode_emb_start: expand_pcode(0,group_com[i][j]);
-      else: pcode_com[0][incr pcode_cnt[0]]:=group_com[i][j];
-            pcode_par[0][pcode_cnt[0]]:=group_par[i][j];
+      else: pcode_x[0][incr pcode_cnt[0]]:=group_com[i][j];
+            pcode_y[0][pcode_cnt[0]]:=group_par[i][j];
       fi
     endfor
   endfor
@@ -788,52 +779,53 @@
   bondL:=rate_cr; lenT:=rate_cr; sB[0]:=0; eB[0]:=1; lineT:=si;
   addAT:=markA:=markB:=saveA:=saveB:=0;
   %-----------------------------------------------------------------------------------------------
-  for i=n upto pcode_cnt[a]: nC:=pcode_com[a][i]; nP:=pcode_par[a][i];
-    if nC=_mk_bond: if (nP=0)and(rotT<>0): rotT:=0; fi add_atom(0);
-    ef nC=_set_adr: adrT:=nP;
-    ef nC=_com: if nP=_mark: saveA:=markA; saveB:=markB; markA:=cntA; markB:=cntB;
-                ef nP=_rest: markA:=saveA; markB:=saveB;
-                ef nP=_moff: markA:=markB:=0;
-                ef nP=_term: termA;
-                ef nP=_len_s:  temp_lenE:=bondL; ef nP=_len_e:  bondL:=temp_lenE;
-                ef nP=_len_ss: temp_lenF:=bondL; ef nP=_len_ee: bondL:=temp_lenF;
-                ef nP=_group_s: f_at:=1; if lineT<>si: f_lineT:=1; fi if rotT<>0: f_rotT:=1; fi
+  for i=n upto pcode_cnt[a]: pX:=pcode_x[a][i]; pY:=pcode_y[a][i];
+    if pX=_mk_bond: if (pY=0)and(rotT<>0): rotT:=0; fi add_atom(0);
+    ef pX=_set_adr: adrT:=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=_len_s:  temp_lenE:=bondL; ef pY=_len_e:  bondL:=temp_lenE;
+                ef pY=_len_ss: temp_lenF:=bondL; ef pY=_len_ee: bondL:=temp_lenF;
+                ef pY=_group_s: f_at:=1; if lineT<>si: f_lineT:=1; fi if rotT<>0: f_rotT:=1; fi
                                 if lenT<>rate_cr: f_lenT:=1;  fi if envT<>hz: f_envT:=1; fi
-                ef nP=_group_e: f_at:=0; f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=envT:=0;
+                ef pY=_group_e: f_at:=0; f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=envT:=0;
                                 lineT:=si; lenT:=rate_cr; fi
-    ef nC=_set_atom: temp_strA:=nP;
-    ef nC=_group_si: add_group;
-    ef nC=_group_dm: lineT:=dm; add_group;
-    ef nC=_group_wf: lineT:=wf; add_group;
-    ef nC=_group_zf: lineT:=zf; add_group;
-    ef nC=_jp_bond:  termA; nA:=getB(nP); check_adrB(nA); sB[cntB+1]:=sB[nA]; f_bra:=1;
-    ef nC=_jp_atom:  termA; nA:=getA(nP); check_adrA(nA); sB[cntB+1]:=nA; f_bra:=1;
-    ef nC=_jp_absA:  sB[cntB+1]:=nP; f_bra:=1; temp_cntB:=cntB;
-    ef nC=_chg_atom: strA[getA(adrT)]:=pcode_par[nP][1];
-    ef nC=_chg_len:  if nP=_ring_len: bondL:=ringL; else: bondL:=nP; fi
-    ef nC=_get_len:  if nP=_tmp_len: if bondL=rate_cr: bondL:=lenT; fi
-                     ef nP=_ring_len:
+    ef pX=_set_atom: temp_strA:=pY;
+    ef pX=_group_si: add_group(pY);
+    ef pX=_group_dm: lineT:=dm; add_group(pY);
+    ef pX=_group_wf: lineT:=wf; add_group(pY);
+    ef pX=_group_zf: lineT:=zf; add_group(pY);
+    ef pX=_jp_bond:  termA; nA:=getB(pY); check_adrB(nA); sB[cntB+1]:=sB[nA]; f_bra:=1;
+    ef pX=_jp_atom:  termA; nA:=getA(pY); check_adrA(nA); 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: strA[getA(adrT)]:=pcode_y[pY][1];
+    ef pX=_chg_len:  if pY=_ring_len: bondL:=ringL; else: bondL:=pY; fi
+    ef pX=_chg_slen: temp_lenE:=bondL; if pY=_ring_len: bondL:=ringL; else: bondL:=pY; fi
+    ef pX=_get_len:  if pY=_tmp_len: if bondL=rate_cr: bondL:=lenT; fi
+                     ef pY=_ring_len:
                        if lenT<>rate_cr: bondL:=lenT; else: if bondL<0: bondL:=1; fi fi
-                     else: ringL:=lenB[getB(nP)]; fi
-    ef nC=_tmp_len:  lenT:=nP;
-    ef nC=_set_line: lineB[getB(adrT)]:=nP;
-    ef nC=_tmp_line: lineT:=nP;
-    ef nC=_tmp_rot:  rotT:=nP;
-    ef nC=_cyc:      check_adrA(getA(nP)); add_atom(getA(nP));
-    ef nC=_cyc_eB:   add_atom(eB[getB(nP)]);
-    ef nC=_cyc_sB:   add_atom(sB[getB(nP)]);
-    ef nC=_chg_env:  envB:=nP;
-    ef nC=_tmp_env:  envT:=nP;
-    ef nC=_set_colorA: colorA[getA(adrT)]:=nP;
-    ef nC=_set_colorB: colorB[getB(adrT)]:=nP;
-    ef nC=_set_add: addAT:=nP;
-    ef nC=_chg_add: addA[getA(nP)]:=addAT; addAT:=0; if rotT<>0: add_rot[getA(nP)]:=rotT; fi
+                     else: ringL:=lenB[getB(pY)]; fi
+    ef pX=_tmp_len:  lenT:=pY;
+    ef pX=_set_line: lineB[getB(adrT)]:=pY;
+    ef pX=_tmp_line: lineT:=pY;
+    ef pX=_tmp_rot:  rotT:=pY;
+    ef pX=_cyc:      check_adrA(getA(pY)); add_atom(getA(pY));
+    ef pX=_cyc_eB:   add_atom(eB[getB(pY)]);
+    ef pX=_cyc_sB:   add_atom(sB[getB(pY)]);
+    ef pX=_chg_env:  envB:=pY;
+    ef pX=_tmp_env:  envT:=pY;
+    ef pX=_set_colorA: colorA[getA(adrT)]:=pY;
+    ef pX=_set_colorB: colorB[getB(adrT)]:=pY;
+    ef pX=_set_add: addAT:=pY;
+    ef pX=_chg_add: addA[getA(pY)]:=addAT; addAT:=0; if rotT<>0: add_rot[getA(pY)]:=rotT; fi
     else:
     fi
   endfor
 enddef;
 %-------------------------------------------------------------------------------------------------
-def add_group=
+def add_group(expr n)=
   if f_at=1: nE:=getA(adrT); check_adrA(nE); else: nE:=cntA+1; fi
   group_cnt[incr group_num]:=0; store_group(_jp_absA,nE)
   store_group(_com,_mark)
@@ -846,9 +838,7 @@
   if envT<>hz:  store_group(_chg_env,envT) fi
   if lineT=nl:  store_group(_chg_len,_size_atom) store_group(_adj_ang,0) fi
   if lineT<>nb: store_group(_mk_bond,0) fi
-  if nP<>NO_ATOM:
-    for i=1 upto pcode_cnt[nP]: store_group(pcode_com[nP][i],pcode_par[nP][i]) endfor 
-  fi
+  if n<>NO_ATOM: for i=1 upto pcode_cnt[n]: store_group(pcode_x[n][i],pcode_y[n][i]) endfor fi
   store_group(_com,_len_e) store_group(_chg_env,hz) store_group(_com,_term)
   store_group(_com,_rest)
   if f_lineT=0: lineT:=si; fi
@@ -881,24 +871,24 @@
   envT:=envB:=f_lineT:=f_rotT:=f_lenT:=f_envT:=0; lineT:=si; angT:=mangle;
   angA[0]:=angB[0]:=angX[0]:=0; posA[0]:=posBs:=posBe:=(0,0);
   %-----------------------------------------------------------------------------------------------
-  for i=1 upto pcode_cnt[n]: nC:=pcode_com[n][i]; nP:=pcode_par[n][i];
-    if nC=_mk_bond: if (nP=0)and(rotT<>0):nP:=rotT; rotT:=0; fi add_bond(nP,1);
-    ef nC=_com: if nP=_mark: saveA:=markA; saveB:=markB; markA:=cntA; markB:=cntB;
-                ef nP=_rest: markA:=saveA; markB:=saveB;
-                ef nP=_moff: markA:=markB:=0; ef nP=_term: termB;
-                ef nP=_group_e: lineT:=si; lenT:=rate_cr; rotT:=envT:=0; fi
-    ef nC=_jp_bond: termB; nA:=getB(nP); posBs:=posA[sB[nA]]; angT:=angB[nA]; f_bra:=1; rotT:=0;
-    ef nC=_jp_atom: termB; adrT:=getA(nP); posBs:=posA[adrT]; angT:=angX[adrT]; f_bra:=1; rotT:=0;
-    ef nC=_jp_absA: adrT:=nP; posBs:=posA[adrT]; angT:=angX[adrT];
+  for i=1 upto pcode_cnt[n]: pX:=pcode_x[n][i]; pY:=pcode_y[n][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;
+                ef pY=_group_e: lineT:=si; lenT:=rate_cr; rotT:=envT:=0; fi
+    ef pX=_jp_bond: termB; nA:=getB(pY); posBs:=posA[sB[nA]]; angT:=angB[nA]; f_bra:=1; rotT:=0;
+    ef pX=_jp_atom: termB; adrT:=getA(pY); posBs:=posA[adrT]; angT:=angX[adrT]; f_bra:=1; rotT:=0;
+    ef pX=_jp_absA: adrT:=pY; posBs:=posA[adrT]; angT:=angX[adrT];
                     f_bra:=1; rotT:=0; temp_cntB:=cntB;
-    ef nC=_adj_ang: angT:=adjust_ang(angT);
-    ef nC=_rot_ang: if nP>-3700: angT:=(angT+nP) mod 360; else: angT:=(nP+4095) mod 360; fi
-    ef nC=_tmp_rot: rotT:=nP;
-    ef nC=_chg_env: envB:=nP;
-    ef nC=_tmp_env: envT:=nP;
-    ef nC=_cyc:     add_bond(angle(posA[getA(nP)]-posBs)-angT,0);
-    ef nC=_cyc_sB:  add_bond(angle(posA[sB[getB(nP)]]-posBs)-angT,0);
-    ef nC=_cyc_eB:  add_bond(angle(posA[eB[getB(nP)]]-posBs)-angT,0);
+    ef pX=_adj_ang: angT:=adjust_ang(angT);
+    ef pX=_rot_ang: if pY>-3700: angT:=(angT+pY) mod 360; else: angT:=(pY+4095) mod 360; fi
+    ef pX=_tmp_rot: rotT:=pY;
+    ef pX=_chg_env: envB:=pY;
+    ef pX=_tmp_env: envT:=pY;
+    ef pX=_cyc:     add_bond(angle(posA[getA(pY)]-posBs)-angT,0);
+    ef pX=_cyc_sB:  add_bond(angle(posA[sB[getB(pY)]]-posBs)-angT,0);
+    ef pX=_cyc_eB:  add_bond(angle(posA[eB[getB(pY)]]-posBs)-angT,0);
     else:
     fi
   endfor
@@ -924,7 +914,7 @@
 %-------------------------------------------------------------------------------------------------
 vardef arrange_ang(expr n)=
   if cntB=0: angT:=(angT-180) mod 360; 180
-  else: if envB>=pcode_emb_start: pcode_par[envB][cntB-temp_cntB]
+  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
@@ -1010,7 +1000,7 @@
   ef nL=bz: bz_put(sfrt(Ls,ww,ap),sfrt(Le,ww,ap),sfrt(Ls,ww,am),sfrt(Le,ww,am));
   ef nL=zf: wz_put(Ls,sfrt(Le,ww,ap),sfrt(Le,ww,am));
   ef nL=zb: wz_put(Le,sfrt(Ls,ww,am),sfrt(Ls,ww,ap));
-  ef nL=dt: for i=0 step .75hash_gap/lenL until 1: drawdot i[Ls,Le]; endfor
+  ef nL=dt: for i=0 step .75hash_gap/lenL until 1: drawdot i[Ls,Le] wpcs 2bond_pen_wd; endfor
   ef nL=wv: nA:=.4bondgap; nB:=round(lenL/nA);
             draw Ls for i=1 upto nB: ..controls(point (i-.5)/nB of sfrt(zA,nA,iif(odd i,ap,am)))
                                      ..point i/nB of zA endfor
@@ -1379,7 +1369,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 vardef define_atom(expr s,WT,MI)=
   str_cnt:=str_cnt+1; tbl_cnt:=tbl_cnt+1; pcode_num:=pcode_num+1;
-  pcode_com[pcode_num][1]:=_set_atom; pcode_par[pcode_num][1]:=str_cnt; pcode_cnt[pcode_num]:=1;
+  pcode_x[pcode_num][1]:=_set_atom; pcode_y[pcode_num][1]:=str_cnt; pcode_cnt[pcode_num]:=1;
   str_tbl[str_cnt]:=tbl_atom_str[tbl_cnt]:=s; tbl_atom[tbl_cnt]:=0;
   tbl_atom_wt[tbl_cnt]:=WT; tbl_atom_mi[tbl_cnt]:=MI; pcode_num
 enddef;
@@ -1386,7 +1376,7 @@
 %-------------------------------------------------------------------------------------------------
 vardef define_group_string(expr s)(text t)=
   str_cnt:=str_cnt+1; tbl_cnt:=tbl_cnt+1; pcode_num:=pcode_num+1;
-  pcode_com[pcode_num][1]:=_set_atom; pcode_par[pcode_num][1]:=str_cnt; pcode_cnt[pcode_num]:=1;
+  pcode_x[pcode_num][1]:=_set_atom; pcode_y[pcode_num][1]:=str_cnt; pcode_cnt[pcode_num]:=1;
   str_tbl[str_cnt]:=tbl_atom_str[tbl_cnt]:=s; tbl_atom[tbl_cnt]:=0;
   for list=t: tbl_group[tbl_cnt][incr tbl_atom[tbl_cnt]]:=list-pcode_emb_start; endfor
   pcode_num
@@ -1443,7 +1433,7 @@
     for j==2 upto i:: ,(360 DIV i) endfor,(_cyc_sB,1-i),(_com,_len_ee));
   endfor
   Ph:=Ph1:='(?6,-2=dl,-4=dl,-6=dl); Ph2:='(?6,-1=dl,-3=dl,-5=dl);
-  for i=5,6,7,8: for j=11 upto 15:  ?[i][j]:='((i,j)); endfor endfor
+  for i=5,6: for j=11 upto 15:  ?[i][j]:='((i,j)); endfor endfor
   %-----------------------------------------------------------------------------------------------
   !:=!1:='((_mk_bond,_arrange_ang)); !db:=!d:='(!~db); !tm:=!t:='(!~tm); !wf:=!w:='(!~wf);
   !zf:=!z:='(!~zf); !wb:='(!~wb); !zb:='(!~zb); !dl:='(!~dl); !dr:='(!~dr); !dm:='(!~dm);
@@ -1535,7 +1525,7 @@
         if nA<>CMA: proc_err(5,nB) fi if nC=CMA: proc_err(4,i) fi
       ef (nB=SLS)or((nB>=7)and(nB<=11)):                                  % /,*/*,//,/*,*/,**
         if (nA<>CMA)and(nA<>CLN)and(nA<>PRS): proc_err(5,i) fi
-        if nC=CMA: proc_err(4,i) fi
+        if (nC=CMA): proc_err(4,i) fi
       fi
       if (nB=PRS)or(nB=BRS): f_depth:=f_depth+1; ef (nB=PRE)or(nB=BRE): f_depth:=f_depth-1; fi
     endfor



More information about the tex-live-commits mailing list.