texlive[43416] Master/texmf-dist: mcf2graph (6mar17)

commits+karl at tug.org commits+karl at tug.org
Mon Mar 6 22:59:14 CET 2017


Revision: 43416
          http://tug.org/svn/texlive?view=revision&revision=43416
Author:   karl
Date:     2017-03-06 22:59:14 +0100 (Mon, 06 Mar 2017)
Log Message:
-----------
mcf2graph (6mar17)

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.mf
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf
    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_mplib_exa.pdf
    trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
    trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG	2017-03-06 21:58:50 UTC (rev 43415)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG	2017-03-06 21:59:14 UTC (rev 43416)
@@ -1,6 +1,10 @@
 *******************************************************************************
- Changelog of mcf2graph software package          by Akira Yamaji 2017-02-13
+ Changelog of mcf2graph software package          by Akira Yamaji 2017-03-06
 *******************************************************************************
+[ver. 4.11  / 2017-03-06]
+  -improve function EXT(),ext()
+  -update MCF syntax manual
+
 [ver. 4.10  / 2017-02-13]
   -improve function EXT(),ext()
   -update MCF syntax manual

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/README
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/README	2017-03-06 21:58:50 UTC (rev 43415)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/README	2017-03-06 21:59:14 UTC (rev 43416)
@@ -1,7 +1,7 @@
 ********************************************************************************
  mcf2graph  : Convert Molecular Coding Format to graphics with METAFONT/METAPOST
  Author     : Akira Yamaji
- version    : 4.10 2017-02-13
+ version    : 4.11 2017-03-06
  E-mail     : mcf2graph at gmail.com
  Located at : http://www.ctan.org/pkg/mcf2graph
 ********************************************************************************
@@ -31,12 +31,13 @@
 
 3. How to use mcf2graph with Metapost
  Minimum requirement to run mcf2graph : mpost.exe,mpost.dll,mpost.mp,plain.mp
- ( 1) >mpost -s ahangle=0  FILENAME  => output no graphic file.
- ( 2) >mpost -s ahangle=1  FILENAME  => output PNG file. (default:eps)
- ( 3) >mpost -s ahangle=2  FILENAME  => output SVG file. 
+ ( 1) >mpost -s ahangle=0  FILENAME  => output no graphic file
+ ( 2) >mpost -s ahangle=1  FILENAME  => output PNG file (default:eps)
+ ( 3) >mpost -s ahangle=2  FILENAME  => output SVG file 
  ( 4) >mpost -s ahangle=3  FILENAME  => output MDL Molfile(V2000)
  ( 5) >mpost -s ahlength=1 FILENAME  => output first definition only (for test)
- ( 6) >mpost -s ahlength=2 FILENAME  => output report.
+ ( 6) >mpost -s ahlength=2 FILENAME  => output report
+ ( 7) >mpost -s ahlength=3 FILENAME  => use Metapost 'label'
 
 4. License
  Permission is hereby granted, free of charge, to any person obtaining a copy

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf	2017-03-06 21:58:50 UTC (rev 43415)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf	2017-03-06 21:59:14 UTC (rev 43416)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Molecular Coding Format for mcf_example.tex   by Akira Yamaji  2017.02.13
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf;   %%% it must be version 4.10 or later
+input mcf2graph.mf;   %%% it must be version 4.11 or later
 %-------------------------------------------------------------------------
 font_wd#:=33mm#;
 font_ht#:=24mm#;

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf	2017-03-06 21:58:50 UTC (rev 43415)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf	2017-03-06 21:59:14 UTC (rev 43416)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format file for mcf_manual.tex  by Akira.Yamaji 2017.02.13
+% Molecular Coding Format file for mcf_manual.tex  by Akira.Yamaji 2017.03.05
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf;   %% it must be version 4.10 or later
+input mcf2graph.mf;   %% it must be version 4.11 or later
 %------------------------------------------------------------------------
 sw_auxout:=0;
 sw_mol_frame:=0;
@@ -818,45 +818,60 @@
 endfont
 %***********************************************************************
 beginfont("EN:EXT()")
