texlive[60565] Master/texmf-dist: mcf2graph (20sep21)
commits+karl at tug.org
commits+karl at tug.org
Mon Sep 20 22:04:13 CEST 2021
Revision: 60565
http://tug.org/svn/texlive?view=revision&revision=60565
Author: karl
Date: 2021-09-20 22:04:12 +0200 (Mon, 20 Sep 2021)
Log Message:
-----------
mcf2graph (20sep21)
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_data_base.mcf
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_example.tex
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
trunk/Master/texmf-dist/tex/latex/mcf2graph/mcf_setup.sty
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,6 +1,18 @@
*******************************************************************************
- Changelog of mcf2graph software package by Akira Yamaji 2021-09-05
+ Changelog of mcf2graph software package by Akira Yamaji 2021-09-20
*******************************************************************************
+[ver. 4.72 / 2021-09-20]
+ -change syntax of beginfont()
+ keep file open 'f+' => 'v+'
+ enable to use default input file name
+ -change syntax of query()
+ input file name 'i:' => 'f:'
+ -fix bug in beginfont(),endfont
+ -fix bug in query()
+ -fix bug in expand mode
+ -update mcf_data_base.mcf
+ -update MCF manual,example
+
[ver. 4.71 / 2021-09-05]
-add function query() for data base file
-update mcf_data_base.mcf
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/README
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/README 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/README 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,7 +1,7 @@
********************************************************************************
mcf2graph : Convert Molecular Coding Format to graphics with METAFONT/METAPOST
Author : Akira Yamaji
- version : 4.71 2021-09-05
+ version : 4.72 2021-09-20
E-mail : mcf2graph at gmail.com
Located at : http://www.ctan.org/pkg/mcf2graph
********************************************************************************
@@ -26,7 +26,7 @@
make file 'mcf_man_soc-***.mps' before typeset
>mpost mcf_man_soc.mf
( 7) mcf_man_soc.mf Molecular definition file for mcf_manual.tex
- ( 8) mcf_manual.pdf PDF of (4) (used pdftex(LaTeX),makeindex)
+ ( 8) mcf_manual.pdf PDF of (6) (used pdftex(LaTeX),makeindex)
( 9) mcf_example.tex LaTeX example
make file 'mcf_exa_soc-info.aux' before typeset
>mpost -s ahlength=1 mcf_exa_soc.mf
@@ -36,9 +36,9 @@
make file 'mcf_exa_soc-mf.aux' before typeset
>mpost -s ahlength=7 mcf_exa_soc.mf
(10) mcf_exa_soc.mf Metafont/Metapost souce file for mcf_example.tex
- (11) mcf_example.pdf PDF of (8) typeset with pdftex(LaTeX)
+ (11) mcf_example.pdf PDF of (9) typeset with pdftex(LaTeX)
(12) mcf_mplib_exa.tex luamplib(LuaLaTeX) example
- (13) mcf_mplib_exa.pdf PDF of (11) typeset with LuaTeX(LaTeX)
+ (13) mcf_mplib_exa.pdf PDF of (12) typeset with LuaTeX(LaTeX)
3. How to use mcf2graph with Metapost
Minimum requirement to use mcf2graph : mpost.exe,mpost.dll,mpost.mp,plain.mp
@@ -48,17 +48,18 @@
( 4) >mpost -s ahangle=11 FILENAME => output png file (1200dpi)
( 5) >mpost -s ahangle=2 FILENAME => output svg file
( 6) >mpost -s ahangle=3 FILENAME => output eps(.eps) file
- ( 7) >mpost -s ahlength=1 FILENAME => output info-aux file
+ ( 7) >mpost -s ahlength=1 FILENAME => output information-aux file
tag1:var1;tag2:var2;
- ( 8) >mpost -s ahlength=2 FILENAME => output aux file
+ ( 8) >mpost -s ahlength=2 FILENAME => output information-aux file
tag1;tag2;
var1;var2;
( 9) >mpost -s ahlength=3 FILENAME => output report file
(10) >mpost -s ahlength=5 FILENAME => output mol file(V2000)
(11) >mpost -s ahlength=6 FILENAME => output mol file(V3000)
- (12) >mpost -s ahlength=7 FILENAME => output mf-aux file
- (13) >mpost -s labeloffset=1 FILENAME => use plain.mp 'label','drawarrow'
- (14) >mpost -s labeloffset=2 FILENAME => atomfont="uhvr8r"
+ (12) >mpost -s ahlength=7 FILENAME => output metafont-aux file
+ (13) >mpost -s ahlength=8 FILENAME => output data-base-aux file
+ (14) >mpost -s labeloffset=1 FILENAME => use plain.mp 'label','drawarrow'
+ (15) >mpost -s labeloffset=2 FILENAME => atomfont="uhvr8r"
4. License
Permission is hereby granted, free of charge, to any person obtaining a copy
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_data_base.mcf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_data_base.mcf 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_data_base.mcf 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% molecular data base file mcf_data_base.mcf by Akira Yamaji 2021.09.05
+% molecular data base file mcf_data_base.mcf by Akira Yamaji 2021.09.20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% tag1:var1;tag2:var2;tag3:var3 .....
% first character of line "%" comment out
@@ -36,6 +36,10 @@
+
<30,NH2,!2,COOH
+------------------------------------------------------------------------------
+Cat:biological;EN:Glycine;MW:75.07;EXA:-
++
+<30,NH2,!2,COOH
++------------------------------------------------------------------------------
Cat:biological;EN:L-Alanine;MW:89.10;EXA:-
+
<30,NH2,!~wb,/_,!,COOH
@@ -46,9 +50,9 @@
+------------------------------------------------------------------------------
Cat:biological;EN:L-Leucine;MW:131.16;EXA:1
+
-<30,NH2,!~wb,/'(!,?!),!,COOH
+<30,NH2,!~wb,/!?!,!,COOH
+------------------------------------------------------------------------------
-Cat:biological;EN:L-Isoleucine;MW:131.16;EXA:-
+Cat:biological;EN:L-Isoleucine;MW:131.16;EXA:9
+
<30,NH2,!~wb,/'(/*_,!2),!,COOH
+------------------------------------------------------------------------------
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,8 +1,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2021.09.05
+% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2021.09.20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf; %%% it must be version 4.71
-message "* mcf_exa_soc 2021.09.05";
+input mcf2graph.mf; %%% it must be version 4.72
+message "* mcf_exa_soc 2021.09.20";
message "";
%------------------------------------------------------------------------------
fsize:=(35mm,24mm);
@@ -21,18 +21,19 @@
if f_MP=0: input mcf_exa_soc-mf.aux; % (metafont) make aux file before typeset
else: % mpost -s ahlength=7 mcf_exa_soc.mf
%------------------------------------------------------------------------------
-%%%%%query("Cat=biological","MW<150","s:MW");
-%%%%%query("Cat=biological","MW<150.0","s:EN");
-%%%%%query("MW>=150","MW<=300","s:MW");
-%%%%%query("i:mcf_data_base","o:temp","s:MW","s:EN");
+%%%%query("Cat=biological","MW<200","s:MW");
+%%%%query("Cat=biological","MW<150.0","s:EN");
+%%%%query("MW>=150","MW<=200","s:MW");
%******************************************************************************
+%%%% beginfont("t:EN","v:Caffeine") % select EN=Caffeine
forever:
-%%%%%%% beginfont("f+:temp","v:*") % use query output
-%%%%%%% beginfont("f+:mcf_data_base","v:*") % select all
- beginfont("f+:mcf_data_base","t:EXA","v:1") % 'f+'=keep file open
- if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi % 'v:1' select EXA=1
- endfont %
- exitif (f_EOF=1)or(f_close=1); % exit if file end
+%%%% beginfont("f:mcf_data_base","v+:*") % 'mcf_data_base.mcf'(default)
+%%%% beginfont("f:temp","v+:*") % use query output
+%%%% beginfont("v+:*") % select all
+ beginfont("t:EXA","v+:1") % 'v+:1': select EXA=1
+ if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi
+ endfont
+ exitif f_EOF=1; % exit if file end
endfor
%******************************************************************************
fi
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 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2021.08.01
+% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2021.09.20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper]{article}
\usepackage{graphicx}
@@ -10,7 +10,7 @@
%--------------------------------
%%%%\pdfpkresolution=1200
%--------------------------------
-%%%%\edef\f at ext{pk}%
+%%%%%\edef\f at ext{pk}%
\edef\f at ext{mps}%
%--------------------------------
\pagestyle{empty}
Modified: trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,9 +1,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2021.09.05
+% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2021.09.20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf; %% it must be version 4.71
+input mcf2graph.mf; %% it must be version 4.72
% ** use data base file 'mcf_data_base.mcf'
-message "mcf_man_soc 2021.09.05"; message "";
+message "mcf_man_soc 2021.09.20"; message "";
%------------------------------------------------------------------------
sw_mframe:=0;
sw_expand:=0;
@@ -1240,7 +1240,7 @@
endfont
defaultsize:=save_defaultsize;
%***************************************************************************
-beginfont("f:mcf_data_base","t:EN","v:Luciferin")
+beginfont("t:EN","v:Luciferin")
fsize:=(50mm,15mm);
if check(mc)=0: MC(scantokens(mc)) fi
endfont
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 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format manual by Akira Yamaji 2021.09.05
+% Molecular Coding Format manual by Akira Yamaji 2021.09.20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper]{article}
\usepackage[pdftex]{graphicx}
@@ -7,8 +7,8 @@
\usepackage{makeidx}
\makeindex
\hypersetup{colorlinks=true,linkcolor=blue}
-\makeatletter
\usepackage{mcf_setup}
+\edef\MCFjobname{mcf_man_soc}%
%----------------------------------------------------------------------------
%%%%\pdfpkresolution=1200
%----------------------------------------------------------------------------
@@ -38,7 +38,7 @@
\htmans=42mm%
\fnum=1%
%----------------------------------------------------------------------------
-\edef\MCFjobname{mcf_man_soc}%
+\makeatletter
%----------------------------------------------------------------------------
\font\@strufont=\MCFjobname\relax%
%----------------------------------------------------------------------------
@@ -52,7 +52,7 @@
\fi%
\global\advance\fnum\@ne\relax%
}%
-%---------------------------------------------------------------------------
+%----------------------------------------------------------------------------
\def\put at char{%
\begin{picture}(75,100)%
\put(0,95){\bf [\NO]\EN}%
@@ -1542,27 +1542,27 @@
if check(mc)=0: MC(scantokens(mc)) fi > mc=mc1 - mc4
endfont >
%------------------------------------------------------------------------------
-beginfont("f:mcf_data_base","t:EN","v:Adenine") > from mcf_data_base.mcf
+beginfont("f:mcf_data_base.mcf","t:EN","v:Adenine") > from mcf_data_base.mcf
if check(mc)=0: MC(scantokens(mc)) fi > select EN="Adenine"
endfont >
%------------------------------------------------------------------------------
-beginfont("f:mcf_data_base","t:EN","v:Guanine") > from mcf_data_base.mcf
- if check(mc)=0: MC(scantokens(mc)) fi > select EN="Guanine"
+beginfont("t:EN","v:Guanine") > select EN="Guanine"
+ if check(mc)=0: MC(scantokens(mc)) fi
endfont
%------------------------------------------------------------------------------
-beginfont("f:mcf_data_base","t:EN","v:Cytosine") > from mcf_data_base.mcf
- if check(mc)=0: MC(scantokens(mc)) fi > select EN="Cytosine"
+beginfont("t:EN","v:Cytosine") > select EN="Cytosine"
+ if check(mc)=0: MC(scantokens(mc)) fi >
endfont >
%------------------------------------------------------------------------------
-beginfont("f+:mcf_data_base","t:n","v:4") > from mcf_data_base.mcf
- if check(mc)=0: MC(scantokens(mc)) fi > v:4 select No.4
-endfont > 'f+' keep file open
+beginfont("t:n","v+:4") > v+:4 = select No.4
+ if check(mc)=0: MC(scantokens(mc)) fi > keep file open
+endfont >
%------------------------------------------------------------------------------
forever:
-%%%%%%%%%% beginfont("f+:mcf_data_base","v:*") > select all
- beginfont("f+:mcf_data_base","t:EXA","v:1") > 'f+'=keep file open
- if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi > 'v:1' select EXA=1
- endfont >
+%%%%%%%%%% beginfont("f:mcf_data_base","v+:*") > select all
+ beginfont("f:mcf_data_base","t:EXA","v+:1") > 'v+:1'= select EXA=1
+ if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi > keep file open
+ endfont >
exitif (f_EOF=1)or(f_close=1); > exit if file end
endfor
%------------------------------------------------------------------------------
@@ -1639,25 +1639,25 @@
%--------------------------------------------------------------
% query()
%
-% "i:filename" : input file name (default "mcf_data_base.mcf")
+% "f:filename" : input file name (default "mcf_data_base.mcf")
% "o:filename" : output file name (default "temp.mcf")
% "s:sort-key" : sort by sort-key
%
-% = , <> , <= , >= , < , >
+% operator : = , <> , <= , >= , < , >
%
-% filter 1 : Cat=biological
-% filter 2 : MW>=285
-% filter 3 : MW<=295
+% filter 1 : Cat=biological
+% filter 2 : MW>=285
+% filter 3 : MW<=295
%--------------------------------------------------------------
query("s:EN",
-%%%%% "i:mcf_data_base.mcf","o:temp.mcf","s:EN",
+%%%%% "f:mcf_data_base.mcf","o:temp.mcf","s:EN",
"Cat=biological","MW>=285","MW<=295");
%--------------------------------------------------------------
forever:
- beginfont("f+:temp","v:*") % use file temp.mcf / select all
+ beginfont("f:temp","v+:*") % use file temp.mcf / select all
if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi
endfont
- exitif (f_EOF=1)or(f_close=1);
+ exitif f_EOF=1;
endfor
%---------------------------------------------------------------
\end{verbatim}
@@ -1713,6 +1713,7 @@
sw_output:=Info; %% tag1:var1;tag2:var2
sw_output:=Info+Table; %% tag1;tag2 var1;var2
sw_output:=Info+Temp; %% tag1:var1;tag2:var2 / output 'temp-info.aux'
+ sw_output:=Info+Mcode; %% output jobname&'.aux'
sw_output:=Info+Mcode+Temp; %% output 'temp-info.aux','temp-mc.aux'
sw_output:=Font+Info+Temp; %% output font,'temp-info.aux','temp-mc.aux'
\end{verbatim}
@@ -1843,8 +1844,9 @@
\index{Mcode}%
\index{Temp}%
\begin{verbatim}
-sw_output:=Mcode;
+sw_output:=Mcode; %% output 'jobname-nnn-EN-mc.aux'
sw_output:=Mcode+Temp; %% output 'temp-mc.aux'
+sw_output:=Info+Mcode; %% output 'jobname-data.aux'
sw_output:=Info+Mcode+Temp; %% output 'temp-info.aux','temp-mc.aux'
sw_output:=Font+Mcode+Temp; %% output font,'temp-mc.aux'
sw_output:=Font+Info+Mcode+Temp; %% output font,'temp-info.aux','temp-mc.aux'
@@ -1851,9 +1853,9 @@
\end{verbatim}
\paragraph{(Command line)}
\begin{verbatim}
- >mpost -s ahlength=8 FILENAME (sw_output=Mcode)
+ >mpost -s ahlength=8 FILENAME (sw_output=Info+Mcode)
\end{verbatim}
-\paragraph{(file name)}
+\paragraph{(Output temporary file)}
\begin{verbatim}
sw_output=Mcode ** file name = 'jobname-nnn-EN-mc.aux'
sw_output=Mcode+Temp ** file name = 'temp-mc.aux'
@@ -1860,12 +1862,24 @@
(result)
<30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH
+
\end{verbatim}
+\paragraph{(Output data-base file)}
+\begin{verbatim}
+sw_output=Mcode+Info ** file name = 'jobname-data.aux'
+
+(result)
+Cat:biological;EN:Adenine;MW:135.13;EXA:1
++
+<30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH
++--------------------------------------------------
+
+\end{verbatim}
%------------------------------------------------------------------------
\paragraph{(Lualatex example)}
%-----------------------------------------------------------------------
\begin{verbatim}
-beginfont("f:mcf_data_base","t:EN","v:Adenine")
+beginfont("t:EN","v:Adenine")
sw_output:=Mcode+Temp;
endfont
\end{verbatim}
@@ -1873,7 +1887,7 @@
\begin{verbatim}
%-----------------------------------------------------------------------
\begin{mplibcode}
- beginfont("f:mcf_data_base","t:EN","v:Vancomycin")
+ beginfont("t:EN","v:Vancomycin")
sw_output:=Mcode+Temp; %%%% output temp-mc.aux %%%%
endfont;
\end{mplibcode}
@@ -1884,17 +1898,12 @@
%-----------------------------------------------------------------------
\begin{verbatim}
(result)
-
file name = 'temp-mc.aux'
-<-30,#1,!12,{1,3,12}=zf,7=wf,/H^-60,60,*/OH,60,
- Ph,-4:/Cl, at -3,\,O,!,Ph, at -4,\,O,!,Ph,-1^15:/Cl, at -3,\,/*OH,*/H^-60,&1,
- @7,&26,@$1,60,//O,60,NH,60,/*H,*/COOH^180,-60,
- Ph,{-2,-4}:/OH, at -1,\,Ph,-5:/OH, at -2,&4,##,
- {3^40,6,9,12}://O,{2,5,8,11}:NH,{1,4^180}:*/H,{7^-60,10^60,14^60}:/*H,
- @10,*\^-60,60,//O,!,NH2, at 13,*\,NH,!,//O,!,/??!,*/H^60,!~zf,NH,!,
- @23,\,O,!,|,?6`.7,2:O,3^10:/!OH,{4,5}:/OH,
- @-1,\,O,!,|,?6`.7,6:O,{3^35,5}:/_,3^-35:/NH2,4:/OH
+<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
\end{verbatim}
%------------------------------------------------------------------------
\newpage
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 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2021.09.05
+% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2021.09.20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% ** mcf2graph.mf must be version 4.71
+% ** mcf2graph.mf must be version 4.72
% ** use mcf_data_base.mcf
\documentclass{article}
%------------------------------------------------------------------------------
@@ -14,7 +14,7 @@
\everymplib{%
if unknown Ph1: input mcf2graph.mf; fi
outputformat:="eps";
- sw_output:=Font;
+ sw_output:=Font+Info+Temp;
tag1:="J"; tag2:="C"; tag3:="fm"; tag4:="mw"; tag5:="EN"; tag6:="MW";
max_blength:=4.5mm;
defaultfont:="uhvr8r";
@@ -47,7 +47,7 @@
\subsection{Chlorophyll a}
\noindent%
\begin{verbatim}
-beginfont("f:mcf_data_base","t:EN","v:Chlorophyll a","NO:-",
+beginfont("f:mcf_data_base.mcf","t:EN","v:Chlorophyll a","NO:-",
":,||,{4,11,17,23}:red,27:green") %%%% change color of atoms %%%%
fsize:=(100mm,45mm);
if check(mc)=0: MC(scantokens(mc)) fi
@@ -59,7 +59,7 @@
\end{verbatim}
%------------------------------------------------------------------------------------
\begin{mplibcode}
-beginfont("f:mcf_data_base","t:EN","v:Chlorophyll a","NO:-",
+beginfont("f:mcf_data_base.mcf","t:EN","v:Chlorophyll a","NO:-",
":,||,{4,11,17,23}:red,27:green") %%%% change color of atoms %%%%
fsize:=(100mm,45mm);
if check(mc)=0: MC(scantokens(mc)) fi
@@ -73,7 +73,7 @@
\subsection{Dinophysistoxin-1}
\noindent%
\begin{verbatim}
-beginfont("f:mcf_data_base","t:EN","v:Okadaic acid","EN:Dinophysistoxin-1",
+beginfont("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1",
"MW:819",":,38:*/_,65=red") %%%% add methyl group (color red) %%%%
fsize:=(150mm,35mm);
if check(mc)=0: MC(scantokens(mc)) fi
@@ -85,7 +85,7 @@
\end{verbatim}
%----------------------------------------------------------------------------
\begin{mplibcode}
-beginfont("f:mcf_data_base","t:EN","v:Okadaic acid","EN:Dinophysistoxin-1",
+beginfont("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1",
"MW:819",":,38:*/_,65=red") %%%% add methyl group (color red) %%%%
fsize:=(150mm,35mm);
if check(mc)=0: MC(scantokens(mc)) fi
@@ -198,13 +198,13 @@
\begin{verbatim}
%--------------------------------------------------------------------------------
\begin{mplibcode}
- beginfont("f:mcf_data_base","t:EN","v:Maitotoxin")
+ beginfont("t:EN","v:Maitotoxin")
sw_output:=Info+Mcode+Temp; %%%% output temp-info,temp-mc.aux %%%%
endfont;
\end{mplibcode}
\verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%%
\begin{mplibcode}
- beginfont("f:mcf_data_base","t:EN","v:Maitotoxin")
+ beginfont("t:EN","v:Maitotoxin")
fsize:=(120mm,60mm); fmargin:=(0,3mm); sw_frame:=Outside;
if check(mc)=0: MC(scantokens(mc)) fi %%%% output font %%%%
endfont
@@ -220,13 +220,13 @@
\end{verbatim}
%--------------------------------------------------------------------------------
\begin{mplibcode}
- beginfont("f:mcf_data_base","t:EN","v:Maitotoxin")
+ beginfont("t:EN","v:Maitotoxin")
sw_output:=Info+Mcode+Temp; %%%% output temp-info.aux %%%%
if check(mc)=0: MC(scantokens(mc)) fi
endfont
\end{mplibcode}
\begin{mplibcode}
- beginfont("f:mcf_data_base","t:EN","v:Maitotoxin")
+ beginfont("t:EN","v:Maitotoxin")
fsize:=(120mm,60mm); fmargin:=(0,3mm); sw_frame:=Outside;
if check(mc)=0: MC(scantokens(mc)) fi %%%% output font %%%%
endfont
Modified: trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
===================================================================
--- trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 4.71 Copyright (c) 2013-2021 Akira Yamaji
+% mcf2graph ver 4.72 Copyright (c) 2013-2021 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,22 +22,23 @@
% This package is located at : http://www.ctan.org/pkg/mcf2graph
% Suggestion or request mail to : mcf2graph at gmail.com
%--------------------------------------------------------------------------------------------------
-% Set outputformat to "eps"(.mps) : mpost FILENAME
-% Set output first font only : mpost -s bboxmargin=1 FILENAME
-% Set outputformat to "png" : mpost -s ahangle=1 FILENAME
-% Set outputformat to "svg" : mpost -s ahangle=2 FILENAME
-% Set outputformat to "eps" (.eps) : mpost -s ahangle=3 FILENAME
-% Set output aux file (tag1:var1;tag2:var2) : mpost -s ahlength=1 FILENAME
-% Set output aux file (tag1;tag2 var1;var2) : mpost -s ahlength=2 FILENAME
-% Set output report : mpost -s ahlength=3 FILENAME
-% Set output MOL(V2000) : mpost -s ahlength=5 FILENAME
-% Set output MOL(V3000) : mpost -s ahlength=6 FILENAME
-% Set output aux file for metafont : mpost -s ahlength=7 FILENAME
-% Set to use plain.mp (label,arrow) : mpost -s labeloffset=1 FILENAME
-% Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME
+% Set outputformat to "eps"(.mps) : mpost FILENAME
+% Set output first font only : mpost -s bboxmargin=1 FILENAME
+% Set outputformat to "png" : mpost -s ahangle=1 FILENAME
+% Set outputformat to "svg" : mpost -s ahangle=2 FILENAME
+% Set outputformat to "eps" (.eps) : mpost -s ahangle=3 FILENAME
+% Set output information aux file (tag1:var1;tag2:var2) : mpost -s ahlength=1 FILENAME
+% Set output information aux file (tag1;tag2 var1;var2) : mpost -s ahlength=2 FILENAME
+% Set output report : mpost -s ahlength=3 FILENAME
+% Set output MOL file (V2000) : mpost -s ahlength=5 FILENAME
+% Set output MOL file (V3000) : mpost -s ahlength=6 FILENAME
+% Set output aux metafont file : mpost -s ahlength=7 FILENAME
+% Set output aux data-base file : mpost -s ahlength=8 FILENAME
+% Set to use plain.mp (label,arrow) : mpost -s labeloffset=1 FILENAME
+% Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
tracingstats:=1;
-message "* This is mcf2graph ver 4.71 2021.09.05";
+message "* This is mcf2graph ver 4.72 2021.09.20";
%-------------------------------------------------------------------------------------------------
newinternal cntA,cntB,cntM,minX,minY,maxX,maxY,sftX,sftY,com,par,envT,envB,lenT,lineT,angT,rotT,
crR,nA,nB,nC,nD,nE,nF,nS,nL,nR,nU,nP,xpos,ypos,markA,markB,saveA,saveB,bondL;
@@ -44,20 +45,21 @@
numeric save_num[],comD[][],parD[][],adrD[][],cntD[],tbl_atom[],tbl_group[][],f_char[],
tbl_atom_wt[],tbl_atom_mi[],tbl_char_wd[],tbl_char_ht[],addA[],add_rot[],chargeA[],
com_group[][],par_group[][],cnt_group[],colorA[],colorB[],sumA[],bondC[],hideH[],lineB[],
- sB[],eB[],angB[],angA[],lenB[],angX[],numS[],wdM[],htM[],wdA[],dxA[],cmm_adr[],mc_indent[];
+ sB[],eB[],angB[],angA[],lenB[],angX[],numS[],wdM[],htM[],wdA[],dxA[],
+ cmm_adr[],mc_indent[],at_semicol[];
string save_str[],tbl_atom_str[],strD[],tag[],file_name_output,blank_str,aux_delimiter,atomfont,
- default_data_file,default_temp_file,mpfont,s_tag,s_var,cal_FM,cal_MW,cal_MI,
- inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW;
+ temps,default_data_file,default_temp_file,mpfont,tag_s,var_s,cal_FM,cal_MW,cal_MI,
+ inf_Cat,inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW;
pair save_pair[],posA[],posM[][],msize,mposition,fsize,fmargin,save_mposition,posBs,posBe,dum;
picture mol_stru[],atom_picture,save_picture,temp_picture;
path arrow_path,dottedline_path,line_path,arrow_head;
%-------------------------------------------------------------------------------------------------
char_num:=str_cnt:=tbl_cnt:=proc_end:=mangle:=sw_expand:=sw_frame:=sw_trimming:=sw_ext_all:=0;
-sw_abbreviate:=sw_arrow_emu:=sw_output:=sw_numbering:=0; numbering_start:=1; numbering_end:=4095;
+sw_abbreviate:=sw_arrow_emu:=sw_numbering:=sw_output:=0; numbering_start:=1; numbering_end:=4095;
%-------------------------------------------------------------------------------------------------
aux_max:=max_inf_num:=20; aux_delimiter:=";"; blank_str:= " "; dum:=(-4091,0);
for i=1 upto aux_max: tag[i]:=""; endfor
-Font:=1; Temp:=2; Info:=4; Table:=8; Report:=16; MOL2k:=32; MOL3k:=64; Mfont:=128; Mcode:=256;
+Font:=1; Mfont:=2; Mcode:=4; Temp:=8; Info:=16; Table:=32; Report:=64; MOL2k:=128; MOL3k:=256;
Atom:=8; Bond:=16; Brock:=32; Inverse:=64; Group:=32; Mol:=64;
Outside:=1; Inside:=2; Bothside:=Outside+Inside;
%-------------------------------------------------------------------------------------------------
@@ -110,11 +112,11 @@
if ahlength=1: sw_output:=Info; % output aux file
elseif ahlength=2: sw_output:=Info+Table; % output aux file(Table mode)
elseif ahlength=3: sw_output:=Report; % output report
- elseif ahlength=4: sw_output:=0; % *default
+ elseif ahlength=4: sw_output:=Font; % *default
elseif ahlength=5: sw_output:=MOL2k; % output MOL(V2000)
elseif ahlength=6: sw_output:=MOL3k; % output MOL(V3000)
elseif ahlength=7: sw_output:=Mfont; % output aux mf
- elseif ahlength=8: sw_output:=Mcode; % output aux mc
+ elseif ahlength=8: sw_output:=Mcode+Info; % output aux data-base
fi
%-- default bboxmargin=2------------------------------------------------------------------
if bboxmargin=1: proc_end:=1; fi % output first font only
@@ -135,6 +137,31 @@
if atomfont="": atomfont:="draw"; fi % default atom font
if defaultfont="": defaultfont:="draw"; fi % default label font
%-----------------------------------------------------------------------------------------
+ if sw_output>=Info:
+ if bboxmargin=1: message "* output first font only"; fi
+ message "* jobname="&jobname;
+ message "* numbersystem="&numbersystem;
+ if (ahlength=1)or(ahlength=2):
+ message "* output information file";
+ message "* file name="&jobname&"-info.aux";
+ message "* info delimiter="&aux_delimiter;
+ ef ahlength=3: message "* output report file";
+ message "* file name="&jobname&"-report.txt";
+ ef ahlength=5: message "* output MOL file(V2000)";
+ message "* "&jobname&"-nnn-"&"inf_EN"&".mol";
+ ef ahlength=6: message "* output MOL file(V3000)";
+ message "* "&jobname&"-nnn-"&"inf_EN"&".mol";
+ ef ahlength=7: message "* output metafont file";
+ message "* mf file name="&jobname&"-mf.aux";
+ ef ahlength=8: message "* output data-base file";
+ message "* data-base file name="&jobname&"-data.aux";
+ fi
+ message "* outputformat="&outputformat;
+ if outputformat="png": message "* hppp="&decimal(hppp)&"/vppp="&decimal(vppp); fi
+ message "* outputtemplate="&outputtemplate;
+ message "* atomfont="&atomfont;
+ message "* defaultfont="&defaultfont;
+ fi
else:
f_MP:=0;
def image = image_emu enddef;
@@ -149,34 +176,11 @@
def color = transform enddef;
atomfont:="draw";
defaultfont:="draw";
+ sw_output:=Font;
mode_setup;
fi
clearit;
%--------------------------------------------------------------------------------------------------
-if f_MP=1:
- if bboxmargin=1: message "* output first font only"; fi
- message "* jobname="&jobname;
- message "* numbersystem="&numbersystem;
- if (ahlength=1)or(ahlength=2):
- message "* output info file";
- message "* file name="&jobname&"-info.aux";
- message "* info delimiter="&aux_delimiter;
- ef ahlength=3: message "* output report file";
- message "* file name="&jobname&"-report.txt";
- ef ahlength=5: message "* output MOL file(V2000)";
- message "* "&jobname&"-nnn-"&"inf_EN"&".mol";
- ef ahlength=6: message "* output MOL file(V3000)";
- message "* "&jobname&"-nnn-"&"inf_EN"&".mol";
- ef ahlength=7: message "* output mf file";
- message "* mf file name="&jobname&"-mf.aux";
- fi
- message "* outputformat="&outputformat;
- if outputformat="png": message "* hppp="&decimal(hppp)&"/vppp="&decimal(vppp); fi
- message "* outputtemplate="&outputtemplate;
- message "* atomfont="&atomfont;
- message "* defaultfont="&defaultfont;
-fi
-%--------------------------------------------------------------------------------------------------
?3:=?20:=Ph:=Ph1:=Ph2:=hz:=0; vt:=1;
ratio_chain_ring:=0.66; ratio_atom_bond:=0.36; ratio_thickness_bond:=0.015;
ratio_thickness_char:=0.1; ratio_char_bond:=1.5; ratio_bondgap_bond:=0.15;
@@ -254,17 +258,17 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def beginfont(text s)=
begingroup
- save ',f_beginchar,f_ext,blen,ext,add,ang_br,n_fw,n_bw,at_colon,at_semicol,temps,t_tag,
+ save ',f_beginchar,f_ext,blen,ext,add,ang_br,fw_n,bw_n,at_colon,temp_tag,
mc,info,file_name_input,bond_cnt,warning_cnt,hideH_cnt,bondC,filter_s;
- numeric at_semicol[];
- string info[],mc[],mc,temps,file_name_input,t_tag,filter_s;
+ string info[],mc[],mc,file_name_input,temp_tag,filter_s;
%------------------------------------------------------------------------------------------------
def ext=ext_to_font enddef;
def add=add_to_molecule enddef;
def '=read_ud enddef;
%------------------------------------------------------------------------------------------------
- inf_NO:=inf_EN:=inf_JN:=inf_MW:=inf_FM:=inf_CAS:=inf_USE:=inf_EXA:=inf_EXB:="-";
- mc:=t_tag:=file_name_input:=cal_MW:=cal_MI:=cal_FM:=filter_s:="";
+ inf_NO:=inf_EN:=inf_JN:=inf_MW:=inf_FM:=inf_CAS:=inf_Cat:=inf_EXA:=inf_EXB:="-";
+ mc:=temp_tag:=cal_MW:=cal_MI:=cal_FM:=filter_s:="";
+ file_name_input:=default_data_file;
%------------------------------------------------------------------------------------------------
parts_cnt:=parts_usr_start;
parts_int:=parts_int_start;
@@ -271,26 +275,30 @@
%------------------------------------------------------------------------------------------------
char_num:=char_num+1;
store_par(parameter_list);
- f_ext:=cntM:=mc_row:=inf_num:=f_EOF:=f_close:=0;
- for list=s: inf_num:=inf_num+1; info[inf_num]:=list; mc[inf_num]:=""; endfor
+ f_ext:=cntM:=mc_row:=inf_num:=f_EOF:=0;
%------------------------------------------------------------------------------------------------
- for j=1 upto inf_num:
- at_colon:=scan_char(":",info[j],0,1);
+ for list=s:
+ at_colon:=scan_char(":",list,0,1);
if at_colon=1:
- n_fw:=scan_char(" ",info[j],1,2);
- n_bw:=scan_char(" ",info[j],-1,2);
+ fw_n:=scan_char(" ",list,1,2);
+ bw_n:=scan_char(" ",list,-1,2);
mc_row:=mc_row+1;
- mc_indent[mc_row]:=n_fw-2;
- mc[mc_row]:=substring (n_fw-1,n_bw) of info[j];
+ mc_indent[mc_row]:=fw_n-2;
+ mc[mc_row]:=substring (fw_n-1,bw_n) of list;
mc:=mc&mc[mc_row];
ef at_colon>=1:
- s_tag:=substring (0,at_colon-1) of info[j];
- s_var:=substring (at_colon,length(info[j])) of info[j];
- if s_tag="f": if f_MP=1: file_name_input:=s_var&".mcf"; f_close:=1; fi
- ef s_tag="f+": if f_MP=1: file_name_input:=s_var&".mcf"; fi
- ef s_tag="t": if f_MP=1: t_tag:=s_var; fi
- ef s_tag="v": if f_MP=1: pickup_data_unit(t_tag,s_var); fi
- else: if known scantokens("inf_"&s_tag): scantokens("inf_"&s_tag):=s_var; fi
+ tag_s:=substring (0,at_colon-1) of list;
+ var_s:=substring (at_colon,length(list)) of list;
+ if tag_s="f":
+ if f_MP=1:
+ if scan_char(".",var_s,0,1)=0: file_name_input:=var_s&".mcf";
+ else: file_name_input:=var_s;
+ fi
+ fi
+ ef tag_s="t": if f_MP=1: temp_tag:=var_s; fi
+ ef tag_s="v": if f_MP=1: pickup_data_unit(temp_tag,var_s,1); fi
+ ef tag_s="v+": if f_MP=1: pickup_data_unit(temp_tag,var_s,0); fi
+ else: if known scantokens("inf_"&tag_s): scantokens("inf_"&tag_s):=var_s; fi
fi
fi
endfor
@@ -299,88 +307,89 @@
enddef;
%==================================================================================================
def endfont=
- %--------------------------------------------------------------------------------------------
if f_EOF=0:
- %--------------------------------------------------------------------------------------------
- if (sw_output=0)or(scan_bit(sw_output,Font)):
- if cntM>=1:
- if sw_ext_all=1: ext_to_font(EXT_ALL); fi
- if sw_trimming>=1:
- nA:=nC:=4095; nB:=nD:=-4095;
+ %--------------------------------------------------------------------------------------------
+ if scan_bit(sw_output,Font):
+ if cntM>=1:
+ if sw_ext_all=1: ext_to_font(EXT_ALL); fi
+ if sw_trimming>=1:
+ nA:=nC:=4095; nB:=nD:=-4095;
+ for i=1 upto cntM:
+ if xpart(posM[1][i])<nA: nA:=xpart(posM[1][i]); fi
+ if xpart(posM[2][i])>nB: nB:=xpart(posM[2][i]); fi
+ if ypart(posM[1][i])<nC: nC:=ypart(posM[1][i]); fi
+ if ypart(posM[2][i])>nD: nD:=ypart(posM[2][i]); fi
+ endfor
+ font_wd:=nB-nA+2margin_lr;
+ font_ht:=nD-nC+2margin_tb;
+ fsize:=(font_wd,font_ht);
+ for i=1 upto cntM:
+ posM[0][i]:=posM[0][i]+(margin_lr-nA,margin_tb-nC);
+ posM[1][i]:=posM[1][i]+(margin_lr-nA,margin_tb-nC);
+ endfor
+ fi
+ %----------------------------------------------------------------------------------------
+ if f_MP=0: beginchar(char_num,font_wd/bp*bp#,font_ht/bp*bp#,0)
+ else: beginfig(char_num) w:=charwd:=font_wd; h:=charht:=font_ht; chardp:=0;
+ if scan_bit(sw_frame,Outside): else: draw_corner((0,0),w,h,0.05bp); fi
+ fi
+ if scan_bit(sw_frame,Outside): draw_frame((0,0),w,h,thickness_frame); fi
+ if scan_bit(sw_frame,Inside):
+ draw_frame((margin_lr,margin_tb),w-2margin_lr,h-2margin_tb,thickness_frame);
+ fi
for i=1 upto cntM:
- if xpart(posM[1][i])<nA: nA:=xpart(posM[1][i]); fi
- if xpart(posM[2][i])>nB: nB:=xpart(posM[2][i]); fi
- if ypart(posM[1][i])<nC: nC:=ypart(posM[1][i]); fi
- if ypart(posM[2][i])>nD: nD:=ypart(posM[2][i]); fi
+ addto currentpicture also mol_stru[i] shifted posM[0][i]; mol_stru[i]:=nullpicture;
+ if scan_bit(sw_frame,Mol): ext(draw_frame(p[i],w[i],h[i],thickness_frame)) fi
endfor
- font_wd:=nB-nA+2margin_lr;
- font_ht:=nD-nC+2margin_tb;
- fsize:=(font_wd,font_ht);
- for i=1 upto cntM:
- posM[0][i]:=posM[0][i]+(margin_lr-nA,margin_tb-nC);
- posM[1][i]:=posM[1][i]+(margin_lr-nA,margin_tb-nC);
- endfor
+ if f_ext=1: addto currentpicture also mol_stru[0]; mol_stru[0]:=nullpicture; fi
+ %----------------------------------------------------------------------------------------
+ else:
+ font_wd:=xpart(fsize); font_ht:=ypart(fsize);
+ if f_MP=0: beginchar(char_num,font_wd/bp*bp#,font_ht/bp*bp#,0)
+ else: beginfig(char_num) w:=charwd:=font_wd; h:=charht:=font_ht;
+ fi
+ draw (0,h)--(0,0)--(w,0)--(w,h)--(0,h)--(w,0) wpcs thickness_frame;
fi
- %----------------------------------------------------------------------------------------
- if f_MP=0: beginchar(char_num,font_wd/bp*bp#,font_ht/bp*bp#,0)
- else: beginfig(char_num) w:=charwd:=font_wd; h:=charht:=font_ht; chardp:=0;
- if scan_bit(sw_frame,Outside): else: draw_corner((0,0),w,h,0.05bp); fi
+ %-----------------------------------------------------------------------------------------
+ endchar;
+ clearit;
+ %-----------------------------------------------------------------------------------------
+ if sw_output=Font+Info+Temp: proc_info_out(1,1);
+ ef sw_output=Font+Mcode+Temp: proc_mc_out(1);
+ ef sw_output=Font+Info+Mcode+Temp: proc_info_out(1,1); proc_mc_out(1);
+ ef sw_output=Font+Report+Temp: proc_report_out(1);
fi
- if scan_bit(sw_frame,Outside): draw_frame((0,0),w,h,thickness_frame); fi
- if scan_bit(sw_frame,Inside):
- draw_frame((margin_lr,margin_tb),w-2margin_lr,h-2margin_tb,thickness_frame);
- fi
- for i=1 upto cntM:
- addto currentpicture also mol_stru[i] shifted posM[0][i]; mol_stru[i]:=nullpicture;
- if scan_bit(sw_frame,Mol): ext(draw_frame(p[i],w[i],h[i],thickness_frame)) fi
- endfor
- if f_ext=1: addto currentpicture also mol_stru[0]; mol_stru[0]:=nullpicture; fi
%-----------------------------------------------------------------------------------------
- else:
- font_wd:=xpart(fsize); font_ht:=ypart(fsize);
- if f_MP=0: beginchar(char_num,font_wd/bp*bp#,font_ht/bp*bp#,0)
- else: beginfig(char_num) w:=charwd:=font_wd; h:=charht:=font_ht;
- fi
- draw (0,h)--(0,0)--(w,0)--(w,h)--(0,h)--(w,0) wpcs thickness_frame;
+ ef sw_output=Info: proc_info_out(1,0);
+ ef sw_output=Info+Table: proc_info_out(2,0);
+ ef sw_output=Info+Temp: proc_info_out(1,1);
+ ef sw_output=Info+Mcode: proc_info_out(1,2);
+ ef sw_output=Mcode: proc_mc_out(0);
+ ef sw_output=Mcode+Temp: proc_mc_out(1);
+ ef sw_output=Mfont: proc_mf_out(1);
+ ef sw_output=Report: proc_report_out(0);
+ ef sw_output=Report+Temp: proc_report_out(1);
+ ef sw_output=MOL2k: proc_mol_out(1);
+ ef sw_output=MOL3k: proc_mol_out(2);
+ ef sw_output=Info+Mcode+Temp: proc_mc_out(1); proc_info_out(1,1);
fi
- %-----------------------------------------------------------------------------------------
- endchar;
- clearit;
- %-----------------------------------------------------------------------------------------
- if sw_output=Font+Info+Temp: proc_info_out(1,1);
- ef sw_output=Font+Mcode+Temp: proc_mc_out(1);
- ef sw_output=Font+Info+Mcode+Temp: proc_info_out(1,1); proc_mc_out(1);
- ef sw_output=Font+Report+Temp: proc_report_out(1);
- fi
- %-----------------------------------------------------------------------------------------
- ef sw_output=Info: proc_info_out(1,0);
- ef sw_output=Info+Table: proc_info_out(2,0);
- ef sw_output=Info+Temp: proc_info_out(1,1);
- ef sw_output=Mcode: proc_mc_out(0);
- ef sw_output=Mcode+Temp: proc_mc_out(1);
- ef sw_output=Mfont: proc_mf_out(0);
- ef sw_output=Report: proc_report_out(0);
- ef sw_output=Report+Temp: proc_report_out(1);
- ef sw_output=MOL2k: proc_mol_out(1);
- ef sw_output=MOL3k: proc_mol_out(2);
- ef sw_output=Info+Mcode+Temp: proc_mc_out(1); proc_info_out(1,1);
+ %---------------------------------------------------------------------------------------------
+ %% message "* parts_cnt (0)="& decimal(parts_cnt) &" "& decimal(parts_usr-parts_usr_start);
+ %% message "* parts_int (0)="& decimal(parts_int) &" "& decimal(parts_int-parts_int_start);
+ %---------------------------------------------------------------------------------------------
fi
- %-----------------------------------------------------------------------------------------------
- %% message "* parts_cnt (0)="& decimal(parts_cnt) &" "& decimal(parts_usr-parts_usr_start);
- %% message "* parts_int (0)="& decimal(parts_int) &" "& decimal(parts_int-parts_int_start);
- %-----------------------------------------------------------------------------------------------
- fi
- %-----------------------------------------------------------------------------------------------
+ %---------------------------------------------------------------------------------------------
restore_par(parameter_list);
if proc_end=1: scantokens("bye"); fi
endgroup;
enddef;
%-------------------------------------------------------------------------------------------------
-def pickup_data_unit(expr t,v)=
+def pickup_data_unit(expr t,v,f)=
begingroup
- save unit_cnt,f_end,semicol_cnt,cond,n_var;
- f_end:=unit_cnt:=semicol_cnt:=cond:=at_semicol[0]:=inf_num:=0;
- if t="n": n_var:=scantokens(v); fi
+ save unit_cnt,f_end,semicol_cnt,f_match,var_n,info_s,tag_a,var_a;
+ string tag_a[],var_a[],info_s;
+ f_end:=unit_cnt:=semicol_cnt:=f_match:=inf_num:=0;
+ if t="n": var_n:=scantokens(v); fi
forever:
temps:=readfrom file_name_input;
if temps=EOF: f_EOF:=1; fi
@@ -388,11 +397,10 @@
if subc(1,temps)="%":
ef (subc(1,temps)="+")and(subc(2,temps)<>"-"):
unit_cnt:=unit_cnt+1;
- if v="*": cond:=1;
- ef t="n": if unit_cnt=n_var: cond:=1; fi
- else: if v=scantokens("inf_"&t): cond:=1; fi
+ if v="*": f_match:=1;
+ ef t="n": if unit_cnt=var_n: f_match:=1; fi
fi
- if cond=1:
+ if f_match=1:
forever:
temps:=readfrom file_name_input;
if temps=EOF: f_EOF:=1; fi
@@ -400,12 +408,15 @@
exitif subc(1,temps)="+";
if subc(1,temps)<>"%":
mc_row:=mc_row+1;
- n_fw:=scan_char(" ",temps,1,1);
- mc_indent[mc_row]:=n_fw-1;
- mc[mc_row]:=substring (n_fw-1,length(temps)) of temps;
+ fw_n:=scan_char(" ",temps,1,1);
+ mc_indent[mc_row]:=fw_n-1;
+ mc[mc_row]:=substring (fw_n-1,length(temps)) of temps;
mc:=mc&mc[mc_row];
fi
endfor
+ for i=1 upto inf_num:
+ if known scantokens("inf_"&tag_a[i]): scantokens("inf_"&tag_a[i]):=var_a[i]; fi
+ endfor
f_end:=1;
else:
forever:
@@ -416,21 +427,21 @@
endfor
fi
else:
- semicol_cnt:=count_char(";",temps);
+ semicol_cnt:=count_semicol(temps);
inf_num:=semicol_cnt+1;
for i=1 upto inf_num:
- if i<=semicol_cnt: info[i]:=substring (at_semicol[i-1],at_semicol[i]-1) of temps;
- else: info[i]:=substring (at_semicol[semicol_cnt],length(temps)) of temps;
+ if i<=semicol_cnt: info_s:=substring (at_semicol[i-1],at_semicol[i]-1) of temps;
+ else: info_s:=substring (at_semicol[semicol_cnt],length(temps)) of temps;
fi
- at_colon:=scan_char(":",info[i],0,1);
- s_tag:=substring (0,at_colon-1) of info[i];
- s_var:=substring (at_colon,length(info[i])) of info[i];
- if known scantokens("inf_"&s_tag): scantokens("inf_"&s_tag):=s_var; fi
+ at_colon:=scan_char(":",info_s,0,1);
+ tag_a[i]:=substring (0,at_colon-1) of info_s;
+ var_a[i]:=substring (at_colon,length(info_s)) of info_s;
+ if t=tag_a[i]: if v=var_a[i]: f_match:=1; fi fi
endfor
fi
exitif f_end=1;
endfor
- if f_close=1: closefrom file_name_input; fi
+ if f=1: closefrom file_name_input; fi
endgroup;
enddef;
%--------------------------------------------------------------------------------------------------
@@ -445,13 +456,6 @@
fi
n_s
enddef;
-%--------------------------------------------------------------------------------------------------
-vardef count_char(expr c,s)=
- save nS;
- nS:=0;
- for i=1 upto length(s): if subc(i,s)=c: nS:=nS+1; at_semicol[nS]:=i; fi endfor
- nS
-enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def set_def_MC=
save /,//,/*,*/,**,*/*,~,^,',`,<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_,inside_def_MC;
@@ -890,7 +894,7 @@
pair temp_p;
%-----------------------------------------------------------------------------------------------
if sw_numbering>=1: ratio_atom_bond:=0.25; fi
- if (sw_expand=1)or(sw_output=MOL2k)or(sw_output=MOL3k):
+ if (sw_expand=1)or(scan_bit(sw_output,MOL2k))or(scan_bit(sw_output,MOL3k)):
expand_set; crR:=1; else: crR:=-ratio_chain_ring;
fi
cntA:=cntB:=cntC:=cnt_group:=0; strD[0]:="C"; str_cnt:=2000;
@@ -927,77 +931,86 @@
endfor
if blen>max_blength: blen:=max_blength; proc_size_setup; proc_skeleton(0); proc_scaling; fi
fi
- %-draw atom-------------------------------------------------------------------------------------
- if sw_numbering=0: for i=1 upto cntA: draw_atom(i); endfor fi
- %-draw add to atom------------------------------------------------------------------------------
+ %-----------------------------------------------------------------------------------------------
for i=1 upto cntA:
if addA[i]<>0:
- temp_c:=char(addA[i]); nA:=angX[i]+add_rot[i]; nC:=nA mod 90;
+ temp_c:=char(addA[i]);
if temp_c="+": chargeA[i]:=1; elseif temp_c="-": chargeA[i]:=-1; else: chargeA[i]:=0; fi
- if numS[i]=0: nB:=.5atom_wd;
- else: nB:=.85wdA[i]+iif(nC<45,sind(nC),cosd(nC))*.5wdA[i];
- fi
- temp_p:=sfrt(posA[i]-(.35atom_wd,.35atom_wd),nB,nA);
- draw_char(temp_c,temp_p,atom_wd,bond_pen_wd*ratio_char_bond,0);
else: chargeA[i]:=0;
fi
endfor
- %-draw bond-------------------------------------------------------------------------------------
- for i=1 upto cntB: if lineB[i]<si_ : draw_bond(i); fi endfor
- for i=1 upto cntB: if lineB[i]>=si_: draw_bond(i); fi endfor
- %-atom numbering--------------------------------------------------------------------------------
- if scan_bit(sw_numbering,Atom):
+ %===============================================================================================
+ if scan_bit(sw_output,Font):
+ %-draw atom-----------------------------------------------------------------------------------
+ if sw_numbering=0: for i=1 upto cntA: draw_atom(i); endfor fi
+ %-draw add to atom----------------------------------------------------------------------------
for i=1 upto cntA:
- if (i>=numbering_start)and(i<=numbering_end):
- if scan_bit(sw_numbering,Brock): nA:=i-numbering_start+1;
- elseif scan_bit(sw_numbering,Inverse):
- nA:=iif(numbering_end<cntA,numbering_end-i+1,cntA-i+1);
- else: nA:=i;
+ if addA[i]<>0:
+ nA:=angX[i]+add_rot[i]; nC:=nA mod 90;
+ if numS[i]=0: nB:=.5atom_wd;
+ else: nB:=.85wdA[i]+iif(nC<45,sind(nC),cosd(nC))*.5wdA[i];
fi
- erase fill unitsquare xscaled (.8atom_wd*length(decimal(nA)))
- yscaled atom_wd shifted (posA[i]-(.5atom_wd,.5atom_wd));
- defaultsize:=atom_wd; defaultscale:=1;
- puts(posA[i]-(.5atom_wd,.5atom_wd))(decimal(nA));
+ temp_p:=sfrt(posA[i]-(.35atom_wd,.35atom_wd),nB,nA);
+ draw_char(temp_c,temp_p,atom_wd,bond_pen_wd*ratio_char_bond,0);
fi
endfor
- fi
- %-bond numbering--------------------------------------------------------------------------------
- if scan_bit(sw_numbering,Bond):
- for i=1 upto cntB:
- if (i>=numbering_start)and(i<=numbering_end):
- if scan_bit(sw_numbering,Brock): nB:=i-numbering_start+1;
- elseif scan_bit(sw_numbering,Inverse):
- nB:=iif(numbering_end<cntB,numbering_end-i+1,cntB-i+1);
- else: nB:=i;
+ %-draw bond-----------------------------------------------------------------------------------
+ for i=1 upto cntB: if lineB[i]<si_ : draw_bond(i); fi endfor
+ for i=1 upto cntB: if lineB[i]>=si_: draw_bond(i); fi endfor
+ %-atom numbering------------------------------------------------------------------------------
+ if scan_bit(sw_numbering,Atom):
+ for i=1 upto cntA:
+ if (i>=numbering_start)and(i<=numbering_end):
+ if scan_bit(sw_numbering,Brock): nA:=i-numbering_start+1;
+ elseif scan_bit(sw_numbering,Inverse):
+ nA:=iif(numbering_end<cntA,numbering_end-i+1,cntA-i+1);
+ else: nA:=i;
+ fi
+ erase fill unitsquare xscaled (.8atom_wd*length(decimal(nA)))
+ yscaled atom_wd shifted (posA[i]-(.5atom_wd,.5atom_wd));
+ defaultsize:=atom_wd; defaultscale:=1;
+ puts(posA[i]-(.5atom_wd,.5atom_wd))(decimal(nA));
fi
- erase fill unitsquare yscaled atom_wd xscaled (.8atom_wd*length(decimal(nB)))
- shifted (.5[posA[sB[i]],posA[eB[i]]]-(.5atom_wd,.5atom_wd));
- defaultsize:=atom_wd; defaultscale:=1;
- puts(0.5[posA[sB[i]],posA[eB[i]]]-(.5atom_wd,.5atom_wd))(decimal(nB));
- fi
- endfor
- fi
- %-----------------------------------------------------------------------------------------------
- if xpart(mposition)>1: sftX:=xpart(mposition)-minX;
- else: sftX:=margin_lr-minX+(font_wd-mol_wd-2margin_lr)*xpart(mposition);
- fi
- if ypart(mposition)>1: sftY:=ypart(mposition)-minY;
- else: sftY:=margin_tb-minY+(font_ht-mol_ht-2margin_tb)*ypart(mposition);
- fi
- cntM:=cntM+1;
- posM[0][cntM]:=(sftX,sftY);
- posM[1][cntM]:=(minX+sftX,minY+sftY);
- posM[2][cntM]:=(maxX+sftX,maxY+sftY);
- wdM[cntM]:=mol_wd;
- htM[cntM]:=mol_ht;
- mol_stru[cntM]:=currentpicture;
- clearit;
- endgroup;
- if sw_output>=1: proc_calc(0); fi
- if cntC>=1:
+ endfor
+ fi
+ %-bond numbering------------------------------------------------------------------------------
+ if scan_bit(sw_numbering,Bond):
+ for i=1 upto cntB:
+ if (i>=numbering_start)and(i<=numbering_end):
+ if scan_bit(sw_numbering,Brock): nB:=i-numbering_start+1;
+ elseif scan_bit(sw_numbering,Inverse):
+ nB:=iif(numbering_end<cntB,numbering_end-i+1,cntB-i+1);
+ else: nB:=i;
+ fi
+ erase fill unitsquare yscaled atom_wd xscaled (.8atom_wd*length(decimal(nB)))
+ shifted (.5[posA[sB[i]],posA[eB[i]]]-(.5atom_wd,.5atom_wd));
+ defaultsize:=atom_wd; defaultscale:=1;
+ puts(0.5[posA[sB[i]],posA[eB[i]]]-(.5atom_wd,.5atom_wd))(decimal(nB));
+ fi
+ endfor
+ fi
+ %---------------------------------------------------------------------------------------------
+ if xpart(mposition)>1: sftX:=xpart(mposition)-minX;
+ else: sftX:=margin_lr-minX+(font_wd-mol_wd-2margin_lr)*xpart(mposition);
+ fi
+ if ypart(mposition)>1: sftY:=ypart(mposition)-minY;
+ else: sftY:=margin_tb-minY+(font_ht-mol_ht-2margin_tb)*ypart(mposition);
+ fi
+ cntM:=cntM+1;
+ posM[0][cntM]:=(sftX,sftY);
+ posM[1][cntM]:=(minX+sftX,minY+sftY);
+ posM[2][cntM]:=(maxX+sftX,maxY+sftY);
+ wdM[cntM]:=mol_wd;
+ htM[cntM]:=mol_ht;
+ mol_stru[cntM]:=currentpicture;
+ clearit;
+ if cntC>=1:
for i=1 upto cntA: if colorA[i]<>0: colorA[i]:=0; fi endfor
for i=1 upto cntB: if colorB[i]<>0: colorB[i]:=0; fi endfor
+ fi
fi
+ if sw_output>=Info: proc_check_structure(0); fi
+ endgroup;
enddef;
%-------------------------------------------------------------------------------------------------
def add_group=
@@ -1591,7 +1604,7 @@
temp_s
enddef;
%=================================================================================================
-def proc_calc(expr n)=
+def proc_check_structure(expr n)=
begingroup
save knownA,tmp_wtp;
num_MW:=num_MI:=cen_MW:=cen_MI:=tbl_atom_max:=warning_cnt:=hideH_cnt:=0;
@@ -1669,6 +1682,7 @@
def proc_info_out(expr n,f)=
message "["&decimal(char_num)&"]:"&inf_EN;
if f=1: file_name_output:="temp-info.aux";
+ ef f=2: file_name_output:=jobname&"-data.aux";
else: file_name_output:=jobname&"-info.aux";
fi
%--------------------------------------------------------------------------------------
@@ -1705,7 +1719,11 @@
ef tag[i]="MC": & inf_MC
fi
endfor ;
- if f=1: printf EOF; fi
+ if f=1: printf EOF;
+ ef f=2: printf "+";
+ for i=1 upto mc_row: printf (substring(0,mc_indent[i]) of blank_str)&mc[i]; endfor
+ printf "+-----------------------------------------------------------------------------";
+ fi
enddef;
%=================================================================================================
def proc_report_out(expr f)=
@@ -1823,12 +1841,10 @@
def proc_mf_out(expr f)=
message "["&decimal(char_num)&"]:"&inf_EN;
file_name_output:=jobname&"-mf.aux";
- printf "beginfont("
- for i=1 upto inf_num: &ditto&info[i]&ditto&"," endfor ;
- for i=1 upto mc_row:
- printf ditto&": " if i=mc_row: &mc[i]&ditto&")"; else: &mc[i]&ditto&","; fi
- endfor
- printf "if check(mc)=0: MC(scantokens(mc)) fi";
+ printf "beginfont()";
+ printf "MC(";
+ for i=1 upto mc_row: printf mc[i]; endfor
+ printf ")";
printf "endfont";
if f=1: printf "%-------------------------------------------------------------------------"; fi
enddef;
@@ -1952,9 +1968,11 @@
hexose_hp:='(#1.4,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##);
Pyranose_hp:='(#1.4,-35~wf_r,35~bd_r`1,30~wb_r,130`1.66,O,&1,##);
%-------------------------------------------------------------------------------------------------
-xCH3:='(/H,/H^60,60,H); xNH:='(N,/H); xNH2:='(N,/H,60,H); xNO2:='(N,//O,60~dm,O); xNO:='(N,!~dm,O);
-xSO2H:='(S,//O,!,O,!,H); xSO3H:='(S,//O^35,//O^-35,!,O,!,H); xCOO:='(//O,!,O);
-xOH:='(O,!,H); xCHO:='(//O,!,H); xCOOH:='(//O,!,O,!,H); xCN:='(!~tm,N); xSH:='(S,!,H);
+xCH3:='(/H,/H^60,/H^-60); xNH:='(N,/H); xNH2:='(N,/H^60,/H^-60); xNO2:='(N,//O^60,//O^-60);
+xOH:='(O,/H); xNO:='(N,//O); xSO2H:='(S,//O^60,/OH^-60); xSO3H:='(S,/OH,//O^60,//O^-60);
+xCHO:='(//O^-60,/H^60); xCOOH:='(//O^-60,/xOH^60); xCN:='(/N~tm); xSH:='(S,/H);
+!xOH:='(!,xOH); !xCHO:='(!,xCHO); !xCOOH:='(!,xCOOH); !xCH3:='(!,xCH3); !xCN:='(!,xCN);
+!xNH2:='(!,xNH2); !xNO2:='(!,xNO2); !xSH:='(!,xSH);
%=================================================================================================
init_par(parameter_list);
%-------------------------------------------------------------------------------------------------
@@ -1963,9 +1981,8 @@
%-------------------------------------------------------------------------------------------------
def expand_set=
CH3:=xCH3; NH:=xNH; NH2:=xNH2; NO:=xNO; NO2:=xNO2; OH:=xOH; CHO:=xCHO; COOH:=xCOOH; CN:=xCN;
- SH:=xSH; SO2H:=xSO2H; SO3H:=xSO3H; COO[-1]:=xCOO;
- !CH3:='(!,CH3); !OH:='(!,OH); !NH2:='(!,NH2); !CHO:='(!,CHO); !COOH:='(!,COOH); !CN:='(!,CN);
- !SH:='(!,SH); !NO2:='(!,NO2);
+ SH:=xSH; SO2H:=xSO2H; SO3H:=xSO3H; !SH:=!xSH;
+ !CH3:=!xCH3; !OH:=!xOH; !NH2:=!xNH2; !CHO:=!xCHO; !COOH:=!xCOOH; !CN:=!xCN; !NO2:=!xNO2;
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
vardef check(expr s)=
@@ -2080,25 +2097,24 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def query(text s)=
begingroup
- save temps,file_name,f_mcf,f_line,unit_row,unit_cnt,line_s,unit_row_cnt,mc_row,line_cnt,
- semicol_cnt,inf_num,info_s,filter_n,tag_s,var_s,order,min_s,min_n,par_cnt,key_cnt,var_n,
- sign_at,sign_n,filter_tag,filter_var,filter_sign,filter_cnt,temp_s,
- at_semicol,at_colon,at_equal,at_less,at_greater,at_n;
- string line_s[][],sort_s[],par_list[],sort_all[],key_s[],filter_s[],filter_tag[],filter_var[],
- temps,file_name_input,info_s,tag_s,var_s,temp_s,min_s;
- numeric unit_row_cnt[],at_semicol[],order[],order_tbl[],filter_sign[];
- unit_row:=f_mcf:=mc_row:=line_cnt:=inf_num:=par_cnt:=key_cnt:=filter_cnt:=at_semicol[0]:=0;
+ save file_name,f_mcf,f_line,unit_row,unit_cnt,line_s,unit_row_cnt,mc_row,line_cnt,
+ semicol_cnt,info_cnt,info_s,filter_n,order,min_s,min_n,par_cnt,key_cnt,var_n,info_s,
+ sign_at,sign_n,filter_tag,filter_var,filter_sign,filter_cnt,filter_p,temp_s,par_s,
+ at_colon,at_equal,at_less,at_greater,at_n,info_cnt;
+ string line_s[][],sort_s[],par_s[],sort_all[],key_s[],filter_s[],filter_tag[],filter_var[],
+ info_s[],file_name_input,temp_s,min_s;
+ numeric unit_row_cnt[],order[],order_tbl[],filter_sign[],filter_p[];
+ unit_row:=f_mcf:=mc_row:=line_cnt:=info_cnt:=par_cnt:=key_cnt:=filter_cnt:=0;
unit_cnt:=1;
- for list=s: par_cnt:=par_cnt+1; par_list[par_cnt]:=list; endfor
%------------------------------------------------------------------------------------------------
file_name_input:=default_data_file;
file_name_output:=default_temp_file;
%------------------------------------------------------------------------------------------------
- for j=1 upto par_cnt:
- at_colon:=scan_char(":",par_list[j],0,1);
- at_equal:=scan_char("=",par_list[j],0,1);
- at_less:=scan_char("<",par_list[j],0,1);
- at_greater:=scan_char(">",par_list[j],0,1);
+ for list=s:
+ at_colon:=scan_char(":",list,0,1);
+ at_equal:=scan_char("=",list,0,1);
+ at_less:=scan_char("<",list,0,1);
+ at_greater:=scan_char(">",list,0,1);
%---------------------------------------------------------------------------------------------
if at_colon>=2: sign_at:=at_colon; sign_n:=0; at_n:=1;
ef at_equal>=2: if (at_equal-1)=at_less: sign_at:=at_equal; sign_n:=5; at_n:=2;
@@ -2108,12 +2124,18 @@
else: sign_at:=at_greater; sign_n:=4; at_n:=1; fi
ef at_less>=2: sign_at:=at_less; sign_n:=3; at_n:=1;
fi
- tag_s:=substring (0,sign_at-at_n) of par_list[j];
- var_s:=substring (sign_at,length(par_list[j])) of par_list[j];
+ tag_s:=substring (0,sign_at-at_n) of list;
+ var_s:=substring (sign_at,length(list)) of list;
%---------------------------------------------------------------------------------------------
if sign_n=0:
- if tag_s="i": file_name_input:=var_s;
- ef tag_s="o": file_name_output:=var_s;
+ if tag_s="f":
+ if scan_char(".",var_s,0,1)=0: file_name_input:=var_s&".mcf";
+ else: file_name_input:=var_s;
+ fi
+ ef tag_s="o":
+ if scan_char(".",var_s,0,1)=0: file_name_output:=var_s&".aux";
+ else: file_name_output:=var_s;
+ fi
ef tag_s="s": key_cnt:=key_cnt+1; key_s[key_cnt]:=var_s;
fi
%---------------------------------------------------------------------------------------------
@@ -2121,12 +2143,12 @@
filter_cnt:=filter_cnt+1;
filter_tag[filter_cnt]:=tag_s;
filter_sign[filter_cnt]:=sign_n;
- if (sign_n>=3)and(is_num(var_s)=1): filter_var[filter_cnt]:=fix_n(var_s);
+ if (sign_n>=3)and(is_num(var_s)=1): filter_var[filter_cnt]:=fix_num(var_s);
else: filter_var[filter_cnt]:=var_s;
fi
fi
endfor
- %------------------------------------------------------------------------------------------------
+ %-----------------------------------------------------------------------------------------------
forever:
temps:=readfrom file_name_input; exitif temps=EOF;
if subc(1,temps)<>"%":
@@ -2136,51 +2158,61 @@
ef (subc(1,temps)="+")and(subc(2,temps)="-"):
unit_row_cnt[unit_cnt]:=unit_row;
f_mcf:=unit_row:=0;
+ filter_n:=1;
+ for i=1 upto filter_cnt: filter_p[i]:=0; endfor
+ for i=1 upto key_cnt: sort_s[i]:=""; endfor
+ %---------------------------------------------------------------------------------------
+ for i=1 upto info_cnt:
+ at_colon:=scan_char(":",info_s[i],0,1);
+ tag_s:=substring (0,at_colon-1) of info_s[i];
+ var_s:=substring (at_colon,length(info_s[i])) of info_s[i];
+ %-------------------------------------------------------------------------------------
+ for j=1 upto key_cnt:
+ if key_s[j]=tag_s:
+ if is_num(var_s)=1: sort_s[j]:=fix_num(var_s); else: sort_s[j]:=var_s; fi
+ fi
+ endfor
+ %-------------------------------------------------------------------------------------
+ for j=1 upto filter_cnt:
+ if filter_tag[j]=tag_s:
+ filter_p[j]:=1;
+ if (filter_sign[j]>=3)and(is_num(var_s)=1): temp_s:=fix_num(var_s);
+ else: temp_s:=var_s;
+ fi
+ if filter_sign[j]=1: if not(temp_s= filter_var[j]): filter_n:=0; fi
+ ef filter_sign[j]=2: if not(temp_s<>filter_var[j]): filter_n:=0; fi
+ ef filter_sign[j]=3: if not(temp_s< filter_var[j]): filter_n:=0; fi
+ ef filter_sign[j]=4: if not(temp_s> filter_var[j]): filter_n:=0; fi
+ ef filter_sign[j]=5: if not(temp_s<=filter_var[j]): filter_n:=0; fi
+ ef filter_sign[j]=6: if not(temp_s>=filter_var[j]): filter_n:=0; fi
+ fi
+ fi
+ endfor
+ endfor
+ for i=1 upto filter_cnt: if filter_p[i]=0: filter_n:=0; fi endfor
+ %-------------------------------------------------------------------------------------
+ sort_all[unit_cnt]:="";
+ for j=1 upto key_cnt:
+ if j=key_cnt: sort_all[unit_cnt]:=sort_all[unit_cnt]&sort_s[j];
+ else: sort_all[unit_cnt]:=fix_str(15,sort_s[1]);
+ fi
+ endfor
+ %-------------------------------------------------------------------------------------
+ info_cnt:=0;
if filter_n=1: unit_cnt:=unit_cnt+1; fi
+ %-------------------------------------------------------------------------------------
ef (subc(1,temps)<>"+")and(subc(1,temps)<>"%"):
if f_mcf=1: mc_row:=mc_row+1;
else:
- semicol_cnt:=count_char(";",temps);
- inf_num:=semicol_cnt+1;
- filter_n:=1;
- %---------------------------------------------------------------------------------------
- for i=1 upto inf_num:
- if i<=semicol_cnt: info_s:=substring (at_semicol[i-1],at_semicol[i]-1) of temps;
- else: info_s:=substring (at_semicol[semicol_cnt],length(temps)) of temps;
+ semicol_cnt:=count_semicol(temps);
+ for i=1 upto semicol_cnt+1:
+ info_cnt:=info_cnt+1;
+ if i<=semicol_cnt:
+ info_s[info_cnt]:=substring (at_semicol[i-1],at_semicol[i]-1) of temps;
+ else:
+ info_s[info_cnt]:=substring (at_semicol[semicol_cnt],length(temps)) of temps;
fi
- at_colon:=scan_char(":",info_s,0,1);
- tag_s:=substring (0,at_colon-1) of info_s;
- var_s:=substring (at_colon,length(info_s)) of info_s;
- %-------------------------------------------------------------------------------------
- for j=1 upto key_cnt:
- if key_s[j]=tag_s:
- if is_num(var_s)=1: sort_s[j]:=fix_n(var_s); else: sort_s[j]:=var_s; fi
- fi
- endfor
- %-------------------------------------------------------------------------------------
- for j=1 upto filter_cnt:
- if filter_tag[j]=tag_s:
- if (filter_sign[j]>=3)and(is_num(var_s)=1): temp_s:=fix_n(var_s);
- else: temp_s:=var_s;
- fi
- if filter_sign[j]=1: if not(temp_s= filter_var[j]): filter_n:=0; fi
- ef filter_sign[j]=2: if not(temp_s<>filter_var[j]): filter_n:=0; fi
- ef filter_sign[j]=3: if not(temp_s< filter_var[j]): filter_n:=0; fi
- ef filter_sign[j]=4: if not(temp_s> filter_var[j]): filter_n:=0; fi
- ef filter_sign[j]=5: if not(temp_s<=filter_var[j]): filter_n:=0; fi
- ef filter_sign[j]=6: if not(temp_s>=filter_var[j]): filter_n:=0; fi
- fi
- fi
- endfor
endfor
- %-------------------------------------------------------------------------------------
- sort_all[unit_cnt]:="";
- for j=1 upto key_cnt:
- if j=key_cnt: sort_all[unit_cnt]:=sort_all[unit_cnt]&sort_s[j];
- else: sort_all[unit_cnt]:=fix_s(15,sort_s[1]);
- fi
- endfor
- %-------------------------------------------------------------------------------------
fi
fi
fi
@@ -2206,7 +2238,7 @@
endgroup;
enddef;
%=============================================================================================
-vardef fix_s(expr n,s)=
+vardef fix_str(expr n,s)=
save temp_s;
string temp_s;
if length(s)<n: temp_s:=s&substring(0,n-length(s)) of blank_str;
@@ -2215,7 +2247,7 @@
temp_s
enddef;
%---------------------------------------------------------------------------------------------
-vardef fix_n(expr s)=
+vardef fix_num(expr s)=
save temp_s,at_dot;
string temp_s;
temp_s:=s;
@@ -2235,4 +2267,11 @@
endfor
numeric_n
enddef;
+%--------------------------------------------------------------------------------------------------
+vardef count_semicol(expr s)=
+ save nS;
+ nS:=at_semicol[0]:=0;
+ for i=1 upto length(s): if subc(i,s)=";": nS:=nS+1; at_semicol[nS]:=i; fi endfor
+ nS
+enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Modified: trunk/Master/texmf-dist/tex/latex/mcf2graph/mcf_setup.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/mcf2graph/mcf_setup.sty 2021-09-20 20:03:51 UTC (rev 60564)
+++ trunk/Master/texmf-dist/tex/latex/mcf2graph/mcf_setup.sty 2021-09-20 20:04:12 UTC (rev 60565)
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf_setup.sty for input aux file by Akira Yamaji 2021.05.05
+% mcf_setup.sty for input aux file by Akira Yamaji 2021.09.20
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%------------------------------------
\edef\@J{J} \edef\Job{}% 1
@@ -27,6 +27,8 @@
%------------------------------------
\edef\@EXA{EXA} \edef\EXA{}% 19
\edef\@EXB{EXB} \edef\EXB{}% 20
+%------------------------------------
+\edef\@Cat{Cat} \edef\Cat{}% 21
%---------------------------------------------------------------------------
\edef\@pk{pk}%
\edef\@mps{mps}%
@@ -69,6 +71,7 @@
\ifx\@tag\@EXA\edef\EXA{\@var}\fi% 19
\ifx\@tag\@EXB\edef\EXB{\@var}\fi% 20
%----------------------------------------
+ \ifx\@tag\@Cat\edef\Cat{\@var}\fi% 21
\fi%
}%
%-----------------------------------------------------------------------------
More information about the tex-live-commits
mailing list.