summaryrefslogtreecommitdiff
path: root/graphics/mcf2graph
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-08-11 03:01:02 +0000
committerNorbert Preining <norbert@preining.info>2020-08-11 03:01:02 +0000
commitc61c8a61c19de450cc1b0fe5010769090a42740b (patch)
treec5b3251600afccb5b21413c1b0b506efa5879788 /graphics/mcf2graph
parent37ce19e9251a5b38afadffc633acc6b03f03cc48 (diff)
CTAN sync 202008110301
Diffstat (limited to 'graphics/mcf2graph')
-rw-r--r--graphics/mcf2graph/CHANGELOG7
-rw-r--r--graphics/mcf2graph/README19
-rw-r--r--graphics/mcf2graph/mcf2graph.mf57
-rw-r--r--graphics/mcf2graph/mcf_exa_soc.mf18
-rw-r--r--graphics/mcf2graph/mcf_example.pdfbin289530 -> 306240 bytes
-rw-r--r--graphics/mcf2graph/mcf_example.tex91
-rw-r--r--graphics/mcf2graph/mcf_man_soc.mf8
-rw-r--r--graphics/mcf2graph/mcf_manual.pdfbin569071 -> 576529 bytes
-rw-r--r--graphics/mcf2graph/mcf_manual.tex193
-rw-r--r--graphics/mcf2graph/mcf_mplib_exa.pdfbin153581 -> 201822 bytes
-rw-r--r--graphics/mcf2graph/mcf_mplib_exa.tex4
-rw-r--r--graphics/mcf2graph/mcf_setup.sty75
12 files changed, 256 insertions, 216 deletions
diff --git a/graphics/mcf2graph/CHANGELOG b/graphics/mcf2graph/CHANGELOG
index 0bc2c7e8dd..e314506053 100644
--- a/graphics/mcf2graph/CHANGELOG
+++ b/graphics/mcf2graph/CHANGELOG
@@ -1,6 +1,11 @@
*******************************************************************************
- Changelog of mcf2graph software package by Akira Yamaji 2020-07-26
+ Changelog of mcf2graph software package by Akira Yamaji 2020-08-10
*******************************************************************************
+[ver. 4.51 / 2020-08-10]
+ -improve aux file output,input
+ -add style file mcf_setup.sty
+ -update MCF manual,example
+
[ver. 4.50 / 2020-07-26]
-fix bug in function add()
-delete file mcf_man_soc-064.mps
diff --git a/graphics/mcf2graph/README b/graphics/mcf2graph/README
index 1ade6632aa..016dcd6c04 100644
--- a/graphics/mcf2graph/README
+++ b/graphics/mcf2graph/README
@@ -1,7 +1,7 @@
********************************************************************************
mcf2graph : Convert Molecular Coding Format to graphics with METAFONT/METAPOST
Author : Akira Yamaji
- version : 4.50 2020-07-26
+ version : 4.51 2020-08-10
E-mail : mcf2graph@gmail.com
Located at : http://www.ctan.org/pkg/mcf2graph
********************************************************************************
@@ -18,16 +18,17 @@
( 1) README This file
( 2) CHANGELOG Changelog file of mcf2graph
( 3) mcf2graph.mf Macro of Metafont / Metapost
- ( 4) mcf_manual.tex MCF syntax manual(LaTeX file)
- ( 5) mcf_man_soc.mf Molecular difinition file for mcf_manual.tex
- ( 6) mcf_manual.pdf PDF of (4) (used pdftex(LaTeX))
- ( 7) mcf_example.tex LaTeX example,
+ ( 4) mcf_setup.sty Style file for aux file input
+ ( 5) mcf_manual.tex MCF syntax manual(LaTeX file)
+ ( 6) mcf_man_soc.mf Molecular difinition file for mcf_manual.tex
+ ( 7) mcf_manual.pdf PDF of (4) (used pdftex(LaTeX))
+ ( 8) mcf_example.tex LaTeX example,
Make file 'mcf_exa_soc-info.aux' before typeset
>mpost -s ahlength=1 mcf_exa_soc.mf
- ( 8) mcf_exa_soc.mf Molecular difinition file for mcf_example.tex
- ( 9) mcf_example.pdf PDF of (8) (used pdftex(LaTeX))
- (10) mcf_mplib_exa.tex luamplib(LuaLaTeX) example
- (11) mcf_example.pdf PDF of (11) typeset with LuaTeX(LuaLaTeX)
+ ( 9) mcf_exa_soc.mf Molecular difinition file for mcf_example.tex
+ (10) mcf_example.pdf PDF of (8) (used pdftex(LaTeX))
+ (11) mcf_mplib_exa.tex luamplib(LuaLaTeX) example
+ (12) mcf_example.pdf PDF of (11) typeset with LuaTeX(LuaLaTeX)
3. How to use mcf2graph with Metapost
Minimum requirement to run mcf2graph : mpost.exe,mpost.dll,mpost.mp,plain.mp
diff --git a/graphics/mcf2graph/mcf2graph.mf b/graphics/mcf2graph/mcf2graph.mf
index 5a4802cb48..6011d247e6 100644
--- a/graphics/mcf2graph/mcf2graph.mf
+++ b/graphics/mcf2graph/mcf2graph.mf
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 4.50 Copyright (c) 2013-2020 Akira Yamaji
+% mcf2graph ver 4.51 Copyright (c) 2013-2020 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,
@@ -51,9 +51,11 @@ path arrow_path,dottedline_path,line_path,arrow_head;
char_num:=str_cnt:=proc_end:=mangle:=sw_label_emu:=sw_calc:=sw_ext_all:=0;
sw_numberA:=sw_numberB:=sw_aux_out:=sw_expand:=sw_fframe:=sw_mframe:=sw_aframe:=sw_trimming:=0;
sw_rep_out:=sw_mol_out:=sw_group_off:=sw_single:=sw_arrow:=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
+numberA_start:=numberB_start:=1; numberA_end:=numberB_end:=4095;
+%-------------------------------------------------------------------------------------------------
+aux_max:=max_inf_num:=20;
+aux_delimiter:=";";
+for i=1 upto aux_max: var[i]:=tag[i]:=""; endfor
%=================================================================================================
if (known green)and(known ahlength):
f_MP:=1;
@@ -124,7 +126,7 @@ fi
clearit;
%--------------------------------------------------------------------------------------------------
message "---------------------------------------------";
-message "This is mcf2graph ver 4.50 2020.07";
+message "This is mcf2graph ver 4.51 2020.08";
if f_MP=1:
if bboxmargin=0: message "output no image file";
elseif bboxmargin=1: message "output first font only";
@@ -242,7 +244,7 @@ def beginfont(text s)=
begingroup
save cntA,cntB,cntM,minX,minY,f_beginchar,numS,sftX,sftY,f_ext,blen,ext,add,
cal_FM,cal_MW,cal_MW_str,cal_MI,cal_MI_str,wdM,htM,
- inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW,
+ inf_NO,inf_EN,inf_JN,inf_MW,inf_MI,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,
posA,posM,lineB,sB,eB,angB,angA,wdA,dxA,lenB,ang_br,info;
numeric lineB[],sB[],eB[],angB[],angA[],lenB[],angX[],numS[],wdM[],htM[],wdA[],dxA[];
pair posA[],posM[][];
@@ -252,8 +254,8 @@ def beginfont(text s)=
def ext=ext_to_font enddef;
def add=add_to_molecule enddef;
%------------------------------------------------------------------------------------------------
- inf_NO:=inf_EN:=inf_JN:=inf_FM:=inf_CAS:=inf_USE:=inf_EXA:=inf_EXB:=inf_MW:="";
- cal_MW:=cal_MW_str:=cal_FM:="";
+ inf_NO:=inf_EN:=inf_JN:=inf_MW:=inf_FM:=inf_CAS:=inf_USE:=inf_EXA:=inf_EXB:="";
+ cal_MW:=cal_MW_str:=cal_MI:=cal_MI_str:=cal_FM:="";
%------------------------------------------------------------------------------------------------
char_num:=char_num+1;
store_par(parameter_list);
@@ -531,9 +533,9 @@ enddef;
%--------------------------------------------------------------------------------------------------
def add_to_molecule(text TXT)=
begingroup
- save w,h,n,l,p,am,aw,A,B,plus,minus,lonepair,**,<<,/*;
+ save w,h,n,l,p,am,aw,A,B,plus,minus,lonepair,__,**,=>,<<,/*;
numeric A[]dir,B[]up,A[]ang,B[]ang;
- pair p[],A[],B[]s,B[]e,B[]m,A[]up,A[]left,A[]right,A[]down,B[]up,B[]left,B[]right,B[]down;
+ pair __,p[],A[],B[]s,B[]e,B[]m,A[]up,A[]left,A[]right,A[]down,B[]up,B[]left,B[]right,B[]down;
path B[];
ext_setup;
def plus = circled_plus_add enddef;
@@ -541,7 +543,10 @@ def add_to_molecule(text TXT)=
def lonepair = lone_pair_add enddef;
let ** = scaled;
let << = rotated;
+ let => = shifted;
+ __ = (1,0);
primarydef a /* b = point b of a enddef;
+ %----------------------------------------------
w:=mol_wd; h:=mol_ht; l:=blen; aw:=atom_wd;
p0:=(minX,minY);
An:=cntA; Bn:=cntB;
@@ -565,8 +570,14 @@ enddef;
%--------------------------------------------------------------------------------------------------
def ext_to_font(text TXT)=
begingroup
- save w,h,wd,ht,n,p,am,aw;
- pair p[];
+ save w,h,wd,ht,n,p,am,aw,__,**,<<,=>,/*;
+ pair __,p[];
+ let ** = scaled;
+ let << = rotated;
+ let => = shifted;
+ primarydef a /* b = point b of a enddef;
+ __ = (1,0);
+ %----------------------------------------------------------------------
ext_setup;
w:=xpart(fsize);
h:=ypart(fsize);
@@ -1595,17 +1606,29 @@ enddef;
def proc_auxfile_out=
message "["&decimal(char_num)&"]:"&inf_EN;
out_file_name:=out_file_aux;
+ %--------------------------------------------------------------------------------------
if (char_num=1)and(sw_aux_out=2):
- printf tag[1] for i=2 upto aux_max: exitif tag[i]=""; &";"&tag[i] endfor ;
+ printf tag[1] for i=2 upto aux_max: exitif tag[i]=""; &aux_delimiter&tag[i] endfor ;
fi
+ %--------------------------------------------------------------------------------------
for i=1 upto aux_max: exitif tag[i]="";
if i=1: printf "" else: &aux_delimiter fi
- if sw_aux_out=1: &tag[i]&":" fi &
- if string scantokens(var[i]): scantokens(var[i])
- elseif numeric scantokens(var[i]): decimal(scantokens(var[i]))
+ if sw_aux_out=1: &tag[i]&":" fi
+ if tag[i]="F": & jobname
+ elseif tag[i]="C": & decimal(char_num)
+ elseif tag[i]="mw": & cal_MW
+ elseif tag[i]="fm": & cal_FM
+ elseif tag[i]="mi": & cal_MI
+ elseif tag[i]="w": & decimal(xpart(fsize))
+ elseif tag[i]="h": & decimal(ypart(fsize))
+ elseif tag[i]="w1": & decimal(mol_wd)
+ elseif tag[i]="h1": & decimal(mol_ht)
+ elseif tag[i]="An": & decimal(cntA)
+ elseif tag[i]="Bn": & decimal(cntB)
+ else:
fi
endfor
- if sw_aux_out=1: for i=1 upto inf_num: &aux_delimiter&info[i] endfor; fi
+ if (sw_aux_out=1)or(sw_aux_out=3): for i=1 upto inf_num: &aux_delimiter&info[i] endfor; fi
enddef;
%==================================================================================================
vardef round_auto(expr n)=
diff --git a/graphics/mcf2graph/mcf_exa_soc.mf b/graphics/mcf2graph/mcf_exa_soc.mf
index 9c4a023839..f2a973c7cf 100644
--- a/graphics/mcf2graph/mcf_exa_soc.mf
+++ b/graphics/mcf2graph/mcf_exa_soc.mf
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2020.07.26
+% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2020.08.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf; %%% it must be version 4.50 or later
+input mcf2graph.mf; %%% it must be version 4.51 or later
%-------------------------------------------------------------------------
fsize:=(33mm,24mm);
max_blength:=4.5mm;
@@ -11,16 +11,10 @@ max_blength:=4.5mm;
%%%%sw_aframe:=1;
%%%%sw_mframe:=1;
%%%%sw_expand:=1;
-var3:="cal_FM"; tag3:="cFM";
-var4:="cal_MW"; tag4:="cMW";
-%%%% outputtemplate:="%3c-%j.png";
-%%%% var3:="mol_wd"; tag3:="mWD";
-%%%% var4:="mol_ht"; tag4:="mHT";
-%%%% var5:="cal_MW"; tag5:="cMW";
-%%%% var6:="cal_MI"; tag6:="cMI";
-%%%% var7:="cal_FM"; tag7:="cFM";
-%%%% var8:="inf_USE"; tag8:="USE";
-%%%% var9:="inf_EXA"; tag9:="EXA";
+tag1:="F"; tag2:="C"; tag3:="fm"; tag4:="mw";
+%%%%tag5:="mi";
+%%%%tag6:="w1";
+%%%%tag7:="h1";
%%%% sw_rep_out:=1;
%%%% sw_mol_out:=1;
%%%% atomfont:="uhvb8r";
diff --git a/graphics/mcf2graph/mcf_example.pdf b/graphics/mcf2graph/mcf_example.pdf
index 3dc4e44d11..709aff0809 100644
--- a/graphics/mcf2graph/mcf_example.pdf
+++ b/graphics/mcf2graph/mcf_example.pdf
Binary files differ
diff --git a/graphics/mcf2graph/mcf_example.tex b/graphics/mcf2graph/mcf_example.tex
index 871b00e1b5..fcbacc1ec8 100644
--- a/graphics/mcf2graph/mcf_example.tex
+++ b/graphics/mcf2graph/mcf_example.tex
@@ -1,8 +1,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2019.12.13
+% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2020.08.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper]{article}
\usepackage{graphicx}
+%---------------------
+\usepackage{mcf_setup}
+%---------------------
\pagestyle{empty}
\topmargin=-20mm
\oddsidemargin=-12mm
@@ -15,61 +18,14 @@
\newbox \@stringbox%
\newcount \fontnum%
\newcount \tnum%
+\tnum=0%
+\font\labelM=cmtt8 at 6pt\relax%
+%-------------------------------------------------------------------------------
\newif\ifCONT@%
\newread\@auxf%
-%-------------------------------------------------------------------------------
-\def\mol@sel#1{%
-\if#1\empty\relax\else%
- \edef\@tag{\expandafter\@fst@param#1;}%
- \edef\@var{\expandafter\@sec@param#1;}%
- \ifx\@tag\@F\edef\MOLfile{\@var}\fi \ifx\@tag\@C\edef\MOLchar{\@var}\fi%
- \ifx\@tag\@Lx\edef\MOLlenx{\@var}\fi \ifx\@tag\@Ly\edef\MOLleny{\@var}\fi%
- \ifx\@tag\@EN\edef\MOLnameE{\@var}\fi \ifx\@tag\@JN\edef\MOLnameJ{\@var}\fi%
- \ifx\@tag\@CAS\edef\MOLcas{\@var}\fi \ifx\@tag\@USE\edef\MOLuse{\@var}\fi%
- \ifx\@tag\@FM\edef\MOLfm{\@var}\fi \ifx\@tag\@cFM\edef\CALfm{\@var}\fi%
- \ifx\@tag\@MW\edef\MOLmw{\@var}\fi \ifx\@tag\@cMW\edef\CALmw{\@var}\fi%
- \ifx\@tag\@logP\edef\MOLlogP{\@var}\fi \ifx\@tag\@EXA\edef\MOLextA{\@var}\fi%
- \ifx\@tag\@EXB\edef\MOLextB{\@var}\fi \ifx\@tag\@NO\edef\MOLnum{\@var}\fi\fi}%
-%-------------------------------------------------------------------------------
-\def\@F{F}\def\@C{C}\def\@EN{EN}\def\@JN{JN}\def\@CAS{CAS}%
-\def\@MW{MW}\def\@cMW{cMW}\def\@FM{FM}\def\@cFM{cFM}\def\@Lx{Lx}\def\@Ly{Ly}%
-\def\@NO{NO}\def\@USE{USE}\def\@logP{logP}\def\@EXA{EXA}\def\@EXB{EXB}%
-%-------------------------------------------------------------------------------
-\def\@fst@param#1:#2;{#1}\def\@sec@param#1:#2;{#2}%
-\def\@stru#1[#2]{\font\@strufont=#1\relax\hbox{\@strufont\char#2}}%
-%-------------------------------------------------------------------------------
-\font\labelM=cmtt8 at 6pt%
-\def\put@char{%
- \unitlength=0.01mm\relax \@tempcnta=3300\relax \@tempcntb=3750\relax%
- \begin{picture}(\@tempcntb,\@tempcnta)%
- \advance\@tempcnta -300\relax%
- \put(20,\@tempcnta){\footnotesize\bf [\the\fontnum] \MOLnameE}%
- \advance\@tempcnta -250\relax%
- \put(20,\@tempcnta){\labelM MW:\CALmw { / }FM:\CALfm}%
- \advance\@tempcnta -220\relax%
- \put(20,\@tempcnta){\labelM MW:\MOLmw(data)}%
- \put( 0,0){\makebox(\@tempcntb,\@tempcnta){\@stru{\MOLfile}[\MOLchar]}}%
- \end{picture}%
-}
-%-------------------------------------------------------------------------------
-% modified latex2e kernel program control (@for delimiter ','=>';')
-\def\@sfor#1#2{\expandafter\def\expandafter\@tmp\expandafter{#1}%
- \ifx\@tmp\@empty\else\expandafter\@rep#1;\@nil;\@@\@list{#2}\fi}%
-\def\@rep#1;#2\@@#3#4{\def#3{#1}\ifx#3\@nnil%
- \expandafter\@fornoop\else#4\relax\expandafter\@rep\fi#2\@@#3{#4}}%
-%-------------------------------------------------------------------------------
-\def\inputINFOS#1{\openin\@auxf=#1\CONT@true%
-\loop
-\read\@auxf to \@info%
-\ifeof\@auxf\CONT@false\else\@sfor\@info{\mol@sel\@list}%
- \put@char%
- \advance\fontnum\@ne\relax\advance\tnum\@ne\relax%
- \ifnum\tnum=5 \\ \tnum=0\relax \fi%
-\fi%
-\ifCONT@ \repeat
-\closein\@auxf}%
-%-------------------------------------------------------------------------------
-\makeatother
+%------------------------------------------------------------------------
+\fontnum=1%
+\unitlength=0.01mm%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{center}
@@ -79,10 +35,31 @@
\end{center}
{\small ** FM:Molecular formula calculated by mcf2graph \quad
** MW:Molecular weight calculated by mcf2graph}\vspace{3mm}\\
-\fontnum=1%
-\noindent%
%------------------------------------------------------------------------
-\inputINFOS{mcf_exa_soc-info.aux}%
+\noindent%
+\openin\@auxf=mcf_exa_soc-info.aux%
+\CONT@true%
+\loop%
+\read\@auxf to \@info%
+\ifeof\@auxf\CONT@false\else\@sfor\@info{\tag@var\@list}%
+ %------------------------------------------------------------
+ \begin{picture}(3750,3300)%
+ \put(20,3000){\footnotesize\bf \the\fontnum:\EN}%
+ \put(20,2750){\labelM MW:\mw { / }FM:\fm}%
+ \put(20,2530){\labelM MW:\MW(data)}%
+ \put( 0,0){%
+ \makebox(3750,2530){%
+ \font\@strufont=\File\relax\hbox{\@strufont\char\Char}%
+ }%
+ }%
+ \end{picture}%
+ %------------------------------------------------------------
+ \advance\fontnum1\relax%
+ \advance\tnum1\relax%
+ \ifnum\tnum=5 \\ \tnum=0 \fi%
+\fi%
+\ifCONT@ \repeat%
+\closein\@auxf%
%------------------------------------------------------------------------
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/graphics/mcf2graph/mcf_man_soc.mf b/graphics/mcf2graph/mcf_man_soc.mf
index dfc1cdc1a7..e2ff60943e 100644
--- a/graphics/mcf2graph/mcf_man_soc.mf
+++ b/graphics/mcf2graph/mcf_man_soc.mf
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2020.07.26
+% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2020.08.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf; %% it must be version 4.50 or later
+input mcf2graph.mf; %% it must be version 4.51 or later
%------------------------------------------------------------------------
sw_mframe:=0;
sw_expand:=0;
@@ -984,10 +984,10 @@ beginfont("EN:add() 1")
dotlabel.lft("p0",p0);
dotlabel.rt( "p0+(w,h)",p0+(w,h));
dotlabel.ulft("A1",A1);
- drawarrow A1..A1+(l,0)<<A1ang;
+ drawarrow A1..A1+__*l<<A1ang;
dotlabel.lrt( "B3s",B3s);
dotlabel.rt("B3m",B3m);
- drawarrow B3m..B3m+(l,0)<<(B3ang+90);
+ drawarrow B3m..B3m+__*l<<(B3ang+90);
dotlabel.ulft("A6",A6);
drawarrow A1{A1down}..A6;
dotlabel.urt( "B3e",B3e);
diff --git a/graphics/mcf2graph/mcf_manual.pdf b/graphics/mcf2graph/mcf_manual.pdf
index 04e3d8108e..19f2435a1b 100644
--- a/graphics/mcf2graph/mcf_manual.pdf
+++ b/graphics/mcf2graph/mcf_manual.pdf
Binary files differ
diff --git a/graphics/mcf2graph/mcf_manual.tex b/graphics/mcf2graph/mcf_manual.tex
index 4c15bbafc1..9f33673c13 100644
--- a/graphics/mcf2graph/mcf_manual.tex
+++ b/graphics/mcf2graph/mcf_manual.tex
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format manual by Akira Yamaji 2020.07.26
+% Molecular Coding Format manual by Akira Yamaji 2020.08.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper]{article}
%%%%\documentclass[a4paper,twoside]{article}
@@ -9,6 +9,9 @@
%%%%\usepackage[dvipdfmx]{graphicx}
\usepackage[pdftex]{hyperref}
%%%%\usepackage[dvipdfmx]{hyperref}
+%---------------------
+\usepackage{mcf_setup}
+%---------------------
\hypersetup{colorlinks=true,linkcolor=blue}
\topmargin=-18mm
\textheight=254mm
@@ -19,81 +22,51 @@
\unitlength=1mm%
\makeatletter
%----------------------------------------------------------------------------
-\newcount \fontnum%
-\newcount \tempnum%
+\newcount \fnum%
\newdimen \htman%
\newdimen \wdman%
\newdimen \htmans%
+\newbox \fbox%
%----------------------------------------------------------------------------
-\newcount \MCFformat%
-\newbox \box@strufont%
\htman=45mm%
\wdman=94mm%
\htmans=42mm%
-\fontnum=29%
-\tempnum=1%
+\fnum=29%
%----------------------------------------------------------------------------
\edef\MCFjobname{mcf_man_soc}%
+\edef\@pk{pk}%
%----------------------------------------------------------------------------
-\MCFformat=-1% use pkfont
-%%\MCFformat=0% \includegraphics{jobname-nnn.mps}
-%%\MCFformat=1% \includegraphics[width=wd{jobname-nnn.png}}
-%%\MCFformat=2% \includegraphics{jobname-nnn.svg}
-%%\MCFformat=3% \includegraphics{jobname-nnn.eps}
+\edef\fext{pk}%
+%%\edef\fext{mps}%
+%%\edef\fext{png}%
+%%\edef\fext{svg}%
+%%\edef\fext{eps}%
%----------------------------------------------------------------------------
\font\@strufont=\MCFjobname\relax%
%----------------------------------------------------------------------------
\def\MCFgraph{%
-\ifnum\MCFformat<0{\hspace{5mm}\@strufont\char\fontnum}%
+\ifx\fext\@pk{\hspace{5mm}\@strufont\char\fnum}%
\else%
-\ifnum\MCFformat=0\edef\stru@ext{mps}\fi
-\ifnum\MCFformat=1\edef\stru@ext{png}\fi
-\ifnum\MCFformat=2\edef\stru@ext{svg}\fi
-\ifnum\MCFformat=3\edef\stru@ext{eps}\fi
-%
-\ifnum\fontnum<100%
-\ifnum\fontnum<10\edef\zero@cnt{00}% jobname-00n.ext
-\else\edef\zero@cnt{0}\fi% jobname-0nn.ext
-\else\edef\zero@cnt{}% jobname-nnn.ext
+\ifnum\fnum<10\edef\pre@zero{00}%
+\else\ifnum\fnum<100\edef\pre@zero{0}%
+\else\edef\pre@zero{}\fi\fi%
+\edef\file@name{\MCFjobname-\pre@zero\the\fnum.\fext}%
+\setbox\fbox=\hbox{\@strufont\char\fnum}%
+\hspace{5mm}\includegraphics[width=\wd\fbox,height=\ht\fbox]{\file@name}%
\fi%
-%
-\edef\file@name{\MCFjobname-\zero@cnt\the\fontnum.\stru@ext}%
-%
-\ifnum\MCFformat=1%
-\setbox\box@strufont=\hbox{\@strufont\char\fontnum}%
-\hspace{5mm}\includegraphics[width=\wd\box@strufont]{\file@name}%
-\else%
-\hspace{5mm}\includegraphics\file@name%
-\fi%
-%
-\fi%
-%
-\global\advance\fontnum\@ne\relax%
+\global\advance\fnum\@ne\relax%
}%
%---------------------------------------------------------------------------
-\def\@F{F}\def\@C{C}\def\@EN{EN}\def\@NO{NO}\def\@cMW{cMW}\def\@cFM{cFM}%
-\def\@fst#1:#2;{#1}\def\@sec#1:#2;{#2}%
-\def\mol@sel#1{%
-\if#1\empty\relax\else%
- \edef\@tag{\expandafter\@fst#1;}%
- \edef\@var{\expandafter\@sec#1;}%
- \ifx\@tag\@F\edef\MOLfile{\@var}\fi%
- \ifx\@tag\@C\edef\MOLchar{\@var}\fi%
- \ifx\@tag\@EN\edef\MOLnameE{\@var}\fi%
- \ifx\@tag\@NO\edef\MOLnum{\@var}\fi
- \ifx\@tag\@cMW\edef\CALmw{\@var}\fi
- \ifx\@tag\@cFM\edef\CALfm{\@var}\fi
-\fi}%
\def\put@char{%
- \begin{picture}(84,28)%
- \put(0,23){\bf [\MOLnum]\MOLnameE}%
- \put(5,18){\small\tt FM:\CALfm{ }MW:\CALmw}%
- \put(5,0){\font\@strufont=\MOLfile\relax%
- \hbox{\@strufont\char\MOLchar}}%
+ \begin{picture}(75,28)%
+ \put(0,23){\bf [\NO]\EN}%
+ \put(5,18){\small\tt FM:\fm{ }MW:\mw}%
+ \put(5,0){\font\@strufont=\File\relax%
+ \hbox{\@strufont\char\Char}}%
\end{picture}%
-}
+}%
%----------------------------------------------------------------------------
-\def\INFO#1{\@for\@temp:=#1\do{\mol@sel\@temp}\put@char}%
+\def\INFO#1{\@for\@temp:=#1\do{\tag@var\@temp}\put@char}%
%----------------------------------------------------------------------------
\begin{document}
\title{\Huge\sf Molecular Coding Format manual}
@@ -1353,28 +1326,30 @@ input mcf2graph.mf; % input macro
%-------------------------------------------------------------------------
sw_aux_out:=1; % aux(information) file output on > Global setting
fsize:=(60mm,40mm); % (font width,font height) >
-var3:="cal_MW"; tag3:="cMW"; > AUX file table
-var4:="cal_FM"; tag4:="cFM"; >
+tag1:="F"; > AUX file table
+tag2:="C"; >
+tag3:="mw"; >
+tag4:="fm"; >
%%%% sw_rep_out:=1; > Report output
%%%% sw_mol_out:=1; > MOL file output
outputformat:="png"; hppp:=vppp:=0.1; > PNG output
outputtemplate:="%j-%3c.png"; >
%-------------------------------------------------------------------------
-beginfont("NO:1","EN:Ampicillin") > begin font(information)
+beginfont("N:1","EN:Ampicillin") > begin font(information)
MC(<45,?4,2:N,2=?5,-1:S, > begin MCF (1)
{3^45,4^-45}:/*H,1://O^15,5:/*COOH^-18, >
{6^35,6^-35}:/_, >
4:@,75,NH,!,//O,!,/*NH,!,Ph) > end MCF
endfont > end font
%------------------------------------------------------------------------
-beginfont("NO:2","EN:Cholesterol") > begin font(information)
+beginfont("N:2","EN:Cholesterol") > begin font(information)
MC(<30,?6,{-4,-2}=?6,-4=?5,7=dl, > begin MCF (2)
1:*/OH,{4,12}:*/_^60,9:*/H^60, >
10:/*H^180,{11,-1}:/*H^-60, >
-1:@,17,/*_,!4,/_,!) > end MCF
endfont > end font
%------------------------------------------------------------------------
-beginfont("NO:3","EN:Limonin") > begin font(information)
+beginfont("N:3","EN:Limonin") > begin font(information)
MC(<30,?6,{-3,-4}=?6, > begin MCF (3)
-5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf, >
{13,15,17,20}:O,{3,12,21}://O, >
@@ -1383,7 +1358,7 @@ beginfont("NO:3","EN:Limonin") > begin font(information)
14:\*,|,?5,{1,4}=dl,3:O) > end MCF
endfont > end font
%------------------------------------------------------------------------
-beginfont("NO:4","EN:beta-carotene) > begin font(information)
+beginfont("N:4","EN:beta-carotene) > begin font(information)
MC(<30,?6,3=dl,{3,5^35,5^-35}:/_, > begin MCF (4)
4:\,|,!18,{1,3,5,7,9,11,13,15,17}=dr, >
{3,7,12,16}:/_, >
@@ -1409,42 +1384,39 @@ bye
\end{verbatim}
\paragraph{(Sourse)}
\begin{verbatim}
-beginfont("EN:Ampicillin")(....)
-beginfont("EN:Cholesterol")(....)
-beginfont("EN:Limonin")(....)
-beginfont("EN:beta-Carotene")(....)
+beginfont("EN:Ampicillin") .... endfont
+beginfont("EN:Cholesterol") .... endfont
+beginfont("EN:Limonin") .... endfont
+beginfont("EN:beta-Carotene") .... endfont
\end{verbatim}
\paragraph{(Setting)}
\begin{verbatim}
-tag1:="F"; var1:="jobname"; * default output
-tag2:="C"; var2:="char_num"; * default output
-tag3:="cMW"; var3:="calc_weight";
-tag4:="cFM"; var4:="calc_formula";
+tag1:="F"; tag2:="C"; tag3:="mw"; tag4:="fm";
\end{verbatim}
\paragraph{(Output)}
\begin{verbatim}
(sw_aux_out=1)
-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
-
-(sw_aux_out=2)
-F;C;cMW;cFM;EN
-mcf_man_soc;1;349.40462;C16H19N3O4S;Ampicillin
-mcf_man_soc;2;386.6532;C27H46O;Cholesterol
-mcf_exa_soc;3;470.5113;C26H30O8;Limonin
-mcf_exa_soc;4;536.8722;C40H56;beta-Carotene
-
-(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_man_soc;C:1;mw:349.40462;fm:C16H19N3O4S;EN:Ampicillin
+F:mcf_man_soc;C:2;mw:386.6532;fm:C27H46O;EN:Cholesterol
+F:mcf_exa_soc;C:3;mw:470.5113;fm:C26H30O8;EN:Limonin
+F:mcf_exa_soc;C:4;mw:536.8722;fm:C40H56;EN:beta-Carotene
+
+(sw_aux_out=2 (3))
+F;C;mw;fm(;EN)
+mcf_man_soc;1;349.40462;C16H19N3O4S(;Ampicillin)
+mcf_man_soc;2;386.6532;C27H46O(;Cholesterol)
+mcf_exa_soc;3;470.5113;C26H30O8(;Limonin)
+mcf_exa_soc;4;536.8722;C40H56(;beta-Carotene)
+
+(aux_delimiter="/")
+F:mcf_man_soc/C:1/mw:349.40462/fm:C16H19N3O4S/EN:Ampicillin
+F:mcf_man_soc/C:2/mw:386.6532/fm:C27H46O/EN:Cholesterol
+F:mcf_exa_soc/C:3/mw:470.5113/fm:C26H30O8/EN:Limonin
+F:mcf_exa_soc/C:4/mw:536.8722/fm:C40H56/EN:beta-Carotene
\end{verbatim}
\paragraph{(Tag)}
\begin{verbatim}
-F : filename
+F : filename
C : char number
NO : serial number
EN : english name
@@ -1452,9 +1424,11 @@ JN : japanese name
FM : formula from literature data
MW : molecular weight from literature data
USE : the use
-cMW : molecular weight calculated
-cMI : monoisotopic mass calculated
-cFM : molecular formula calculated
+mw : molecular weight calculated
+mi : monoisotopic mass calculated
+fm : molecular formula calculated
+w : font width
+h : font height
\end{verbatim}
%------------------------------------------------------------------------
\newpage
@@ -1592,7 +1566,7 @@ M END
%--------------------------------------------------------------------
\begin{mplibcode}
fsize:=(50mm,50mm);
- beginfont("NO:2","EN:Limonin","MW:470.51")
+ beginfont("NO:1","EN:Limonin","MW:470.51")
MC(<30,
?6,{-3,-4}=?6,
-5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf,
@@ -1606,7 +1580,7 @@ M END
%--------------------------------------------------------------------
\begin{mplibcode}
fsize:=(80mm,50mm);
- beginfont("NO:3","EN:beta-carotene","MW:536.87")
+ beginfont("NO:2","EN:beta-carotene","MW:536.87")
MC(<30,
?6,3=dl,{3,5^35,5^-35}:/_,
4:\,|,!18,{1,3,5,7,9,11,13,15,17}=dr,
@@ -1618,7 +1592,7 @@ M END
%--------------------------------------------------------------------
\begin{mplibcode}
fsize:=(50mm,50mm);
- beginfont("NO:4","EN:Gibberellin A3","MW:346.37");
+ beginfont("NO:3","EN:Gibberellin A3","MW:346.37");
MC(<18,?5,3=?7,5=?6[12],
8:@,160`1.3,3:#,13=dl,6=wf,8=wb,
5:@,40~zf`1,O,60,//O^180,14~zb:#,
@@ -1640,41 +1614,32 @@ endfont;
%--------------------------------------------------------------------
\documentclass[a4paper]{article}
\usepackage{graphicx}
+%---------------------
+\usepackage{mcf_setup}
+%---------------------
\pagestyle{empty}
\makeatletter%
%--------------------------------------------------------------------
-\def\@F{F}\def\@C{C}\def\@EN{EN}\def\@NO{NO}\def\@MW{MW}\def\@FMc{FMc}%
-\def\@fst@param#1:#2;{#1}\def\@sec@param#1:#2;{#2}%
-\def\mol@sel#1{%
-\if#1\empty\relax\else%
- \edef\@tag{\expandafter\@fst@param#1;}%
- \edef\@var{\expandafter\@sec@param#1;}%
- \ifx\@tag\@F\edef\MOLfile{\@var}\fi%
- \ifx\@tag\@C\edef\MOLchar{\@var}\fi%
- \ifx\@tag\@EN\edef\MOLnameE{\@var}\fi%
- \ifx\@tag\@NO\edef\MOLnum{\@var}\fi
- \ifx\@tag\@MW\edef\CALmw{\@var}\fi
- \ifx\@tag\@FMc\edef\CALfm{\@var}\fi
-\fi}%
\def\put@char{%
\begin{picture}(84,42)%
- \put(0,38){\bf [\MOLnum]\MOLnameE{ }\small\tt/FM:\CALfm/MW:\CALmw}%
- \put(10,0){\font\@strufont=\MOLfile\relax%
- \hbox{\@strufont\char\MOLchar}}%
+ \put(0,38){\bf [\MOLnum]\EN{ }\small\tt/FM:\fm/MW:\mw}%
+ \put(10,0){\font\@strufont=\File\relax%
+ \hbox{\@strufont\char\Char}}%
\end{picture}%
-\def\INFO#1{\@for\@temp:=#1\do{\mol@sel\@temp}\put@char}%
+}%
+\def\INFO#1{\@for\@temp:=#1\do{\tag@var\@temp}\put@char}%
\makeatother
%--------------------------------------------------------------------
\begin{document}
\unitlength=1mm%
-\INFO{F:mcf_man_soc,C:138,NO:1,cMW:349.40462,cFM:C16H19N3O4S,EN:Ampicillin}%
-\INFO{F:mcf_man_soc,C:139,NO:2,cMW:386.6532,cFM:C27H46O,EN:Cholesterol}%
+\INFO{F:mcf_man_soc,C:138,NO:1,mw:349.40462,fm:C16H19N3O4S,EN:Ampicillin}%
+\INFO{F:mcf_man_soc,C:139,NO:2,mw:386.6532,fm:C27H46O,EN:Cholesterol}%
\end{document}
%--------------------------------------------------------------------
\end{verbatim}%
%############################################################################
%------------------------------------------------------------------------
-\INFO{F:mcf_man_soc,C:138,NO:1,cMW:349.40462,cFM:C16H19N3O4S,EN:Ampicillin}%
-\INFO{F:mcf_man_soc,C:139,NO:2,cMW:386.6532,cFM:C27H46O,EN:Cholesterol}%
+\INFO{F:mcf_man_soc,C:138,NO:1,mw:349.40462,fm:C16H19N3O4S,EN:Ampicillin}%
+\INFO{F:mcf_man_soc,C:139,NO:2,mw:386.6532,fm:C27H46O,EN:Cholesterol}%
%------------------------------------------------------------------------
\end{document}
diff --git a/graphics/mcf2graph/mcf_mplib_exa.pdf b/graphics/mcf2graph/mcf_mplib_exa.pdf
index 00a5684ce2..3275834c6b 100644
--- a/graphics/mcf2graph/mcf_mplib_exa.pdf
+++ b/graphics/mcf2graph/mcf_mplib_exa.pdf
Binary files differ
diff --git a/graphics/mcf2graph/mcf_mplib_exa.tex b/graphics/mcf2graph/mcf_mplib_exa.tex
index 8de170b935..e6fc0eb02d 100644
--- a/graphics/mcf2graph/mcf_mplib_exa.tex
+++ b/graphics/mcf2graph/mcf_mplib_exa.tex
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2020.07.26
+% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2020.08.10
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% mcf2graph.mf it must be version 4.50 or later
+%%% mcf2graph.mf it must be version 4.51 or later
\documentclass{article}
%------------------------------------------------------------------------------
\usepackage{luamplib}%
diff --git a/graphics/mcf2graph/mcf_setup.sty b/graphics/mcf2graph/mcf_setup.sty
new file mode 100644
index 0000000000..37945f1662
--- /dev/null
+++ b/graphics/mcf2graph/mcf_setup.sty
@@ -0,0 +1,75 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% mcf_setup.sty for input aux file by Akira Yamaji 2020.08.10
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\edef\@F{F} \edef\File{}% 1
+\edef\@C{C} \edef\Char{}% 2
+%------------------------------------
+\edef\@NO{NO} \edef\NO{}% 3
+\edef\@EN{EN} \edef\EN{}% 4
+\edef\@JN{JN} \edef\JN{}% 5
+\edef\@CAS{CAS} \edef\CAS{}% 6
+%------------------------------------
+\edef\@MW{MW} \edef\MW{}% 7
+\edef\@mw{mw} \edef\mw{}% 8
+\edef\@MI{MI} \edef\MI{}% 9
+\edef\@mi{mi} \edef\mi{}% 10
+\edef\@FM{FM} \edef\FM{}% 11
+\edef\@fm{fm} \edef\fm{}% 12
+%------------------------------------
+\edef\@Wd{w} \edef\Wd{}% 13
+\edef\@Ht{h} \edef\Ht{}% 14
+\edef\@Wone{w1} \edef\Wone{}% 15
+\edef\@Hone{h1} \edef\Hone{}% 16
+%------------------------------------
+\edef\@Use{Use} \edef\Use{}% 17
+\edef\@LogP{LogP} \edef\LogP{}% 18
+%------------------------------------
+\edef\@EXA{EXA} \edef\EXA{}% 19
+\edef\@EXB{EXB} \edef\EXB{}% 20
+%---------------------------------------------------------------------------
+\def\@tag@param#1:#2;{#1}%
+\def\@var@param#1:#2;{#2}%
+%----------------------------------------
+\def\tag@var#1{%
+\if#1\empty\relax\else%
+ \edef\@tag{\expandafter\@tag@param#1;}%
+ \edef\@var{\expandafter\@var@param#1;}%
+ %----------------------------------------
+ \ifx\@tag\@F\edef\File{\@var}\fi% 1
+ \ifx\@tag\@C\edef\Char{\@var}\fi% 2
+ %----------------------------------------
+ \ifx\@tag\@NO\edef\NO{\@var}\fi% 3
+ \ifx\@tag\@EN\edef\EN{\@var}\fi% 4
+ \ifx\@tag\@JN\edef\JN{\@var}\fi% 5
+ \ifx\@tag\@CAS\edef\CAS{\@var}\fi% 6
+ %----------------------------------------
+ \ifx\@tag\@MW\edef\MW{\@var}\fi% 7
+ \ifx\@tag\@mw\edef\mw{\@var}\fi% 8
+ \ifx\@tag\@MI\edef\MI{\@var}\fi% 9
+ \ifx\@tag\@mi\edef\mi{\@var}\fi% 10
+ \ifx\@tag\@FM\edef\FM{\@var}\fi% 11
+ \ifx\@tag\@fm\edef\fm{\@var}\fi% 12
+ %----------------------------------------
+ \ifx\@tag\@Wd\edef\Wd{\@var}\fi% 13
+ \ifx\@tag\@Ht\edef\Ht{\@var}\fi% 14
+ \ifx\@tag\@Wone\edef\Wone{\@var}\fi% 15
+ \ifx\@tag\@Hone\edef\Hone{\@var}\fi% 16
+ %----------------------------------------
+ \ifx\@tag\@Use\edef\Use{\@var}\fi% 17
+ \ifx\@tag\@LogP\edef\LogP{\@var}\fi% 18
+ %----------------------------------------
+ \ifx\@tag\@EXA\edef\EXA{\@var}\fi% 19
+ \ifx\@tag\@EXB\edef\EXB{\@var}\fi% 20
+ %----------------------------------------
+\fi%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% sfor : modified latex2e kernel program control
+% @for => @sfor delimiter ',' => ';'
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\@sfor#1#2{\expandafter\def\expandafter\@tmp\expandafter{#1}%
+ \ifx\@tmp\@empty\else\expandafter\@rep#1;\@nil;\@@\@list{#2}\fi}%
+%------------------------------------------------------------------
+\def\@rep#1;#2\@@#3#4{\def#3{#1}\ifx#3\@nnil%
+ \expandafter\@fornoop\else#4\relax\expandafter\@rep\fi#2\@@#3{#4}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%