summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-01-26 22:19:38 +0000
committerKarl Berry <karl@freefriends.org>2020-01-26 22:19:38 +0000
commit9fc6341d273edf6d5788c3a0a404a0fed4bdc058 (patch)
treebec6c80d04ba62be6ec1c65cc6c411496f04f4e3 /Master
parentbfd3a742581519a88ea734f6981249de3acbc69f (diff)
mcf2graph (26jan20)
git-svn-id: svn://tug.org/texlive/trunk@53550 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG6
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/README2
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf23
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdfbin282839 -> 265490 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc-064.mps423
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf6
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdfbin594238 -> 579921 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex5
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.pdfbin172055 -> 139840 bytes
-rw-r--r--Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex4
-rw-r--r--Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf333
11 files changed, 190 insertions, 612 deletions
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
index 0f6ac19e3d6..8b1de56bb8e 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG
@@ -1,6 +1,10 @@
*******************************************************************************
- Changelog of mcf2graph software package by Akira Yamaji 2019-12-15
+ Changelog of mcf2graph software package by Akira Yamaji 2020-01-26
*******************************************************************************
+[ver. 4.48 / 2020-01-26]
+ -add command a@#b : a:@,b:#
+ -update MCF manual
+
[ver. 4.47 / 2019-12-15]
-fix bug in fused ring
-change option parameter name
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/README b/Master/texmf-dist/doc/metapost/mcf2graph/README
index 5f7bef71224..ad8fb31e05f 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 : 4.47 2019-12-15
+ version : 4.48 2020-01-26
E-mail : mcf2graph@gmail.com
Located at : http://www.ctan.org/pkg/mcf2graph
********************************************************************************
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 c3ff7cce03c..6cf6e32e8b5 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mf
@@ -1,16 +1,16 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2019.12.15
+% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2020.01.26
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf; %%% it must be version 4.47 or later
+input mcf2graph.mf; %%% it must be version 4.48 or later
%-------------------------------------------------------------------------
fsize:=(33mm,24mm);
max_blength:=4.5mm;
%-------------------------------------------------------------------------
-%%%%sw_aux_out:=1; % or 2
+%%%%sw_aux_out:=1;
%%%%sw_fframe:=1;
%%%%sw_aframe:=1;
%%%%sw_mframe:=1;
-%%%% sw_expand:=1;
+%%%%sw_expand:=1;
var3:="cal_FM"; tag3:="cFM";
var4:="cal_MW"; tag4:="cMW";
%%%% outputtemplate:="%3c-%j.png";
@@ -33,7 +33,7 @@ var4:="cal_MW"; tag4:="cMW";
%%%% for i=nA step nA until w: draw(i,0)--(i,h); endfor
%%%% for i=nA step nA until h: draw(0,i)--(w,i); endfor );
%***************************************************************************
-beginfont("EN:Acetamiprid","MW:222.676","FM:C10H11ClN4")
+beginfont("EN:Acetamiprid","MW:222.676")
MC(<30,Ph,2:N,1:/Cl,4:\,!,N,/_,!,/_,!!,N,!,CN)
endfont
%***************************************************************************
@@ -203,7 +203,7 @@ beginfont("EN:Ampicillin","MW:349.405")
endfont
%***************************************************************************
beginfont("EN:Validamycin","MW:497.494")
- MC(<30,?6,{5,6}:/OH,3:\,-60,OH,
+ MC(<30,?6,{5,6}:/OH,3:/!OH>vt,
$4:\,O,-60,|,?6,2:O,{3,4,5}:/OH,6:/!OH,
$1:\,NH,!,|,?6,2=dl,{4,5,6}:/OH,3:/!OH)
endfont
@@ -398,14 +398,3 @@ beginfont("EN:Atoropin","MW:289.375")
endfont
%***************************************************************************
bye
-*****
-bye
-*********************************
-beginfont("EN:Atoropin","MW:289.375")
- MC(<-30,O,!,//O,!,!,Ph,
- $1:\~zb^-120,|,?7`1.1,6:*\^190`1.25,N,/_,3~wb:#,$3:/!OH~wv)
-endfont
-%***************************************************************************
-bye
-*****
-bye
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf
index 495e5707ec5..51804c4cdc2 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_man_soc-064.mps b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc-064.mps
index ff262231486..0820fc253f6 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc-064.mps
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc-064.mps
@@ -2,12 +2,14 @@
%%BoundingBox: -1 -1 213 57
%%HiResBoundingBox: -0.1 -0.1 212.69804 56.79282
%%Creator: MetaPost 2.00
-%%CreationDate: 2019.06.19:0623
+%%CreationDate: 2020.01.25:0956
%%Pages: 1
%%DocumentResources: procset mpost-minimal
-%%+ font JIZCCV-NimbusSanL-Regu IXTKJB-CMR8
+%%+ font uhvr8r cmr8
%%DocumentSuppliedResources: procset mpost-minimal
-%%+ font JIZCCV-NimbusSanL-Regu IXTKJB-CMR8
+%%DocumentNeededResources: font uhvr8r cmr8
+%%IncludeResource: font uhvr8r
+%%IncludeResource: font cmr8
%%EndComments
%%BeginProlog
%%BeginResource: procset mpost-minimal
@@ -18,421 +20,10 @@
/ScaleFont{dup fmc 0 get Amul 0 exch put dup dup 3 get Amul 3 exch put fmd}bd
/SlantFont{fmc 2 get dup 0 eq{pop 1}if Amul FontMatrix 0 get mul 2 exch put fmd}bd
%%EndResource
-%%BeginResource: font JIZCCV-NimbusSanL-Regu
-%!PS-AdobeFont-1.0: NimbusSanL-Regu 1.05a
-%%Title: NimbusSanL-Regu
-%%CreationDate: Thu Mar 20 10:08:51 2003
-%%Creator: Primoz Peterlin
-%%DocumentSuppliedResources: font NimbusSanL-Regu
-% Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development
-% Generated by PfaEdit 1.0 (http://pfaedit.sf.net/)
-%%EndComments
-FontDirectory/JIZCCV-NimbusSanL-Regu known{/JIZCCV-NimbusSanL-Regu findfont dup/UniqueID known{dup
-/UniqueID get 5020902 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /JXDTPR-NimbusSanL-Regu def
-/FontBBox [-174 -285 1001 953 ]readonly def
-/UniqueID 5020902 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (1.05a) readonly def
-/Notice (Copyright \050URW\051++,Copyright 1999 by \050URW\051++ Design & Development) readonly def
-/FullName (Nimbus Sans L Regular) readonly def
-/FamilyName (Nimbus Sans L) readonly def
-/Weight (Regular) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -151 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 56 /eight put
-dup 97 /a put
-dup 99 /c put
-dup 100 /d put
-dup 109 /m put
-dup 114 /r put
-dup 119 /w put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
-2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
-6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
-979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
-ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
-B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
-A9373ABECDBF32FA68AABB66FAB0C970A3354A335D70DB2CC5A3208BB6D768E7
-B58CD9BC2B6B7E110693C5A88D680B7290DB121996E3B7C8AE3C23147280F8BF
-D8C60B415552700FF0E44C2257B467ADD5D550F61EC34A76143393E0B34D55C0
-8B64B48E5F1FD16E16B967511AE15434B7F755BDF2574191E3C3DC528B69B5BA
-7DDBBD3C7878FA69ADE75011A2C0F02F5707E86FA632D1269281D3C265B31F3B
-F3145052467647AFE18B9D763FAEE4BA72CB9C385568EE5BBF5854C278F1E3CC
-475C6234E83ED33345268BE52F0931B58F302EDA0D5751348E7B7E53D4882FB6
-9343BDAAE87E48F6E82024D8EC1FACBBA36582092CCD76553B0449A5090774EA
-7242123C53B80F2E927B98DF2B36C403D1FA1E9F8439F3964DC9F89A0CAB5AE2
-C907309460F097AA87BD156575D6C73EDB2B40C015E67734397ED14395C43394
-7A0201C6B0F652B035FD7BB82ED236D0F7C20048AFD83A56925C7A2898B46270
-B440913E4714FD89697B3E59F5BDD5A2AACF6630257957ABE1A63502A3081B6E
-307A534A9E238F986D4C866AFBAB7A0B1B5A6E99AA0A56DC1FD7E8A39CC45147
-259AC7033A0C58192CA82FB12E09F309F75690043646193AD92D2368F345771F
-01CFD21236BA52F74E36CF4B94259CDBA2EF1D61AD93A2B942A9896B0819D20C
-59E440851CB99E89C887FC62FD9E7F88F54E5BC157D81A5FBC70699820C51BC6
-27D7755B195C0BAD8225A6F3EAE0A5A674E8AF6B11BCC69DCF5FB89D8BE0E2E5
-FE7E2588F93F583E4E2F6ED5457E90B902B02F51D54B9F0BA54291E687F4A7A2
-08CA5FCE0C9F3B954247312EDA3C532D3DCDFDCB56FFE03B36DB7D549D4203C6
-7DA8772A2F732A15DE675D3212C28DC755E3D0156A777BF514112ABBE4372ACB
-97D7834813E1850F90CEE543B4C09BE1E93742EA98B8CACC09FCC4D2595EECD4
-46C942EEA60211FA7DBC11CE869D55BF0C7EC6AA747EB2AE2CB3CC2DBEC936C9
-540CE2E08291323B36F6549CDB97BBF9F0DA429CA9C863B629410885540DA6C4
-9AAADB30C39051C993CB547BCD573D6448DC09BF7FF2D1B108ABEC2AAEE4060D
-182ABDB3100AC627E5C883E8F42D90D699C8028D4123472F211C8FBB744D7E3D
-C626ED03D8517D69E1ACD26BE4F83FAE31122294816736827D138E4F4CAB1681
-236C1654E01231EA7F08AD0E73BBE1BE19A7AD6DA63AE0C7F5A360A53BB35268
-CC90125C7545D9D59F5127F0AD964AA66DF020F639832FAF9C2CCA82C01120BA
-6469960C350D3AF786666EC14158728E0BA2DD8A639C28E0A7EA8BBF608FD7DF
-79C7B5DDEA05C8C3D6FC70177D1A9EA9AD056F0CE31AB535A22FF7EB33748071
-694BCE70111394D24DCEA030AE4C07AECAC39144621A6B719682FF74DB5C081C
-B538F17221F8D06EAAD43B64DA5CF93030CB93DD54FCC5B44980F2AC6A66C512
-54F71283450DFCA305E0B134FC95E54C2699C18624EBE6A7D0067E306EADCFE5
-2D2A78AA02574548893EE05FFD60CB41E00B2E7761AA55732EFE6EE3C19EEF6B
-179276229BA324E59A81107FFFAE0685C7C24E70ACB8564454277C41C28075AC
-96964C61BD933742996058691C47B09CEBE352FC29A63119C731B3FC8D78A9E3
-69F922CA6454BC1F6CFD1E03B285AFC3D8A7C81B83F0D950DAD2F3E562353B9A
-1D56DABD05371F9479BFA4CAEC5CBAAC37C200F6E27BB35E591601EBFF9580F3
-78E3BF2E599FF22A1434E7D661083C7F8D02F91CCD580EA19FC752DC7DB84DEB
-6DA73092F21F04F718009DBA58BF46AB95BC4B9154DC2390AE0089A9FEEC29F5
-90EE85785CF7E9EC5CC31283CFFE2CBE71C3A2EF82C984D16ADD4BFAE300036D
-4D161A5BD529D9E7C7EBD598A6CF895C2B0A06DBB62EA1E10D52D2D69E373F43
-4024FF3F78725CD06CA3E2F2FF6EC30EC7E3EB389DFC287C5803B56F4058A19F
-EAC02F63B3708C71BBFE34996E87AE9B53C0B8009CCFE62C17E001C96636A66B
-10F2CB000A0D128B232D9A9E24006A4FCB9FDD47C70C954BEAA33A81A5EE27B9
-220C89DF8C7471D82051EC633967352C75105A1222751EDFBB3E8B7294D5DF44
-958A1F7695ECE82296DF0D272C713BA3B612591D25AD1A01EC4C31819D2DC7B3
-5CF2D9F0F492A21E1C0F12BA04D7AAD47D978D9E27B27A5E810DA3288710EE9A
-55270BAEF9025D1ACAB90E7A0010434D7551D9C6ED8854FDAA3736542746ADFA
-E256888F27BD0473AF8CEAE50E72CCFD28AB52B5B5AFE50CA179D56CEC0F66BF
-4E29E49139796AD76F219F2F7E4A093AE79BEBA96AA3C4846BE06F450ABA400D
-1802978E39789984C5BC3E386CED0321AA1103F4C98E7938A0A43221BD62CB3E
-9919166E4C5685DB2251F4B257A56C518348D27E0C312082BB785A7A71D46A55
-84BEB0D0F8488FE1851E4D2218F93467C90464BFEECCD83F382E45211576133D
-BBDA5CC4582CC326879574A5B0C840E7B69617A157AB0CF1881601EF22909D51
-457962C37265CA81F4462979DBC27E2D40FA8A83DA4DC02F8945783A3F7D7E63
-9A2C7FD9A366B87678E42AD75BC9BB94EC921332E60DE90966B9A2828B3983A0
-B4AD97C71BFD312AFF12B19F8BD653A82396A30C8767F169B664A12D1B1D5A2B
-955F8D68D7F589FEC9ADA8B3D621165F366C39D2B6EFA16EE1981A33422DAC4C
-63444836C47FD4CF75E964571BD86643FAB5F8CFB63633A19B36ABA949504A51
-BF3395620F8CBBBA1D06FFC01CBAA4281B1934BC9EADFCE21949101595399607
-3F5CECB8BDB43E672FDF8E4E6472EEDE6CF3C9B0C606643CD25E8EEAA88FB5DA
-337D8E8246D149FF54C613B691679A646D961D98B7BE1C06AF5F69A4FA62DC94
-8A4D4D40D065CBBC229205072021BE4A2085C6209F103909A048836120F9C369
-5BAEBB29EE7C59CA69954B26E3EA58438675DAB14FAB778437E05FB92B7FA3D3
-CFFBF34B0E7526D9564D23650E9B9AE6DF11C2BF0B272327F4FC47A764BD6E09
-46F0561971FDD8B8D0969B50FABF52CFD470EF37327F814E2656C5BDBD061A35
-4684B66BB71DDE9AF914DE7CB8A2A33999008A7D81F24CB629294ED8B96656CC
-5DD1C2AC79FBE594F5DF0ADB51D448AF658613F899B309514EDD2CE48C4AF155
-0CB5983755E12C1F37ABB0CEDE003EFBD0BF18082DFE7842F8C565C82E28BA27
-D956BAA853052BAB3C9A63E1CAAACC3ABF6E62CE8A1DC3954DE1ACD0193F8AA3
-E4195E722AD662CE3E188456AEB1A392E24F02C9EA38B6065E6C9B8233606230
-ADCD832E0D691E7DD709659F7EC3FE02A244E832DF17E6991BB9042E8B98F6FF
-5E6A9AC55AE7F243EC23CB8858306ECFFA2FF8F7C227091154781ABEA3BEC50E
-18F0854E26646F5E73932206F2FFD5EC588B006ABBBD7A6B81F3FABEBACB5523
-7AFCB8AB313AFFD9232DBE7E33C0AE19EEFC32F1B94E9040F1D8CE31A358973F
-79E987BF6F49B4A5C717F8956488A3084EDA5CF510EB618AD0F44AD88E375AD9
-986AA8D585FDD73F172A740BC8E0119336140328BB5C79F8953189313DC1EA99
-B6A47CFBB66A98110B7E71A6D9CE4F3BE94D3507F2A44AFC967C8E254ABABE0D
-919A34A7FBAC0233585CABDB28A3F104B882AD71FABF3D9F41849523D29E95BA
-7840334C52DE6900A9B308E5047D9ECEA8E3308F8BDD81CDDD6E9D81CCDE9A66
-DC9C2E10F4850068D2D321839FB316F4F09FA26664EA51EE86EB2DF3E41186D7
-B73A68C125FEE7826020C77B0632E3D138D002C23F13F44C47014748102FCC29
-9F0458E90084393FCBA5430D2BCF1D585C7428DF54B884807709867C739AFDDA
-7B398E3126978279F50E08F102184641D223CCC9DBF3F4A0FBE3897AE3A87DFB
-E81876C20DF82204D8B35B3EFFABA6D74EDC357432D7D51FD626A1CDB1929A36
-9CE5AF6AED4365628E6B083788384DCC6EF09253B99949D376A6D21CB84EA2D5
-353898E4654D93AF0B5AC8A3D796970576B373D47AD58FD12002718EE0A54139
-80B3A3F2D3108B975F8DC1167B47E9A4673DD434B87055AC26973EFCBFE6D48A
-5A68F099B118ACF08F0E60FD147AFD97952EB2A0E1D869D5408E4F6DBB5BFF81
-4E9CC701141A63DD8264CF4F2EE53CA9C175A06FEF0E9F65C510E7E561C63982
-E797D77238480D13078773317A0E2917CF1B307C315E88340F56B5F957E4A6E3
-2867EC63A3F9ADE503D6ADEF8B236E449889CC6992E3329B8213066EC393A9CA
-CF4485B17BE4F202ABB890D75B0EC6
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndResource
-%%BeginResource: font IXTKJB-CMR8
-%!PS-AdobeFont-1.0: CMR8 003.002
-%%Title: CMR8
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR8.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/IXTKJB-CMR8 known{/IXTKJB-CMR8 findfont dup/UniqueID known{dup
-/UniqueID get 5000791 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /GMTUEE-CMR8 def
-/FontBBox {-36 -250 1070 750 }readonly def
-/UniqueID 5000791 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR8.) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 50 /two put
-dup 72 /H put
-dup 78 /N put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9928A7C95D3A6E9B
-8E92F84CA0AA44461D2F4FA0F8B81C6F5B7BE98C9712BE166610465CF689DFAF
-27C875C029C0116DE61C21DA0092D029E7DBEDFDDEE3D67E6936623AB53FA2AF
-18BEDDD7AC19A19CADB6ED6CA7A26E6044BE414FFF59C0B98D5819A6B881F9AB
-7AD0D03BDD5CD309C67811D5CF0B93F6FDC9AE64F74ED4E81F2E18D880BD842A
-DAFD0BDF06300201C6946087FC0B999447BC370200BFB8CA420B668B32EBC242
-6DB1546A7164CF55B332FE9D239B65F532B69EF9F4F93828A44C8F5C526126F8
-B7A369114CA68D4F98638121F4E17F351723D9F1A902FCF087F94AFD23876517
-2D15B482AF2D68C3F31FFA864E031596E597882578AC7FB0DAE2A713B065B374
-3E2E72519ED6D50CBCA40A7275A7109A4F3ED8A4566AD8832890D3D1F4899850
-9B757442B7EA355175CD5D6D8B4152ED2D7EEB4CE30F174FF672140354046A45
-7098EC45B9DF3DF5CF7B417E201DA88308CEF4CED8E8903AF24FB8DD0187352D
-25738519ECBC70304F8F620CC45D2586619205DA3955696FAFFE2082402B3502
-CB682F410DE5FFE80A4DA3D3BCF02E35BD577D0DE55E7B8A33B7A2FD5136B5DD
-A0BCB61F8E7F4363C21F890CF287304DDB8FCE7FE207C0D160B81E7EA662BED2
-DFF8C444E19C91E72254257CD87240A70F1A964FA54ED9ECF27E27A57DACC3DE
-EABB92C085030870C6CF5C40B6E47F5C0AEB30E84A73ECDABB2D754EF6EA28BB
-16EBD6636BC288E62F4A38BFB55F5F4DD20FDD77D767F6CB52F9513E8EB75413
-07F1877B2C01278675177499E4E8EB09F2657821613F5C7643FC064293EC6E9E
-B519FFAEEA36B19C9D1302CF91FCBF87FCB57C5F995CB6712BB3D8681EB6F05B
-B2A4195A3C73CB4ABCCFB958EAC533BD89560D2790CDE1444C0F2E4EF27A529C
-F01052964E56F6D76A190E5FF45934BB711A3406284AF130D4DC0D8112BB3752
-762CA0200CA262359D4F54C0CCFA9A50DE18C7DB14419E2990ADDC4A54B94978
-D9174CA39434022FA77FB30179EF805E2189C35919F5EBE215EE2A00B4407826
-CE56329C5586D8B414770BA5D45513C3AF1931D632FCE69B4CA504944E03362C
-74A1177C6398A61A12DAA0F156543E2A8E9969C4308B7ACC21A5ECAC8F172541
-1B1316A88C0C163E574FFD3CD22FF08488662FCF2F9344BC25D02146F36CA6F9
-E2D0130C654B7485EEA9A110A33AA0C769121F81821E9A2BD062FAC158359D44
-3F9D9947200EF1EDDD5860F10438B162A69683957300C75AF7546C70C97AB2EE
-37EAAF0089E2623F787F252569B06C665FDB45EC9681C0774ACFBA76B98C4E89
-7EB12AA5F8798FFC110B49C25E3A483ABE83B0BCC6DF0578403ADC369E013762
-C9D08FC94D949BAE636ACA9F36F4E3F02296775A062077B011A705B6F1784D36
-A926622CB3847533D7ACB24A4EBABB14593B5D8E1DAE2BFEF8A51835C8D4E76D
-7543C126A4271C59A5881A5AF89331694F84489CA66725995DC3070F306EA447
-CF30F63CD476A46D528EC1FFBFB8EACFA2BEEDCF54C92CE2BD26DEA5827186BD
-3A4D1709415CEE7D51D671357B4A5D11E835F63521B9824EE5282E58F05A8ACC
-FD249461181A38C2F47BAC4E79BE368D64F886AA493C61CBCB2ED401C8AFBA61
-59CA6F6216D941A92AC52ACB3D7ECC28D6A58EF4CC70BA6DE23E80937AB38E89
-6F05FDD15B954C0826636267EDAF9F2BB466BF79D2E10EED9B04297E6BC93069
-79581ADD1A9D9FAE9306F46AC95B98C60A2E53D60CF1AA4069BE301E17E25070
-F98DD67BD8642B1D07571A32766072E48BF27E1576FFEED300D7313A358A823B
-49C8F135961B7E259095C9BB67F996CE0B90E95344F203922F47E11753F70D38
-2ECB615403490310CEE6C03AFA97DA2F47ED47125D110FA69725BA0018F6A40B
-29A307FDB3E52322A77A0102E6F57654CF1E96A134D13860D83AFA0A41112D3F
-2247A09ACF7D06713BE443FA27C7E7220E875965D53030FE7D2D62EFD2F1DB87
-5FB091FEAF599BA8C5167525899E578AB341BFE2BC4E53A047093168AE189237
-EA55F055514EFA939DAE9E859CB5FBCF37D99484F44FE5AA5FA386B28BB642F5
-5DBAF059A50FE96C7C6D834531D64F1F2E99AB2E96EE74D149178B1C0618495E
-293973D9A03E1790654B67C0882376ABEC17D74785B3737D81644F28B3BC6FFF
-F92FE29126995A07E0BC5EF3A4B93789A103C428943E045B8D1A5063AE71E806
-568D48072E53DEA85253B01DF0BB7367A6BE4DD7BE514AD74E3F77C825ABA405
-64DAFA25EAFF8F63344B5F6B523629776CEB090B546469F6A6008DE43072DD3C
-DEF51F62731037D1FBD0C038A1E9B669849EB3BEBA281624F13D20B61917A109
-A0A7871A73F7BAA18077360B38A4625C5DB9AB9E43BDEEB856FD0E2D3AA2E075
-267B978B9EB47F2369302E87DBD5D5B422830BEC32411FE75D584C58650EFB1D
-136FEB92B94BF8939FD63AFB7349C7511E5E46AA7324F8B1FFCA9C2A9E9720C0
-A720918E8E860F137567D386AC29870FD990BD69465B3A3D2A0ECF2753578AD7
-80DC87EBB319EB5AFE0B6F6FF8616EA30C51425FE3ECBC5F8D0B0BEFDEF32FA7
-D168B4E85C804B7326A0942CFDE732B1171C643452B7099B31649CA2C38B62FB
-46EBDF7180004C549B53F88021D029452C2B37D8C565BCDB0B11541039A13C0A
-E45D4B68C7907B8BF08C6F41F564B62BB554235D50330E78DD02795516D969C9
-66119D718798120442CB7EB9877FF84EC69DAE25F8559DCE3BD8042959F695F8
-2F99845B1B5680DDCF181D806CC4903E077D1FF5E60918EB34C0B1E028422B71
-CA63EFBF3F4F3CD813CE831EB54265A555BDD35AD7D723F9CFBDAB29C54F8AFF
-2D35C6A3299E0A2DB470C7B141B1E3E10DABB7873AE302926BA8743278FAA8C0
-DC6174501D6A289CF980A3F55F2DD5C3A514E7E7F13133C35D2697D64C25130C
-DB78FC997968D6B3BC929E8A31B6D212C5128E4412632BC52B3A1049F7F2F61B
-C74AE9A6AD19B9E2E240617E2882F7D29ED3A4279439107AF9AEBEE47CE85DE5
-CE9595A96A118ACF1EB1F5929930321AF7732E351E18C6AD378508E37B4C327B
-0E06AAE21278AFA9255AFE5C022034DA2968D260879B4B38E7EE2E11A593DC3F
-CE71ABA050C004473324CAB6F3C50E85DEDA3E9A27388D8FD3A8F6E42A79670E
-F7549CFAD4CCB337A6E0BAA4846ABCA059F1E1933CF11DC0FFBFF550CC4A1B47
-CF7BCE0875FA747AA854534960F757884505A5AEE0330179A9547A4AE3E68479
-7A457DE83326DC30B67F27CFD4AB697601CEE352F72F0966B3CEE3EA24683BEF
-6D23AD51B8432C3F0DD0D0F80791E1091F38988B7A54E466A9AC7810DE8B7893
-6B0AA6356597891D56190A7660BC7F657BC559E0525D41EC228078F2FBF89C6C
-72D666DAD838CBF0861FBF0A1D4ECC069AA49DFBAE5C56B781A1D5D79DAAC256
-13E3F9B928A2394FC71691E4355642764459714412D6F8EF803FC5F7353822DE
-6CCBB8FBE5AA1F2C7F4D384039D85E7728527DF9FE0239E2CF8BCB7411C000B7
-1FE660AE6A2A19229E5E8776CC83EFF3C27403935756463EB4721C51FE0B1197
-86C2F17842A0FB639F28083DFD4F1E86D7D3BEFA922514ABF489C5CCE93D6F72
-D2EAAE14F6CBA2BE4BBE7D7EA8EA19DB3A87350D4A52064137C3D15A5B05B03B
-70B1DA7328D10713B83974C390C3270AF5A9A47C0BFBFABB9F31063B0CCFBB10
-0F236C74446688198EFF039110F6FF42FA9F82D463AD3958B5FD205BDF85DE20
-FE3F0C7AEEF350AEE6DBC1DE2E2DA4F4599956F59D6F121F7086DC120416E180
-52DBBC4E56C09746938698860F30007091E1CC0351B43990E47208ED495310F5
-7BA9C6AB3CA10A3F1B318FD47C1CE3B9FF1304321F9623E32D315AA9CE64B35B
-F841E6C62B5B2488A311C94937879E5E0E170FA77AF0AC75C5E6E9F3E8F825AA
-09C1702682E14FDFA72D27901C5BDE009B1E52E8C4511C6F6336251BD45261F7
-401CA3DAE7C4B0CAEB91B9954BF4A97C48ECE7FAD401351D59DDAE9DA94E2335
-74A2B880E4749D3D7026CB5299F16C204B6E00A20A6619C34922C7D3FB50F127
-3157CFC08DCC5164C8023CD1B6C3556C73CB8E4ADA845339CA9BABA1457ECEE6
-ECB9849DF1F0FEBC89E5F97C92978A500196520839CEBA6C0FD2E3D27BB4B4F0
-93CB2BB565F4627C6DB62DD0E084E627D69B5DEF42EF094381B62C0D67EFD197
-301B132420F51A41561E6106870147E0D597078435BE3819ACF0DE28AD779847
-F3D2CF667DA06955D53E0204CEA2935E9E984E76963D3079EC092031E2A10E61
-1227E5EE6770DD4D745A52655369EBA06A19BD7D95BBA271E488241199D1008E
-36EA99F8DFD2A9F87B06B070158B466AA4C6EA3BA77DB0F853F0BF9A304EA291
-34069714368E0B94DFCBA3BE5EDB6C8204DFA7EAF5C3406F60A7056407D1BF6C
-CB85C1F432F97D821F5518BBA79AF8453A568FB2C2D025A70CEC75F46C545011
-ACE3A99B2582793BA1DC655230AE2EFD24DE20A01D4A441AFFAB7771F223FA6B
-9169849E727E494247F67D6E1EA9DCA06A082FE2094BD548AD7F08B565145634
-E7ED832FEC1378306DDC796303392ADB0CBA130B63B38ED57B7828B47732853A
-893E8836FE19CCF27002AE92C2B2CACFDF8A42F1B8066E033B965D2E9157FDF8
-E1264B40813C1A4CE424274AA3528A4F09B3B53DD4D23789A68B3D17BC1398AE
-0ADA2C2168427A49846DE0216908C2FFFEF4F13C1ECA12AD341E238EE46E6DC2
-B71B54C52659632911F901660261E493AE2483D64E119D9924489779B62BC9FB
-A052E822FD8D83178E09ADC825DF0DA07FCE7AD68EEB29FAA275A13691B4A5A5
-B0BC0499CD6307610CD6209583C1152C559A2760823F8DC0B9B990BFFE7B7E9F
-3969B968AFEAADB9FC0F1410EBBAA0DB979CF153F0B8C978405F8E6F2B6406D7
-AAFBF4A655A15DD6D1E9A7EAE10EF89264659B09283F50B734236885FC09FBE5
-98D780012FA77FCB19F15BDC522CC7312546C0730EF5225DEA8C22A3BC6554EF
-4FE73B9AEB5C2F7DBD474221760E5F539A064AC450591BCF3499E3968F2CBD6B
-F15BA2B37080A4129B66D4C2188524F025414F14DB3F96049A8B0E5EB2BBE7A1
-AD64A988FE875FE4FE5186BB4F5DDA16983CB052D474B7D72F3E8965663EB50E
-015C72407C3437142D3D7DBC055FA627139488DBC5A0F98D805C2143D99F491A
-167E07AF60EC9F17C36289368D740B632CB919A0E74C412B76CE7A5906D5200F
-9E79CEB9C65ADA3A0F23E8947E834AE7A329A9F0AA7A6BF545B1D7B4666C6522
-CFF268634EA06DB3A82D91A4C0A9B227E79961212881A54A6762C335DE7E0831
-130C45D94394D21C049B9D189ED955438C2151514F17BFC67E431DD9A8349202
-2F616AEC1C7B19F63D5000EB4771370924BD4B9053FE78B5E4A244B9A149D66D
-A8BF3B398396D2233E92E4A5FDC70FAADEADAFD255193D688842DBA865CF6154
-C9348D590F3FEB135D4B7BD4D76A52CB140888247CAFAB25ED51F4D187041CA0
-ABD956F83A5661CEC171B52AF92F9ADE27973B560C802E1E0FF51C4003D1289A
-CDD09F8EDA8AFDFF666D35418CEADF3B0BE298F0D1E5C8E024D6A2017A7E71F3
-3A9FEC9930F1118101E040339F9D41379170928DDF5B5875212B271DC843F612
-E0C21C67263186E3D6929160464D4D5C8928E14D0845762C36FFBDE548188E20
-3B6BAFE5EECA0385142F01216FB8A90C43A472C1D4447FE5C7C78CC088FC72E7
-3FAFA062C338BDE8A430FDF1951B107D8D73FF9376FACDE5900BA362C66F8C1D
-947F9545C5C13A53E4479B1C1A50472C05E8F8C266C6D4F4EB08E97B3B1BA972
-26973B844545089C5732322BCC9A5A8FC972FA0D7DB8BD85D2F515ADE65DA479
-0224F7EA2276CFED0B75B2C23AE7377F86F1F6F205D6FE19377D87E782143697
-984E731F83CA888199CEB425643C259D4FB8B58DD69A96085198306494BB497E
-FE7C9954EF35B679BBE3847A9C73507874F71FC97665E2A58BA41407A1745247
-44A79B588D969D11CE4B863CDA655DAA53CEA5C3C263B345E782006CE9831D49
-603D2D95DE9E370D617F5928BA416C362BB2B4DEF16A5D44BD24B34257765F3B
-6223B3F9B54DAED69A90C7050AB97B06693D253C6894CBD7B497DA449F1D9B7C
-D91B421891EC0724F59C82B9CB288DC42F2D2D7A7F22EE3D910E15953D7766AE
-276DABED3820390BAF2700C4653E1C77FE63DB71A66D93ED293E25B8412A1EFF
-809554BF04ED0DE83F7F190883ED793803CAD2C34A66524D3A580ACDF3C13B22
-08F18905E7A4A16DA9ED2A112462FB9FFE481EC2069E484E8BBFC19D594153B7
-3DED4C11762223B7586483B06BC164D824D1A6FCAE80A35DE0DB8B33396771DF
-76DC5C05578EF1BE00A70BAF3D951A01C87328DB2B0DAD6E1B4C21F37D1BC0C5
-A929BDE5EADF20DA60C4DE2E3C151005814F24824D33B95F700E09A0207EB602
-3EF60DEB1622B91DB99A855A8F1DA96358F05CFCEDBDDDFC8446AE3391BEEC41
-966E594E28D052DD5ADA49DFF65E79540EBE5329DFD86C23CC800F95221B9C18
-CBBF941D2FA47EF1EF59A89DB5DD188E75EE94AD2A79E2221107E5992C00D531
-2E00B544895A9204656867E3DE9D4CDB64B920B5CCA9A73E6514B36CABAE01BF
-94C15603B86780190595560F792E5EF01650074EA4A9BBC6ED284B9AC2020641
-DCBCEE0ED27FE58171DFE104EEE4202759E594159DF45113C00236127A46FB35
-9EC705F21C0E456C1F0F924594C09AC64D4377C5FEEF764BA4A09ABA8D09DEB1
-FC13B0CD202B2F04CF5D73DEAB65C36C2FA7C0DC236BEEF6D23BFFC9C493DC8E
-1831F19EEF81EEDD976E43BAC6B5CED13F901DE59835FC75490EA528A72CEB77
-24C38B258EC38B9E6B97F85CA8C10D8809BBE55A6FAA12456FCAC786942E123C
-06D1E55F7ED04400088BEC968BC5081DC7A1B1B65166E7821679F76694F235FC
-6854C8776AF855B83445D9FF919B1D80E98DE0741D06D6C5EEDB3E3EA6392530
-F1BA817737D8162F7B3A36AC2A03190CDEC654383E31934C3E0A012B639532C6
-26FEBE9B412F1C92D1943B7C18CEF510729D501349644C97F087F2F840074AE6
-D8CD0FB2E620FFC908BFCD938B675A0A4A687F7FBE8F3DD06A62D7B6DE7DF3E2
-49D367D60B10061EA86CD512F5A1BE8950D83C62695E130128E0037B62552D17
-064319BBB9B1FAB9D79705E5D68AAE9B36EA14BF1A59A863BDB8DAD9AB5D7B8A
-E30E2B499F952D65877C8E38EDD7DB29F9579D09E629AC188DB6A6403AB4BA3A
-D358B3770D727A2B77D84B6C9EC17E29D88E3421F9B7D2D822EB78BB8BB50692
-8C46DD6F9BBEF2E848A2B5669B200019802AD19661537A84D3514AEC5AA47445
-2C791E01DCEDF18D9506367241255FFADEEA6183F51A9F42448A7DE413C08359
-52DAD2A60FD606AFE14702BD3B0EC448720FE63438D020DEDFCDE3582FC31DF1
-17B25FC152789D2F17FD60B8209D292D2152DCF8D28B5ADC04F6659BBB746CDF
-145163361823CA343763AA951C640B5D4A99B7787105A1609EDD6A596EFC3F6F
-2FC33D0D499DBE56C6668E137715D435D6B683E0113647B2765AB0F3D98AC717
-5B33C3EDDE18506E73B4E392B022F30480BD30F59B2E3A59D93017296C3156B4
-B5722E1955777716388AA987B2665669716F866FE6BDAD5E74A523CC03915F26
-9B7B231F5D9B1F61DF7CB01ED3F27070E36547B263855DF5B2E3ABD2ACC440B9
-0826E1D9B057F51ACE6BBADF67DC4C0A0F1AE1F8606EE140FB1B2D8843522362
-8762E804EDDD847E3201FE5EE8F0F34C2C187B58D5AC8F5D150CB3584CB2DD0E
-C16B9625A9F795211DB4FF82FF02AC437D4E47E6DCDC1159D24520249DFF1C41
-2A623E442ACEB6BC69133B99DC80ADA307ED5D47ABD348FDF349085C2CDCFD4E
-43F9656FE59EDACF3C11361D8DBE56162631049333E66F494B254381414CFE91
-8D91E50414A004EE730B80A588C792E8AE3CE5019FA34C43654B8B293AD57519
-ABB8F34817296D47D49BB98035C973E5CAD59EF76A44ABA084649110CBEFAE57
-A7B3CE611D9065828AE89DA68BB86B423B8A2EB3CC9A9302692555D4127D754F
-BC6730C6BA23F13C6A8BD9FAE1E8D13A3967607FDB42D5729F1EDC4D11601C0C
-FF97705B5DE9E3E78C8D3252A6710B6BC1B2599C68076E7AC67EE55ED3DEA9CE
-97B691CEA9D9D5987DA181DF71433965C58C2BB5117F5257FEE5E0F50C88AEE2
-25EEFAD0E4D1FCAD6D4871F7F62683D81C6622374700176A94DF43D46BE2F2D6
-2459FB8DAA2FCF9F2F54CAAE768D5D0C6AAA34DE207A87CA574EF2465C216D66
-C448F5AF51FAB37EB7F78D1EC92E59D90CBD15626B7F1A535046E3399AC08010
-4B9978A76DE005ACF7C89F3456CDD267A164E499DB2FA99A547041B2402EC067
-8169E334136BD1C5007FADD425DDB95CB268697B07581B7B4E9E5429A53DBCCD
-EA58B7FE38208A97A64C7EDC850C1A6D50E9C37516D192CBA3F77577A7B8E581
-570C84FEFBCB6AFCBDD1B2D2BB1CB1E211E02C3502CEA050CDE090BC0F101C27
-3643951846FD3CBB3454A9A6EAF0F81450F0E6474148EFFC6BDA692F9116228D
-366587DE955F4A0568DC07974613F01240566DC7C821CDD6E80B760C563126CE
-33BF6B0808B86AD9D8AC4B2CEF41BE8163BF8084336C9E705F5D7BD6C8B6F162
-7F3A224703F4CB287E90017469C4584FD71B2438619BF3E942CAB9BDB481DF52
-926FF3481E9A0D4D696B8E0F17F91637114A96CA2EBF5589AD650022FB95FCE3
-63145735C8F15578E9828046C710525509E381FA400DB658C7E568CB7C56B3C9
-61B48B71F4020440969424D3062ED74A64FF9C6B74E14D460862D239B5812461
-A2506B3074897F1FB5B8C5EFAA5BCE70CA1274F0
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndResource
%%EndProlog
%%BeginSetup
- /uhvr8r /JXDTPR-NimbusSanL-Regu def
- /cmr8 /GMTUEE-CMR8 def
+ /uhvr8r /uhvr8r def
+ /cmr8 /cmr8 def
%%EndSetup
%%Page: 1 1
1 0 0 setrgbcolor
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf
index 10be0a74c88..a28d1df0afe 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_man_soc.mf
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2019.12.13
+% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2020.01.26
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-input mcf2graph.mf; %% it must be version 4.47 or later
+input mcf2graph.mf; %% it must be version 4.48 or later
%------------------------------------------------------------------------
sw_mframe:=0;
sw_expand:=0;
@@ -192,7 +192,7 @@ beginfont("EN:Connect atom")
sw_numberA:=1;
ratio_chain_ring:=1;
%----------------------------------------------------------------------
- MC(<30,!6,3:\,!,5~bd:#)
+ MC(<30,!6,3:\,!3,6:#~bd,9@#4~bz)
endfont
%***********************************************************************
beginfont("EN:ring")
diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf
index fa55769249c..b04218e18f6 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_manual.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex
index 6758b3cddb5..8ae6c125366 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Molecular Coding Format manual by Akira Yamaji 2019.12.15
+% Molecular Coding Format manual by Akira Yamaji 2020.01.26
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[a4paper]{article}
%%%%\documentclass[a4paper,twoside]{article}
@@ -192,8 +192,9 @@ pk font,PNG,SVG,EPS or MDL MOL file.
\subsubsection{Connect atom}
\begin{verbatim}
n:# : Connect to An
+ n1@#n2 : n1:@,n2:#
- <30,!6,3:\,!,5~bd:#
+ <30,!6,3:\,!3,6:#~bd,9@#4~bz
\end{verbatim}
\MCFgraph
%-----------------------------------------------------------------------------
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 c284c2d563c..26fbaf0fcf4 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 580d18b45fb..c458dadf7e2 100644
--- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
+++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_mplib_exa.tex
@@ -1,7 +1,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2019.12.15
+% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2020.01.26
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% mcf2graph.mf it must be version 4.47 or later
+%%% mcf2graph.mf it must be version 4.48 or later
\documentclass{article}
%------------------------------------------------------------------------------
\usepackage{luamplib}%
diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
index 5ad3d1c752d..15aeb765196 100644
--- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
+++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mf
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% mcf2graph ver 4.47 Copyright (c) 2013-2019 Akira Yamaji
+% mcf2graph ver 4.48 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,
@@ -39,12 +39,12 @@
tracingstats:=1;
%-------------------------------------------------------------------------------------------------
newinternal com,par,nA,nB,nC,nD,nE,nF,nP;
-numeric save_num[],comD[][],parD[][],cntD[],tbl_atom[],tbl_group[][],f_char[],
+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[],andA[],and_rot[],chargeA[],
com_group[][],par_group[][],cnt_group[],colorA[],colorB[];
-string save_str[],tbl_atom_str[],strD[],var[],tag[],out_file_name,out_file_aux,
- out_file_rep,out_file_mcl,aux_delimiter,atomfont,save_atomfont,save_defaultfont;
-pair save_pair[],msize,mposition,fsize,fmargin,save_mposition;
+string save_str[],tbl_atom_str[],strD[],var[],tag[],mpc_name[],out_file_name,out_file_aux,
+ out_file_rep,out_file_mpc,aux_delimiter,atomfont,save_atomfont,save_defaultfont;
+pair save_pair[],msize,mposition,fsize,fmargin,save_mposition,posBs,posBe;
picture mol_stru[],save_picture,temp_picture;
path arrow_path,arrow_head;
%-------------------------------------------------------------------------------------------------
@@ -64,7 +64,7 @@ if (known green)and(known ahlength):
%-----------------------------------------------------------------------------------------
atomfont:=defaultfont:="";
out_file_aux:=jobname&"-info.aux";
- out_file_mcl:=jobname&"-mcl.txt";
+ out_file_mpc:=jobname&"-mpc.txt";
out_file_rep:=jobname&"-report.txt";
def out_file_mol= jobname&"-"&fit_zero(char_num)&"-"&inf_EN&".mol" enddef;
%--default ahangle=45---------------------------------------------------------------------
@@ -125,7 +125,7 @@ fi
clearit;
%--------------------------------------------------------------------------------------------------
message "---------------------------------------------";
-message "This is mcf2graph ver 4.47 2019.12";
+message "This is mcf2graph ver 4.48 2020.01";
if f_MP=1:
if bboxmargin=0: message "output no image file";
elseif bboxmargin=1: message "output first font only";
@@ -136,7 +136,6 @@ if f_MP=1:
if ahlength=1: message "output aux file";
message "out_file_aux="&out_file_aux;
message "aux_delimiter="&aux_delimiter;
- message "aux_delimiter="&aux_delimiter;
elseif ahlength=2: message "output report file";
message "out_file_rep="&out_file_rep;
elseif ahlength=5: message "output MOL file(V2000)";
@@ -185,24 +184,23 @@ parts_usr_start:=2500; % 2500 => 2999 for user parts (max 500)
parts_int_start:=3000; % 3000 => 4000 for internal parts (max 1000)
%--------------------------------------------------------------------------------------------------
def def_com(expr n)(text tx)= nA:=n; forsuffixes list=tx:: list:=nA; nA:=nA+1; endfor enddef;
-def_com(-4090)(_com,_jp_atom,_jp_A_abs,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_dl,_tmp_line,
+def_com(-4090)(_com,_jp_atom,_jp_absA,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_dl,_tmp_line,
_chg_len,_get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang,_chg_env,_tmp_env,_set_colorA,_set_colorB,
- _group,_groupA,_groupB,_groupC,_groupD,_groupE,_groupF,_groupG,_groupH,
- _set_clr,_set_adr,_mk_bond,_set_atom,_arg_ang,_chg_atom,_tmp_rot,_fuse,
- _size_atom,_numeric,_jump_at,_connect_at,_set_and,_chg_charge,_nop,
- si,dl,dr,db,dm,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,si_,wf_,wb_,bd_);
+ _group_si,_set_adr,_mk_bond,_set_atom,_arg_ang,_chg_atom,_tmp_rot,_fuse,_size_atom,_numeric,
+ _jump_at,_connect_at,_set_and,_chg_charge,_nop,_mark,_moff,_term,_len_s,_len_e,_len_ss,_len_ee,
+ _group_s,_group_e,si,dl,dr,db,dm,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,nb,si_,wf_,wb_,bd_);
%--------------------------------------------------------------------------------------------------
def parameter_list=
sw_rep_out,sw_numberA,sw_numberB,sw_mframe,sw_aux_out,sw_expand,sw_mol_out,sw_calc,sw_single,
sw_ext_all,sw_aframe,sw_fframe,sw_group_off,sw_trimming,sw_arrow,sw_label_emu,
ratio_atom_bond,ratio_thickness_bond,ratio_char_bond,ratio_chain_ring,ratio_bondgap_bond,
ratio_zebra_black,ratio_zebragap_bond,ratio_thickness_char,ratio_wedge_bond,ratio_atomgap_atom,
- lonepairdiam,lonepairspace,blength,offset_atom,offset_wedge,max_blength,offset_zebra_gap,
+ lonepairdiam,lonepairspace,blength,offset_atom,offset_wedge,max_blength,offset_zebra_gap,
offset_bond_gap,thickness_fframe,thickness_mframe,thickness_aframe,offset_thickness,
numberA_start,numberA_end,numberB_start,numberB_end,defaultsize,defaultscale,labeloffset,mangle,
fsize,fmargin,msize,mposition,defaultfont,atomfont,
- Me,Et,Pr,Bu,iPr,tBu,CH3,CF3,CCl3,CBr3,NH,NH2,NO2,OH,CHO,COOH,CN,SH,OMe,OEt,SMe,SEt,
- !CH3,!NH2,!OH,!CHO,!COOH,!CN,!SH,!NO2
+ Me,Et,Pr,Bu,iPr,tBu,CF3,CCl3,CBr3,CH3,NH,NH2,NO2,OH,CHO,COOH,CN,SH,OMe,OEt,SMe,SEt,
+ !CH3,!NH2,!NO2,!OH,!CHO,!COOH,!CN,!SH,!2CH3,!2NH2,!2NO2,!2OH,!2CHO,!2COOH,!2CN,!2SH
enddef;
%--------------------------------------------------------------------------------------------------
def ]]]=] ] ] enddef;
@@ -313,42 +311,37 @@ def endfont=
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def set_def_MC=
- save /,//,/*,*/,**,*/*,~,^,`,<,>,>>,&,:,=,\,\\,*\,\*,*\*,@,$,{,},#,|,||,|||,|=,=|,|<,>|,|:,:|,
- _,d,w,z,inside_def_MC;
+ save /,//,/*,*/,**,*/*,~,^,`,``,<,>,&,:,=,\,\\,*\,\*,*\*,@,#,@#,$,{,},
+ |,||,|||,|=,=|,|<,>|,|:,:|,_,d,w,z,inside_def_MC;
inside_def_MC:=1;
_:=Me; d:=db; w:=wf; z:=zf;
tertiarydef a=b == if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef;
tertiarydef a:b == if (known a)and(known b):: change_atom(a,b) else:: _nop fi enddef;
- def { == read_number( enddef;
- let } == );
+ def { == read_number( enddef; let } == );
def &primary s == (_set_and,ASCII(s)) enddef;
vardef $primary a == a-4095 enddef;
- def ``primary n == (_chg_len,n) enddef;
def <primary n == (_rot_ang,n) enddef;
- def >>primary n == (_chg_env,n) enddef;
+ def ``primary n == (_chg_len,n) enddef;
tertiarydef a^b == if known b:: (_tmp_rot,b),a else:: _nop,a fi enddef;
tertiarydef a`b == if known b:: (_tmp_len,b),a else:: _nop,a fi enddef;
tertiarydef a~b == if known b:: (_tmp_line,b),a else:: _nop,a fi enddef;
tertiarydef a>b == if known b:: (_tmp_env,b),a else:: _nop,a fi enddef;
- def # == _connect_at enddef; def @ == _jump_at enddef;
- def \ == @,0 enddef; def \\ == \~dm enddef;
- def *\ == \~wf enddef; def \* == \~zf enddef;
- def *\* == \~wv enddef;
- def | == (_com,1) enddef; def || == (_com,2) enddef; def ||| == (_com,3) enddef;
- def |< == (_com,5) enddef; def >| == (_com,6) enddef;
- def |: == (_com,7) enddef; def :| == (_com,8) enddef;
+ def # == _connect_at enddef; def @ == _jump_at enddef; primarydef a@#b == a:@,b:# enddef;
+ def \ == @,0 enddef; def \\ == \~dm enddef;
+ def *\ == \~wf enddef; def \* == \~zf enddef; def *\* == \~wv enddef;
+ def | == (_com,_mark) enddef; def || == (_com,_moff) enddef; def ||| == (_com,_term) enddef;
+ def |< == (_com,_len_s) enddef; def >| == (_com,_len_e) enddef;
+ def |: == (_com,_len_ss) enddef; def :| == (_com,_len_ee) enddef;
def |=primary n == |<,(_chg_len,n) enddef; def =| == >| enddef;
- def /secondary n == if known n:: (_groupA,n) else:: _nop fi enddef;
- def //secondary n == if known n:: (_groupB,n) else:: _nop fi enddef;
- def */secondary n == if known n:: (_groupC,n) else:: _nop fi enddef;
- def /*secondary n == if known n:: (_groupD,n) else:: _nop fi enddef;
- def **secondary n == if known n:: (_groupF,n) else:: _nop fi enddef;
- def */*secondary n == if known n:: (_groupG,n) else:: _nop fi enddef;
+ def /secondary n == if known n:: (_group_si,n) else:: _nop fi enddef;
+ def //secondary n == /n~dm enddef; def */secondary n == /n~wf enddef;
+ def /*secondary n == /n~zf enddef; def */*secondary n == /n~wv enddef;
+ def **secondary n == /n~nb enddef;
enddef;
%=================================================================================================
-vardef '(text TXT)= read_command(incr parts_usr)(TXT); parts_usr enddef;
+vardef '(text TXT)= read_mcf(incr parts_usr)(TXT); parts_usr enddef;
%-------------------------------------------------------------------------------------------------
-def read_command(expr n)(text TXT)=
+def read_mcf(expr n)(text TXT)=
begingroup
save list_cnt,nCP;
if unknown inside_def_MC:: set_def_MC fi
@@ -397,28 +390,28 @@ vardef read_number(text TXT)=
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def fuse_ring(expr a,b) =
- CP(_jp_bond,a) CP(_rot_ang,180) CP(_get_len,a) CP(_com,5)
+ CP(_jp_bond,a) CP(_rot_ang,180) CP(_get_len,a) CP(_com,_len_s)
CP(_chg_len,_ring_len) for i==1 upto b-2:: CP(_mk_bond,360 DIV b) endfor
- CP(_com,6) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi
+ CP(_com,_len_e) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi
enddef;
%-------------------------------------------------------------------------------------------------
def fuse_ring_bonds(expr a,b,c) =
- CP(_jp_bond,xpart(a)) CP(_rot_ang,180) CP(_com,5)
+ CP(_jp_bond,xpart(a)) CP(_rot_ang,180) CP(_com,_len_s)
if b==6:: CP(_chg_len,_ring_len) for i==1 upto c-1:: CP(_mk_bond,60) endfor
elseif b==5:: if c==2:: CP(_chg_len,1.25) CP(_mk_bond,80)
elseif c==3:: CP(_chg_len,1.1) CP(_mk_bond,78) CP(_mk_bond,72) fi
elseif b==4:: CP(_chg_len,1.225) CP(_mk_bond,105) fi
- CP(_com,6) if ypart(a)<=0:: CP(_cyc_eB,ypart(a)-c+1) else:: CP(_cyc_eB,ypart(a)) fi
+ CP(_com,_len_e) if ypart(a)<=0:: CP(_cyc_eB,ypart(a)-c+1) else:: CP(_cyc_eB,ypart(a)) fi
enddef;
%-------------------------------------------------------------------------------------------------
-def fuse_ring_rate(expr a,b,c) =
- CP(_jp_bond,a) CP(_rot_ang,180) CP(_com,5) CP(_chg_len,c DIV 10)
+def fuse_ring_size(expr a,b,c) =
+ CP(_jp_bond,a) CP(_rot_ang,180) CP(_com,_len_s) CP(_chg_len,c DIV 10)
if b==5:: CP(_mk_bond,72-((c-9) MUL 1.5)) CP(_mk_bond,72+(c-9)) CP(_mk_bond,72+(c-9))
elseif b==6:: CP(_mk_bond,60-(c-8)) for i==1 upto 3:: CP(_mk_bond,60+((c-8) DIV 2)) endfor
elseif b==7:: CP(_mk_bond,360 DIV 7-(c-8))
for i==1 upto 4:: CP(_mk_bond,360 DIV 7+((c-8) DIV 2.5)) endfor
elseif b==8:: CP(_mk_bond,45-(c-8)) for i==1 upto 5:: CP(_mk_bond,45+((c-8) DIV 3)) endfor fi
- CP(_com,6) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi
+ CP(_com,_len_e) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi
enddef;
%==================================================================================================
vardef change_bond(expr a,b) =
@@ -438,7 +431,7 @@ vardef change_bond(expr a,b) =
elseif b==_connect_at:: CP(_cyc_sB,a)
elseif comD[b][1]==_fuse::
if comD[b][2]<=6:: fuse_ring_bonds(a,parD[b][1],comD[b][2])
- elseif (comD[b][2]>=11)and(comD[b][2]<=15):: fuse_ring_rate(a,parD[b][1],comD[b][2])
+ elseif (comD[b][2]>=11)and(comD[b][2]<=15):: fuse_ring_size(a,parD[b][1],comD[b][2])
fi
fi
elseif color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorB,cntC)
@@ -455,13 +448,14 @@ vardef change_atom(expr a,b)=
nCP:=0;
if numeric b::
if (b>=H)and(b<=U):: CPe(a)(_chg_atom,b)
- ef b==NH:: CPe(a)(_chg_atom,N) CP(_set_clr,1) CPx(a)(_groupH,H) CP(_set_clr,0)
+ ef b==NH:: CPe(a)(_chg_atom,N) CP(_tmp_line,nl)
+ CP(_com,_group_s) CPx(a)(_group_si,H) CP(_com,_group_e)
ef b==_jump_at:: CP(_jp_atom,a)
ef b==_connect_at:: CP(_cyc,a)
fi
ef pair b::
if xpart(b)==_set_and:: CP(_set_and,ypart(b)) CP(_chg_charge,a)
- else:: CP(_set_clr,1) CPx(a)(xpart(b),ypart(b)) CP(_set_clr,0)
+ else:: CP(_com,_group_s) CPx(a)(xpart(b),ypart(b)) CP(_com,_group_e)
fi
ef color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorA,cntC)
fi
@@ -753,25 +747,20 @@ def MC(text TXT)=
margin_lr:=xpart(fmargin);
margin_tb:=ypart(fmargin);
%===============================================================================================
- read_command(0)(TXT,|||);
- %-----------------------------------------------------------------------------------------------
- proc_bond_atom(1);
- %-----------------------------------------------------------------------------------------------
- if (cnt_group>0)and(sw_group_off=0): read_group(1); fi
- %-----------------------------------------------------------------------------------------------
+ read_mcf(0)(TXT,|||);
+ proc_bond_atom(0)(1);
+ if (cnt_group>0)and(sw_group_off=0): read_group(0)(1); fi
char_use_check;
%-scaling---------------------------------------------------------------------------------------
- if blength>1: blen:=blength; proc_size_setup; proc_skeleton; proc_scaling;
- elseif blength>0:
- blen:=font_wd*blength;
- proc_size_setup; proc_skeleton; proc_scaling;
+ if blength>1: blen:=blength; proc_size_setup; proc_skeleton(0); proc_scaling;
+ elseif blength>0: blen:=font_wd*blength; proc_size_setup; proc_skeleton(0); proc_scaling;
else:
blen:=3mm;
proc_size_setup;
if xpart(msize)<1: m_wd:=font_wd*xpart(msize); else: m_wd:=font_wd; fi
if ypart(msize)<1: m_ht:=font_ht*ypart(msize); else: m_ht:=font_ht; fi
for i=1 upto 6:
- proc_skeleton; proc_scaling;
+ proc_skeleton(0); proc_scaling;
if (mol_ht/mol_wd)>(m_ht/m_wd):
if ypart(msize)>1: factor:=ypart(msize)/mol_ht;
else: factor:=((font_ht-2margin_tb)*ypart(msize))/mol_ht;
@@ -786,7 +775,7 @@ def MC(text TXT)=
proc_size_setup;
endfor
if blen>max_blength:
- blen:=max_blength; proc_size_setup; proc_skeleton; proc_scaling;
+ blen:=max_blength; proc_size_setup; proc_skeleton(0); proc_scaling;
fi
fi
%-draw atom--------------------------------------------------------------------------------------
@@ -858,23 +847,23 @@ def MC(text TXT)=
endgroup;
if ((sw_aux_out>=1)or(sw_rep_out=1)or(sw_mol_out>=1)or(sw_calc=1))and(f_MP=1): proc_calc; fi
%-----------------------------------------------------------------------------------------------
-%%%% message "count of usr ="& decimal(parts_usr) &" "& decimal(parts_usr-parts_usr_start);
-%%%% message "count of int ="& decimal(parts_int) &" "& decimal(parts_int-parts_int_start);
+%%% message "parts_usr ="& decimal(parts_usr) &" "& decimal(parts_usr-parts_usr_start);
+%%% message "parts_int ="& decimal(parts_int) &" "& decimal(parts_int-parts_int_start);
%-----------------------------------------------------------------------------------------------
enddef;
%-------------------------------------------------------------------------------------------------
def add_group=
if f_at=1: nE:=getA(adrT); check_adrA(nE); else: nE:=cntA+1; fi
cnt_group:=cnt_group+1; cnt_group[cnt_group]:=0;
- store_group(_jp_A_abs,nE) store_group(_com,5)
- if lineT<>0: store_group(_tmp_line,lineT) fi
+ store_group(_jp_absA,nE) store_group(_com,_len_s)
+ if lineT<>nb: store_group(_tmp_line,lineT) fi
if rotT<>0: store_group(_rot_ang,rotT) fi
if lenT<>crR: store_group(_chg_len,lenT) fi
if envT<>hz: store_group(_chg_env,envT) fi
if lineT=nl: store_group(_chg_len,_size_atom) store_group(_adj_ang,0) fi
- if lineT<>0: store_group(_mk_bond,0) fi
+ if lineT<>nb: store_group(_mk_bond,0) fi
for i=1 upto cntD[par]: store_group(comD[par][i],parD[par][i]) endfor
- store_group(_com,6) store_group(_com,3)
+ store_group(_com,_len_e) store_group(_com,_term)
if f_lineT=0: lineT:=si; fi
if f_lenT=0: lenT:=crR; fi
if f_rotT=0: rotT:=0; fi
@@ -886,16 +875,16 @@ def store_group(expr a,b)=
com_group[cnt_group][cnt_group[cnt_group]]:=a; par_group[cnt_group][cnt_group[cnt_group]]:=b;
enddef;
%=================================================================================================
-def read_group(expr n)=
+def read_group(expr a)(expr n)=
save_cnt_group:=cnt_group;
- save_cntD:=cntD[0];
+ save_cntD:=cntD[a];
for i=n upto cnt_group:
for j=1 upto cnt_group[i]:
- cntD[0]:=cntD[0]+1; comD[0][cntD[0]]:=com_group[i][j]; parD[0][cntD[0]]:=par_group[i][j];
+ cntD[a]:=cntD[a]+1; comD[a][cntD[a]]:=com_group[i][j]; parD[a][cntD[a]]:=par_group[i][j];
endfor
endfor
- proc_bond_atom(save_cntD+1);
- if cnt_group>save_cnt_group: read_group(save_cnt_group+1); fi
+ proc_bond_atom(a)(save_cntD+1);
+ if cnt_group>save_cnt_group: read_group(a)(save_cnt_group+1); fi
enddef;
%=================================================================================================
def draw_frame(expr PS,LX,LY,PN)=
@@ -955,36 +944,29 @@ def char_use_check=
fi
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-def proc_bond_atom(expr n)=
+def proc_bond_atom(expr a)(expr n)=
f_bra:=f_end:=f_term:=rotT:=f_lineT:=f_rotT:=f_lenT:=f_envT:=envT:=envB:=strAT:=f_at:=0;
bondL:=crR; lenT:=crR; sB[0]:=0; eB[0]:=1; lineT:=si;
andAT:=markA:=markB:=0;
%-----------------------------------------------------------------------------------------------
- for i=n upto cntD[0]:
- com:=comD[0][i]; par:=parD[0][i];
- if com=_mk_bond: if (par=0)and(rotT<>0): rotT:=0; fi add_atom;
- ef com=_set_adr: adrT:=par;
- ef com=_com: if par=1: markA:=cntA; markB:=cntB; elseif par=2: markA:=markB:=0;
- elseif par=3: termA;
- elseif par=5: temp_lenE:=bondL; elseif par=6: bondL:=temp_lenE;
- elseif par=7: temp_lenF:=bondL; elseif par=8: bondL:=temp_lenF; fi
- ef com=_set_clr:
- f_at:=par;
- if par=1: if lineT<>si: f_lineT:=1; fi if rotT<>0: f_rotT:=1; fi
- if lenT<>crR: f_lenT:=1; fi if envT<>hz: f_envT:=1; fi
- ef par=0: f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=envT:=0; lineT:=si; lenT:=crR; fi
+ for i=n upto cntD[a]: com:=comD[a][i]; par:=parD[a][i];
+ if com=_mk_bond: if (par=0)and(rotT<>0): rotT:=0; fi add_atom;
+ ef com=_set_adr: adrT:=par;
+ ef com=_com: if par=_mark: markA:=cntA; markB:=cntB;
+ ef par=_moff: markA:=markB:=0;
+ ef par=_term: termA;
+ ef par=_len_s: temp_lenE:=bondL; ef par=_len_e: bondL:=temp_lenE;
+ ef par=_len_ss: temp_lenF:=bondL; ef par=_len_ee: bondL:=temp_lenF;
+ ef par=_group_s: f_at:=1; if lineT<>si: f_lineT:=1; fi if rotT<>0: f_rotT:=1; fi
+ if lenT<>crR: f_lenT:=1; fi if envT<>hz: f_envT:=1; fi
+ ef par=_group_e: f_at:=0; f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=envT:=0;
+ lineT:=si; lenT:=crR;
+ fi
ef com=_set_atom: strAT:=par;
- ef com=_groupA: add_group;
- ef com=_groupB: lineT:=dm; add_group;
- ef com=_groupC: lineT:=wf; add_group;
- ef com=_groupD: lineT:=zf; add_group;
- ef com=_groupE: lineT:=nl; add_group;
- ef com=_groupF: lineT:=0; add_group;
- ef com=_groupG: lineT:=wv; add_group;
- ef com=_groupH: lineT:=nl; lenT:=_size_atom; add_group;
- ef com=_jp_bond: termA; nA:=getB(par); check_adrB(nA); sB[cntB+1]:=sB[nA]; f_bra:=1;
- ef com=_jp_atom: termA; nA:=getA(par); check_adrA(nA); sB[cntB+1]:=nA; f_bra:=1;
- ef com=_jp_A_abs: sB[cntB+1]:=par; f_bra:=1; temp_cntB:=cntB;
+ ef com=_group_si: add_group;
+ ef com=_jp_bond: termA; nA:=getB(par); check_adrB(nA); sB[cntB+1]:=sB[nA]; f_bra:=1;
+ ef com=_jp_atom: termA; nA:=getA(par); check_adrA(nA); sB[cntB+1]:=nA; f_bra:=1;
+ ef com=_jp_absA: sB[cntB+1]:=par; f_bra:=1; temp_cntB:=cntB;
ef com=_chg_atom: numS[getA(adrT)]:=parD[par][1];
ef com=_chg_len: if par=_ring_len: bondL:=ringL; else: bondL:=par; fi
ef com=_get_len: if par=_tmp_len: if bondL=crR: bondL:=lenT; fi
@@ -1024,38 +1006,33 @@ def check_adrA(expr n)=
enddef;
def check_adrB(expr n)= if (n>cntB)or(n<=0): errmessage("cntB=[ "&decimal(n)&" ]"); fi enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-def proc_skeleton=
- begingroup
- save posBs,posBe;
- pair posBs,posBe;
- markA:=markB:=cntA:=cntB:=f_end:=f_bra:=rotT:=f_term:=f_at:=0;
+def proc_skeleton(expr a)=
+ markA:=markB:=cntA:=cntB:=f_end:=f_bra:=rotT:=f_term:=0;
envT:=envB:=f_lineT:=f_rotT:=f_lenT:=f_envT:=0; lineT:=si; angT:=mangle;
angA[0]:=angB[0]:=angX[0]:=0; posA[0]:=posBs:=posBe:=(0,0);
%-----------------------------------------------------------------------------------------------
- for i=1 upto cntD[0]:
- com:=comD[0][i]; par:=parD[0][i];
- if com=_mk_bond: if (par=0)and(rotT<>0):par:=rotT; rotT:=0; fi add_bond(par);
- ef com=_com: if par=1: markA:=cntA; markB:=cntB; elseif par=2: markA:=markB:=0;
- elseif par=3: termB; fi
+ for i=1 upto cntD[a]: com:=comD[a][i]; par:=parD[a][i];
+ if com=_mk_bond: if (par=0)and(rotT<>0):par:=rotT; rotT:=0; fi add_bond(par);
+ ef com=_com: if par=_mark: markA:=cntA; markB:=cntB;
+ ef par=_moff: markA:=markB:=0; ef par=_term: termB;
+ ef par=_group_e: lineT:=si; lenT:=crR; rotT:=envT:=0; fi
ef com=_jp_bond: termB; nA:=getB(par); posBs:=posA[sB[nA]]; angT:=angB[nA]; f_bra:=1; rotT:=0;
ef com=_jp_atom: termB; adrT:=getA(par); posBs:=posA[adrT]; angT:=angX[adrT]; f_bra:=1; rotT:=0;
- ef com=_jp_A_abs: adrT:=par; posBs:=posA[adrT];
- angT:=angX[adrT]; f_bra:=1; rotT:=0; temp_cntB:=cntB;
+ ef com=_jp_absA: adrT:=par; posBs:=posA[adrT];
+ angT:=angX[adrT]; f_bra:=1; rotT:=0; temp_cntB:=cntB;
ef com=_adj_ang: if (angT<40)or(angT>320): angT:=0;
- ef angT<140: angT:=90; ef angT<220: angT:=180; else: angT:=270; fi
+ ef angT<140: angT:=90; ef angT<220: angT:=180; else: angT:=270; fi
ef com=_rot_ang: angT:=(angT+par) mod 360;
ef com=_tmp_rot: rotT:=par;
- ef (com>=_groupA)and(com<=_groupH): rotT:=0;
+ ef com=_group_si: rotT:=0;
ef com=_chg_env: envB:=par;
ef com=_tmp_env: envT:=par;
- ef com=_set_clr: f_at:=par; if par=0: lineT:=si; lenT:=crR; rotT:=envT:=0; fi
ef com=_cyc: f_end:=1; proc_cyc(getA(par));
ef com=_cyc_sB: f_end:=1; proc_cyc(sB[getB(par)]);
ef com=_cyc_eB: f_end:=1; proc_cyc(eB[getB(par)]);
else:
fi
endfor
- endgroup
enddef;
%-------------------------------------------------------------------------------------------------
def add_bond(expr ROT)=
@@ -1070,9 +1047,7 @@ def add_bond(expr ROT)=
if lenB[cntB+1]=_size_atom: posBe:=sfB(posBs,atom_wd,angT);
else:
nA:=lenB[cntB+1];
- if nA<0: nB:=glu_atom(adrT)+glu_atom(cntA+1); nA:=abs(nA);
- else: nB:=0;
- fi
+ if nA<0: nB:=glu_atom(adrT)+glu_atom(cntA+1); nA:=abs(nA); else: nB:=0; fi
posBe:=sfB(posBs,nA*blen+nB,angT);
fi
posA[cntA+1]:=posBe; f_term:=0;
@@ -1098,19 +1073,13 @@ def termA=
enddef;
%--------------------------------------------------------------------------------------------------
def termB=
- if f_term=0:
- if f_bra=0: cntA:=cntA+1; angX[cntA]:=angT mod 360; else:f_bra:=0; fi
- f_term:=1;
- fi
+ if f_term=0: if f_bra=0: cntA:=cntA+1; angX[cntA]:=angT mod 360; else:f_bra:=0; fi f_term:=1; fi
enddef;
%--------------------------------------------------------------------------------------------------
def proc_cyc(expr n)= add_bond(angle(posA[n]-posBs)-angT); enddef;
%--------------------------------------------------------------------------------------------------
vardef glu_atom(expr NUM)=
- if numS[NUM]<>0:
- nE:=angT mod 90; nF:=0.5atom_wd; (iif(nE<45,sind(nE),cosd(nE))*nF)++nF
- else: 0
- fi
+ if numS[NUM]<>0: nE:=angT mod 90; nF:=0.5atom_wd;(iif(nE<45,sind(nE),cosd(nE))*nF)++nF else: 0 fi
enddef;
%--------------------------------------------------------------------------------------------------
vardef proc_env(expr ANG,ENV)=
@@ -1220,6 +1189,7 @@ def draw_bond(expr NUM)=
fill sfB(Ls,ww,am)--Le--sfB(Ls,ww,ap)--cycle Cp(col);
ef nL=bd_: erase draw subpath(0.15,0.85) of zA wpcs 1.6bondgap;
draw zA withpen penrazor rotated ap scaled bondgap Cp(col);
+ ef nL=nb:
fi
endgroup
enddef;
@@ -1252,48 +1222,71 @@ lr:='(60 for i==1 upto 10:: ,-60,60 endfor); rl:='(-60,lr);
for i=3 upto 20: ?[i]:='(|:,(_get_len,_ring_len),<((-180 DIV i)-90)
for j==2 upto i:: ,(360 DIV i) endfor,(_cyc_sB,1-i),:|); endfor
Ph:=Ph1:='(?6,(_dl,-2),(_dl,-4),(_dl,-6)); Ph2:='(?6,(_dl,-1),(_dl,-3),(_dl,-5));
-!:=!1:='((_mk_bond,_arg_ang)); !!:='(!,(_set_adr,-1),(_set_line,db));
-!!!:='(!,,(_set_adr,-1),(_set_line,tm)); !0:='(<180,180);
+!:=!1:='((_mk_bond,_arg_ang)); !!:='(!~db); !!!:='(!~tm); !0:='(<180,180);
for i=2 upto 20: ![i]:='(|:,(_get_len,_tmp_len),! for j==2 upto i::,! endfor ,:|); endfor
-Me:='(); Et:='(!); Pr:=!x2:='(!,!); Bu:=!x3:='(!,!,!);
+Me:='(); Et:='(!); Pr:='(!,!); Bu:='(!,!,!);
for i=4,5,6: for j=2 upto i-2: ?[i][j]:='((_fuse,i),(j,0)); endfor endfor
for i=5,6,7,8: for j=11 upto 15: ?[i][j]:='((_fuse,i),(j,0)); endfor endfor
%=================================================================================================
-H :='("H");C:='("C");N:='("N");O:='("O");S:='("S");P:='("P");F:='("F");I:='("I");
-Si:='("{Si}");Al:='("{Al}");Mg:='("{Mg}");Zn:='("{Zn}");As:='("{As}");Cu:='("{Cu}");
-Ag:='("{Ag}");Au:='("{Au}");Sn:='("{Sn}");Cl:='("{Cl}");Br:='("{Br}");Li:='("{Li}");
+H :='("H");C:='("C");N:='("N");O:='("O");S:='("S");P:='("P");F:='("F");I:='("I");K:='("K");
+Si:='("{Si}");Al:='("{Al}");Mg:='("{Mg}");Zn:='("{Zn}");As:='("{As}");Co:='("{Co}");Cu:='("{Cu}");
+Ag:='("{Ag}");Au:='("{Au}");Sn:='("{Sn}");Cl:='("{Cl}");Br:='("{Br}");Li:='("{Li}");Cr:='("{Cr}");
Na:='("{Na}");Ca:='("{Ca}");Hg:='("{Hg}");Ni:='("{Ni}");Ti:='("{Ti}");U:='("U");
-H[1]:='("{H^+^}");H[-1]:='("{H^-^}");C[1]:='("{C^+^}");C[-1]:='("{C^-^}");
-O[1]:='("{O^+^}");O[-1]:='("{O^-^}");N[1]:='("{N^+^}");N[-1]:='("{N^-^}");
-S[1]:='("{S^+^}");S[-1]:='("{S^-^}");P[1]:='("{P^+^}");P[-1]:='("{P^-^}");
+B:='("B");D:='("D");Fe:='("{Fe}");Mn:='("{Mn}");Se:='("{Se}");
+H[1]:= '("{H^+^}"); H[-1]:='("{H^-^}"); C[1]:='("{C^+^}"); C[-1]:='("{C^-^}");
+O[1]:= '("{O^+^}"); O[-1]:='("{O^-^}"); N[1]:='("{N^+^}"); N[-1]:='("{N^-^}");
+S[1]:= '("{S^+^}"); S[-1]:='("{S^-^}"); P[1]:='("{P^+^}"); P[-1]:='("{P^-^}");
Li[1]:='("{Li^+^}"); Na[1]:='("{Na^+^}"); Cl[-1]:='("{Cl^-^}"); Br[-1]:='("{Br^-^}");
%-------------------------------------------------------------------------------------------------
-R:='("R"); R1:='("{R^1^}"); R2:='("{R^2^}"); R3:='("{R^3^}"); R4:='("R^4^"); R5:='("{R^5^}");
+R:='("R"); R1:='("{R^1^}"); R2:='("{R^2^}"); R3:='("{R^3^}"); R4:='("R^4^"); R5:='("{R^5^}");
+R6:='("R6"); R7:='("{R^7^}"); R8:='("{R^8^}"); R9:='("{R^9^}"); R10:='("R^10^"); R11:='("{R^11^}");
%-------------------------------------------------------------------------------------------------
CHO:='("CHO"); OH:='("OH"); COOH:='("COOH"); CH2:='("C{H_2_}"); CH3:='("C{H_3_}"); CN:='("CN");
-NH2:='("N{H_2_}"); NO2:='("N{O_2_}"); SH:='("SH"); SO3:='("S{O_3_}"); NH:='(N,(_groupE,H));
-NMe:=N!:='(N,/Me); iPr:=Me!:='(/Me,60); tBu:='(/Me,/Me^60,60);
-SO:='(S,//O); SOO :='(S,//O^-35,//O^35);
-OMe:=O!:='(O,!); OEt:=O!2:='(O,!x2); OPr:=O!3:='(O,!x3); OiPr:=OMe!:='(O,!,iPr);
-SMe:=S!:='(S,!); SEt:=S!2:='(S,!x2); SPr:=S!3:='(S,!x3); SiPr:=SMe!:='(S,!,iPr);
-COO:='(//O,!,O); COOMe:=COO!:='(COO,!); COOEt:=COO!2:='(COO,!x2); COOiPr:=COOMe!:='(COO,!,iPr);
-COOPr:=COO!3:='(COO,!x3); COOtBu:='(COO,!,tBu); COMe:=CO!:='(//O,!); COEt:=CO!2:='(//O,!x2);
-OCOMe:=OCO!:='(O,!,//O,!); NMeMe:=NMe!:='(N!,!); NHCOMe:=NHCO!:='(NH,!,//O,!);
-NHiPr:=NHMe!:='(NH,!,iPr); NHtBu:='(NH,!,tBu); NHMe:=NH!:='(NH,!); NHEt:=NH!2:='(NH,!x2);
-!NH!:='(!,NH,!); !CO!:='(!,//O,!); !OH:='(!,OH); !SH:='(!,SH); !NH2:='(!,NH2); !OMe:=!O!:='(!,OMe);
-!COOH:='(!,COOH); !CH3:='(!,CH3); !CN:='(!,CN); !iPr:=!Me!:='(!,iPr); !tBu:='(!,tBu); !Ph:='(!,Ph);
-!CHO:='(!,CHO); !NO2:='(!,NO2); !Cl:='(!,Cl); !F:='(!,F);
-!?3:='(!,?3); !?4:='(!,?4); !?5:='(!,?5); !?6:='(!,?6); CF2:='(/F,60,F); CCl2:='(/Cl,60,Cl);
-CBr2:='(/Br,60,Br); CF3:='(/F,/F^60,60,F); CCl3:='(/Cl,/Cl^60,60,Cl); CBr3:='(/Br,/Br^60,60,Br);
+NH2:='("N{H_2_}"); NO2:='("N{O_2_}"); SH:='("SH"); SO3:='("S{O_3_}"); NH:='(N,/H~nl);
+%-------------------------------------------------------------------------------------------------
+NMe:=N!:='(N,/_); iPr:=Me!:='(/_,60); tBu:='(/_,/_^60,60); SO:='(S,//O); SOO :='(S,//O^-35,//O^35);
+OMe:=O!:='(O,!); OEt:=O!2:='(O,!,!); OPr:=O!3:='(O,!,!,!); OiPr:=OMe!:='(O,!,iPr);
+SMe:=S!:='(S,!); SEt:=S!2:='(S,!,!); SPr:=S!3:='(S,!,!,!); SiPr:=SMe!:='(S,!,iPr);
+%-------------------------------------------------------------------------------------------------
+COO:='(//O,!,O); COOMe:=COO!:='(COO,!); COOEt:=COO!2:='(COO,!,!); COOiPr:=COOMe!:='(COO,!,iPr);
+COOPr:=COO!3:='(COO,!,!,!); COOtBu:='(COO,!,tBu);
+COMe:=CO!:='(//O,!); COEt:=CO!2:='(//O,!,!); COPr:=CO!3:='(//O,!,!,!);
+OCOMe:=OCO!:='(O,!,//O,!); NMeMe:=NMe!:='(N!,!); NMeEt:=NMe!2:='(N!,!,!); NMePr:=NMe!3:='(N!,!,!,!);
+NHCOMe:=NHCO!:='(NH,!,//O,!); NHiPr:=NHMe!:='(NH,!,iPr); NHtBu:='(NH,!,tBu); NHMe:=NH!:='(NH,!);
+NHEt:=NH!2:='(NH,!,!); NHPr:=NH!3:='(NH,!,!,!);
+%--------------------------------------------------------------------------------------------------
+!OH:='(!,OH); !SH:='(!,SH); !NH2:='(!,NH2);
+!COMe:=!CO!:='(!,//O,!); !COEt:=!CO!2:='(!,CO!2); !COPr:=!CO!3:='(!,CO!3);
+!OMe:=!O!:='(!,O!); !OEt:=!O!2:='(!,O!2); !OPr:=!O!3:='(!,O!3); !OiPr:=!OMe!:='(!,OMe!);
+!SMe:=!S!:='(!,S!); !SEt:=!S!2:='(!,S!2); !SPr:=!S!3:='(!,S!3); !SiPr:=!SMe!:='(!,SMe!);
+!NHMe:=!NH!:='(!,NH!); !NHEt:=!NH!2:='(!,NH!2); !NHPr:=!NH!3:='(!,NH!3); !NHiPr:=!NHMe!:='(!,NHMe!);
+!COOH:='(!,COOH); !COOMe:=!COO!:='(!,COO!); !COOEt:=!COO!2:='(!,COO!2); !COOPr:=!COO!3:='(!,COO!3);
+!COOtBu:='(!,COOtBu); !OCOMe:=!OCO!:='(!,OCO!); !NMeMe:=!NMe!:='(!,NMe!);
+!NMeEt:=!NMe!2:='(!,NMe!2); !NMePr:=!NMe!3:='(!,NMe!3);
+!CH3:='(!,CH3); !CN:='(!,CN); !iPr:=!Me!:='(!,iPr); !tBu:='(!,tBu);
+!CHO:='(!,CHO); !NO2:='(!,NO2); !Cl:='(!,Cl); !Br:='(!,Br); !F:='(!,F);
+!?3:='(!,?3); !?4:='(!,?4); !?5:='(!,?5); !?6:='(!,?6); !?7:='(!,?7); !?8:='(!,?8); !Ph:='(!,Ph);
+%--------------------------------------------------------------------------------------------------
+!2OH:='(!,!,OH); !2COOH:='(!,!,COOH); !2NH2:='(!,!,NH2); !2CN:='(!,!,CN); !2NO2:='(!,!,NO2);
+!2CH3:='(!,!,CH3); !2CHO:='(!,!,CHO); !2SH:='(!,!SH); !2tBu:='(!,!,tBu); !2Cl:='(!,!,Cl);
+!2?5:='(!,!,?5); !2?6:='(!,!,?6); !2Ph:='(!,!,Ph);
+%--------------------------------------------------------------------------------------------------
+CF2:='(/F,60,F); CCl2:='(/Cl,60,Cl); CBr2:='(/Br,60,Br);
+CF3:='(/F,/F^60,60,F); CCl3:='(/Cl,/Cl^60,60,Cl); CBr3:='(/Br,/Br^60,60,Br);
+%--------------------------------------------------------------------------------------------------
+xCH3:='(/H,/H^60,60,H); xNH:='(N,/H); xNH2:='(N,/H,60,H); xNO2:='(N,//O,60~dm,O); xOH:='(O,!,H);
+xCHO:='(//O,!,H); xCOOH:='(//O,!,O,!,H); xCN:='(!~tm,N); xSH:='(S,!,H);
%==================================================================================================
init_par(parameter_list);
%--------------------------------------------------------------------------------------------------
-%%%%%%message "count of parts_usr =" & decimal(parts_usr);
+parts_emb_end:=parts_usr;
+%%%%% message "parts_emb =" & decimal(parts_emb_start) &" => " & decimal(parts_emb_end);
%--------------------------------------------------------------------------------------------------
def expand_set=
- CH3:='(/H,/H^60,60,H); NH:='(N,/H); NH2:='(N,/H,60,H); NO2:='(N,//O,60~dm,O); OH:='(O,!,H);
- CHO:='(//O,!,H); COOH:='(//O,!,O,!,H); CN:='(!~tm,N); SH:='(S,!,H); !CH3:='(!,CH3); !OH:='(!,OH);
- !NH2:='(!,NH2); !CHO:='(!,CHO); !COOH:='(!,COOH); !CN:='(!,CN); !SH:='(!,SH); !NO2:='(!,NO2);
+ CH3:=xCH3; NH:=xNH; NH2:=xNH2; NO2:=xNO2; OH:=xOH; CHO:=xCHO; COOH:=xCOOH; CN:=xCN; SH:=xSH;
+ !CH3:='(!,CH3); !OH:='(!,OH); !NH2:='(!,NH2); !CHO:='(!,CHO); !COOH:='(!,COOH); !CN:='(!,CN);
+ !SH:='(!,SH); !NO2:='(!,NO2); !2CH3:='(!,!CH3); !2OH:='(!,!OH); !2NH2:='(!,!NH2);
+ !2CHO:='(!,!CHO); !2COOH:='(!,!COOH); !2CN:='(!,!CN); !2SH:='(!,!SH); !2NO2:='(!,!NO2);
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def char_size_set(expr WD)(expr HT)(expr STR)=
@@ -1454,7 +1447,7 @@ fi
endgroup
enddef;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-def blank_str:= " " enddef;
+def blank_str:= " " enddef;
vardef fixed_r(expr n)(expr s)= (substring(0,n-length(s)) of blank_str)&s enddef;
vardef fixed_l(expr n)(expr s)= s&(substring(0,n-length(s)) of blank_str) enddef;
vardef fdr(expr n)(expr s)=fixed_r(n)(decimal(s)) enddef;
@@ -1496,25 +1489,25 @@ def STb(expr ATOM)(text TXT)=
enddef;
%==================================================================================================
tbl_cnt:=0;
-STa("C" ,12.0107, 12.0000000); STa("H" , 1.00794, 1.00782503223);
-STa("{Al}",26.9815, 26.98153853); STa("{As}",74.9216, 74.92159457);
-STa("B" ,10.811, 11.00930536); STa("{Br}",79.904, 78.9183376);
-STa("{Ca}",40.078, 39.962590863); STa("{Cl}",35.453, 34.968852);
-STa("{Co}",58.933194, 58.93319429); STa("{Cr}",51.9961, 51.94050623);
-STa("{Cu}",63.546, 62.92959772); STa("D" ,2.012, 2.01410177812);
-STa("F" ,18.9984, 18.99840316273); STa("{Fe}",55.845, 55.93493633);
-STa("{Hg}",200.59, 201.97064340); STa("I" ,126.90447,126.9044719);
-STa("K" ,39.0983, 38.9637064864); STa("{Li}",6.941, 7.0160034366);
-STa("{Mg}",24.305, 23.985041697); STa("{Mn}",54.938044, 54.93804391);
-STa("N" ,14.0067, 14.00307400443); STa("{N^+^}",14.0067, 14.00307400443);
+STa("C" ,12.0107, 12.0000000); STa("H" , 1.00794, 1.00782503223);
+STa("{Al}",26.9815, 26.98153853); STa("{As}",74.9216, 74.92159457);
+STa("B" ,10.811, 11.00930536); STa("{Br}",79.904, 78.9183376);
+STa("{Ca}",40.078, 39.962590863); STa("{Cl}",35.453, 34.968852);
+STa("{Co}",58.933194, 58.93319429); STa("{Cr}",51.9961, 51.94050623);
+STa("{Cu}",63.546, 62.92959772); STa("D" ,2.012, 2.01410177812);
+STa("F" ,18.9984, 18.99840316273); STa("{Fe}",55.845, 55.93493633);
+STa("{Hg}",200.59, 201.97064340); STa("I" ,126.90447,126.9044719);
+STa("K" ,39.0983, 38.9637064864); STa("{Li}",6.941, 7.0160034366);
+STa("{Mg}",24.305, 23.985041697); STa("{Mn}",54.938044, 54.93804391);
+STa("N" ,14.0067, 14.00307400443); STa("{N^+^}",14.0067, 14.00307400443);
STa("{N^-^}",14.0067, 14.00307400443);
-STa("{Na}",22.98977, 22.9897692820); STa("{Ni}",58.693, 57.93534241);
-STa("O" ,15.9994, 15.99491461957); STa("{O^-^}",15.9994, 15.99491461957);
-STa("{O^p^}",15.9994, 15.99491461957); STa("P" ,30.973762, 30.97376199842);
-STa("S" ,32.065, 31.9720711744); STa("{S^p^}",32.065, 31.9720711744);
+STa("{Na}",22.98977, 22.9897692820); STa("{Ni}",58.693, 57.93534241);
+STa("O" ,15.9994, 15.99491461957); STa("{O^-^}",15.9994, 15.99491461957);
+STa("{O^p^}",15.9994, 15.99491461957); STa("P" ,30.973762, 30.97376199842);
+STa("S" ,32.065, 31.9720711744); STa("{S^p^}",32.065, 31.9720711744);
STa("{S^m^}",32.065, 31.9720711744);
-STa("{Se}",78.971, 79.9165218); STa("{Si}",28.0855, 27.97692653465);
-STa("{Sn}",118.71, 119.90220163); STa("{Ti}",47.867, 47.94794198);
+STa("{Se}",78.971, 79.9165218); STa("{Si}",28.0855, 27.97692653465);
+STa("{Sn}",118.71, 119.90220163); STa("{Ti}",47.867, 47.94794198);
STa("{Zn}",65.409, 63.92914201);
%--------------------------------------------------------------------------------------------------
STb("{H_2_}")("H","H"); STb("OH")("O","H"); STb("O{Na}")("O","{Na}"); STb("CN")("C","N");
@@ -1612,7 +1605,7 @@ def proc_report_out=
out_file_name:=out_file_rep;
printf "------------------------------------------------------------------";
printf " Molecular name = "& inf_EN;
- printf " Warnings = "&fdr(3)(warning_cnt)&" / Expanded command = "&decimal(cntD[0]);
+ printf " Warnings = "&fdr(3)(warning_cnt)&" / Expanded command = "&decimal(cntD[1]);
printf " Width * Height = " & fdr(10)(mol_wd)&" * "&fdr(10)(mol_ht);
printf " Shift width * height = "& fdr(10)(minX)&" * "&fdr(10)(minY);
printf " Bond length = "&fdr(3)(blen)&" Atom size = "&fdr(3)(atom_wd);
@@ -1736,4 +1729,4 @@ def proc_bond_class(expr n)=
else: nA:=1; nB:=0;
fi
enddef;
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%--------------------------------------------------------------------------------------------------