-  margin_left_right:=margin_top_bottom:=5mm;
-  font_wd#:=70mm#;
-  font_ht#:=35mm#;
-  bond_len#:=8mm#;
-  sw_font_frame:=3;
-  MCd(1,0.8)(0.1,0.5)(<30,Ph,2:/OH,5:/OH)
-  MCd(1,0.8)(0.9,0.5)(<30,?6,$(3,6)dl,@(2,5)//O)
+  margin_left_right:=margin_top_bottom:=4mm;
+  font_wd#:=60mm#;
+  font_ht#:=30mm#;
+  ratio_bond_width:=0.08;
+  defaultscale:=0.6;
+  sw_font_frame:=1;
+  sw_solid:=1;
+  MCd(1,0.8)(0.12,0.58)(<30,?6,$(3,6)dl,
+                        @(2^35,2^-35)/R,5://O)
+  MCd(1,0.8)(0.88,0.48)(<30,Ph,@(2,3)/R,5:/OH)
   EXT(
-    draw_vector((0.7w,0.52h),  0,0.2mm,0.4w);
-    draw_vector((0.3w,0.48h),180,0.2mm,0.4w);
+    defaultscale:=0.6;
+    draw_vector((0.6w,0.5h),0,0.2mm,0.25w);
+    p3:=(0.48w,0.5h);
+    label.top("H",p3);
+    label.top("+",p3+(em,0.5em));
     drawdot p0 withpen pencircle scaled 3pt;
     drawdot p1 withpen pencircle scaled 3pt;
     drawdot p2 withpen pencircle scaled 3pt;
     label.bot("p0",p0);
-    label.bot("p1",p1);
-    label.bot("p2",p2);
-    label("Ox",(0.5w,0.6h));
-    label("Red",(0.5w,0.4h));
-    use_font(6pt#);
-    label("Reaction example",(0.5w,0.8h));
+    label.lft("p1",p1);
+    label.ulft("p2",p2);
+    defaultscale:=0.6;
+    label.bot("Dienone-Phenol Rearrangement",(0.5w,1h));
   )
 endfont
 %***********************************************************************
 beginfont("EN:ext()")
-  margin_left_right:=margin_top_bottom:=3mm;
   font_wd#:=70mm#;
-  font_ht#:=25mm#;
-  sw_solid:=0;
-  MCd(1,0.9)(0.1,0.5)(<30,Ph,3:/F,4:/Cl)
+  font_ht#:=30mm#;
+  ratio_bond_width:=0.065;
+  sw_solid:=1;
+  MCd(1,1)(0.1,0.5)(<-210,60`1,60`1,60`1,$(1,3)dl,1:/R1,4:/R2^-60)
   ext(
+   defaultscale:=0.6;
+   label.bot("Diene",p0+(0.5wd,0));
+  )
+  MCd(1,1)(0.4,0.5)(<-30,-60`1,1=dl,1:/R3,2:/R4^60)
+  ext(
+   defaultscale:=0.6;
+   label.bot("Dienophile",p0+(0.5wd,0));
+  )
+  MCd(1,1)(0.9,0.5)(<30,?6,6=dl,2:/R2,3:/R4,4:/R3,5:/R1)
+  ext(
+    defaultscale:=0.6;
     drawdot p0 withpen pencircle scaled 3pt;
-    drawdot A6 withpen pencircle scaled 3pt;
-    drawdot B3 withpen pencircle scaled 3pt;
     label.bot("p0",p0);
-    label.ulft("A6",A6);
-    label.rt("B3",B3);
   )
-  MCd(1,0.9)(0.9,0.5)(<30,Ph,3:/F,4:/Cl)
-  ext(draw p0--(p0+(wd,0))--(p0+(wd,ht));)
+  EXT(
+      draw_vector((0.6w,0.5h),0,0.2mm,0.08w);
+      defaultscale:=0.7;
+      label("+",(0.25w,0.5h));
+      label.bot("Diels-Alder Reaction",(0.5w,1h));
+  )
 endfont
 %***********************************************************************
 beginfont("EN:Local setting 1")
@@ -911,16 +926,6 @@
   MCf(<30,Ph,3=?6,7:O,@(1,2,5)/_,8:/*_^60,6:/OH,8\,|,!12,@(4,8)/*_,12:/_)
 endfont
 %***********************************************************************
-%% Change infomation separater
-beginfont("EN:Ampicillin","CAS:69-53-4","FM:C16H19N3O4S","MW:349.40")
-  font_ht#:=15mm#;
-  MCf(<45,
-    ?4,2:N,2=?5,-1:S,
-    @(3^45,4^-45)/*H,1://O^15,5:/*COOH^-18,@(6^35,6^-35)/_,
-    4*\^75,NH,!,//O,!,/*NH2,!,Ph
-   )
-endfont
-%***********************************************************************
 beginfont("EN:Cholesterol","CAS:57-88-5","FM:C27H46O","MW:386.65")
   font_ht#:=15mm#;
   MCf(
@@ -1039,3 +1044,5 @@
 endfont
 %***********************************************************************
 bye
+***************************
+bye

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	2017-03-06 21:58:50 UTC (rev 43415)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex	2017-03-06 21:59:14 UTC (rev 43416)
@@ -1,5 +1,5 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  Molecular Coding Format manual          by  Akira Yamaji 2017.02.13
+%  Molecular Coding Format manual          by  Akira Yamaji 2017.03.06
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \documentclass[a4paper]{article}
 %%%%\usepackage{graphicx}
@@ -932,7 +932,8 @@
   h:  font height
   wd: font width-margin_left_right*2
   ht: font height-margin_top_bottom*2
-  em: embedded font size
+  aw: atom font size
+  em: label font size
   p0: x=margin_left_right
       y=margin_top_bottom
   n:  molecular number
@@ -939,41 +940,42 @@
   p[m]: molecular origin position
 
 (Function for EXT(),ext())
-  draw_vector(pos,angle,thickness,length):
+  draw_vector(pos,angle,thick,length):
     draw vector at pos
-  use_font(wd#):
-    make font for 'label'
   label:
-    sw_label_mp=0:  ** default
-      use embedded font
-    sw_label_mp=1: 
-      use original metapost 'label'
+    sw_label=0: use Metafont  **default
+    sw_label=1: use Metapost label
 
-  beginfont()
-  sw_font_frame:=3;
-  %----------------------------------
-  MCd(1,0.8)(0.1,0.5)
-    (<30,Ph,2:/OH,5:/OH)
-  MCd(1,0.8)(0.9,0.5)
-    (<30,?6,$(3,6)dl,@(2,5)//O)
-  %----------------------------------
-  EXT(
-   draw_vector((0.7w,0.48h),  0,0.2mm,0.4w):
-   draw_vector((0.3w,0.52h),180,0.2mm,0.4w):
-   drawdot p0 withpen pencircle scaled 3pt;
-   drawdot p1 withpen pencircle scaled 3pt;
-   drawdot p2 withpen pencircle scaled 3pt;
-   %----------------------------------
-   label.bot("p0",p0);
-   label.bot("p1",p1);
-   label.bot("p2",p2);
-   label("Ox",(0.5w,0.6h));
-   label("Red",(0.5w,0.4h));
-   use_font(6pt#);   % **defalt 5pt#
-   label("Reaction example",(0.5w,0.8h));
+beginfont()
+ margin_left_right:=margin_top_bottom:=4mm;
+ font_wd#:=60mm#;
+ font_ht#:=30mm#;
+ ratio_bond_width:=0.08;
+ sw_solid:=1;
+ sw_font_frame:=3;
+ %-----------------------------------------
+ MCd(1,0.8)(0.12,0.58)
+  (<30,?6,$(3,6)dl,@(2^35,2^-35)/R,5://O)
+ MCd(1,0.8)(0.88,0.48)
+  (<30,Ph,@(2,3)/R,5:/OH)
+ %-----------------------------------------
+ EXT(
+  defaultscale:=0.6;
+  draw_vector((0.6w,0.5h),0,0.2mm,0.25w);
+  p3:=(0.48w,0.5h);
+  label.top("H",p3);
+  label.top("+",p3+(em,0.5em));
+  drawdot p0 withpen pencircle scaled 3pt;
+  drawdot p1 withpen pencircle scaled 3pt;
+  drawdot p2 withpen pencircle scaled 3pt;
+  label.bot("p0",p0);
+  label.lft("p1",p1);
+  label.ulft("p2",p2);
+  defaultscale:=0.7;
+  label.bot("Dienone-Phenol Rearrangement",
+            (0.5w,1h));
   )
-  %----------------------------------
-  endfont
+endfont
 \end{verbatim}
 \MCFstructure\\
 %-----------------------------------------------------------------------------
@@ -983,6 +985,8 @@
 (Add extra graphic to molecule)
   wd:      molecular width
   ht:      molecular height
+  aw: atom font size
+  em: label font size
   p0:      origin of molecular structure
   l:       bond length
   An:      atom number
@@ -992,32 +996,55 @@
   B[m]:    bond position
   B[m]ang: bond angle
 
-  beginfont()
-  %----------------------------------
-  MCd(1,0.9)(0.1,0.5)(<30,Ph,3:/F,4:/Cl)
+beginfont()
+  font_wd#:=70mm#;
+  font_ht#:=30mm#;
+  ratio_bond_width:=0.065;
+  sw_solid:=1;
+  %-------------------------------------
+  MCd(1,1)(0.1,0.5)
+   (<-210,60`1,60`1,60`1,$(1,3)dl,
+    1:/R1,4:/R2^-60)
   ext(
-    drawdot p0 withpen pencircle scaled 3pt;
-    drawdot A6 withpen pencircle scaled 3pt;
-    drawdot B3 withpen pencircle scaled 3pt;
-    label.bot("p0",p0);
-    label.ulft("A6",A6);
-    label.rt("B3",B3);
+   defaultscale:=0.6;
+   label.bot("Diene",p0+(0.5wd,0));
   )
-  %----------------------------------
-  MCd(1,0.9)(0.9,0.5)(<30,Ph,3:/F,4:/Cl)
-  ext(draw p0--(p0+(wd,0))--(p0+(wd,ht));)
-  %----------------------------------
-  endfont
+  %-------------------------------------
+  MCd(1,1)(0.4,0.5)
+   (<-30,-60`1,1=dl,1:/R3,2:/R4^60)
+  ext(
+   defaultscale:=0.6;
+   label.bot("Dienophile",p0+(0.5wd,0));
+  )
+  %-------------------------------------
+  MCd(1,1)(0.9,0.5)
+   (<30,?6,6=dl,2:/R2,3:/R4,4:/R3,5:/R1)
+  ext(
+   defaultscale:=0.6;
+   drawdot p0 withpen pencircle scaled 3pt;
+   label.bot("p0",p0);
+  )
+  %-------------------------------------
+  EXT(
+   draw_vector((0.6w,0.5h),0,0.2mm,0.08w);
+   defaultscale:=0.7;
+   label("+",(0.25w,0.5h));
+   label.bot("Diels-Alder Reaction",(0.5w,1h));
+  )
+endfont
 \end{verbatim}
 \MCFstructure
 %-----------------------------------------------------------------------------
+\newpage
 \subsection{Local parameter setting}
 \begin{verbatim}
   beginfont() MCf(Ph) endfont
+  %---------------------------
   beginfont()
     ratio_thickness_bond:=0.05;
     MCf(Ph)
   endfont
+  %---------------------------
   beginfont() MCf(Ph) endfont
 \end{verbatim}
 \MCFstructure\MCFstructure\MCFstructure
@@ -1025,13 +1052,14 @@
 \subsection{Global parameter setting}
 \begin{verbatim}
   beginfont() MCf(Ph) endfont
+  %---------------------------
   ratio_thickness_bond:=0.05;
+  %---------------------------
   beginfont() MCf(Ph) endfont
   beginfont() MCf(Ph) endfont
 \end{verbatim}
 \MCFstructure\MCFstructure\MCFstructure
 %-----------------------------------------------------------------------------
-\newpage
 \section{Output information}
 %-----------------------------------------------------------------------------
 \subsection{Output molecular information}
@@ -1044,9 +1072,11 @@
        @(2,6)N,@(2,6)/_,@(1,5)//O,
       |,-4=?5,2=dl,@(1,3)N,3:/_)
 endfont
+%------------------------------------------
 beginfont(......)
   ...........
 endfont
+%------------------------------------------
 ..............
 
 %% Output to mcf_man_soc-info.aux %%
@@ -1064,14 +1094,17 @@
 %-----------------------------------------------------------------------------
 \subsection{Output additional information}
 \begin{verbatim}
+%------------------------------------------
 beginfont("EN:Tocopherol","CAS:59-02-9")
   MCf(<30,Ph,3=?6,
      7:O,@(1,2,5)/_,8:/*_^60,6:/OH,
      8\,|,!12,@(4,8)/*_,12:/_)
 endfont
+%------------------------------------------
 beginfont(......)
   ...........
 endfont
+%------------------------------------------
 ..............
 
 %% Output to mcf_man_soc-info.aux %%
@@ -1078,43 +1111,19 @@
 F:mcf_man_soc;C:86;EN:Tocopherol;CAS:59-02-9
 ............................................
 
-1* F:filename
-2* C:char number
+1* F:filename           * default output
+2* C:char number        * default output
 3  EN:molecular name
 4  CAS:CAS number
 
-*:default output
-
 \end{verbatim}
 \MCFstructure
 %-----------------------------------------------------------------------------
-\subsection{Change aux information delimiter}
-\begin{verbatim}
-aux_delimiter:="/";
-beginfont("EN:Ampicillin","CAS:69-53-4")
-  MCf(<45,?4,2:N,2=?5,-1:S,
-    @(3^45,4^-45)/*H,1://O^15,
-    5:/*COOH^-18,@(6^35,6^-35)/_,
-    4*\^75,NH,!,//O,!,/*NH2,!,Ph)
-endfont
-beginfont(......)
-  ...........
-endfont
-..............
-
-%% Output to mcf_man_soc-info.aux %%
-F:mcf_man_soc/C:90/EN:Ampicillin/CAS:69-53-4
-............................................
-
-  **default  aux_delimiter=";"
-\end{verbatim}
-\MCFstructure
-%-----------------------------------------------------------------------------
 \subsection{Fixed aux information}
 \begin{verbatim}
   tag3:="NO"; var3:="inf_NO";
   tag4:="EN"; var4:="inf_EN";
-  sw_auxfix:=1;
+  sw_auxfix:=1;  % ** default sw_auxfix=0
   auxtag_out;    % output tag list
   %--------------------------------------
   beginfont("EN:Cholesterol","NO:1")
@@ -1136,9 +1145,7 @@
   F;C;NO;EN
   mcf_man_soc;91;1;Ampicillin
   ...........................
-  ...........................
 
-  **  default sw_auxfix=0
 \end{verbatim}
 \MCFstructure
 %-----------------------------------------------------------------------------
@@ -1391,6 +1398,15 @@
   ......................................
   ......................................
 
+(aux_delimiter:="/";)
+F:mcf_man_soc/C:1/cMW:349.40462/cFM:C16H19N3O4S/EN:Ampicillin
+F:mcf_man_soc/C:2/cMW:386.6532/cFM:C27H46O/EN:Cholesterol
+F:mcf_exa_soc/C:3/cMW:470.5113/cFM:C26H30O8/EN:Limonin
+F:mcf_exa_soc/C:4/cMW:536.8722/cFM:C40H56/EN:beta-Carotene
+F:mcf_exa_soc/C:5/cMW:346.3742/cFM:C19H22O6/EN:Gibberellin A3
+  .....................................................
+  .....................................................
+
 ( Tag )
 F   : filename
 C   : char number

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex	2017-03-06 21:58:50 UTC (rev 43415)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex	2017-03-06 21:59:14 UTC (rev 43416)
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of  MCF typest with LuaLaTeX(luamplib)     by A.Yamaji    2017.02.13
+% Example of  MCF typest with LuaLaTeX(luamplib)     by A.Yamaji    2017.03.05
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% mcf2graph.mf it must be version 4.10 or later
+%%% mcf2graph.mf it must be version 4.11 or later
 \documentclass{article}
 %------------------------------------------------------------------------------
 \usepackage{luamplib}%
@@ -14,6 +14,7 @@
               input mcf2graph.mf;
               mp_log_name:="temp-info.aux";
               sw_auxout:=1; 
+              sw_label:=1;
               var3:="mol_wd"; tag3:="Lx";
               var4:="cal_MW"; tag4:="cMW";
               var5:="cal_FM"; tag5:="cFM";
@@ -95,13 +96,13 @@
   font_wd:=90mm; font_ht:=45mm;
   beginfont("NO:1","EN:Chlorophyll a","MW:893.49")
     MCf(<54,
-   {,``1,?5,$(2,5)d,4:N,3\,54~dl,|,?5,$(2,4)d,5:N,
-   -2\,54~dl,|,?5,2=d,5:N,-2\~dl,54,|,?5,5=d,5:N,-2\~dl,&#5,
-   -1*,24,/*COO!^15,72,//O,&#1,},
-   4\`1.45,Mg,&17,-1*,&11~vb,-1*,&23~vb,
-   @(2,9,15,20~zf)/_,8:/!,14\,!!,
-   21*,-6~wf,!2,//O,!,O,!2,!!,|,!13,@(1,5,9,13)/_,
-  )
+     {,``1,?5,$(2,5)d,4:N,3\,54~dl,|,?5,$(2,4)d,5:N,
+     -2\,54~dl,|,?5,2=d,5:N,-2\~dl,54,|,?5,5=d,5:N,-2\~dl,&#5,
+     -1*,24,/*COO!^15,72,//O,&#1,},
+     4\`1.45,Mg,&17,-1*,&11~vb,-1*,&23~vb,
+     @(2,9,15,20~zf)/_,8:/!,14\,!!,
+     21*,-6~wf,!2,//O,!,O,!2,!!,|,!13,@(1,5,9,13)/_,
+   )
   endfont
 \end{mplibcode}
 \inputINFO{temp-info.aux}%

Modified: trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
===================================================================
--- trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf	2017-03-06 21:58:50 UTC (rev 43415)
+++ trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf	2017-03-06 21:59:14 UTC (rev 43416)
@@ -1,5 +1,5 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 4.10     Copyright (c) 2013-2017   Akira Yamaji
+% mcf2graph ver 4.11     Copyright (c) 2013-2017   Akira Yamaji
 %
 % Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 % and associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -26,11 +26,12 @@
 % Set outputformat to "png"       : mpost -s ahangle=1  FILENAME
 % Set outputformat to "svg"       : mpost -s ahangle=2  FILENAME
 % Set outputformat to MDL Molfile : mpost -s ahangle=3  FILENAME
-% Set first font only (for test)  : mpost -s ahlength=1 FILENAME
+% Set make first font only        : mpost -s ahlength=1 FILENAME
 % Set output report               : mpost -s ahlength=2 FILENAME
+% Set 'label' to use Metapost     : mpost -s ahlength=3 FILENAME
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 tracingstats:=1;
-message " This is mcf2graph ver 4.1  2017.2";
+message " This is mcf2graph ver 4.1  2017.3";
 %-------------------------------------------------------------------------------------------------
 newinternal nA,nB,nC,nD,nE,nF,char_num,str_cnt,def_num,def_int,tbl_cnt;
 numeric save_para[],comD[][],parD[][],cntD[],tbl_str_wd[],tbl_atom[],tbl_subst[][],tbl_atom_wt[],
@@ -40,7 +41,7 @@
 %-------------------------------------------------------------------------------------------------
 char_num:=str_cnt:=proc_end:=0;
 sw_numberA:=sw_numberB:=sw_mol_frame:=sw_auxout:=sw_solid:=sw_expand:=sw_font_frame:=sw_clip:=0;
-sw_atom_frame:=sw_report:=sw_MOLout:=sw_subst_off:=sw_bond_single:=sw_auxfix:=sw_label_mp:=0;
+sw_atom_frame:=sw_report:=sw_MOLout:=sw_subst_off:=sw_bond_single:=sw_auxfix:=0;
 numberA_start:=numberB_start:=1; numberA_end:=numberB_end:=4095; aux_max:=max_inf_num:=20;
 aux_delimiter:=";";  var1:="jobname";  tag1:="F";  var2:="char_num"; tag2:="C";
 for i=3 upto aux_max: var[i]:=tag[i]:=""; endfor
@@ -51,6 +52,7 @@
   mp_log_name:=jobname&"-info.aux";
   if     ahlength=1: proc_end:=1;  fi                          % first molecular only
   if     ahlength=2: sw_report:=1; def shipit = enddef; fi     % report on
+  if     ahlength=3: sw_label:=1; fi                           % use metapost label
   if     ahangle=0: def shipit = enddef;                       % No image file
   elseif ahangle=1: outputformat:="png"; hppp:=vppp:=0.1;      % PNG format
   elseif ahangle=2: outputformat:="svg";                       % SVG format
@@ -63,12 +65,15 @@
   def # = enddef;
   def Cp(expr s) = if known s: if s<>0: withcolor color_list[s] fi fi enddef;
   def define_pixels(text s) = enddef;
-  if sw_label_mp=0: def label = label_ext enddef; fi
+  if unknown sw_label: sw_label:=0; fi
 else: f_MP:=0;
+  string defaultfont;
+  sw_label:=0;
   def Cp(expr s) = enddef;
   def color = transform enddef;
-  def label = label_ext enddef;
   def printf expr s= message s enddef;
+  sw_label:=0;
+  def label = label_mf enddef;
   mode_setup;
 fi
 ahangle:=45; ahlength:=4;
@@ -86,8 +91,16 @@
 offset_atom#:=0.8pt#;         offset_wedge#:=0.4pt#;     thickness_font_frame#:=0.2pt#;
 max_bond_length#:=10mm;       bond_len#:=8mm#;
 font_wd#:=30mm#;              font_ht#:=20mm#;
-labeloffset:=3bp;             default_emb_font#:=5pt#;
-%--------------------------------------------------------------------------------------------------
+%==================================================================================================
+defaultfont:="uhvr8r";          % Helvetica
+%%%%defaultfont:="ucrr8r";      % Courier
+%%%%defaultfont:="ucrb8r";      % Courier bold
+%%%%defaultfont:="utmr8r";      % Times
+defaultsize#:=8pt#;
+ext_defaultscale:=1;
+labeloffset:=3bp;
+define_pixels(defaultsize);
+%==================================================================================================
 def_emb_start:=500;      % 500  => 2499   for embedded definition    (max 2000)
 def_usr_start:=2500;     % 2500 => 2999   for user     definition    (max 500)
 def_int_start:=3000;     % 3000 => 4000   for internal definition    (max 1000)
@@ -101,7 +114,7 @@
 %--------------------------------------------------------------------------------------------------
 def parameter_list=
   sw_report,sw_numberA,sw_numberB,sw_mol_frame,sw_auxout,sw_solid,sw_expand,sw_MOLout,
-  sw_atom_frame,sw_font_frame,sw_subst_off,sw_bond_single,sw_clip,sw_label_mp,
+  sw_atom_frame,sw_font_frame,sw_subst_off,sw_bond_single,sw_clip,sw_label,
   margin_left_right,margin_top_bottom,ratio_atom_bond,ratio_thickness_bond,ratio_char_bond,
   ratio_chain_ring,max_bond_width,ratio_bondgap_bond,ratio_zebra_black,ratio_zebragap_bond,
   ratio_wedge_bond,ratio_atomgap_atom,ratio_bond_width,font_wd#,font_ht#,labeloffset,
@@ -254,7 +267,8 @@
 enddef;
 %==================================================================================================
 vardef $$(text t)(expr e) =
-  nA:=0; def_int:=def_int+1;
+  nA:=0;
+  def_int:=def_int+1;
   if known e:: if numeric e::
     if (e>=si)and(e<=bd_):: if e==dl:: for list==t:: PA(_dl,list) endfor
                             else:: for list==t:: PA(_set_adr,list) PA(_set_line,e) endfor fi
@@ -275,7 +289,8 @@
 enddef;
 %-------------------------------------------------------------------------------------------------
 vardef @@(text t)(expr s)=
-  nA:=0; def_int:=def_int+1;
+  nA:=0;
+  def_int:=def_int+1;
   if known s:: if numeric s::
     if (s>=H)and(s<=U)::
        for list==t::
@@ -308,12 +323,21 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 def EXT(text s)=
   begingroup
-  save w,h,wd,ht,n,p,em;
+  save w,h,wd,ht,n,p,am,em,currentscale;
   pair p[];
-  use_font(default_emb_font#);
-  w:=font_wd; h:=font_ht; wd:=w-2margin_left_right; ht:=h-2margin_top_bottom;
+  em=defaultscale*defaultsize;
+  %-----------------------------------------------------------------------------------------------
+  currentscale:=defaultscale:=ext_defaultscale;
+  if sw_label=0:
+    def label = label_mf enddef;
+    use_font(defaultscale*defaultsize#)(0.12defaultscale*defaultsize#);
+  fi
+  w:=font_wd;
+  h:=font_ht;
+  wd:=w-2margin_left_right;
+  ht:=h-2margin_top_bottom;
   p0:=(margin_left_right,margin_top_bottom);
-  em:=emb_font_size;
+  aw:=atom_wd;
   n:=cntM;
   for i=1 upto n: p[i]:=posM[1][i]; endfor
   s addto mol_stru[0] also currentpicture; clearit; f_ext:=1;
@@ -322,16 +346,24 @@
 %--------------------------------------------------------------------------------------------------
 def ext(text s)=
   begingroup
-  save wd,ht,n,l,p,zw,sp,ep,em,A,B;
+  save wd,ht,n,l,p,sp,ep,am,em,A,B,currentscale;
   numeric A[]bra,B[]ang;
   pair p[],A[],B[],sp,ep;
-  use_font(default_emb_font#);
+  em=defaultscale*defaultsize;
+  %---------------------------------------------------------------------
+  currentscale:=defaultscale:=ext_defaultscale;
+  if sw_label=0:
+    def label = label_mf enddef;
+    use_font(defaultscale*defaultsize#)(0.12defaultscale*defaultsize#);
+  fi
+  %---------------------------------------------------------------------
   wd:=mol_wd;
   ht:=mol_ht;
   l:=bond_len;
-  em:=emb_font_size;
+  aw:=atom_wd;
   p0:=(minX,minY);
-  An:=cntA; Bn:=cntB;
+  An:=cntA;
+  Bn:=cntB;
   for i=1 upto An: A[i]:=posA[i]; A[i]bra:=ang_br[i]; endfor
   for i=1 upto Bn: sp:=posA[sB[i]]; ep:=posA[eB[i]]; B[i]:=0.5[sp,ep]; B[i]ang:=angB[i]; endfor
   s addto mol_stru[cntM] also currentpicture; clearit;
@@ -338,44 +370,51 @@
   endgroup;
 enddef;
 %--------------------------------------------------------------------------------------------------
-def use_font(expr WD)=
+def use_font(expr WD)(expr PEN)=
   save_pict:=currentpicture; clearit;
   for i=1 upto 128: f_char[i]:=1; endfor
-  proc_char_setup(str_font)(WD);
-  emb_font_size#:=WD;
-  define_pixels(emb_font_size);
+  proc_char_setup(str_font)(WD)(PEN);
   currentpicture:=save_pict;
 enddef;
 %--------------------------------------------------------------------------------------------------
 def puts(expr PA)(expr STR)=
   begingroup
-  save cp; pair cp;
+  save cp;
+  pair cp;
   cp:=PA;
+  nB:=0;
+  %----------------------------------------------------------------------------------
   for i=0 upto length(STR)-1:
     nA:=ASCII(pic_c(i,STR));
-    addto currentpicture also str_font[nA] shifted (cp-(0,emb_font_size*tbl_char_dp[nA]));
-    cp:=cp+(emb_font_size*tbl_char_wd[nA],0);
+    if     nA=ASCII("_"): if nB=0: nB:=-.5; else: nB:=0; fi
+    elseif nA=ASCII("^"): if nB=0: nB:= .5; else: nB:=0; fi
+    else:
+      addto currentpicture also str_font[nA] shifted (cp+(0,em*(nB-tbl_char_dp[nA])));
+      cp:=cp+(em*tbl_char_wd[nA],0);
+    fi
   endfor
   endgroup;
 enddef;
 %--------------------------------------------------------------------------------------------------
-vardef label_ext@#(expr STR,POS) =
+vardef label_mf@#(expr STR,POS) =
   save oft,fx,fy,wds;
   pair oft,oft.lft,oft.rt,oft.top,oft.bot,oft.ulft,oft.llft,oft.urt,oft.lrt;
   wds:=0;
-  for i=0 upto length(STR)-1:
-    wds:=wds+emb_font_size*tbl_char_wd[ASCII(pic_c(i,STR))];
-  endfor
-  oft:=     (  0,  0);   fx:=0.5;     fy:=0.5;
-  oft.lft:= ( -1,  0);   fx.lft:=1;   fy.lft:=0.5;
-  oft.rt := (  1,  0);   fx.rt :=0;   fy.rt :=0.5;
-  oft.bot:= (  0, -1);   fx.bot:=0.5; fy.bot:=1;
-  oft.top:= (  0,  1);   fx.top:=0.5; fy.top:=0;
-  oft.ulft:=(-.7, .7);   fx.ulft:=1;  fy.ulft:=0;
-  oft.urt:= ( .7, .7);   fx.urt:=0;   fy.urt:=0;
-  oft.llft:=(-.7,-.7);   fx.llft:=1;  fy.llft:=1;
-  oft.lrt:= ( .7,-.7);   fx.lrt:=0;   fy.lrt:=1;
-  puts(POS+(labeloffset*oft@#)-(wds*fx@#,emb_font_size*fy@#))(STR);
+  if currentscale<>defaultscale:
+    use_font(defaultscale*defaultsize#)(0.12defaultscale*defaultsize#);
+    currentscale:=defaultscale;
+  fi
+  for i=0 upto length(STR)-1: wds:=wds+em*tbl_char_wd[ASCII(pic_c(i,STR))]; endfor
+  oft:=     (  0,  0);   fx:=0.5;      fy:=0.5;
+  oft.lft:= ( -1,  0);   fx.lft:=1;    fy.lft:=0.5;
+  oft.rt := (  1,  0);   fx.rt :=0;    fy.rt :=0.5;
+  oft.bot:= (  0, -1);   fx.bot:=0.5;  fy.bot:=1;
+  oft.top:= (  0,  1);   fx.top:=0.5;  fy.top:=0;
+  oft.ulft:=(-.7, .7);   fx.ulft:=1;   fy.ulft:=0;
+  oft.urt:= ( .7, .7);   fx.urt:=0;    fy.urt:=0;
+  oft.llft:=(-.7,-.7);   fx.llft:=1;   fy.llft:=1;
+  oft.lrt:= ( .7,-.7);   fx.lrt:=0;    fy.lrt:=1;
+  puts(POS+(labeloffset*oft@#)-(wds*fx@#,em*fy@#))(STR);
 enddef;
 %-------------------------------------------------------------------------------------------------
 def draw_vector(expr POS,ROT,THICK,LEN)=
@@ -405,10 +444,12 @@
   if (sw_expand=1)or(sw_MOLout=1): expand_set; fi
   def_num:=def_usr_start;
   def_int:=def_int_start;
-  par_s=ASCII("{"); par_e=ASCII("}"); score_u=ASCII("_"); hat=ASCII("^");
+  par_s:=ASCII("{"); par_e:=ASCII("}"); score_u:=ASCII("_"); hat:=ASCII("^");
   cntA:=cntB:=cntP:=cntC:=0; strD[0]:=""; str_cnt:=2000; crR:=-ratio_chain_ring;
   %===============================================================================================
-  ''(0)(TX,(_term,0)); proc_bond_atom(1); if (cntP>0)and(sw_subst_off=0): ps_get(1); fi
+  ''(0)(TX,(_term,0));
+  proc_bond_atom(1);
+  if (cntP>0)and(sw_subst_off=0): ps_get(1); fi
   define_pixels(font_wd,font_ht,thickness_font_frame);
   char_use_check;
   if     sw_solid=1: bond_len#:=font_wd#*ratio_bond_width;
@@ -425,7 +466,7 @@
     if bond_len#>max_bond_length#:
        bond_len#:=max_bond_length#; proc_size_setup; proc_skeleton; proc_scaling;  fi
   fi
-  proc_char_setup(atom_font)(atom_wd#);
+  proc_char_setup(atom_font)(atom_wd#)(bond_pen_wd#*ratio_char_bond);
   %-----------------------------------------------------------------------------------------------
   for i=1 upto cntB: if lineB[i]<si_ : draw_bond(i,sB[i],eB[i],angB[i],lineB[i]); fi endfor
   for i=1 upto cntB: if lineB[i]>=si_: draw_bond(i,sB[i],eB[i],angB[i],lineB[i]); fi endfor
@@ -467,7 +508,8 @@
 enddef;
 %-------------------------------------------------------------------------------------------------
 def ps_get(expr n)=
-  nA:=cntP; nB:=cntD[0];
+  nA:=cntP;
+  nB:=cntD[0];
   for i=n upto cntP:
     PG(_jp_atom_abs,ps_adr[i]) PG(_push,1)
     for j=1 upto op_cnt[i]: PG(op_com[i][j],op_par[i][j]) endfor
@@ -493,12 +535,12 @@
   zebra_gap#:=   bond_len#*ratio_zebragap_bond+offset_zebra_gap#;
   bondgap#:=     bond_len#*ratio_bondgap_bond+offset_bond_gap#;
   bond_pen_wd#:= bond_len#*ratio_thickness_bond+offset_thickness#;
-  char_pen_wd#:= bond_pen_wd#*ratio_char_bond;
-  define_pixels(bond_len,zebra_gap,wedge_wd,atom_wd,bondgap,bond_pen_wd,char_pen_wd);
+  define_pixels(bond_len,zebra_gap,wedge_wd,atom_wd,bondgap,bond_pen_wd);
 enddef;
 %-------------------------------------------------------------------------------------------------
 def proc_scaling=
-  minX:=minY:=4095.999; max_x:=max_y:=-4095.999;
+  minX:=minY:=4095.999;
+  max_x:=max_y:=-4095.999;
   for i=1 upto cntA:
     xpos:=xpart(posA[i]); ypos:=ypart(posA[i]);
     if numS[i]<>0: str_len:=nC:=nD:=0;
@@ -540,7 +582,8 @@
   for i=0 upto 5: stkA[i]:=stkB[i]:=0; endfor
   %-----------------------------------------------------------------------------------------------
   for i=n upto cntD[0]:
-  com:=comD[0][i]; par:=parD[0][i];
+  com:=comD[0][i];
+  par:=parD[0][i];
   if     com=_push: 
     if par=1: stkL[adrS]:=bondL; stkA[incr adrS]:=adrA:=cntA; stkB[adrS]:=adrB:=cntB;
     elseif par=0: temp_len:=bondL; fi
@@ -592,7 +635,8 @@
 enddef;
 %-------------------------------------------------------------------------------------------------
 def add_atom=
-  lineB[incr cntB]:=lineT; lineT:=si;
+  lineB[incr cntB]:=lineT;
+  lineT:=si;
   if lenT=crR: lenB[cntB]:=bondL; else: lenB[cntB]:=lenT; lenT:=crR; fi
   if f_bra=0:  cntA:=cntA+1; sB[cntB]:=cntA; numS[cntA]:=strAT; strAT:=0;
               if f_MP=1: colorA[cntA]:=colorB[cntA]:=0; fi  else: f_bra:=0; fi
@@ -808,6 +852,8 @@
 Ag:='("{Ag}");Au:='("{Au}");Sn:='("{Sn}");Cl:='("{Cl}");Br:='("{Br}");Li:='("{Li}");
 Na:='("{Na}");Ca:='("{Ca}");Hg:='("{Hg}");Ni:='("{Ni}");Ti:='("{Ti}");U:='("U");
 %-------------------------------------------------------------------------------------------------
+R:='("R"); R1:='("{R^1^}"); R2:='("{R^2^}"); R3:='("{R^3^}"); R4:='("R^4^"); R5:='("{R^5^}");
+%-------------------------------------------------------------------------------------------------
 plus:='("+"); minus:='("-"); HH:='("H{_2_}"); NH:='(N,*/*H); NnoH:='(); SO:='(S,//O);
 SOO :='(S,//O^-35,//O^35); CHO:='("CHO"); OH:='("OH"); COOH:='("COOH"); CH2:='("C{H_2_}");
 CH3:='("C{H_3_}"); CN:='("CN"); NH2:='("N{H_2_}"); NO2:='("N{O_2_}"); SH:='("SH");
@@ -847,8 +893,9 @@
 char_size_set(.7)( 1)(.24)("pqg");
 char_size_set(.7)(.8)(  0)("acekosuvxzwry");
 char_size_set(.4)( 1)(  0)(".,:;'`");
+char_size_set( 0)( 0)(  0)("^_");
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-def proc_char_setup(suffix FONT)(expr SIZE)=
+def proc_char_setup(suffix FONT)(expr SIZE)(expr PEN_WD)=
 begingroup
 save Z,aW,aH,fW,hW,hW,hH,fP,hP,vL,hL,PO,POh,sH,FD;
 pair Z[];
@@ -855,17 +902,20 @@
 %---------------------------------------------------------------
 def FD(expr c)(text s)=
   if f_char[ASCII(c)]=1:
+    fP#:=PEN_WD;
+    hP#:=0.5PEN_WD;
     aW#:=SIZE*tbl_char_wd[ASCII(c)]*(1-ratio_atomgap_atom*2);
     aH#:=SIZE*tbl_char_ht[ASCII(c)]*(1-ratio_atomgap_atom*2);
-    define_pixels(aW,aH);
+    define_pixels(fP,hP,aW,aH);
     fW:=aW-hP; hW:=.5aW; fH:=aH-hP; hH:=.5aH;
     Z01:=( 0,hP); Z02:=(hP, 0); Z03:=(hP,hP); Z04:=(aW,hP); Z05:=(fW, 0); Z08:=( 0,hH);
     Z09:=(hP,hH); Z10:=(fW,hH); Z12:=( 0,fH); Z13:=(hP,fH); Z14:=(hW,fH); Z16:=(aW,fH);
     Z18:=(hP,aH); Z19:=(hW,hP); Z20:=(hW,hH); Z06:=(hW,aH); Z07:=(hW, 0); Z11:=(hW,aW);
     Z15:=(fW,aH); Z17:=(aW,hH);
+    pickup pencircle scaled fP;
     s;
     FONT[ASCII(c)]:=
-    currentpicture shifted (ratio_atomgap_atom*atom_wd,ratio_atomgap_atom*atom_wd);
+      currentpicture shifted (ratio_atomgap_atom*atom_wd,ratio_atomgap_atom*atom_wd);
     clearit;
   fi
 enddef;
@@ -878,9 +928,6 @@
 def sH expr n= shifted (0,n) enddef;
 def SP(expr m,n)expr p=subpath(m*length(p),n*length(p)) of p enddef;
 %==================================================================================================
-pickup pencircle scaled char_pen_wd;
-fP:=char_pen_wd; hP:=.5char_pen_wd;
-%------------------------------------------------------------------------------------------
 FD(" ")();
 FD(".")(drawdot Z19 wpcs fP);
 FD(",")(drawdot Z19 wpcs fP; draw (hW+.5fP,hP)..(hW+.3fP,-fP)..(hW-.5fP,hP-2fP));



More information about the tex-live-commits mailing list