summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-08-14 22:37:14 +0000
committerKarl Berry <karl@freefriends.org>2015-08-14 22:37:14 +0000
commitb52c087654644bf3129e35c766b5359e86bd3356 (patch)
tree10c329604b12727d096a740983039a0e93531a46 /Master/texmf-dist
parent4877d5e5d365e505f6ed41141c84481c19087d6c (diff)
mcf2graph (14aug15)
git-svn-id: svn://tug.org/texlive/trunk@38124 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/README8
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf2
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdfbin255342 -> 255269 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex74
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdfbin218676 -> 218677 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdfbin107480 -> 107401 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex61
-rw-r--r--Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf77
8 files changed, 102 insertions, 120 deletions
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/README b/Master/texmf-dist/doc/metapost/mcf2graph/README
index bb51260b7db..c326baf4c98 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/README
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/README
@@ -1,7 +1,7 @@
********************************************************************************
mcf2graph : Convert Molecular Coding Format to graphics with Metafont/Metapost
Author : Akira Yamaji
- version : 3.55 / 2015-08-07
+ version : 3.57 / 2015-08-14
E-mail : akira.yamaji5@gmail.com
Located at : http://mirror.ctan.org/pkg/graphics/mcf2graph
Home page : http://molecoding.cocolog-nifty.com/blog/
@@ -17,7 +17,7 @@
2. The distribution of software
( 1) README This file
- ( 2) mcf_graph.mf Macro of Metafont / Metapost
+ ( 2) mcf2graph.mf Macro of Metafont / Metapost
( 3) mcf_manual.tex MCF syntax manual(LaTeX file)
( 4) mcf_man_soc.mf Molecular difinition file for mcf_manual.tex
( 5) mcf_man_soc-032.eps No.32 EPS(with color) file of (4)
@@ -59,8 +59,7 @@
**********************************************************
% insert part of info.aux file
%-------------------------------------------------------------------------
- \MOLinfo{EN:Acetamiprid}{:}{:}{:}{:}{:}{:}{:}{:}{:}{:}{:}%
- \MCFinfo{MCF_SOC2}{0}{MCF_SOC2-000.eps}{419.14972}{145.32037}{159.04236}{12}{0}{}%
+ \INFO{{F:MCF_SOC2}{C:0}{EN:Acetamiprid}}%
%-------------------------------------------------------------------------
% or insert next line
\input mcf_exa_soc-info.aux % filename of souce file : mcf_exa_soc.mf
@@ -111,3 +110,4 @@
ver. 3.53 / 2015-07-29 support luamplib(LuaLaTeX)
ver. 3.54 / 2015-08-03 maximum item number of MOLinfo can be changed
ver. 3.55 / 2015-08-04 support luamplib(v2.11), renew mcf_mplib_exa.tex
+ ver. 3.57 / 2015-08-14 improve AUX file format
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
index 3c1e910592b..106785ec022 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
@@ -14,6 +14,8 @@ sw_numberB:=0;
sw_expand:=0;
sw_start_vector:=0;
%%%%sw_checklist:=1;
+%%%%sw_info_fm:=1;
+%%%%sw_info_mw:=1;
%%%%sw_MOLfile:=1;
%**********************************************************************
beginfont("EN:Acetamiprid")
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
index 00b3bc86ea2..1d401e46f4a 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex
index a9f6a37c336..71403126466 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2015.8.7
+% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2015.8.14
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper]{article}
\usepackage{graphicx}
@@ -12,68 +12,54 @@
\setlength\columnsep{8mm}
%-------------------------------------------------------------------------------
\makeatletter%
-\newbox \@stringbox%
+\newbox \@stringbox%
\newcount \fontnum%
\newcount \tnum%
-\newcount \Cnt@xlen%
-\newcount \Cnt@row%
-\newcount \fontw%
-\newdimen \font@dim%
%-------------------------------------------------------------------------------
\def\mol@sel#1{%
- \if#1\empty\relax\else%
- \edef\@first{\expandafter\@first@param#1;}%
- \edef\@second{\expandafter\@second@param#1;}%
- \ifx\@first\@EN@ \edef\MOLnameE{\@second}\fi%
- \ifx\@first\@JN@ \edef\MOLnameJ{\@second}\fi%
- \ifx\@first\@NO@ \edef\MOLnumber{\@second}\fi%
- \ifx\@first\@CAS@ \edef\MOLcas{\@second}\fi%
- \ifx\@first\@MW@ \edef\MOLmw{\@second}\fi%
- \ifx\@first\@FM@ \edef\MOLfomura{\@second}\fi%
- \ifx\@first\@USE@ \edef\MOLuse{\@second}\fi%
- \ifx\@first\@XLogP@ \edef\MOLXLogP{\@second}\fi%
- \ifx\@first\@EXA@ \edef\MOLextA{\@second}\fi%
- \ifx\@first\@EXB@ \edef\MOLextB{\@second}\fi%
- \fi%
-}%
+\if#1\empty\relax\else%
+ \edef\@fst{\expandafter\@fst@param#1;}%
+ \edef\@sec{\expandafter\@sec@param#1;}%
+ \ifx\@fst\@F\edef\MOLfile{\@sec}\fi \ifx\@fst\@C\edef\MOLchar{\@sec}\fi%
+ \ifx\@fst\@Lx\edef\MOLlenx{\@sec}\fi \ifx\@fst\@Ly\edef\MOLleny{\@sec}\fi%
+ \ifx\@fst\@EN\edef\MOLnameE{\@sec}\fi \ifx\@fst\@JN\edef\MOLnameJ{\@sec}\fi%
+ \ifx\@fst\@CAS\edef\MOLcas{\@sec}\fi \ifx\@fst\@MW\edef\MOLmw{\@sec}\fi%
+ \ifx\@fst\@FM\edef\MOLfomura{\@sec}\fi \ifx\@fst\@USE\edef\MOLuse{\@sec}\fi%
+ \ifx\@fst\@logP\edef\MOLlogP{\@sec}\fi \ifx\@fst\@EXA\edef\MOLextA{\@sec}\fi%
+ \ifx\@fst\@EXB\edef\MOLextB{\@sec}\fi \ifx\@fst\@NO\edef\MOLnum{\@sec}\fi\fi}%
+%-------------------------------------------------------------------------------
+\def\@F{F}\def\@C{C}\def\@EN{EN}\def\@JN{JN}\def\@CAS{CAS}\def\@MW{MW}%
+\def\@FM{FM}\def\@Lx{Lx}\def\@Ly{Ly}\def\@NO{NO}%
+\def\@USE@{USE}\def\@logP@{logP}\def\@EXA@{EXA}\def\@EXB@{EXB}%
%-------------------------------------------------------------------------------
-\def\@first@param#1:#2;{#1}\def\@second@param#1:#2;{#2}%
-\def\@EN@{EN}\def\@JN@{JN}\def\@CAS@{CAS}\def\@NO@{NO}\def\@MW@{MW}\def\@FM@{FM}%
-\def\@USE@{USE}\def\@XLogP@{XLogP}\def\@EXA@{EXA}\def\@EXB@{EXB}%
-\def\MOL@info@aux#1#2#3{\mol@sel{#1}\mol@sel{#2}\mol@sel{#3}}%
-\def\MOLinfo#1#2#3#4#5#6#7#8#9{%
- \edef\MOLnameE{}\edef\MOLnameJ{}\edef\MOLnumber{}\edef\MOLcas{}\edef\MOLmw{}%
- \edef\MOLfomura{}\edef\MOLuse{}\edef\MOLXLogP{}\edef\MOLextA{}\edef\MOLextB{}%
- \mol@sel{#1}\mol@sel{#2}\mol@sel{#3}\mol@sel{#4}\mol@sel{#5}\mol@sel{#6}%
- \mol@sel{#7}\mol@sel{#8}\mol@sel{#9}\MOL@info@aux}%
-%--------------------------------------------------------------------------------
+\def\@fst@param#1:#2;{#1}\def\@sec@param#1:#2;{#2}%
\def\@stru#1[#2]{\font\@strufont=#1\relax\hbox{\@strufont\char#2}}%
-\def\MCFinfo#1#2#3#4#5#6#7#8#9{%
+%-------------------------------------------------------------------------------
+\def\put@char{%
\unitlength=0.01mm\relax \@tempcnta=3200\relax \@tempcntb=3800\relax%
\begin{picture}(\@tempcntb,\@tempcnta)%
\advance\@tempcnta -300\relax%
\put(20,\@tempcnta){\tiny\bf [\the\fontnum] \MOLnameE}%
-%---------------------------------------------------------------------------
-% for METAFONT
- \put( 0,0){\makebox(\@tempcntb,\@tempcnta){\@stru{#1}[#2]}}%
-%%%% for METAPOST
-%%%% \put( 0,0){\makebox(\@tempcntb,\@tempcnta){\includegraphics{#3}}}%
-%---------------------------------------------------------------------------
+ \put( 0,0){\makebox(\@tempcntb,\@tempcnta){\@stru{\MOLfile}[\MOLchar]}}%
\end{picture}%
\advance\fontnum\@ne\relax\advance\tnum\@ne\relax%
\ifnum\tnum=5 \\ \tnum=0\relax \fi%
- }%
+}
+%-------------------------------------------------------------------------------
+\def\INFO#1{%
+ \edef\MOLnameE{}%
+ \@tfor\@temp:=#1\do{\mol@sel{\@temp}}%
+ \put@char%
+}%
+%-------------------------------------------------------------------------------
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
{\hspace{20mm} \LARGE\bf Molecular Coding Format examples \hspace{10mm} }%
-{\footnotesize\bf by Akira Yamaji 2015.8.3} \vspace{5mm}\\
+{\footnotesize\bf by Akira Yamaji 2015.8.14} \vspace{5mm}\\
\fontnum=1%
\noindent%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%% Copy & Paste here from log-file %%%%%%%%%%%%%%%
-%%%%%%%%% or \input 'filename'-info.log %%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% \input 'filename'-info.log
%------------------------------------------------------------------------
\input mcf_exa_soc-info.aux
%------------------------------------------------------------------------
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf
index bd1d98404b8..825bb62d07c 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf
index 57a4d837976..2247082795e 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
index fdce25becf4..fdcc5d97980 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
@@ -1,47 +1,46 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2015.8.7
+% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2015.8.14
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}
%-------------------------------------------------------------------------------
\usepackage{luamplib}%
\mplibcodeinherit{enable}%
\mplibverbatim{enable}%
-\everymplib{if unknown Ph1: input mcf2graph.mf; sw_logout:=1;%
+\everymplib{if unknown Ph1: input mcf2graph.mf; sw_logout:=1; sw_info_lenx:=1;%
mp_log_name:="temp-info.aux"; fi}%
\everyendmplib{write EOF to mp_log_name;}%
%-------------------------------------------------------------------------------
\makeatletter%
\newdimen \MOLwidth%
%-------------------------------------------------------------------------------
+\def\@fst@param#1:#2;{#1}\def\@sec@param#1:#2;{#2}%
\def\mol@sel#1{%
- \if#1\empty\relax\else%
- \edef\@first{\expandafter\@first@param#1;}%
- \edef\@second{\expandafter\@second@param#1;}%
- \ifx\@first\@EN@ \edef\MOLnameE{\@second}\fi%
- \ifx\@first\@JN@ \edef\MOLnameJ{\@second}\fi%
- \ifx\@first\@NO@ \edef\MOLnumber{\@second}\fi%
- \ifx\@first\@CAS@ \edef\MOLcas{\@second}\fi%
- \ifx\@first\@MW@ \edef\MOLmw{\@second}\fi%
- \ifx\@first\@FM@ \edef\MOLfomura{\@second}\fi%
- \ifx\@first\@USE@ \edef\MOLuse{\@second}\fi%
- \ifx\@first\@XLogP@ \edef\MOLXLogP{\@second}\fi%
- \ifx\@first\@EXA@ \edef\MOLextA{\@second}\fi%
- \ifx\@first\@EXB@ \edef\MOLextB{\@second}\fi\fi}%
+\if#1\empty\relax\else%
+ \edef\@fst{\expandafter\@fst@param#1;}%
+ \edef\@sec{\expandafter\@sec@param#1;}%
+ \ifx\@fst\@F\edef\MOLfile{\@sec}\fi \ifx\@fst\@C\edef\MOLchar{\@sec}\fi%
+ \ifx\@fst\@Lx\edef\MOLlenx{\@sec}\fi \ifx\@fst\@Ly\edef\MOLleny{\@sec}\fi%
+ \ifx\@fst\@EN\edef\MOLnameE{\@sec}\fi \ifx\@fst\@JN\edef\MOLnameJ{\@sec}\fi%
+ \ifx\@fst\@CAS\edef\MOLcas{\@sec}\fi \ifx\@fst\@MW\edef\MOLmw{\@sec}\fi%
+ \ifx\@fst\@FM\edef\MOLfomura{\@sec}\fi \ifx\@fst\@USE\edef\MOLuse{\@sec}\fi%
+ \ifx\@fst\@logP\edef\MOLlogP{\@sec}\fi \ifx\@fst\@EXA\edef\MOLextA{\@sec}\fi%
+ \ifx\@fst\@EXB\edef\MOLextB{\@sec}\fi \ifx\@fst\@NO\edef\MOLnum{\@sec}\fi\fi}%
%-------------------------------------------------------------------------------
-\def\@first@param#1:#2;{#1}\def\@second@param#1:#2;{#2}%
-\def\@EN@{EN}\def\@JN@{JN}\def\@CAS@{CAS}\def\@NO@{NO}\def\@MW@{MW}\def\@FM@{FM}%
-\def\@USE@{USE}\def\@XLogP@{XLogP}\def\@EXA@{EXA}\def\@EXB@{EXB}%
-\def\MOL@info@aux#1#2#3{\mol@sel{#1}\mol@sel{#2}\mol@sel{#3}}%
-\def\MOLinfo#1#2#3#4#5#6#7#8#9{% %%%% max item number = 12 %%%%
- \edef\MOLnameE{}\edef\MOLnameJ{}\edef\MOLnumber{}\edef\MOLcas{}\edef\MOLmw{}%
- \edef\MOLfomura{}\edef\MOLuse{}\edef\MOLXLogP{}\edef\MOLextA{}\edef\MOLextB{}%
- \mol@sel{#1}\mol@sel{#2}\mol@sel{#3}\mol@sel{#4}\mol@sel{#5}\mol@sel{#6}%
- \mol@sel{#7}\mol@sel{#8}\mol@sel{#9}\MOL@info@aux}%
+\def\@F{F}\def\@C{C}\def\@EN{EN}\def\@JN{JN}\def\@CAS{CAS}\def\@MW{MW}%
+\def\@FM{FM}\def\@Lx{Lx}\def\@Ly{Ly}\def\@NO{NO}\def\@USE@{USE}\def\@logP@{logP}%
+\def\@EXA@{EXA}\def\@EXB@{EXB}%
+%-------------------------------------------------------------------------------
+\newdimen\MOLwidth%
+\def\INFO#1{%
+ \edef\MOLnum{}\edef\MOLnameE{}\edef\MOLlenx{}\edef\MOLmw{}%
+ \@tfor\@temp:=#1\do{\mol@sel{\@temp}}
+}%
%--------------------------------------------------------------------------------
-\def\MCFinfo#1#2#3#4#5#6#7#8#9{\MOLwidth#4pt\relax}%
-\def\MOLcaption#1#2{\input temp-info.aux\relax\advance\MOLwidth -#1\relax%
+\def\MOLcaption#1#2{\input temp-info.aux\relax %
+\MOLwidth=\MOLlenx pt%
+\advance\MOLwidth -#1\relax%
\llap{\makebox[\MOLwidth][l]{\raisebox{#2}%
-{\sf NO.\MOLnumber{ }\MOLnameE{ }\tiny (MW:\MOLmw)}}}}%
+{\sf NO.\MOLnum{ }\MOLnameE{ }\tiny (MW:\MOLmw)}}}}%
\makeatother%
%------------------------------------------------------------------------------------
\pagestyle{empty}
@@ -53,7 +52,7 @@
%------------------------------------------------------------------------------------
\begin{document}
{\LARGE MCF example for luamplib(LuaLaTeX) }%
- \hspace{20mm}by Akira Yamaji 2015.8.7\vspace{8mm}\\
+ \hspace{20mm}by Akira Yamaji 2015.8.14\vspace{8mm}\\
%------------------------------------------------------------------------------------
\begin{mplibcode}
font_wd:=100mm; font_ht:=50mm;
@@ -101,8 +100,8 @@
\begin{mplibcode}
font_wd:=50mm; font_ht:=40mm;
beginfont("NO:4","EN:Gibberellin","MW:346.37");
- MCf(
- ^^12,?6`1.3,3=??5,9=??7,12\^160`1.6,&8,
+ MCf(^^12,
+ ?6`1.3,3=??5,9=??7,12\^160`1.6,&8,
4\^155~zf`-1.2,O,55,//O^180`1,&2~zb,
3=dr,11=wf,13=wb,7:/COOH,11://Me,1:*/OH,12:/*OH,2:*/Me,
@(3^-60,9^60)*/H
@@ -158,7 +157,7 @@ endfont;
@(5,7,15,16,23,24,32,40,41,48,49,58,59,72,73,82,83,90,91,99,
100,107,113,114,122,123,130,131,140,141,148,149)O,
@(1^60,2,26,28,29,51,54,61,63,68,75^60,78,109)*/OH,
- @(11,20,35,45,52,55,65,69,86)/*OH,@(^^60,47,57,71)/*H,
+ @(11,20,35,45,52,55,65,69,86)/*OH,@(47,57,71)/*H^60,
@(3,8,13,17,21,33,38,42,56,70,84,92,101,106,111,128,138,142,146,150)/*H^-60,
@(4,14,22,34,39,43,81,89,98,102,116,121,125,129,133)*/H^60,
@(6,46,50,53,60,67,74)*/H^-60,
diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
index c1862e2cb2b..b7a841c9ca2 100644
--- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
+++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
@@ -1,6 +1,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 3.55 Copyright (c) 2013-2015 Akira Yamaji
-%
+% mcf2graph ver 3.57 Copyright (c) 2013-2015 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,
% including without limitation the rights to use, copy, modify, merge, publish, distribute,
@@ -44,6 +44,7 @@ picture atom_font[],chem_structure,temp_picture;
%-------------------------------------------------------------------------------------------------
sw_numberA:=sw_numberB:=sw_frame:=sw_logout:=sw_solid:=sw_expand:=sw_start_vector:=0;
sw_atom_frame:=sw_checklist:=sw_MOLfile:=char_num:=str_cnt:=size_changed:=proc_end:=0;
+sw_info_file:=sw_info_char:=1; sw_info_lenx:=sw_info_leny:=sw_info_mw:=sw_info_fm:=0;
if known green: f_MP:=1;
mp_log_name:=jobname&"-info.aux";
if ahlength=1: proc_end:=1; fi % first molecular only
@@ -85,27 +86,25 @@ def_com(1)(si,dl,dr,dm,tm,wf,wb,bd,zf,zb,ov,dt,no,ar,vf,vb,wv,nl);
def parameter_list= sw_checklist,sw_numberA,sw_numberB,sw_frame,sw_logout,sw_solid,sw_expand,
sw_MOLfile,sw_start_vector,sw_atom_frame,lr_margin,tb_margin,ratio_atom_bond,ratio_thickness_bond,
ratio_cr,offset_atom,max_bond_width,ratio_pen_wd,ratio_bondgap_bond,ratio_zebra_black,
- ratio_zebra_gap,ratio_wedge_bond,font_gap,offset_zebra_gap,offset_gap,offset_thick
-enddef;
+ ratio_zebra_gap,ratio_wedge_bond,font_gap,offset_zebra_gap,offset_gap,offset_thick enddef;
%-------------------------------------------------------------------------------------------------
nA:=0; for list=parameter_list: st_p[incr nA]:=list; endfor
def store_par(text t)= nA:=0; for list=t: if st_p[incr nA]<>list: st_p[nA]:=list; fi endfor enddef;
def restore_par(text t)= nA:=0;
forsuffixes list=t: if list<>st_p[incr nA]: list:=st_p[nA]; fi endfor enddef;
%-------------------------------------------------------------------------------------------------
-def beginfont(text s)= mol_name:=""; len_x:=len_y:=cntA:=0;
+def beginfont(text s)= mol_name:=""; len_x:=len_y:=cntA:=info_num:=0;
store_par(parameter_list); ratio_bond_width:=1mm#/font_wd#;
- for i:=1 upto 12: if info[i]<>":": info[i]:=":"; fi endfor
- for list=s: cntA:=cntA+1; info[cntA]:=list;
- if substring (0,2) of list="EN":
- mol_name:=substring (3,length(list)) of list; fi exitif cntA=11; endfor
- beginchar(char_num,font_wd#,font_ht#,0); clearit;
-enddef;
+ for list=s: info_num:=info_num+1; info[info_num]:=list;
+ if substring (0,2) of list="EN": mol_name:=substring (3,length(list)) of list; fi endfor
+ beginchar(char_num,font_wd#,font_ht#,0); clearit; enddef;
%-------------------------------------------------------------------------------------------------
def endfont=
if sw_frame=1: AUX(draw_frame(len_x,len_y,(min_x,min_y),0.2pt);) fi
- if sw_start_vector=1: AUX(start_vector) fi if sw_logout=1: logfile_out; fi
- if sw_checklist=1: mol_check; checklist_out; fi if sw_MOLfile=1: mol_check; MOL_out; fi
+ if sw_start_vector=1: AUX(start_vector) fi
+ if sw_checklist=1: mol_check; checklist_out; fi
+ if sw_MOLfile=1: mol_check; MOL_out; fi
+ if sw_logout=1: logfile_out; fi
char_num:=char_num+1; currentpicture:=chem_structure; chem_structure:=nullpicture;
restore_par(parameter_list);
if size_changed=1: font_wd#:=stock_wd#; font_ht#:=stock_ht#; size_changed:=0; fi
@@ -121,8 +120,7 @@ def size_setup= BL# := font_wd#*ratio_bond_width;
pen_wd# := ratio_thickness_bond*BL#+offset_thick#;
Apen_wd# := ratio_pen_wd*pen_wd#;
define_pixels(BL,zebra_gap,wedge_wd,AL,gap,pen_wd,Apen_wd,font_wd,font_ht);
- font_size_setup;
-enddef;
+ font_size_setup; enddef;
%-------------------------------------------------------------------------------------------------
def scaling= min_x:=min_y:= 4095.999; max_x:=max_y:=-4095.999;
for i=1 upto cntA: xpos:=xpart(posA[i]); ypos:=ypart(posA[i]);
@@ -148,16 +146,14 @@ enddef;
def resize(expr WD,HT)=
if (len_y/len_x)>(font_ht/font_wd): factor:=(font_ht*HT-2tb_margin)/len_y;
else: factor:=(font_wd*WD-2lr_margin)/len_x; fi
- ratio_bond_width:=ratio_bond_width*factor; len_x:=len_x*factor; len_y:=len_y*factor;
-enddef;
+ ratio_bond_width:=ratio_bond_width*factor; len_x:=len_x*factor; len_y:=len_y*factor; enddef;
%-------------------------------------------------------------------------------------------------
for i=1 upto 128: f_FON[i]=0; endfor asc0:=ASCII("0"); asc9:=ASCII("9");
def font_use_check=
for i=1 upto 128: if f_FON[i]<>0: f_FON[i]:=0; fi endfor
if (sw_numberA=1)or(sw_numberB=1): for j=asc0 upto asc9: f_FON[j]:=1; endfor
else: for i=1 upto cntA: if strA[i]<>0: for j=0 upto length(com_str[strA[i]])-1:
- f_FON[ASCII(pic_c(j,com_str[strA[i]]))]:=1; endfor fi endfor fi
-enddef;
+ f_FON[ASCII(pic_c(j,com_str[strA[i]]))]:=1; endfor fi endfor fi enddef;
%-------------------------------------------------------------------------------------------------
vardef '(text s)= ''(incr mc_num)(s); mc_num enddef;
def set_def_MC=
@@ -198,16 +194,14 @@ enddef;
%-------------------------------------------------------------------------------------------------
def !?(expr a)(expr b)(expr c) = PB(_jp_bond,a) PB(_get_len,a) PB(_push,c)
PB(_chg_len,_ring_len) for i==1 upto b-2:: PB(_mk_bond,360 DIV b) endfor PB(_pop,c)
- if a>=1:: PB(_cyc_eB,0) elseif a<=0:: PB(_cyc_eB,a-b+2) else:: PB(_cyc_eB,a) fi
-enddef;
+ if a>=1:: PB(_cyc_eB,0) elseif a<=0:: PB(_cyc_eB,a-b+2) else:: PB(_cyc_eB,a) fi enddef;
%-------------------------------------------------------------------------------------------------
def !!?(expr a)(expr b)(expr c)(expr n) = PB(_jp_bond,xpart(a)) PB(_push,n)
if b==6:: PB(_chg_len,0) for i==1 upto c-1:: PB(_mk_bond,60) endfor
elseif b==5:: if c==2:: PB(_chg_len,1.25) PB(_mk_bond,80)
elseif c==3:: PB(_chg_len,1.1) PB(_mk_bond,78) PB(_mk_bond,72) fi
elseif b==4:: PB(_chg_len,1.225) PB(_mk_bond,105) fi
- PB(_pop,n) if ypart(a)<=0:: PB(_cyc_eB,ypart(a)-c+1) else:: PB(_cyc_eB,ypart(a)) fi
-enddef;
+ PB(_pop,n) if ypart(a)<=0:: PB(_cyc_eB,ypart(a)-c+1) else:: PB(_cyc_eB,ypart(a)) fi enddef;
%-------------------------------------------------------------------------------------------------
def PB(expr b,c)= comMC[ab_num][incr cntBS]:=b; parMC[ab_num][cntBS]:=c; enddef;
def $$(text t)(expr e) = begingroup save cntBS; cntBS:=0; ab_num:=ab_num+1;
@@ -269,8 +263,7 @@ def ps_get(expr n)= cntC:=cntMC[0]; cntPS:=cntP;
for j=1 upto cntMC[ps_com[i]]: PS(comMC[ps_com[i]][j],parMC[ps_com[i]][j]) endfor
PS(_pop,1) PS(_term,0)
endfor
- proc_atom(cntC+1); if cntP>cntPS: ps_get(cntPS+1); fi
-enddef;
+ proc_atom(cntC+1); if cntP>cntPS: ps_get(cntPS+1); fi enddef;
%-------------------------------------------------------------------------------------------------
def AUX(text s)=s addto chem_structure also currentpicture shifted(sft_X,sft_Y); clearit; enddef;
def MCf(text s)= MCd(1,1)(.5,.5)(s); enddef;
@@ -302,8 +295,7 @@ def draw_frame(expr LX,LY,PS,PN)=
draw unitsquare xscaled LX yscaled LY shifted PS wpcs PN; enddef;
def start_vector= draw (posA[1] shifted (-1mm,0))--(posA[1] shifted (-4mm,0))
withpen penrazor rotated 90 scaled .8mm;
- fill (posA[1] shifted (-2mm,-1mm))--posA[1]--(posA[1] shifted (-2mm,1mm))--cycle;
-enddef;
+ fill (posA[1] shifted (-2mm,-1mm))--posA[1]--(posA[1] shifted (-2mm,1mm))--cycle; enddef;
%------------------------------------------------------------------------------------------------
def proc_atom(expr n)=
f_Br:=f_En:=f_T:=rotT:=adrS:=f_lineT:=f_rotT:=f_lenT:=f_envT:=envT:=env:=0;
@@ -356,15 +348,13 @@ enddef;
def ps_put(expr n,p)= ps_adr[incr cntP]:=n; ps_com[cntP]:=p; ps_len[cntP]:=lenT;
ps_line[cntP]:=lineT; ps_rot[cntP]:=rotT; ps_env[cntP]:=envT;
if f_lineT=0: lineT:=si; fi if f_lenT=0: lenT:=ratio_cr; fi
- if f_rotT=0: rotT:=0; fi if f_envT=0: envT:=hz; fi
-enddef;
+ if f_rotT=0: rotT:=0; fi if f_envT=0: envT:=hz; fi enddef;
%-------------------------------------------------------------------------------------------------
def add_atom= lineB[incr cntB]:=lineT; lineT:=si;
if lenT=ratio_cr: lenB[cntB]:=B_len; else: lenB[cntB]:=lenT; lenT:=ratio_cr; fi
if f_Br=0: cntA:=cntA+1; sB[cntB]:=cntA; strA[cntA]:=strAT; strAT:=0;
if f_MP=1: colorA[cntA]:=colorB[cntA]:=0; fi else: f_Br:=0; fi
- if f_En=0: eB[cntB]:=cntA+1; f_T:=0; else: eB[cntB]:=f_En; f_En:=0; f_T:=1; fi
-enddef;
+ if f_En=0: eB[cntB]:=cntA+1; f_T:=0; else: eB[cntB]:=f_En; f_En:=0; f_T:=1; fi enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def proc_skelton= stkA[1]:=stkB[1]:=1; envT:=env:=f_lineT:=f_rotT:=f_lenT:=f_envT:=0;
adrA:=adrB:=cntA:=cntB:=angT:=adrS:=f_En:=f_Br:=rotT:=f_T:=0;
@@ -461,8 +451,7 @@ def clipping(expr SA,SB,PA,PB,LEN)= pT:=PA--PB; tn:=0.6AL/LEN;
elseif SB=0: Ls:= cut_off(pT,AL*strW[SA],AL,PA); Le:=PB;
pA:=Ls--Le; pB:=tn[PA,PB]--Le; pC:=Ls--(0.1)[PB,PA];
else: Ls:=cut_off(pT,AL*strW[SA],AL,PA); Le:=cut_off(pT,AL*strW[SB],AL,PB);
- pB:=tn[PA,PB]--tn[PB,PA]; pC:=pA:=Ls--Le; fi
-enddef;
+ pB:=tn[PA,PB]--tn[PB,PA]; pC:=pA:=Ls--Le; fi enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def draw_wv= nB:=3pen_wd; nA:=nB/length(Le-Ls);
draw Le for i=1 upto 1/nA: if odd(i): ..controls(((i-.5)*nA)[sfB(Le,nB,ap),sfB(Ls,nB,ap)])
@@ -494,11 +483,15 @@ if (nC>0)and(LN<>0): ww:=wedge_wd; hpt:=.5pen_wd; ap:=ANG+90; am:=ANG-90;
enddef;
%-------------------------------------------------------------------------------------------------
vardef fit_zero(expr n)=if n<=9: "00" elseif n<=99: "0" fi enddef;
+def info_c(expr sw,c,cc)= if sw=1: &"{"&c&":"&cc&"}" fi enddef;
+def info_n(expr sw,c,n)= if sw=1: &"{"&c&":"&decimal(n)&"}" fi enddef;
def logfile_out=
- printf "%";
- printf "\MOLinfo" for i=1 upto max_info_num: &"{"&info[i]&"}" endfor &"%";
- printf "\MCFinfo{"&jobname&"}{"&decimal(char_num)&"}{"&mp_filename&"}{"&decimal(len_x)
- &"}{"&decimal(len_y)&"}{"&decimal(ratio_bond_width)&"}{"&decimal(cntA)&"}{}{}%"; enddef;
+ printf "\INFO{"
+ info_c(sw_info_file,"F",jobname) info_n(sw_info_char,"C",char_num)
+ info_n(sw_info_lenx,"Lx",len_x) info_n(sw_info_leny,"Ly",len_y)
+ info_n(sw_info_mw,"Mw",Mol_wt) info_c(sw_info_fm,"Fm",fomula_str)
+ for i=1 upto info_num: &"{"&info[i]&"}" endfor &"}%";
+enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mc_num:=first_def_number;
lr:='(60 for i==1 upto 10:: ,-60,60 endfor); rl:='(-60,lr);
@@ -564,7 +557,7 @@ if f_FON[ASCII(c)]=1:
z10=(fW,hH); z12=( 0,fH); z13=(hP,fH); z14=(hW,fH); z16=(aW,fH); z18=(hP,aH); z19=(hW,hP);
s;
atom_font[ASCII(c)]:=currentpicture shifted (font_gap*AL,font_gap*AL);
- clearxy; save x,y; clearit; fi enddef;
+ clearxy; save x,y; clearit; fi enddef;
%-------------------------------------------------------------------------------------------------
def font_setup= pickup pencircle scaled Apen_wd; fP:=Apen_wd; hP:=.5Apen_wd;
FD(" ")();
@@ -663,7 +656,7 @@ def STa(expr a,b)= tblA[incr tbl_cnt]:=a; tblN[tbl_cnt]:=0; wtA[tbl_cnt]:=b; end
def STb(expr a)(text s)= tblA[incr tbl_cnt]:=a; tblN[tbl_cnt]:=0;
for list=s: tblN[tbl_cnt]:=tblN[tbl_cnt]+1;
for j=1 upto tbl_max: if list=tblA[j]: tblB[tbl_cnt][tblN[tbl_cnt]]:=j; fi endfor
- endfor enddef;
+ endfor enddef;
%-------------------------------------------------------------------------------------------------
tbl_cnt:=0;
STa("C",12.0107); STa("H",1.00794); STa("{Al}",26.9815); STa("{As}",74.9236); STa("B",10.811);
@@ -696,7 +689,8 @@ def mol_check= hide_H:=warning_cnt:=0; for i=1 upto tbl_max: sumA[i]:=0; endfor
knownA:=1; fi endfor
if knownA=0: warning(" Unknown Str("&com_str[strA[i]]&") is used "&decimal(i)); fi
endfor
- sumA[2]:=sumA[2]+hide_H; enddef;
+ sumA[2]:=sumA[2]+hide_H;
+enddef;
%-------------------------------------------------------------------------------------------------
def checklist_out= Mol_wt:=Mol_wtp:=nA:=0; fomula_str:="";
message "% There were "&fdr(3)(warning_cnt)&" warnings";
@@ -724,7 +718,8 @@ def checklist_out= Mol_wt:=Mol_wtp:=nA:=0; fomula_str:="";
if Mol_wtp<=40: &fdr(10)(Mol_wt); else: &fdr(10)(Mol_wtp)&" * 100"; fi
message "% --------------------------------------";
message "% Molecular Fomula: "&fomula_str;
- message "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"; enddef;
+ message "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";
+enddef;
%------------------------------------------------------------------------------------------------
def MOL_out= mp_log_name:=jobname&"-"&fit_zero(char_num)&decimal(char_num)&"-"&mol_name&".mol";
printf ""; printf " -MCFtoMOL- "&fixed_l(20)(info[1]); printf "";