diff options
author | Norbert Preining <norbert@preining.info> | 2022-01-03 03:01:59 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-01-03 03:01:59 +0000 |
commit | 682f8522246e030fbbdea7391dce107754c485d3 (patch) | |
tree | d6acc984092fdb35e6525203c6b2ab7ccefaf749 /graphics | |
parent | 699dd7db121d61d809020fe9dbc0321c3e937745 (diff) |
CTAN sync 202201030301
Diffstat (limited to 'graphics')
59 files changed, 843 insertions, 559 deletions
diff --git a/graphics/asymptote/ChangeLog b/graphics/asymptote/ChangeLog index b3ed362b49..6b7b93752d 100644 --- a/graphics/asymptote/ChangeLog +++ b/graphics/asymptote/ChangeLog @@ -1,3 +1,94 @@ +commit b2ae0111b8184e26ca0ff990d9d55a13753e6a1b +Author: John Bowman <bowman@ualberta.ca> +Date: Sun Jan 2 07:44:55 2022 +1100 + + Add linecap and linejoin enums to source code for clarity. + +commit 1589f4e8733bcd2f3696d6471ebe7bdd08e9f16c +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jan 1 13:08:01 2022 -0700 + + Fix lsp crash on save. + +commit 9fe2167d3fa875d2ac08f60850bab183a25cf58b +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jan 1 10:41:29 2022 -0700 + + Update examples. + +commit 7b76b04637598965f166e77f3948aaa9ae80c803 +Author: John Bowman <bowman@ualberta.ca> +Date: Sat Jan 1 17:28:24 2022 +1100 + + Fix bug #231. + +commit 6e359f24dff133f66478179bd2b51ca400cf7937 +Author: John Bowman <bowman@ualberta.ca> +Date: Fri Dec 31 15:24:13 2021 -0700 + + Fix bug #263. + +commit d29fbefaab57f095f41f6851dc5ffe4ce5b4bbcb +Author: John Bowman <bowman@ualberta.ca> +Date: Thu Dec 30 15:27:12 2021 -0700 + + Fix issue #287. + +commit e13e777a81379c846a83f3daa7ba5c117b1af797 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Dec 29 22:58:45 2021 -0700 + + Workaround issue #206 by abandoning color.sty package for all TeX engines, + in favour of low-level specials. + +commit f10c7fd9f54e5e84a7b5287579dbb29ce45aabd3 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Dec 29 17:55:09 2021 -0700 + + Fix bug #241. + +commit c5edc7fba45c5a1c9cc46aee1c3078b84e1096c7 +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Dec 29 17:36:35 2021 -0700 + + Use byteinv in writefromRGB. + +commit 445ba2486c29b69724ad24dba4699631f39903dd +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Dec 29 14:22:23 2021 -0700 + + Fix bug #286 by implementing better fix to bug #68. + +commit 10abb84a02abb2aad19704b56a797b46ac41f96d +Author: John Bowman <bowman@ualberta.ca> +Date: Wed Dec 29 10:20:51 2021 -0700 + + Update links to gallery. + +commit 3154b07e46fc0eb637acf65f17d4d08a991580a2 +Author: John Bowman <bowman@ualberta.ca> +Date: Tue Dec 28 15:26:08 2021 -0700 + + Disable erase for svg and html output. + +commit 19d0bce77ac7772d341577ccb26519708caff7e1 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Dec 27 23:16:05 2021 -0700 + + Disable order-independent transparency if SSBO support is unavailable. + +commit f5f62621c96f76f684dcda7ce8949a5285fa5bec +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Dec 27 21:00:48 2021 -0700 + + Fix issue #285. + +commit 190ccf2773a599625c45ec3fc3a4fd709d63a555 +Author: John Bowman <bowman@ualberta.ca> +Date: Mon Dec 27 18:23:47 2021 -0700 + + Increment version to 2.74. + commit f28852ba9da596dd61f3755e67bc2a52d76c1fef Author: John Bowman <bowman@ualberta.ca> Date: Mon Dec 27 17:40:27 2021 -0700 diff --git a/graphics/asymptote/ReleaseNotes b/graphics/asymptote/ReleaseNotes index fb9044a2fa..21e4cd9ebf 100644 --- a/graphics/asymptote/ReleaseNotes +++ b/graphics/asymptote/ReleaseNotes @@ -1,3 +1,15 @@ +Release Notes for Version 2.74 + +Order-independent transparency is disabled if SSBO support is unavailable. +Embedded 3D renderings now work in inline TeX mode. The tiling pen was fixed. +Support was added for filling contour plots by quantizing color density images. +Unwanted shifting in PDF output when using non-letter size paper was fixed. +Due to its limitations, the color.sty package was abandoned in favour of +low-level specials. The bounding box contributions of the linejoin and +linecap qualifiers are now correctly taken into account. The erase command +is inhibited for svg and html output. A crash on save in the lsp server +was fixed. Links to the gallery were fixed in the documentation. + Release Notes for Version 2.73 The asygl library was updated to support embedding of WebGL and WebGL2 scenes diff --git a/graphics/asymptote/asy-keywords.el b/graphics/asymptote/asy-keywords.el index d351611f0f..faf15c4da4 100644 --- a/graphics/asymptote/asy-keywords.el +++ b/graphics/asymptote/asy-keywords.el @@ -2,7 +2,7 @@ ;; This file is automatically generated by asy-list.pl. ;; Changes will be overwritten. ;; -(defvar asy-keywords-version "2.73") +(defvar asy-keywords-version "2.74") (defvar asy-keyword-name '( and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator )) diff --git a/graphics/asymptote/asy.list b/graphics/asymptote/asy.list index 02bcd37db3..6e2b93b1ad 100644 --- a/graphics/asymptote/asy.list +++ b/graphics/asymptote/asy.list @@ -3444,8 +3444,8 @@ bounds Range(picture pic, real min, real max)(bool automin=<default>, real min=< pen[] Wheel(int NColors=<default>); void image(frame f, real[][] data, pair initial, pair final, pen[] palette, bool transpose=<default>, transform t=<default>, bool copy=<default>, bool antialias=<default>); void image(frame f, pen[][] data, pair initial, pair final, bool transpose=<default>, transform t=<default>, bool copy=<default>, bool antialias=<default>); -bounds image(picture pic=<default>, real[][] f, bounds range(picture pic, real min, real max)=<default>, pair initial, pair final, pen[] palette, bool transpose=<default>, bool copy=<default>, bool antialias=<default>); -bounds image(picture pic=<default>, real f(real, real), bounds range(picture pic, real min, real max)=<default>, pair initial, pair final, int nx=<default>, int ny=<default>, pen[] palette, bool antialias=<default>); +bounds image(picture pic=<default>, real[][] f, bounds range(picture pic, real min, real max)=<default>, pair initial, pair final, pen[] palette, int divs=<default>, bool transpose=<default>, bool copy=<default>, bool antialias=<default>); +bounds image(picture pic=<default>, real f(real, real), bounds range(picture pic, real min, real max)=<default>, pair initial, pair final, int nx=<default>, int ny=<default>, pen[] palette, int divs=<default>, bool antialias=<default>); void image(picture pic=<default>, pen[][] data, pair initial, pair final, bool transpose=<default>, bool copy=<default>, bool antialias=<default>); void image(picture pic=<default>, pen f(int, int), int width, int height, pair initial, pair final, bool transpose=<default>, bool antialias=<default>); bounds image(picture pic=<default>, pair[] z, real[] f, bounds range(picture pic, real min, real max)=<default>, pen[] palette); diff --git a/graphics/asymptote/asymptote.spec b/graphics/asymptote/asymptote.spec index 199ca1755a..079a3444a4 100644 --- a/graphics/asymptote/asymptote.spec +++ b/graphics/asymptote/asymptote.spec @@ -3,7 +3,7 @@ %global __python %{__python3} Name: asymptote -Version: 2.73 +Version: 2.74 Release: 1%{?dist} Summary: Descriptive vector graphics language diff --git a/graphics/asymptote/base/palette.asy b/graphics/asymptote/base/palette.asy index 9923e5b3aa..59cff39d72 100644 --- a/graphics/asymptote/base/palette.asy +++ b/graphics/asymptote/base/palette.asy @@ -65,7 +65,7 @@ pen[] adjust(picture pic, real min, real max, real rmin, real rmax, private real[] sequencereal; bounds image(picture pic=currentpicture, real[][] f, range range=Full, - pair initial, pair final, pen[] palette, + pair initial, pair final, pen[] palette, int divs=0, bool transpose=(initial.x < final.x && initial.y < final.y), bool copy=true, bool antialias=false) { @@ -74,6 +74,7 @@ bounds image(picture pic=currentpicture, real[][] f, range range=Full, real m=min(f); real M=max(f); + bounds bounds=range(pic,m,M); real rmin=pic.scale.z.T(bounds.min); real rmax=pic.scale.z.T(bounds.max); @@ -89,6 +90,21 @@ bounds image(picture pic=currentpicture, real[][] f, range range=Full, f[i]=map(new real(real x) {return T(min(max(x,m),M));},f[i]); } + if(divs > 0) { + int nx=f.length; + int ny=f[0].length; + real[][] data=new real[nx][ny]; + real incr=(M-m)/divs; + for(int i=0; i < nx; ++i) { + // Take center point of each bin + real[] fi=f[i]; + data[i]=sequence(new real(int j) { + return min(m+floor((fi[j]-m)/incr)*incr,M-incr); + },ny); + } + f=data; + } + initial=Scale(pic,initial); final=Scale(pic,final); @@ -109,13 +125,15 @@ bounds image(picture pic=currentpicture, real[][] f, range range=Full, bounds image(picture pic=currentpicture, real f(real, real), range range=Full, pair initial, pair final, - int nx=ngraph, int ny=nx, pen[] palette, bool antialias=false) + int nx=ngraph, int ny=nx, pen[] palette, int divs=0, + bool antialias=false) { // Generate data, taking scaling into account real xmin=pic.scale.x.T(initial.x); real xmax=pic.scale.x.T(final.x); real ymin=pic.scale.y.T(initial.y); real ymax=pic.scale.y.T(final.y); + real[][] data=new real[ny][nx]; for(int j=0; j < ny; ++j) { real y=pic.scale.y.Tinv(interp(ymin,ymax,(j+0.5)/ny)); @@ -125,7 +143,8 @@ bounds image(picture pic=currentpicture, real f(real, real), return f(Tinv(interp(xmin,xmax,(i+0.5)/nx)),y); },nx); } - return image(pic,data,range,initial,final,palette,transpose=false, + + return image(pic,data,range,initial,final,palette,divs,transpose=false, copy=false,antialias=antialias); } diff --git a/graphics/asymptote/base/patterns.asy b/graphics/asymptote/base/patterns.asy index 559e36cec1..e71690fbe9 100644 --- a/graphics/asymptote/base/patterns.asy +++ b/graphics/asymptote/base/patterns.asy @@ -13,7 +13,9 @@ frame tiling(string name, picture pic, pair lb=0, pair rt=0) /XStep "+format(s,pmax.x-pmin.x,"C")+" /YStep "+format(s,pmax.y-pmin.y,"C")+" /PaintProc {pop"); + begingroup(tiling); add(tiling,f); + endgroup(tiling); postscript(tiling,"} >> matrix makepattern /"+name+" exch def"); @@ -99,4 +101,3 @@ picture crosshatch(real H=5mm, pen p=currentpen) add(tiling,shift(H*sqrt(2))*rotate(90)*hatch(H,p)); return tiling; } - diff --git a/graphics/asymptote/base/three.asy b/graphics/asymptote/base/three.asy index fbca4b3960..ab30848444 100644 --- a/graphics/asymptote/base/three.asy +++ b/graphics/asymptote/base/three.asy @@ -3025,7 +3025,8 @@ frame embedder(object embedder(string prefix, string format), if(light.background != nullpen) box(f,light.background,Fill,above=false); } else if(!view) - label(f,graphic(prefix,"hiresbb")); + label(f,settings.inlinetex ? + "\input{"+prefix+"}" : graphic(prefix,"hiresbb")); } return f; } diff --git a/graphics/asymptote/base/v3dheadertypes.asy b/graphics/asymptote/base/v3dheadertypes.asy index cc78dfd4f4..19fad67eee 100644 --- a/graphics/asymptote/base/v3dheadertypes.asy +++ b/graphics/asymptote/base/v3dheadertypes.asy @@ -1,6 +1,6 @@ // Enum class for v3dheadertypes // AUTO-GENERATED from v3dheadertypes.csv -// Generated at 2021-12-27 17:52:27.156438 +// Generated at 2022-01-01 13:56:00.166634 struct v3dheadertypes { diff --git a/graphics/asymptote/base/v3dtypes.asy b/graphics/asymptote/base/v3dtypes.asy index 270e28faeb..3611e586ea 100644 --- a/graphics/asymptote/base/v3dtypes.asy +++ b/graphics/asymptote/base/v3dtypes.asy @@ -1,6 +1,6 @@ // Enum class for v3dtypes // AUTO-GENERATED from v3dtypes.csv -// Generated at 2021-12-27 17:52:27.075241 +// Generated at 2022-01-01 13:56:00.084723 struct v3dtypes { diff --git a/graphics/asymptote/bezierpatch.cc b/graphics/asymptote/bezierpatch.cc index c2cc059c4b..f210c538c2 100644 --- a/graphics/asymptote/bezierpatch.cc +++ b/graphics/asymptote/bezierpatch.cc @@ -732,7 +732,6 @@ void BezierTriangle::render(const triple *p, } } -#ifndef HAVE_SSBO std::vector<GLfloat> zbuffer; void transform(const std::vector<VertexData>& b) @@ -772,7 +771,6 @@ void sortTriangles() 3*sizeof(GLuint),compare); } } -#endif void Triangles::queue(size_t nP, const triple* P, size_t nN, const triple* N, size_t nC, const prc::RGBAColour* C, size_t nI, diff --git a/graphics/asymptote/configure b/graphics/asymptote/configure index 4f79832c4c..d76e36e669 100755 --- a/graphics/asymptote/configure +++ b/graphics/asymptote/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Asymptote 2.73. +# Generated by GNU Autoconf 2.69 for Asymptote 2.74. # # Report bugs to <https://sourceforge.net/projects/asymptote>. # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Asymptote' PACKAGE_TARNAME='asymptote' -PACKAGE_VERSION='2.73' -PACKAGE_STRING='Asymptote 2.73' +PACKAGE_VERSION='2.74' +PACKAGE_STRING='Asymptote 2.74' PACKAGE_BUGREPORT='https://sourceforge.net/projects/asymptote' PACKAGE_URL='' @@ -1302,7 +1302,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Asymptote 2.73 to adapt to many kinds of systems. +\`configure' configures Asymptote 2.74 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1368,7 +1368,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Asymptote 2.73:";; + short | recursive ) echo "Configuration of Asymptote 2.74:";; esac cat <<\_ACEOF @@ -1486,7 +1486,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Asymptote configure 2.73 +Asymptote configure 2.74 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2072,7 +2072,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Asymptote $as_me 2.73, which was +It was created by Asymptote $as_me 2.74, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -9464,7 +9464,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Asymptote $as_me 2.73, which was +This file was extended by Asymptote $as_me 2.74, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9526,7 +9526,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Asymptote config.status 2.73 +Asymptote config.status 2.74 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/graphics/asymptote/configure.ac b/graphics/asymptote/configure.ac index 9949b14ab3..759e3d926d 100644 --- a/graphics/asymptote/configure.ac +++ b/graphics/asymptote/configure.ac @@ -3,7 +3,7 @@ # this file. AC_PREREQ(2) -AC_INIT([Asymptote],[2.73],[https://sourceforge.net/projects/asymptote]) +AC_INIT([Asymptote],[2.74],[https://sourceforge.net/projects/asymptote]) VERSION=$PACKAGE_VERSION AC_SUBST(VERSION) m4_include([ax_pthread.m4]) diff --git a/graphics/asymptote/doc/CAD.pdf b/graphics/asymptote/doc/CAD.pdf Binary files differindex 5154e96903..b79020dd5b 100644 --- a/graphics/asymptote/doc/CAD.pdf +++ b/graphics/asymptote/doc/CAD.pdf diff --git a/graphics/asymptote/doc/FAQ/asy-faq.info b/graphics/asymptote/doc/FAQ/asy-faq.info index 9e1d3239ad..47018f683a 100644 --- a/graphics/asymptote/doc/FAQ/asy-faq.info +++ b/graphics/asymptote/doc/FAQ/asy-faq.info @@ -10,7 +10,7 @@ END-INFO-DIR-ENTRY File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir) ASYMPTOTE FREQUENTLY ASKED QUESTIONS - 2021-12-28 + 2022-01-01 This is the list of Frequently Asked Questions about Asymptote (asy). diff --git a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf Binary files differindex 3a71f1f16a..f6ffa2599b 100644 --- a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf +++ b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf diff --git a/graphics/asymptote/doc/asy-latex.dtx b/graphics/asymptote/doc/asy-latex.dtx index 7cdc5c5771..211ad202b1 100644 --- a/graphics/asymptote/doc/asy-latex.dtx +++ b/graphics/asymptote/doc/asy-latex.dtx @@ -38,7 +38,7 @@ Licence: GPL2+ %</driver> %<pkg>\ProvidesPackage{asymptote} %<*pkg> - [2021/02/06 v1.36 Asymptote style file for LaTeX] + [2021/12/29 v1.37 Asymptote style file for LaTeX] %</pkg> % %<*driver> @@ -195,7 +195,7 @@ Licence: GPL2+ % \begin{macrocode} \RequirePackage{keyval} \RequirePackage{ifthen} -\RequirePackage{color,graphicx} +\RequirePackage{graphicx} % \end{macrocode} % % \paragraph{Emulating packages} diff --git a/graphics/asymptote/doc/asy-latex.pdf b/graphics/asymptote/doc/asy-latex.pdf Binary files differindex d4883f473b..1806d3333d 100644 --- a/graphics/asymptote/doc/asy-latex.pdf +++ b/graphics/asymptote/doc/asy-latex.pdf diff --git a/graphics/asymptote/doc/asyRefCard.pdf b/graphics/asymptote/doc/asyRefCard.pdf Binary files differindex c98ebc9cb7..19366aaa29 100644 --- a/graphics/asymptote/doc/asyRefCard.pdf +++ b/graphics/asymptote/doc/asyRefCard.pdf diff --git a/graphics/asymptote/doc/asymptote.pdf b/graphics/asymptote/doc/asymptote.pdf Binary files differindex d6d333db9e..8afc6292ae 100644 --- a/graphics/asymptote/doc/asymptote.pdf +++ b/graphics/asymptote/doc/asymptote.pdf diff --git a/graphics/asymptote/doc/asymptote.sty b/graphics/asymptote/doc/asymptote.sty index 17a05d68a3..2deb265a80 100644 --- a/graphics/asymptote/doc/asymptote.sty +++ b/graphics/asymptote/doc/asymptote.sty @@ -17,7 +17,7 @@ %% Licence: GPL2+ %% \ProvidesPackage{asymptote} - [2021/02/06 v1.36 Asymptote style file for LaTeX] + [2021/12/29 v1.37 Asymptote style file for LaTeX] \def\Asymptote{{\tt Asymptote}} \InputIfFileExists{\jobname.pre}{}{} \newbox\ASYbox @@ -31,7 +31,7 @@ \ASYkeepAspecttrue \RequirePackage{keyval} \RequirePackage{ifthen} -\RequirePackage{color,graphicx} +\RequirePackage{graphicx} \IfFileExists{ifpdf.sty}{ \RequirePackage{ifpdf} }{ diff --git a/graphics/asymptote/doc/asymptote.texi b/graphics/asymptote/doc/asymptote.texi index bd9784f470..085cc77b0c 100644 --- a/graphics/asymptote/doc/asymptote.texi +++ b/graphics/asymptote/doc/asymptote.texi @@ -1385,7 +1385,7 @@ void radialshade(picture pic=currentpicture, path g, bool stroke=false, The boolean parameters @code{extenda} and @code{extendb} indicate whether the shading should extend beyond the radii @code{a} and @code{b}. Illustrations of radial shading are provided in the example files -@code{@uref{https://asymptote.sourceforge.io/gallery/shade.svg,,shade}@uref{https://asymptote.sourceforge.io/gallery/shade.asy,,.asy}}, @code{@uref{https://asymptote.sourceforge.io/gallery/ring.pdf,,ring}@uref{https://asymptote.sourceforge.io/gallery/ring.asy,,.asy}}, and @code{@uref{https://asymptote.sourceforge.io/gallery/shadestroke.pdf,,shadestroke}@uref{https://asymptote.sourceforge.io/gallery/shadestroke.asy,,.asy}}. +@code{@uref{https://asymptote.sourceforge.io/gallery/shade.svg,,shade}@uref{https://asymptote.sourceforge.io/gallery/shade.asy,,.asy}}, @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/ring.pdf,,ring}@uref{https://asymptote.sourceforge.io/gallery/PDFs/ring.asy,,.asy}}, and @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/shadestroke.pdf,,shadestroke}@uref{https://asymptote.sourceforge.io/gallery/PDFs/shadestroke.asy,,.asy}}. @cindex @code{gouraudshade} Gouraud shading using fill rule @code{fillrule} and the vertex colors in the @@ -1402,7 +1402,7 @@ void gouraudshade(picture pic=currentpicture, path g, bool stroke=false, In the second form, the elements of @code{z} are taken to be successive nodes of path @code{g}. The pens in @code{p} must belong to the same color space. Illustrations of Gouraud shading are provided in the example file -@code{@uref{https://asymptote.sourceforge.io/gallery/Gouraud.pdf,,Gouraud}@uref{https://asymptote.sourceforge.io/gallery/Gouraud.asy,,.asy}}. +@code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/Gouraud.pdf,,Gouraud}@uref{https://asymptote.sourceforge.io/gallery/PDFs/Gouraud.asy,,.asy}}. The edge flags used in Gouraud shading are documented here: @quotation @url{https://www.adobe.com/content/dam/acom/en/devnet/postscript/pdfs/TN5600.SmoothShading.pdf} @@ -1440,8 +1440,8 @@ void draw(picture pic=currentpicture, pen fillrule=currentpen, path[] g, @end verbatim @noindent Illustrations of tensor product and Coons shading are provided in the -example files @code{@uref{https://asymptote.sourceforge.io/gallery/tensor.pdf,,tensor}@uref{https://asymptote.sourceforge.io/gallery/tensor.asy,,.asy}}, @code{@uref{https://asymptote.sourceforge.io/gallery/Coons.pdf,,Coons}@uref{https://asymptote.sourceforge.io/gallery/Coons.asy,,.asy}}, @code{@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/BezierPatch.pdf,,BezierPatch}@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/BezierPatch.asy,,.asy}}, -and @code{@uref{https://asymptote.sourceforge.io/gallery/rainbow.pdf,,rainbow}@uref{https://asymptote.sourceforge.io/gallery/rainbow.asy,,.asy}}. +example files @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/tensor.pdf,,tensor}@uref{https://asymptote.sourceforge.io/gallery/PDFs/tensor.asy,,.asy}}, @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/Coons.pdf,,Coons}@uref{https://asymptote.sourceforge.io/gallery/PDFs/Coons.asy,,.asy}}, @code{@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/BezierPatch.html,,BezierPatch}@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/BezierPatch.asy,,.asy}}, +and @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/rainbow.pdf,,rainbow}@uref{https://asymptote.sourceforge.io/gallery/PDFs/rainbow.asy,,.asy}}. @cindex Function shading @cindex function shading @@ -1457,7 +1457,7 @@ shades on picture @code{pic} the interior of path @code{g} according to fill rule @code{fillrule} using the @code{PostScript} calculator routine specified by the string @code{shader}; this routine takes 2 arguments, each in [0,1], and returns @code{colors(fillrule).length} color components. -Function shading is illustrated in the example @code{@uref{https://asymptote.sourceforge.io/gallery/functionshading.pdf,,functionshading}@uref{https://asymptote.sourceforge.io/gallery/functionshading.asy,,.asy}}. +Function shading is illustrated in the example @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/functionshading.pdf,,functionshading}@uref{https://asymptote.sourceforge.io/gallery/PDFs/functionshading.asy,,.asy}}. @cindex unfill The following routine uses @code{evenodd} clipping together with the @@ -6849,7 +6849,7 @@ void annotate(picture pic=currentpicture, string title, string text, pair position); @end verbatim @noindent -Annotations are illustrated in the example file @code{@uref{https://asymptote.sourceforge.io/gallery/annotation.pdf,,annotation}@uref{https://asymptote.sourceforge.io/gallery/annotation.asy,,.asy}}. +Annotations are illustrated in the example file @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/annotation.pdf,,annotation}@uref{https://asymptote.sourceforge.io/gallery/PDFs/annotation.asy,,.asy}}. Currently, annotations are only implemented for the @code{latex} (default) and @code{tex} @TeX{} engines. @@ -7728,14 +7728,17 @@ a function @code{f}(@math{x},@math{y}) and added to a picture @code{pic}: @verbatim bounds image(picture pic=currentpicture, real f(real, real), range range=Full, pair initial, pair final, - int nx=ngraph, int ny=nx, pen[] palette, bool antialias=false) + int nx=ngraph, int ny=nx, pen[] palette, int divs=0, + bool antialias=false) @end verbatim The function @code{f} will be sampled at @code{nx} and @code{ny} evenly spaced points over a rectangle defined by the points @code{initial} and @code{final}, respecting the current graphical scaling of @code{pic}. The color space is scaled according to the -@math{z} axis scaling (@pxref{automatic scaling}). A bounds structure +@math{z} axis scaling (@pxref{automatic scaling}). If @math{@code{divs} > 1}, +the palette is quantized to @math{@code{divs}-1} values. A @code{bounds} structure for the function values is returned: +@cindex @code{bounds} @verbatim struct bounds { real min; @@ -7752,15 +7755,19 @@ or an explicit range @code{Range(real min, real max)}. Here @code{Full} specifies a range varying from the minimum to maximum values of the function over the sampling interval, while @code{Automatic} selects "nice" limits. -The example @code{@uref{https://asymptote.sourceforge.io/gallery/2Dgraphs/imagecontour.svg,,imagecontour}@uref{https://asymptote.sourceforge.io/gallery/2Dgraphs/imagecontour.asy,,.asy}} illustrates how level sets -(contour lines) can be drawn on a color density plot (@pxref{contour}). +The examples +@code{@uref{https://asymptote.sourceforge.io/gallery/2Dgraphs/fillcontour.svg,,fillcontour}@uref{https://asymptote.sourceforge.io/gallery/2Dgraphs/fillcontour.asy,,.asy}} +and +@code{@uref{https://asymptote.sourceforge.io/gallery/2Dgraphs/imagecontour.svg,,imagecontour}@uref{https://asymptote.sourceforge.io/gallery/2Dgraphs/imagecontour.asy,,.asy}} +illustrate how level sets (contour lines) can be drawn on a color +density plot (@pxref{contour}). A color density plot can also be generated from an explicit real[][] array @code{data}: @cindex @code{image} @verbatim bounds image(picture pic=currentpicture, real[][] f, range range=Full, - pair initial, pair final, pen[] palette, + pair initial, pair final, pen[] palette, int divs=0, bool transpose=(initial.x < final.x && initial.y < final.y), bool copy=true, bool antialias=false); @end verbatim @@ -8175,7 +8182,7 @@ output with the the command-line option and @code{-f html} 3D @acronym{HTML} file can then be viewed directly in any modern desktop or mobile browser, or even embedded within another web page: @verbatim -<iframe src="logo3.html" width="210" height="140" frameborder="0"> +<iframe src="logo3.html" width="561" height="321" frameborder="0"> </iframe> @end verbatim @@ -9299,8 +9306,12 @@ pen for negative contours and a solid pen for positive (and zero) contours: @sp 1 @center @image{./multicontour} -The next example illustrates how contour lines can be drawn on color -density images: +The next examples illustrates how contour lines can be drawn on color +density images, with and without palette quantization: +@verbatiminclude fillcontour.asy +@sp 1 +@center @image{./fillcontour} + @verbatiminclude imagecontour.asy @sp 1 @center @image{./imagecontour} @@ -9323,7 +9334,7 @@ int[][] triangulate(pair[] z); @sp 1 @center @image{./triangulate} -The example @code{@uref{https://asymptote.sourceforge.io/gallery/2Dgraphs/Gouraudcontour.pdf,,Gouraudcontour}@uref{https://asymptote.sourceforge.io/gallery/2Dgraphs/Gouraudcontour.asy,,.asy}} illustrates how to produce color +The example @code{@uref{https://asymptote.sourceforge.io/gallery/PDFs/Gouraudcontour.pdf,,Gouraudcontour}@uref{https://asymptote.sourceforge.io/gallery/PDFs/Gouraudcontour.asy,,.asy}} illustrates how to produce color density images over such irregular triangular meshes. @code{Asymptote} uses a robust version of Paul Bourke's Delaunay triangulation algorithm based on the public-domain exact arithmetic predicates written by diff --git a/graphics/asymptote/doc/fillcontour.asy b/graphics/asymptote/doc/fillcontour.asy new file mode 100644 index 0000000000..b92b65ef46 --- /dev/null +++ b/graphics/asymptote/doc/fillcontour.asy @@ -0,0 +1,41 @@ +import graph; +import palette; +import contour; + +size(10cm,10cm); + +pair a=(0,0); +pair b=(2pi,2pi); + +real f(real x, real y) {return cos(x)*sin(y);} + +int N=200; +int Divs=10; +int divs=1; +int n=Divs*divs; + +defaultpen(1bp); +pen Tickpen=black; +pen tickpen=gray+0.5*linewidth(currentpen); +pen[] Palette=quantize(BWRainbow(),n); + +bounds range=image(f,Automatic,a,b,3N,Palette,n); + +real[] Cvals=uniform(range.min,range.max,Divs); +draw(contour(f,a,b,Cvals,N,operator --),Tickpen+squarecap+beveljoin); + +// Major contours +real[] Cvals=uniform(range.min,range.max,Divs); +draw(contour(f,a,b,Cvals,N,operator --),Tickpen+squarecap+beveljoin); + +// Minor contours (if divs > 1) +real[] cvals; +for(int i=0; i < Cvals.length-1; ++i) + cvals.append(uniform(Cvals[i],Cvals[i+1],divs)[1:divs]); +draw(contour(f,a,b,cvals,N,operator --),tickpen); + +xaxis("$x$",BottomTop,LeftTicks,above=true); +yaxis("$y$",LeftRight,RightTicks,above=true); + +palette("$f(x,y)$",range,point(SE)+(0.5,0),point(NE)+(1,0),Right,Palette, + PaletteTicks("$%+#0.1f$",N=Divs,n=divs,Tickpen,tickpen)); diff --git a/graphics/asymptote/doc/imagecontour.asy b/graphics/asymptote/doc/imagecontour.asy index d61b6148c5..18c4cb772c 100644 --- a/graphics/asymptote/doc/imagecontour.asy +++ b/graphics/asymptote/doc/imagecontour.asy @@ -2,7 +2,7 @@ import graph; import palette; import contour; -size(10cm,10cm,IgnoreAspect); +size(10cm,10cm); pair a=(0,0); pair b=(2pi,2pi); @@ -11,7 +11,7 @@ real f(real x, real y) {return cos(x)*sin(y);} int N=200; int Divs=10; -int divs=2; +int divs=1; defaultpen(1bp); pen Tickpen=black; @@ -21,18 +21,17 @@ pen[] Palette=BWRainbow(); bounds range=image(f,Automatic,a,b,N,Palette); // Major contours - real[] Cvals=uniform(range.min,range.max,Divs); -draw(contour(f,a,b,Cvals,N,operator --),Tickpen); +draw(contour(f,a,b,Cvals,N,operator --),Tickpen+squarecap+beveljoin); -// Minor contours +// Minor contours (if divs > 1) real[] cvals; for(int i=0; i < Cvals.length-1; ++i) cvals.append(uniform(Cvals[i],Cvals[i+1],divs)[1:divs]); -draw(contour(f,a,b,cvals,N,operator --),tickpen); +draw(contour(f,a,b,cvals,N,operator --),tickpen+squarecap+beveljoin); xaxis("$x$",BottomTop,LeftTicks,above=true); yaxis("$y$",LeftRight,RightTicks,above=true); -palette("$f(x,y)$",range,point(NW)+(0,0.5),point(NE)+(0,1),Top,Palette, - PaletteTicks(N=Divs,n=divs,Tickpen,tickpen)); +palette("$f(x,y)$",range,point(SE)+(0.5,0),point(NE)+(1,0),Right,Palette, + PaletteTicks("$%+#0.1f$",N=Divs,n=divs,Tickpen,tickpen)); diff --git a/graphics/asymptote/doc/png/asymptote.info b/graphics/asymptote/doc/png/asymptote.info index c29e943982..5c363d9e89 100644 --- a/graphics/asymptote/doc/png/asymptote.info +++ b/graphics/asymptote/doc/png/asymptote.info @@ -1,7 +1,7 @@ This is asymptote.info, produced by makeinfo version 6.7 from asymptote.texi. -This file documents 'Asymptote', version 2.73. +This file documents 'Asymptote', version 2.74. <https://asymptote.sourceforge.io> @@ -22,7 +22,7 @@ File: asymptote.info, Node: Top, Next: Description, Prev: (dir), Up: (dir) Asymptote ********* -This file documents 'Asymptote', version 2.73. +This file documents 'Asymptote', version 2.74. <https://asymptote.sourceforge.io> @@ -6646,12 +6646,14 @@ these palettes to the CMYK colorspace. function 'f'(x,y) and added to a picture 'pic': bounds image(picture pic=currentpicture, real f(real, real), range range=Full, pair initial, pair final, - int nx=ngraph, int ny=nx, pen[] palette, bool antialias=false) + int nx=ngraph, int ny=nx, pen[] palette, int divs=0, + bool antialias=false) The function 'f' will be sampled at 'nx' and 'ny' evenly spaced points over a rectangle defined by the points 'initial' and 'final', respecting the current graphical scaling of 'pic'. The color space is -scaled according to the z axis scaling (*note automatic scaling::). A -bounds structure for the function values is returned: +scaled according to the z axis scaling (*note automatic scaling::). If +'divs' > 1, the palette is quantized to 'divs'-1 values. A 'bounds' +structure for the function values is returned: struct bounds { real min; real max; @@ -6663,14 +6665,15 @@ The palette color space corresponds to a range of values specified by the argument 'range', which can be 'Full', 'Automatic', or an explicit range 'Range(real min, real max)'. Here 'Full' specifies a range varying from the minimum to maximum values of the function over the -sampling interval, while 'Automatic' selects "nice" limits. The example -'imagecontour.asy' illustrates how level sets (contour lines) can be -drawn on a color density plot (*note contour::). +sampling interval, while 'Automatic' selects "nice" limits. The +examples 'fillcontour.asy' and 'imagecontour.asy' illustrate how level +sets (contour lines) can be drawn on a color density plot (*note +contour::). A color density plot can also be generated from an explicit real[][] array 'data': bounds image(picture pic=currentpicture, real[][] f, range range=Full, - pair initial, pair final, pen[] palette, + pair initial, pair final, pen[] palette, int divs=0, bool transpose=(initial.x < final.x && initial.y < final.y), bool copy=true, bool antialias=false); If the initial point is to the left and below the final point, by @@ -7058,7 +7061,7 @@ There are six choices for viewing 3D 'Asymptote' output: 'outformat="html"'). The resulting 3D HTML file can then be viewed directly in any modern desktop or mobile browser, or even embedded within another web page: - <iframe src="logo3.html" width="210" height="140" frameborder="0"> + <iframe src="logo3.html" width="561" height="321" frameborder="0"> </iframe> Normally, 'WebGL' files generated by 'Asymptote' are dynamically @@ -7999,13 +8002,57 @@ draw(Labels,contour(f,(-1,-1),(1,1),c),p); [./multicontour] - The next example illustrates how contour lines can be drawn on color -density images: + The next examples illustrates how contour lines can be drawn on color +density images, with and without palette quantization: import graph; import palette; import contour; -size(10cm,10cm,IgnoreAspect); +size(10cm,10cm); + +pair a=(0,0); +pair b=(2pi,2pi); + +real f(real x, real y) {return cos(x)*sin(y);} + +int N=200; +int Divs=10; +int divs=1; +int n=Divs*divs; + +defaultpen(1bp); +pen Tickpen=black; +pen tickpen=gray+0.5*linewidth(currentpen); +pen[] Palette=quantize(BWRainbow(),n); + +bounds range=image(f,Automatic,a,b,3N,Palette,n); + +real[] Cvals=uniform(range.min,range.max,Divs); +draw(contour(f,a,b,Cvals,N,operator --),Tickpen+squarecap+beveljoin); + +// Major contours +real[] Cvals=uniform(range.min,range.max,Divs); +draw(contour(f,a,b,Cvals,N,operator --),Tickpen+squarecap+beveljoin); + +// Minor contours (if divs > 1) +real[] cvals; +for(int i=0; i < Cvals.length-1; ++i) + cvals.append(uniform(Cvals[i],Cvals[i+1],divs)[1:divs]); +draw(contour(f,a,b,cvals,N,operator --),tickpen); + +xaxis("$x$",BottomTop,LeftTicks,above=true); +yaxis("$y$",LeftRight,RightTicks,above=true); + +palette("$f(x,y)$",range,point(SE)+(0.5,0),point(NE)+(1,0),Right,Palette, + PaletteTicks("$%+#0.1f$",N=Divs,n=divs,Tickpen,tickpen)); + + [./fillcontour] + +import graph; +import palette; +import contour; + +size(10cm,10cm); pair a=(0,0); pair b=(2pi,2pi); @@ -8014,7 +8061,7 @@ real f(real x, real y) {return cos(x)*sin(y);} int N=200; int Divs=10; -int divs=2; +int divs=1; defaultpen(1bp); pen Tickpen=black; @@ -8024,21 +8071,20 @@ pen[] Palette=BWRainbow(); bounds range=image(f,Automatic,a,b,N,Palette); // Major contours - real[] Cvals=uniform(range.min,range.max,Divs); -draw(contour(f,a,b,Cvals,N,operator --),Tickpen); +draw(contour(f,a,b,Cvals,N,operator --),Tickpen+squarecap+beveljoin); -// Minor contours +// Minor contours (if divs > 1) real[] cvals; for(int i=0; i < Cvals.length-1; ++i) cvals.append(uniform(Cvals[i],Cvals[i+1],divs)[1:divs]); -draw(contour(f,a,b,cvals,N,operator --),tickpen); +draw(contour(f,a,b,cvals,N,operator --),tickpen+squarecap+beveljoin); xaxis("$x$",BottomTop,LeftTicks,above=true); yaxis("$y$",LeftRight,RightTicks,above=true); -palette("$f(x,y)$",range,point(NW)+(0,0.5),point(NE)+(0,1),Top,Palette, - PaletteTicks(N=Divs,n=divs,Tickpen,tickpen)); +palette("$f(x,y)$",range,point(SE)+(0.5,0),point(NE)+(1,0),Right,Palette, + PaletteTicks("$%+#0.1f$",N=Divs,n=divs,Tickpen,tickpen)); [./imagecontour] @@ -9114,6 +9160,7 @@ Index * BottomView: three. (line 439) * bounding box: Frames and pictures. (line 180) +* bounds: palette. (line 43) * Bounds: graph3. (line 21) * box: Frames and pictures. (line 25) @@ -9557,7 +9604,7 @@ Index * IgnoreAspect: Frames and pictures. (line 63) * image: palette. (line 33) -* image <1>: palette. (line 58) +* image <1>: palette. (line 61) * image-based lighting: three. (line 104) * ImageMagick: Configuring. (line 74) * ImageMagick <1>: animation. (line 6) @@ -10300,7 +10347,7 @@ Index * trembling: trembling. (line 6) * triangle: geometry. (line 6) * triangles: three. (line 154) -* triangulate: contour. (line 149) +* triangulate: contour. (line 192) * tridiagonal: Arrays. (line 278) * trigonometric integrals: Mathematical functions. (line 48) @@ -10568,41 +10615,41 @@ Ref: errorbars245871 Ref: automatic scaling251000 Node: palette262710 Ref: images262828 -Ref: image267002 -Ref: logimage267523 -Ref: penimage268629 -Ref: penfunctionimage268892 -Node: three269664 -Ref: PostScript3D299799 -Node: obj301537 -Node: graph3301786 -Ref: GaussianSurface307068 -Node: grid3308218 -Node: solids309003 -Node: tube309995 -Node: flowchart312225 -Node: contour316868 -Node: contour3322183 -Node: smoothcontour3322495 -Node: slopefield324214 -Node: ode325703 -Node: Options325960 -Ref: configuration file333448 -Ref: settings333448 -Ref: texengines334712 -Ref: convert334712 -Node: Interactive mode338155 -Ref: history340304 -Node: GUI341607 -Node: GUI installation342157 -Node: GUI usage342890 -Node: Command-Line Interface343953 -Node: Language server protocol345395 -Node: PostScript to Asymptote346820 -Node: Help347598 -Node: Debugger349272 -Node: Credits351028 -Node: Index352205 +Ref: image267124 +Ref: logimage267645 +Ref: penimage268751 +Ref: penfunctionimage269014 +Node: three269786 +Ref: PostScript3D299921 +Node: obj301659 +Node: graph3301908 +Ref: GaussianSurface307190 +Node: grid3308340 +Node: solids309125 +Node: tube310117 +Node: flowchart312347 +Node: contour316990 +Node: contour3323498 +Node: smoothcontour3323810 +Node: slopefield325529 +Node: ode327018 +Node: Options327275 +Ref: configuration file334763 +Ref: settings334763 +Ref: texengines336027 +Ref: convert336027 +Node: Interactive mode339470 +Ref: history341619 +Node: GUI342922 +Node: GUI installation343472 +Node: GUI usage344205 +Node: Command-Line Interface345268 +Node: Language server protocol346710 +Node: PostScript to Asymptote348135 +Node: Help348913 +Node: Debugger350587 +Node: Credits352343 +Node: Index353520 End Tag Table diff --git a/graphics/asymptote/drawgroup.h b/graphics/asymptote/drawgroup.h index 22aa858a96..5dffe5a35f 100644 --- a/graphics/asymptote/drawgroup.h +++ b/graphics/asymptote/drawgroup.h @@ -18,6 +18,11 @@ public: virtual ~drawBegin() {} + bool draw(psfile *out) { + out->lastpen=camp::pen(camp::initialpen); + return true; + } + bool begingroup() {return true;} }; @@ -27,6 +32,11 @@ public: virtual ~drawEnd() {} + bool draw(psfile *out) { + out->lastpen=camp::pen(camp::initialpen); + return true; + } + bool endgroup() {return true;} }; diff --git a/graphics/asymptote/drawpath.cc b/graphics/asymptote/drawpath.cc index 02e7d11a28..64a82a642f 100644 --- a/graphics/asymptote/drawpath.cc +++ b/graphics/asymptote/drawpath.cc @@ -72,7 +72,8 @@ pen adjustdash(pen& p, double arclength, bool cyclic) } // Account for square or extended pen cap contributions to bounding box. -void cap(bbox& b, double t, path p, pen pentype) { +void cap(bbox& b, double t, path p, pen pentype) +{ transform T=pentype.getTransform(); double h=0.5*pentype.width(); @@ -81,20 +82,25 @@ void cap(bbox& b, double t, path p, pen pentype) { double xx=S.getxx(), xy=S.getxy(); double yx=S.getyx(), yy=S.getyy(); double y=hypot(yx,yy); - if(y == 0) return; + if(y == 0.0) return; double numer=xx*yx+xy*yy; double x=numer/y; pair z=shift(T)*p.point(t); switch(pentype.cap()) { - case 0: + case SquareCap: { pair d=rotate(v)*pair(x,y)*h; b += z+d; b += z-d; break; } - case 2: + case RoundCap: + { + b += pad(z,pentype.bounds()); + break; + } + case ExtendedCap: { transform R=rotate(v); double w=(xx*yy-xy*yx)/y; @@ -109,22 +115,78 @@ void cap(bbox& b, double t, path p, pen pentype) { } } +// Account for square or extended pen cap contributions to bounding box. +void join(bbox& b, double t, path p, pen pentype) +{ + transform T=pentype.getTransform(); + + double h=0.5*pentype.width(); + pair v=p.dir(t); + transform S=rotate(conj(v))*shiftless(T); + double xx=S.getxx(), xy=S.getxy(); + double yx=S.getyx(), yy=S.getyy(); + double y=hypot(yx,yy); + if(y == 0.0) return; + double numer=xx*yx+xy*yy; + double x=numer/y; + pair z=shift(T)*p.point(t); + + switch(pentype.join()) { + case MiterJoin: + { + double phi=angle(-p.predir(t),false)-angle(p.postdir(t),false); + static const double twopi=2.0*pi; + if(phi > pi) phi -= twopi; + if(phi < -pi) phi += twopi; + double s=sin(0.5*phi); + if(s != 0.0) { + double factor=1.0/s; + if(abs(factor) < pentype.miter()) { + b += z-rotate(v)*pair(x,y)*h*factor; + break; + } + } + // Fall through + } + case BevelJoin: + { + pair Z=pair(x,y)*h; + pair d=rotate(p.predir(t))*Z; + b += z+d; + b += z-d; + pair D=rotate(p.postdir(t))*Z; + b += z+D; + b += z-D; + break; + } + case RoundJoin: + { + b += pad(z,pentype.bounds()); + break; + } + } +} + void drawPathPenBase::strokebounds(bbox& b, const path& p) { Int l=p.length(); if(l < 0) return; - bbox penbounds=pentype.bounds(); + b += p.internalbounds(pentype.bounds()); - if(cyclic() || pentype.cap() == 1) { - b += pad(p.bounds(),penbounds); - return; - } + unsigned int n=p.size(); + if(p.cyclic()) + join(b,0,p,pentype); - b += p.internalbounds(penbounds); + for(unsigned int i=1; i < n-1; ++i) + join(b,i,p,pentype); - cap(b,0,p,pentype); - cap(b,l,p,pentype); + if(p.cyclic()) { + join(b,n-1,p,pentype); + } else { + cap(b,0,p,pentype); + cap(b,l,p,pentype); + } } bool drawPath::draw(psfile *out) diff --git a/graphics/asymptote/examples/NURBScurve.asy b/graphics/asymptote/examples/NURBScurve.asy index 9ad121ecc6..736ff67588 100644 --- a/graphics/asymptote/examples/NURBScurve.asy +++ b/graphics/asymptote/examples/NURBScurve.asy @@ -1,3 +1,6 @@ +settings.outformat="pdf"; +settings.prc=true; + import three; size(10cm); @@ -31,4 +34,3 @@ real[] weights=array(P.length,1.0); weights[2]=5; draw(P,knot,weights,red); - diff --git a/graphics/asymptote/examples/NURBSsphere.asy b/graphics/asymptote/examples/NURBSsphere.asy index 484e8c4cd1..e169d70343 100644 --- a/graphics/asymptote/examples/NURBSsphere.asy +++ b/graphics/asymptote/examples/NURBSsphere.asy @@ -1,3 +1,6 @@ +settings.outformat="pdf"; +settings.prc=true; + import three; /* Reference: diff --git a/graphics/asymptote/examples/NURBSsurface.asy b/graphics/asymptote/examples/NURBSsurface.asy index c537e5df15..bfa314ac66 100644 --- a/graphics/asymptote/examples/NURBSsurface.asy +++ b/graphics/asymptote/examples/NURBSsurface.asy @@ -1,3 +1,6 @@ +settings.outformat="pdf"; +settings.prc=true; + import three; size(10cm); diff --git a/graphics/asymptote/examples/fillcontour.asy b/graphics/asymptote/examples/fillcontour.asy deleted file mode 100644 index 0197386670..0000000000 --- a/graphics/asymptote/examples/fillcontour.asy +++ /dev/null @@ -1,29 +0,0 @@ -import graph; -import palette; -import contour; - -size(12cm,IgnoreAspect); - -pair a=(pi/2,0); -pair b=(3pi/2,2pi); - -real f(real x, real y) {return cos(x)*sin(y);} - -int N=100; -int Divs=10; - -defaultpen(1bp); - -bounds range=bounds(-1,1); - -real[] Cvals=uniform(range.min,range.max,Divs); -guide[][] g=contour(f,a,b,Cvals,N,operator --); - -pen[] Palette=quantize(Rainbow(),Divs); - -pen[][] interior=interior(g,extend(Palette,grey,black)); -fill(g,interior); -draw(g); - -palette("$f(x,y)$",range,point(SE)+(0.5,0),point(NE)+(1,0),Right,Palette, - PaletteTicks("$%+#0.1f$",N=Divs)); diff --git a/graphics/asymptote/examples/interpolate1.asy b/graphics/asymptote/examples/interpolate1.asy index 19d77449ab..10bc7ef4f6 100644 --- a/graphics/asymptote/examples/interpolate1.asy +++ b/graphics/asymptote/examples/interpolate1.asy @@ -1,5 +1,5 @@ // Lagrange and Hermite interpolation in Asymptote -// Author: Olivier Guibé +// Author: Olivier Guibé import interpolate; import graph; diff --git a/graphics/asymptote/glrender.cc b/graphics/asymptote/glrender.cc index ad297939bf..7e7504ef61 100644 --- a/graphics/asymptote/glrender.cc +++ b/graphics/asymptote/glrender.cc @@ -387,9 +387,8 @@ void home(bool webgl=false) #endif #endif dviewMat=dmat4(1.0); -#ifndef HAVE_SSBO - dView=value_ptr(dviewMat); -#endif + if(!camp::countShader) + dView=value_ptr(dviewMat); viewMat=mat4(dviewMat); drotateMat=dmat4(1.0); @@ -548,21 +547,24 @@ void initShaders() #ifdef HAVE_SSBO if(GPUindexing) { shaders[0]=ShaderfileModePair(pre.c_str(),GL_COMPUTE_SHADER); - GLuint rc=compileAndLinkShader(shaders,shaderParams,true); - if(rc == 0) + GLuint rc=compileAndLinkShader(shaders,shaderParams,true,true); + if(rc == 0) { GPUindexing=false; // Compute shaders are unavailable. - else { + if(settings::verbose > 2) + cout << "No compute shader support" << endl; + } else { camp::preSumShader=rc; ostringstream s; s << "PROCESSORS " << processors << "u" << endl; shaderParams.push_back(s.str().c_str()); shaders[0]=ShaderfileModePair(partial.c_str(),GL_COMPUTE_SHADER); - camp::partialSumShader=compileAndLinkShader(shaders,shaderParams,true); + camp::partialSumShader=compileAndLinkShader(shaders,shaderParams, + true,true); shaderParams.pop_back(); shaders[0]=ShaderfileModePair(post.c_str(),GL_COMPUTE_SHADER); - camp::postSumShader=compileAndLinkShader(shaders,shaderParams,true); + camp::postSumShader=compileAndLinkShader(shaders,shaderParams,true,true); } } #endif @@ -577,9 +579,16 @@ void initShaders() #ifdef HAVE_SSBO shaders[1]=ShaderfileModePair(count.c_str(),GL_FRAGMENT_SHADER); - camp::countShader=compileAndLinkShader(shaders,shaderParams); - shaderParams.push_back("HAVE_SSBO"); + camp::countShader=compileAndLinkShader(shaders,shaderParams,true); + if(camp::countShader) + shaderParams.push_back("HAVE_SSBO"); + else #endif + camp::countShader=0; + + if(!camp::countShader && settings::verbose > 2) + cout << "No SSBO support; order-independent transparency unavailable" + << endl; shaders[1]=ShaderfileModePair(fragment.c_str(),GL_FRAGMENT_SHADER); shaderParams.push_back("MATERIAL"); @@ -609,33 +618,34 @@ void initShaders() shaderParams.push_back("TRANSPARENT"); camp::transparentShader=compileAndLinkShader(shaders,shaderParams); shaderParams.clear(); -#ifdef HAVE_SSBO - shaders[0]=ShaderfileModePair(screen.c_str(),GL_VERTEX_SHADER); + if(camp::countShader) { + shaders[0]=ShaderfileModePair(screen.c_str(),GL_VERTEX_SHADER); - if(GPUindexing) - shaderParams.push_back("GPUINDEXING"); - else { - shaders[1]=ShaderfileModePair(zero.c_str(),GL_FRAGMENT_SHADER); - camp::zeroShader=compileAndLinkShader(shaders,shaderParams); - } + if(GPUindexing) + shaderParams.push_back("GPUINDEXING"); + else { + shaders[1]=ShaderfileModePair(zero.c_str(),GL_FRAGMENT_SHADER); + camp::zeroShader=compileAndLinkShader(shaders,shaderParams); + } - shaders[1]=ShaderfileModePair(blend.c_str(),GL_FRAGMENT_SHADER); - camp::blendShader=compileAndLinkShader(shaders,shaderParams); -#endif + shaders[1]=ShaderfileModePair(blend.c_str(),GL_FRAGMENT_SHADER); + camp::blendShader=compileAndLinkShader(shaders,shaderParams); + } } void deleteShaders() { -#ifdef HAVE_SSBO - glDeleteProgram(camp::blendShader); - if(GPUindexing) { - glDeleteProgram(camp::preSumShader); - glDeleteProgram(camp::partialSumShader); - glDeleteProgram(camp::postSumShader); - } else - glDeleteProgram(camp::zeroShader); - glDeleteProgram(camp::countShader); -#endif + if(camp::countShader) { + glDeleteProgram(camp::blendShader); + if(GPUindexing) { + glDeleteProgram(camp::preSumShader); + glDeleteProgram(camp::partialSumShader); + glDeleteProgram(camp::postSumShader); + } else + glDeleteProgram(camp::zeroShader); + glDeleteProgram(camp::countShader); + } + glDeleteProgram(camp::transparentShader); glDeleteProgram(camp::generalShader); glDeleteProgram(camp::colorShader); @@ -846,7 +856,8 @@ void quit() void mode() { remesh=true; - camp::initSSBO=true; + if(camp::countShader) + camp::initSSBO=true; ++Mode; if(Mode > 2) Mode=0; @@ -902,7 +913,8 @@ void reshape0(int width, int height) setProjection(); glViewport(0,0,Width,Height); - camp::initSSBO=true; + if(camp::countShader) + camp::initSSBO=true; } void windowposition(int& x, int& y, int width=Width, int height=Height) @@ -1103,9 +1115,8 @@ void update() dviewMat=translate(translate(dmat4(1.0),dvec3(cx,cy,cz))*drotateMat, dvec3(0,0,-cz)); -#ifndef HAVE_SSBO - dView=value_ptr(dviewMat); -#endif + if(!camp::countShader) + dView=value_ptr(dviewMat); viewMat=mat4(dviewMat); setProjection(); @@ -2043,17 +2054,8 @@ void glrender(const string& prefix, const picture *pic, const string& format, exit(-1); } - if(settings::verbose > 2) { - cout << "GLSL version " << GLSL_VERSION; -#ifdef HAVE_SSBO - cout << " with SSBO"; -#ifdef HAVE_COMPUTE_SHADER - cout << " and compute shader"; -#endif - cout << " support"; -#endif - cout << endl; - } + if(settings::verbose > 2) + cout << "GLSL version " << GLSL_VERSION << endl; int result = glewInit(); @@ -2087,10 +2089,10 @@ void glrender(const string& prefix, const picture *pic, const string& format, glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); glEnable(GL_TEXTURE_3D); -#ifndef HAVE_SSBO - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); -#endif + if(!camp::countShader) { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + } Mode=2; mode(); @@ -2303,9 +2305,8 @@ void setUniforms(vertexBuffer& data, GLint shader) glUseProgram(shader); gl::lastshader=shader; -#ifdef HAVE_SSBO - glUniform1ui(glGetUniformLocation(shader,"width"),gl::Width); -#endif + if(camp::countShader) // CHECK + glUniform1ui(glGetUniformLocation(shader,"width"),gl::Width); glUniform1ui(glGetUniformLocation(shader,"nlights"),gl::nlights); for(size_t i=0; i < gl::nlights; ++i) { @@ -2465,30 +2466,30 @@ void aBufferTransparency() void drawTransparent() { -#ifdef HAVE_SSBO - glDisable(GL_MULTISAMPLE); - aBufferTransparency(); - glEnable(GL_MULTISAMPLE); -#else - sortTriangles(); - transparentData.rendered=false; // Force copying of sorted triangles to GPU - glDepthMask(GL_FALSE); // Don't write to depth buffer - drawBuffer(transparentData,transparentShader,true); - glDepthMask(GL_TRUE); // Write to depth buffer - transparentData.clear(); -#endif + if(camp::countShader) { + glDisable(GL_MULTISAMPLE); + aBufferTransparency(); + glEnable(GL_MULTISAMPLE); + } else { + sortTriangles(); + transparentData.rendered=false; // Force copying of sorted triangles to GPU + glDepthMask(GL_FALSE); // Don't write to depth buffer + drawBuffer(transparentData,transparentShader,true); + glDepthMask(GL_TRUE); // Write to depth buffer + transparentData.clear(); + } } void drawBuffers() { gl::copied=false; bool transparent=!transparentData.indices.empty(); -#ifdef HAVE_SSBO - if(transparent) { - refreshBuffers(); - gl::copied=true; + if(camp::countShader) { + if(transparent) { + refreshBuffers(); + gl::copied=true; + } } -#endif drawMaterial0(); drawMaterial1(); diff --git a/graphics/asymptote/lspserv.cc b/graphics/asymptote/lspserv.cc index 3ad469d99b..f4c2c3d7ff 100644 --- a/graphics/asymptote/lspserv.cc +++ b/graphics/asymptote/lspserv.cc @@ -350,8 +350,8 @@ std::string wslUnix2Dos(std::string const& unixPath) void AsymptoteLspServer::onSave(Notify_TextDocumentDidSave::notify& notify) { logInfo("onSave notification"); - lsDocumentUri fileUri(notify.params.textDocument.uri); - reloadFile(fileUri.GetRawPath()); +// lsDocumentUri fileUri(notify.params.textDocument.uri); +// reloadFile(fileUri.GetRawPath()); } void AsymptoteLspServer::onClose(Notify_TextDocumentDidClose::notify& notify) diff --git a/graphics/asymptote/path.cc b/graphics/asymptote/path.cc index 4fcf16114a..e96337ff50 100644 --- a/graphics/asymptote/path.cc +++ b/graphics/asymptote/path.cc @@ -552,18 +552,6 @@ bbox path::internalbounds(const bbox& padding) const // Check interior nodes. Int len=length(); - for (Int i = 1; i < len; i++) { - pair pre=point(i)-precontrol(i); - pair post=postcontrol(i)-point(i); - - // Check node x coordinate - if((pre.getx() >= 0.0) ^ (post.getx() >= 0)) - add(box,point(i),padding.left,padding.right); - - // Check node y coordinate - if((pre.gety() >= 0.0) ^ (post.gety() >= 0)) - add(box,point(i),pair(0,padding.bottom),pair(0,padding.top)); - } // Check interior segments. for (Int i = 0; i < len; i++) { diff --git a/graphics/asymptote/pen.h b/graphics/asymptote/pen.h index e26f3e5843..8df33b144b 100644 --- a/graphics/asymptote/pen.h +++ b/graphics/asymptote/pen.h @@ -86,6 +86,9 @@ extern const size_t ColorComponents[]; extern const char* ColorDeviceSuffix[]; extern const unsigned nColorSpace; +enum LineCap {SquareCap,RoundCap,ExtendedCap}; +enum LineJoin {MiterJoin,RoundJoin,BevelJoin}; + inline bool operator == (const vm::array& a, const vm::array& b) { size_t asize=a.size(); diff --git a/graphics/asymptote/picture.cc b/graphics/asymptote/picture.cc index c0d7934f30..112ff18748 100644 --- a/graphics/asymptote/picture.cc +++ b/graphics/asymptote/picture.cc @@ -530,11 +530,8 @@ bool picture::texprocess(const string& texname, const string& outname, cmd.push_back("-D600"); cmd.push_back("-O"+String(hoffset)+"bp,"+String(voffset)+"bp"); bool ps=pagecount() > 1; - if(ps) - cmd.push_back("-T"+String(getSetting<double>("paperwidth"))+"bp,"+ - String(paperHeight)+"bp"); - else - cmd.push_back("-E"); + cmd.push_back("-T"+String(getSetting<double>("paperwidth"))+"bp,"+ + String(paperHeight)+"bp"); push_split(cmd,getSetting<string>("dvipsOptions")); if(ps && getSetting<string>("papertype") != "") cmd.push_back("-t"+papertype); @@ -556,7 +553,20 @@ bool picture::texprocess(const string& texname, const string& outname, const string endspecial="@fedspecial end"; const size_t endlength=endspecial.size(); + bool inpapersize=false; while(getline(fin,s)) { + + if (inpapersize) { + if(s.find("%%EndPaperSize") == 0) + inpapersize=false; + continue; + } else { + if (s.find("%%BeginPaperSize:") == 0) { + inpapersize=true; + continue; + } + } + if (s[0] == '%') { if (s.find("%%DocumentPaperSizes:") == 0) continue; @@ -1001,9 +1011,12 @@ bool picture::shipout(picture *preamble, const string& Prefix, bool Labels=labels || TeXmode; - if(png && (b.right-b.left < 1.0 || b.top-b.bottom < 1.0)) + bool Empty=b.right-b.left < 1.0 || b.top-b.bottom < 1.0; + if(png && Empty) empty=true; + if(Empty && (svgformat || htmlformat)) return true; + if(empty && !Labels) { // Output a null file bbox b; b.left=b.bottom=0; diff --git a/graphics/asymptote/psfile.cc b/graphics/asymptote/psfile.cc index 3a13b37225..2a8a92739c 100644 --- a/graphics/asymptote/psfile.cc +++ b/graphics/asymptote/psfile.cc @@ -58,8 +58,7 @@ static const char *rectangular="matrix is not rectangular"; void psfile::writefromRGB(unsigned char r, unsigned char g, unsigned char b, ColorSpace colorspace, size_t ncomponents) { - static const double factor=1.0/255.0; - pen p(r*factor,g*factor,b*factor); + pen p(byteinv(r),byteinv(g),byteinv(b)); p.convert(); if(!p.promote(colorspace)) reportError(inconsistent); diff --git a/graphics/asymptote/psfile.h b/graphics/asymptote/psfile.h index 98e5574b8d..da74f4e658 100644 --- a/graphics/asymptote/psfile.h +++ b/graphics/asymptote/psfile.h @@ -133,10 +133,11 @@ public: } protected: - pen lastpen; std::ostream *out; public: + pen lastpen; + bool pdftex() {return settings::pdf(settings::getSetting<string>("tex"));} psfile(const string& filename, bool pdfformat); diff --git a/graphics/asymptote/revision.cc b/graphics/asymptote/revision.cc index 542ace2426..cb290fe434 100644 --- a/graphics/asymptote/revision.cc +++ b/graphics/asymptote/revision.cc @@ -1,2 +1,2 @@ -const char *REVISION="2.73"; +const char *REVISION="2.74"; const char *AsyGLVersion="1.01"; diff --git a/graphics/asymptote/shaders.cc b/graphics/asymptote/shaders.cc index 55bd17a889..36dc72a4ae 100644 --- a/graphics/asymptote/shaders.cc +++ b/graphics/asymptote/shaders.cc @@ -17,7 +17,7 @@ int GLSLversion; GLuint compileAndLinkShader(std::vector<ShaderfileModePair> const& shaders, std::vector<std::string> const& defineflags, - bool compute) + bool ssbo, bool compute) { GLuint shader = glCreateProgram(); std::vector<GLuint> compiledShaders; @@ -25,8 +25,8 @@ GLuint compileAndLinkShader(std::vector<ShaderfileModePair> const& shaders, size_t n=shaders.size(); for(size_t i=0; i < n; ++i) { GLint newshader=createShaderFile(shaders[i].first,shaders[i].second, - defineflags,compute); - if(compute && newshader == 0) return 0; + defineflags,ssbo,compute); + if((ssbo || compute) && newshader == 0) return 0; glAttachShader(shader,newshader); compiledShaders.push_back(newshader); } @@ -48,7 +48,7 @@ GLuint compileAndLinkShader(std::vector<ShaderfileModePair> const& shaders, } GLuint createShader(const std::string& src, int shaderType, - const std::string& filename, bool compute) + const std::string& filename, bool ssbo, bool compute) { const GLchar *source=src.c_str(); GLuint shader=glCreateShader(shaderType); @@ -59,7 +59,7 @@ GLuint createShader(const std::string& src, int shaderType, glGetShaderiv(shader, GL_COMPILE_STATUS, &status); if(status != GL_TRUE) { - if(compute) return 0; + if(ssbo || compute) return 0; GLint length; glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &length); @@ -85,7 +85,7 @@ GLuint createShader(const std::string& src, int shaderType, GLuint createShaderFile(std::string file, int shaderType, std::vector<std::string> const& defineflags, - bool compute) + bool ssbo, bool compute) { std::ifstream shaderFile; shaderFile.open(file.c_str()); @@ -95,7 +95,8 @@ GLuint createShaderFile(std::string file, int shaderType, #ifndef __APPLE__ shaderSrc << "#extension GL_ARB_uniform_buffer_object : enable" << "\n"; #ifdef HAVE_SSBO - shaderSrc << "#extension GL_ARB_shader_storage_buffer_object : enable" << "\n"; + if(ssbo) + shaderSrc << "#extension GL_ARB_shader_storage_buffer_object : enable" << "\n"; if(compute) shaderSrc << "#extension GL_ARB_compute_shader : enable" << "\n"; #endif @@ -113,6 +114,6 @@ GLuint createShaderFile(std::string file, int shaderType, exit(-1); } - return createShader(shaderSrc.str(),shaderType,file,compute); + return createShader(shaderSrc.str(),shaderType,file,ssbo,compute); } #endif diff --git a/graphics/asymptote/shaders.h b/graphics/asymptote/shaders.h index 9c0a946dc4..226832a38d 100644 --- a/graphics/asymptote/shaders.h +++ b/graphics/asymptote/shaders.h @@ -24,14 +24,12 @@ typedef std::pair<std::string, int> ShaderfileModePair; GLuint compileAndLinkShader( std::vector<ShaderfileModePair> const& shaders, - std::vector<std::string> const& defineflags, bool compute=false); - -GLuint createShaders(const std::string& src, int shaderType, - std::string const& filename, bool compute=false); + std::vector<std::string> const& defineflags, bool ssbo=true, + bool compute=false); GLuint createShaderFile(std::string file, int shaderType, std::vector<std::string> const& constflags, - bool compute=false); + bool ssbo, bool compute); enum attrib {positionAttrib=0,normalAttrib,materialAttrib,colorAttrib, widthAttrib}; diff --git a/graphics/asymptote/texfile.cc b/graphics/asymptote/texfile.cc index d10ed379d0..4257b0c6f7 100644 --- a/graphics/asymptote/texfile.cc +++ b/graphics/asymptote/texfile.cc @@ -189,31 +189,6 @@ void texfile::writeshifted(path p, bool newPath) write(p.transformed(shift(pair(-Hoffset,-box.bottom))),newPath); } -void texfile::setlatexcolor(pen p) -{ - if(p.cmyk() && (!lastpen.cmyk() || - (p.cyan() != lastpen.cyan() || - p.magenta() != lastpen.magenta() || - p.yellow() != lastpen.yellow() || - p.black() != lastpen.black()))) { - *out << "\\definecolor{ASYcolor}{cmyk}{" - << p.cyan() << "," << p.magenta() << "," << p.yellow() << "," - << p.black() << "}\\color{ASYcolor}%" << newl; - } else if(p.rgb() && (!lastpen.rgb() || - (p.red() != lastpen.red() || - p.green() != lastpen.green() || - p.blue() != lastpen.blue()))) { - *out << "\\definecolor{ASYcolor}{rgb}{" - << p.red() << "," << p.green() << "," << p.blue() - << "}\\color{ASYcolor}%" << newl; - } else if(p.grayscale() && (!lastpen.grayscale() || - p.gray() != lastpen.gray())) { - *out << "\\definecolor{ASYcolor}{gray}{" - << p.gray() - << "}\\color{ASYcolor}%" << newl; - } -} - void texfile::setfont(pen p) { bool latex=settings::latex(texengine); @@ -226,13 +201,10 @@ void texfile::setfont(pen p) void texfile::setpen(pen p) { - bool latex=settings::latex(texengine); - p.convert(); if(p == lastpen) return; - if(latex) setlatexcolor(p); - else setcolor(p,settings::beginspecial(texengine),settings::endspecial()); + setcolor(p,settings::beginspecial(texengine),settings::endspecial()); setfont(p); } diff --git a/graphics/asymptote/texfile.h b/graphics/asymptote/texfile.h index 41a2378093..c15861a267 100644 --- a/graphics/asymptote/texfile.h +++ b/graphics/asymptote/texfile.h @@ -171,7 +171,6 @@ void texdefines(T& out, mem::list<string>& preamble=processData().TeXpreamble, if(latex) { if(!inlinetex) { dvipsfix(out); - out << "\\usepackage{color}" << newl; } if(pipe) { out << "\\begin{document}" << newl; @@ -241,7 +240,6 @@ public: void epilogue(bool pipe=false); virtual void endpage() {} - void setlatexcolor(pen p); void setpen(pen p); void setfont(pen p); diff --git a/graphics/asymptote/v3dheadertypes.h b/graphics/asymptote/v3dheadertypes.h index a0b20aa22a..97e8001872 100644 --- a/graphics/asymptote/v3dheadertypes.h +++ b/graphics/asymptote/v3dheadertypes.h @@ -1,6 +1,6 @@ // Enum class for v3dheadertypes // AUTO-GENERATED from v3dheadertypes.csv -// Generated at 2021-12-27 17:51:07.172154 +// Generated at 2022-01-01 13:54:42.600505 namespace camp { diff --git a/graphics/asymptote/v3dheadertypes.py b/graphics/asymptote/v3dheadertypes.py index 8c0a349bf4..cea4fdd8ba 100644 --- a/graphics/asymptote/v3dheadertypes.py +++ b/graphics/asymptote/v3dheadertypes.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Enum class for v3dheadertypes """ AUTO-GENERATED from v3dheadertypes.csv """ -# Generated at 2021-12-27 17:52:27.321330 +# Generated at 2022-01-01 13:56:00.216832 class v3dheadertypes: v3dheadertypes_canvasWidth=1 diff --git a/graphics/asymptote/v3dtypes.h b/graphics/asymptote/v3dtypes.h index d57a7a561e..25d399d015 100644 --- a/graphics/asymptote/v3dtypes.h +++ b/graphics/asymptote/v3dtypes.h @@ -1,6 +1,6 @@ // Enum class for v3dtypes // AUTO-GENERATED from v3dtypes.csv -// Generated at 2021-12-27 17:51:07.172168 +// Generated at 2022-01-01 13:54:42.600940 namespace camp { diff --git a/graphics/asymptote/v3dtypes.py b/graphics/asymptote/v3dtypes.py index 6fa9b38436..b723437fc1 100644 --- a/graphics/asymptote/v3dtypes.py +++ b/graphics/asymptote/v3dtypes.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Enum class for v3dtypes """ AUTO-GENERATED from v3dtypes.csv """ -# Generated at 2021-12-27 17:52:27.235343 +# Generated at 2022-01-01 13:56:00.164650 class v3dtypes: v3dtypes_material=1 diff --git a/graphics/mcf2graph/CHANGELOG b/graphics/mcf2graph/CHANGELOG index ef4458a67e..ce3badf918 100644 --- a/graphics/mcf2graph/CHANGELOG +++ b/graphics/mcf2graph/CHANGELOG @@ -1,6 +1,13 @@ ******************************************************************************* - Changelog of mcf2graph software package by Akira Yamaji 2022-12-20 + Changelog of mcf2graph software package by Akira Yamaji 2022-01-02 ******************************************************************************* +[ver. 4.77 / 2022-01-02] + -change syntax of add group + {a'}:*/_ : {a}:/*_ + {a'}:/*_ : {a}:*/_ + -update mcf_data_base.mcf + -update MCF manual,example + [ver. 4.76 / 2022-12-20] -change syntax of bond type {a<}=dl => {a'}=dr diff --git a/graphics/mcf2graph/README b/graphics/mcf2graph/README index d33c4cf90f..556778b61f 100644 --- a/graphics/mcf2graph/README +++ b/graphics/mcf2graph/README @@ -1,7 +1,7 @@ ******************************************************************************** mcf2graph : Convert Molecular Coding Format to graphics with METAFONT/METAPOST Author : Akira Yamaji - version : 4.76 2021-12-20 + version : 4.77 2022-01-02 E-mail : mcf2graph@gmail.com Located at : http://www.ctan.org/pkg/mcf2graph ******************************************************************************** @@ -60,6 +60,8 @@ (15) >mpost -s labeloffset=2 FILENAME => atomfont="uhvr8r" 4. License + mcf2graph ver 4.77 Copyright (c) 2013-2022 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 diff --git a/graphics/mcf2graph/mcf2graph.mf b/graphics/mcf2graph/mcf2graph.mf index 8571096ba0..0a89d9de33 100644 --- a/graphics/mcf2graph/mcf2graph.mf +++ b/graphics/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.76 Copyright (c) 2013-2021 Akira Yamaji +% mcf2graph ver 4.77 Copyright (c) 2013-2022 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, @@ -38,7 +38,7 @@ % Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tracingstats:=1; -message "* This is mcf2graph ver 4.76 2021.12.20"; +message "* This is mcf2graph ver 4.77 2022.01.02"; %------------------------------------------------------------------------------------------------- newinternal cntA,cntB,cntM,minX,minY,maxX,maxY,sftX,sftY,com,par,envT,envB,lenT,lineT,angT,rotT, crR,nA,nB,nC,nD,nE,nF,nS,nL,nR,nU,nP,xpos,ypos,markA,markB,saveA,saveB,bondL; @@ -214,8 +214,9 @@ parts_int_start:=3000; % 3001 => 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_absA,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_tmp_line, - _chg_len,_get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang,_chg_env,_tmp_env,_set_colorA,_set_colorB, - _group_si,_set_adr,_mk_bond,_set_atom,_arrange_ang,_chg_atom,_tmp_rot,_fuse,_size_atom,_numeric, + _chg_len,_get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang,_chg_env,_tmp_env, + _set_colorA,_set_colorB,_group_si,_group_dm,_group_wf,_group_zf, + _set_adr,_mk_bond,_set_atom,_arrange_ang,_chg_atom,_tmp_rot,_fuse,_size_atom,_numeric, _jump_at,_set_add,_chg_add,_nop,_mark,_moff,_term,_len_s,_len_e,_len_ss,_len_ee, _group_s,_group_e,_rest,_charge,_from,_until, si,dl,dl_,dr,dr_,db,dm,dm_,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,nb,wf_r,wb_r,bd_r, @@ -495,12 +496,14 @@ def jump_atom_abs primary a = if numeric a:: (_jp_atom,$a) ef pair a:: (_jp_atom,$1),<$0,angle(a)~0`length(a),<$0 fi enddef; def jump_atom primary a = - if numeric a:: (_jp_atom,a) elseif pair a:: <$0,angle(a)~0`length(a),<$0 fi + if numeric a:: (_jp_atom,a) ef pair a:: <$0,angle(a)~0`length(a),<$0 fi enddef; -def chg_length primary n = (_com,_len_s),(_chg_len,n) enddef; +def chg_length primary n = (_com,_len_s),(_chg_len,n) enddef; def group_si secondary n = if known n:: (_group_si,n) else:: _nop fi enddef; -def group_dm secondary n = /n~dm enddef; def group_wf secondary n = /n~wf enddef; -def group_zf secondary n = /n~zf enddef; def group_wv secondary n = /n~wv enddef; +def group_dm secondary n = if known n:: (_group_dm,n) else:: _nop fi enddef; +def group_wf secondary n = if known n:: (_group_wf,n) else:: _nop fi enddef; +def group_zf secondary n = if known n:: (_group_zf,n) else:: _nop fi enddef; +def group_wv secondary n = /n~wv enddef; def group_nb secondary n = /n~nb enddef; %------------------------------------------------------------------------------------------------- def CP = com_par enddef; def CPe = com_par_ex(0) enddef; def CPx = com_par_ex(1) enddef; @@ -534,9 +537,10 @@ def read_mcf(expr n)(text TXT)= enddef; %------------------------------------------------------------------------------------------------- vardef read_number(text TXT)= - save ',:,nA,nB,nC; + save ','`,:,nA,nB,nC; let : == from_until; def ' == +0.5 enddef; + def '` == +0.5` enddef; parts_int:=parts_int+1; nA:=0; for list==TXT:: @@ -562,8 +566,8 @@ 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,_len_s) - CP(_chg_len,_ring_len) for i==1 upto b-2:: CP(_mk_bond,360 DIV b) endfor + 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,_len_e) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi enddef; %------------------------------------------------------------------------------------------------- @@ -693,15 +697,35 @@ vardef change_atom(expr a,b)= ef b==N!2:: CPe(a)(_chg_atom,N) CP(_com,_group_s) CPx(a)(_group_si,!) CP(_com,_group_e) ef b==??:: CP(_com,_group_s) CP(_tmp_rot,35) CPx(a)(_group_si,_) CP(_tmp_rot,-35) CPx(a)(_group_si,_) CP(_com,_group_e) - ef b==SOO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) - CP(_tmp_line,dm) CP(_tmp_rot,35) CPx(a)(_group_si,O) - CP(_tmp_line,dm) CP(_tmp_rot,-35) CPx(a)(_group_si,O) CP(_com,_group_e) - ef b==SO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) CP(_tmp_line,dm) - CPx(a)(_group_si,O) CP(_com,_group_e) + ef b==SOO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) CP(_tmp_rot,35) CPx(a)(_group_dm,O) + CP(_tmp_rot,-35) CPx(a)(_group_dm,O) CP(_com,_group_e) + ef b==SO:: CPe(a)(_chg_atom,S) CP(_com,_group_s) CPx(a)(_group_dm,O) CP(_com,_group_e) ef b==n_:: CP(_com,_group_s) CP(_set_add,a_minus) CP(_chg_add,a) CP(_com,_group_e) ef b==p_:: CP(_com,_group_s) CP(_set_add,a_plus) CP(_chg_add,a) CP(_com,_group_e) fi - ef pair b:: CP(_com,_group_s) CPx(a)(xpart(b),ypart(b)) CP(_com,_group_e) + ef pair b:: + CP(_com,_group_s) + if a>=parts_emb_start:: + for i==1 upto cntD[a]:: + if comD[a][i]==_numeric:: + if xpart(b)==_group_wf:: + if frac parD[a][i]==0:: CP(_set_adr,parD[a][i]) CP(_group_wf,ypart(b)) + else:: CP(_set_adr,floor parD[a][i]) CP(_group_zf,ypart(b)) + fi + ef xpart(b)==_group_zf:: + if frac parD[a][i]==0:: CP(_set_adr,parD[a][i]) CP(_group_zf,ypart(b)) + else:: CP(_set_adr,floor parD[a][i]) CP(_group_wf,ypart(b)) + fi + else:: + CP(_set_adr,parD[a][i]) CP(xpart(b),ypart(b)) + fi + else:: + CP(comD[a][i],parD[a][i]) + fi + endfor + else:: CP(_set_adr,a) CP(xpart(b),ypart(b)) + fi + CP(_com,_group_e) ef color b:: color_list[incr cntC]:=b; CPe(a)(_set_colorA,cntC) fi cntD[parts_int]:=nCP; @@ -1097,7 +1121,9 @@ def add_group= 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 lenT<>crR: store_group(_chg_len,lenT) + ef bondL<>crR: if bondL>=0: store_group(_chg_len,-bondL) else: store_group(_chg_len,bondL) fi + 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<>nb: store_group(_mk_bond,0) fi @@ -1209,6 +1235,9 @@ def proc_bond_atom(expr a)(expr n)= fi ef com=_set_atom: strAT:=par; ef com=_group_si: add_group; + ef com=_group_dm: lineT:=dm; add_group; + ef com=_group_wf: lineT:=wf; add_group; + ef com=_group_zf: lineT:=zf; 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; @@ -1260,7 +1289,8 @@ def proc_skeleton(expr a)= ef com=_com: if par=_mark: saveA:=markA; saveB:=markB; markA:=cntA; markB:=cntB; ef par=_rest: markA:=saveA; markB:=saveB; ef par=_moff: markA:=markB:=0; ef par=_term: termB; - ef par=_group_e: lineT:=si; lenT:=crR; rotT:=envT:=0; fi + 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_absA: adrT:=par; posBs:=posA[adrT]; @@ -1269,6 +1299,7 @@ def proc_skeleton(expr a)= ef com=_rot_ang: if par>-3700: angT:=(angT+par) mod 360; else: angT:=(par+4095) mod 360; fi ef com=_tmp_rot: rotT:=par; ef com=_group_si: rotT:=0; + ef com=_group_wf: rotT:=0; ef com=_chg_env: envB:=par; ef com=_tmp_env: envT:=par; ef com=_cyc: add_bond(angle(posA[getA(par)]-posBs)-angT,0); @@ -2016,12 +2047,13 @@ for i=5,6,7,8: for j=11 upto 15: ?[i][j]:='(); endfor endfor for i==2 upto 20: ![i]:='((_com,_len_ss),(_get_len,_tmp_len),! for j==2 upto i::,! endfor ,(_com,_len_ee)); endfor -Me:='(); Et:='(!); iPr:=?!:='(/_,!); tBu:=??!:='(/_,/_^60,60); !?!:='(!,?!); !??!:='(!,??!); +Me:='(); Et:='(!); iPr:=?!:='(/_,!); ?!2:='(/_,!2); tBu:=??!:='(/_,/_^60,60); +!?:='(!,/_); !?!:='(!,/_,!); n_:='((_set_add,a_minus)); p_:='((_set_add,a_plus)); zero_wf:='(0~wf); zero_zf:='(0~zf); zero_dm:='(0~dm); zero_wv:='(0~wv); %------------------------------------------------------------------------------------------------- NH:='(N,/H~nl); N!:='(N,/_); N!2:='(N,/!); SO:='(S,//O); SOO:='(S,//O^-35,//O^35); -O!:='(O,!); O!2:='(O,!,!); O!3:='(O,!,!,!); O!?!:='(O,!,?!); O!??!:='(O,!,??!); +O!:='(O,!); O!2:='(O,!,!); O!3:='(O,!,!,!); O!?!:='(O,!,?!); O!??!:='(O,!,??!); OPh:='(O,!,Ph); S!:='(S,!); S!2:='(S,!,!); S!3:='(S,!,!,!); S!?!:='(S,!,?!); S!??!:='(S,!,??!); %------------------------------------------------------------------------------------------------- COO:='(//O,!,O); COO!:='(COO,!); COO!2:='(COO,!,!); COO!??:='(COO,!,?!); COO!3:='(COO,!,!,!); diff --git a/graphics/mcf2graph/mcf_data_base.mcf b/graphics/mcf2graph/mcf_data_base.mcf index bdc74d444b..40dfc81af3 100644 --- a/graphics/mcf2graph/mcf_data_base.mcf +++ b/graphics/mcf2graph/mcf_data_base.mcf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% molecular data base file mcf_data_base.mcf by Akira Yamaji 2021.12.20 +% molecular data base file mcf_data_base.mcf by Akira Yamaji 2022.01.02 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % tag1:var1;tag2:var2;tag3:var3 ..... % first character of line "%" comment out @@ -42,7 +42,7 @@ Cat:biological;EN:Glycine;MW:75.07;EXA:- +------------------------------------------------------------------------------ Cat:biological;EN:L-Alanine;MW:89.10;EXA:- + -<30,NH2,!~wb,/_,!,COOH +<30,NH2,!~wb,?!,COOH +------------------------------------------------------------------------------ Cat:biological;EN:L-Valine;MW:117.15;EXA:- + @@ -82,7 +82,7 @@ Cat:biological;EN:L-Tyrosine;MW:181.19;EXA:- +------------------------------------------------------------------------------ Cat:biological;EN:L-Triptophan;MW:204.21;EXA:- + -<30,NH2,!~wb,!,COOH,@2,\,!,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH +<30,NH2,!~wb,!,COOH,@2,\,!,<24,|,?5,{2',5}=dl,2=Ph,4:NH +------------------------------------------------------------------------------ Cat:biological;EN:L-Proline;MW:115.13;EXA:- + @@ -140,7 +140,7 @@ Cat:biological;EN:Citrate;MW:192.12;EXA:- +------------------------------------------------------------------------------ Cat:biological;EN:cis-Aconitate;MW:174.11;EXA:- + -<30,COOH,!2,!~dr,!,COOH,@-4`1,\,COOH +<30,COOH,!2,!!,!,COOH,@-4`1,\,COOH +------------------------------------------------------------------------------ Cat:biological;EN:Isocitrate;MW:192.12;EXA:- + @@ -160,7 +160,7 @@ Cat:biological;EN:Succinate;MW:118.09;EXA:- +------------------------------------------------------------------------------ Cat:biological;EN:Fumarate;MW:116.07;EXA:- + -<30,COOH,!,!~dr,!,COOH +<30,COOH,!,!!,!,COOH +------------------------------------------------------------------------------ Cat:biological;EN:L-Malate;MW:132.07;EXA:- + @@ -181,7 +181,7 @@ Cat:biological;EN:Glucose 2;MW:180.16;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:D-Glucose;MW:180.16;EXA:1 + -hexose_hp,{1^$-90,2^$90,3^$-90,4^$-90}:/OH`-.5,6^$90:/!OH`-.5 +hexose_hp,#.5,{1^$-90,2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:Fructose 1;MW:180.16;EXA:1 + @@ -189,73 +189,73 @@ Cat:biological;EN:Fructose 1;MW:180.16;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:Fructose 2;MW:180.16;EXA:1 + -<-18,?5,5:O,1^-48:*/*!OH,1^48:/OH,2:/*OH,3:*/OH,4:/*!OH +<-18,?5,5:O,1^-48:*/*!OH,1^48:/OH,{2',3}:*/OH,4:/*!OH +------------------------------------------------------------------------------ Cat:biological;EN:D-Fluctose;MW:180.16;EXA:1 + -Pyranose_hp,1^$-90:/OH,{2^$-90,3^$90}:/OH`-.45,{1^$90,4^$-90}:/!OH`-.45 +Pyranose_hp,#.5,1^$-90:/OH,{2^$-90,3^$90}:/OH,{1^$90,4^$-90}:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:D-Galactose;MW:180.16;EXA:1 + -hexose_hp,{1^$90,2^$90,3^$-90,4^$-90}:/OH`-.5,6^$90:/!OH`-.5 +hexose_hp,#.5,{1^$90,2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:D-Mannose;MW:180.16;EXA:1 + -hexose_hp,{1^$-90,2^$90,3^$90,4^$-90}:/OH`-.5,6^$90:/!OH`-.5 +hexose_hp,#.5,{1^$-90,2^$90,3^$90,4^$-90}:/OH,6^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:L-Fucose;MW:164.16;EXA:1 + -hexose_hp,{1^$-90,,2^$-90,3^$90,4^$90}:/OH`-.5,6^$-90:/_`.5 +hexose_hp,#.5,{1^$-90,,2^$-90,3^$90,4^$90}:/OH,6^$-90:/_ +------------------------------------------------------------------------------ Cat:biological;EN:D-Ribose;MW:150.13;EXA:1 + -Pyranose_hp,{2^$-90,3^$-90,4^$90}:/OH`-.45,1^$90:/!OH`-.45 +Pyranose_hp,#.5,{2^$-90,3^$-90,4^$90}:/OH,1^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:D-Deoxyribose;MW:134.13;EXA:1 + -Pyranose_hp,{2^$-90,4^$90}:/OH`-.45,1^$90:/!OH`-.45 +Pyranose_hp,#.5,{2^$-90,4^$90}:/OH,1^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:D-Glucosamine;MW:179.17;EXA:1 + -hexose_hp,{1^$-90,2^$90,4^$-90}:/OH`-.5,3^$-90:/NH2,6^$90:/!OH`-.5 +hexose_hp,#.5,{1^$-90,2^$90,4^$-90}:/OH,3^$-90:/NH2,6^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:N-acetyl-Glucosamine;MW:221.21;EXA:1 + -hexose_hp,{1^$-90,2^$90,4^$-90}:/OH`-.5,3^$-90>lr:/NHCO!,6^$90:/!OH`-.5 +hexose_hp,#.5,{1^$-90,2^$90,4^$-90}:/OH,3^$-90>lr:/NHCO!,6^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:Glucuronic acid;MW:194.14;EXA:1 + -hexose_hp,{1^$-90,2^$90,3^$-90,4^$-90}:/OH`-.5,6^$90:/COOH`-.5 +hexose_hp,#.5,{1^$-90,2^$90,3^$-90,4^$-90}:/OH,6^$90:/COOH +------------------------------------------------------------------------------ Cat:biological;EN:Maltose;MW:342.3;EXA:1 + -hexose_hp,{1^$-90,2^$90,3^$-90}:/OH`-.5,6^$90:/!OH`-.5, +hexose_hp,#.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,##, @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0, - |,hexose_hp,{2^$90,3^$-90,4^$-90}:/OH`-.5,6^$90:/!OH`-.5 + |,hexose_hp,#.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:Sucrose;MW:342.3;EXA:1 + -hexose_hp,{1^$-90,2^$90,3^$-90}:/OH`-.5,6^$90:/!OH`-.5, +hexose_hp,#.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,##, @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0, |,#1.4,-35~wf_r,35~bd_r`1,30~wb_r,130`1.66,O,&1,##, - {2^$-90,3^$90}:/OH`-.45,{1^$90,4^$-90}:/!OH`-.45 + #.5,{2^$-90,3^$90}:/OH,{1^$90,4^$-90}:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:Lactose;MW:342.3;EXA:1 + -hexose_hp,{1^$90,2^$90,3^$-90}:/OH`-.5,6^$90:/!OH`-.5, +hexose_hp,#.5,{1^$90,2^$90,3^$-90}:/OH,6^$90:/!OH,##, @4,$0~arc_ltr,O,$0~arc_lbr, - |,hexose_hp,{2^$90,3^$-90,4^$-90}:/OH`-.5,6^$90:/!OH`-.5, + |,hexose_hp,#.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:Cellobiose;MW:342.3;EXA:1 + -hexose_hp,{1^$-90,2^$90,3^$-90}:/OH`-.5,6^$90:/!OH`-.5, +hexose_hp,#.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,##, @4,$0~arc_lbr,O,$0~arc_ltr, - |,hexose_hp,{2^$90,3^$-90,4^$-90}:/OH`-.5,6^$90:/!OH`-.5 + |,hexose_hp,#.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH +------------------------------------------------------------------------------ Cat:biological;EN:Trehalose;MW:342.3;EXA:1 + -hexose_hp,{1^$-90,2^$90,3^$-90}:/OH`-.5,6^$90:/!OH`-.5, - @4,@(1,0),|,hexose_hp,{1^$-90,2^$90,3^$-90}:/OH`-.5,6^$90:/!OH`-.5, +hexose_hp,#.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,##, + @4,@(1,0),|,hexose_hp,#.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,##, ||,@4,$-37~arc_lb`3.25,O,&10~arc_br +------------------------------------------------------------------------------ %============================================================================== @@ -348,13 +348,12 @@ Cat:biological;EN:Thiamine;MW:300.81;EXA:1 Cat:biological;EN:Gibberellin A3;MW:346.379;EXA:1 + <18,?5,3=?7,5=?6[12],@8,160`1.3,&3,13=dl,6=wf,8=wb, - @5,40~zf`1,O,50,//O^180,&14~zb, - 2:/COOH,7://_,13:*/OH,8:/*OH,14:*/_,{1,4}:*/H^60 + @5,40~zf`1,O,50,//O^180,&14~zb,2:/COOH,7://_,{13,8'}:*/OH,14:*/_,{1,4}:*/H^60 +------------------------------------------------------------------------------ Cat:biological;EN:Cholesterol;MW:386.664;EXA:1 + <30,?6,{-4,-2}=?6,-4=?5,7=dl, - 1:*/OH,{4,12}:*/_^60,10:/*H^180,{11,-1}:/*H^-60,9:*/H^60,@-1,17,/*_,!4,?! + 1:*/OH,{4,12}:*/_^60,{9'^60,10^180,11^-60,-1^-60}:/*H,@-1,17,/*_,!4,?! +------------------------------------------------------------------------------ Cat:biological;EN:Riboflavin;MW:376.37;EXA:1 + @@ -371,7 +370,7 @@ Cat:biological;EN:Glutathione;MW:307.33;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:Trenbolone;MW:270.37;EXA:1 + -<30,?6,{3,10}=?6,13=?5,{2,11,15}=dl,1://O,12:*/_^60,-1:/*OH,9:*/H^60,11:/*H^-60 +<30,?6,{3,10}=?6,13=?5,{2,11,15}=dl,1://O,12:*/_^60,-1:/*OH,{9^60,11'^-60}:*/H +------------------------------------------------------------------------------ Cat:biological;EN:Luciferin;MW:280.33;EXA:1 + @@ -403,7 +402,7 @@ Cat:biological;EN:Flavonol;MW:238.24;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:Cianidanol;MW:290.27;EXA:1 + -<30,Ph,3=?6,@8,*\,Ph,7:O,{1,5,13,14}:/OH,9:/*OH +<30,Ph,3=?6,@8,*\,Ph,7:O,{1,5,9~zf,13,14}:/OH +------------------------------------------------------------------------------ Cat:biological;EN:Quercetin;MW:302.24;EXA:1 + @@ -413,7 +412,7 @@ Cat:biological;EN:Quercetin;MW:302.24;EXA:1 Cat:biological;EN:Limonin;MW:470.518;EXA:1 + <30,?6,{-3,-4}=?6,-5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf,{13,15,17,20}:O, - {3,12,21}://O,{4~wf^60,8~zf^60}:/_,18:??,{1^60,5^180,16^60}:/*H, + {3,12,21}://O,{4^60,8'^60}:*/_,18:??,{1^60,5^180,16^60}:/*H, @14,\*,|,?5,{1,4}=dl,3:O +------------------------------------------------------------------------------ Cat:biological;EN:Cromolyn;MW:468.37;EXA:1 @@ -432,7 +431,7 @@ Cat:biological;EN:Acronycine;MW:321.376;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:Piperine;MW:285.343;EXA:1 + -<30,Ph,|,-1=?5,{1,3}:O,@$4,\,!!,!,!!,!,//O,!,|,?6,1:N +<30,Ph,-1=?5,{-1,-3}:O,@4,\,!!,!,!!,!,//O,!,?6,-6:N +------------------------------------------------------------------------------ Cat:biological;EN:Febrifugine;MW:301.34;EXA:1 + @@ -446,11 +445,11 @@ Cat:biological;EN:Hypericin;MW:504.44;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:Camphor;MW:152.23;EXA:1 + -#1,15,-30,90,90,30,##,&1,@2,0~si_`1.6,&5,{-1^45,-1^-65}:/_,4://O,5:/_^-45 +#1,15,-30,90,90,30,##,&1,@2,0~si_`1.6,&5,{-1^45,-1^-65,5^-45}:/_,4://O +------------------------------------------------------------------------------ Cat:biological;EN:Sparteine;MW:234.3803;EXA:1 + -<30,?6,3=?6,9=wf,10=wb,@8,#1,60,60,N,60,##,&10,-3=?6,3:N,4^60:*/H,11^-60:/*H +<30,?6,3=?6,9=wf,10=wb,@8,#1,60,60,N,60,##,&10,-3=?6,3:N,{4^60,11'^-60}:*/H +------------------------------------------------------------------------------ Cat:biological;EN:Mitomycine C;MW:334.332;EXA:1 + @@ -459,8 +458,8 @@ Cat:biological;EN:Mitomycine C;MW:334.332;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:Podophyllotoxin;MW:414.41;EXA:1 + -<0,?5,{2,5}:O,-3=Ph2,-3=?6,-3=?5,-2:O,-1=wb,-3://O, - @10,\*,Ph,{-2,-3,-4}:/O!,13:/*OH,{11~wf^-60,12~zf^60}:/H +<0,?5,{2,5}:O,-3=Ph2,-3=?6,-3=?5,-2:O,-1=wb,-3://O, + @10,\*,Ph,{-2,-3,-4}:/O!,13:/*OH,{11^-60,12'^60}:*/H +------------------------------------------------------------------------------ Cat:biological;EN:Warfarin;MW:308.333;EXA:1 + @@ -476,29 +475,29 @@ Cat:biological;EN:Baicalein;MW:270.24;EXA:1 +------------------------------------------------------------------------------ Cat:biological;EN:Reserpine;MW:608.688;EXA:1 + -<54,Ph,-4=?5,{-2,-4,-3}=?6,9=dl,11:N,7:NH,10:*/H^-60,{15^-60,16^60}:/*H, - @20,*\,O,!,//O,!,Ph,{-2,-3,-4}:/O!,{1,19~zf>rl}:/O!,18:*/COO!>lr +<54,Ph,-4=?5,{-2,-4,-3}=?6,9=dl,11:N,7:NH,{10'^-60,15^-60,16^60}:/*H, + @20,*\,O,!,//O,!,Ph,{-2,-3,-4,1,19~zf>rl}:/O!,18:*/COO!>lr +------------------------------------------------------------------------------ Cat:biological;EN:Rotenone;MW:394.423;EXA:1 + -<-60,?5,{-3,-2,-3,-4}=?6,{3',7,9,17',-2,-4}=dl, - {2,13,16}:O,10://O,{11^-60,12^60}:*/H,{-2,-3}:/O!,@1,*\,/_,!! +<-60,?5,{-3,-2,-3,-4}=?6,{3',7,9,17',-2,-4}=dl, + {2,13,16}:O,10://O,{11^-60,12^60}:*/H,{-2,-3}:/O!,@1,*\,/_,!! +------------------------------------------------------------------------------ Cat:biological;EN:Pyrethrin I;MW:328.452;EXA:1 + -<30,?3,{3^35~wf,3^-35~zf}:/_,@1,*\,!!,?!, +<30,?3,{3^35,3'^-35}:*/_,@1,*\,!!,?!, @2,\*,//O,!,O,-36~zb,|,?5,-2=dl,-1:/_,-3://O,@-2,\,!4,{-1,-3}=dl +------------------------------------------------------------------------------ Cat:biological;EN:Oseltamivir;MW:312.40;EXA:1 + -<30,?6,3=dl,6:*/NH2,@1,\*,NH,!,//O,!,@2,*\,O,!,/!,!2,@4,\,//O,!,O,!2 +<30,?6,3=dl,6:*/NH2,@1,\*,NH,!,//O,!,@2,*\,O,!?,!2,@4,\,//O,!,O,!2 +------------------------------------------------------------------------------ Cat:biological;EN:Paclitaxel;MW:853.918;EXA:1 + ?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, 4:??,6:/_,{3^-60,15}:*/OH,8:/*H^-60,9:*/_^60,10://O, @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, - @7,\*,O,-45,//O,60,Ph,11:*/OCO!>rl,12:/*OCO!^-15>lr + @7,\*,O,-45,//O,60,Ph,{11>rl,12'^-15>lr}:*/OCO! +------------------------------------------------------------------------------ Cat:biological;EN:Mevastatin;MW:390.52;EXA:1 + @@ -517,11 +516,11 @@ Cat:biological;EN:Morphine;MW:285.343;EXA:1 Cat:biological;EN:Quinine;MW:324.424;EXA:1 + <30,Ph,3=Ph,7:N,6:/O!, - @10,\,*/OH,/H~zf^-60,!,|,?6,2:N,1:*/H^60,@4,*\,!!,@2,165~zf,60,&5~zb + @10,\,*/OH,/*H^-60,!,|,?6,2:N,1:*/H^60,@4,*\,!!,@2,165~zf,60,&5~zb +------------------------------------------------------------------------------ Cat:biological;EN:Atoropin;MW:289.375;EXA:1 + -<30,O,!,//O,!,!,Ph,@$1,\~zb^-60,|,?7`1.1,@6,*\^190`1.25,N!,&3~wb,$3:/!OH~wv +<30,O,!,//O,!2,Ph,@$1,\~zb^-60,|,?7`1.1,@6,*\^190`1.25,N!,&3~wb,$3:/!OH~wv +------------------------------------------------------------------------------ Cat:biological;EN:Colchicine;MW:399.443;EXA:1 + @@ -530,16 +529,16 @@ Cat:biological;EN:Colchicine;MW:399.443;EXA:1 Cat:biological;EN:Lycorine;MW:287.315;EXA:1 + <30,Ph,{-4,-2}=?6,{6,(9,12)}=?5,13=dl,8:N,{15,17}:O, - 9:/*H^180,10:*/H^60,13:*/OH,14:/*OH + {9'^180,10^60}:*/H,{13,14'}:*/OH +------------------------------------------------------------------------------ Cat:biological;EN:Ibotenic acid;MW:158.113;EXA:1 + -<18,?5,4=dl,3:O,2:NH,1://O,@4,-24,/NH2,!,COOH +<18,?5,4=dl,3:O,2:NH,1://O,@4,-24,/NH2,!COOH +------------------------------------------------------------------------------ -Cat:biological;EN:illudin S;MW:264.3;EXA:1 +Cat:biological;EN:Illudin S;MW:264.3;EXA:1 + <30,?6,3=?5,6:**?3,{4,7}=dl,2://O,5:/_, - {1^35,8^35}:*/_,1:/*OH^-35,9:*/OH,8:/*!OH^-35 + {1^35,8^35}:*/_,{1'^-35,9}:*/OH,8:/*!OH^-35 +------------------------------------------------------------------------------ Cat:biological;EN:Muscarine;MW:174.26;EXA:1 + @@ -558,7 +557,7 @@ Cat:biological;EN:Tetrodotoxine;MW:319.27;EXA:1 Cat:biological;EN:Aflatoxin B1;MW:312.27;EXA:1 + <30,Ph,6=?6,-2=?5,4=?5,-2=?5,{-2,10}=dl,{7,14,17}:O, - 2:/O!,{8,11}://O,{15^-54,16^54}:*/H + 2:/O!,{8,11}://O,{15^-54,16^54}:*/H +------------------------------------------------------------------------------ %============================================================================== Cat:synthetic;EN:Benzene;MW:78.11;EXA:- @@ -680,7 +679,7 @@ Cat:antibiotics;EN:Ampicillin;MW:349.405;EXA:1 Cat:antibiotics;EN:benzyl-Penicillin;MW:334.4;EXA:1 + <45,?4,-3=?5,2:N,7:S,3^45:/*H,1://O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH,!,//O,!,!,Ph + @4,*\^15,NH,!,//O,!2,Ph +------------------------------------------------------------------------------ Cat:antibiotics;EN:Mecillinam;MW:325.4264;EXA:1 + @@ -695,18 +694,18 @@ Cat:antibiotics;EN:Nafcillin;MW:414.4748;EXA:1 Cat:antibiotics;EN:Oxacillin;MW:401.4363;EXA:1 + <45,?4,-3=?5,2:N,7:S,3^45:/*H,1://O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH,!,//O,!,<-24,?5,{-2,-5}=dl,-2:N,-3:O,-4:/_,@-1,\^-24,Ph + @4,*\^15,NH,!,//O,!,<-24,?5,{-2,-5}=dl,-2:N,-3:O,-4:/_,@-1,-24,Ph +------------------------------------------------------------------------------ Cat:antibiotics;EN:Cloxacillin;MW:435.8813;EXA:1 + <45,?4,-3=?5,2:N,7:S,3^45:/*H,1://O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH,!,//O,!,<-24,?5,{-2,-5}=dl,-2:N,-3:O,-4:/_,@-1,\^-24,Ph,-5:/Cl + @4,*\^15,NH,!,//O,!,<-24,?5,{-2,-5}=dl,-2:N,-3:O,-4:/_,@-1,-24,Ph,-5:/Cl +------------------------------------------------------------------------------ Cat:antibiotics;EN:Dicloxacillin;MW:470.3264;EXA:1 + <45,?4,-3=?5,2:N,7:S,3^45:/*H,1://O^15,5:/*COOH^-18,6:??, @4,*\^15,NH,!,//O,!,<-24,?5,{-2,-5}=dl,-2:N,-3:O,-4:/_, - @-1,\^-24,Ph,{-1,-5}:/Cl + @-1,-24,Ph,{-1,-5}:/Cl +------------------------------------------------------------------------------ Cat:antibiotics;EN:Cefalexin;MW:347.3889;EXA:1 + @@ -745,54 +744,54 @@ Cat:antibiotics;EN:Cefuroxime;MW:424.3852;EXA:1 Cat:antibiotics;EN:Apramycin;MW:539.58;EXA:1 + <30,?6,-4=?6,{2,10}:O,@1,\*,O,60~zb,?6,@9,\*,O,-60~zb,?6,-5:O, - {7,13,-2}:*/OH,{14,-1}:/*OH,{15,17}:*/NH2,{6,-3}:/*NH2,8:*/NH!>vt, - -4:*/!OH,3:/*H^-60`.75,4:*/H^60`.75 + {7,13,14',-1',-2}:*/OH,{6',15,17,-3'}:*/NH2,8:*/NH!^-20, + -4:*/!OH,{3'^-60,4^60}:*/H +------------------------------------------------------------------------------ Cat:antibiotics;EN:Gentamycin;MW:477.596;EXA:1 + -<-30,?6,@1,\*,O,0~zb,?6,-5:O,@5,\*,O,0~zb,?6,-5:O,{2,4}:*/NH2,20:/*NH2,6:*/OH, +<-30,?6,@1,\*,O,0~zb,?6,-5:O,@5,\*,O,0~zb,?6,-5:O,{2,4,20'}:*/NH2,6:*/OH, 11:*/OH^-35,11:/*_^35,12:*/NH!,13:/*OH,17:/'(*/_,!NH!) +------------------------------------------------------------------------------ Cat:antibiotics;EN:Kanamycin;MW:484.499;EXA:1 + <-30,?6,@1,\*,O,0~zb,?6,-5:O,@5,\,O,0,?6,-5:O, - {2,4,12}:*/NH2,{6,19}:*/OH,{11,13,18,20}:/*OH,10:*/!OH,17:*/!NH2 + {2,4,12}:*/NH2,{6',11,13,18,19',20}:/*OH,10:*/!OH,17:*/!NH2 +------------------------------------------------------------------------------ Cat:antibiotics;EN:Neomycin;MW:614.644;EXA:1 + -<30,?6,3:O,2:/*!NH2,1:*/OH,6:/*OH,5:*/NH2, +<30,?6,3:O,2:/*!NH2,{1,6'}:*/OH,5:*/NH2, @4,*\,O,!~wb,?6,{-3,-5^15}:/*NH2,-2:*/OH^-15, @-1,\*,O,-72~wb,?5,-4:O,-1:/*OH>vt,-3:*/!OH>vt, - @-2,\*^-24,O,-60~zb,?6,-5:O,-1:/*NH2,-2:*/OH,-3:/*OH,-4:/*!NH2>60 + @-2,\*^-24,O,-60~zb,?6,-5:O,-1:/*NH2,{-2,-3'}:*/OH,-4:/*!NH2>60 +------------------------------------------------------------------------------ Cat:antibiotics;EN:Streptmycin;MW:581.574;EXA:1 + <54,?5,3:O,4:/*_,5:/OH^35,@1,\*,O,-24~wb,?6,-5:O,@2,*\,O,24~zb,?6, - @5,\^-48,!!,O,{10,15}:*/OH,{11,16,18}:/*OH,9:/*!OH,12:*/NH!, + @5,-48,!!,O,{10,11',15,16',18'}:*/OH,9:/*!OH,12:*/NH!, @17,*\^-18,NH,!,//NH,!,NH2,@19,*\,NH,!,//NH,!,NH2 +------------------------------------------------------------------------------ Cat:antibiotics;EN:dihydro-Streptmycin;MW:583.574;EXA:1 + <54,?5,3:O,4:/*_,5:/!OH^-48,5:/*OH^35,@1,\*,O,-24~wb,?6,-5:O,@2,*\,O,24~zb,?6, - {10,15}:*/OH,{11,16,18}:/*OH,9:/*!OH,12:*/NH!, + {10,11',15,16',18'}:*/OH,9:/*!OH,12:*/NH!, @17,*\^-18,NH,!,//NH,!,NH2,@19,*\,NH,!,//NH,!,NH2 +------------------------------------------------------------------------------ Cat:antibiotics;EN:Spectinomycin;MW:332.35;EXA:1 + -<30,?6,{3,9}=?6,7=zf,11=wb,{7,10,14}:O,,9^60:*/H,11://O,{1,8^-60}:*/OH,5:/*OH, +<30,?6,{3,9}=?6,7=zf,11=wb,{7,10,14}:O,9^60:*/H,11://O,{1,5',8^-60}:*/OH, 13:/*_,{2,6}:*/NH! +------------------------------------------------------------------------------ Cat:antibiotics;EN:Tobramycin;MW:467.51;EXA:1 + <-30,?6,@1,\*,O,0~zb,?6,-5:O,@5,\,O,0,?6,-5:O, - {2,4,12}:*/NH2,20:/*NH2,6:*/OH,{11,13,18}:/*OH,10:*/!OH,17:*/!NH2 + {2,4,12,20'}:*/NH2,{6',11,13,18}:/*OH,10:*/!OH,17:*/!NH2 +------------------------------------------------------------------------------ Cat:antibiotics;EN:Neospiramycin;MW:698.9;EXA:1 + <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, - {12,14}=dl,2:O,1:/*_,5:/*OH,3://O,10:/*_,6:/*O!>vt, - @-6,\*,O,!~wb,?6`.7,-5:O,-3:/*N?!`-.5,-4:*/_`-.5, - @7,\*,O,0~wb,?6`.7,-5:O,-2:*/N?!`-.5,-1:/*OH`-.5,-4:*/_`.5,-3:/*OH`-.5, + {12,14}=dl,2:O,{1,10^-30}:/*_,5:/*OH,3://O,6:/*O!>vt, + @-6,\*^-30,O,!~wb,?6`.7,-5:O,#.5,-3:/*N?!,-4:*/_,##, + @7,\*,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-4:*/_,{-1,-3}:/*OH,##, @8,\*,!,!!,O +------------------------------------------------------------------------------ Cat:antibiotics;EN:Emamectine;MW:886.133;EXA:1 @@ -801,50 +800,50 @@ Cat:antibiotics;EN:Emamectine;MW:886.133;EXA:1 @5,#1.04,6,//O,-60,O,60~wb,60,-60,60~wf,60,-60,60,60,60,-60,60,##,&7, {-1,-3,-7}=dl,(-11,-10)=?6,@-2,?6,-6=wf,-1=zb,-5=dl, {-1,-6}:O,-3:*/_,@-2,\,*/_,!2, - 17:/_,19:/*_,@18,\,O,!,?6`.7,-1:O,-2:*/_`.5,-4:*/O!`-.5, - @-3,\,O,60,?6`.7,-5:O,-4:*/_`.5,-3:/*NH!`-.5,-2:*/O!`-.5 + 17:/_,19:/*_,@18,\,O,!,?6`.7,-1:O,#.5,-2:*/_,-4:*/O!,##, + @-3,\,O,60,?6`.7,-5:O,#.5,-4:*/_,-3:/*NH!,-2:*/O! +------------------------------------------------------------------------------ Cat:antibiotics;EN:Spinosad;MW:731.968;EXA:1 + <30,#1,<-120,60,60,-60,60,60,60,-60,60,60,60,-60,&1,##, 5=?5,-1=dl,{-2^60,-3^-35}:/*H,-3=?6,-4=dl, - {-1^35}:*/H,{-2^-60}:/*H,-2=?5,2:O,{3^25,7^-25}://O,1:/!, - @-2,\~zf,O,66,?6`.7,-1:O,-2:/_`.5,{-3,-4,-5}:/O!`-.5,8~wf:/Me`.5,5^-65~wf:/H, - @9,\~zf,O,!,|,?6`.7,2:O,3:/_`.5,-3:/N?!`-.5 + {-1^35,-2'^-60}:*/H,-2=?5,2:O,{3^25,7^-25}://O,1:*/!, + @-2,\*,O,66~zb,?6`.7,-1:O,#.5,-2:*/_,{-3',-4,-5}:*/O!,8:*/_,5^-65:*/H,##, + @9,\*,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,4:*/N?! +------------------------------------------------------------------------------ Cat:antibiotics;EN:Spiramycin;MW:843.1;EXA:1 + <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, {12,14}=dl,2:O,{1,10^-30}:/*_,5:/*OH,3://O,6:/*O!>vt, - @-6,\*^-30,O,!~wb,?6`.7,-5:O,-3:/*N?!`-.5,-4:*/_`.5, - @7,\*,O,0~wb,?6`.7,-5:O,-2:*/N?!`-.5,-1:/*OH`-.5,-4:*/_`.5, - @-3,\*`1,O,60~wb`1.5,?6`.7,-5:O,{-2^35,-3}:*/OH`-.5,{-2^-35,-4}:/*_`.5, + @-6,\*^-30,O,!~wb,?6`.7,-5:O,#.5,-3:/*N?!,-4:*/_,##, + @7,\*,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:*/_,##, + @-3,\*`1,O,60~wb,?6`.7,-5:O,#.5,{-2^35,-3}:*/OH,{-2^-35,-4}:/*_,##, @8,\*,!,!!,O +------------------------------------------------------------------------------ Cat:antibiotics;EN:Natamycin;MW:665.733;EXA:1 + <-90,#1,60,60,-60,60,-60,60,-60,60,-60,60,60,60,O,-60, - 60,60,-60,60,-60,60,-60,60,60,-60,&1,(12,13)=?6,##, + 60,60,-60,60,-60,60,-60,60,60,-60,&1,##,(12,13)=?6, {2,4,6,8,20}=dl,11=zb,23:O,-2:/*OH,-3:*/COOH, 18=?3,-1=wb,-2=wf,-1:O,22://O,24:*/_,{14^60,16}:*/OH, - @10,*\,O,90,?6`.7,-3:*/OH`-.5,-5:/*OH`-.5,-4:/*NH2`-.5,-1:O,-2:/*_`.5 + @10,*\^15,O,90,?6`.7,-1:O,#.5,{-3,-5'}:*/OH,-4:/*NH2,-2:/*_ +------------------------------------------------------------------------------ Cat:antibiotics;EN:Tylocin;MW:916.10;EXA:1 + <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, {12,14}=dl,2:O,1:/*!,5:/*OH,3://O,10:/*_,6:/*_,-6://O,-3:/_, - @-1,*\,-60,O,0~wb,?6`.7,-5:O,-3:/*OH`-.5,-4:*/_`.5,{-1,-2}:/*O!`-.5, - @7,\*,O,0~wb,?6`.7,-5:O,-2:*/N?!`-.5,-1:/*OH`-.5,-4:*/_`.5, - @-3,\*`1,O,60~wb`1.5,?6`.7,-5:O,{-2^35,-3}:*/OH`-.5,{-2^-35,-4}:/*_`.5, + @-1,*\,-60,O,0~wb,?6`.7,-5:O,#.5,-3:/*OH,-4:*/_,{-1,-2}:/*O!,##, + @7,\*,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:*/_,##, + @-3,\*`1,O,60~wb,?6`.7,-5:O,#.5,{-2^35,-3}:*/OH,{-2^-35,-4}:/*_,##, @8,\*,!,!!,O +------------------------------------------------------------------------------ Cat:antibiotics;EN:Tilmicosin;MW:869.133;EXA:1 + <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, {12,14}=dl,2:O,1:/*!,5:/*OH,{3,11}://O,{6,10}:/*_,14:/_, - @-1,*\,-60,O,0~zb,?6`.7,-5:O,{-1,-2}:*/O!,-3:*/OH,-4:/*_, - @7,\*,O,0,?6`.7,-5:O,-2:*/N?!,{-1,-3}:/*OH,-4:*/_, - @8,\*,!2,?6`.7,-6:N,{-2,-4}:*/_ + @-1,*\,-60,O,0~zb,?6`.7,-5:O,#.5,{-1,-2}:*/O!,-3:*/OH,-4:/*_,##, + @7,\*,O,0,?6`.7,-5:O,#.5,-2:*/N?!,{-1,-3}:/*OH,-4:*/_,##, + @8,\*,!2,?6`.7,-6:N,#.5,{-2,-4}:*/_ +------------------------------------------------------------------------------ Cat:antibiotics;EN:Chlortetracyclin;MW:478.88;EXA:1 + @@ -870,7 +869,7 @@ Cat:antibiotics;EN:Tiamulin;MW:493.74;EXA:1 + <-45.5,?8,-3=?5,@8,#.8,-210~zf,/_^60,45,56,##,&6~zb, {3^-45,5,8}:*/_,@3,\*^30,!~dl,4:/*OH,11://O,7:*/H^60, - @1,\^15,O,!,//O,!2,S,60,60,-60,N!2,60,-60 + @1,15,O,!,//O,!2,S,60,60,-60,N!2,60,-60 +------------------------------------------------------------------------------ Cat:antibiotics;EN:Rifampicin;MW:822.94;EXA:1 + @@ -883,7 +882,7 @@ Cat:antibiotics;EN:Rifampicin;MW:822.94;EXA:1 %============================================================================== Cat:pesticide;EN:BHC;MW:290.83;EXA:1 + -<30,?6,{1,3,4,6}:*/Cl,{2,5}:/*Cl +<30,?6,{1,2',3,4,5',6}:*/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:pp-DDT;MW:354.49;EXA:1 + @@ -899,11 +898,11 @@ Cat:pesticide;EN:pp-DDD;MW:320;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:pp-DDE;MW:318;EXA:- + -<30,Ph,6:/Cl,@3,\,/CCl2~dm,!,Ph,-3:/Cl +<30,Ph,6:/Cl,@3,\,//CCl2,!,Ph,-3:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:EPN;MW:323.303;EXA:- + -<30,!2,O,!,P,//S,/Ph^170,!,O,!,|,Ph,4:/NO2 +<30,!2,O,!,P,//S,/Ph^170,!,O,!,Ph,-3:/NO2 +------------------------------------------------------------------------------ Cat:pesticide;EN:XMC;MW:179.2;EXA:- + @@ -911,8 +910,8 @@ Cat:pesticide;EN:XMC;MW:179.2;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Acrinathrin;MW:541.45;EXA:1 + -<-30,?3,2^-35:*/_,2^35:/*_, - @1,\,!~dl,!,//O,!,O,!,/CF3,!,CF3,@3,\,//O,!,O,!,/CN,!,Ph,@-4,\,O,-60,Ph +<-30,?3,{2^-35,2'^35}:*/_, + @1,\,!~dl,!,//O,!,O,!,/CF3,!,CF3,@3,\,//O,!,O,!,/CN,!,Ph,-4:/OPh>rl +------------------------------------------------------------------------------ Cat:pesticide;EN:Azaconazole;MW:300.139;EXA:1 + @@ -944,11 +943,11 @@ Cat:pesticide;EN:Isoprcarb;MW:193.246;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Isoprothiolane;MW:290.4;EXA:- + -<30,!,/_,!,O,!,//O,!,!,//O,!,O,!,?!,@5,\\,|,?5,{2,5}:S +<30,!?!,O,!,//O,!2,//O,!,O,!?!,@5,\\,|,?5,{2,5}:S +------------------------------------------------------------------------------ Cat:pesticide;EN:Iprobenfos;MW:288.34;EXA:- + -<30,!,/_,!,O,!,P,//O,/O!?!^170,!,S,!2,Ph +<30,!?!,O,!,P,//O,/O!?!^170,!,S,!2,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Uninnazole-P;MW:291.779;EXA:- + @@ -960,7 +959,7 @@ Cat:pesticide;EN:Esprocarb;MW:265.4;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Ethalfluralin;MW:333.3;EXA:- + -<30,Ph,{1,3}:/NO2,5:/CF3,@2,\`1.1,/!,N,!2,/_,!~dr +<30,Ph,{1,3}:/NO2,5:/CF3,@2,\`1.1,/!,N,!2,/_,!! +------------------------------------------------------------------------------ Cat:pesticide;EN:Ethion;MW:384.46;EXA:- + @@ -1001,7 +1000,7 @@ Cat:pesticide;EN:Oxyfluorfen;MW:361.701;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Cadusafos;MW:270.386;EXA:- + -<-30,!2,/_,!,S,!,P,//O,/O!2^160>rl,!,S,!,/_,!2 +<-30,!2,?!,S,!,P,//O,/O!2^160>rl,!,S,!?,!2 +------------------------------------------------------------------------------ Cat:pesticide;EN:Cafenstrole;MW:350.4;EXA:- + @@ -1030,7 +1029,7 @@ Cat:pesticide;EN:Quitozene;MW:295.3;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Kresoxim-Methyl;MW:313.348;EXA:- + -<30,Ph,@3,\,/COO!,!~dr,N,!,O,!,@4,\,!,O,!,Ph,-1:/_ +<30,Ph,@3,\,/COO!,!!,N,!,O,!,@4,\,!,O,!,Ph,-1:/_ +------------------------------------------------------------------------------ Cat:pesticide;EN:Clomazone;MW:239.7;EXA:- + @@ -1054,11 +1053,11 @@ Cat:pesticide;EN:Chlorfenson;MW:303.153;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Chlorfenvinphos;MW:359.58;EXA:- + -<30,!2,O,!,P,//O,/O!2^160>rl,!,O,!,!~dr,!,Cl,@6,\`1,|,Ph,{2,4}:/Cl +<30,!2,O,!,P,//O,/O!2^160>rl,!,O,!,!!,!,Cl,@6,\`1,|,Ph,{2,4}:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Chlorpropham;MW:213.7;EXA:- + -<30,Ph,6:/Cl,@4,\,NH,!,//O,!,O,!,/_,! +<30,Ph,6:/Cl,@4,\,NH,!,//O,!,O,!?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Chlorbenside;MW:269.183;EXA:- + @@ -1087,8 +1086,7 @@ Cat:pesticide;EN:Probenazole;MW:223.25;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Penflufen;MW:317.41;EXA:- + -<30,Ph,@3,\,NH,!,//O,!,?5,{-1,-4}=db,{-2,-3}:N,{-2,-4}:/_,-1:/F, - @4,\,/_,60,!,/_,! +<30,Ph,@3,\,NH,!,//O,!,?5,{-1,-4}=db,{-2,-3}:N,{-2,-4}:/_,-1:/F,@4,\,/_,60,!?! +------------------------------------------------------------------------------ Cat:pesticide;EN:MCPA;MW:200.62;EXA:- + @@ -1105,7 +1103,7 @@ Cat:pesticide;EN:Imazasulfuron;MW:412.81;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Triaziflam;MW:333.4;EXA:- +, -<30,Ph,{2,6}:/_,@4,\,O,!2,/_,!,NH,!,Ph,{-1,-3,-5}:N,-2:/NH2,@-4,\,??,!,F +<30,Ph,{2,6}:/_,@4,\,O,!2,?!,NH,!,Ph,{-1,-3,-5}:N,-2:/NH2,@-4,\,??,!,F +------------------------------------------------------------------------------ Cat:pesticide;EN:Trichlopyr;MW:256.47;EXA:- +, @@ -1130,7 +1128,7 @@ Cat:pesticide;EN:Cyanophos;MW:243.22;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Diethofencarb;MW:267.3;EXA:- + -<30,Ph,@4,\,NH,!,//O,!,O,!,/_,!,{1,6}:/O!2 +<30,Ph,@4,\,NH,!,//O,!,O,!?!,{1,6}:/O!2 +------------------------------------------------------------------------------ Cat:pesticide;EN:Dichlofenthion;MW:315.2;EXA:- + @@ -1138,25 +1136,25 @@ Cat:pesticide;EN:Dichlofenthion;MW:315.2;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Diclofop-methyl;MW:341.2;EXA:- + -<30,Ph,{4,6}:/Cl,@3,\,O,!,Ph,@-4,\,O,!,/_,!,COO! +<30,Ph,{4,6}:/Cl,@3,\,O,!,Ph,@-4,\,O,!?!,COO! +------------------------------------------------------------------------------ Cat:pesticide;EN:Cyhalothrin;MW:449.86;EXA:- + -<-30,?3,2^-35:*/_,2^35:/*_,@1,\,!~dl,/CF3,!,Cl, - @3,\,//O,!,O,!,/CN,!,Ph,@-4,\,O,-60,Ph +<-30,?3,{2^-35,2'^35}:*/_,@1,\,!~dl,/CF3,!,Cl, + @3,\,//O,!,O,!,/CN,!,Ph,-4:/OPh>rl +------------------------------------------------------------------------------ Cat:pesticide;EN:Cyhalofop-Buthyl;MW:357.381;EXA:- + -<30,Ph,1:/CN,4:/F,@3,\,O,!,|,Ph,@-3,\,O,!,/_,!,//O,!,O,!4 +<30,Ph,1:/CN,4:/F,@3,\,O,!,|,Ph,@-3,\,O,!?!,//O,!,O,!4 +------------------------------------------------------------------------------ Cat:pesticide;EN:Diphenamid;MW:239.3;EXA:- + -<30,Ph,@3,\,!,Ph,@-5,\,//O,!,N,/_,! +<30,Ph,@3,\,!,Ph,@-5,\,//O,!,N,?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Cyfluthrin;MW:434.3;EXA:- + -<-30,?3,{2^-35~wf,2^35~zf}:/_, - @1,\,!~dl,/Cl,!,Cl,@3,\,//O,!,O,!,/CN,!,Ph,-3:/F,@-4,\,O,-60,Ph +<-30,?3,{2^-35,2'^35}:*/_, + @1,\,!~dl,/Cl,!,Cl,@3,\,//O,!,O,!,/CN,!,Ph,-3:/F,-4:/OPh>rl +------------------------------------------------------------------------------ Cat:pesticide;EN:Diflufenican;MW:394.29;EXA:- + @@ -1164,12 +1162,12 @@ Cat:pesticide;EN:Diflufenican;MW:394.29;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Cyproconazole;MW:291.8;EXA:- + -<30,?3,@2,\,/_,!,/OH^30,-90,!,|,<-18,?5,{2,4}=dl,{1,3,5}:N,@$5,-30,Ph,-3:/Cl +<30,?3,@2,\,?!,/OH^30,-90,!,|,<-18,?5,{2,4}=dl,{1,3,5}:N,@$5,-30,Ph,-3:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Cypermethrin;MW:416.3;EXA:- + -<-30,?3,{2^-35~wf,2^35~zf}:/_, - @1,\,!~dl,/Cl,!,Cl,@3,\,//O,!,O,!,/CN,!,Ph,@-4,\,O,-60,Ph +<-30,?3,{2^-35,2'^35}:*/_, + @1,\,!~dl,/Cl,!,Cl,@3,\,//O,!,O,!,/CN,!,Ph,-4:/OPh>rl +------------------------------------------------------------------------------ Cat:pesticide;EN:Simazine;MW:201.7;EXA:- + @@ -1177,7 +1175,7 @@ Cat:pesticide;EN:Simazine;MW:201.7;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Dimethametryn;MW:255.4;EXA:- + -<30,Ph,{2,4,6}:N,5:/S!,1:/NH!2,@3,\,NH,!,/_,!,/_,! +<30,Ph,{2,4,6}:N,5:/S!,1:/NH!2,@3,\,NH,!?!,?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Dimethylvinphos;MW:331.52;EXA:- + @@ -1185,7 +1183,7 @@ Cat:pesticide;EN:Dimethylvinphos;MW:331.52;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Dimethenamid;MW:275.8;EXA:- + -<-6,?5,{3,5}=dl,2:S,{3,5}:/_,@4,\,N,!,//O,!2,Cl,@6,\,/_,!2,O,! +<-6,?5,{3,5}=dl,2:S,{3,5}:/_,@4,\,N,!,//O,!2,Cl,@6,\,?!2,O,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Dimethoate;MW:229.25;EXA:- + @@ -1219,7 +1217,7 @@ Cat:pesticide;EN:Thifluzamide;MW:528.08;EXA:- Cat:pesticide;EN:Dieldrin;MW:380.895;EXA:- + <30,?6`1.2,3=?6,6=dl,9=?3,-1:O,@2,148~wf`1.4,&5~wb, - @7,145~zf`1.3,&10~zb,{1,2,5,6,12^-210,12^-150}:/Cl + @7,*\^145`1.3,&10~zb,{1,2,5,6,12^-210,12^-150}:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Aldrin;MW:364.908;EXA:- + @@ -1232,7 +1230,7 @@ Cat:pesticide;EN:Tecnazene;MW:260.879;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Tetrachlorvinfos;MW:365.97;EXA:- + -<-30,!,O,!,P,//O,/O!^160,!,O,!,!~dr,!,Cl,@5,\`1,|,Ph,{2,4,5}:/Cl +<-30,!,O,!,P,//O,/O!^160,!,O,!,!!,!,Cl,@5,\`1,|,Ph,{2,4,5}:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Tetraconazole;MW:372.14;EXA:- + @@ -1248,7 +1246,7 @@ Cat:pesticide;EN:Thenylchlor;MW:323.835;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Tebuconazole;MW:307.8;EXA:- + -<36,?5,{1,4}=dl,{1,3,5}:N,@3,\^30,!4,Ph,-3:/Cl,7^-30:/??!,7^30:/OH +<36,?5,{1,4}=dl,{1,3,5}:N,@3,30,!4,Ph,-3:/Cl,7^-30:/??!,7^30:/OH +------------------------------------------------------------------------------ Cat:pesticide;EN:Tebufenpyrad;MW:333.86;EXA:- + @@ -1256,7 +1254,7 @@ Cat:pesticide;EN:Tebufenpyrad;MW:333.86;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Tefluthrin;MW:418.736;EXA:- + -<-30,?3,{2^-35~wf,2^35~zf}:/_,@1,\,!~dl,/CF3,!,Cl, +<-30,?3,{2^-35,2'^35}:*/_,@1,\,!!,/CF3,!,Cl, @3,\,//O,!,O,!2,|,Ph,{2,3,5,6}:/F,4:/_ +------------------------------------------------------------------------------ Cat:pesticide;EN:Terbutryn;MW:241.4;EXA:- @@ -1277,7 +1275,7 @@ Cat:pesticide;EN:Triazophos;MW:313.31;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Triallate;MW:304.7;EXA:- + -<-30,!,/_,!,N,/?!,!,//O,!,S,!2,/Cl,!~dr,/Cl,!,Cl +<-30,!?!,N,/?!,!,//O,!,S,!2,/Cl,!!,/Cl,!,Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Tribufos;MW:314.50;EXA:- + @@ -1321,7 +1319,7 @@ Cat:pesticide;EN:Bifenox;MW:342.14;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Bifenthrin;MW:422.88;EXA:- + -<-30,?3,2^-35:*/_,2^35:/*_, +<-30,?3,{2^-35,2'^35}:*/_, @1,\,!~dl,/Cl,!,CF3,@3,\,//O,!,O,!,-60,Ph,-1:/_,-2:/Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Piperophos;MW:353.48;EXA:- @@ -1336,7 +1334,7 @@ Cat:pesticide;EN:Pyraclofos;MW:360.80;EXA:- Cat:pesticide;EN:Pyrazophos;MW:373.37;EXA:- + <30,!2,O,!,P,//S,/O!2^160>rl,!,O,!, - |,?5,3=?6,{2,5}=dl,{7,9}=dl,{4,5,6}:N,7:/_,-2:/COO!2 + |,?5,3=?6,{2,5,7,9}=dl,{4,5,6}:N,7:/_,-2:/COO!2 +------------------------------------------------------------------------------ Cat:pesticide;EN:Pyraflufen-ethyl;MW:413.174;EXA:- + @@ -1345,7 +1343,7 @@ Cat:pesticide;EN:Pyraflufen-ethyl;MW:413.174;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Pyridaben;MW:364.9;EXA:- + -<30,?6,{2,4}=dl,{5,6}:N,6:/??!,1://O,2:/Cl,@-4,\,S,!,!,|,Ph,4:/??! +<30,?6,{2,4}=dl,{5,6}:N,6:/??!,1://O,2:/Cl,@-4,\,S,!2,|,Ph,4:/??! +------------------------------------------------------------------------------ Cat:pesticide;EN:Pyridaphenthion;MW:340.34;EXA:- + @@ -1353,15 +1351,15 @@ Cat:pesticide;EN:Pyridaphenthion;MW:340.34;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Pyributicarb;MW:330.4;EXA:- + -<30,Ph,5:/??!,@3,\,//O,!,S,!,N,/_,!,|,Ph,2:N,3:/O! +<30,Ph,5:/??!,@3,\,//O,!,S,!,N,?!,|,Ph,2:N,3:/O! +------------------------------------------------------------------------------ Cat:pesticide;EN:Pyriproxyfen;MW:321.5;EXA:- + -<30,Ph,@5,\,O,!,Ph,@-3,\,O,!2,/_,!,O,-60,|,Ph,2:N +<30,Ph,@5,\,O,!,Ph,@-3,\,O,!2,?!,O,-60,|,Ph,2:N +------------------------------------------------------------------------------ Cat:pesticide;EN:Pyriminobac-Methyl;MW:361.354;EXA:- + -<30,Ph,2:/OCO!,@5,\,/_,!~dr,N,!,O,!,@3,\,O,!,|,Ph,{2,6}:N,{3,5}:/O! +<30,Ph,2:/OCO!,@5,\,/_,!!,N,!,O,!,@3,\,O,!,|,Ph,{2,6}:N,{3,5}:/O! +------------------------------------------------------------------------------ Cat:pesticide;EN:Pirimiphos-methyl;MW:305.333;EXA:- + @@ -1377,7 +1375,7 @@ Cat:pesticide;EN:Pyroquilon;MW:173.2;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Vinclozolin;MW:286.108;EXA:- + -<36,?5,3:N,5:O,{2,4}://O,1:/_^54,@1,\^-30,!~dr,@3,\,|,Ph,{3,5}:/Cl +<36,?5,3:N,5:O,{2,4}://O,1:/_^54,@1,-30,!!,@3,\,|,Ph,{3,5}:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Fipronil;MW:437.2;EXA:- + @@ -1390,7 +1388,7 @@ Cat:pesticide;EN:Fenomiphos;MW:303.36;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Fenarimol;MW:331.2;EXA:- + -<30,Ph,@3,\,!,Ph,{4,11}:/Cl,7:/OH^30,@7,\^-30,|,Ph,{3,5}:N +<30,Ph,@3,\,!,Ph,{4,11}:/Cl,7:/OH^30,@7,-30,|,Ph,{3,5}:N +------------------------------------------------------------------------------ Cat:pesticide;EN:Fenitrothion;MW:277.23;EXA:- + @@ -1398,7 +1396,7 @@ Cat:pesticide;EN:Fenitrothion;MW:277.23;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Fenothiocarb;MW:253.4;EXA:- + -<30,Ph,@3,\,O,!5,S,!,//O,!,N,/_,! +<30,Ph,@3,\,O,!5,S,!,//O,!,N,?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Fensulfothion;MW:308.35;EXA:- + @@ -1423,7 +1421,7 @@ Cat:pesticide;EN:Fenpropathrin;MW:349.4;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Fenpropimorph;MW:303.49;EXA:- + -<30,?6,3:N,6:O,{1,5}:*/_,@3,\,!,/_,!2,|,Ph,4:/??! +<30,?6,3:N,6:O,{1,5}:*/_,@3,\,!?,!2,|,Ph,4:/??! +------------------------------------------------------------------------------ Cat:pesticide;EN:Phthalide;MW:271.9;EXA:- + @@ -1435,11 +1433,11 @@ Cat:pesticide;EN:Butachlor;MW:311.85;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Butamifos;MW:332.36;EXA:- + -<-30,!2,/_,!,NH,!,P,//S,/O!2^170>rl,!,O,!,|,Ph,2:/NO2,5:/_ +<-30,!2,?!,NH,!,P,//S,/O!2^170>rl,!,O,!,|,Ph,2:/NO2,5:/_ +------------------------------------------------------------------------------ Cat:pesticide;EN:Bupirimate;MW:316.42;EXA:- + -<30,Ph,{4,6}:N,1:/_,@3,\,O,!,SOO,!,N,/_,!,2:/!3,@5,\,NH,!2 +<30,Ph,{4,6}:N,1:/_,@3,\,O,!,SOO,!,N,?!,2:/!3,@5,\,NH,!2 +------------------------------------------------------------------------------ Cat:pesticide;EN:Buprofezin;MW:305.4;EXA:- + @@ -1447,11 +1445,11 @@ Cat:pesticide;EN:Buprofezin;MW:305.4;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Flamprop-methyl;MW:335.8;EXA:- + -<30,Ph,1:/Cl,6:/F,@3,\,N,!,/_,!,//O,!,O,!,@7,\,//O,-60,Ph +<30,Ph,1:/Cl,6:/F,@3,\,N,!?!,//O,!,O,!,@7,\,//O,-60,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Fluacrypyrim;MW:426.392;EXA:- + -<30,Ph,{4,6}:N,1:/CF3,5:/O!?!,@3,\,O,!2,Ph,@-1,\,|,!~dr,!,O,!,1:/COO! +<30,Ph,{4,6}:N,1:/CF3,5:/O!?!,@3,\,O,!2,Ph,@-1,\,|,!!,!,O,!,1:/COO! +------------------------------------------------------------------------------ Cat:pesticide;EN:Fluquinconazole;MW:376.2;EXA:- + @@ -1476,7 +1474,7 @@ Cat:pesticide;EN:Fluvalinate;MW:502.92;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Flumioxazin;MW:354.337;EXA:- + -<30,Ph,6:/F,3=?6,-1:O,-4:N,-3://O,@-4,\,!,!~tm, +<30,Ph,6:/F,3=?6,-1:O,-4:N,-3://O,@-4,\,!,!!!, @1,\,|,?5,3=?6,3=dr,1:N,{2,5}://O +------------------------------------------------------------------------------ Cat:pesticide;EN:Pretilachlor;MW:311.85;EXA:- @@ -1509,7 +1507,7 @@ Cat:pesticide;EN:Propaphos;MW:304.343;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Propyzamide;MW:256.1;EXA:- + -<30,Ph,{1,5}:/Cl,@3,\,//O,!,NH,!,??,!,!~tm +<30,Ph,{1,5}:/Cl,@3,\,//O,!,NH,!,??,!,!!! +------------------------------------------------------------------------------ Cat:pesticide;EN:Propiconazole;MW:342.22;EXA:- + @@ -1525,7 +1523,7 @@ Cat:pesticide;EN:Profenofos;MW:373.6;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Bromacil;MW:261.119;EXA:- + -<30,?6,6=dl,3:N,1:/Br,{2,4}://O,5:NH,6:/_,@3,\,/_,!2 +<30,?6,6=dl,3:N,1:/Br,{2,4}://O,5:NH,6:/_,3:/?!2 +------------------------------------------------------------------------------ Cat:pesticide;EN:Prometryn;MW:241.4;EXA:- + @@ -1545,7 +1543,7 @@ Cat:pesticide;EN:Bromopropylate;MW:428.12;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Hexaconazole;MW:314.2;EXA:- + -<36,?5,{1,4}=dl,{1,3,5}:N,@3,\^30,!5,-4^30:/OH,@-5,\^-30,|,Ph,{4,6}:/Cl +<36,?5,{1,4}=dl,{1,3,5}:N,@3,30,!5,-4^30:/OH,@-5,-30,|,Ph,{4,6}:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Hexazinone;MW:252.31;EXA:- + @@ -1553,7 +1551,7 @@ Cat:pesticide;EN:Hexazinone;MW:252.31;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Benalaxyl;MW:325.4;EXA:- + -<30,Ph,@3,\,!,//O,!,N,!,/_,!,//O,!,O,!,@-5,\,|,Ph,{2,6}:/_ +<30,Ph,@3,\,!,//O,!,N,!?!,//O,!,O,!,@-5,\,|,Ph,{2,6}:/_ +------------------------------------------------------------------------------ Cat:pesticide;EN:Benoxacor;MW:260.1;EXA:- + @@ -1565,7 +1563,7 @@ Cat:pesticide;EN:Heptachlor;MW:373.35;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Permethrin;MW:391.30;EXA:- + -<-30,?3,{2^-35}:*/_,{2^35}:/*_,@1,\,!~dl,/Cl,!,Cl, +<-30,?3,{2^-35,2'^35}:*/_,@1,\,!~dl,/Cl,!,Cl, @3,\,//O,!,O,!2,Ph,@-4,\,O,-60,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Penconazole;MW:284.184;EXA:- @@ -1574,7 +1572,7 @@ Cat:pesticide;EN:Penconazole;MW:284.184;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Pendimethalin;MW:281.3;EXA:- + -<30,Ph,{3,5}:/NO2,{1,2}:/_,@4,\,NH,!,/!,!2 +<30,Ph,{3,5}:/NO2,{1,2}:/_,@4,\,NH,!?,!2 +------------------------------------------------------------------------------ Cat:pesticide;EN:Benfluralin;MW:335.3;EXA:- + @@ -1586,7 +1584,7 @@ Cat:pesticide;EN:Benfuresate;MW:256.3;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Bensulide;MW:397.5;EXA:- + -<30,!,?!,O,!,P,//S,/O!?!^160>rl,!,S,!3,NH,!,SOO,!,Ph +<30,!?!,O,!,P,//S,/O!?!^160>rl,!,S,!3,NH,!,SOO,!,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Phosalone;MW:367.80;EXA:- + @@ -1606,7 +1604,7 @@ Cat:pesticide;EN:Malathion;MW:330.35;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Myclobutanil;MW:288.8;EXA:- + -<36,?5,{1,4}=dl,{1,3,5}:N,@3,\^30,!5,7:/CN^30,@7,\^-30,|,Ph,4:/Cl +<36,?5,{1,4}=dl,{1,3,5}:N,@3,30,!5,7:/CN^30,@7,-30,|,Ph,4:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Methidathion;MW:302.32;EXA:- + @@ -1618,19 +1616,19 @@ Cat:pesticide;EN:Methoxychlor;MW:345.644;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Metolachlor;MW:283.8;EXA:- + -<30,Ph,5:/!,3:/_,@4,\,N,!,//O,!2,Cl,@7,\,/_,!2,O,! +<30,Ph,5:/!,3:/_,@4,\,N,!,//O,!2,Cl,@7,\,?!2,O,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Mevinphos;MW:224.15;EXA:- + -<-30,!,O,!,P,//O,/O!^160,!,O,!,/_,!~dr,!,//O,!,O,! +<-30,!,O,!,P,//O,/O!^160,!,O,!?,!!,!,//O,!,O,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Mefenacet;MW:298.4;EXA:- + -<12,Ph,3=?5,9=dl,9:N,7:S,@8,\,O,!2,//O,!,N,/_,!,Ph +<12,Ph,3=?5,9=dl,9:N,7:S,@8,\,O,!2,//O,!,N,?!,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Mefenpyr-diethyl;MW:373.23;EXA:- + -<18,?5,5=dl,{4,5}:N,3^65:/_,{1^12,3^-12}:/COO!2,@4,\^-24,|,Ph,{4,6}:/Cl +<18,?5,5=dl,{4,5}:N,3^65:/_,{1^12,3^-12}:/COO!2,@4,-24,|,Ph,{4,6}:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Mepronil;MW:269.3;EXA:- + @@ -1642,7 +1640,7 @@ Cat:pesticide;EN:Molinate;MW:187.3;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Resmethrin;MW:338.4;EXA:- + -<-30,?3,{2^-35~wf,2^35~zf}:/_,@1,\,!!,/_,!,@3,\,//O,!,O,!2, +<-30,?3,{2^-35,2'^35}:*/_,@1,\,!!,?!,@3,\,//O,!,O,!2, |,?5,{3,5}=dl,2:O,@3,\,!,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Lenacil;MW:234.3;EXA:- @@ -1651,11 +1649,12 @@ Cat:pesticide;EN:Lenacil;MW:234.3;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Halfenprox;MW:477.4;EXA:- + -<30,Ph,@6,\,O,!,/F^35,/F^-35,!,Br,@3,\,!,??,!,O,!,!,Ph,@-2,\,O,60,Ph +<30,Ph,@6,\,O,!,/F^35,/F^-35,!,Br,@3,\,!,??,!,O,!2,Ph,@-2,\,O,60,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Paraquat;MW:257.16;EXA:- + -Ph,@4,\,Ph,{1,10}:N!,1:p_^-90,10:p_^90,@1,@(0,1.2),Cl,n_^15,@10,@(0,1.2),Cl,n_^15 +Ph,@4,\,Ph,{1,10}:N!,1:p_^-90,10:p_^90,@1,@(0,1.2),Cl,n_^15, + @10,@(0,1.2),Cl,n_^15 +------------------------------------------------------------------------------ Cat:pesticide;EN:Oxine-Copper;MW:351.852;EXA:- + @@ -1681,15 +1680,15 @@ Cat:pesticide;EN:Azoxystorbin;MW:403.394;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Aramite;MW:334.859;EXA:- + -<30,Ph,6:/??!,@3,\,O,!2,/_,!,O,!,S,//O,!,O,!3,Cl +<30,Ph,6:/??!,@3,\,O,!2,?!,O,!,S,//O,!,O,!3,Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Aldicarb;MW:190.3;EXA:- + -<-30,!,S,!,??,!,!~dr,N,!,O,!,//O,!,NH,! +<-30,!,S,!,??,!,!!,N,!,O,!,//O,!,NH,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Aldoxycarb;MW:222.3;EXA:- + -<30,!,//O,!,NH,!,O,!,N,!~dr,!,??,!,SOO,! +<30,!,//O,!,NH,!,O,!,N,!!,!,??,!,SOO,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Isoxaflutole;MW:359.319;EXA:- + @@ -1697,11 +1696,11 @@ Cat:pesticide;EN:Isoxaflutole;MW:359.319;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Iprovalicarb;MW:320.4;EXA:- + -<30,Ph,6:/_,@3,\,!,/_,!,NH,!,//O,!,??,!,NH,!,//O,!,O,!?! +<30,Ph,6:/_,@3,\,!?!,NH,!,//O,!,??,!,NH,!,//O,!,O,!?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Imazalil;MW:297.2;EXA:- + -<-30,!2,O,!2,!~dr,@1,\^60,|,?5,{2,4}=dl,{1,3}:N,@$2,\,|,Ph,{4,6}:/Cl +<-30,!2,O,!2,!!,@1,60,|,?5,{2,4}=dl,{1,3}:N,@$2,\,|,Ph,{4,6}:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Imidacloprid;MW:255.662;EXA:- + @@ -1709,7 +1708,7 @@ Cat:pesticide;EN:Imidacloprid;MW:255.662;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Indanofan;MW:340.80;EXA:- + -<30,Ph,3=?5,{7,9}://O,{8^55>lr}:/!,@8,-30,!2,|,Ph,5:/Cl,||,@11,?3,-2:O +<30,Ph,3=?5,{7,9}://O,8^55>lr:/!,@8,-30,!2,|,Ph,5:/Cl,||,@11,?3,-2:O +------------------------------------------------------------------------------ Cat:pesticide;EN:Indoxacarb;MW:527.837;EXA:- + @@ -1718,7 +1717,7 @@ Cat:pesticide;EN:Indoxacarb;MW:527.837;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Oxamyl;MW:219.3;EXA:- + -<-30,!,N,/_,!,//O,!,/S!,!~dr,N,!,O,!,//O,!,NH,! +<-30,!,N,?!,//O,!,/S!,!!,N,!,O,!,//O,!,NH,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Oryzalin;MW:346.4;EXA:- + @@ -1730,7 +1729,7 @@ Cat:pesticide;EN:Carbaryl;MW:201.22;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Carpropamid;MW:334.665;EXA:- + -<-30,?3,1:/_,2^-35:*/Cl,2^35:/*Cl,3^70:/!,@3,\,//O,!,NH,!,/_,!,Ph,-3:/Cl +<-30,?3,1:/_,{2^-35,2'^35}:*/Cl,3^70:/!,@3,\,//O,!,NH,!?!,Ph,-3:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Cumyluron;MW:302.802;EXA:- + @@ -1738,7 +1737,7 @@ Cat:pesticide;EN:Cumyluron;MW:302.802;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Cloquintocet-methyl;MW:335.83;EXA:- + -<90,Ph,4=Ph,2:N,10:/Cl,@7,\,O,!2,//O,!,O,!,/_,!5 +<90,Ph,4=Ph,2:N,10:/Cl,@7,\,O,!2,//O,!,O,!?,!5 +------------------------------------------------------------------------------ Cat:pesticide;EN:Clotianidin;MW:249.673;EXA:- + @@ -1750,7 +1749,7 @@ Cat:pesticide;EN:Chromafenozide;MW:394.515;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Clomeprop;MW:324.2;EXA:- + -<30,Ph,{4,6}:/Cl,5:/_,@3,\,O,!,/_,!,//O,!,NH,!,Ph +<30,Ph,{4,6}:/Cl,5:/_,@3,\,O,!?!,//O,!,NH,!,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Chloridazon;MW:221.6;EXA:- + @@ -1758,19 +1757,19 @@ Cat:pesticide;EN:Chloridazon;MW:221.6;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Chloroxuron;MW:290.745;EXA:- + -<30,Ph,6:/Cl,@3,\,O,!,Ph,@-3,\,NH,!,//O,!,N,/_,! +<30,Ph,6:/Cl,@3,\,O,!,Ph,@-3,\,NH,!,//O,!,N,?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Cyazofamid;MW:324.783;EXA:- + -<18,?5,{2,5}=dl,{2,4}:N,1:/Cl,3:/CN,@4,\,SOO,!,N,/_,!,@5,\,Ph,-3:/_ +<18,?5,{2,5}=dl,{2,4}:N,1:/Cl,3:/CN,@4,\,SOO,!,N,?!,@5,\,Ph,-3:/_ +------------------------------------------------------------------------------ Cat:pesticide;EN:Diuron;MW:233.1;EXA:- + -<30,Ph,{1,6}:/Cl,@3,\,NH,!,//O,!,N,/_,! +<30,Ph,{1,6}:/Cl,@3,\,NH,!,//O,!,N,?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Cyflufenamid;MW:412.36;EXA:- + -<30,Ph,4^20:/CF3,{1,2}:/F,@3,\,!,NH,!,//O,!2,Ph,@-10,\~dm,N,!,<-12,O,!2,?3 +<30,Ph,4^20:/CF3,{1,2}:/F,@3,\,!,NH,!,//O,!2,Ph,@-10,\\,N,!,<-12,O,!2,?3 +------------------------------------------------------------------------------ Cat:pesticide;EN:Diflubenzuron;MW:310.7;EXA:- + @@ -1782,7 +1781,7 @@ Cat:pesticide;EN:Cyprodinil;MW:225.295;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Simeconazole;MW:293.417;EXA:- + -<36,?5,{1,3,5}:N,{1,4}=dl,@3,30,!,/OH^30,!2,Si,/_,/_^60,!,@7,-30,Ph,-3:/F +<36,?5,{1,3,5}:N,{1,4}=dl,@3,30,!,/OH^30,!2,Si,??!,@7,-30,Ph,-3:/F +------------------------------------------------------------------------------ Cat:pesticide;EN:Dimethirimol;MW:209.29;EXA:- + @@ -1799,14 +1798,14 @@ Cat:pesticide;EN:Silafluofen;MW:408.588;EXA:- Cat:pesticide;EN:Spinosad;MW:731.968;EXA:- + <30,#1,<-120,60,60,-60,60,60,60,-60,60,60,60,-60,&1,##, - 5=?5,-1=dl,{-2^60,-3^-35}:/*H,-3=?6,-4=dl,{-1^35}:*/H,{-2^-60}:/*H,-2=?5, + 5=?5,-1=dl,{-2^60,-3^-35}:/*H,-3=?6,-4=dl,{-1^35,-2'^-60}:*/H,-2=?5, 2:O,{3^15,7^-28}://O, 1:/!, - @-2,\~zf,O,66,?6,-1:O,-2:/_,{-3,-4,-5}:/O!,8:*/_,5^-65:*/H, + @-2,\*,O,66,?6,-1:O,-2:/_,{-3,-4,-5}:/O!,8:*/_,5^-65:*/H, @9,\*,O,!,|,?6,2:O,3:/_,-3:/N?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Di-allate;MW:270.212;EXA:- + -<-30,!,/_,!,N,!,//O,!,S,!2,!!,!,Cl,3:/?!,7:/Cl +<-30,!?!,N,!,//O,!,S,!2,!!,!,Cl,3:/?!,7:/Cl +------------------------------------------------------------------------------ Cat:pesticide;EN:Daimuron;MW:268.4;EXA:- + @@ -1826,7 +1825,7 @@ Cat:pesticide;EN:Thiamethoxam;MW:291.71;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Tebuthiuron;MW:228.3;EXA:- + -<18,?5,{3,5}=dl,{4,5}:N,2:S,1:/??!,@3,\,N,/_,!,//O,!,NH,! +<18,?5,{3,5}=dl,{4,5}:N,2:S,1:/??!,@3,\,N,?!,//O,!,NH,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Tebufenozide;MW:352.5;EXA:- + @@ -1846,7 +1845,7 @@ Cat:pesticide;EN:Triflumuron;MW:358.701;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Naproanilide;MW:291.35;EXA:- + -<30,Ph,4=Ph,@8,\,O,!,/_,!,//O,!,NH,!,Ph +<30,Ph,4=Ph,@8,\,O,!?!,//O,!,NH,!,Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Novaluron;MW:492.706;EXA:- + @@ -1856,11 +1855,11 @@ Cat:pesticide;EN:Novaluron;MW:492.706;EXA:- Cat:pesticide;EN:Pyraclostrobin;MW:387.817;EXA:- + <30,Ph,@3,\,!,O,!,<12,|,?5,{2,5}=dl,{4,5}:N, -@4,\^12,Ph,-3:/Cl,||,@2,\,N,/O!,!,COO! +@4,12,Ph,-3:/Cl,||,@2,\,N,/O!,!,COO! +------------------------------------------------------------------------------ Cat:pesticide;EN:Pirimicarb;MW:238.291;EXA:- + -<30,Ph,{1,5}:N,{2,3}:/_,6:/N?!,@4,\,O,!,//O,!,N,/_,! +<30,Ph,{1,5}:N,{2,3}:/_,6:/N?!,@4,\,O,!,//O,!,N,?! +------------------------------------------------------------------------------ Cat:pesticide;EN:Fenoxycarb;MW:301.35;EXA:- + @@ -1868,20 +1867,20 @@ Cat:pesticide;EN:Fenoxycarb;MW:301.35;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Fenobucarb;MW:207.3;EXA:- + -<30,Ph,@5,\,/_,!2,@4,\,O,!,//O,!,NH! +<30,Ph,5:/?!2,@4,\,O,!,//O,!,NH! +------------------------------------------------------------------------------ Cat:pesticide;EN:Ferimzone;MW:254.337;EXA:- + -<30,Ph,4:/_,@3,\,/_,!~dr,N,!,NH,!,|,Ph,{2,6}:N,{3,5}:/_ +<30,Ph,4:/_,@3,\,/_,!!,N,!,NH,!,|,Ph,{2,6}:N,{3,5}:/_ +------------------------------------------------------------------------------ Cat:pesticide;EN:Fenamidone;MW:311.403;EXA:- + -<18,?5,4=dl,{3,5}:N,2://O,@3,\,NH,!,Ph,4:/S!,1^52:*/_,1^-48~zf:/Ph +<18,?5,4=dl,{3,5}:N,2://O,@3,\,NH,!,Ph,4:/S!,1^52:*/_,1^-48:/*Ph +------------------------------------------------------------------------------ Cat:pesticide;EN:Fenpyroximate;MW:421.49;EXA:- + <-6,?5,{3,5}=db,{1,2}:N,{2,5}:/_,@3,-15,O,!,Ph, - @4,\,!~dr,N,!,O,!2,|,Ph,@4,\,//O,-60,O,!4 + @4,\,!!,N,!,O,!2,|,Ph,@4,\,//O,-60,O,!4 +------------------------------------------------------------------------------ Cat:pesticide;EN:Phenmedipham;MW:300.32;EXA:- + @@ -1890,7 +1889,7 @@ Cat:pesticide;EN:Phenmedipham;MW:300.32;EXA:- Cat:pesticide;EN:Butafenacil;MW:474.817;EXA:- + <30,?6,6=dl,{3,5}:N,{2,4}://O,5:/_,6:/CF3, - @3,\,Ph,-3:/Cl,@-2,\,//O,!,O,!,??,!,//O,!,O,!2,!~dr + @3,\,Ph,-3:/Cl,@-2,\,//O,!,O,!,??,!,//O,!,O,!2,!! +------------------------------------------------------------------------------ Cat:pesticide;EN:Flufenacet;MW:363.331;EXA:- + @@ -1936,7 +1935,7 @@ Cat:pesticide;EN:Boscalid;MW:343.21;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Methabenzthiazuron;MW:221.3;EXA:- + -Ph,3=?5,9=dl,7:S,9:N,@8,\,N,/_,!,//O,!,NH,! +Ph,3=?5,9=dl,7:S,9:N,@8,\,N,?!,//O,!,NH,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Methoxyfenozide;MW:368.48;EXA:- + @@ -1944,15 +1943,15 @@ Cat:pesticide;EN:Methoxyfenozide;MW:368.48;EXA:- +------------------------------------------------------------------------------ Cat:pesticide;EN:Monolinuron;MW:214.6;EXA:- + -<30,Ph,6:/Cl,@3,\,NH,!,//O,!,N,/_,!,O,! +<30,Ph,6:/Cl,@3,\,NH,!,//O,!,N,?!,O,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Lactofen;MW:461.78;EXA:- + -<30,Ph,4:/Cl,6:/CF3,@3,\,O,!,Ph,-3:/NO2,@-4,\,//O,!,O,!,/_,!,//O,!,O,!2 +<30,Ph,4:/Cl,6:/CF3,@3,\,O,!,Ph,-3:/NO2,@-4,\,//O,!,O,!?!,//O,!,O,!2 +------------------------------------------------------------------------------ Cat:pesticide;EN:Linuron;MW:249.1;EXA:- + -<30,Ph,{1,6}:/Cl,@3,\,NH,!,//O,!,N,/_,!,O,! +<30,Ph,{1,6}:/Cl,@3,\,NH,!,//O,!,N,?!,O,! +------------------------------------------------------------------------------ Cat:pesticide;EN:Lufenuron;MW:511.15;EXA:- + @@ -2038,7 +2037,7 @@ Cat:antibacterial;EN:Sulfamethoxypyridazine;MW:280.302;EXA:- +------------------------------------------------------------------------------ Cat:antibacterial;EN:Sarafloxacin;MW:385.371;EXA:1 + -<30,Ph,3=?6,9=dl,7:N,6:/F,9:/COOH,10://O,@1,\,?6,-6:N,-3:NH,@7,\,|,Ph,-3:/F +<30,Ph,3=?6,9=dl,7:N,6:/F,9:/COOH,10://O,@1,\,?6,-6:N,-3:NH,@7,\,Ph,-3:/F +------------------------------------------------------------------------------ Cat:antibacterial;EN:Difloxacin;MW:399.398;EXA:1 + @@ -2116,8 +2115,7 @@ Cat:antibacterial;EN:Famphur;MW:325.3;EXA:- Cat:antibacterial;EN:Lincomycin;MW:406.54;EXA:- + <6,?5,5:N,5:*/_,2:*/!2, - @3,\*,//O,!,NH,!,!~wb,?6,-1:O,-3:/*OH,{-4,-5}:*/OH,-2:/*S!, - @8,\^-30,/_,60,OH + @3,\*,//O,!,NH,!,!~wb,?6,-1:O,{-3',-4,-5}:*/OH,-2:/*S!,@8,-30,/_,60,OH +------------------------------------------------------------------------------ Cat:antibacterial;EN:2-acethylamino-5-nitrothiazole;MW:187.178;EXA:- + @@ -2125,8 +2123,7 @@ Cat:antibacterial;EN:2-acethylamino-5-nitrothiazole;MW:187.178;EXA:- +------------------------------------------------------------------------------ Cat:antibacterial;EN:Chlorsulron;MW:357.77;EXA:- + -<30,Ph,6:/NH2,@1,\,S,//O^35,//O^-35,!,NH2,@3,\,S,//O^35,//O^-35,!,NH2, - @4,\,/Cl,60~dl,/Cl,!,Cl +<30,Ph,6:/NH2,@1,\,SOO,!,NH2,@3,\,SOO,!,NH2,@4,\,/Cl,60~dl,/Cl,!,Cl +------------------------------------------------------------------------------ Cat:antibacterial;EN:Florfenicol;MW:358.21;EXA:- + @@ -2151,7 +2148,7 @@ Cat:antibiotics;EN:Vancomycin;MW:1449.25;EXA:2 Ph,-4:/Cl,@-3,\,O,!,Ph,@-4,\,O,!,Ph,-1^15:/Cl,@-3,\,/*OH,*/H^-60,&1, @7,&26,@$1,60,//O,60,NH,60,/*H,*/COOH^180,-60, Ph,{-2,-4}:/OH,@-1,\,Ph,-5:/OH,@-2,&4,##, - {3^40,6,9,12}://O,{2,5,8,11}:NH,{1,4^180}:*/H,{7^-60,10^60,14^60}:/*H, + {3^40,6,9,12}://O,{2,5,8,11}:NH,{1,4^180,7'^-60,10'^60,14'^60}:*/H, @10,*\^-60,60,//O,!,NH2,@13,*\,NH,!,//O,!,/??!,*/H^60,!~zf,NH,!, @23,\,O,!,|,?6`.7,2:O,3^10:/!OH,{4,5}:/OH, @-1,\,O,!,|,?6`.7,6:O,{3^35,5}:/_,3^-35:/NH2,4:/OH @@ -2164,21 +2161,20 @@ Cat:biological;EN:Maitotoxin;MW:3425.86;EXA:2 {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,{47,57,71}:/*H^60, + {11,20,35,45,52,55,65,69,86}:/*OH, {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, + {4,14,22,34,39,43,47',57',71',81,89,98,102,116,121,125,129,133}:*/H^60, {6,46,50,53,60,67,74}:*/H^-60, - {9,18,85,93,112,139,143,147}:*/_`1^60, - {80,88,97,115,120,124}:/*_`1^-60,108:*/_`1^-60, - @$6,\,|,!11,60~dr,-60,60,OH,2:/*OH,{7,10}:*/OH,{1,3}:*/_,{8~zf,11~dm,12}:/_, - @6,\,O,30,SOO,30,"O{Na}", + {9,18,85,93,112,139,143,147}:*/_^60`1,{80,88,97,108',115,120,124}:/*_^-60`1, + @$6,\,|,!11,60~dr,-60,60,OH,{2',7,10}:*/OH,{1,3,8'}:*/_,11://_,12:/_, + @6,\,O,30,SOO,30,"O{Na}", @$36,-45~zf,O,30,SOO,30,"O{Na}", @$150,\,|,!7,{1,2}:/*OH,4:*/_,5:/*_,7=dl +------------------------------------------------------------------------------ Cat:biological;EN:Okadaic acid;MW:805.00;EXA:2 + <30,?6,@4,?6,@-4,\,!3,<-12,?5,@-3,<-12,?6,-3=?6,@-3,*\,!3, - ?6,@-4,?6,@6,\,!,/*Me^-40,*/OH^20,!,//O,!1,OH, + ?6,@-4,?6,@6,\,!,/*_^-40,*/OH^20,!,//O,!1,OH, 3=wb,11=dl,15=dr,17=wf,19=wf,38=wb,{5,7,16,24,25,33,42}:O, - 32:*/H^60,10:/Me,{12,31}:*/_,27://_,37:/*_,28:/OH,{3,29}:/*OH + 32:*/H^60,10:/_,{12,31,37'}:*/_,27://_,28:/OH,{3,29}:/*OH +------------------------------------------------------------------------------ diff --git a/graphics/mcf2graph/mcf_exa_soc.mf b/graphics/mcf2graph/mcf_exa_soc.mf index ebc920a856..550589d530 100644 --- a/graphics/mcf2graph/mcf_exa_soc.mf +++ b/graphics/mcf2graph/mcf_exa_soc.mf @@ -1,8 +1,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2021.12.20 +% Molecular Coding Format for mcf_example.tex by Akira Yamaji 2022.01.02 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %%% it must be version 4.76 -message "* mcf_exa_soc 2021.12.20"; +input mcf2graph.mf; %%% it must be version 4.77 +message "* mcf_exa_soc 2022.01.02"; message ""; %------------------------------------------------------------------------------ fsize:=(35mm,24mm); diff --git a/graphics/mcf2graph/mcf_example.pdf b/graphics/mcf2graph/mcf_example.pdf Binary files differindex c4df2fa92d..32af758ce5 100644 --- a/graphics/mcf2graph/mcf_example.pdf +++ b/graphics/mcf2graph/mcf_example.pdf diff --git a/graphics/mcf2graph/mcf_man_soc.mf b/graphics/mcf2graph/mcf_man_soc.mf index f9b5e2b35e..383ff8b859 100644 --- a/graphics/mcf2graph/mcf_man_soc.mf +++ b/graphics/mcf2graph/mcf_man_soc.mf @@ -1,9 +1,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2021.12.20 +% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2022.01.02 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %% it must be version 4.76 +input mcf2graph.mf; %% it must be version 4.77 % ** use data base file 'mcf_data_base.mcf' -message "mcf_man_soc 2021.12.20"; message ""; +message "mcf_man_soc 2022.01.02"; message ""; %------------------------------------------------------------------------ sw_mframe:=0; sw_expand:=0; @@ -315,7 +315,7 @@ endfont beginfont("EN:Steric ring") fsize:=(75mm,16mm); MCat(0.05,0.5)(#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, - {1^$-90,2^$90,3^$-90,4^$90}:/OH`-.5,6^$90:/!OH`-.5) + #.5,{1^$-90,2^$90,3^$-90,4^$90}:/OH,6^$90:/!OH) defaultscale:=0.6; MCat(0.5,0.7)(0~wf_r) add(label.lft("wf_r:",A1);) MCat(0.5,0.2)(0~wf) add(label.lft("wf:",A1);) @@ -485,7 +485,7 @@ endfont %*********************************************************************** beginfont("EN:group 1") fsize:=(75mm,18mm); - MC(<30,!,/_,!2,/!,!2,/!2,!4,/?!,!4,/??!,!2,/'(Ph`0.8)^-60,!) + MC(<30,!,/_,!2,/!,!2,/!,!4,/?!,!4,/??!,!2,/'(Ph`0.8)^-60,!) endfont %*********************************************************************** beginfont("EN:group 2") @@ -507,11 +507,12 @@ beginfont("EN:group 3") endfont %*********************************************************************** beginfont("EN:group 3") - fsize:=(75mm,18mm); + fsize:=(75mm,25mm); fmargin:=(2mm,2mm); sw_numbering:=Atom; numbering_end:=17; - MC(<30,!16,2:/_,4:/!,6:/!2,10:/iPr,14:/tBu,16:/'(Ph`0.8)^-60) + MC(<30,!17,2:/_,3:/!,4:/!2,7:/iPr,8:/tBu,10:/'(Ph`0.6)^-15, + {11,12,13'}:*/_,{15,16,17'}:/*_) endfont %*********************************************************************** beginfont("EN:group 4") @@ -1272,10 +1273,10 @@ endfont beginfont("EN:Maltose","MW:342.3", %------------------------------------------------------ ": #1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", - ": {1^$-90,2^$90,3^$-90}:/OH`-.5,6^$90:/!OH`-.5, ", + ": #.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,##, ", ": @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0, ", ": |,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,", - ": {2^$90,3^$-90,4^$-90}:/OH`-.5,6^$90:/!OH`-.5 ") + ": #.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH ") %------------------------------------------------------ fsize:=(50mm,20mm); if check(mc)=0: MC(scantokens(mc)) fi @@ -1284,10 +1285,10 @@ endfont beginfont("EN:Cellobiose","MW:342.3", %------------------------------------------------------ ": #1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", - ": {1^$-90,2^$90,3^$-90}:/OH`-.5,6^$90:/!OH`-.5, ", - ": @4,$0~arc_ltr,O,$0~arc_lbr, ", + ": #.5,{1^$-90,2^$90,3^$-90}:/OH,6^$90:/!OH,##, ", + ": @4,$0~arc_ltr,O,$0~arc_lbr, ", ": |,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##,", - ": {2^$90,3^$-90,4^$-90}:/OH`-.5,6^$90:/!OH`-.5 ") + ": #.5,{2^$90,3^$-90,4^$-90}:/OH,6^$90:/!OH ") %------------------------------------------------------ fsize:=(50mm,20mm); if check(mc)=0: MC(scantokens(mc)) fi diff --git a/graphics/mcf2graph/mcf_manual.pdf b/graphics/mcf2graph/mcf_manual.pdf Binary files differindex b2e585b42a..4f08e5ee8c 100644 --- a/graphics/mcf2graph/mcf_manual.pdf +++ b/graphics/mcf2graph/mcf_manual.pdf diff --git a/graphics/mcf2graph/mcf_manual.tex b/graphics/mcf2graph/mcf_manual.tex index 945826f92f..95598c2162 100644 --- a/graphics/mcf2graph/mcf_manual.tex +++ b/graphics/mcf2graph/mcf_manual.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format manual by Akira Yamaji 2021.12.20 +% Molecular Coding Format manual by Akira Yamaji 2022.01.02 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \usepackage[pdftex]{graphicx} @@ -286,8 +286,8 @@ bd_r : broad (half width, rounded) wb_r : wedge backward (half width) #1.25,-30~wf_r,30~bd_r`1,30~wb_r, - 120,O,30,&1,##,6^$90:/!OH`-.5, - {1^$-90,2^$90,3^$-90,4^$90}:/OH`-.5, + 120,O,30,&1,##,#.5,6^$90:/!OH, + {1^$-90,2^$90,3^$-90,4^$90}:/OH, \end{verbatim} \MCFgraph %----------------------------------------------------------------------------- @@ -534,8 +534,9 @@ attached bond length %----------------------------------------------------------------------------- \subsubsection{Add group} \begin{verbatim} -<30,!17,2:/_,4:/!,6:/!2, - 10:/?!,14:/??!,16:/Ph^-60 +<30,!17,2:/_,3:/!,4:/!2,7:/iPr, + 8:/tBu,10:/'(Ph`0.6)^-15, + {11,12,13'}:*/_,{15,16,17'}:/*_ \end{verbatim} \MCFgraph %----------------------------------------------------------------------------- @@ -663,8 +664,8 @@ MC(<30,?6,{4,6}:/iBuOH) \subsubsection{Serial number} \index{\-\-}% \begin{verbatim} -6--10 : 6,7,8,9,10 -<30,!14,{2,6--10,14}:/_~bd_r`0.5 +6:10 : 6,7,8,9,10 +<30,!14,{2,6:10,14}:/_~bd_r`0.5 \end{verbatim} \MCFgraph \newpage @@ -1449,13 +1450,13 @@ beginfont("EN:Maltose","MW:342.3", %----------------------------------------- ": #1.25,-30~wf_r,30~bd_r`1,30~wb_r, ", ": 120,O,30,&1,##, ", - ": {1^$-90,2^$90,3^$-90}:/OH`-.5, ", - ": 6^$90:/!OH`-.5, ", + ": #.5,{1^$-90,2^$90,3^$-90}:/OH, ", + ": 6^$90:/!OH, ", ": @4,$-50~arc_lb`1,O,$50~arc_br`1,<$0, ", ": |,#1.25,-30~wf_r,30~bd_r`1,30~wb_r, ", ": 120,O,30,&1,##, ", - ": {2^$90,3^$-90,4^$-90}:/OH`-.5, ", - ": 6^$90:/!OH`-.5 ") + ": #.5,{2^$90,3^$-90,4^$-90}:/OH, ", + ": 6^$90:/!OH ") %----------------------------------------- fsize:=(50mm,20mm); if check(mc)=0: MC(scantokens(mc)) fi @@ -1475,13 +1476,13 @@ beginfont("EN:Cellobiose","MW:342.3", %----------------------------------------- ": #1.25,-30~wf_r,30~bd_r`1,30~wb_r, ", ": 120,O,30,&1,##, ", - ": {1^$-90,2^$90,3^$-90}:/OH`-.5, ", - ": 6^$90:/!OH`-.5, ", + ": #.5,{1^$-90,2^$90,3^$-90}:/OH, ", + ": 6^$90:/!OH, ", ": @4,$0~arc_ltr,O,$0~arc_lbr, ", ": |,#1.25,-30~wf_r,30~bd_r`1,30~wb_r, ", ": 120,O,30,&1,##, ", - ": {2^$90,3^$-90,4^$-90}:/OH`-.5, ", - ": 6^$90:/!OH`-.5 ") + ": #.5,{2^$90,3^$-90,4^$-90}:/OH, ", + ": 6^$90:/!OH ") %----------------------------------------- fsize:=(50mm,20mm); if check(mc)=0: MC(scantokens(mc)) fi diff --git a/graphics/mcf2graph/mcf_mplib_exa.pdf b/graphics/mcf2graph/mcf_mplib_exa.pdf Binary files differindex be4964ceec..6aa46dabdc 100644 --- a/graphics/mcf2graph/mcf_mplib_exa.pdf +++ b/graphics/mcf2graph/mcf_mplib_exa.pdf diff --git a/graphics/mcf2graph/mcf_mplib_exa.tex b/graphics/mcf2graph/mcf_mplib_exa.tex index 241a9b703a..de9633a4d0 100644 --- a/graphics/mcf2graph/mcf_mplib_exa.tex +++ b/graphics/mcf2graph/mcf_mplib_exa.tex @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2021.12.20 +% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2022.01.02 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ** mcf2graph.mf must be version 4.76 +% ** mcf2graph.mf must be version 4.77 % ** use mcf_data_base.mcf \documentclass{article} %------------------------------------------------------------------------------ @@ -39,9 +39,9 @@ \section{MCF example} \noindent% %------------------------------------------------------------------------------------ - use molecular data base file 'mcf\_exa\_data.mcf'\\ -{{\tt FM(fm) :} molecular formula (calculated)\\ -{{\tt MW(mw) :} molecular weight (calculated)\\ + use molecular data base file 'mcf\_exa\_data.mcf' \\ +{{\tt FM(fm) :} molecular formula (calculated) \\ +{{\tt MW(mw) :} molecular weight (calculated) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Chlorophyll a} \noindent% @@ -101,13 +101,13 @@ endfont; %---------------------------------------------------------------------------- \begin{verbatim} beginfont("EN:Erythromycin","MW:733.93", - %-------------------------------------------------------------------- - ": <30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", - ": 14:O,13:/*Et,{1,9}://O,{2,10}:*/_,{4,6^-35,8,12^35}:/*_, ", - ": {6^35,11,12^-35}:*/OH, ", - ": @$3,\*,O,30,|,?6`.7,2:O,{3,5^35}:/_`.5,4:/OH`.-.5,5^-35`-.5:/O!, ", - ": @$5,\*^30`1.7,O,!,|,?6`.7,6:O,5:/_`.5,2:/OH`-.5,3:/N?!`-.5 ") - %-------------------------------------------------------------------- + %------------------------------------------------------------------------ + ": <30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", + ": 14:O,13:/*Et,{1,9}://O,{2',4,6^-35,8,10',12^35}:/*_, ", + ": {6^35,11,12^-35}:*/OH, ", + ": @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf,3^35}:/_,4:/*OH,3^-35:/*O!,##, ", + ": @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! ") + %------------------------------------------------------------------------ fsize:=(120mm,30mm); if check(mc)=0: MC(scantokens(mc)) fi endfont; @@ -115,13 +115,13 @@ endfont; %---------------------------------------------------------------------------- \begin{mplibcode} beginfont("EN:Erythromycin","MW:733.93", - %-------------------------------------------------------------------- - ": <30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", - ": 14:O,13:/*Et,{1,9}://O,{2,10}:*/_,{4,6^-35,8,12^35}:/*_, ", - ": {6^35,11,12^-35}:*/OH, ", - ": @$3,\*,O,30,|,?6`.7,2:O,{3,5^35}:/_`.5,4:/OH`.-.5,5^-35`-.5:/O!, ", - ": @$5,\*^30`1.7,O,!,|,?6`.7,6:O,5:/_`.5,2:/OH`-.5,3:/N?!`-.5 ") - %-------------------------------------------------------------------- + %------------------------------------------------------------------------ + ": <30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", + ": 14:O,13:/*Et,{1,9}://O,{2',4,6^-35,8,10',12^35}:/*_, ", + ": {6^35,11,12^-35}:*/OH, ", + ": @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf,3^35}:/_,4:/*OH,3^-35:/*O!,##, ", + ": @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! ") + %------------------------------------------------------------------------ fsize:=(120mm,30mm); if check(mc)=0: MC(scantokens(mc)) fi ext(defaultscale:=0.8; |