From f91571975a42a3cc2eb1875ceeccdb4f25c8a32c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 10 Feb 2018 23:30:32 +0000 Subject: new utility package axodraw2 (executable axohelp) git-svn-id: svn://tug.org/texlive/trunk@46590 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/Makefile.in | 1 + Build/source/configure | 24 +- Build/source/doc/tlbuild.info | 689 +-- Build/source/libs/Makefile.in | 1 + Build/source/libs/configure | 24 +- Build/source/m4/ChangeLog | 4 + Build/source/m4/kpse-pkgs.m4 | 3 +- Build/source/texk/Makefile.in | 1 + Build/source/texk/configure | 24 +- Build/source/utils/ChangeLog | 4 + Build/source/utils/Makefile.in | 1 + Build/source/utils/autosp/ac/withenable.ac | 5 +- Build/source/utils/axodraw2/ChangeLog | 5 + Build/source/utils/axodraw2/Makefile.am | 38 + Build/source/utils/axodraw2/Makefile.in | 1192 ++++ Build/source/utils/axodraw2/TLpatches/TL-Changes | 5 + Build/source/utils/axodraw2/ac/withenable.ac | 8 + Build/source/utils/axodraw2/aclocal.m4 | 1191 ++++ Build/source/utils/axodraw2/axodraw2-src/AUTHORS | 2 + Build/source/utils/axodraw2/axodraw2-src/COPYING | 674 +++ Build/source/utils/axodraw2/axodraw2-src/ChangeLog | 17 + Build/source/utils/axodraw2/axodraw2-src/INSTALL | 57 + .../source/utils/axodraw2/axodraw2-src/Makefile.am | 16 + Build/source/utils/axodraw2/axodraw2-src/NEWS | 0 Build/source/utils/axodraw2/axodraw2-src/README | 41 + .../utils/axodraw2/axodraw2-src/axodraw2-man.pdf | Bin 0 -> 419038 bytes .../utils/axodraw2/axodraw2-src/axodraw2-man.tex | 5200 +++++++++++++++++ .../utils/axodraw2/axodraw2-src/axodraw2.sty | 4728 ++++++++++++++++ Build/source/utils/axodraw2/axodraw2-src/axohelp.1 | 48 + Build/source/utils/axodraw2/axodraw2-src/axohelp.c | 3732 +++++++++++++ .../utils/axodraw2/axodraw2-src/axohelp.test | 22 + .../utils/axodraw2/axodraw2-src/configure.ac | 10 + .../source/utils/axodraw2/axodraw2-src/example.tex | 18 + Build/source/utils/axodraw2/axodraw2-src/test.ax1 | 494 ++ .../utils/axodraw2/axodraw2-src/test.ax2-std | 1482 +++++ Build/source/utils/axodraw2/configure | 5845 ++++++++++++++++++++ Build/source/utils/axodraw2/configure.ac | 28 + Build/source/utils/configure | 28 +- 38 files changed, 25333 insertions(+), 329 deletions(-) create mode 100644 Build/source/utils/axodraw2/ChangeLog create mode 100644 Build/source/utils/axodraw2/Makefile.am create mode 100644 Build/source/utils/axodraw2/Makefile.in create mode 100644 Build/source/utils/axodraw2/TLpatches/TL-Changes create mode 100644 Build/source/utils/axodraw2/ac/withenable.ac create mode 100644 Build/source/utils/axodraw2/aclocal.m4 create mode 100644 Build/source/utils/axodraw2/axodraw2-src/AUTHORS create mode 100644 Build/source/utils/axodraw2/axodraw2-src/COPYING create mode 100644 Build/source/utils/axodraw2/axodraw2-src/ChangeLog create mode 100644 Build/source/utils/axodraw2/axodraw2-src/INSTALL create mode 100644 Build/source/utils/axodraw2/axodraw2-src/Makefile.am create mode 100644 Build/source/utils/axodraw2/axodraw2-src/NEWS create mode 100644 Build/source/utils/axodraw2/axodraw2-src/README create mode 100644 Build/source/utils/axodraw2/axodraw2-src/axodraw2-man.pdf create mode 100644 Build/source/utils/axodraw2/axodraw2-src/axodraw2-man.tex create mode 100644 Build/source/utils/axodraw2/axodraw2-src/axodraw2.sty create mode 100644 Build/source/utils/axodraw2/axodraw2-src/axohelp.1 create mode 100644 Build/source/utils/axodraw2/axodraw2-src/axohelp.c create mode 100755 Build/source/utils/axodraw2/axodraw2-src/axohelp.test create mode 100644 Build/source/utils/axodraw2/axodraw2-src/configure.ac create mode 100644 Build/source/utils/axodraw2/axodraw2-src/example.tex create mode 100644 Build/source/utils/axodraw2/axodraw2-src/test.ax1 create mode 100644 Build/source/utils/axodraw2/axodraw2-src/test.ax2-std create mode 100755 Build/source/utils/axodraw2/configure create mode 100644 Build/source/utils/axodraw2/configure.ac diff --git a/Build/source/Makefile.in b/Build/source/Makefile.in index f5839276ec4..e58abef01d9 100644 --- a/Build/source/Makefile.in +++ b/Build/source/Makefile.in @@ -122,6 +122,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/kpse-cairo-flags.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/tardate.ac \ $(top_srcdir)/version.ac \ $(top_srcdir)/utils/autosp/ac/withenable.ac \ + $(top_srcdir)/utils/axodraw2/ac/withenable.ac \ $(top_srcdir)/utils/devnag/ac/withenable.ac \ $(top_srcdir)/utils/lacheck/ac/withenable.ac \ $(top_srcdir)/utils/m-tx/ac/withenable.ac \ diff --git a/Build/source/configure b/Build/source/configure index 72ddde89673..fd694276b76 100755 --- a/Build/source/configure +++ b/Build/source/configure @@ -786,6 +786,7 @@ enable_multiplatform enable_cxx_runtime_hack enable_libtool_hack enable_autosp +enable_axodraw2 enable_devnag enable_lacheck enable_m_tx @@ -1596,6 +1597,7 @@ Optional Features: --enable-cxx-runtime-hack link C++ runtime statically --enable-libtool-hack ignore libtool dependency_libs --disable-autosp do not build the autosp package + --disable-axodraw2 do not build the axodraw2 package --disable-devnag do not build the devnag package --disable-lacheck do not build the lacheck package --disable-m-tx do not build the m-tx package @@ -4182,7 +4184,8 @@ esac ;; esac ## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir -## configure options and TL libraries required for vlna +## $Id$ +## configure options and TL libraries required for autosp. # Check whether --enable-autosp was given. if test "${enable_autosp+set}" = set; then : enableval=$enable_autosp; @@ -4199,6 +4202,25 @@ $as_echo "$as_me: Assuming \`--enable-autosp=$enable_autosp'" >&6;} ;; esac +## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir +## $Id$ +## configure options and TL libraries for axodraw2. +# Check whether --enable-axodraw2 was given. +if test "${enable_axodraw2+set}" = set; then : + enableval=$enable_axodraw2; +fi +case $enable_axodraw2 in #( + yes|no) : + ;; #( + *) : + + enable_axodraw2=$enable_all_pkgs + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&5 +$as_echo "$as_me: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&6;} + ac_configure_args="$ac_configure_args '--enable-axodraw2=$enable_axodraw2'" + ;; +esac + ## utils/devnag/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/devnag/ ## configure options and TL libraries required for devnag # Check whether --enable-devnag was given. diff --git a/Build/source/doc/tlbuild.info b/Build/source/doc/tlbuild.info index e50141371eb..3dda348da6b 100644 --- a/Build/source/doc/tlbuild.info +++ b/Build/source/doc/tlbuild.info @@ -1,9 +1,9 @@ -This is tlbuild.info, produced by makeinfo version 6.4 from +This is tlbuild.info, produced by makeinfo version 6.5 from tlbuild.texi. This file documents the TeX Live build system and more. -Copyright (C) 2016-2017 Karl Berry. +Copyright (C) 2016-2018 Karl Berry. Copyright (C) 2013-2015 Karl Berry & Peter Breitenlohner. Permission is granted to make and distribute verbatim copies of this @@ -33,7 +33,7 @@ END-INFO-DIR-ENTRY  File: tlbuild.info, Node: Top, Next: Introduction, Up: (dir) -Building TeX Live (2017) +Building TeX Live (2018) ************************ For an overview of this manual, *note Introduction::. @@ -59,7 +59,8 @@ File: tlbuild.info, Node: Introduction, Next: Overview of build system, Prev: 1 Introduction ************** -This manual (dated April 2017) corresponds to the TeX Live 2017 release. +This manual (dated February 2018) corresponds to the TeX Live 2018 +release. This manual is aimed at system installers and programmers, and focuses on how to configure, build, and develop the TeX Live (TL) @@ -596,7 +597,7 @@ many extra hassles, so don't do that, tempting as it may be. flex 2.6.0 ltmain.sh (GNU libtool) 2.4.6 m4 (GNU M4) 1.4.18 - makeinfo (GNU texinfo) 6.4 + makeinfo (GNU texinfo) 6.5 These versions should be used to update the generated files (e.g., 'configure' or 'Makefile.in') in all or parts of the TL tree after their @@ -1120,11 +1121,10 @@ M4 list 'kpse_texk_pkgs' defined in 'm4/kpse-pkgs.m4'. the TeX-specific libraries and is included by adding its name 'PROG' to the M4 list 'kpse_utils_pkgs' in 'm4/kpse-pkgs.m4'. - In either case, apart from the program sources and build system -('configure.ac' and 'Makefile.am'), the subdirectory 'texk/PROG' or -'utils/PROG' must provide a fragment 'ac/withenable.ac' that contains -the M4 macro 'KPSE_ENABLE_PROG' defined in 'm4/kpse-setup.m4' with -'PROG' as the mandatory first argument and three optional arguments: + In either case, the subdirectory 'texk/PROG' or 'utils/PROG' must +provide a fragment 'ac/withenable.ac' that contains the M4 macro +'KPSE_ENABLE_PROG' defined in 'm4/kpse-setup.m4' with 'PROG' as the +mandatory first argument and three optional arguments: 1. a list of required libraries from the TL tree; @@ -1133,13 +1133,58 @@ the M4 macro 'KPSE_ENABLE_PROG' defined in 'm4/kpse-setup.m4' with compilation is not possible, 'x' if the program requires X11 libraries); - 3. and a comment added to the help text for the 'configure' option + 3. a comment added to the help text for the 'configure' option '--enable-PROG' or '--disable-PROG'. If the module requires specific configure options to be seen at the -top-level, they should be defined in an additional fragment 'ac/PROG.ac' +top level, they should be defined in an additional fragment 'ac/PROG.ac' included from 'ac/withenable.ac' and 'configure.ac'. + Usually, the new program is maintained somewhere outside of TeX Live. +In that case, we put the upstream sources into a subdirectory 'PROG-src' +(e.g., 'utils/newprog/newprog-src'). We do not run 'configure' in this +original '...-src' directory, only in our own directory, but we do +compile using the source files in '...-src'. + + So, these are the files that we must generally create: + +'ac/withenable.ac' + The 'KPSE_ENABLE_PROG' call just explained. + +'configure.ac' +'Makefile.am' + By merging the contents of the original 'configure.ac' (if + provided) and a comparable program already in TL. There is no magic + recipe, it's necessary to think about needs to be done in the + original vs. in TeX Live. + +'TLpatches/TL-Changes' + Actions taken after getting the original source tree; typically + removal of derived or unused common files. + +'TLpatches/patch-...' + If any changes are needed to the original sources, record the + patches here so they can be applied next time. And send them + upstream so that perhaps they won't have to be. + +'ChangeLog' + Record all TL-specific changes, now and in the future. + + Then, run GNU 'autoreconf' in the new directory (*note Build system +tools::). After that works, 'svn add' the necessary files, notably +'Makefile.in aclocal.m4 configure', and 'svn:ignore' the Automake cache +'autom4te.cache'. (This is so people checking out the TL source tree do +not have to run any autotools, but can simply run 'configure'.) + + Then, run the TL tool 'reautoconf' in the top-level TL 'source/' +directory, to incorporate the new program into the build tree. + + Then, run (and rerun) a build until the program compiles and tests +successfully, probably involving rerunning autoreconf in the source +directory, 'make' in the build directory, etc. + + After final success, don't forget to commit. +  File: tlbuild.info, Node: Adding a new generic library module, Next: Adding a new TeX-specific library module, Prev: Adding a new program module, Up: Extending TeX Live @@ -4696,7 +4741,7 @@ Index (line 6) * kpathsea library: kpathsea library. (line 6) * kpathsea.ac: kpathsea library. (line 20) -* kpse-libpng-flags.m4: png library. (line 42) +* kpse-libpng-flags.m4: png library. (line 43) * kpse-pkgs.m4: Overview of build system. (line 30) * kpse-zlib-flags.m4: zlib library. (line 6) @@ -4729,7 +4774,7 @@ Index * KPSE_LARGEFILE: Macros for libraries. (line 8) * KPSE_LIBPNG_FLAGS: Macros for library and header flags. (line 10) -* KPSE_LIBPNG_FLAGS <1>: png library. (line 42) +* KPSE_LIBPNG_FLAGS <1>: png library. (line 43) * kpse_libs_pkgs: Adding a new generic library module. (line 6) * KPSE_LIB_FLAGS: Macros for library and header flags. @@ -4745,10 +4790,10 @@ Index (line 6) * kpse_texlibs_pkgs: Adding a new TeX-specific library module. (line 11) -* KPSE_TRY_LIB: png library. (line 17) +* KPSE_TRY_LIB: png library. (line 18) * KPSE_TRY_LIB <1>: Adding a new generic library module. (line 20) -* KPSE_TRY_LIBXX: png library. (line 30) +* KPSE_TRY_LIBXX: png library. (line 31) * KPSE_TRY_LIBXX <1>: Adding a new generic library module. (line 20) * kpse_utils_pkgs: Adding a new program module. @@ -4940,311 +4985,311 @@ Index Tag Table: Node: Top1208 Node: Introduction2126 -Node: Overview of build system3878 -Node: Prerequisites5921 -Node: Building8319 -Node: Build iteration9567 -Node: Build problems10639 -Node: Build in parallel11042 -Node: Build distribution11634 -Node: Build one package12205 -Node: Installing15557 -Node: Installation directories16572 -Node: Linked scripts18388 -Node: Distro builds19869 -Node: Layout and infrastructure22259 -Node: Build system tools23087 -Node: Top-level directories25098 -Node: Autoconf macros27512 -Node: General setup macros28213 -Node: Macros for programs29080 -Node: Macros for compilers29892 -Node: Macros for libraries31326 -Node: Macros for library and header flags31752 -Node: Macros for Windows33632 -Node: Library modules35209 -Node: png library35698 -Node: zlib library37972 -Node: freetype library38487 -Node: kpathsea library39015 -Node: Program modules40414 -Node: t1utils package40842 -Node: xindy package41393 -Node: xdvik package42543 -Node: asymptote43616 -Node: Extending TeX Live44067 -Node: Adding a new program module44844 -Node: Adding a new generic library module46363 -Node: Adding a new TeX-specific library module48576 -Node: Configure options49263 -Node: Global configure options50645 -Node: --disable-native-texlive-build51187 -Node: --prefix --bindir ...52177 -Node: --disable-largefile52717 -Node: --disable-missing53402 -Node: --enable-compiler-warnings=LEVEL53803 -Node: --enable-cxx-runtime-hack54542 -Node: --enable-maintainer-mode54969 -Node: --enable-multiplatform55498 -Node: --enable-shared56036 -Node: --enable-silent-rules56407 -Node: --without-ln-s56863 -Node: --without-x57214 -Node: Program-specific configure options57402 -Node: --enable-PROG --disable-PROG58045 -Node: --disable-all-pkgs58322 -Node: Configure options for texk/web2c59308 -Node: Configure options for texk/bibtex-x61826 -Node: Configure options for texk/dvipdfm-x62369 -Node: Configure options for texk/dvisvgm63142 -Node: Configure options for texk/texlive64028 -Node: Configure options for texk/xdvik64449 -Node: Configure options for utils/xindy65053 -Node: Library-specific configure options65954 -Node: Configure options for kpathsea66965 -Node: Configure options for system poppler67674 -Node: Variables for configure68465 -Node: Cross compilation69893 -Node: Cross configuring71192 -Node: Cross problems72865 -Node: Coding conventions74512 -Node: Declarations and definitions75239 -Node: Const77421 -Node: install-tl79284 -Node: install-tl NAME79625 -Node: install-tl SYNOPSIS79783 -Node: install-tl DESCRIPTION79991 -Node: install-tl REFERENCES80992 -Node: install-tl OPTIONS81508 -Ref: install-tl *-gui* [[=]_module_]81862 -Ref: install-tl text82071 -Ref: install-tl wizard82194 -Ref: install-tl perltk82348 -Ref: install-tl *-no-gui*82782 -Ref: install-tl *-lang* _llcode_82863 -Ref: install-tl *-repository* _url|path_83550 -Ref: install-tl *-select-repository*85361 -Ref: install-tl *-all-options*85797 -Ref: install-tl *-custom-bin* _path_86104 -Ref: install-tl *-debug-translation*86759 -Ref: install-tl *-force-platform* _platform_86978 -Ref: install-tl *-help*, *--help*, *-?*87222 -Ref: install-tl *-in-place*87615 -Ref: install-tl *-logfile* _file_88142 -Ref: install-tl *-no-cls*88493 -Ref: install-tl *-non-admin*88624 -Ref: install-tl *--persistent-downloads*88729 -Ref: install-tl *--no-persistent-downloads*88757 -Ref: install-tl *-portable*89365 -Ref: install-tl *-print-platform*89504 -Ref: install-tl *-profile* _profile_89697 -Ref: install-tl *-q*91191 -Ref: install-tl *-scheme* _scheme_91253 -Ref: install-tl *-v*91727 -Ref: install-tl *-version*, *--version*91888 -Node: install-tl ENVIRONMENT VARIABLES92019 -Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK92408 -Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE92610 -Ref: install-tl TEXLIVE_INSTALL_PREFIX92716 -Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG92747 -Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME92776 -Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL92806 -Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG92840 -Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR92871 -Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR92899 -Ref: install-tl NOPERLDOC92954 -Node: install-tl AUTHORS AND COPYRIGHT93018 -Node: tlmgr93376 -Node: tlmgr NAME93813 -Node: tlmgr SYNOPSIS93938 -Node: tlmgr DESCRIPTION94128 -Node: tlmgr EXAMPLES95224 -Ref: tlmgr tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet95515 -Ref: tlmgr tlmgr update --list95696 -Ref: tlmgr tlmgr update --all95789 -Ref: tlmgr tlmgr info _pkg_95945 -Node: tlmgr OPTIONS96151 -Ref: tlmgr *--repository* _url|path_96671 -Ref: tlmgr *--gui* [_action_]97396 -Ref: tlmgr *--gui-lang* _llcode_97803 -Ref: tlmgr *--debug-translation*98486 -Ref: tlmgr *--machine-readable*98689 -Ref: tlmgr *--no-execute-actions*98957 -Ref: tlmgr *--package-logfile* _file_99150 -Ref: tlmgr *--pause*99405 -Ref: tlmgr *--persistent-downloads*99560 -Ref: tlmgr *--no-persistent-downloads*99588 -Ref: tlmgr *--pin-file*100082 -Ref: tlmgr *--usermode*100300 -Ref: tlmgr *--usertree* _dir_100420 -Node: tlmgr ACTIONS100970 -Node: tlmgr help102202 -Node: tlmgr version102678 -Node: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...102996 -Ref: tlmgr *--backupdir* _directory_104090 -Ref: tlmgr *--all*104287 -Ref: tlmgr *--clean*[=_N_]104509 -Ref: tlmgr *--dry-run*104806 -Node: tlmgr candidates _pkg_104926 -Ref: tlmgr *candidates _pkg_* 1105213 -Node: tlmgr check [_option_]... [files|depends|executes|runfiles|all]105357 -Ref: tlmgr *files*105800 -Ref: tlmgr *depends*105935 -Ref: tlmgr *executes*106277 -Ref: tlmgr *runfiles*106395 -Ref: tlmgr *--use-svn*106507 -Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]106624 -Node: tlmgr dump-tlpdb [--local|--remote]108696 -Ref: tlmgr *--local*109206 -Ref: tlmgr *--remote*109245 -Node: tlmgr generate [_option_]... _what_109667 -Ref: tlmgr *generate language*109908 -Ref: tlmgr *generate language.dat*109933 -Ref: tlmgr *generate language.def*109958 -Ref: tlmgr *generate language.dat.lua*109987 -Ref: tlmgr *generate fmtutil*110007 -Ref: tlmgr *--dest* _output_file_112244 -Ref: tlmgr *--localcfg* _local_conf_file_112820 -Ref: tlmgr *--rebuild-sys*112943 -Node: tlmgr gui113804 -Node: tlmgr info [_option_...] [collections|schemes|_pkg_...]114048 -Ref: tlmgr *--list*115253 -Ref: tlmgr *--only-installed*115532 -Ref: tlmgr *--taxonomy*115747 -Ref: tlmgr *--keyword*115759 -Ref: tlmgr *--functionality*115777 -Ref: tlmgr *--characterization*115798 -Node: tlmgr init-usertree116011 -Node: tlmgr install [_option_]... _pkg_...116437 -Ref: tlmgr *--file*116801 -Ref: tlmgr *--reinstall*117027 -Ref: tlmgr *--no-depends*117407 -Ref: tlmgr *--no-depends-at-all*117566 -Ref: tlmgr *--dry-run* 1117964 -Ref: tlmgr *--force*118082 -Node: tlmgr option118288 -Ref: tlmgr *option [show]*118461 -Ref: tlmgr *option showall*118479 -Ref: tlmgr *option _key_ [_value_]*118505 -Node: tlmgr paper122353 -Ref: tlmgr *paper [a4|letter]*122538 -Ref: tlmgr *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*122612 -Node: tlmgr path [--w32mode=user|admin] [add|remove]123639 -Node: tlmgr pinning125122 -Ref: tlmgr pinning show125429 -Ref: tlmgr pinning add _repo_ _pkgglob_...125502 -Ref: tlmgr pinning remove _repo_ _pkgglob_...125621 -Ref: tlmgr pinning remove _repo_ --all125774 -Node: tlmgr platform list|add|remove _platform_...125828 -Node: tlmgr platform set _platform_126076 -Node: tlmgr platform set auto126304 -Ref: tlmgr *--dry-run* 2127421 -Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...127530 -Node: tlmgr print-platform128832 -Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]129304 -Ref: tlmgr *--all* 1130200 -Ref: tlmgr *--backupdir* _directory_ 1130394 -Ref: tlmgr *--dry-run* 3130550 -Ref: tlmgr *--force* 1130667 -Node: tlmgr remove [_option_]... _pkg_...130695 -Ref: tlmgr *--no-depends* 1131218 -Ref: tlmgr *--no-depends-at-all* 1131280 -Ref: tlmgr *--force* 2131336 -Ref: tlmgr *--dry-run* 4131808 -Node: tlmgr repository131915 -Ref: tlmgr *repository list*132123 -Ref: tlmgr *repository list _path|tag_*132153 -Ref: tlmgr *repository add _path_ [_tag_]*132186 -Ref: tlmgr *repository remove _path|tag_*132218 -Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*132272 -Node: tlmgr search [_option_...] _what_133356 -Node: tlmgr search [_option_...] --file _what_133867 -Node: tlmgr search [_option_...] --taxonomy _what_134118 -Node: tlmgr search [_option_...] --keyword _what_134429 -Node: tlmgr search [_option_...] --functionality _what_134747 -Node: tlmgr search [_option_...] --characterization _what_135085 -Node: tlmgr search [_option_...] --all _what_135425 -Ref: tlmgr *--global*135873 -Ref: tlmgr *--word*135985 -Ref: tlmgr *--list* 1136224 -Ref: tlmgr *--file* 1136570 -Ref: tlmgr *--taxonomy* 1136627 -Ref: tlmgr *--keyword* 1136639 -Ref: tlmgr *--functionality* 1136657 -Ref: tlmgr *--characterization* 1136678 -Ref: tlmgr *--all* 2136833 -Node: tlmgr uninstall136916 -Ref: tlmgr *--force* 3137170 -Node: tlmgr update [_option_]... [_pkg_]...137226 -Ref: tlmgr *--all* 3137597 -Ref: tlmgr *--self*139338 -Ref: tlmgr *--dry-run* 5140102 -Ref: tlmgr *--list* [_pkg_]140279 -Ref: tlmgr *--exclude* _pkg_140968 -Ref: tlmgr *--no-auto-remove* [_pkg_]...141661 -Ref: tlmgr *--no-auto-install* [_pkg_]...142112 -Ref: tlmgr *--reinstall-forcibly-removed*142768 -Ref: tlmgr *--backup* and *--backupdir* _directory_143332 -Ref: tlmgr *--no-depends* 2144513 -Ref: tlmgr *--no-depends-at-all* 2144716 -Ref: tlmgr *--force* 4144772 -Node: tlmgr USER MODE145198 -Node: tlmgr user mode install148009 -Node: tlmgr user mode backup; restore; remove; update148956 -Node: tlmgr user mode generate; option; paper149398 -Node: tlmgr CONFIGURATION FILE FOR TLMGR149774 -Node: tlmgr TAXONOMIES150865 -Ref: tlmgr --keyword 2151491 -Ref: tlmgr --functionality 2151576 -Ref: tlmgr --characterization 2151732 -Ref: tlmgr --taxonomy 2151873 -Node: tlmgr MULTIPLE REPOSITORIES152414 -Node: tlmgr Pinning154135 -Node: tlmgr GUI FOR TLMGR156110 -Node: tlmgr Main display157332 -Node: tlmgr Display configuration area157584 -Ref: tlmgr Status157945 -Ref: tlmgr Category158109 -Ref: tlmgr Match158295 -Ref: tlmgr Selection158555 -Ref: tlmgr Display configuration buttons158759 -Node: tlmgr Package list area158942 -Ref: tlmgr a checkbox159526 -Ref: tlmgr package name159662 -Ref: tlmgr local revision (and version)159761 -Ref: tlmgr remote revision (and version)160136 -Ref: tlmgr short description160433 -Node: tlmgr Main display action buttons160478 -Ref: tlmgr Update all installed160744 -Ref: tlmgr Update161116 -Ref: tlmgr Install161166 -Ref: tlmgr Remove161352 -Ref: tlmgr Backup161530 -Node: tlmgr Menu bar161687 -Ref: tlmgr tlmgr menu161884 -Ref: tlmgr Options menu162192 -Ref: tlmgr Actions menu163275 -Ref: tlmgr Help menu163703 -Node: tlmgr MACHINE-READABLE OUTPUT163836 -Node: tlmgr Machine-readable update and install output164646 -Ref: tlmgr location-url _location_165922 -Ref: tlmgr total-bytes _count_166138 -Ref: tlmgr _pkgname_166548 -Ref: tlmgr _status_166758 -Ref: tlmgr d166836 -Ref: tlmgr f166896 -Ref: tlmgr u167075 -Ref: tlmgr r167121 -Ref: tlmgr a167244 -Ref: tlmgr i167422 -Ref: tlmgr I167541 -Ref: tlmgr _localrev_167643 -Ref: tlmgr _serverrev_167750 -Ref: tlmgr _size_167862 -Ref: tlmgr _runtime_168031 -Ref: tlmgr _esttot_168101 -Node: tlmgr Machine-readable option output168134 -Node: tlmgr AUTHORS AND COPYRIGHT168646 -Node: Index168993 +Node: Overview of build system3881 +Node: Prerequisites5924 +Node: Building8322 +Node: Build iteration9570 +Node: Build problems10642 +Node: Build in parallel11045 +Node: Build distribution11637 +Node: Build one package12208 +Node: Installing15560 +Node: Installation directories16575 +Node: Linked scripts18391 +Node: Distro builds19872 +Node: Layout and infrastructure22262 +Node: Build system tools23090 +Node: Top-level directories25101 +Node: Autoconf macros27515 +Node: General setup macros28216 +Node: Macros for programs29083 +Node: Macros for compilers29895 +Node: Macros for libraries31329 +Node: Macros for library and header flags31755 +Node: Macros for Windows33635 +Node: Library modules35212 +Node: png library35701 +Node: zlib library37975 +Node: freetype library38490 +Node: kpathsea library39018 +Node: Program modules40417 +Node: t1utils package40845 +Node: xindy package41396 +Node: xdvik package42546 +Node: asymptote43619 +Node: Extending TeX Live44070 +Node: Adding a new program module44847 +Node: Adding a new generic library module48142 +Node: Adding a new TeX-specific library module50355 +Node: Configure options51042 +Node: Global configure options52424 +Node: --disable-native-texlive-build52966 +Node: --prefix --bindir ...53956 +Node: --disable-largefile54496 +Node: --disable-missing55181 +Node: --enable-compiler-warnings=LEVEL55582 +Node: --enable-cxx-runtime-hack56321 +Node: --enable-maintainer-mode56748 +Node: --enable-multiplatform57277 +Node: --enable-shared57815 +Node: --enable-silent-rules58186 +Node: --without-ln-s58642 +Node: --without-x58993 +Node: Program-specific configure options59181 +Node: --enable-PROG --disable-PROG59824 +Node: --disable-all-pkgs60101 +Node: Configure options for texk/web2c61087 +Node: Configure options for texk/bibtex-x63605 +Node: Configure options for texk/dvipdfm-x64148 +Node: Configure options for texk/dvisvgm64921 +Node: Configure options for texk/texlive65807 +Node: Configure options for texk/xdvik66228 +Node: Configure options for utils/xindy66832 +Node: Library-specific configure options67733 +Node: Configure options for kpathsea68744 +Node: Configure options for system poppler69453 +Node: Variables for configure70244 +Node: Cross compilation71672 +Node: Cross configuring72971 +Node: Cross problems74644 +Node: Coding conventions76291 +Node: Declarations and definitions77018 +Node: Const79200 +Node: install-tl81063 +Node: install-tl NAME81404 +Node: install-tl SYNOPSIS81562 +Node: install-tl DESCRIPTION81770 +Node: install-tl REFERENCES82771 +Node: install-tl OPTIONS83287 +Ref: install-tl *-gui* [[=]_module_]83641 +Ref: install-tl text83850 +Ref: install-tl wizard83973 +Ref: install-tl perltk84127 +Ref: install-tl *-no-gui*84561 +Ref: install-tl *-lang* _llcode_84642 +Ref: install-tl *-repository* _url|path_85329 +Ref: install-tl *-select-repository*87140 +Ref: install-tl *-all-options*87576 +Ref: install-tl *-custom-bin* _path_87883 +Ref: install-tl *-debug-translation*88538 +Ref: install-tl *-force-platform* _platform_88757 +Ref: install-tl *-help*, *--help*, *-?*89001 +Ref: install-tl *-in-place*89394 +Ref: install-tl *-logfile* _file_89921 +Ref: install-tl *-no-cls*90272 +Ref: install-tl *-non-admin*90403 +Ref: install-tl *--persistent-downloads*90508 +Ref: install-tl *--no-persistent-downloads*90536 +Ref: install-tl *-portable*91144 +Ref: install-tl *-print-platform*91283 +Ref: install-tl *-profile* _profile_91476 +Ref: install-tl *-q*92970 +Ref: install-tl *-scheme* _scheme_93032 +Ref: install-tl *-v*93506 +Ref: install-tl *-version*, *--version*93667 +Node: install-tl ENVIRONMENT VARIABLES93798 +Ref: install-tl TEXLIVE_INSTALL_ENV_NOCHECK94187 +Ref: install-tl TEXLIVE_INSTALL_NO_CONTEXT_CACHE94389 +Ref: install-tl TEXLIVE_INSTALL_PREFIX94495 +Ref: install-tl TEXLIVE_INSTALL_TEXMFCONFIG94526 +Ref: install-tl TEXLIVE_INSTALL_TEXMFHOME94555 +Ref: install-tl TEXLIVE_INSTALL_TEXMFLOCAL94585 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSCONFIG94619 +Ref: install-tl TEXLIVE_INSTALL_TEXMFSYSVAR94650 +Ref: install-tl TEXLIVE_INSTALL_TEXMFVAR94678 +Ref: install-tl NOPERLDOC94733 +Node: install-tl AUTHORS AND COPYRIGHT94797 +Node: tlmgr95155 +Node: tlmgr NAME95592 +Node: tlmgr SYNOPSIS95717 +Node: tlmgr DESCRIPTION95907 +Node: tlmgr EXAMPLES97003 +Ref: tlmgr tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet97294 +Ref: tlmgr tlmgr update --list97475 +Ref: tlmgr tlmgr update --all97568 +Ref: tlmgr tlmgr info _pkg_97724 +Node: tlmgr OPTIONS97930 +Ref: tlmgr *--repository* _url|path_98450 +Ref: tlmgr *--gui* [_action_]99175 +Ref: tlmgr *--gui-lang* _llcode_99582 +Ref: tlmgr *--debug-translation*100265 +Ref: tlmgr *--machine-readable*100468 +Ref: tlmgr *--no-execute-actions*100736 +Ref: tlmgr *--package-logfile* _file_100929 +Ref: tlmgr *--pause*101184 +Ref: tlmgr *--persistent-downloads*101339 +Ref: tlmgr *--no-persistent-downloads*101367 +Ref: tlmgr *--pin-file*101861 +Ref: tlmgr *--usermode*102079 +Ref: tlmgr *--usertree* _dir_102199 +Node: tlmgr ACTIONS102749 +Node: tlmgr help103981 +Node: tlmgr version104457 +Node: tlmgr backup [--clean[=_N_]] [--backupdir _dir_] [--all | _pkg_]...104775 +Ref: tlmgr *--backupdir* _directory_105869 +Ref: tlmgr *--all*106066 +Ref: tlmgr *--clean*[=_N_]106288 +Ref: tlmgr *--dry-run*106585 +Node: tlmgr candidates _pkg_106705 +Ref: tlmgr *candidates _pkg_* 1106992 +Node: tlmgr check [_option_]... [files|depends|executes|runfiles|all]107136 +Ref: tlmgr *files*107579 +Ref: tlmgr *depends*107714 +Ref: tlmgr *executes*108056 +Ref: tlmgr *runfiles*108174 +Ref: tlmgr *--use-svn*108286 +Node: tlmgr conf [texmf|tlmgr|updmap [--conffile _file_] [--delete] [_key_ [_value_]]]108403 +Node: tlmgr dump-tlpdb [--local|--remote]110475 +Ref: tlmgr *--local*110985 +Ref: tlmgr *--remote*111024 +Node: tlmgr generate [_option_]... _what_111446 +Ref: tlmgr *generate language*111687 +Ref: tlmgr *generate language.dat*111712 +Ref: tlmgr *generate language.def*111737 +Ref: tlmgr *generate language.dat.lua*111766 +Ref: tlmgr *generate fmtutil*111786 +Ref: tlmgr *--dest* _output_file_114023 +Ref: tlmgr *--localcfg* _local_conf_file_114599 +Ref: tlmgr *--rebuild-sys*114722 +Node: tlmgr gui115583 +Node: tlmgr info [_option_...] [collections|schemes|_pkg_...]115827 +Ref: tlmgr *--list*117032 +Ref: tlmgr *--only-installed*117311 +Ref: tlmgr *--taxonomy*117526 +Ref: tlmgr *--keyword*117538 +Ref: tlmgr *--functionality*117556 +Ref: tlmgr *--characterization*117577 +Node: tlmgr init-usertree117790 +Node: tlmgr install [_option_]... _pkg_...118216 +Ref: tlmgr *--file*118580 +Ref: tlmgr *--reinstall*118806 +Ref: tlmgr *--no-depends*119186 +Ref: tlmgr *--no-depends-at-all*119345 +Ref: tlmgr *--dry-run* 1119743 +Ref: tlmgr *--force*119861 +Node: tlmgr option120067 +Ref: tlmgr *option [show]*120240 +Ref: tlmgr *option showall*120258 +Ref: tlmgr *option _key_ [_value_]*120284 +Node: tlmgr paper124132 +Ref: tlmgr *paper [a4|letter]*124317 +Ref: tlmgr *[xdvi|pdftex|dvips|dvipdfmx|context|psutils] paper [_papersize_|--list]*124391 +Node: tlmgr path [--w32mode=user|admin] [add|remove]125418 +Node: tlmgr pinning126901 +Ref: tlmgr pinning show127208 +Ref: tlmgr pinning add _repo_ _pkgglob_...127281 +Ref: tlmgr pinning remove _repo_ _pkgglob_...127400 +Ref: tlmgr pinning remove _repo_ --all127553 +Node: tlmgr platform list|add|remove _platform_...127607 +Node: tlmgr platform set _platform_127855 +Node: tlmgr platform set auto128083 +Ref: tlmgr *--dry-run* 2129200 +Node: tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] [install|remove] [shortcut|fileassoc|script] [_pkg_]...129309 +Node: tlmgr print-platform130611 +Node: tlmgr restore [--backupdir _dir_] [--all | _pkg_ [_rev_]]131083 +Ref: tlmgr *--all* 1131979 +Ref: tlmgr *--backupdir* _directory_ 1132173 +Ref: tlmgr *--dry-run* 3132329 +Ref: tlmgr *--force* 1132446 +Node: tlmgr remove [_option_]... _pkg_...132474 +Ref: tlmgr *--no-depends* 1132997 +Ref: tlmgr *--no-depends-at-all* 1133059 +Ref: tlmgr *--force* 2133115 +Ref: tlmgr *--dry-run* 4133587 +Node: tlmgr repository133694 +Ref: tlmgr *repository list*133902 +Ref: tlmgr *repository list _path|tag_*133932 +Ref: tlmgr *repository add _path_ [_tag_]*133965 +Ref: tlmgr *repository remove _path|tag_*133997 +Ref: tlmgr *repository set _path_[#_tag_] [_path_[#_tag_] ...]*134051 +Node: tlmgr search [_option_...] _what_135135 +Node: tlmgr search [_option_...] --file _what_135646 +Node: tlmgr search [_option_...] --taxonomy _what_135897 +Node: tlmgr search [_option_...] --keyword _what_136208 +Node: tlmgr search [_option_...] --functionality _what_136526 +Node: tlmgr search [_option_...] --characterization _what_136864 +Node: tlmgr search [_option_...] --all _what_137204 +Ref: tlmgr *--global*137652 +Ref: tlmgr *--word*137764 +Ref: tlmgr *--list* 1138003 +Ref: tlmgr *--file* 1138349 +Ref: tlmgr *--taxonomy* 1138406 +Ref: tlmgr *--keyword* 1138418 +Ref: tlmgr *--functionality* 1138436 +Ref: tlmgr *--characterization* 1138457 +Ref: tlmgr *--all* 2138612 +Node: tlmgr uninstall138695 +Ref: tlmgr *--force* 3138949 +Node: tlmgr update [_option_]... [_pkg_]...139005 +Ref: tlmgr *--all* 3139376 +Ref: tlmgr *--self*141117 +Ref: tlmgr *--dry-run* 5141881 +Ref: tlmgr *--list* [_pkg_]142058 +Ref: tlmgr *--exclude* _pkg_142747 +Ref: tlmgr *--no-auto-remove* [_pkg_]...143440 +Ref: tlmgr *--no-auto-install* [_pkg_]...143891 +Ref: tlmgr *--reinstall-forcibly-removed*144547 +Ref: tlmgr *--backup* and *--backupdir* _directory_145111 +Ref: tlmgr *--no-depends* 2146292 +Ref: tlmgr *--no-depends-at-all* 2146495 +Ref: tlmgr *--force* 4146551 +Node: tlmgr USER MODE146977 +Node: tlmgr user mode install149788 +Node: tlmgr user mode backup; restore; remove; update150735 +Node: tlmgr user mode generate; option; paper151177 +Node: tlmgr CONFIGURATION FILE FOR TLMGR151553 +Node: tlmgr TAXONOMIES152644 +Ref: tlmgr --keyword 2153270 +Ref: tlmgr --functionality 2153355 +Ref: tlmgr --characterization 2153511 +Ref: tlmgr --taxonomy 2153652 +Node: tlmgr MULTIPLE REPOSITORIES154193 +Node: tlmgr Pinning155914 +Node: tlmgr GUI FOR TLMGR157889 +Node: tlmgr Main display159111 +Node: tlmgr Display configuration area159363 +Ref: tlmgr Status159724 +Ref: tlmgr Category159888 +Ref: tlmgr Match160074 +Ref: tlmgr Selection160334 +Ref: tlmgr Display configuration buttons160538 +Node: tlmgr Package list area160721 +Ref: tlmgr a checkbox161305 +Ref: tlmgr package name161441 +Ref: tlmgr local revision (and version)161540 +Ref: tlmgr remote revision (and version)161915 +Ref: tlmgr short description162212 +Node: tlmgr Main display action buttons162257 +Ref: tlmgr Update all installed162523 +Ref: tlmgr Update162895 +Ref: tlmgr Install162945 +Ref: tlmgr Remove163131 +Ref: tlmgr Backup163309 +Node: tlmgr Menu bar163466 +Ref: tlmgr tlmgr menu163663 +Ref: tlmgr Options menu163971 +Ref: tlmgr Actions menu165054 +Ref: tlmgr Help menu165482 +Node: tlmgr MACHINE-READABLE OUTPUT165615 +Node: tlmgr Machine-readable update and install output166425 +Ref: tlmgr location-url _location_167701 +Ref: tlmgr total-bytes _count_167917 +Ref: tlmgr _pkgname_168327 +Ref: tlmgr _status_168537 +Ref: tlmgr d168615 +Ref: tlmgr f168675 +Ref: tlmgr u168854 +Ref: tlmgr r168900 +Ref: tlmgr a169023 +Ref: tlmgr i169201 +Ref: tlmgr I169320 +Ref: tlmgr _localrev_169422 +Ref: tlmgr _serverrev_169529 +Ref: tlmgr _size_169641 +Ref: tlmgr _runtime_169810 +Ref: tlmgr _esttot_169880 +Node: tlmgr Machine-readable option output169913 +Node: tlmgr AUTHORS AND COPYRIGHT170425 +Node: Index170772  End Tag Table diff --git a/Build/source/libs/Makefile.in b/Build/source/libs/Makefile.in index 2e20face444..c40a7328d2f 100644 --- a/Build/source/libs/Makefile.in +++ b/Build/source/libs/Makefile.in @@ -120,6 +120,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-cairo-flags.m4 \ $(top_srcdir)/../m4/kpse-zziplib-flags.m4 \ $(top_srcdir)/../version.ac \ $(top_srcdir)/../utils/autosp/ac/withenable.ac \ + $(top_srcdir)/../utils/axodraw2/ac/withenable.ac \ $(top_srcdir)/../utils/devnag/ac/withenable.ac \ $(top_srcdir)/../utils/lacheck/ac/withenable.ac \ $(top_srcdir)/../utils/m-tx/ac/withenable.ac \ diff --git a/Build/source/libs/configure b/Build/source/libs/configure index 4aa26bb13a2..9bc4dc83bc0 100755 --- a/Build/source/libs/configure +++ b/Build/source/libs/configure @@ -695,6 +695,7 @@ enable_multiplatform enable_cxx_runtime_hack enable_libtool_hack enable_autosp +enable_axodraw2 enable_devnag enable_lacheck enable_m_tx @@ -1483,6 +1484,7 @@ Optional Features: --enable-cxx-runtime-hack link C++ runtime statically --enable-libtool-hack ignore libtool dependency_libs --disable-autosp do not build the autosp package + --disable-axodraw2 do not build the axodraw2 package --disable-devnag do not build the devnag package --disable-lacheck do not build the lacheck package --disable-m-tx do not build the m-tx package @@ -3362,7 +3364,8 @@ esac ;; esac ## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir -## configure options and TL libraries required for vlna +## $Id$ +## configure options and TL libraries required for autosp. # Check whether --enable-autosp was given. if test "${enable_autosp+set}" = set; then : enableval=$enable_autosp; @@ -3379,6 +3382,25 @@ $as_echo "$as_me: Assuming \`--enable-autosp=$enable_autosp'" >&6;} ;; esac +## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir +## $Id$ +## configure options and TL libraries for axodraw2. +# Check whether --enable-axodraw2 was given. +if test "${enable_axodraw2+set}" = set; then : + enableval=$enable_axodraw2; +fi +case $enable_axodraw2 in #( + yes|no) : + ;; #( + *) : + + enable_axodraw2=$enable_all_pkgs + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&5 +$as_echo "$as_me: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&6;} + ac_configure_args="$ac_configure_args '--enable-axodraw2=$enable_axodraw2'" + ;; +esac + ## utils/devnag/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/devnag/ ## configure options and TL libraries required for devnag # Check whether --enable-devnag was given. diff --git a/Build/source/m4/ChangeLog b/Build/source/m4/ChangeLog index a33660429fc..30153cae36f 100644 --- a/Build/source/m4/ChangeLog +++ b/Build/source/m4/ChangeLog @@ -1,3 +1,7 @@ +2018-02-09 Karl Berry + + * kpse-pkgs.m4 (kpse_utils_pkgs): add axodraw2. + 2018-01-08 Karl Berry * ax_cxx_compile_stdcxx.m4: move from dvisvgm; original from diff --git a/Build/source/m4/kpse-pkgs.m4 b/Build/source/m4/kpse-pkgs.m4 index 3e58df1087b..1403e29a1a5 100644 --- a/Build/source/m4/kpse-pkgs.m4 +++ b/Build/source/m4/kpse-pkgs.m4 @@ -1,6 +1,6 @@ # $Id$ # Private Autoconf macros for the TeX Live (TL) tree. -# Copyright 2016 Karl Berry +# Copyright 2016-2018 Karl Berry # Copyright 2009-2015 Peter Breitenlohner # # This file is free software; the copyright holder @@ -84,6 +84,7 @@ AC_REQUIRE([KPSE_HARFBUZZ_SYSTEM_FLAGS])[]dnl AC_DEFUN([KPSE_UTILS_PKGS], [dnl m4_define([kpse_utils_pkgs], [dnl autosp +axodraw2 devnag lacheck m-tx diff --git a/Build/source/texk/Makefile.in b/Build/source/texk/Makefile.in index 1fab57b21aa..98fcd18c103 100644 --- a/Build/source/texk/Makefile.in +++ b/Build/source/texk/Makefile.in @@ -120,6 +120,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-cairo-flags.m4 \ $(top_srcdir)/../m4/kpse-zziplib-flags.m4 \ $(top_srcdir)/../version.ac \ $(top_srcdir)/../utils/autosp/ac/withenable.ac \ + $(top_srcdir)/../utils/axodraw2/ac/withenable.ac \ $(top_srcdir)/../utils/devnag/ac/withenable.ac \ $(top_srcdir)/../utils/lacheck/ac/withenable.ac \ $(top_srcdir)/../utils/m-tx/ac/withenable.ac \ diff --git a/Build/source/texk/configure b/Build/source/texk/configure index 66170b32841..c65ef0f8aa1 100755 --- a/Build/source/texk/configure +++ b/Build/source/texk/configure @@ -695,6 +695,7 @@ enable_multiplatform enable_cxx_runtime_hack enable_libtool_hack enable_autosp +enable_axodraw2 enable_devnag enable_lacheck enable_m_tx @@ -1483,6 +1484,7 @@ Optional Features: --enable-cxx-runtime-hack link C++ runtime statically --enable-libtool-hack ignore libtool dependency_libs --disable-autosp do not build the autosp package + --disable-axodraw2 do not build the axodraw2 package --disable-devnag do not build the devnag package --disable-lacheck do not build the lacheck package --disable-m-tx do not build the m-tx package @@ -3362,7 +3364,8 @@ esac ;; esac ## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir -## configure options and TL libraries required for vlna +## $Id$ +## configure options and TL libraries required for autosp. # Check whether --enable-autosp was given. if test "${enable_autosp+set}" = set; then : enableval=$enable_autosp; @@ -3379,6 +3382,25 @@ $as_echo "$as_me: Assuming \`--enable-autosp=$enable_autosp'" >&6;} ;; esac +## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir +## $Id$ +## configure options and TL libraries for axodraw2. +# Check whether --enable-axodraw2 was given. +if test "${enable_axodraw2+set}" = set; then : + enableval=$enable_axodraw2; +fi +case $enable_axodraw2 in #( + yes|no) : + ;; #( + *) : + + enable_axodraw2=$enable_all_pkgs + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&5 +$as_echo "$as_me: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&6;} + ac_configure_args="$ac_configure_args '--enable-axodraw2=$enable_axodraw2'" + ;; +esac + ## utils/devnag/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/devnag/ ## configure options and TL libraries required for devnag # Check whether --enable-devnag was given. diff --git a/Build/source/utils/ChangeLog b/Build/source/utils/ChangeLog index d63d18700fa..d4bd499a1aa 100644 --- a/Build/source/utils/ChangeLog +++ b/Build/source/utils/ChangeLog @@ -1,3 +1,7 @@ +2018-02-09 Karl Berry + + * axodraw2: new utility: package axodraw2, executable axohelp. + 2017-12-19 Karl Berry * README (clisp): use libffcall-1.13, needed on aarch64 per diff --git a/Build/source/utils/Makefile.in b/Build/source/utils/Makefile.in index 01abc2ca9e6..e2e8d0ca619 100644 --- a/Build/source/utils/Makefile.in +++ b/Build/source/utils/Makefile.in @@ -120,6 +120,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../m4/kpse-cairo-flags.m4 \ $(top_srcdir)/../m4/kpse-zziplib-flags.m4 \ $(top_srcdir)/../version.ac \ $(top_srcdir)/../utils/autosp/ac/withenable.ac \ + $(top_srcdir)/../utils/axodraw2/ac/withenable.ac \ $(top_srcdir)/../utils/devnag/ac/withenable.ac \ $(top_srcdir)/../utils/lacheck/ac/withenable.ac \ $(top_srcdir)/../utils/m-tx/ac/withenable.ac \ diff --git a/Build/source/utils/autosp/ac/withenable.ac b/Build/source/utils/autosp/ac/withenable.ac index e41c2be4a80..bab1844784e 100644 --- a/Build/source/utils/autosp/ac/withenable.ac +++ b/Build/source/utils/autosp/ac/withenable.ac @@ -1,7 +1,8 @@ ## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir +## $Id$ dnl -dnl Copyright 2016 Karl Berry +dnl Copyright 2016--2018 Karl Berry dnl You may freely use, modify and/or distribute this file. dnl -## configure options and TL libraries required for vlna +## configure options and TL libraries required for autosp. KPSE_ENABLE_PROG([autosp]) diff --git a/Build/source/utils/axodraw2/ChangeLog b/Build/source/utils/axodraw2/ChangeLog new file mode 100644 index 00000000000..38d64fc0ff8 --- /dev/null +++ b/Build/source/utils/axodraw2/ChangeLog @@ -0,0 +1,5 @@ +2018-02-10 Karl Berry + + * new package axodraw2 (executable axohelp). + +(This ChangeLog file public domain.) diff --git a/Build/source/utils/axodraw2/Makefile.am b/Build/source/utils/axodraw2/Makefile.am new file mode 100644 index 00000000000..d56fe0e48b0 --- /dev/null +++ b/Build/source/utils/axodraw2/Makefile.am @@ -0,0 +1,38 @@ +## $Id$ +## Makefile.am for axohelp (in TeX Live) +## +## Copyright (C) 2018 John Collins +## You may freely use, modify and/or distribute this file. +## + +## We want to re-distribute the whole original ps2eps source tree. +EXTRA_DIST = $(AXODRAW2_TREE) + +# Files not to be distributed +include $(srcdir)/../../am/dist_hook.am +NEVER_NAMES += $(NEVER_NAMES_SUB) + +AM_CFLAGS = $(WARNING_CFLAGS) + +bin_PROGRAMS = axohelp +# must use @... for _SOURCES or subdir $(... (literally) is created for .deps. +axohelp_SOURCES = @AXODRAW2_TREE@/axohelp.c + +man1_MANS = $(AXODRAW2_TREE)/axohelp.1 + +## Test +AM_TESTS_ENVIRONMENT = AXODRAW2_TREE=$(AXODRAW2_TREE); export AXODRAW2_TREE; +# +TESTS = $(AXODRAW2_TREE)/axohelp.test +EXTRA_DIST += $(TESTS) +axohelp.log: axohelp$(EXEEXT) +# +## test files. +EXTRA_DIST += \ + $(AXODRAW2_TREE)/test.ax1 \ + $(AXODRAW2_TREE)/test.ax2-std \ + $(AXODRAW2_TREE)/example.tex + +dist_check_SCRIPTS = $(TESTS) +CLEANFILES = test.ax2 + diff --git a/Build/source/utils/axodraw2/Makefile.in b/Build/source/utils/axodraw2/Makefile.in new file mode 100644 index 00000000000..e0a8fec64cf --- /dev/null +++ b/Build/source/utils/axodraw2/Makefile.in @@ -0,0 +1,1192 @@ +# Makefile.in generated by automake 1.15.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2017 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +bin_PROGRAMS = axohelp$(EXEEXT) +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \ + $(top_srcdir)/../../m4/kpse-warnings.m4 \ + $(top_srcdir)/../../m4/kpse-win32.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(dist_check_SCRIPTS) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" +PROGRAMS = $(bin_PROGRAMS) +am__dirstamp = $(am__leading_dot)dirstamp +am_axohelp_OBJECTS = @AXODRAW2_TREE@/axohelp.$(OBJEXT) +axohelp_OBJECTS = $(am_axohelp_OBJECTS) +axohelp_LDADD = $(LDADD) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/../../build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(axohelp_SOURCES) +DIST_SOURCES = $(axohelp_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(man1_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +AM_RECURSIVE_TARGETS = cscope check recheck +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/../../build-aux/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/../../am/dist_hook.am \ + $(srcdir)/Makefile.in $(top_srcdir)/../../build-aux/compile \ + $(top_srcdir)/../../build-aux/depcomp \ + $(top_srcdir)/../../build-aux/install-sh \ + $(top_srcdir)/../../build-aux/missing \ + $(top_srcdir)/../../build-aux/test-driver \ + ../../build-aux/ar-lib ../../build-aux/compile \ + ../../build-aux/config.guess ../../build-aux/config.sub \ + ../../build-aux/depcomp ../../build-aux/install-sh \ + ../../build-aux/ltmain.sh ../../build-aux/missing \ + ../../build-aux/texinfo.tex ../../build-aux/ylwrap +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +AXODRAW2_TREE = @AXODRAW2_TREE@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EXEEXT = @EXEEXT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARNING_CFLAGS = @WARNING_CFLAGS@ +WIN_WRAPPER = @WIN_WRAPPER@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +# +EXTRA_DIST = $(AXODRAW2_TREE) $(TESTS) $(AXODRAW2_TREE)/test.ax1 \ + $(AXODRAW2_TREE)/test.ax2-std $(AXODRAW2_TREE)/example.tex +NEVER_DIST = `find . $(NEVER_NAMES)` + +# Files not to be distributed +NEVER_NAMES = -name .svn $(NEVER_NAMES_SUB) +NEVER_NAMES_SUB = -o -name .deps -o -name .dirstamp -o -name '*.$(OBJEXT)' +NEVER_NAMES_LT = -o -name .libs -o -name '*.lo' +AM_CFLAGS = $(WARNING_CFLAGS) +# must use @... for _SOURCES or subdir $(... (literally) is created for .deps. +axohelp_SOURCES = @AXODRAW2_TREE@/axohelp.c +man1_MANS = $(AXODRAW2_TREE)/axohelp.1 +AM_TESTS_ENVIRONMENT = AXODRAW2_TREE=$(AXODRAW2_TREE); export AXODRAW2_TREE; +# +TESTS = $(AXODRAW2_TREE)/axohelp.test +dist_check_SCRIPTS = $(TESTS) +CLEANFILES = test.ax2 +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../../am/dist_hook.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; +$(srcdir)/../../am/dist_hook.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +@AXODRAW2_TREE@/$(am__dirstamp): + @$(MKDIR_P) @AXODRAW2_TREE@ + @: > @AXODRAW2_TREE@/$(am__dirstamp) +@AXODRAW2_TREE@/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) @AXODRAW2_TREE@/$(DEPDIR) + @: > @AXODRAW2_TREE@/$(DEPDIR)/$(am__dirstamp) +@AXODRAW2_TREE@/axohelp.$(OBJEXT): @AXODRAW2_TREE@/$(am__dirstamp) \ + @AXODRAW2_TREE@/$(DEPDIR)/$(am__dirstamp) + +axohelp$(EXEEXT): $(axohelp_OBJECTS) $(axohelp_DEPENDENCIES) $(EXTRA_axohelp_DEPENDENCIES) + @rm -f axohelp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(axohelp_OBJECTS) $(axohelp_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f @AXODRAW2_TREE@/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@@AXODRAW2_TREE@/$(DEPDIR)/axohelp.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +install-man1: $(man1_MANS) + @$(NORMAL_INSTALL) + @list1='$(man1_MANS)'; \ + list2=''; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(dist_check_SCRIPTS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(dist_check_SCRIPTS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(PROGRAMS) $(MANS) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f @AXODRAW2_TREE@/$(DEPDIR)/$(am__dirstamp) + -rm -f @AXODRAW2_TREE@/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf @AXODRAW2_TREE@/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf @AXODRAW2_TREE@/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-TESTS \ + check-am clean clean-binPROGRAMS clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ + dist-zip distcheck distclean distclean-compile \ + distclean-generic distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am uninstall-binPROGRAMS uninstall-man \ + uninstall-man1 + +.PRECIOUS: Makefile + +dist-hook: + cd "$(distdir)" && rm -rf $(NEVER_DIST) +axohelp.log: axohelp$(EXEEXT) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Build/source/utils/axodraw2/TLpatches/TL-Changes b/Build/source/utils/axodraw2/TLpatches/TL-Changes new file mode 100644 index 00000000000..f97cb6e20e2 --- /dev/null +++ b/Build/source/utils/axodraw2/TLpatches/TL-Changes @@ -0,0 +1,5 @@ +Changes applied to the axodraw tree as obtained from + https://ctan.org/pkg/axodraw2 + +Remove: + axohelp.exe diff --git a/Build/source/utils/axodraw2/ac/withenable.ac b/Build/source/utils/axodraw2/ac/withenable.ac new file mode 100644 index 00000000000..8208d94b072 --- /dev/null +++ b/Build/source/utils/axodraw2/ac/withenable.ac @@ -0,0 +1,8 @@ +## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir +## $Id$ +dnl +dnl Copyright 2018 Karl Berry +dnl You may freely use, modify and/or distribute this file. +dnl +## configure options and TL libraries for axodraw2. +KPSE_ENABLE_PROG([axodraw2]) diff --git a/Build/source/utils/axodraw2/aclocal.m4 b/Build/source/utils/axodraw2/aclocal.m4 new file mode 100644 index 00000000000..f628e105607 --- /dev/null +++ b/Build/source/utils/axodraw2/aclocal.m4 @@ -0,0 +1,1191 @@ +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2017 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([../../m4/kpse-common.m4]) +m4_include([../../m4/kpse-warnings.m4]) +m4_include([../../m4/kpse-win32.m4]) diff --git a/Build/source/utils/axodraw2/axodraw2-src/AUTHORS b/Build/source/utils/axodraw2/axodraw2-src/AUTHORS new file mode 100644 index 00000000000..6751044a870 --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/AUTHORS @@ -0,0 +1,2 @@ +John Collins (jcc8 at psu dot edu) +Jos Vermaseren (t68 at nikhef dot nl) diff --git a/Build/source/utils/axodraw2/axodraw2-src/COPYING b/Build/source/utils/axodraw2/axodraw2-src/COPYING new file mode 100644 index 00000000000..94a9ed024d3 --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Build/source/utils/axodraw2/axodraw2-src/ChangeLog b/Build/source/utils/axodraw2/axodraw2-src/ChangeLog new file mode 100644 index 00000000000..1ee4ef9582b --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/ChangeLog @@ -0,0 +1,17 @@ +2016/06/02 + Release on CTAN: + axodraw2 [v. 2.1.0b 2016/06/02] + axohelp [v. 1.0 2016/05/23] + +2018/01/20 + axohelp has standard options (-h, --help, -v, --version) + Change verbose option to -V instead of -v + Include files for autoconf and automake +2018/01/31 + Updated manual to include information on status of axodraw2 and + axohelp in MiKTeX. + Compiled axohelp on Windows 10 and updated axohelp.exe. + Checked package works with MiKTeX on Windows 10 by compiling + manual. +2018/02/04 + Minor corrections in manual. diff --git a/Build/source/utils/axodraw2/axodraw2-src/INSTALL b/Build/source/utils/axodraw2/axodraw2-src/INSTALL new file mode 100644 index 00000000000..2778aad9acc --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/INSTALL @@ -0,0 +1,57 @@ +MANUAL INSTALLATION of axohelp v. 1.1 and axodraw2 +================================================== + + + +A. Fully Manual Installation +---------------------------- + + Note: if you do not wish to use axodraw2 with pdflatex, xelatex, or + lualatex, but will only use it with latex, then only the + first step is needed. + + 1. Copy axodraw2.sty to a suitable directory for LaTeX style files. + + 2. Compile the axohelp program by a command line like + + gcc -o axohelp -Wall -O3 axohelp.c + + (The exact details of the command line depend on your operating + system and which compiler you have installed for the C + language.) + + 3. Move axohelp to a suitable directory for executables. + + 4. (Optional) Copy axodraw2-man.pdf to a suitable directory for + LaTex package documentation. + + 5. (Optional) Copy axohelp.1 to a suitable directory for man pages. + + +B. Using autoconf etc: +--------------------- + + You can also make axohelp using the GNU utilities autoconf, + automake and autoreconf (if these are installed). Doing this is + enormous overkill for a program like axohelp with a single source + file and with no need to make adjustments dependent on the + operating system etc. Even so, we provide the files necessary for + the use of autoconf and automake, since these are needed when the + axodraw2 package is incorporated into TeXLive (which has an + enormous automated build process). So here are the instructions + for building with autoconf and automake. For these, it is assumed + that the GNU utilities autoconf, automake and autoreconf are + installed: + + As in Fully Manual Installation, but replace step 2 by + + 2'. Run + + autoreconf --install + ./configure + make + make check + + The last line runs a test to ensure axohelp is running + correctly. + diff --git a/Build/source/utils/axodraw2/axodraw2-src/Makefile.am b/Build/source/utils/axodraw2/axodraw2-src/Makefile.am new file mode 100644 index 00000000000..58c87371daf --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/Makefile.am @@ -0,0 +1,16 @@ +## Makefile.am for axohelp +## +## Copyright (C) 2018 John Collins +## You may freely use, modify and/or distribute this file. +## + +AM_CFLAGS = $(WARNING_CFLAGS) + +bin_PROGRAMS = axohelp +axohelp_SOURCES = axohelp.c + +## Test +TESTS = axohelp.test +dist_check_SCRIPTS = $(TESTS) +CLEANFILES = test.ax2 + diff --git a/Build/source/utils/axodraw2/axodraw2-src/NEWS b/Build/source/utils/axodraw2/axodraw2-src/NEWS new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Build/source/utils/axodraw2/axodraw2-src/README b/Build/source/utils/axodraw2/axodraw2-src/README new file mode 100644 index 00000000000..e8fd3cf6a84 --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/README @@ -0,0 +1,41 @@ +Axodraw2 is a package that defines macros for drawing Feynman graphs +in LaTeX documents. + +It is an important update of the axodraw package, but since it is not +completely backwards compatible, we have given the style file a +changed name. + +Many new features have been added, with new types of line, and much +more flexibility in their properties: For details see the +documentation. + +In addition, it is now possible to use axodraw2 with pdflatex, as well +as with the latex-dvips method. However with pdflatex (and also lualatex +and xelatex), an external program, axohelp, is used to perform the +geometrical calculations needed for the pdf code inserted in the +output file. The processing involves a run of pdflatex, a run of +axohelp, and then another run of pdflatex. + +The files in the distribution are: + + README This file + axodraw2.sty The main style file + axohelp.c Source code of axohelp + axohelp.exe MS-Windows executable for axohelp + axodraw2-man.pdf Documentation + axodraw2-man.tex Source for documentation + example.tex Example latex file for use of axodraw2 + + +Authors, copyright, license +--------------------------- + +(C) 1994-2018 John Collins (jcc8 at psu dot edu) and Jos Vermaseren +(t68 at nikhef dot nl) + +Axodraw2 is free software: you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation, either version 3 of the License, or (at your +option) any later version. See the files axodraw2.sty or axohelp.c +for more details. + diff --git a/Build/source/utils/axodraw2/axodraw2-src/axodraw2-man.pdf b/Build/source/utils/axodraw2/axodraw2-src/axodraw2-man.pdf new file mode 100644 index 00000000000..4415408d491 Binary files /dev/null and b/Build/source/utils/axodraw2/axodraw2-src/axodraw2-man.pdf differ diff --git a/Build/source/utils/axodraw2/axodraw2-src/axodraw2-man.tex b/Build/source/utils/axodraw2/axodraw2-src/axodraw2-man.tex new file mode 100644 index 00000000000..346ac8cd97c --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/axodraw2-man.tex @@ -0,0 +1,5200 @@ +\documentclass[12pt]{article} +\usepackage{a4wide} +% Use fix-cm or lmodern to get scaleable cm fonts +\usepackage{longtable,fix-cm,url,units,hyperref} + +\usepackage{axodraw2} + +\def\num{$\langle$number$\rangle$} +\def\colorname{$\langle$colorname$\rangle$} + +% How to typeset filenames and program names: Use \file and \program +% to allow stylistic changes. +% Basic definition of \file would be \def\file#1{\texttt{#1}}, but +% that would not allow line breaks in long names. So define it by +% \DeclareUrlCommand from url package. (We can't use \url itself, +% because that provokes hyperref into making a hyperlink.) +\DeclareUrlCommand\file{\urlstyle{tt}} + +% Similarly specify how to typeset names of programs +\def\program#1{\texttt{#1}} + +% Backslash of the kind used in verbatim +\newcommand\BS{\symbol{`\\}} + +% Set the name of a TeX macro (and possibly its signature). +% In the argument, the initial backslash. Allow \{ and \} in the +% argument. E.g. \name{SetSpace\{\#\}}} +\newcommand\name[1]{% + \bgroup + \def\{{\symbol{`\{}}% + \def\}{\symbol{`\}}}% + \texttt{\BS#1}% + \egroup +} + + +\hyphenation{Jaxo-Draw} + + +\begin{document} + +%% ?? To get settings useful to test compatibility of axodraw2 with +%% color.sty, uncomment the following line: +%\SetColor{Blue} \color{green} \pagecolor[cmyk]{0,0.02,0.05,0} +%% Note green is useful, because it is defined in rgb color model +%% and the apparently equivalent Green, cmyk 1 0 1 0, looks quite +%% different on screen. So we can test the colors are entering graphics +%% correctly. + +%% ?? To test whether offsets work correctly, uncomment the following +%% line: +%\SetOffset(10,20) \SetScaledOffset(10,-20) + + +\setcounter{page}{0} +\thispagestyle{empty} +\hfill \begin{minipage}{3.0cm} +Nikhef 2015-025 +\end{minipage} +\vspace{20mm} + +\begin{center} +{\LARGE\bf\sc Manual for Axodraw Version 2} +\end{center} +\vspace{5mm} +\begin{center} +{\large John C. Collins$^{\, a}$ and J.A.M. Vermaseren$^{\, b}$} +\vspace{1cm}\\ +{\it $^a$ Department of Physics, Pennsylvania State University, \\ +\vspace{0.1cm} +University Park, Pennsylvania 16802, USA} \\ +\texttt{jcc8 at psu dot edu} \\ +\vspace{0.5cm} +{\it $^b$Nikhef Theory Group \\ +\vspace{0.1cm} +Science Park 105, 1098 XG Amsterdam, The Netherlands} \\ +\texttt{t68 at nikhef dot nl} \\ +\vspace{1.0cm} +(31 January 2018) +\end{center} +\vspace{5mm} + +\begin{abstract} +This is the reference manual for version two of the \LaTeX{} graphical +style file Axodraw. +Relative to version one, +it has a number of new drawing primitives and many extra options, and +it can now work with \program{pdflatex} to directly produce +output in PDF file format (but with the aid of an auxiliary program). +\end{abstract} + +\newpage + +\tableofcontents + +\newpage + + +%>>#[ Introduction : +%========================= +\section{Introduction} +\label{sec:intro} + +This is the documentation for axodraw2, a \LaTeX{} package for drawing +Feynman graphs (and other simple graphics). This is version 2 and a +substantial update of the original axodraw package \cite{axodraw1}, +which was released in 1994, and which has become rather popular in the +preparation of articles in elementary-particle physics. One of its +advantages is that its drawing primitives are included in the +\file{.tex} document, in a human-writable form. (This also allows +convenient production of axodraw figures by other software, e.g., +Jaxodraw \cite{jaxodraw1,jaxodraw2}.) This is in distinction to +methods that use a separate program to create graphics files that are +read in during the processing of the \LaTeX{} file. The objects +needed in Feynman graphs are often difficult to draw at high quality +with conventional computer graphics software. + +The original axodraw package has hardly been modified since its +introduction. The new version addresses several later needs. A +detailed list of the changes is given in Sec.\ \ref{sec:changes}. + +One change arises from the fact that \TeX{} (and hence \LaTeX{}) +itself does not possess sufficiently useful methods of drawing +complicated graphics, so that the drawing of the graphics is actually +done by inserting suitable code in the final output file (postscript +or pdf). The original axodraw worked only with the +\program{latex}-\program{dvips} processing chain to put the diagrams +in the final postscript file.\footnote{A pdf file can be produced from + the postscript file by a program like \program{ps2pdf}.} Now we +also have in common use the \program{pdflatex} (and \program{lualatex} +and \program{xelatex}) programs that directly produce pdf. The new +version of axodraw works with \program{pdflatex}, \program{lualatex}, +and \program{xelatex}, as well as with the +\program{latex}-\program{dvips} method. + +Furthermore, more kinds of graphical object and greater flexibility in +their properties have been found useful for Feynman graphs. The new +version provides a new kind of line, B\'ezier, and is able to make the +various kinds of line doubled. There is now a very flexible +configuration of arrows. Many of the changes correspond to +capabilities of JaxoDraw \cite{jaxodraw1,jaxodraw2}, which is a +graphical program for drawing Feynman graphs, and which is able to +write and to import diagrams in the axodraw format. + +Finally, substantial improvements have been made in the handling of +colors, with much better compatibility with modern packages used to +set colors in the normal \LaTeX{} part of a document. + +Since some of the changes (especially in the internal coding) +introduce incompatibilities (Sec.\ \ref{sec:compat}) with the original +version of axodraw, the new version of the style file is given a new +name \file{axodraw2.sty}. Then the many legacy documents (e.g., on +\url{http://arxiv.org}) that use the old axodraw will continue to use +the old version, and will therefore continue to be compilable without +any need for any possible changes in the source document, and with +unchanged output. Even so, as regards the coding of diagrams, there +are very few backwardly incompatible changes in axodraw2. + +The software is available under the GNU General Public License +\cite{GPL} version 3. + + + +%========================= +\section{Changes} +\label{sec:changes} + +\subsection{Changes relative to original, axodraw version 1} +\label{sec:changes.wrt.1} + +Relative to the original version of axodraw, the current version, +axodraw2, has the following main changes: +\begin{itemize} + +\item A bug that the line bounding an oval did not have a uniform + width has been corrected. + +\item A bug has been corrected that axodraw did not work with the + revtex4 document class when \verb+\maketitle+ and two-column mode + were used. + +\item Axodraw2 works both when pdf output is produced directly using + the programs \program{pdflatex}, \program{lualatex}, and + \program{xelatex}, as well as when a postscript file is produced by + the \program{latex}--\program{dvips} method. The old version only + worked when postscript output was produced. However, an auxiliary + program is needed when using \program{pdflatex}, \program{lualatex}, + or \program{xelatex}. See Sec.\ \ref{sec:doc.compile} for how this + is done. + +\item In the original axodraw, a diagram is coded inside a + \verb+picture+ environment of \LaTeX. Now, a specialized + \verb+axopicture+ environment is provided and preferred; it provides + better behavior, especially when diagrams are to be scaled. + +\item In association with this, there are some changes in how scaling + of diagrams is done. + +\item An inconsistency in length units between postscript and \TeX{} + has been corrected. All lengths are now specified in terms of + $\unit[1]{pt} = \unit[1/72.27]{in} = \unit[0.3515]{mm}$. Previously + the unit length for graphics was the one defined by postscript to be + $\unit[1]{bp} = \unit[1/72]{in} = \unit[0.3528]{mm}$. + +\item Substantial improvements have been made in the treatment of + color. When named colors are used, axodraw2's use of color is + generally compatible with that of the modern, \LaTeX-standard + \file{color.sty} package. It also provides all the color-setting + macros that were defined in v.\ 1 of axodraw, including those of the + \file{colordvi.sty} package used by v.\ 1. + +\item The various types of line can now be produced as double lines, + e.g., + \begin{axopicture}(35,5)(0,-2) + \SetWidth{1} + \Line[double,sep=2.5](0,2)(35,2) + \end{axopicture}. + This is commonly used, for example, for notating Wilson lines. + +\item Lines can be made from B\'ezier curves. + Currently this is only for simple lines, not photon, gluon, or + zigzag lines. + +\item Gluon, photon, and zigzag lines can be dashed. + +\item Macros are provided for drawing gluon circles, without the + endpoint effects given by the corresponding gluon arc macros. + +\item The positions and sizes of arrows can be adjusted. See Sec.\ + \ref{sec:arrows} for all the possibilities. One example is + \begin{axopicture}(30,6)(0,-2) + \SetWidth{1} + \Line[arrow,arrowpos=0.8](0,2)(30,2) + \end{axopicture} + +\item Macros for drawing polygons and filled polygons are provided. + +\item Macros for drawing rotated boxes are provided. + +\item A macro \verb+\ECirc+ is provided for drawing a circle with a + transparent interior. + +\item A macro \verb+\EBoxc+ is provided for drawing a box with a + specified center. + +\item A macro \verb+\AxoGrid+ is provided for drawing a grid. One + use is to provide a useful tool in designing pictures. + +\item Since there are now many more possibilities to specify the + properties of a line, optional arguments to the main line drawing + commands can be used to specify properties in a keyword style. + +\item A new macro named \verb+\Arc+ is introduced. With the aid of + optional arguments, this unifies the behavior of various arc-drawing + commands in the original axodraw. + +\item For consistency with the \verb+\Gluon+ macro, the + \verb+\GlueArc+ macro has been renamed to \verb+\GluonArc+, with the old + macro retained as a synonym. + +\item The behavior of arcs is changed to what we think is more natural + behavior when the specified opening angle is outside the natural range. + +\item What we call macros for drawing objects with postscript text are + now implemented within \LaTeX{} instead of relying on instructions + inserted in the postscript code. Thus all the normal \LaTeX{} + commands, including mathematics, can now be used in all text + objects, with proper scaling. The placement and scaling of text + objects are more consistent. + +\item Some new named colors are provided: + \LightYellow{LightYellow}, \LightRed{LightRed}, + \LightBlue{LightBlue}, \LightGray{LightGray}, + \VeryLightBlue{VeryLightBlue}. + (LightYellow, LightRed, LightBlue, LightGray, VeryLightBlue.) + +\item The macros originally specified as \verb+\B2Text+, + \verb+\G2Text+, and \verb+\C2Text+ are now named \verb+\BTwoText+, + \verb+\GTwoText+, and \verb+\CTwoText+. The intent of the original + code was to define macros with names \verb+\B2Text+, etc. However + in \TeX, under normal circumstances, macro names of more than one + character must only contain letters, unlike typical programming + languages that also allow digits. So the rules for \TeX{} macro + names mean that in defining, for example + \verb+\def\B2Text(#1,#2)#3#4{...}+, the original version of axodraw + actually defined a macro named named \verb+\B+, obligatorially + followed by \verb+2Text+. This caused a conflict if the user wished + to define a macro \verb+\B+. If it is desired to retain the old + behavior, then the following should be placed in the preamble of the + \file{.tex} file, then the axodraw2 package should be invoked in the + source document with the \texttt{v1compatible} option: + \begin{verbatim} + \usepackage[v1compatible]{axodraw2} + \end{verbatim} + +\end{itemize} + +\subsection{Changes relative to axodraw4j distributed with JaxoDraw} +\label{sec:changes.wrt.4j} + +The JaxoDraw program \cite{jaxodraw2} is distributed with a version of +axodraw called axodraw4j. At the time of writing (July 2016), this +was effectively a predecessor of axodraw2, but without the possibility +of working with \program{pdflatex}. (The suffix ``4j'' is intended to +mean ``for JaxoDraw''.) + +The changes in axodraw2 relative to the version of axodraw4j dated +2011/03/22 are the following subset of those listed in Sec.\ +\ref{sec:changes.wrt.1}: +\begin{itemize} +\item The ability to work with \program{pdflatex}, \program{lualatex}, + and \program{xelatex}. +\item The improvements in the handling of color and fonts. +\item The double and arrow options for B\'ezier lines. +\item The dash option for gluons and photons. +\item Color option for all lines. +\item Correction of inconsistency of length unit between \TeX{} and + postscript. +\item Better drawing of double gluons and photons. +\item Addition of the macros for making gluon circles, polygons, and rotated + boxes. +\item Addition of the macros + \verb+\ECirc+, \verb+\EBoxc+, and \verb+\AxoGrid+. +\item A series of ``LongArrow'' macros for drawing lines with the + arrow at the end. The same effect could only be achieved in + axodraw4j with arrowpos=1 option to the basic line-drawing + commands. +\item A series of macros like \verb+\DashDoubleLine+ to provide access + to the dashed and double properties in the style of the macros + provided in v.\ 1 of axodraw. This is in addition to the optional + arguments that allow the same effect in axodraw4j and in axodraw2. +\item The \texttt{v1compatible} and other options are provided for the + package. +\item Better treatment of the scaling of objects. +\item The treatment of ``postscript text objects'' within \LaTeX{} + itself. +\end{itemize} + + +%--------------- +\subsection{Backward compatibility, etc} +\label{sec:compat} + +The official user interface of axodraw2 is backward-compatible with +versions 1 and 4j, with the exception of the issue mentioned above +about the commands that had the signatures \verb+\B2Text+, +\verb+\G2Text+, and \verb+\C2Text+ in the old version. + +As to behavior, there are some minor changes in the objects that are +drawn, mostly concerning the exact dimensions of default arrows. The +scaling of the sizes of text objects is changed. The scoping of color +changes is substantially changed, but improved. + +The old axodraw only used the tools available in \LaTeX{} in the early +1990s. The new version needs a more modern installation. +Installations for which axodraw2 has been tested include TeXLive 2011 +and 2016. + +We have tested backwards compatibility by compiling the version 1 +manual with axodraw2; only a trivially modified preamble was needed. +It also worked to compile Collins's QCD book\cite{qcdbook}, +which has a large number +of JaxoDraw figures (processed automatically to pieces of axodraw code +imported into the document); only changes in the preamble were needed. + +In addition, axodraw2 provides an \verb+axopicture+ environment inside +of which axodraw2's graphics are coded and drawn. In the old axodraw, +\LaTeX's \verb+picture+ environment was used instead. In axodraw2, we +recommend only the use of \verb+axopicture+ environment, and that is +the only method we document. However, old diagrams coded with +\verb+picture+ environment continue to work. + +Some possible compatibility issues could arise because the old and new +versions load a different set of external packages. The old version +loaded the packages \file{epsf.sty} and \file{colordvi.sty}, and so +macros defined by these packages were available. The new version does +not load these now essentially-obsolete packages; so they should be +loaded from the document if they happen to be needed. But the new +version does define some macros for setting colors that correspond to +those in \file{colordvi.sty}; these are defined using facilities from +the standard \LaTeX{} \file{color.sty} package. Axodraw2 loads the +following \LaTeX{} packages: \program{keyval}, \program{ifthen}, +\program{graphicx}, \program{color}, \program{ifxetex}. It defines +its own set of 73 named colors which are the 68 dvips-defined names +(as coded in \file{colordvi.sty} and used in axodraw v.\ 1), plus 5 +more. + + + +%========================= +\section{Installation} +\label{sec:installation} + +%--------------- +\subsection{Installation from standard \TeX{} distribution} + +At the moment that this document was updated (January 2018), axodraw2 +was part of both the main \TeX{} distributions, TeXLive and MiKTeX. +The easiest way to install axodraw2 is therefore from the package +manager of your \TeX{} distribution. (There is one complication +concerning the \program{axohelp} program --- see below.) + +You can also obtain axodraw2 from CTAN at +\url{http://ctan.org/pkg/axodraw2}, and install it manually, following +the instructions in Sec.\ \ref{sec:manual.install} below. + +\paragraph{\program{axohelp} in TeXLive} +In TeXLive 2017, a binary executable for the \program{axohelp} was not +provided, even though the rest of the axodraw2 package was provided. +Thus you could use axodraw2 with the \program{latex} but not with +\program{pdflatex} unless you compiled and installed the program +\program{axohelp} yourself following the instructions below. This is +planned to be changed in TeXLive 2018, when \program{axohelp} should +be provided as part of the distribution when the package axodraw2 is +installed from the package manager. + +\paragraph{\program{axohelp} in MiKTeX} +The axodraw2 package including an executable \program{axohelp.exe} was +provided by MiKTeX when this was checked in January 2018. + + + +%--------------- +\subsection{Manual installation} +\label{sec:manual.install} + +%For a manual installation, the minimum that needs to be done is to put +For a manual installation, what needs to be done is to put the file +\file{axodraw2.sty} in a place where it will be found by the +\program{latex} program. If you wish to use axodraw2 with +\program{pdflatex}, you will also need to compile the +\program{axohelp} program --- see Sec.\ \ref{sec:axohelp} --- and put +it in an appropriate directory. Documentation can also be installed +if you want. + +%-- +\subsubsection{Style file \protect\file{axodraw2.sty}} + +If you merely want to try out axodraw2, just put the file +\file{axodraw2.sty} in the same directory as the \file{.tex} +file(s) you are working on. + +Otherwise, put it in an appropriate directory for a \LaTeX{} style +file, and, if necessary, run the texhash program to ensure that the +file is in the \TeX{} system's database of files. For example, +suppose that you have a TeXLive system installed for all users on a +Unix-like system (e.g., Linux or OS-X), and that TeXLive is installed, +as is usual, under the directory \file{/usr/local/texlive}. Then an +appropriate place for axodraw2 is in a directory +\file{/usr/local/texlive/texmf-local/tex/latex/axodraw2}. You will +need to run the \program{texhash} program in this last case. For such +a system-wide installation, you may have to do these +operations as an administrative user (e.g., root), possibly +supplemented by running the relevant commands with the \program{sudo} +program. + +But note that if you later install the axodraw2 package from the +package manager of you \TeX{} distribution, it's a good idea to delete +the files you installed manually. Otherwise when you use axodraw2 in +a document, then the wrong version of \file{axodraw2.sty} may get +used. This is a particularly important issue after possible future +updates to axodraw2 get installed by the package manager. + +%-- +\subsubsection{Helper program \program{axohelp}} +\label{sec:axohelp} + +If you wish to use axodraw2 with \program{pdflatex}, \program{lualatex}, +or \program{xelatex}., then you need to install the \program{axohelp} +program. + +On a Unix-like system (e.g., linux or OS-X), you first need to compile +the program by a C compiler. An appropriate shell command to do this +is +\begin{verbatim} + cc -o axohelp -O3 axohelp.c -lm +\end{verbatim} +(Note that this is a C compiler, \emph{not} a C++ compiler.) Most linux +systems have the program \program{cc} already installed. This also applies to +OS-X at versions below 10.7. But on OS-X version 10.7 and higher, you +will need to install a compiler, which can be done by installing XCode +and the associated command-line utilities. If you have the GNU +compilers installed, you might need to use the command \program{gcc} +instead of \program{cc}. + +For Microsoft Windows, if you do not have a C compiler available, you +can use the Windows binary \file{axohelp.exe} we have provided. It +was compiled on Windows 10, and should work with at least that version +of Windows. + +In any case once you have the executable (named \program{axohelp} on +unix-like systems, or \program{axohelp.exe} on a Microsoft system), put +it in a directory where it will be found when you run programs from +the command line. + + +%-- +\subsubsection{Testing} + +To test whether the installation works, you need a simple test file. +An example is given in Sec.\ \ref{sec:example}, and is provided +with the axodraw2 distribution as \file{example.tex}. + +At a command line with the current directory set to the directory +containing the file \file{example.tex}, run the following commands: +\begin{verbatim} + latex example + dvips example -o +\end{verbatim} +If all goes well, you will obtain a file \file{example.ps}. When +you view it, it should contain the diagram shown in Sec.\ +\ref{sec:example}. You can make a pdf file instead by the commands +\begin{verbatim} + latex example + dvipdf example +\end{verbatim} +A more extensive test can be made by compiling the manual. + +To make a pdf file directly, with \program{pdflatex}, you use the commands +\begin{verbatim} + pdflatex example + axohelp example + pdflatex example +\end{verbatim} +The \program{axohelp} run takes as input a file \file{example.ax1} +produced by the first run of \program{pdflatex} and makes an output +file \file{example.ax2}. The second run of \program{pdflatex} reads +the \file{example.ax2} file and uses the result to place the axodraw +objects in the \file{example.pdf} file. + + +%-- +\subsubsection{Documentation} + +Put the documentation in a place where you can find it. If you +installed the \file{axodraw2.sty} file in +\file{/usr/local/texlive/texmf-local/tex/latex/axodraw2}, the +standard place for the documentation would be +\file{usr/local/texlive/texmf-local/doc/latex/axodraw2}. + + +%========================= +\section{Use} +\label{sec:use} + +In this section we show how to use axodraw2, illustrated with an +example. + +\subsection{Basic example} +\label{sec:example} + +The principles of using axodraw2 are illustrated by the following +complete \LaTeX{} document: +\begin{verbatim} + \documentclass{article} + \usepackage{axodraw2} + \begin{document} + Example of Feynman graph using axodraw2 macros: + \begin{center} + \begin{axopicture}(200,110) + \SetColor{Red} + \Arc[arrow](100,50)(40,0,180) + \Text(100,100){$\alpha P_1 + \beta P_2 + k_\perp$} + \SetColor{Black} + \Arc[arrow](100,50)(40,180,360) + \Gluon(0,50)(60,50){5}{4} + \Vertex(60,50){2} + \Gluon(140,50)(200,50){5}{4} + \Vertex(140,50){2} + \end{axopicture} + \end{center} + \end{document} +\end{verbatim} +After compilation according to the instructions in Sec.\ +\ref{sec:doc.compile}, viewing the resulting file should show the +following Feynman graph: +\begin{center} + \begin{axopicture}(200,110) + \SetColor{Red} + \Arc[arrow](100,50)(40,0,180) + \Text(100,100){$\alpha P_1 + \beta P_2 + k_\perp$} + \SetColor{Black} + \Arc[arrow](100,50)(40,180,360) + \Gluon(0,50)(60,50){5}{4} + \Vertex(60,50){2} + \Gluon(140,50)(200,50){5}{4} + \Vertex(140,50){2} + \end{axopicture} +\end{center} +See Sec.\ \ref{sec:examples} for more examples + +\emph{Important note about visibility of graphics objects:} If you +view this document on a computer monitor, Feynman graphs drawn with +narrow lines may not fully match what was intended. This is because +of the way graphics viewers interact with the limited resolution of +computer monitors. To see the example graphs properly, you may need to +use a large enough magnification, or to use an actual print out. + +\emph{Note about sending a document to others}: If for example, you +submit an article to arXiv.org, it is likely that their automated +system for processing the file will not run \program{axohelp}. So together with +the tex file, you one should also submit the \file{.ax2} file. + + +%----------------------- +\subsection{Document preparation} +\label{sec:doc.prep} + +The general rules for preparation of a document are: +\begin{itemize} + +\item Insert the following + \begin{verbatim} + \usepackage{axodraw2} + \end{verbatim} + in the preamble of the \file{.tex} file. + There are some options and commands that can be used to change axodraw2's + behavior from its default. See Secs.\ \ref{sec:invoke} and + \ref{sec:settings} for details. + +\item Where you want to insert axodraw2 objects, put them inside an + axopicture environment, specified in Sec.\ \ref{sec:env}, + \begin{verbatim} + \begin{axopicture}(x,y) + ... + \end{axopicture} + \end{verbatim} + Here \texttt{x} and \texttt{y} denote the desired size of the box + that is to be inserted in the document and that contains the graph. + An optional offset can be specified (as with \LaTeX's + \texttt{picture} environment). By default the units are + $\unit[1]{pt} = \unit[1/72.27]{in} = \unit[0.3515]{mm}$. + +\end{itemize} +Full details of all these components are in Sec.\ +\ref{sec:reference}. + +The design of graphs can be done manually, and this can be greatly +facilitated with the new \verb:\AxoGrid: command. A convenient way of +constructing diagrams is to use the graphical program +JaxoDraw~\cite{jaxodraw1,jaxodraw2}, which is what most people +do. This program can export axodraw code. It also uses axodraw as one +way of making postscript and pdf files. The original version of +axodraw was used by JaxoDraw until version 1.3. In version 2 of +JaxoDraw, a specially adapted version of \file{axodraw.sty} is used, +named \file{axodraw4j.sty}. The output from version 2 of +JaxoDraw is compatible with axodraw2. + + +%----------------------- +\subsection{Document compilation} +\label{sec:doc.compile} + +\subsubsection{To make a postscript file} +\label{sec:doc.compile.ps} + +When a postscript file is needed, you just make the postscript file as +usual. E.g., when the source file is \file{example.tex}, you run +the following commands: +\begin{verbatim} + latex example + dvips example -o +\end{verbatim} +which results in a postscript file \file{example.ps}. Of course, if +there are cross references to be resolved, you may need multiple runs +of \program{latex}, as usual. When needed, use of \program{bibtex}, +\program{makeindex}, and other similar programs is also as usual. +Instead of \program{latex}, one may also use the \program{dvilualatex} +program, which behaves like \program{latex} except for providing some +extra capabilities that are sometimes useful. + +Internally, axodraw uses \TeX's \verb+\special+ mechanism to put +specifications of postscript code into the \file{.dvi} file, and +\program{dvips} puts this code in the postscript file. This postscript +code performs the geometrical calculations needed to specific +axodraw's objects, and then draws them when the file is displayed or +printed. + +\emph{Important note about configuration of \program{dvips}:} You may +possibly find that when you run \program{dvips} that it spends a lot of +time running \program{mktexpk} to make bitmapped fonts, or that the +postscript +file contains bitmapped type-3 fonts. This is \emph{not} the default +situation in typical current installations. But if you do find this +situation, which is highly undesirable in most circumstances, you +should arrange for \program{dvips} to use type 1 fonts. This can be +done either by appropriately configuring your \TeX{} installation, for +which you will have to locate instructions, or by giving +\program{dvips} its \texttt{-V0} option: +\begin{verbatim} + dvips -V0 example -o +\end{verbatim} +Once you do this, you should see, from \program{dvips}'s output, +symptoms of its use of type 1 fonts. \emph{Let us re-emphasize that + you do not have to be concerned with this issue, under + normal circumstances. But since things were different within our + memory, we give some suggestions as to what to do in what are + currently abnormal circumstances.} + +\subsubsection{To make a pdf file via \program{latex}} + +There are multiple methods of making pdf files for a latex document; +we will not give all the advantages and disadvantages here. + +One way is to convert the postscript file, e.g., by +\begin{verbatim} + ps2pdf example.ps +\end{verbatim} +You can also produce a pdf file from the dvi file produced by +\program{latex} by the \program{dvipdf} command, e.g,. +\begin{verbatim} + dvipdf example +\end{verbatim} +\emph{Important note:} The program here is \program{dvipdf} and +\emph{not} the similarly named \program{dvipdfm} or \program{dvipdfmx}, +which are incompatible with axodraw. The reason why \program{dvipdf} +works is that it internally makes a postscript file and then converts +it to pdf. + + +\subsubsection{To make a pdf file by \program{pdflatex}, + \program{lualatex}, or \program{xelatex}} + +A common and standard way to make a pdf file is the \program{pdflatex} +program, which makes pdf directly. It has certain advantages, among +which are the possibility of importing a wide variety of graphics file +formats. (In contrast, the \program{latex} program only handles +encapsulated postscript.) + +However, to use axodraw2 with \program{pdflatex}, you need an +auxiliary program, \program{axohelp}, as in +\begin{verbatim} + pdflatex example + axohelp example + pdflatex example +\end{verbatim} +What happens is that during a run of \program{pdflatex}, axodraw2 +writes a file \file{example.ax1} containing specifications of its +graphical objects. Then running \program{axohelp} reads the +\file{example.ax1} file, computes the necessary pdf code to draw the +objects, and writes the results to \file{example.ax2}. The next run +of \program{pdflatex} reads \file{example.ax2} and uses it to put the +appropriate code in the output pdf file. + +The reason for the extra program is that axodraw needs many +geometrical calculations to place and draw its graphical objects. +\LaTeX{} itself does not provide anything convenient and efficient for +these calculations, while the PDF language does not offer sufficient +computational facilities, unlike the postscript language. + +If you modify a document, and recompile with \program{pdflatex}, you +will only need to rerun \program{axohelp} if the modifications +involve axodraw objects. Axodraw2 will output an appropriate message +when a rerun of \program{axohelp} is needed. + +If you wish to use \program{lualatex} or \program{xelatex}, instead of +\program{pdflatex}, then you can simply run the program +\program{lualatex} or \program{xelatex} instead of +\program{pdflatex}. These are equally compatible with axodraw2. + + + + +%----------------------- +\subsection{Automation of document compilation} +\label{sec:doc.auto.compile} + +It can be useful to automate the multiple steps for compiling a +\LaTeX{} document. One of us has provided a program \program{latexmk} +to do this --- see \url{http://www.ctan.org/pkg/latexmk/}. Here we +show how to configure +\program{latexmk} to run \program{axohelp} as needed when a document is +compiled via the \program{pdflatex} route. + +All you need to do is to put the following lines in one of +\program{latexmk}'s initialization files (as specified in its +documentation): +\begin{verbatim} + add_cus_dep( "ax1", "ax2", 0, "axohelp" ); + sub axohelp { return system "axohelp \"$_[0]\""; } + $clean_ext .= " %R.ax1 %R.ax2"; +\end{verbatim} +The first two lines specify that \program{latexmk} is to make +\file{.ax2} files from \file{.ax1} files by the \program{axohelp} +program, whenever necessary. (After that \program{latexmk} +automatically also does any further runs of \program{pdflatex} that are +necessary.) The last line is optional; it adds \file{.ax1} and +\file{.ax2} files to the list of files that will be deleted when +\program{latexmk} is requested to do a clean up of generated, +recreatable files. + +\program{Latexmk} is installed by default by the currently common +distributions of \TeX{} software, i.e., TeXLive and MiKTeX. It has as +an additional requirement a properly installed Perl system. For the +TeXLive distribution, this requirement is always met. + +With the above configuration, you need no change in how you invoke +\program{latexmk} to compile a document, when it uses axodraw2. For +producing postscript, you can simply use +\begin{verbatim} + latexmk -ps example +\end{verbatim} +and for producing pdf via \program{pdflatex} you can use +\begin{verbatim} + latexmk -pdf example +\end{verbatim} +Then \program{latexmk} takes care of whatever runs are needed of all +the relevant programs, now including \program{axohelp}, as well +whatever, possibly multiple, runs are needed for the usual programs +(\program{latex}, \program{pdflatex}, \program{bibtex}, etc). + + + +%>>#] Introduction : +%>>#[ The Commands : + +\section{Reference} +\label{sec:reference} + +\subsection{Package invocation} +\label{sec:invoke} + +To use the axodraw2 package in a \LaTeX{} document, you simply put +\begin{verbatim} + \usepackage{axodraw2} +\end{verbatim} +in the preamble of the document, as normal. + +The \verb+\usepackage+ command takes optional arguments +(comma-separated list of keywords) in square brackets, e.g., +\begin{verbatim} + \usepackage[v1compatible]{axodraw2} +\end{verbatim} +The options supported by axodraw2 are +\begin{itemize} +\item \texttt{v1compatible}: This makes axodraw2's operation more + compatible with v.\ 1. It allows the use of \verb+\B2Text+, + \verb+\G2Text+, and \verb+\C2Text+ as synonyms for the macros named + \verb+\BTwoText+, \verb+\GTwoText+, and \verb+\CTwoText+. + (You may wish also to use the \texttt{canvasScaleisUnitLength} + option, so that the scaling of the units in the \texttt{axopicture} + environment is the same as it was for the \texttt{picture} + environment used in v.\ 1.) +\item \texttt{canvasScaleIs1pt}: Unit for canvas dimensions + in an \texttt{axopicture} environment is fixed at $\unit[1]{pt}$, +\item \texttt{canvasScaleIsObjectScale}: Unit for canvas dimensions + in an \texttt{axopicture} environment are the same as those set for + axodraw objects (by the \verb+\SetScale+ macro). This is the + default setting, so the option need not be given. +\item \texttt{canvasScaleIsUnitLength}: Unit for canvas dimensions + in an \texttt{axopicture} environment is the current value of + \verb+\unitlength+, exactly as for \LaTeX{}'s \texttt{picture} + environment. (Thus, this corresponds to the behavior of the + original axodraw v.\ 1, which simply used the \texttt{picture} + environment.) +\item \texttt{PStextScalesIndependently}: Axodraw's text objects are + scaled by the factor set by the \verb+\SetTextScale+ command. +\item \texttt{PStextScalesLikeGraphics}: Axodraw's text objects are + scaled by the factor set by same factor for its graphics objects, + i.e., the scale set by the \verb+\SetScale+ command. +\end{itemize} +(N.B. Default scaling factors are initialized to unity.) + +\emph{Note:} If you use \program{axodraw}'s commands for placing text +and you use the standard \TeX{} Computer Modern fonts for the +document, then when you compile your document you may get a lot of +warning messages. These are about fonts not being available in +certain sizes. To fix this problem invoke the package +\program{fix-cm} in your document's preamble: +\begin{verbatim} + \usepackage{fix-cm} +\end{verbatim} +It is also possible to use the package \program{lmodern} for the same +purpose. + + +\subsection{Environment(s)} +\label{sec:env} + +The graphical and other objects made by axodraw2 are placed in an +\texttt{axopicture} environment, which is invoked either as +\begin{verbatim} + \begin{axopicture}(x,y) + ... + \end{axopicture} +\end{verbatim} +or +\begin{verbatim} + \begin{axopicture}(x,y)(xoffset,yoffset) + ... + \end{axopicture} +\end{verbatim} +Here, the \dots{} denote sequences of axodraw2 commands, as documented +in later sections, for drawing lines, etc. The \texttt{axopicture} +environment is just like standard \LaTeX's \texttt{picture} +environment,\footnote{In fact, the \texttt{axopicture} is changed from + the \texttt{picture} environment only by making some + axodraw-specific settings. So the \texttt{picture} environment that + was used in v.\ 1 may also be used with axodraw2; it merely has a + lack of automation on the setting of the canvas scale relative to + the object scale, and, in the future, other possible + initializations.}, except for doing some axodraw-specific +initialization. It inserts a region of size \texttt{x} by \texttt{y} +(with default units of $\unit[1]{pt} = \unit[1/72.27]{in} = +\unit[0.3515]{mm}$). Here \texttt{x} and \texttt{y} are set to the +numerical values you need. + +The positioning of axodraw objects is specified by giving $x$ and $y$ +coordinates, e.g., for the ends of lines. The origin of these +coordinates is, by default, at the lower left corner of the box that +\texttt{axopicture} inserts in your document. But sometimes, +particularly after editing a graph, you will find this is not +suitable. To avoid changing a lot of coordinate values to get correct +placement, you can specify an offset by the optional arguments +\texttt{(xoffset,yoffset)} to the \texttt{axopicture} environment, +exactly as for \LaTeX's \texttt{picture} environment. The offset +\texttt{(xoffset,yoffset)} denotes the position of the bottom left +corner of the box inserted in your document relative to the coordinate +system used for specifying object positions. Thus +\begin{verbatim} + \begin{axopicture}(20,20) + \Line(0,0)(20,20) + \end{axopicture} +\end{verbatim} +and +\begin{verbatim} + \begin{axopicture}(20,20)(-10,20) + \Line(-10,20)(10,40) + \end{axopicture} +\end{verbatim} +are exactly equivalent. + +Within an \texttt{axopicture} environment, all the commands that can +be used inside an ordinary \texttt{picture} environment can also be +used. + +We can think of the \texttt{axopicture} environment as defining a +drawing canvas for axodraw's graphical and text objects. +There are possibilities for manipulating (separately) the units used +to specify the canvas and the objects. These can be useful for +scaling a diagram or parts of it from an originally chosen design. +See Secs.\ \ref{sec:units} and \ref{sec:settings} for details. + + +\subsection{Graphics drawing commands} +\label{sec:commands} + +In this section we present commands for drawing graphical objects, +split up by category. Later, we will give: details of options to the +line-drawing commands, explanations of some details about specifying +gluons and about specifying arrow parameters, and then commands for +textual objects and for adjusting settings (e.g., separation in a +double line). Mostly, we present the commands by means of examples. +Note that many of the arguments of the commands, notably arguments for +$(x,y)$ coordinate values are delimited by parentheses and commas +instead of the brace delimiters typically used in \LaTeX. + +It should also be noted that some commands provide different ways of +performing the same task. For instance +\begin{verbatim} + \BCirc(50,50){30} +\end{verbatim} +can also be represented by +\begin{verbatim} + \CCirc(50,50){30}{Black}{White} +\end{verbatim} +when the current color is black. The presence of the BCirc command has been +maintained both for backward compatibility, and because it represents +a convenient short hand for a common situation. This also holds for similar +commands involving boxes and triangles. For the new Polygon, FilledPolygon, +RotatedBox and FilledRotatedBox commands we have selected a more minimal +scheme. + +Similar remarks apply to the new feature of options for line drawing +commands. Originally in v.\ 1, a line with an arrow would be coded as +\begin{verbatim} + \ArrowLine(30,65)(60,25) +\end{verbatim} +It is now also possible to code using the general \verb+\Line+ macro, +but with a keyword optional argument: +\begin{verbatim} + \Line[arrow](30,65)(60,25) +\end{verbatim} +One advantage of the option method is a variety of other properties of +an individual line may also be coded, as in +\begin{verbatim} + \Line[arrow,arrowpos=1](30,65)(60,25) +\end{verbatim} +without the need to use separate global setting for the property, by +the commands listed in Sec.\ \ref{sec:settings}, or by having a +corresponding compulsory argument to the command. +Which way to do things is a matter of user taste in particular +situations. + +%--#[ AxoGrid : + +\subsubsection{Grid drawing} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,140)(-10,0)} +\AxoGrid(0,0)(10,10)(9,14){LightGray}{0.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{axogrid} +\verb:\AxoGrid(0,0)(10,10)(9,14){LightGray}{0.5}: \hfill \\ +This command is used in our examples to allow the reader to compare the +coordinates in the commands with those of the actual picture. The arguments +are first the position of the left bottom corner, then two values that tell +the size of the divisions in the $x$ and $y$ direction. Next there are two +values that specify how many divisions there should be in the $x$ and $y$ +direction. Then the color of the lines is given and finally the width of +the lines. Note that if there are $(n_x,n_y)$ divisions there will be +$n_x+1$ vertical lines and $n_y+1$ horizontal lines. The temporary use of +this command can also be convenient when designing pictures manually. +\end{minipage}\vspace{4mm} + +%--#] AxoGrid : +%--#[ Line : + +\subsubsection{Ordinary straight lines} +\label{sec:Line} + + +All of the commands in this section can be given optional keyword +arguments, which are defined in Secs.\ \ref{sec:options} and +\ref{sec:arrows}. These can be used to specify the type of line +(dashed, double), to specify the use of an arrow, and its parameters, and +to specify some of the line's parameters. + +The basic line drawing command is \verb+\Line+:\\[3mm] +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\Line(10,10)(80,30) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{line} +\verb:\Line(10,10)(80,30): \hfill \\ +In this command we have two coordinates. The (solid) line goes from the +first to the second. +\end{minipage}\vspace{4mm} + +Examples of the use of optional arguments are:\\[3mm] +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,80)(-10,0)} +\AxoGrid(0,0)(10,10)(9,8){LightGray}{0.5} +\Line[color=Magenta,arrow](10,70)(80,70) +\Line[dash](10,50)(80,50) +\Line[arrow,double](10,30)(80,30) +\Line[arrow,dash,double](10,10)(80,10) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{line.options} +\begin{verbatim} +\Line[color=Magenta,arrow](10,70)(80,70) +\Line[dash](10,50)(80,50) +\Line[arrow,double](10,30)(80,30) +\Line[arrow,dash,double](10,10)(80,10) +\end{verbatim} +\end{minipage} +\\[4mm] +Details of the specification of arrows, together with alternative +commands for making lines with arrows are given in Sec.\ +\ref{sec:arrows}. + +\vspace{4mm} +%--#] Line : +%--#[ DoubleLine : + +Alternative commands for dashed and/or double lines are:\\[3mm] +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DoubleLine(10,25)(80,25){1} +\DoubleLine[color=Red](10,15)(80,15){2} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doubleline} +\verb:\DoubleLine(10,25)(80,25){1}: \hfill \\ +\verb:\DoubleLine[color=Red](10,15)(80,15){2}: \hfill \\ +In this command we have two coordinates as in the Line command but two +lines are drawn. The extra parameter is the separation between the two +lines. Note however that everything between the lines is blanked out. +\end{minipage}\vspace{4mm} + +%--#] DoubleLine : +%--#[ DashLine : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DashLine(10,25)(80,25){2} +\DashLine(10,15)(80,15){6} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashline} +\verb:\DashLine(10,25)(80,25){2}: \hfill \\ +\verb:\DashLine(10,15)(80,15){6}: \hfill \\ +In this command we have two coordinates. The dashed line goes from the +first to the second. The extra parameter is the size of the dashes. The +space between the dashes is transparent. +\end{minipage}\vspace{4mm} + +%--#] DashLine : +%--#[ DashDoubleLine : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DashDoubleLine(10,25)(80,25){1.5}{2} +\DashDoubleLine(10,15)(80,15){1.5}{6} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoubleline} +\verb:\DashDoubleLine(10,25)(80,25){1.5}{2}: \hfill \\ +\verb:\DashDoubleLine(10,15)(80,15){1.5}{6}: \hfill \\ +In this command we have two coordinates. The dashed lines go from the +first to the second. The first extra parameter is the separation between +the lines and the second extra parameter is the size of the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashDoubleLine : +%--#[ Arc : + +\subsubsection{Arcs} +\label{sec:Arc} + +The commands in this section draw circular arcs in types corresponding +to the straight lines of Sec.\ \ref{sec:Line}. In v.\ 1, some of +these commands had names containing ``Arc'' and some ``CArc''. Some +kinds had variant names containing ``Arcn'', whose the direction of +drawing was clockwise instead of anticlockwise. In v.\ 2, we have +tried to make the situation more consistent. First, all the old names +have been retained, for backward compatibility. Second, a general +purpose command \verb+\Arc+ has been introduced; in a single command, +with the aid of optional arguments, it covers all the variants. See +Secs.\ \ref{sec:options} and \ref{sec:arrows} for full details. The +options can be used to specify the type of line (dashed, double, +clockwise or anticlockwise), to specify the use of arrow, and its +parameters, and to specify some of the line's parameters. The other +commands in this section can also be given optional keyword arguments. + +The basic \verb+\Arc+ command has the form\\[3mm] +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\Arc(45,0)(40,20,160) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{carc} +\verb:\Arc(45,0)(40,20,160):\hfill \\ +In this command we have one coordinate: the center of the circle. Then +follow the radius of the circle, the start angle and the finishing angle. +The arc will be drawn counterclockwise. +\end{minipage}\vspace{4mm} + +An example of the use of the optional parameters is:\\[3mm] +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,80)(-10,0)} +\AxoGrid(0,0)(10,10)(8,8){LightGray}{0.5} +\Arc[arrow,dash,clockwise](40,40)(30,20,160) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{carc.opt} +\verb:\Arc[arrow,dash,clockwise](40,40)(30,20,160): +\end{minipage}\vspace{4mm} + +Alternative commands for dashed and/or double arcs are as follows. +\vspace*{4mm} + +%--#] Arc : +%--#[ DoubleArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DoubleArc[color=Green](45,0)(40,20,160){2} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublearc} +\verb:\DoubleArc[color=Green](45,0)(40,20,160){2}:\hfill \\ +In this command we have one coordinate: the center of the circle. Then +follow the radius of the circle, the start angle and the finishing angle. +The arc will be drawn counterclockwise. The last argument is the line +separation of the double line. +\end{minipage}\vspace{4mm} + +%--#] DoubleArc : +%--#[ DashArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DashArc(45,0)(40,20,160){4} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dasharc} +\verb:\DashArc(45,0)(40,20,160){4}:\hfill \\ +In this command we have one coordinate: the center of the circle. Then +follow the radius of the circle, the start angle and the finishing angle. +The arc will be drawn counterclockwise. The last argument is the size of +the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashArc : +%--#[ DashDoubleArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DashDoubleArc(45,0)(40,20,160){2}{4} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublearc} +\verb:\DashDoubleArc(45,0)(40,20,160){2}{4}:\hfill \\ +In this command we have one coordinate: the center of the circle. Then +follow the radius of the circle, the start angle and the finishing angle. +The arc will be drawn counterclockwise. The last two arguments are the line +separation of the double line and the size of the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashDoubleArc : +%--#[ Bezier : + +\subsubsection{B\'ezier lines} +\label{sec:Bezier} + +The commands in this section draw B\'ezier curves, specified by 4 +points. The variants are just as for straight lines, Sec.\ +\ref{sec:Line}. + +All of the commands in this section can be given optional keyword +arguments, which are defined in Sec.\ \ref{sec:options}. These can be +used to specify the type of line (dashed, double), to specify the use +of an arrow, and its parameters, and to specify some of the line's +parameters. + +The basic general purpose command is \verb+\Bezier+:\\[3mm] +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\Bezier(10,10)(75,30)(65,40)(20,50) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{bezier} +\verb:\Bezier(10,10)(75,30)(65,40)(20,50): \hfill \\ +Draws a cubic B\'ezier curve based on the four given points. The first +point is the starting point and the fourth the finishing point. The +second and third points are the two control points. +\end{minipage}\vspace{4mm} + +An example of the use of optional arguments is +\\[3mm] +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\Bezier[color=Red,arrow,double,arrowpos=1](10,10)% + (75,30)(65,40)(20,50) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{bezier.opt} +\begin{verbatim} + \Bezier[color=Red,arrow,double,arrowpos=1](10,10)% + (75,30)(65,40)(20,50) +\end{verbatim} +\end{minipage}\vspace{4mm} + +%--#] Bezier : +%--#[ DoubleBezier : +Alternative ways of making dashed and/or double B\'ezier curves +are:\\[3mm] +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\DoubleBezier(10,10)(75,30)(65,40)(20,50){1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublebezier} +\verb:\DoubleBezier(10,10)(75,30)(65,40)(20,50){1.5}: \hfill \\ +Draws a cubic B\'ezier curve based on the four given points. +The first four arguments are the same as for \verb+\Bezier+. +The final argument is the line separation. +\end{minipage}\vspace{4mm} + +%--#] DoubleBezier : +%--#[ DashBezier : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\DashBezier(10,10)(75,30)(65,40)(20,50){4} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashbezier} +\verb:\DashBezier(10,10)(75,30)(65,40)(20,50){4}: \hfill \\ +Draws a cubic B\'ezier curve based on the four given points. +The first four arguments are the same as for \verb+\Bezier+. +The final argument is the size of the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashBezier : +%--#[ DashDoubleBezier : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\DashDoubleBezier(10,10)(75,30)(65,40)(20,50){1.5}{4} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublebezier} +\verb:\DashDoubleBezier(10,10)(75,30)(65,40)(20,50){1.5}{4}: +Draws a cubic B\'ezier curve based on the four given points. +The first four arguments are the same as for \verb+\Bezier+. +The final two arguments are the line separation and the size of the +dashes. +\end{minipage}\vspace{4mm} + +%--#] DashDoubleBezier : +%--#[ Curve : + +\subsubsection{Curves} + +The commands in this section draw curves through an arbitrary sequence +of points. They only exist in variants for continuous and dashed +lines. No optional arguments are allowed. +\vspace{4mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\Curve{(5,55)(10,32.5)(15,23)(20,18)(25,14.65)(30,12.3)(40,9.5)(55,7)} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{curve} +\verb:\Curve{(5,55)(10,32.5)(15,23)(20,18): \hfill \\ +\verb: (25,14.65)(30,12.3)(40,9.5)(55,7)}: \hfill \\ +Draws a smooth curve through the given points. The $x$ coordinates of the +points should be in ascending order. The curve is obtained by constructing +quadratic fits to each triplet of adjacent points and then in each interval +between two points interpolating between the two relevant parabolas. +\end{minipage}\vspace{4mm} + +%--#] Curve : +%--#[ DashCurve : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\DashCurve{(5,55)(10,32.5)(15,23)(20,18)(25,14.65)(30,12.3)(40,9.5)(55,7)}{4} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashcurve} +\verb:\DashCurve{(5,55)(10,32.5)(15,23)(20,18): \hfill \\ +\verb: (25,14.65)(30,12.3)(40,9.5)(55,7)}{4}: \hfill \\ +Draws a smooth dashed curve through the given points. The $x$ coordinates of +the points should be in ascending order. The last argument is the size of +the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashCurve : +%--#[ Gluon : + +\subsubsection{Gluon lines} +\label{sec:Gluon} + +The basic gluon drawing commands are \verb+\Gluon+, \verb+\GluonArc+, +\verb+\GluonCirc+. There are also variants for dashed and double +gluons. But arrows aren't possible. + +See Sec.\ \ref{sec:gluon.remarks} for additional information on the +shape of gluon lines. + +All of the commands in this section can be given optional keyword +arguments, which are defined in Sec.\ \ref{sec:options}. These can be +used to specify the type of line (dashed, double), and to specify some +of the line's parameters. +\vspace{3mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\Gluon(10,20)(80,20){5}{7} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gluon} +\verb:\Gluon(10,20)(80,20){5}{7}: \hfill \\ +In this command we have coordinates for the start and end of the line, +the amplitude of the windings and the number of windings. A negative +value for the amplitude reverses the orientation of the windings --- +see Sec.\ \ref{sec:gluon.remarks} for details. +\end{minipage} +\\[4mm] +Optional arguments can be used, e.g., \hfill \\[3mm] +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\Gluon[color=Blue,dash,dashsize=1,double](10,20)(80,20){4}{7} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gluon.opt} +\verb:\Gluon[color=Blue,dash,double](10,20)(80,20){4}{7}: +\end{minipage} + + +\vspace{4mm} + +%--#] Gluon : +%--#[ DoubleGluon : +\noindent +Examples of the other commands for various types of gluon line are as +follows. They can all take optional arguments. +\\[3mm] +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DoubleGluon(10,20)(80,20){5}{7}{1.3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublegluon} +\verb:\DoubleGluon(10,20)(80,20){5}{7}{1.3}:\hfill \\ +The first 6 arguments are as in the \verb+\Gluon+ command. The +extra argument is the line separation. +\end{minipage}\vspace{4mm} + +%--#] DoubleGluon : +%--#[ DashGluon : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DashGluon(10,20)(80,20){5}{7}{1} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashgluon} +\verb:\DashGluon(10,20)(80,20){5}{7}{1}:\hfill \\ +The first 6 arguments are as in the \verb+Gluon+ command. The +extra argument is the size of the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashGluon : +%--#[ DashDoubleGluon : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DashDoubleGluon(10,20)(80,20){5}{7}{1.3}{1} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublegluon} +\verb:\DashDoubleGluon(10,20)(80,20){5}{7}{1.3}{1}:\hfill \\ +The first 7 arguments are as in the \verb+DoubleGluon+ +command. +The last two arguments are the line +separation of the double line and the size of the dashes. +\end{minipage} +\vspace{8mm} + +%--#] DashDoubleGluon : +%--#[ GluonArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\GluonArc(45,0)(40,20,160){5}{8} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gluonarc} +\verb:\GluonArc(45,0)(40,20,160){5}{8}:\hfill \\ +In this command we have one coordinate: the center of the circle. Then +follow the radius of the circle, the start angle and the finishing angle. +The arc will be drawn counterclockwise. The final two parameters are the +amplitude of the windings and the number of windings. +Like the other commands in this section, this command can take +optional arguments, Sec.\ \ref{sec:options}. +\end{minipage} +\vspace{4mm} + +%--#] GluonArc : +%--#[ DoubleGluonArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} + \DoubleGluonArc[color=Red](45,0)(40,20,160)% + {5}{8}{1.3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublegluonarc} +\begin{verbatim} + \DoubleGluonArc[color=Red](45,0)(40,20,160)% + {5}{8}{1.3} +\end{verbatim} +The first 7 arguments are as in the \verb+GluonArc+ command. The extra +argument is the separation in the double line. +\end{minipage}\vspace{4mm} + +%--#] DoubleGluonArc : +%--#[ DashGluonArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DashGluonArc(45,0)(40,20,160){5}{8}{1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashgluonarc} +\verb:\DashGluonArc(45,0)(40,20,160){5}{8}{1.5}:\hfill \\ +The first 7 arguments are as in the \verb+GluonArc+ command. The extra +argument is the size of the dash segments. +\end{minipage}\vspace{4mm} + +%--#] DashGluonArc : +%--#[ DashDoubleGluonArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DashDoubleGluonArc(45,0)(40,20,160){5}{8}{1.3}{1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublegluonarc} +\verb:\DashDoubleGluonArc(45,0)(40,20,160){5}{8}{1.3}{1.5}:\hfill \\ +The first 7 arguments are as in the \verb+GluonArc+ command. The extra +arguments are the separation of the lines and the size of the dash +segments. +\end{minipage}\vspace{10mm} + +%--#] DashDoubleGluonArc : +%--#[ GluonCirc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,80)(-15,0)} +\AxoGrid(0,0)(10,10)(8,8){LightGray}{0.5} +\GluonCirc(40,40)(30,0){5}{16} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gluoncirc} +\verb:\GluonCirc(40,40)(30,0){5}{16}:\hfill \\ +The arguments are: Coordinates for the center of the circle, the +radius and a phase, the +amplitude of the gluon windings and the number of windings. +Like the other commands in this section, this command can take +optional arguments, Sec.\ \ref{sec:options}. The phase argument +specifies a counterclockwise rotation of the line relative to a +default starting point. +\end{minipage}\vspace{4mm} + +%--#] GluonCirc : +%--#[ DoubleGluonCirc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,80)(-15,0)} +\AxoGrid(0,0)(10,10)(8,8){LightGray}{0.5} +\DoubleGluonCirc[color=Red](40,40)(30,0){5}{16}{1.3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublegluoncirc} +\verb:\DoubleGluonCirc[color=Red](40,40)(30,0){5}{16}{1.3}:\hfill \\ +The first 6 arguments are as for the \verb+GluonCirc+ command. The +final argument is the line separation. +\end{minipage}\vspace{4mm} + +%--#] DoubleGluonCirc : +%--#[ DashGluonCirc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,80)(-15,0)} +\AxoGrid(0,0)(10,10)(8,8){LightGray}{0.5} +\DashGluonCirc(40,40)(30,0){5}{16}{1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashgluoncirc} +\verb:\DashGluonCirc(40,40)(30,0){5}{16}{1.5}:\hfill \\ +The first 6 arguments are as for the \verb+GluonCirc+ command. +The final argument is the size of the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashGluonCirc : +%--#[ DashDoubleGluonCirc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,80)(-15,0)} +\AxoGrid(0,0)(10,10)(8,8){LightGray}{0.5} +\DashDoubleGluonCirc(40,40)(30,0){5}{16}{1.3}{1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublegluoncirc} +\verb:\DashDoubleGluonCirc(40,40)(30,0){5}{16}{1.3}{1.5}:\hfill \\ +The first 6 arguments are as for the \verb+GluonCirc+ command. +The final 2 arguments are the line separation and the size of the +dashes. +\end{minipage}\vspace{4mm} + +%--#] DashDoubleGluonCirc : +%--#[ Photon : + +\subsubsection{Photon lines} +\label{sec:Photon} + +The basic drawing commands for drawing photon lines are \verb+\Photon+ +and \verb+\PhotonArc+. There are also variants for dashed and double +photons. But arrows aren't possible. + +All of the commands in this section can be given optional keyword +arguments, which are defined in Sec.\ \ref{sec:options}. These can be +used to specify the type of line (dashed, double), and to specify some +of the line's parameters.\vspace{3mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\Photon(10,20)(80,20){5}{7} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{photon} +\verb:\Photon(10,20)(80,20){5}{7}: \hfill \\ +In this command we have two coordinates, the amplitude of the wiggles and +the number of wiggles. +A negative value for the amplitude will reverse the orientation of the +wiggles. +The line will be drawn with the number of wiggles rounded to the +nearest half integer. +Like the other commands in this section, this command can take +optional arguments, Sec.\ \ref{sec:options}. +\end{minipage}\vspace{4mm} + +%--#] Photon : +%--#[ DoublePhoton : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DoublePhoton(10,20)(80,20){5}{7}{1.3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublephoton} +\verb:\DoublePhoton(10,20)(80,20){5}{7}{1.3}:\hfill \\ +The first 6 arguments are as in the \verb+Photon+ command. The +extra argument is the line separation. +\end{minipage}\vspace{4mm} + +%--#] DoublePhoton : +%--#[ DashPhoton : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DashPhoton[color=Red](10,20)(80,20){5}{7}{1} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashphoton} +\verb:\DashPhoton[color=Red](10,20)(80,20){5}{7}{1}:\hfill \\ +The first 6 arguments are as in the \verb+Photon+ command. The +extra argument is the size of the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashPhoton : +%--#[ DashDoublePhoton : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DashDoublePhoton(10,20)(80,20){5}{7}{1.3}{1} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublephoton} +\verb:\DashDoublePhoton(10,20)(80,20){5}{7}{1.3}{1}:\hfill \\ +The first 6 arguments are as in the \verb+Photon+ +command. +The final 2 arguments are the line separation and the size of the +dashes. +\end{minipage}\vspace{10mm} + +%--#] DashDoublePhoton : +%--#[ PhotonArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\PhotonArc(45,0)(40,20,160){5}{8} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{photonarc} +\verb:\PhotonArc(45,0)(40,20,160){5}{8}:\hfill \\ +In this command we have one coordinate: the center of the circle. Then +follow the radius of the circle, the start angle and the finishing angle. +The arc will be drawn counterclockwise. The final two parameters are the +amplitude of the wiggles and the number of wiggles. +Like the other commands in this section, this command can take +optional arguments, Sec.\ \ref{sec:options}. +\end{minipage}\vspace{4mm} + +%--#] PhotonArc : +%--#[ DoublePhotonArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DoublePhotonArc[color=Red](45,0)(40,20,160)% + {5}{8}{1.3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublephotonarc} +\begin{verbatim} +\DoublePhotonArc[color=Red](45,0)(40,20,160)% + {5}{8}{1.3} +\end{verbatim} +The first 7 arguments are as in the \verb+PhotonArc+ command. The extra +argument is the separation of the double line. +\end{minipage}\vspace{4mm} + +%--#] DoublePhotonArc : +%--#[ DashPhotonArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DashPhotonArc(45,0)(40,20,160){5}{8}{1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashphotonarc} +\verb:\DashPhotonArc(45,0)(40,20,160){5}{8}{1.5}:\hfill \\ +The first 7 arguments are as in the \verb+PhotonArc+ command. The +extra argument is the size of the dash segments. +\end{minipage}\vspace{4mm} + +%--#] DashPhotonArc : +%--#[ DashDoublePhotonArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DashDoublePhotonArc(45,0)(40,20,160){5}{8}{1.3}{1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublephotonarc} +\verb:\DashDoublePhotonArc(45,0)(40,20,160){5}{8}{1.3}{1.5}:\hfill \\ +The first 7 arguments are as in the \verb+PhotonArc+ command. The +extra arguments are the separation of the lines and the size of the +dash segments. +\end{minipage}\vspace{4mm} + +%--#] DashDoublePhotonArc : +%--#[ ZigZag : + +\subsubsection{Zigzag lines} + +The basic drawing commands for drawing zigzag lines are \verb+\Zigzag+ +and \verb+\ZigzagArc+. There are also variants for dashed and double +lines. But arrows aren't possible. + +All of the commands in this section can be given optional keyword +arguments, which are defined in Sec.\ \ref{sec:options}. These can be +used to specify the type of line (dashed, double), and to specify some +of the line's parameters. +\vspace{4mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\ZigZag(10,20)(80,20){5}{7.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{zigzag} +\verb:\ZigZag(10,20)(80,20){5}{7.5}: \hfill \\ +In this command we have two coordinates, the amplitude of the sawteeth and +the number of sawteeth. +A negative value for the amplitude will reverse the orientation of the +sawteeth. +The line will be drawn with the number of sawteeth rounded to the +nearest half integer. +\end{minipage} +\\[3mm] +Like the other commands in this section, this command can take +optional arguments, Sec.\ \ref{sec:options}, e.g.,\\[3mm] +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\ZigZag[color=Red,double,sep=1.5](10,20)(80,20){5}{7} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{zigzag.opt} +\verb:\ZigZag[color=Red,double,sep=1.5](10,20)(80,20){5}{7}: +\end{minipage}\vspace{6mm} + +%--#] ZigZag : +%--#[ DoubleZigZag : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DoubleZigZag(10,20)(80,20){5}{7}{1.3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublezigzag} +\verb:\DoubleZigZag(10,20)(80,20){5}{7}{1.3}:\hfill \\ +The first 6 arguments are as in the \verb+ZigZag+ command. The +extra argument is the line separation. +\end{minipage}\vspace{4mm} + +%--#] DoubleZigZag : +%--#[ DashZigZag : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DashZigZag(10,20)(80,20){5}{7}{1} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashzigzag} +\verb:\DashZigZag(10,20)(80,20){5}{7}{1}:\hfill \\ +The first 6 arguments are as in the \verb+ZigZag+ command. The +extra argument is the size of the dashes. +\end{minipage}\vspace{4mm} + +%--#] DashZigZag : +%--#[ DashDoubleZigZag : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,40)(-10,0)} +\AxoGrid(0,0)(10,10)(9,4){LightGray}{0.5} +\DashDoubleZigZag(10,20)(80,20){5}{7}{1.3}{1} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublezigzag} +\verb:\DashDoubleZigZag(10,20)(80,20){5}{7}{1.3}{1}:\hfill \\ +The first 6 arguments are as in the \verb+ZigZag+ command. +The extra arguments are the separation of the lines and the size of +the dash segments. +\end{minipage}\vspace{6mm} + +%--#] DashDoubleZigZag : +%--#[ ZigZagArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\ZigZagArc(45,0)(40,20,160){5}{8} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{zigzagarc} +\verb:\ZigZagArc(45,0)(40,20,160){5}{8}:\hfill \\ +In this command we have one coordinate: the center of the circle. Then +follow the radius of the circle, the start angle and the finishing +angle. The arc will be drawn counterclockwise. The final two +arguments are the amplitude of the sawteeth and the number of +sawteeth. Like the other commands in this section, this command can +take optional arguments, Sec.\ \ref{sec:options}. +\end{minipage}\vspace{4mm} + +%--#] ZigZagArc : +%--#[ DoubleZigZagArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DoubleZigZagArc(45,0)(40,20,160){5}{8}{1.3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{doublezigzagarc} +\verb:\DoubleZigZagArc(45,0)(40,20,160){5}{8}{1.3}:\hfill \\ +The first 7 arguments are as for the \verb+ZigZagArc+ command. The +extra argument is the separation in the double line. +\end{minipage}\vspace{4mm} + +%--#] DoubleZigZagArc : +%--#[ DashZigZagArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DashZigZagArc(45,0)(40,20,160){5}{8}{1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashzigzagarc} +\verb:\DashZigZagArc(45,0)(40,20,160){5}{8}{1.5}:\hfill \\ +The first 7 arguments are as for the \verb+ZigZagArc+ command. The +extra argument is the size of the dash segments. +\end{minipage}\vspace{4mm} + +%--#] DashZigZagArc : +%--#[ DashDoubleZigZagArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,50)(-10,0)} +\AxoGrid(0,0)(10,10)(9,5){LightGray}{0.5} +\DashDoubleZigZagArc(45,0)(40,20,160){5}{8}{1.3}{1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{dashdoublezigzagarc} +\verb:\DashDoubleZigZagArc(45,0)(40,20,160){5}{8}{1.3}{1.5}:\hfill \\ +The first 7 arguments are as for the \verb+ZigZagArc+ command. The +final 2 arguments are the separation of the lines and the size of the +dash segments. +\end{minipage}\vspace{4mm} + +%--#] DashDoubleZigZagArc : +%--#[ Vertex : + +\subsubsection{Vertices, circles, ovals} +\label{sec:other.graphics} + +The commands in this section are for graphical elements other +than those that we conceived of as lines in Feynman graphs. Many of +these have standard uses as components of Feynman graphs\footnote{Of + course, none of the commands is restricted to its originally + envisaged use, or to being used to draw Feynman graphs. But + especially the line-drawing commands have been designed from the + point-of-view of being suitable for the needs of drawing particular + elements of Feynman graphs.}. The commands here are mostly shown +in association with other objects, to indicate some of their +properties. +\vspace{4mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,50)(-15,0)} +\AxoGrid(0,0)(10,10)(8,5){LightGray}{0.5} +\Line(10,10)(70,10) +\Photon(40,10)(40,40){4}{3} +\Vertex(40,10){1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{vertex} +\verb:\Line(10,10)(70,10): \hfill \\ +\verb:\Photon(40,10)(40,40){4}{3}: \hfill \\ +\verb:\Vertex(40,10){1.5}: \hfill \\ +\verb+\Vertex+ gives a vertex, as is often used for connecting lines +in Feynman graphs. It gives a fat dot. The arguments are coordinates +(between parentheses) for its center, and the radius of the dot. +\end{minipage}\vspace{4mm} + +%--#] Vertex : +%--#[ ECirc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\Red{\Line(0,0)(60,60)} +\ECirc(30,30){20} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{ecirc} +\verb:\Red{\Line(0,0)(60,60)}:\\ +\verb:\ECirc(30,30){20}:\\ +\verb+\ECirc+ draws a circle with its center at the specified +coordinate (first two arguments) and the specified radius (third +argument). The interior is transparent, so that it does not erase +previously drawn material. +If you need a filled circle, use the \verb+\Vertex+ command (to which +we have defined a synonym \verb+\FCirc+ to match similar commands for +other shapes). +\end{minipage}\vspace{4mm} + +%--#] ECirc : +%--#[ BCirc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\Red{\Line(0,0)(60,60)} +\BCirc(30,30){20} +\Blue{\Line(60,0)(0,60)} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{bcirc} +\verb:\Red{\Line(0,0)(60,60)}:\\ +\verb:\BCirc(30,30){20}:\\ +\verb:\Blue{\Line(60,0)(0,60)}:\\ +\verb+\BCirc+ +draws a circle with the center at the specified coordinate (first two +arguments) and the specified radius (third argument). The interior is +white and opaque, so that it erases previously written objects, but not +subsequently drawn objects. +\end{minipage}\vspace{4mm} + +%--#] BCirc : +%--#[ GCirc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\Red{\Line(0,0)(60,60)} +\GCirc(30,30){20}{0.82} +\Blue{\Line(60,0)(0,60)} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gcirc} +\verb:\Red{\Line(0,0)(60,60)}:\\ +\verb:\GCirc(30,30){20}{0.82}:\\ +\verb:\Blue{\Line(60,0)(0,60)}:\\ +\verb+\GCirc+ draws a circle with the center at the specified +coordinate (first two arguments) and the specified radius (third +argument). Previously written contents are overwritten and made gray +according to the grayscale specified by the fourth argument (0=black, +1=white). +\end{minipage}\vspace{4mm} + +%--#] GCirc : +%--#[ CCirc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,60)(-25,0)} +\AxoGrid(0,0)(10,10)(6,6){LightGray}{0.5} +\Red{\Line(0,0)(60,60)} +\CCirc(30,30){20}{Red}{Yellow} +\Blue{\Line(60,0)(0,60)} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{ccirc} +\verb:\Red{\Line(0,0)(60,60)}:\\ +\verb:\CCirc(30,30){20}{Red}{Yellow}:\\ +\verb:\Blue{\Line(60,0)(0,60)}:\\ +\verb+\CCirc+ draws a colored circle with the center at the specified +coordinate (first two arguments) and the specified radius (third +argument). The fourth argument is the name of the color for the circle +itself. Its interior is overwritten and colored with the color +specified by name in the fifth argument. +\end{minipage}\vspace{4mm} + +%--#] CCirc : +%--#[ Oval : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,110)(-15,0)} +\AxoGrid(0,0)(10,10)(8,11){LightGray}{0.5} +\Oval(40,80)(20,30)(0) +\Oval(40,30)(20,30)(30) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{oval} +\verb:\Oval(40,80)(20,30)(0):\\ +\verb:\Oval(40,30)(20,30)(30):\\ +\verb:\Oval: draws an oval. The first pair of values is the center of +the oval. The next pair forms the half-height and the half-width. The +last argument is a (counterclockwise) rotation angle. The interior is +transparent, so that it does not erase previously drawn material. +\end{minipage}\vspace{4mm} + +%--#] Oval : +%--#[ FOval : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,60)(-15,0)} +\AxoGrid(0,0)(10,10)(8,6){LightGray}{0.5} +\SetColor{Yellow} +\FOval(40,30)(20,30)(30) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{foval} +\verb:\SetColor{Yellow}:\\ +\verb:\FOval(40,80)(20,30)(30):\\ +\verb:\FOval: draws an oval filled with the current color overwriting +previously written material. Its arguments are the same as for the +\verb:\Oval: command. +\end{minipage}\vspace{4mm} + +%--#] FOval : +%--#[ GOval : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,60)(-15,0)} +\AxoGrid(0,0)(10,10)(8,6){LightGray}{0.5} +\Red{\Line(0,0)(80,60)} +\GOval(40,30)(20,30)(0){0.6} +\Blue{\Line(80,0)(0,60)} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{goval} +\verb:\Red{\Line(0,0)(80,60)}:\\ +\verb:\GOval(40,30)(20,30)(0){0.6}: \\ +\verb:\Blue{\Line(80,0)(0,60)}:\\ +\verb:\GOval: draws an oval with a gray interior. +The first 5 arguments are the same as for the \verb:\Oval: command. +The last argument indicates the +grayscale with which the oval will be filled, overwriting previously +written contents (0=black, 1=white). +\end{minipage}\vspace{4mm} + +%--#] GOval : +%--#[ COval : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,60)(-15,0)} +\AxoGrid(0,0)(10,10)(8,6){LightGray}{0.5} +\SetWidth{1} +\Green{\Line(0,0)(80,60)} +\COval(40,30)(20,30)(20){Orange}{Blue} +\Yellow{\Line(80,0)(0,60)} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{coval} +\verb:\Green{\Line(0,0)(80,60)}:\\ +\verb:\COval(40,30)(20,30)(20){Orange}{Blue}:\\ +\verb:\Yellow{\Line(80,0)(0,60)}:\\ +\verb:\COval: draws a colored oval. +The first 5 arguments are the same as for the \verb:\Oval: command. +The last two arguments are the names of two colors. +The first is the color of the line that forms the oval and the second is +the color of the inside. +\end{minipage}\vspace{4mm} + +%--#] COval : +%--#[ EBox : + +Commands for drawing boxes are in two series. For the first set, the +box's position is specified by the coordinates of its bottom left +corner and top right corner:\\[4mm] +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\EBox(10,10)(50,40) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{ebox} +\verb:\EBox(10,10)(50,40): \hfill \\ +Draws a box. The points specified are the bottom left corner and the top +right corner. +The interior is transparent, so that it does not erase previously +drawn material. +\end{minipage}\vspace{4mm} + +%--#] EBox : +%--#[ FBox : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\FBox(10,10)(50,40) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{fbox} +\verb:\FBox(10,10)(50,40): \hfill \\ +Draws a box filled with the current color overwriting +previously written material. Its arguments are the same as for the +\verb:\EBox: command. +\end{minipage}\vspace{4mm} + +%--#] FBox : +%--#[ BBox : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\BBox(10,10)(50,40) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{bbox} +\verb:\BBox(10,10)(50,40): \hfill \\ +Draws a blanked-out box. The points specified are the bottom left corner +and the top right corner. +\end{minipage}\vspace{4mm} + +%--#] BBox : +%--#[ GBox : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\GBox(10,10)(50,40){0.9} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gbox} +\verb:\GBox(10,10)(50,40){0.9}: \hfill \\ +Draws a box filled with a grayscale given by the fifth argument (black=0, +white=1). The points specified are the bottom left corner and the top +right corner. +\end{minipage}\vspace{4mm} + +%--#] GBox : +%--#[ CBox : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\SetWidth{1.5} +\CBox(10,10)(50,40){Green}{LightRed} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{cbox} +\verb:\CBox(10,10)(50,40){Green}{LightRed}: \hfill \\ +Draws a box in the color specified by name in the fifth argument. The +contents are filled with the color specified by name in the sixth +argument. The points specified are the bottom left corner and the top +right corner. +\end{minipage}\vspace{4mm} + +%--#] CBox : +%--#[ EBoxc : + +For the other series of box-drawing commands, the box's position is +specified by its center, and its width and height. The command names +end with a ``\texttt{c}'', for ``center'':\\[3mm] +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\EBoxc(30,25)(40,30) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{eboxc} +\label{boxc} +\verb:\EBoxc(30,25)(40,30): \hfill \\ +Draws a box. The first two numbers give the center of the box. The next two +numbers are the width and the height of the box. Instead of \verb:\EBoxc: +one may also use \verb:\Boxc:. + +There is also the similar command \verb:\FBoxc: that draws a filled box. +\end{minipage}\vspace{4mm} + +%--#] EBoxc : +%--#[ BBoxc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\BBoxc(30,25)(40,30) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{bboxc} +\verb:\BBoxc(30,25)(40,30): \hfill \\ +Draws a box of which the contents are blanked out. The arguments are +the same as for the \verb+\EBoxc+ command. +\end{minipage}\vspace{4mm} + +%--#] BBoxc : +%--#[ GBoxc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\GBoxc(30,25)(40,30){0.9} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gboxc} +\verb:\GBoxc(30,25)(40,30){0.9}: \hfill \\ +Draws a box filled with a grayscale given by the fifth argument (black=0, +white=1). +The first 4 arguments are the same as for the \verb+\EBoxc+ command. +\end{minipage}\vspace{4mm} + +%--#] GBoxc : +%--#[ CBoxc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\SetWidth{1.5} +\CBoxc(30,25)(40,30){Brown}{LightBlue} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{cboxc} +\verb:\CBoxc(30,25)(40,30){Brown}{LightBlue}: \hfill \\ +Draws a box in the color specified by name in the fifth argument. The +contents are filled with the color specified by name in the sixth +argument. +The first 4 arguments are the same as for the \verb+\EBoxc+ command. +\end{minipage}\vspace{4mm} + +%--#] BBoxc : +%--#] CBoxc : +%--#[ RotatedBox : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\RotatedBox(30,25)(40,30){30}{Red} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{rotatedbox} +\verb:\RotatedBox(30,25)(40,30){30}{Red}: \hfill \\ +Draws a rotated box. The first two numbers give the center of the +box. The next two numbers are the width and the height of the box. The +fifth argument is the counterclockwise rotation angle and the sixth +argument is the color of the box. The interior of the box is +transparent. +\end{minipage}\vspace{4mm} + +%--#] RotatedBox : +%--#[ FilledRotatedBox : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\FilledRotatedBox(30,25)(40,30){30}{Blue} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{filledrotatedbox} +\verb:\FilledRotatedBox(30,25)(40,30){30}{Blue}: \hfill \\ +Draws a rotated box. +The first 4 arguments are the same as for the \verb+\RotatedBox+ command. +The +fifth argument is the counterclockwise rotation angle and the sixth +argument is the color of the inside of the box. If a differently +colored outline is needed, it should be written with the +\verb+RotatedBox+ command. +\end{minipage}\vspace{4mm} + +%--#] FilledRotatedBox : +%--#[ ETri : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\ETri(10,20)(50,10)(40,40) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{etri} +\verb:\ETri(10,20)(50,10)(40,40): \hfill \\ +Draws a triangle. The three points specified are the corners of the +triangle. +The interior is transparent. + +There is also the similar command \verb:\FTri: that draws a filled triangle. +\end{minipage}\vspace{4mm} + +%--#] ETri : +%--#[ BTri : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\BTri(10,20)(50,10)(40,40) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{btri} +\verb:\BTri(10,20)(50,10)(40,40): \hfill \\ +Draws a blanked-out triangle. The three points specified are the corners of +the triangle. +\end{minipage}\vspace{4mm} + +%--#] BTri : +%--#[ GTri : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\GTri(10,20)(50,10)(40,40){0.9} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gtri} +\verb:\GTri(10,20)(50,10)(40,40){0.9}: \hfill \\ +Draws a triangle of which the content are filled with the grayscale +specified by the seventh argument (black=0, white=1). The three points +specified are the corners of the triangle. +\end{minipage}\vspace{4mm} + +%--#] GTri : +%--#[ CTri : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\SetWidth{1} +\CTri(10,20)(50,10)(40,40){Red}{Yellow} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{ctri} +\verb:\CTri(10,20)(50,10)(40,40){Red}{Yellow}: \hfill \\ +Draws a triangle in the color named in the seventh argument. The +contents are filled with the color named in the eightth argument. The +three points specified are the corners of the triangle. +\end{minipage}\vspace{4mm} + +%--#] CTri : +%--#[ Polygon : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\Polygon{(10,20)(20,10)(40,20)(50,10)(45,40)(15,30)}{Red} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{polygon} +\verb:\Polygon{(10,20)(20,10)(40,20)(50,10): \hfill \\ + \verb: (45,40)(15,30)}{Red}: \hfill \\ +Draws a polygon. The first argument is a sequence of two dimensional +points which form the corners of the polygon. The second argument is +the name of the color of the polygon. The interior is transparent. +\end{minipage}\vspace{4mm} + +%--#] Polygon : +%--#[ FilledPolygon : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(60,50)(-25,0)} +\AxoGrid(0,0)(10,10)(6,5){LightGray}{0.5} +\FilledPolygon{(10,20)(20,10)(40,20)(50,10)(45,40)(15,30)}{Apricot} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{filledpolygon} +\verb:\FilledPolygon{(10,20)(20,10)(40,20)(50,10): \hfill \\ + \verb: (45,40)(15,30)}{Apricot}: \hfill \\ +Draws a polygon. The first argument is a sequence of two dimensional +points which form the corners of the polygon. The second argument is +the name of the color of the interior. +\end{minipage}\vspace{4mm} + +%--#] FilledPolygon : +%--#[ LinAxis : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(100,50)(-5,0)} +\AxoGrid(0,0)(10,10)(10,5){LightGray}{0.5} +\LinAxis(10,30)(90,30)(4,5,5,0,1) +\LinAxis(10,10)(90,10)(4,5,5,2,1) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{linaxis} +\verb:\LinAxis(10,30)(90,30)(4,5,5,0,1):\\ +\verb:\LinAxis(10,10)(100,10)(4,5,5,2,1): \\ +\verb+\LinAxis+($x_1$,$y_1$)($x_2$,$y_2$)($N_D$,$d$,hashsize,offset,width) + draws a line to be used as an axis in a graph. Along the axis + are hash marks. Going from the first coordinate to the second, the + hash marks are on the left side if `hashsize', which is the size of the + hash marks, is positive and on the right side if it is negative. + $N_D$ is the number of `decades', indicated by fat hash marks, and + $d$ is the (integer) number of subdivisions inside each decade. The offset + parameter tells to which subdivision the first coordinate + corresponds. When it is zero, this coordinate corresponds to a fat + mark of a decade. Because axes have their own width, this is + indicated with the last parameter. +%Draws a line with subdivisions that can be used as the axis on a histogram +%or other figure. The first four arguments are the endpoints of the axis. +%Then we have the number of decades, the number of divisions inside each +%decade, the size of the hash marks, the offset in divisions at which we +%start and the linewidth. The hashmarks will be on the left side when going +%from point 1 to point 2. +\end{minipage}\vspace{4mm} + +%--#] LinAxis : +%--#[ LogAxis : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(100,40)(-5,0)} +\AxoGrid(0,0)(10,10)(10,4){LightGray}{0.5} +\LogAxis(0,30)(100,30)(4,3,0,1) +\LogAxis(0,10)(100,10)(4,3,3,1) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{logaxis} +\verb:\LogAxis(0,30)(100,30)(4,3,0,1): \hfill \\ +\verb:\LogAxis(0,10)(100,10)(4,3,3,1): \hfill \\ +\verb+\LogAxis+($x_1$,$y_1$)($x_2$,$y_2$)($N_L$,hashsize + ,offset,width) \hfill \\ + This draws a line to be used as a logarithmic axis in a graph. Along + the axis are hash marks. Going from the first coordinate to the second, + the hash marks are on the left side if `hashsize', which is the size of + the hash marks, is positive and on the right side if it is negative. + $N_L$ is the number of orders of magnitude, indicated by fat hash + marks. The offset parameter tells to which integer subdivision the + first coordinate corresponds. When it is zero, this coordinate + corresponds to a fat mark, which is identical to when the value would + have been 1. Because axes have their own width, this is indicated with + the last parameter. +%Draws a line with subdivisions that can be used as the axis on a histogram +%or other figure. The first four arguments are the endpoints of the axis. +%Then we have the number of orders of magnitude, +%the size of the hash marks, the offset inside a logarithm at which we +%start and the linewidth. The hashmarks will be on the left side when going +%from point 1 to point 2. +\end{minipage}\vspace{4mm} + +%--#] LogAxis : +%>>#] The Commands : +%>>#[ Text : + +\subsection{Text} +\label{sec:text} + +%--#[ Implementation : + +Axodraw2 provides several commands for inserting text into diagrams. +Some are for plain text, with a chosen placement and angle. Some +allow placement of text inside boxes. There are two sets of commands. +Some we call \TeX-text commands; these use the standard \LaTeX{} fonts +as used in the rest of the document. The others we call +postscript-text commands; these use a user-specified standard +postscript font or, if the user wishes, the usual document font, at a +user-chosen size. + +[\emph{Side issue:} In version 1 of axodraw, the difference between +the classes of text command was caused by a serious implementation +difficulty. With the then-available \LaTeX{} technology, certain +graphic effects, could not be achieved within \LaTeX, at least not +easily. So direct programming in postscript was resorted to, with the +result that normal \LaTeX{} commands, including mathematics, were not +available in the postscript-text commands. With the greatly improved +methods now available, this has all changed, and the restrictions have +gone. But since the commands and their basic behavior is already +defined, we have retained the distinction between \TeX{}-text commands +and postscript-text commands.] + +In the original version of Axodraw the commands for two lines inside a +box were \verb:B2Text:, \verb:G2Text: and \verb:C2Text:. This causes +some problems explained in Sec.\ \ref{sec:changes.wrt.1}. If you need to +retain compatibility with v.\ 1 on this issue, e.g., with old files or +old diagrams or for personal preference, you can use the +\texttt{v1compatible} option when loading axodraw2 --- see Sec.\ +\ref{sec:invoke}. + +\vspace{4mm} + +%--#] Implementation : +%--#[ Text : + +\subsubsection{\TeX-type text} + +Illustrated by examples, the commands to insert text are as follows: + +\medskip + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,90)(-10,0)} +\AxoGrid(0,0)(10,10)(9,9){LightGray}{0.5} +\Text(10,10)[l]{left} +\Text(45,45){centered} +\Text(80,80)[rt]{right-top} +\Text(20,60)(45){$e^{i\pi/4}$} +\SetColor{Red} +\Vertex(10,10){1.5} +\Vertex(45,45){1.5} +\Vertex(80,80){1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{text} +\verb:\Text(10,10)[l]{left}: \hfill \\ +\verb:\Text(45,45){centered}: \hfill \\ +\verb:\Text(80,80)[rt]{right-top}: \hfill \\ +\verb:\Text(20,60)(45){$e^{i\pi/4}$}: \hfill \\ +\verb:\SetColor{Red}: \hfill \\ +\verb:\Vertex(10,10){1.5}: \hfill \\ +\verb:\Vertex(45,45){1.5}: \hfill \\ +\verb:\Vertex(80,80){1.5}: \hfill \\ +\verb+\Text+ writes text in the current \LaTeX{} font. The most +general form is \verb+\Text(x,y)(theta)[pos]{text}+; but either or +both of the theta and pos arguments (and their delimiters) can be omitted. +It puts the text +at focal point $(x,y)$, with a rotation by anticlockwise angle theta. +The default angle is zero, and the default position is to +center the text horizontally and vertically at the focal point. The +position letters are any relevant combination of `l', `r', `t', and +`b', as in the various +\TeX/\LaTeX{} box commands to indicate left, right, top or bottom +adjustment with respect to the focal point. No indication means +centered. +\end{minipage}\vspace{4mm} + +%--#] Text : +%--#[ rText : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,90)(-10,0)} +\AxoGrid(0,0)(10,10)(9,9){LightGray}{0.5} +\rText(10,10)[l][l]{left-left} +\rText(45,45)[][u]{upside} +\rText(80,10)[r][r]{right-right} +\rText(20,60)[][r]{$e^{i\pi}$} +\SetColor{Red} +\Vertex(10,10){1.5} +\Vertex(45,45){1.5} +\Vertex(80,10){1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{rtext} +\verb:\rText(10,10)[l][l]{left-left}: \hfill \\ +\verb:\rText(45,45)[][u]{upside}: \hfill \\ +\verb:\rText(80,10)[r][r]{right-right}: \hfill \\ +\verb:\rText(20,60)[][r]{$e^{i\pi}$}: \hfill \\ +\verb:\SetColor{Red}: \hfill \\ +\verb:\Vertex(10,10){1.5}: \hfill \\ +\verb:\Vertex(45,45){1.5}: \hfill \\ +\verb:\Vertex(80,10){1.5}: \hfill \\ +The \verb:\rText: command gives a subset of the functionality of the +\verb+\Text+ command. It is used for backward compatibility with +Axodraw v.\ 1. The general form of the command is +\verb:\rText(x,y)[mode][rotation]{text}:. +Unlike the case with the \verb:\Text: command and typical standard +\LaTeX{} commands, if the option letters are omitted, the square +brackets must be retained. +The coordinates $(x,y)$ are +the focal point of the text. The third argument is \verb+l+, +\verb+r+, or empty to indicate the justification of the text. The +fourth argument is \verb+l+, \verb+r+, \verb+u+, or empty to indicate +respectively whether the text is rotated left (anticlockwise) by 90 +degrees, is rotated right (clockwise) by 90 degrees, is upside-down, +or is not rotated. The fifth argument is the text. +This command is retained only for backward compatibility; +for new diagrams it is probably better to use the the \verb:\Text:. +\end{minipage}\vspace{4mm} + +%--#] rText : +%--#[ SetPFont : + +\subsubsection{Postscript-type text} +\label{sec:PSText} + +The remaining text-drawing commands can use postscript fonts with an +adjustable size. + +To set the font for later text-drawing commands in this class, the +\verb:\SetPFont: command sets the `Postscript' +font, e.g., +\begin{verbatim} + \SetPFont{Helvetica}{20} +\end{verbatim} +(This font is initialized by axodraw2 to Times-Roman at 10pt.) +The font set in this way is used in the \verb:PText:, \verb:BText:, +\verb:GText:, \verb:CText:, \verb:BTwoText:, \verb:GTwoText: and +\verb:CTwoText: commands. The fonts that can be used are the 35 fonts +that are made available by Adobe and that are normally available in +all postscript interpreters, including printers. The fonts, together +with the names used to specify them in the normal font-setting +commands of \TeX{} and \LaTeX{}, are shown in Table \ref{tab:Pfont}. + +\begin{table} +\begin{tabular}{|l|l|l|l|} +\hline +Font name & \LaTeX{} & Font name & \LaTeX{} \\ +\hline +AvantGarde-Book & pagk & Helvetica-Narrow & phvrrn\\ +AvantGarde-BookOblique & pagko & Helvetica-NarrowOblique & phvron\\ +AvantGarde-Demi & pagd & NewCenturySchlbk-Bold & pncb \\ +AvantGarde-DemiOblique & pagdo & NewCenturySchlbk-BoldItalic & pncbi \\ +Bookman-Demi & pbkd & NewCenturySchlbk-Italic & pncri \\ +Bookman-DemiItalic & pbkdi & NewCenturySchlbk-Roman & pncr \\ +Bookman-Light & pbkl & Palatino-Bold & pplb \\ +Bookman-LightItalic & pbkli & Palatino-BoldItalic & pplbi \\ +Courier-Bold & pcrb & Palatino-Italic & pplri \\ +Courier-BoldOblique & pcrbo & Palatino-Roman & pplr \\ +Courier & pcrr & Symbol & psyr \\ +Courier-Oblique & pcrro & Times-Bold & ptmb \\ +Helvetica-Bold & phvb & Times-BoldItalic & ptmbi \\ +Helvetica-BoldOblique & phvbo & Times-Italic & ptmri \\ +Helvetica-NarrowBold & phvbrn& Times-Roman & ptmr \\ +Helvetica-NarrowBoldOblique & phvbon& ZapfChancery-MediumItalic & pzcmi \\ +Helvetica & phvr & ZapfDingbats & pzdr \\ +Helvetica-Oblique & phvro & & \\ +\hline +\end{tabular} +\caption{Available postscript fonts and their corresponding names in + \LaTeX.} +\label{tab:Pfont} +\end{table} +If you prefer to use the normal document font (which would normally be +Computer Modern in the common document classes), you simply leave the +fontname empty, e.g,. +\begin{verbatim} + \SetPFont{}{20} +\end{verbatim} +As for the second, fontsize argument, leaving it empty uses the size +that \LaTeX{} is using at the moment the text-drawing command starts, +e.g., +\begin{verbatim} + \SetPFont{Helvetica-Bold}{} +\end{verbatim} +\vspace{3mm} + +%--#] SetPFont : +%--#[ PText : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,90)(-10,0)} +\AxoGrid(0,0)(10,10)(9,9){LightGray}{0.5} +\SetPFont{Helvetica}{13} +\PText(10,10)(0)[l]{left} +\PText(45,45)(30)[]{centered} +\PText(80,80)(20)[rt]{right-top} +%\PText(20,60)(140)[]{$e^{i\pi}$} +\SetColor{Red} +\Vertex(10,10){1.5} +\Vertex(45,45){1.5} +\Vertex(80,80){1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{ptext} +\verb:\SetPFont{Helvetica}{13}: \hfill \\ +\verb:\PText(10,10)(0)[l]{left}: \hfill \\ +\verb:\PText(45,45)(30)[]{centered}: \hfill \\ +\verb:\PText(80,80)(20)[rt]{right-top}: \hfill \\ +%\verb:\PText(20,60)(90)[]{$e^{i\pi}$}: \hfill \\ +\verb:\SetColor{Red}: \hfill \\ +\verb:\Vertex(10,10){1.5}: \hfill \\ +\verb:\Vertex(45,45){1.5}: \hfill \\ +\verb:\Vertex(80,80){1.5}: \hfill \\ +The \verb:\PText: command writes %text +in Axodraw's current Postscript font. +The first two arguments give the focal point, the third argument is a +rotation angle and the fourth argument is as in the various \TeX/\LaTeX{} +box commands to indicate left, right, top or bottom adjustment with respect +to the focal point. No indication means centered. + +Note that use of normal \LaTeX{} font setting commands or of math-mode +will not normally have the desired effect. +\end{minipage}\vspace{4mm} + +%--#] PText : +%--#[ BText : + +\noindent +\begin{minipage}{4.53cm} +\begin{axopicture}{(110,110)(-10,0)} +\AxoGrid(0,0)(10,10)(10,9){LightGray}{0.5} +\ArrowLine(30,65)(60,25) +\SetPFont{Bookman-Demi}{14} +\BText(30,65){Who?} +\SetPFont{AvantGarde-Book}{16} +\BText(60,25){Me?} +\end{axopicture} +\end{minipage} +\begin{minipage}{10.8cm} +\label{btext} +\verb:\ArrowLine(30,65)(60,25): \hfill \\ +\verb:\SetPFont{Bookman-Demi}{14}: \hfill \\ +\verb:\BText(30,65){Who?}: \hfill \\ +\verb:\SetPFont{AvantGarde-Book}{16}: \hfill \\ +\verb:\BText(60,25){Me?}: \hfill \\ +The \verb:\BText: command writes a centered box with text in it. It uses +Axodraw's current Postscript font. +\end{minipage}\vspace{4mm} + +%--#] BText : +%--#[ GText : + +\noindent +\begin{minipage}{4.53cm} +\begin{axopicture}{(110,110)(-10,0)} +\AxoGrid(0,0)(10,10)(10,9){LightGray}{0.5} +\ArrowLine(30,65)(60,25) +\SetPFont{Bookman-Demi}{12} +\GText(30,65){0.9}{Why?} +\SetPFont{Courier-Bold}{5} +\GText(60,25){0.75}{We wanted it that way!} +\end{axopicture} +\end{minipage} +\begin{minipage}{10.8cm} +\label{gtext} +\verb:\ArrowLine(30,65)(60,25): \hfill \\ +\verb:\SetPFont{Bookman-Demi}{12}: \hfill \\ +\verb:\GText(30,65){0.9}{Why?}: \hfill \\ +\verb:\SetPFont{Courier-Bold}{5}: \hfill \\ +\verb:\GText(60,25){0.75}{We wanted it that way!}: \hfill \\ +The \verb:\GText: command writes a centered box with text in it. It uses +Axodraw's current Postscript font. The third argument is the grayscale +with which +the box will be filled. 0 is black and 1 is white. +\end{minipage}\vspace{4mm} + +%--#] GText : +%--#[ CText : + +\noindent +\begin{minipage}{4.53cm} +\begin{axopicture}{(110,110)(-10,0)} +\AxoGrid(0,0)(10,10)(9,9){LightGray}{0.5} +\ArrowLine(30,65)(60,25) +\SetPFont{Times-Bold}{15} +\CText(30,65){LightYellow}{LightBlue}{Who?} +\SetPFont{Courier-Bold}{14} +\CText(60,25){Red}{Yellow}{You!} +\end{axopicture} +\end{minipage} +\begin{minipage}{10.8cm} +\label{ctext} +\verb:\ArrowLine(30,65)(60,25): \hfill \\ +\verb:\SetPFont{Times-Bold}{15}: \hfill \\ +\verb:\CText(30,65){LightYellow}{LightBlue}{Who?}: \hfill \\ +\verb:\SetPFont{Courier-Bold}{14}: \hfill \\ +\verb:\CText(60,25){Red}{Yellow}{You!}: \hfill \\ +The \verb:\CText: command writes a centered box with text in it. It uses +Axodraw's current Postscript font. The third argument is the color of +the box and +the text. The fourth argument is the color with which the box will be +filled. +\end{minipage}\vspace{4mm} + +%--#] CText : +%--#[ BTwoText : +\noindent +\begin{minipage}{4.53cm} +\begin{axopicture}{(110,110)(-10,0)} +\AxoGrid(0,0)(10,10)(9,9){LightGray}{0.5} +\ArrowLine(30,65)(60,25) +\SetPFont{Bookman-Demi}{14} +\BTwoText(30,65){Why}{Me?} +\SetPFont{AvantGarde-Book}{16} +\BTwoText(60,25){You}{did it} +\end{axopicture} +\end{minipage} +\begin{minipage}{10.8cm} +\label{btwotext} +\verb:\ArrowLine(30,65)(60,25): \hfill \\ +\verb:\SetPFont{Bookman-Demi}{14}: \hfill \\ +\verb:\BTwoText(30,65){Why}{Me?}: \hfill \\ +\verb:\SetPFont{AvantGarde-Book}{16}: \hfill \\ +\verb:\BTwoText(60,25){You}{did it}: \hfill \\ +The \verb:\BTwoText: command writes a centered box with two lines of text in +it. It uses Axodraw's current Postscript font. +\end{minipage}\vspace{4mm} + +%--#] BTwoText : +%--#[ GTwoText : + +\noindent +\begin{minipage}{4.53cm} +\begin{axopicture}{(110,110)(-10,0)} +\AxoGrid(0,0)(10,10)(10,9){LightGray}{0.5} +\ArrowLine(30,65)(60,25) +\SetPFont{Bookman-Demi}{12} +\GTwoText(30,65){0.9}{Prove}{it!} +\SetPFont{Courier-Bold}{11} +\GTwoText(60,25){0.75}{Sherlock}{says so} +\end{axopicture} +\end{minipage} +\begin{minipage}{10.8cm} +\label{gtwotext} +\verb:\ArrowLine(30,65)(60,25): \hfill \\ +\verb:\SetPFont{Bookman-Demi}{12}: \hfill \\ +\verb:\GTwoText(30,65){0.9}{Prove}{it!}: \hfill \\ +\verb:\SetPFont{Courier-Bold}{11}: \hfill \\ +\verb:\GTwoText(60,25){0.75}{Sherlock}{says so}: \hfill \\ +The \verb:\GTwoText: command writes a centered box with two lines of text in +it. It uses Axodraw's current Postscript font. The third argument is the +grayscale with which the box will be filled. 0 is black and 1 is white. +\end{minipage}\vspace{4mm} + +%--#] GTwoText : +%--#[ CTwoText : + +\noindent +\begin{minipage}{4.53cm} +\begin{axopicture}{(110,110)(-10,0)} +\AxoGrid(0,0)(10,10)(9,9){LightGray}{0.5} +\ArrowLine(30,65)(60,25) +\SetPFont{Times-Bold}{10} +\CTwoText(30,65){LightYellow}{Blue}{That is}{no proof!} +\SetPFont{Courier-Bold}{14} +\CTwoText(60,25){Red}{Yellow}{Yes}{it is} +\end{axopicture} +\end{minipage} +\begin{minipage}{10.8cm} +\label{ctwotext} +\verb:\ArrowLine(30,65)(60,25): \hfill \\ +\verb:\SetPFont{Times-Bold}{10}: \hfill \\ +\verb:\CTwoText(30,65){LightYellow}{Blue}: \\ + \verb:{That is}{no proof!}: \hfill \\ +\verb:\SetPFont{Courier-Bold}{14}: \hfill \\ +\verb:\CTwoText(60,25){Red}{Yellow}{Yes}{it is}: \hfill \\ +The \verb:\CTwoText: command writes a centered box with two lines of text in +it. It uses Axodraw's current Postscript font. The third argument is +the color of both +the box and the text. The fourth argument is the color with which the box +will be filled. +\end{minipage}\vspace{4mm} + +%--#] CTwoText : +%--#[ Features : + +Note that because you can now use \LaTeX{} commands for the text +arguments of the commands described in this section, the effects of +the \verb+\BTwoText+, \verb+\GTwoText+, and \verb+\CTwoText+ can be +achieved also by the use of regular \verb:\BText: etc commands. +Mathematics can also be used. (None of these was possible in v.\ 1 of +axodraw.) Here are some examples: \vspace{4mm} + +\noindent +\begin{minipage}{5.5cm} +\begin{axopicture}{(150,90)(-10,0)} +\AxoGrid(0,0)(10,10)(12,9){LightGray}{0.5} +\SetPFont{Helvetica}{15} +\BText(60,45){% + \begin{minipage}{4.5cm} + Here is boxed text in a larger size, including + mathematics: $\alpha^2$. + \end{minipage}% +} +\end{axopicture} +\end{minipage} +\begin{minipage}{8.5cm} +\label{btext2} +\begin{verbatim} +\SetPFont{Helvetica}{15} +\BText(70,45){% + \begin{minipage}{4.5cm} + Here is boxed text in a + larger size, including + mathematics: $\alpha^2$. + \end{minipage}% +} +\end{verbatim} +This example shows that the \verb:\BText: command can also be used +with minipages and other \LaTeX{} methods to make more complicated +boxed texts. +\end{minipage} +\vspace{4mm} + +\noindent +\begin{minipage}{5.5cm} +\begin{axopicture}{(150,90)(-10,0)} +\AxoGrid(0,0)(10,10)(13,9){LightGray}{0.5} +\SetPFont{}{15} +\BText(65,45){% + \begin{minipage}{4cm} + \sffamily Here is boxed text in a + large size, including + mathematics: $\alpha^2$. + \end{minipage}% +} +\end{axopicture} +\end{minipage} +\begin{minipage}{8.5cm} +\label{btext2.mod} +\begin{verbatim} +\SetPFont{}{15} +\BText(65,45){% + \begin{minipage}{4cm} + \sffamily Here is boxed text in a + large size, including + mathematics: $\alpha^2$. + \end{minipage}% +} +\end{verbatim} +But if you use mathematics, the text may be more elegant if you use +the document font, which has matching fonts for text and mathematics. +Use of a sans-serif font (by \verb:\sffamily:) may be better in a diagram. +\end{minipage} +\vspace{4mm} + +%--#] Features : +%>>#] Text : +%>>#[ Options : + +\subsection{Options} +\label{sec:options} + +Almost all of axodraw2's line-drawing commands take optional +arguments. The form here is familiar from many standard \LaTeX{} +commands. The optional arguments are placed in square brackets after +the command name, and are made of a comma-separated list of items of +the form: \texttt{keyword} or \texttt{keyword=value}. The required +arguments are placed afterwards. + +Optional arguments can be used to set particular characteristics of a +line, e.g., whether it is dashed or has an arrow. They can also be +used to set some of the line's parameters, to be used instead of +default values. (The default values can be adjusted by commands +listed in Sec.\ \ref{sec:settings}. Those commands are useful for +adjusting parameters that apply to multiple lines, while the optional +arguments are useful for setting parameters for individual lines.) + +The original axodraw only had different command names to determine +whether lines were dashed, or had arrows, etc. The new version +retains these commands, +but now the basic commands +(\verb:\Line:, \verb:\Arc:, \verb:\Gluon:, etc) can also be treated as +generic commands, with the different varieties (dashed, double, and/or +with an arrow) being set by options. + +The same set of options are available for all types of line. However, +not all apply or are implemented for particular types of line. Thus, +\texttt{clockwise} is irrelevant for a straight line, while +\texttt{arrow} is not implemented for gluons, photons and zigzag +lines. Warnings are given for unimplemented features, while +inapplicable arguments are ignored. + +The full set of options. +\begin{center} +\begin{tabular}{ll} + color=\colorname & Set the line in this color. \\ + colour=\colorname & Same as color=\colorname. \\ + dash & Use a dashed line. \\ + dsize=\num & Set the dash size (when a line is dashed). \\ + dashsize=\num & Same as dsize=\num. \\ + double & Use a double line. \\ + sep=\num & Sets the separation for a double line. \\ + linesep=\num & Same as sep=\num. \\ + width=\num & Sets line width for this line only.\\[2mm] + clock & For arcs, makes the arc run clockwise. \\ + clockwise & For arcs, makes the arc run clockwise. \\[2mm] + arrow & Use an arrow.\\ + flip & If there is an arrow, its direction is flipped. \\ + + arrowpos=\num & The number should be between zero and one and\\ + & indicates where along the line the arrow should be. \\ + & 1 is at the end. 0.5 is halfway (the initial default).\\ + arrowaspect=\num & See Sec.\ \ref{sec:arrows}. \\ + arrowlength=\num & See Sec.\ \ref{sec:arrows}. \\ + arrowheight=\num & See Sec.\ \ref{sec:arrows}. \\ + arrowinset=\num & See Sec.\ \ref{sec:arrows}. \\ + arrowscale=\num & See Sec.\ \ref{sec:arrows}. \\ + arrowstroke=\num & See Sec.\ \ref{sec:arrows}. \\ + arrowwidth=\num & See Sec.\ \ref{sec:arrows}. \\ + inset=\num & Same as arrowinset.\\ +\end{tabular} +\end{center} +The options without an extra argument, e.g., \texttt{arrow}, are +actually of a boolean type. That is, they can also be used with a +suffix ``\texttt{=true}'' or ``\texttt{=false}'', e.g., +\texttt{arrow=true} or \texttt{arrow=false}. + +If an option is not provided, its default value is used. Defaults are +no dashes, no double lines, anticlockwise arcs, no arrow and if an +arrow is asked for, its position is halfway along the line. Other +arrow settings are explained in Sec.\ \ref{sec:arrows}. There are +also default values for dash size (3) and the separation of double +lines (2). + +The full set of the generic line commands with their syntax is +\begin{center} + \begin{tabular}{l} + \verb+\Line[options](x1,y1)(x2,y2)+ \\ + \verb+\Arc[options](x,y)(r,theta1,theta2)+ \\ + \verb+\Bezier[options](x1,y1)(x2,y2)(x3,y3)(x4,y4)+ \\ + \verb+\Gluon[options](x1,y1)(x2,y2){amplitude}{windings}+ \\ + \verb+\GluonArc[options](x,y)(r,theta1,theta2){amplitude}{windings}+ \\ + \verb+\GluonCirc[options](x,y)(r,phase){amplitude}{windings}+ \\ + \verb+\Photon[options](x1,y1)(x2,y2){amplitude}{windings}+ \\ + \verb+\PhotonArc[options](x,y)(r,theta1,theta2){amplitude}{windings}+ \\ + \verb+\ZigZag[options](x1,y1)(x2,y2){amplitude}{windings}+ \\ + \verb+\ZigZagArc[options](x,y)(r,theta1,theta2){amplitude}{windings}+ \\ + \end{tabular} +\end{center} +The applicability of the options is as follows +\begin{center} + \begin{tabular}{lcc} + & Arrow, etc & Clockwise \\ + \verb+\Line+ & Y & N \\ + \verb+\Arc+ & Y & Y \\ + \verb+\Bezier+ & Y & N \\ + \verb+\Gluon+ & N & N \\ + \verb+\GluonArc+ & N & Y \\ + \verb+\GluonCirc+ & N & N \\ + \verb+\Photon+ & N & N \\ + \verb+\PhotonArc+ & N & Y \\ + \verb+\ZigZag+ & N & N \\ + \verb+\ZigZagArc+ & N & Y \\ + \end{tabular} +\end{center} +The arrow options include those for setting the arrow dimensions. +Options not indicated in the last table apply to all cases. + +%{\sc The next options still have to be implemented, but it seems the most +%sensible thing to do.}\vspace{3mm} +% +%The third family is the one of the shapes: +% +%\begin{center} +%\begin{minipage}{14cm} +%\begin{verbatim} +%\Box[options](x1,y1)(x2,y2) +%\Tri[options](x1,y1)(x2,y2)(x3,y3) +%\Polygon[options]{(x1,y1)(x2,y2)...(xn,yn)} +%\Circ[options](x1,y1){radius} +%\Oval[options](x1,y1)(height,width)(rotation) +%\end{verbatim} +%\end{minipage} +%\end{center} +% +%\noindent The options here are: +%\begin{center} +%\begin{tabular}{ll} +% centered & For boxes: x1,y1 is the center. x2,y2 is width, +% height \\ +% blanked & Inside is blanked out. \\ +% inside & (Over)write only the inside. \\ +% color,line=$<$color$>$ & Main color. \\ +% filled,fill=$<$color$>$ & When both the outline and the inside are written. \\ +% gray,grayscale=\num & Inside is in gray. Filled overwrites this. \\ +% rotation=\num & Only for centered boxes: rotation angle. +%\end{tabular} +%\end{center} +%The options gray and filled imply blanked. Hence it is not needed to use +%blanked when either of those options is used. The default values are that +%none of these options are used. + +Some examples are: +\begin{verbatim} + \Line[double,sep=1.5,dash,dsize=4](10,10)(70,30) + \Line[double,sep=1.5,arrow,arrowpos=0.6](10,10)(70,30) +\end{verbatim} + +The options can also be used on the more explicit commands as extra +options. Hence it is possible to use +\begin{verbatim} + \DoubleLine[dash,dsize=4](10,10)(70,30){1.5} +\end{verbatim} +instead of the first line in the previous example. + +One may notice that some of the options are not accessible with the more +explicit commands. For example, it is possible to put arrows on B\'ezier +curves only by using the option `arrow' for the B\'ezier command. + +%>>#] Options : +%>>#[ Remarks about Gluons : +% +\subsection{Remarks about Gluons} +\label{sec:gluon.remarks} + +There are 12 commands that concern gluons. This allows much freedom in +developing one's own style. Gluons can be drawn as single solid lines, as +double lines, as dashed lines and as dashed double lines. + +Gluons have an amplitude and a number of windings. By varying these +quantities one may obtain completely different gluons as in: + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,90)(-10,0)} +\AxoGrid(0,0)(10,10)(9,8){LightGray}{0.5} +\Gluon(10,70)(80,70){3}{5} +\Gluon(10,50)(80,50){3}{9} +\Gluon(10,30)(80,30){5}{7} +\Gluon(10,10)(80,10){8}{9} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gluons} +\verb:\Gluon(10,70)(80,70){3}{5}: \hfill \\ +\verb:\Gluon(10,50)(80,50){3}{9}: \hfill \\ +\verb:\Gluon(10,30)(80,30){5}{7}: \hfill \\ +\verb:\Gluon(10,10)(80,10){8}{9}: +\end{minipage}\vspace{4mm} + +One may change the orientation of the windings by reversing the +direction in which the gluon is drawn and/or changing the sign of the +amplitude: + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,90)(-10,0)} +\AxoGrid(0,0)(10,10)(9,8){LightGray}{0.5} +\DoubleGluon(10,70)(80,70){5}{7}{1.2} +\DoubleGluon(80,50)(10,50){5}{7}{1.2} +\DoubleGluon(10,30)(80,30){-5}{7}{1.2} +\DoubleGluon(80,10)(10,10){-5}{7}{1.2} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gluonss} +\verb:\DoubleGluon(10,70)(80,70){5}{7}{1.2}: \hfill \\ +\verb:\DoubleGluon(80,50)(10,50){5}{7}{1.2}: \hfill \\ +\verb:\DoubleGluon(10,30)(80,30){-5}{7}{1.2}: \hfill \\ +\verb:\DoubleGluon(80,10)(10,10){-5}{7}{1.2}: +\end{minipage}\vspace{4mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,70)(-10,0)} +\AxoGrid(0,0)(10,10)(9,7){LightGray}{0.5} +\GluonArc(45,20)(40,20,160){5}{8} +\GluonArc(45,0)(40,20,160){-5}{8} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gluonarcA} +\verb:\GluonArc(45,20)(40,20,160){5}{8}:\hfill \\ +\verb:\GluonArc(45,0)(40,20,160){-5}{8}:\hfill \\ +Here one can see that the sign of the amplitude gives a completely +different aspect to a gluon on an arc segment. +\end{minipage}\vspace{4mm} + +There are two ways of drawing a gluon circle. One is with the command +GluonCirc and the other is an arc of 360 degrees with the GluonArc command. +The second way has a natural attachment point, because the GluonArc +command makes gluons with a begin- and endpoint. \vspace{4mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,80)(-15,0)} +\AxoGrid(0,0)(10,10)(8,8){LightGray}{0.5} +\GluonCirc(40,40)(30,0){5}{16} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +%\label{gluoncirc} +\verb:\GluonCirc(40,40)(30,0){5}{16}:\hfill \\ +This is the `complete circle'. If one likes to attach one or more lines to +it one should take into account that the best places for this are at a +distance radius+amplitude from the center of the circle. One can rotate the +circle by using the phase argument. +\end{minipage}\vspace{4mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,80)(-15,0)} +\AxoGrid(0,0)(10,10)(8,8){LightGray}{0.5} +\GluonArc(40,40)(30,0,360){5}{16} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{gluonarc360} +\verb:\GluonArc(40,40)(30,0,360){5}{16}:\hfill \\ +In the 360 degree arc there is a natural point of attachment. Of course +there is only one such point. If one needs more than one such point one +should use more than one arc segment. +\end{minipage}\vspace{4mm} + +Some examples are: + +\begin{center} \begin{axopicture}{(460,60)(0,0)} +\Gluon(7,30)(27,30){3}{3} +\GluonCirc(50,30)(20,0){3}{16} +\Gluon(73,30)(93,30){3}{3} +\Vertex(27,30){1.5} +\Vertex(73,30){1.5} +% +\Gluon(110,30)(130,30){3}{3} +\GluonArc(150,30)(20,0,180){3}{8} +\GluonArc(150,30)(20,180,360){3}{8} +\Gluon(170,30)(190,30){3}{3} +\Vertex(130,30){1.5} +\Vertex(170,30){1.5} +% +\Gluon(210,30)(230,30){3}{3} +\GluonArc(250,30)(20,0,180){-3}{8} +\GluonArc(250,30)(20,180,360){-3}{8} +\Gluon(270,30)(290,30){3}{3} +\Vertex(230,30){1.5} +\Vertex(270,30){1.5} +% +\DashLine(310,30)(330,30){3} +\GluonArc(350,30)(20,-180,180){3}{16} +\Vertex(330,30){1.5} +% +\DashLine(387,30)(407,30){3} +\GluonCirc(430,30)(20,0){3}{16} +\Vertex(407,30){1.5} +% +\end{axopicture} \end{center} +This picture was generated with the code: +\begin{verbatim} +\begin{center} \begin{axopicture}{(460,60)(0,0)} + \Gluon(7,30)(27,30){3}{3} + \GluonCirc(50,30)(20,0){3}{16} + \Gluon(73,30)(93,30){3}{3} + \Vertex(27,30){1.5} + \Vertex(73,30){1.5} + \Gluon(110,30)(130,30){3}{3} + \GluonArc(150,30)(20,0,180){3}{8} + \GluonArc(150,30)(20,180,360){3}{8} + \Gluon(170,30)(190,30){3}{3} + \Vertex(130,30){1.5} + \Vertex(170,30){1.5} + \Gluon(210,30)(230,30){3}{3} + \GluonArc(250,30)(20,0,180){-3}{8} + \GluonArc(250,30)(20,180,360){-3}{8} + \Gluon(270,30)(290,30){3}{3} + \Vertex(230,30){1.5} + \Vertex(270,30){1.5} + \DashLine(310,30)(330,30){3} + \GluonArc(350,30)(20,-180,180){3}{16} + \Vertex(330,30){1.5} + \DashLine(387,30)(407,30){3} + \GluonCirc(430,30)(20,0){3}{16} + \Vertex(407,30){1.5} +\end{axopicture} \end{center} +\end{verbatim} + +%>>#] Remarks about Gluons : +%>>#[ Arrows : + +\subsection{Remarks about arrows} +\label{sec:arrows} + +%--#[ General : + +The old Axodraw arrows were rather primitive little triangles. The JaxoDraw +program has introduced fancier arrows which the user can also customize. +There are parameters connected to this as shown in the figure: +\begin{center} +\begin{axopicture}{(150,100)(0,0)} +\AxoGrid(0,0)(10,10)(15,10){LightGray}{0.5} +\SetWidth{3} +%\Line(10,50)(130,50) +%\FilledPolygon{(140,50)(90,90)(105,50)(90,10)}{White} +%\Polygon{(140,50)(90,90)(105,50)(90,10)}{Black} +%\SetWidth{0.5} +%\LongArrow(85,50)(85,90) +%\LongArrow(90,5)(105,5) +%\LongArrow(90,95)(140,95) +%\SetPFont{Helvetica}{9} +%\PText(110,85)(0)[l]{Length} +%\PText(76,71)(90)[c]{Width} +%\PText(110,5)(0)[l]{Inset} +\Line[arrow,arrowinset=0.3,arrowaspect=1,arrowwidth=40,arrowpos=1, + arrowstroke=3](10,50)(100,50) +\SetWidth{0.5} +\LongArrow(55,50)(55,90) +\LongArrow(60,5)(84,5) +\LongArrow(60,95)(140,95) +\SetPFont{Helvetica}{9} +\PText(100,85)(0)[l]{Length} +\PText(46,71)(90)[c]{Width} +\PText(90,5)(0)[l]{Inset} +\end{axopicture}\vspace{2mm} \\ +\verb:\Line[arrow,arrowinset=0.3,arrowaspect=1,arrowwidth=40,arrowpos=1,:\\ +\verb:arrowstroke=3](10,50)(100,50): +\end{center} +The full set of parameters is: +\begin{description} +\item[aspect] A multiplicative parameter when the length is calculated +from the width. The normal formula is: +$\mbox{length}=2\times \mbox{width}\times \mbox{aspect}$. +\item[inset] The fraction of the length that is taken inward. +\item[length] The full length of the arrowhead. +\item[position] The position of the arrow in the line as a fraction of the +length of the line. +\item[scale] A scale parameter for the complete arrowhead. +\item[stroke] The width of the line that makes up the arrowhead. If the +value is not set (default value is zero) the arrow is filled and overwrites +whatever was there. In the case of a stroke value the contents are +overwritten in the background color. +\item[width] The half width of the arrowhead. +\end{description} +The parameters can be set in two ways. One is with one of the commands +\begin{center} +\begin{tabular}{ll} +\verb:\SetArrowScale{number}: & Initial value is 1. \\ +\verb:\SetArrowInset{number}: & Initial value is 0.2 \\ +\verb:\SetArrowAspect{number}: & Initial value is 1.25 \\ +\verb:\SetArrowPosition{number}: & Initial value is 0.5 \\ +\verb:\SetArrowStroke{number}: & Initial value is 0 \\ +\end{tabular} \vspace{2mm} \\ +\end{center} +(A complete list of commands for setting defaults is in +Sec.\ \ref{sec:settings}.) +These commands determine settings that will hold for all following +commands, up to the end of whatever \LaTeX{} or \TeX{} grouping the +default setting is given in. E.g., setting a default value inside an +\texttt{axopicture} environment sets it until the end of the +environment only. (Thus the settings obey the normal rules of +\LaTeX{} for scoping.) + +The other way is to use one or more of these parameters as options in a +command that uses an arrow. The general use of options is in Sec.\ +\ref{sec:options}. The options that are available are +\begin{center} +\begin{tabular}{ll} + arrow & initial default=false \\ + arrowscale=\num & initial default=1 \\ + arrowwidth=\num & initial default=0 \\ + arrowlength=\num & initial default=0 \\ + arrowpos=\num & initial default=0.5 \\ + arrowinset=\num & initial default=0.2 \\ + arrowstroke=\num & initial default=0 \\ + arrowaspect=\num & initial default=1.25 \\ + flip & initial default=false +\end{tabular} +\end{center} +The arrow option tells the program to draw an arrow. Without it no +arrow will be drawn. The flip option indicates that the direction of +the arrow should be reversed from the `natural' direction. + +When +neither the width nor the length are specified, but instead both are +given as zero, they are computed from the line width (and the line +separation when there is a double line). The formula is: +\begin{eqnarray} + \mbox{Arrowwidth} & = & + 1.2 \times \left( \mbox{linewidth} + + 0.7 \times \mbox{separation} + + 1 + \right) + \times \mbox{arrowscale}, +\\ +\label{arrowlength} + \mbox{Length} & = & + 2 \times \mbox{arrowwidth} \times \mbox{arrowaspect}. +\end{eqnarray} +%If however $\mbox{linewidth} + \frac{1}{4} \times \mbox{separation} < +%0.5$ the formula for the arrow width becomes $\mbox{arrowwidth} = 2.5 +%\times \mbox{arrowscale}$. +If, however, $1.2 \times(\mbox{linewidth}+0.7\times\mbox{separation}+1)$ is less +than 2.5, the formula for the arrow width becomes +$\mbox{arrowwidth}=2.5\times\mbox{arrowscale}$. + +If only one of the arrowwidth or the arrowlength parameters is zero, +it is computed from the other non-zero parameter using formula +(\ref{arrowlength}). When both are non-zero, those are the values that +are used. + +The position of the arrowhead is a bit tricky. The arrowpos parameter is a +fraction of the length of the line and indicates the position of the center +of the arrowhead. This means that when arrowpos is one, the arrowhead +sticks out beyond the end of the line by half the arrowlength. When for +instance the line width is 0.5, the default length of the arrowhead +defaults to 6.25. Hence if one would like to compensate for this one should +make the line 3.125 points shorter. Usually 3 pt will be sufficient. + +Because of backward compatibility axodraw2 has many individual commands for +lines with arrows. We present them here, together with some `options' +varieties.\vspace{4mm} + +%--#] General : +%--#[ ArrowLine : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,80)(-10,0)} +\AxoGrid(0,0)(10,10)(9,8){LightGray}{0.5} +\Line[arrow,arrowscale=2](10,70)(80,70) +\Line[arrow,arrowpos=0.8,flip](10,50)(80,50) +\Line[arrow](10,30)(80,30) +\ArrowLine(10,10)(80,10) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{arrowline} +\verb:\Line[arrow,arrowscale=2](10,70)(80,70): \hfill \\ +\verb:\Line[arrow,arrowpos=0.8,flip](10,50)(80,50): \hfill \\ +\verb:\Line[arrow](10,30)(80,30): \hfill \\ +\verb:\ArrowLine(10,10)(80,10): \hfill \\ +The default position for the arrow is halfway (arrowpos=0.5). With the line +command and the options we can put the arrow in any position. +\end{minipage}\vspace{4mm} + +%--#] ArrowLine : +%--#[ LongArrow : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,60)(-10,0)} +\AxoGrid(0,0)(10,10)(9,6){LightGray}{0.5} +\Line[arrow,arrowpos=1](10,30)(80,30) +\LongArrow(10,10)(80,10) +\SetWidth{4} +\LongArrow[arrowscale=0.8](10,50)(70,50) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{longarrow} +\verb:\Line[arrow,arrowpos=1](10,30)(80,30): \hfill \\ +\verb:\LongArrow(10,10)(80,10): \hfill \\ +\verb:\SetWidth{4}: \hfill \\ +\verb:\LongArrow[arrowscale=0.8](10,50)(70,50): \hfill \\ +The \verb:\LongArrow: command just places the arrowhead at the end of the +line. The size of the arrowhead is a function of the linewidth. +\end{minipage}\vspace{4mm} + +%--#] LongArrow : +%--#[ ArrowDoubleLine : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,100)(-10,0)} +\AxoGrid(0,0)(10,10)(9,10){LightGray}{0.5} +\SetArrowStroke{1} +\Line[arrow,arrowpos=1,double,sep=5,arrowscale=1.3](10,90)(75,90) +\Line[arrow,arrowpos=1,double,sep=2,arrowscale=1.5](10,70)(80,70) +\Line[arrow,arrowpos=1,double,sep=2](10,50)(80,50) +\Line[arrow,double,sep=2](10,30)(80,30) +\ArrowDoubleLine(10,10)(80,10){2} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{arrowdoubleline} +\verb:\SetArrowStroke{1}: \hfill \\ +\verb:\Line[arrow,arrowpos=1,double,sep=5,arrowscale=1.3]: \hfill \\ + \verb: (10,90)(75,90): \hfill \\ +\verb:\Line[arrow,arrowpos=1,double,sep=2,arrowscale=1.5]: \hfill \\ + \verb: (10,70)(80,70): \hfill \\ +\verb:\Line[arrow,arrowpos=1,double,sep=2](10,50)(80,50): \hfill \\ +\verb:\Line[arrow,double,sep=2](10,30)(80,30): \hfill \\ +\verb:\ArrowDoubleLine(10,10)(80,10){2}: \hfill \\ +As one can see, the arrows also work with double lines. +\end{minipage}\vspace{4mm} + +%--#] ArrowDoubleLine : +%--#[ ArrowDashLine : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,80)(-10,0)} +\AxoGrid(0,0)(10,10)(9,8){LightGray}{0.5} +\Line[arrow,arrowpos=0.3,dash,dsize=3,arrowscale=1.5](10,70)(80,70) +\DashArrowLine(10,50)(80,50){3} +\Line[arrow,dash,dsize=3](10,30)(80,30) +\ArrowDashLine(10,10)(80,10){3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{arrowdashline} +\verb:\Line[arrow,arrowpos=0.3,dash,dsize=3,arrowscale=1.5]: \\ + \verb:(10,70)(80,70): \\ +\verb:\DashArrowLine(10,50)(80,50){3}: \\ +\verb:\Line[arrow,dash,dsize=3](10,30)(80,30): \\ +\verb:\ArrowDashLine(10,10)(80,10){3}: \\ +We have not taken provisions for the dashes to be centered in the +arrowhead, because at times that is nearly impossible. The commands +\verb:\ArrowDashLine: and \verb:\DashArrowLine: are identical. +\end{minipage}\vspace{4mm} + +%--#] ArrowDashLine : +%--#[ ArrowDashDoubleLine : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,80)(-10,0)} +\AxoGrid(0,0)(10,10)(9,8){LightGray}{0.5} +\SetArrowStroke{0.5} +\Line[arrow,arrowpos=1,dash,dsize=3,double,sep=1.5,arrowscale=1.5](10,70)(80,70) +\DashArrowDoubleLine(10,50)(80,50){1.5}{3} +\Line[arrow,dash,dsize=3,double,sep=1.5](10,30)(80,30) +\ArrowDashDoubleLine(10,10)(80,10){1.5}{3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{arrowdashdoubleline} +\verb:\SetArrowStroke{0.5}: \\ +\verb:\Line[arrow,arrowpos=1,dash,dsize=3,double: \\ + \verb:,sep=1.5,arrowscale=1.5](10,70)(80,70): \\ +\verb:\DashArrowDoubleLine(10,50)(80,50){1.5}{3}: \\ +\verb:\Line[arrow,dash,dsize=3](10,30)(80,30): \\ +\verb:\ArrowDashDoubleLine(10,10)(80,10){1.5}{3}: \\ +The \verb:\ArrowDashDoubleLine: and \verb:\DashArrowDoubleLine: +commands are identical. +\end{minipage}\vspace{4mm} + +%--#] ArrowDashDoubleLine : +%--#[ LongArrowDashLine : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,80)(-10,0)} +\AxoGrid(0,0)(10,10)(9,8){LightGray}{0.5} +\Line[arrow,arrowpos=0,dash,dsize=3,arrowscale=1.5,flip](10,70)(80,70) +\DashLongArrowLine(10,50)(80,50){3} +\Line[arrow,arrowpos=1,dash,dsize=3](10,30)(80,30) +\LongArrowDashLine(10,10)(80,10){3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{longarrowdashline} +\verb:\Line[arrow,arrowpos=0,dash,dsize=3,arrowscale=1.5: \\ + \verb:,flip](10,70)(80,70): \\ +\verb:\DashLongArrowLine(10,50)(80,50){3}: \\ +\verb:\Line[arrow,arrowpos=1,dash,dsize=3](10,30)(80,30): \\ +\verb:\LongArrowDashLine(10,10)(80,10){3}: \\ +The commands +\verb:\LongArrowDashLine:, \verb:\DashLongArrowLine:, +\verb:\LongArrowDash: and \verb:\DashLongArrow: are identical. +\end{minipage}\vspace{4mm} + +%--#] LongArrowDashLine : +%--#[ ArrowArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,140)(-10,0)} +\AxoGrid(0,0)(10,10)(9,14){LightGray}{0.5} +\Arc[arrow,arrowpos=1,clock](45,95)(40,160,20) +\LongArrowArcn(45,80)(40,160,20) +\Arc[arrow,arrowpos=0.5,clock](45,65)(40,160,20) +\ArrowArcn(45,50)(40,160,20) +\Arc[arrow,arrowpos=1](45,35)(40,20,160) +\LongArrowArc(45,20)(40,20,160) +\Arc[arrow,arrowpos=0.5](45,5)(40,20,160) +\ArrowArc(45,-10)(40,20,160) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{arrowarc} +\verb:\Arc[arrow,arrowpos=0,flip](45,95)(40,20,160): \\ +\verb:\LongArrowArcn(45,80)(40,20,160): \\ +\verb:\Arc[arrow,arrowpos=0.5](45,65)(40,20,160): \\ +\verb:\ArrowArcn(45,50)(40,20,160): \\ +\verb:\Arc[arrow,arrowpos=1](45,35)(40,20,160): \\ +\verb:\LongArrowArc(45,20)(40,20,160): \\ +\verb:\Arc[arrow,arrowpos=0.5](45,5)(40,20,160): \\ +\verb:\ArrowArc(45,-10)(40,20,160): \\ +The \verb:Arc: and the \verb:CArc: commands are identical. +\end{minipage}\vspace{4mm} + +%--#] ArrowArc : +%--#[ ArrowDashArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,110)(-10,0)} +\AxoGrid(0,0)(10,10)(9,11){LightGray}{0.5} +\Arc[arrow,dash,dsize=3,arrowpos=0.5,clock](45,65)(40,160,20) +\ArrowDashArcn(45,50)(40,160,20){3} +\Arc[arrow,dash,dsize=3,arrowpos=1](45,35)(40,20,160) +\LongArrowDashArc(45,20)(40,20,160){3} +\Arc[arrow,dash,dsize=3,arrowpos=0.5](45,5)(40,20,160) +\ArrowDashArc(45,-10)(40,20,160){3} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{arrowdasharc} +\verb:\Arc[arrow,dash,dsize=3,arrowpos=0.5]: \\ + \verb:(45,65)(40,20,160): \\ +\verb:\ArrowDashArcn(45,50)(40,20,160){3}: \\ +\verb:\Arc[arrow,dash,dsize=3,arrowpos=1]: \\ + \verb:(45,35)(40,20,160): \\ +\verb:\LongArrowDashArc(45,20)(40,20,160){3}: \\ +\verb:\Arc[arrow,dash,dsize=3,arrowpos=0.5]: \\ + \verb:(45,5)(40,20,160): \\ +\verb:\ArrowDashArc(45,-10)(40,20,160){3}: \\ +The \verb:DashArrowArc: and the \verb:ArrowDashArc: commands are identical. +So are the commands \verb:DashArrowArcn: and \verb:ArrowDashArcn:. +\end{minipage}\vspace{4mm} + +%--#] ArrowDashArc : +%--#[ ArrowDashDoubleArc : + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(90,80)(-10,0)} +\AxoGrid(0,0)(10,10)(9,8){LightGray}{0.5} +\Arc[arrow,dash,dsize=3,double,sep=1.5,arrowpos=0.5](45,35)(40,20,160) +\ArrowDashDoubleArc(45,20)(40,20,160){1.5}{3} +\Arc[arrow,double,sep=1.5,arrowpos=0.5](45,5)(40,20,160) +\ArrowDoubleArc(45,-10)(40,20,160){1.5} +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{arrowdashdoublearc} +\verb:\Arc[arrow,dash,dsize=3,double,sep=1.5: \\ + \verb:,arrowpos=0.5](45,35)(40,20,160): \\ +\verb:\ArrowDashDoubleArc(45,20)(40,160,20){1.5}{3}: \\ +\verb:\Arc[arrow,double,sep=1.5,arrowpos=0.5]: \\ + \verb:(45,5)(40,20,160): \\ +\verb:\ArrowDoubleArc(45,-10)(40,20,160){1.5}: \\ +Other commands involving Long do not exist. The options can take care of +their functionality. +\end{minipage}\vspace{4mm} + +%--#] ArrowDashDoubleArc : +%--#[ Bezier : + +Computing the position of the arrow in a B\'ezier curve is a bit complicated. +Let us recall the definition of a cubic B\'ezier curve: +\begin{eqnarray} + x & = & x_0 (1-t)^3 + 3 x_1 t (1-t)^2 + 3 x_2 t^2 (1-t) + x_3 t^3 + \nonumber \\ + y & = & y_0 (1-t)^3 + 3 y_1 t (1-t)^2 + 3 y_2 t^2 (1-t) + y_3 t^3 +\end{eqnarray} +Computing the length of the curve is done with the integral +\begin{eqnarray} + L & = & \int_0^1 dt + \sqrt{ \left( \frac{dx}{dt} \right)^2 + \left( \frac{dy}{dt} \right )^2 }, +\end{eqnarray} +which is an integral over the square root of a quartic polynomial. This we +do with a 16 point Gaussian quadrature and it gives us more than enough +accuracy\footnote{We need to compute the length of the B\'ezier curve also +when we want to put a dash pattern on it. The exact dash size is determined +such that an integer number of patterns fits in the line.}. Let us assume +now that we want the arrow at 0.6 of the length. To find the exact fraction +of the length involves finding the upper limit of the integral for which +the length is $0.6 L$. This requires an iteration procedure till we have a +reasonable accuracy for the position $(x,y)$. After that we have to calculate +the derivative in this point as well. + +Because the B\'ezier curves are new commands in axodraw2 there is no need for +backwards compatibility in the use of arrows. Hence all arrow commands are +done by means of the options. Some examples are: +\vspace{4mm} + +\noindent +\begin{minipage}{3.83cm} +\begin{axopicture}{(80,80)(-15,0)} +\AxoGrid(0,0)(10,10)(8,8){LightGray}{0.5} +\Bezier[arrow](10,10)(30,30)(10,50)(30,70) +\Bezier[arrow,dash,dsize=3](30,10)(50,30)(30,50)(50,70) +\Bezier[arrow,arrowpos=1,double,sep=1,arrowstroke=0.5](50,10)(70,30)(50,50)(70,70) +\end{axopicture} +\end{minipage} +\begin{minipage}{11.5cm} +\label{arrowbezier} +\verb:\Bezier[arrow](10,10)(30,30)(10,50)(30,70): \\ +\verb:\Bezier[arrow,dash,dsize=3](30,10)(50,30): \\ + \verb:(30,50)(50,70): \\ +\verb:\Bezier[arrow,arrowpos=1,double,sep=1,arrowstroke: \\ + \verb:=0.5](50,10)(70,30)(50,50)(70,70): +\end{minipage}\vspace{4mm} + +%--#] Bezier : +%>>#] Arrows : +%>>#[ Settings : + +\subsection{Units and scaling} +\label{sec:units} + +When you have constructed a diagram, you may need to change its scale, +to make it larger or smaller. Axodraw2 provides ways of doing this, +for scaling diagrams without recoding all the individual coordinates. +However the requirements for the nature of the scaling change between +different cases. For example, suppose a diagram is designed for use in +a journal article and you wish to use it in the slides for a seminar. +Then you will want to enlarge both the geometric size of the diagram's +objects and the text labels it contains. But if you wish to use a +scaled diagram in another place in a journal article, you will wish to +scale its lines etc, but will probably not wish to scale the text (to +preserve its legibility). + +Axodraw2 therefore provides tools for the different situations, so we +will now explain what to do. The commands to achieve this all appear +in the list of parameter-setting commands in Sec.\ \ref{sec:settings}. + + +\subsubsection{Scaling for slides} + +Suppose the original diagram is +\begin{center} +\begin{minipage}{10cm} +\begin{verbatim} + \SetPFont{Helvetica-Oblique}{12} + Document text. Then diagram: + \begin{axopicture}(60,43) + \Arc[arrow](30,0)(30,0,180) + \Text(30,33)[b]{$\alpha P_1$} + \CText(30,10){Red}{Yellow}{Arc} + \end{axopicture} +\end{verbatim} +\end{minipage} +\end{center} +to give +\begin{center} + \SetPFont{Helvetica-Oblique}{12} + Document text. Then diagram: + \begin{axopicture}(60,43) + \Arc[arrow](30,0)(30,0,180) + \Text(30,33)[b]{$\alpha P_1$} + \CText(30,10){Red}{Yellow}{Arc} + \end{axopicture} +\end{center} +Then you could double the scale of the diagram by +\begin{center} +\begin{minipage}{10cm} +\begin{verbatim} + \SetScale{2} + \fontsize{24}{26}\selectfont + \SetPFont{Helvetica-Oblique}{12} + Document text. Then diagram: + \begin{axopicture}(60,43) + \Arc[arrow](30,0)(30,0,180) + \Text(30,33)[b]{$\alpha P_1$} + \CText(30,10){Red}{Yellow}{Arc} + \end{axopicture} +\end{verbatim} +\end{minipage} +\end{center} +to get +\begin{center} + \SetScale{2} + \fontsize{24}{26}\selectfont + \SetPFont{Helvetica-Oblique}{12} + Document text. Then diagram: + \begin{axopicture}(60,43) + \Arc[arrow](30,0)(30,0,180) + \Text(30,33)[b]{$\alpha P_1$} + \CText(30,10){Red}{Yellow}{Arc} + \end{axopicture} +\end{center} +We have changed the size of the document font, as would be appropriate +for a make slides for a presentation; this we did by the +\verb+\fontsize+ command. The arc and the space inserted +in the document for the diagram have scaled up. The label inserted by +the \verb:\Text: command has changed to match the document font. The +postscript text in the \verb:\CText: was specified to be at +$\unit[12]{pt}$, but is now scaled up also. + +The above behavior is what axodraw2 does by default, and is what v.\ 1 +did. + + +\subsubsection{Scaling within article} + +If you wanted to make an enlarged figure in a journal article, you +would not change the document font. But the obvious modification to +the previous example is +\begin{center} +\begin{minipage}{10cm} +\begin{verbatim} + \SetScale{2} + \SetPFont{Helvetica-Oblique}{12} + Document text. Then diagram: + \begin{axopicture}(60,43) + \Arc[arrow](30,0)(30,0,180) + \Text(30,33)[b]{$\alpha P_1$} + \CText(30,10){Red}{Yellow}{Arc} + \end{axopicture} +\end{verbatim} +\end{minipage} +\end{center} +which gives +\begin{center} + \SetScale{2} + \SetPFont{Helvetica-Oblique}{12} + Document text. Then diagram: + \begin{axopicture}(60,43) + \Arc[arrow](30,0)(30,0,180) + \Text(30,33)[b]{$\alpha P_1$} + \CText(30,10){Red}{Yellow}{Arc} + \end{axopicture} +\end{center} +The label $\alpha P_1$ is now not enlarged, since it copies the +behavior of the document font. But the postscript text is enlarged, +which is probably undesirable. If you were scaling down the diagram +instead of scaling it up, the situation would be worse, because the +postscript font would be difficult to read. + +So in this situation, of scaling the diagram while keeping the +document font intact, you probably also want to leave unchanged the +size of the postscript font. You can achieve this by the +\verb:\PSTextScalesLikeGraphicsfalse: command: +\begin{center} +\begin{minipage}{10cm} +\begin{verbatim} + \SetScale{2} + \PSTextScalesLikeGraphicsfalse + \SetPFont{Helvetica-Oblique}{12} + Document text. Then diagram: + \begin{axopicture}(60,43) + \Arc[arrow](30,0)(30,0,180) + \Text(30,33)[b]{$\alpha P_1$} + \CText(30,10){Red}{Yellow}{Arc} + \end{axopicture} +\end{verbatim} +\end{minipage} +\end{center} +\begin{center} + \SetScale{2} + \PSTextScalesLikeGraphicsfalse + \SetPFont{Helvetica-Oblique}{12} + Document text. Then diagram: + \begin{axopicture}(60,43) + \Arc[arrow](30,0)(30,0,180) + \Text(30,33)[b]{$\alpha P_1$} + \CText(30,10){Red}{Yellow}{Arc} + \end{axopicture} +\end{center} + +To achieve this on a document-wide basis, which is probably what you +want, you can use the \texttt{PStextScalesIndependently} option when you +load axodraw2 --- see Sec.\ \ref{sec:invoke}. + +Nevertheless, if you turn off the default scaling of postscript text, +%you may still want to scale text. To do this you can use the +you may still want to scale text. For this you can use the +\verb:\SetTextScale: command, as in \verb:\SetTextScale{1.2}:. This +only has an effect when you have turned off the scaling of postscript +text with graphics objects; but then it applies to \TeX{} text +inserted by axodraw2's \verb:\Text: and \verb:\rText: commands, as +well text inserted by axodraw2's ``postscript-text'' commands. + +If you are confused by the above, we recommend experimentation to +understand how to achieve the effects that you specifically need. We +could have made the set of commands and options simpler, but only at +the expense of not being able to meet the demands of the different +plausible situations that we could imagine and have to deal with +ourselves. + +\subsubsection{Canvas and object scales} + +When you use \verb:\SetScale: outside an \verb:axopicture: +environment, as above, the scaling applies to both the axodraw2 +objects and the space inserted for the \texttt{axopicture} environment +in the document, as is natural. But you may find you need to scale a +subset of objects inside the diagram, e.g., +\begin{center} + \begin{minipage}{10cm} + \verb:\begin{axopicture}:(\dots)\\ + \hspace*{1cm} (First block)\\ + \verb:\SetScale{0.5}:\\ + \hspace*{1cm} (Second block)\\ + \verb:\end{axopicture}: + \end{minipage} +\end{center} +In this case, the units for specifying the objects in the second block +are different from those for specifying the \verb:axopicture: +environment's size (as well as the first block of objects). We thus +distinguish object units from canvas units, where ``canvas'' refers to +the \verb:axopicture: environment as a whole. + +Another complication is that the \LaTeX{} \verb+picture+ environment +has is own \verb:\unitlength: parameter. In v.\ 1 of axodraw, the +canvas scale was determined by \LaTeX's \verb:\unitlength:. But there +was an independent unit for the object scale; this was the one +determined by axodraw's \verb:\SetScale: command. Also, not all +objects used the object scale. The situation therefore got quite +confusing. In v.\ 1, if, as is often natural, you wished to scale the +canvas as well as the objects, you would have needed to set \LaTeX's +\verb:\unitlength: parameter as well as using axodraw's +\verb:\SetScale: command. + +So now we have arranged things so that the canvas and object scales +are tied by default, provided that you use axodraw2's \verb:\SetScale: +command, and that axodraw diagrams are inside \verb+axopicture+ +environments (in contrast to the \verb+picture+ environment used in +the original axodraw). +However, it may be necessary to keep backward compatibility in some +cases, and we weren't certain that the new behavior is exactly what is +always desired. So in axodraw2, we have provided three choices, given +by the \texttt{canvasScaleIs1pt}, \texttt{canvasScaleIsObjectScale}, +and \texttt{canvasScaleIsUnitLength} options when loading axodraw2 --- +see Sec.\ \ref{sec:invoke}. Naturally, +\texttt{canvasScaleIsObjectScale} is the default. If you wish to +change the setting mid-document, there are corresponding commands --- +Sec.\ \ref{sec:settings}. + + + +\subsection{Settings} +\label{sec:settings} + +Axodraw2 has a number of parameters that can be set by the user. The +parameters include defaults for line types, dimensions, etc. The +parameters can be set either inside the axopicture environment or +outside. If they are set outside they modify the default value for +subsequent pictures. If set inside they only affect the current +picture. (In general, the parameters obey the usual rules for the +scope of \LaTeX{} variables.) In many cases, the parameters provide +default values for a command to draw an object and can be overridden +for a single object by using an optional parameter in invoking the +command for the object. + +The unit for lengths is the current object scale, as set by the +\verb+\SetScale+ command. + +\break + +The parameter-setting commands are: +%\begin{center} +%\def\arraystretch{1.4} +%% +%% See preamble for definition of \name +%\def\descr#1#2{% +% % #1 = command-syntax, #2 = description +% \name{#1} & #2\\ +% \hline +%} +%\def\descrL#1#2{% +% % #1 = command-syntax, #2 = description +% % Set #1 on separate line +% \multicolumn{2}{|l|}{\name{#1}} \\ +% & #2\\ +% \hline +%} +%\catcode`\#=13 +%\def#{\#} +%% +%\begin{longtable}{|p{5cm}|p{10.2cm}|} +%\hline +% Command & Commentary +%\\ +%\hline +%% +%\descr{SetLineSep\{\#1\}}{ +% This sets the default separation of double lines. Its initial value +% is 2. +%} +%% +%\descr{SetDashSize\{\#1\}}{ +% This sets the default size for the size of the dashes of dashed +% lines. Its initial value is 3. +%} +%% +%\descr{SetWidth\{\#1\}}{ +% This sets the default width of lines. Its initial value is 1. +%} +%% +%\descr{SetScale\{\#1\}}{ +% This sets a scale factor. +% This factor applies a magnification factor to all +% axodraw2 graphics objects. When the setting that +% postscript-text-scales-like-graphics is set (as is true by +% default), it also applies to axodraw2's ``postscript-text'' +% writing commands (\name{PText}, \name{BText}, etc), but not to +% its \TeX{}-text commands (\name{Text} etc). The initial scale +% factor is unity. +%} +%% +%\descr{SetTextScale\{\#1\}}{ +% This factor applies a magnification factor to all +% axodraw2 text objects, but \emph{only when} the setting that +% postscript-text-scales-like-graphics is turned off. +%} +%% +%\descr{SetOffset(\#1,\#2)}{ +% Sets an offset value +% for all commands of +% axodraw2. Its value is not affected by the scale variable. +%} +%% +%\descr{SetScaledOffset(\#1,\#2)}{ +% Sets an offset for +% all commands of axodraw2. This +% offset is affected by the scale factor. +%} +%% +%\descr{SetColor\{\#1\}}{ +% Sets the named color, +% for both axodraw2 objects and regular text. See Sec.\ +% \ref{sec:colors} for details on using color with axodraw2. +%} +%% +%\descr{textRed}{ +% Alternative command for setting named a color +% for both axodraw2 objects and regular text. See Sec.\ +% \ref{sec:colors} for details on using color with axodraw2. +% There is one such command for each axodraw2 named color. +%} +%% +%\descr{SetPFont\{\#1\}\{\#2\}}{ +% Sets the Postscript +% font, and its size in units of points. See Sec.\ \ref{sec:PSText} +% for the commands that use this font, for a table of the names of +% the fonts. An empty first argument, instead of a font name, (as in +% \name{SetPFont\{\}\{20\}} indicates that the normal document font is +% to be used at the indicated size. An empty second argument, +% instead of the font size, (as in \name{SetPFont\{Helvetica\}\{\}} or +% \name{SetPFont\{\}\{\}}) indicates that the font size is to be +% \LaTeX's document font size at the time the text-making command is +% executed. +%} +%% +%\descr{SetArrowScale\{\#1\}}{ +% A scale parameter for the +% entire head of an arrow. +%} +%% +%\descr{SetArrowInset\{\#1\}}{ +% See Sec.\ \ref{sec:arrows}. +%} +%% +%\descr{SetArrowAspect\{\#1\}}{ +% See Sec.\ \ref{sec:arrows}. +%} +%% +%\descr{SetArrowPosition\{\#1\}}{ +% Determines where the +%arrowhead is on a line. The position is the fraction of the length of the +%line. +%} +%% +%\descr{SetArrowStroke\{\#1\}}{ +% This parameter determines the linewidth of the arrowhead if it is just +% outlined. Its initial value is zero (filled arrowhead). +%} +%% +%\descr{canvasScaleOnept}{ +% Sets canvas scale to $\unit[1]{pt}$. +%} +%% +%\descr{canvasScaleObjectScale}{ +% Sets canvas scale to equal the value set by \name{SetScale} in +% units of points. This is the initial default of axodraw2, +% unless overridden. +%} +%% +%\descr{canvasScaleUnitLength}{ +% The canvas scale is the same as \LaTeX's length parameter +% \name{unitlength}. +%} +%% +%\descrL{PSTextScalesLikeGraphicsfalse}{ +% Text drawn by all of Axodraws's text commands scales with the +% factor set by \name{SetTextScale}. +% See Sec.\ \ref{sec:text}. +%} +%% +%\descrL{PSTextScalesLikeGraphicstrue}{ +% (Default setting.) Text drawn by Axodraw's postscript-text +% commands scales with the same factor as graphics objects, as set +% by \name{SetScale}. Text drawn by Axodraw's \TeX{}-text +% commands is unscaled. +% See Sec.\ \ref{sec:text}. +%} +%\end{longtable} +%\end{center} +\begin{center} +\def\arraystretch{1.4} +% +% See preamble for definition of \name +\def\descr#1#2{% + % #1 = command-syntax, #2 = description + \name{#1} & #2\\ + \hline +} +\def\descrL#1#2{% + % #1 = command-syntax, #2 = description + % Set #1 on separate line + \multicolumn{2}{|l|}{\name{#1}} \\ + & #2\\ + \hline +} +\def\category#1{% + % #1 = name of category + \multicolumn{2}{l}{#1:} + \\ + \hline +} +\catcode`\#=13 +\def#{\#} +% +\begin{longtable}{|p{5cm}|p{10.2cm}|} +\hline +\endfirsthead + Command & Commentary +\\ +\hline +%==================== +\category{Lines} +% +\descr{SetDashSize\{\#1\}}{ + This sets the default size for the size of the dashes of dashed + lines. Its initial value is 3. +} +% +\descr{SetLineSep\{\#1\}}{ + This sets the default separation of double lines. Its initial value + is 2. +} +% +\descr{SetWidth\{\#1\}}{ + This sets the default width of lines. Its initial value is 0.5. +} +%==================== +\category{Arrows} +% +\descr{SetArrowAspect\{\#1\}}{ + See Sec.\ \ref{sec:arrows}. +} +% +\descr{SetArrowInset\{\#1\}}{ + See Sec.\ \ref{sec:arrows}. +} +% +\descr{SetArrowPosition\{\#1\}}{ + Determines where the +arrowhead is on a line. The position is the fraction of the length of the +line. +} +% +\descr{SetArrowScale\{\#1\}}{ + A scale parameter for the + entire head of an arrow. +} +% +\descr{SetArrowStroke\{\#1\}}{ + This parameter determines the linewidth of the arrowhead if it is just + outlined. Its initial value is zero (filled arrowhead). +} +%==================== +\category{Scaling} +% +\descr{canvasScaleOnept}{ + Sets canvas scale to $\unit[1]{pt}$. +} +% +\descr{canvasScaleObjectScale}{ + Sets canvas scale to equal the value set by \name{SetScale} in + units of points. This is the initial default of axodraw2, + unless overridden. +} +% +\descr{canvasScaleUnitLength}{ + The canvas scale is the same as \LaTeX's length parameter + \name{unitlength}. +} +% +\descr{SetScale\{\#1\}}{ + This sets a scale factor. + This factor applies a magnification factor to all + axodraw2 graphics objects. When the setting that + postscript-text-scales-like-graphics is set (as is true by + default), it also applies to axodraw2's ``postscript-text'' + writing commands (\name{PText}, \name{BText}, etc), but not to + its \TeX{}-text commands (\name{Text} etc). The initial scale + factor is unity. +} +% +\descr{SetTextScale\{\#1\}}{ + This factor applies a magnification factor to all + axodraw2 text objects, but \emph{only when} the setting that + postscript-text-scales-like-graphics is turned off. +} +% +\descrL{PSTextScalesLikeGraphicsfalse}{ + Text drawn by all of Axodraws's text commands scales with the + factor set by \name{SetTextScale}. + See Sec.\ \ref{sec:text}. +} +% +\descrL{PSTextScalesLikeGraphicstrue}{ + (Default setting.) Text drawn by Axodraw's postscript-text + commands scales with the same factor as graphics objects, as set + by \name{SetScale}. Text drawn by Axodraw's \TeX{}-text + commands is unscaled. + See Sec.\ \ref{sec:text}. +} +% +%==================== +\category{Offsets} +% +\descr{SetOffset(\#1,\#2)}{ + Sets an offset value + for all commands of + axodraw2. Its value is not affected by the scale variable. +} +% +\descr{SetScaledOffset(\#1,\#2)}{ + Sets an offset for + all commands of axodraw2. This + offset is affected by the scale factor. +} +% +%==================== +\category{Color} +% +\descr{SetColor\{\#1\}}{ + Sets the named color, + for both axodraw2 objects and regular text. See Sec.\ + \ref{sec:colors} for details on using color with axodraw2. +} +% +\descr{textRed}{ + Alternative command for setting named a color + for both axodraw2 objects and regular text. See Sec.\ + \ref{sec:colors} for details on using color with axodraw2. + There is one such command for each axodraw2 named color. +} +%==================== +\category{Font} +% +\descr{SetPFont\{\#1\}\{\#2\}}{ + Sets the Postscript + font, and its size in units of points. See Sec.\ \ref{sec:PSText} + for the commands that use this font, for a table of the names of + the fonts. An empty first argument, instead of a font name, (as in + \name{SetPFont\{\}\{20\}} indicates that the normal document font is + to be used at the indicated size. An empty second argument, + instead of the font size, (as in \name{SetPFont\{Helvetica\}\{\}} or + \name{SetPFont\{\}\{\}}) indicates that the font size is to be + \LaTeX's document font size at the time the text-making command is + executed. +} +% +\end{longtable} +\end{center} + + +%>>#] Settings : +%>>#[ Colors : + +\subsection{Colors} +\label{sec:colors} + +\TeX{} and \LaTeX{} by themselves do not provide any means to set +colors in a document. Instead, one must use a suitable package to +achieve the effect; the current standard one is \file{color.sty}. +Such a package performs its work by passing graphics commands to the +viewable output file. Since axodraw also works in a similar fashion, +there is a potentiality for conflicts. + +Axodraw version 1, released in 1994, used the package +\file{colordvi.sty} for applying color to normal textual material, +and its own separate methods for applying color to its graphical +objects. They both defined the same convenient set of named colors +that could be used, but they had to be set separately for text and +graphics\footnote{The named colors corresponded to ones defined by the + \program{dvips} program.}. The \file{colordvi.sty} package also had +an important disadvantage that its color settings did not respect +\TeX{} grouping and \LaTeX{} environments, so that a color setting +made for text in an environment continued to apply after the end of +the environment. + +Since then, the available tools, notably in the powerful +\file{color.sty}, have greatly improved. But this has introduced +both real and potential incompatibilities with the older methods. +Note that \file{color.sty} is currently the most standard way for +implementing color, and is a required part of \LaTeX{} distributions, +as part of the graphics bundle. + +In the new version of axodraw, we have arranged to have compatibility +with \file{color.sty}, while allowing as much backward compatibility +as we could with the user interface from v.\ 1. We fully rely on +\file{color.sty} for setting color\footnote{Except for certain hard + wired settings in double lines and stroked arrows.}. But to keep +the best of the old methods, we have defined all the named colors that +were defined in the old version, together with a few extra ones. We +have also defined color-setting commands in the style of +\file{colordvi.sty}, but they now apply uniformly to both text and +axodraw graphical objects, and they respect \TeX{} and \LaTeX{} +grouping and environments. + +This results in some changes in behavior in certain situations. We +think the new behavior is more natural from the user's point of view; +but it is a change. + +There are two classes of graphics-drawing command in axodraw. One +class has no explicit color argument, and uses the currently set +color; the line-drawing commands are typical of these. Other commands +have explicit color arguments, and these arguments are named colors. +The named colors are a union of those axodraw defines, with those +defined by \file{color.sty} together with any further ones defined +by the user. + +\subsubsection{How to use colors} + +Axodraw works with named colors --- see Sec.\ \ref{sec:defined.colors} +--- which are a standard set of 68 originally defined by the \program{dvips} +program and the \file{colordvi.sty}, plus 5 extra colors defined in +axodraw2. (In addition there are several named colors that are +normally defined by default by \file{color.sty}, and that can also +be used.) + +To use them we have several possibilities to specify colors. Which to +use is mostly a matter of user preference or convenience. +\begin{itemize} + +\item The axodraw command \verb+\SetColor{colorname}+: sets the color + to be the named color for everything until the end of the current + environment (or \TeX{} group, as relevant.) The initial default + color is Black, of course. An example: + \begin{center} + \begin{minipage}{4cm} + \SetColor{Red} + Now red is used:\\ + \begin{axopicture}(0,40) + \Line(0,10)(40,30) + \end{axopicture} + \end{minipage} + \begin{minipage}{7cm} + \label{SetColor} + \begin{verbatim} + \SetColor{Red} + Now red is used:\\ + \begin{axopicture}(0,40) + \Line(0,10)(40,30) + \end{axopicture} + \end{verbatim} + \end{minipage} + \end{center} + +\item Completely equivalently, one can use the command + \verb+\color{colorname}+ defined by the standard \file{color.sty} + package, with any of its options, e.g., \verb+\color{Red}+ or + \verb+\color[rgb]{1,0,0}+. In fact \verb+\SetColor+ is now a + synonym for \verb+\color+, retained for backward compatibility. + +\item The named colors defined by axodraw2 are listed in Sec.\ + \ref{sec:defined.colors}. Extra ones can be defined by axodraw2's + \verb+\newcolor+ command. + +\item For each of the named colors defined by axodraw2 (and others + defined by the use of the \verb+\newcolor+ command), there is a + macro whose name is ``text'' followed by the color name, e.g., + \verb+\textMagenta+. This behaves just like the corresponding call + to \verb+\SetColor+ or \verb+\color+. Thus we have + \begin{center} + \begin{minipage}{4cm} + \textMagenta + Now magenta is used: \hfill \\ + \begin{axopicture}(0,40) + \Line(0,10)(40,30) + \end{axopicture} + \end{minipage} + \begin{minipage}{7cm} + \label{textName} + \begin{verbatim} + \textMagenta + Now magenta is used:\\ + \begin{axopicture}(0,40) + \Line(0,10)(40,30) + \end{axopicture} + \end{verbatim} + \end{minipage} + \end{center} + These macros correspond to macros defined by the venerable + \file{colordvi.sty} package, but now have what is normally an advantage + that their scope is delimited by the enclosing environment. + \begin{center} + \begin{minipage}{5cm} + Normal text, then + \begin{center} + \Large \bf \color{Blue} + Large, bold blue\\ + \begin{axopicture}(40,20) + \Gluon(0,10)(40,10){4}{4} + \end{axopicture}\\ + \end{center} + And normal text afterward. + \end{minipage} + \begin{minipage}{7.7cm} + \label{scope} + \begin{verbatim} + Normal text, then + \begin{center} + \Large \bf \color{Blue} + Large, bold blue + \begin{axopicture}(40,20) + \Gluon(0,10)(40,10){4}{4} + \end{axopicture}\\ + \end{center} + And normal text afterward. + \end{verbatim} + \end{minipage} + \end{center} + +\item A delimited section of text can be set in a color by using a + macro named by the color (e.g., $\verb+\Red+$): + \begin{center} + \begin{minipage}{6cm} + In the middle of black text, + \textcolor{Red}{red text and + \begin{axopicture}(30,10) + \Gluon(0,5)(30,5){3}{4} + \end{axopicture}\ + gluon% + }. + Then continue \dots + \end{minipage} + \begin{minipage}{7.3cm} + \label{Red} + \begin{verbatim} + In the middle of black text, + \Red{red text and + \begin{axopicture}(30,10) + \Gluon(0,5)(30,5){3}{4} + \end{axopicture}\ + gluon% + }. + Then continue \dots + \end{verbatim} + \end{minipage} + \end{center} + These macros correspond to macros defined by the \file{colordvi.sty} + package, but they now apply to axodraw objects as well. + +\item The same effect, for named colors, can be achieved by + \file{color.sty}'s \verb+\textcolor+ macro. Thus + \verb+\textcolor{Red}{...}+ is equivalent to \verb+\Red{...}+. + +\end{itemize} + +It is also possible to define new named colors, in the CMYK +system. This means that each color is defined by four numbers. New +colors can be introduced with the \verb:\newcolor{#1}{#2}: command as +in \verb:\newcolor{LightRed}{0 0.75 0.7 0}:. This use of this command +defines a named color for use in axodraw, with corresponding macros +\verb:\LightRed: and \verb:\textLightRed{#1}:, and also makes the name +known to \file{color.sty}. (Use of \file{color.sty}'s +\verb:\definecolor: macro is not supported here: it will affect only +normal \LaTeX{} text, but not axodraw objects, and it will fail to +define the extra macros.) + +We define the CMYK values for the named colors in the +\file{axodraw2.sty} file. These override the definitions provided +by \file{color.sty} (in its file dvipsnam.def), which are the same +(at least currently). + +There can be differences in how colors render on different devices. +In principle, there should be compensations made by the driver to +compensate for individual device properties. Our experience is however +that such compensations are not always implemented well enough. Most +notorious are differences between the shades of green on the screen, +on projectors, and on output from a printer. These colors are usually +much too light on a projector and one way to correct this is to +redefine those colors when the output is prepared for a projector, +e.g., by use of axodraw's \verb:\newcolor{#1}{#2}: macro. An example +is illustrated by +\begin{center} + \color{green} + \begin{axopicture}(100,20) + \Text(25,15){color.sty's green} + \Line[width=2](0,0)(50,0) + \end{axopicture} +% + \color{Green} + \begin{axopicture}(100,20) + \Text(25,15){axodraw's Green} + \Line[width=2](0,0)(50,0) + \end{axopicture} +\end{center} +coded by +\begin{verbatim} + \color{green} + \begin{axopicture}(100,20) + \Text(25,15){color.sty's green} + \Line[width=2](0,0)(50,0) + \end{axopicture} +% + \color{Green} + \begin{axopicture}(100,20) + \Text(25,15){axodraw's Green} + \Line[width=2](0,0)(50,0) + \end{axopicture} +\end{verbatim} +On a typical screen or projector, we find that the two greens are +quite distinct, the ``green'' being much lighter than the +``Green''\footnote{The ``green'' is defined in the RGB scheme from the + values $(0,1,0)$, while ``Green'' is defined in the CMYK scheme from + the values $(1,0,1,0)$.}. But on the paper output from our +printers, they give close results. + + + +\subsubsection{Defined named colors} +\label{sec:defined.colors} + +The first set of predefined colors are those defined by dvips (and +defined in \file{colordvi.sty}, or in \file{color.sty} with the +use of both of its usenames and dvipsnames options). They are +\begin{quote} +\sloppy +\GreenYellow{GreenYellow}, +\Yellow{Yellow}, +\Goldenrod{Goldenrod}, +\Dandelion{Dandelion}, +\Apricot{Apricot}, +\Peach{Peach}, +\Melon{Melon}, +\YellowOrange{YellowOrange}, +\Orange{Orange}, +\BurntOrange{BurntOrange}, +\Bittersweet{Bittersweet}, +\RedOrange{RedOrange}, +\Mahogany{Mahogany}, +\Maroon{Maroon}, +\BrickRed{BrickRed}, +\Red{Red}, +\OrangeRed{OrangeRed}, +\RubineRed{RubineRed}, +\WildStrawberry{WildStrawberry}, +\Salmon{Salmon}, +\CarnationPink{CarnationPink}, +\Magenta{Magenta}, +\VioletRed{VioletRed}, +\Rhodamine{Rhodamine}, +\Mulberry{Mulberry}, +\RedViolet{RedViolet}, +\Fuchsia{Fuchsia}, +\Lavender{Lavender}, +\Thistle{Thistle}, +\Orchid{Orchid}, +\DarkOrchid{DarkOrchid}, +\Purple{Purple}, +\Plum{Plum}, +\Violet{Violet}, +\RoyalPurple{RoyalPurple}, +\BlueViolet{BlueViolet}, +\Periwinkle{Periwinkle}, +\CadetBlue{CadetBlue}, +\CornflowerBlue{CornflowerBlue}, +\MidnightBlue{MidnightBlue}, +\NavyBlue{NavyBlue}, +\RoyalBlue{RoyalBlue}, +\Blue{Blue}, +\Cerulean{Cerulean}, +\Cyan{Cyan}, +\ProcessBlue{ProcessBlue}, +\SkyBlue{SkyBlue}, +\Turquoise{Turquoise}, +\TealBlue{TealBlue}, +\Aquamarine{Aquamarine}, +\BlueGreen{BlueGreen}, +\Emerald{Emerald}, +\JungleGreen{JungleGreen}, +\SeaGreen{SeaGreen}, +\Green{Green}, +\ForestGreen{ForestGreen}, +\PineGreen{PineGreen}, +\LimeGreen{LimeGreen}, +\YellowGreen{YellowGreen}, +\SpringGreen{SpringGreen}, +\OliveGreen{OliveGreen}, +\RawSienna{RawSienna}, +\Sepia{Sepia}, +\Brown{Brown}, +\Tan{Tan}, +\Gray{Gray}, +\Black{Black}, +White. +\end{quote} +In addition \file{axodraw2.sty} defines the following extra colors: +\begin{quote} +\LightYellow{LightYellow}, +\LightRed{LightRed}, +\LightBlue{LightBlue}, +\LightGray{LightGray}, +\VeryLightBlue{VeryLightBlue}. +\end{quote} + +Note that \file{color.sty} by default also defines a set of other +named colors: black, white, red, green, blue, cyan, magenta, and +yellow (with purely lower-case names). Depending on properties of +your screen, projector or printer, these may or may not agree with the +similarly named axodraw colors (which have capitalized names). These +names can also be used in the \verb+\SetColor+ and \verb+\color+ +commands and for color names to those axodraw commands that take named +colors for arguments. + + +%\subsection{Background issues on color} +%\label{sec:color.issues} + + + + +%>>#] Colors : +%>>#[ Some examples : + +\section{Some examples} +\label{sec:examples} + +\subsection{A Feynman diagram} + +When computing the singlet part of structure functions in polarized Deep +Inelastic Scattering one approach is to use spin two currents to determine +all anomalous dimensions. At the three loop level this can give diagrams +like the following: +\begin{center} +\begin{axopicture}{(200,140)(0,0)} +\SetArrowStroke{0.5} +\SetArrowScale{0.8} +\Photon(7,70)(37,70){4}{3} +\Photon(7,70)(37,70){-4}{3} +\GluonArc(70,70)(30,90,270){3}{10} +\Line[arrow](100,100)(70,100) +\Line[arrow](130,100)(100,100) +\Line[arrow,arrowpos=0.25](70,100)(130,40) +\Line[arrow](100,40)(70,40) +\Line[arrow](130,40)(100,40) +\Line[arrow,arrowpos=0.75](70,40)(130,100) +\GluonArc(130,70)(30,270,450){3}{10} +\Photon(163,70)(193,70){4}{3} +\Photon(163,70)(193,70){-4}{3} +\Gluon(100,100)(100,130){3}{4} +\Gluon(100,40)(100,10){3}{4} +\Vertex(37,70){2} +\Vertex(163,70){2} +\Vertex(70,100){2} +\Vertex(70,40){2} +\Vertex(130,100){2} +\Vertex(130,40){2} +\Vertex(100,100){2} +\Vertex(100,40){2} +\end{axopicture} +\end{center} +for which the code is: +\begin{verbatim} + \begin{center} \begin{axopicture}{(200,140)(0,0)} + \SetArrowStroke{0.5} \SetArrowScale{0.8} + \Photon(7,70)(37,70){4}{3} + \Photon(7,70)(37,70){-4}{3} + \GluonArc(70,70)(30,90,270){3}{10} + \Line[arrow](100,100)(70,100) \Line[arrow](130,100)(100,100) + \Line[arrow,arrowpos=0.25](70,100)(130,40) + \Line[arrow](100,40)(70,40) \Line[arrow](130,40)(100,40) + \Line[arrow,arrowpos=0.75](70,40)(130,100) + \GluonArc(130,70)(30,270,450){3}{10} + \Photon(163,70)(193,70){4}{3} + \Photon(163,70)(193,70){-4}{3} + \Gluon(100,100)(100,130){3}{4} + \Gluon(100,40)(100,10){3}{4} + \Vertex(37,70){2} \Vertex(163,70){2} \Vertex(70,100){2} + \Vertex(70,40){2} \Vertex(130,100){2} \Vertex(130,40){2} + \Vertex(100,100){2} \Vertex(100,40){2} + \end{axopicture} \end{center} +\end{verbatim} +The diagrams can become a bit more complicated when more lines meet in a +single vertex. One could compose some lines from straight lines and arcs, +but in this case we selected some B\'ezier curves. The result is +\begin{center} +\begin{axopicture}{(200,140)(0,0)} +\SetArrowStroke{0.5} +\SetArrowScale{0.8} +\Photon(7,70)(40,70){4}{3} +\Photon(7,70)(40,70){-4}{3} +\GluonArc(70,70)(30,180,270){3}{5} +\Bezier[arrow](100,100)(55,100)(40,95)(40,70) +\Line[arrow](130,100)(100,100) +\Bezier[arrow,arrowpos=0.37](40,70)(110,70)(130,70)(130,40) +\Line[arrow](100,40)(70,40) +\Line[arrow](130,40)(100,40) +\Line[arrow,arrowpos=0.75](70,40)(130,100) +\GluonArc(130,70)(30,270,450){3}{10} +\Photon(163,70)(193,70){4}{3} +\Photon(163,70)(193,70){-4}{3} +\Gluon(100,100)(100,130){3}{4} +\Gluon(100,40)(100,10){3}{4} +\Vertex(40,70){2} +\Vertex(163,70){2} +\Vertex(70,40){2} +\Vertex(130,100){2} +\Vertex(130,40){2} +\Vertex(100,100){2} +\Vertex(100,40){2} +\end{axopicture} +\end{center} +for which the code is: +\begin{verbatim} + \begin{center} + \begin{axopicture}{(200,140)(0,0)} + \SetArrowStroke{0.5} \SetArrowScale{0.8} + \Photon(7,70)(40,70){4}{3} + \Photon(7,70)(40,70){-4}{3} + \GluonArc(70,70)(30,180,270){3}{5} + \Bezier[arrow](100,100)(55,100)(40,95)(40,70) + \Line[arrow](130,100)(100,100) + \Bezier[arrow,arrowpos=0.37](40,70)(100,70)(130,70)(130,40) + \Line[arrow](100,40)(70,40) \Line[arrow](130,40)(100,40) + \Line[arrow,arrowpos=0.75](70,40)(130,100) + \GluonArc(130,70)(30,270,450){3}{10} + \Photon(163,70)(193,70){4}{3} + \Photon(163,70)(193,70){-4}{3} + \Gluon(100,100)(100,130){3}{4} \Gluon(100,40)(100,10){3}{4} + \Vertex(40,70){2} \Vertex(163,70){2} \Vertex(70,40){2} + \Vertex(130,100){2} \Vertex(130,40){2} \Vertex(100,100){2} + \Vertex(100,40){2} + \end{axopicture} + \end{center} +\end{verbatim} + +%\subsection{A flowchart} + +%\subsection{A histogram} + +\subsection{A diagrammatic equation} + +This example is from ref~\cite{twopap}. The equations in that paper were +rather untransparent, because each Feynman diagram represents a complicated +two loop integral and to solve these integrals one needed many different +recursion relations in terms of the powers of the propagators. We defined a +number of macro's for the diagrams, each containing one picture. Here are +three of them: + +\begin{verbatim} + \def\TAA(#1,#2,#3,#4,#5,#6){ + \raisebox{-19.1pt}{ \hspace{-12pt} + \begin{axopicture}{(50,39)(0,-4)} + \SetScale{0.5}\SetColor{Blue}% + \CArc(40,35)(25,90,270) \CArc(60,35)(25,270,90) + \Line(40,60)(60,60) \Line(40,10)(60,10) \Line(50,10)(50,60) + \Line(0,35)(15,35) \Line(85,35)(100,35) + \SetColor{Black}\SetPFont{Helvetica}{14}% + \PText(55,39)(0)[lb]{#5} \PText(55,36)(0)[lt]{#6} + \PText(35,62)(0)[rb]{#1} \PText(65,62)(0)[lb]{#2} + \PText(65,8)(0)[lt]{#3} \PText(35,8)(0)[rt]{#4} + \SetColor{Red} \SetWidth{3} + \Line(50,35)(50,60) \Line(40,60)(50,60) + \CArc(40,35)(25,90,180) \Vertex(50,60){1.3} + \end{axopicture} + \hspace{-12pt} + } + } +\end{verbatim} +\def\TAA(#1,#2,#3,#4,#5,#6){ + \raisebox{-18.1pt}{ \hspace{-12pt} + \begin{axopicture}{(50,39)(0,-4)} + \SetScale{0.5}\SetColor{Blue}% + \CArc(40,35)(25,90,270) \CArc(60,35)(25,270,90) + \Line(40,60)(60,60) \Line(40,10)(60,10) \Line(50,10)(50,60) + \Line(0,35)(15,35) \Line(85,35)(100,35) + \SetColor{Black}\SetPFont{Helvetica}{14}% + \PText(55,39)(0)[lb]{#5} \PText(55,36)(0)[lt]{#6} + \PText(35,62)(0)[rb]{#1} \PText(65,62)(0)[lb]{#2} + \PText(65,8)(0)[lt]{#3} \PText(35,8)(0)[rt]{#4} + \SetColor{Red} \SetWidth{3} + \Line(50,35)(50,60) \Line(40,60)(50,60) + \CArc(40,35)(25,90,180) \Vertex(50,60){1.3} + \end{axopicture} + \hspace{-12pt} + } +} +\begin{verbatim} + \def\TABs(#1,#2,#3,#4,#5){ + \raisebox{-18.1pt}{ \hspace{-12pt} + \begin{axopicture}{(50,39)(0,-4)} + \SetScale{0.5}\SetColor{Blue}% + \CArc(40,35)(25,90,270) \CArc(60,35)(25,270,90) + \Line(40,60)(60,60) \Line(40,10)(60,10) \Line(50,10)(50,60) + \Line(0,35)(15,35) \Line(85,35)(100,35) + \SetColor{Black}\SetPFont{Helvetica}{14}% + \PText(55,38)(0)[l]{#5} + \PText(35,62)(0)[rb]{#1} \PText(65,62)(0)[lb]{#2} + \PText(65,8)(0)[lt]{#3} \PText(35,8)(0)[rt]{#4} + \SetColor{Red} \SetWidth{3} + \Line(50,10)(50,60) \Vertex(50,60){1.3} + \Line(40,60)(50,60) \CArc(40,35)(25,90,180) + \end{axopicture} + \hspace{-12pt} + } + } +\end{verbatim} +\def\TABs(#1,#2,#3,#4,#5){ + \raisebox{-18.1pt}{ \hspace{-12pt} + \begin{axopicture}{(50,39)(0,-4)} + \SetScale{0.5}\SetColor{Blue}% + \CArc(40,35)(25,90,270) \CArc(60,35)(25,270,90) + \Line(40,60)(60,60) \Line(40,10)(60,10) \Line(50,10)(50,60) + \Line(0,35)(15,35) \Line(85,35)(100,35) + \SetColor{Black}\SetPFont{Helvetica}{14}% + \PText(55,38)(0)[l]{#5} + \PText(35,62)(0)[rb]{#1} \PText(65,62)(0)[lb]{#2} + \PText(65,8)(0)[lt]{#3} \PText(35,8)(0)[rt]{#4} + \SetColor{Red} \SetWidth{3} + \Line(50,10)(50,60) \Vertex(50,60){1.3} + \Line(40,60)(50,60) \CArc(40,35)(25,90,180) + \end{axopicture} + \hspace{-12pt} + } +} +\begin{verbatim} + \def\TACs(#1,#2,#3,#4,#5){ + \raisebox{-19.1pt}{ \hspace{-12pt} + \begin{axopicture}{(50,39)(0,-4)} + \SetScale{0.5}\SetColor{Blue}% + \CArc(40,35)(25,90,270) \CArc(60,35)(25,270,90) + \Line(40,60)(60,60) \Line(40,10)(60,10) \Line(50,10)(50,60) + \Line(0,35)(15,35) \Line(85,35)(100,35) + \SetColor{Black}\SetPFont{Helvetica}{14}% + \PText(53,38)(0)[l]{#5} + \PText(35,62)(0)[rb]{#1} \PText(65,62)(0)[lb]{#2} + \PText(65,8)(0)[lt]{#3} \PText(35,8)(0)[rt]{#4} + \SetColor{Red} \SetWidth{3} + \Line(40,60)(50,60) \CArc(40,35)(25,90,180) + \end{axopicture} + \hspace{-12pt} + } + } +\end{verbatim} +\def\TACs(#1,#2,#3,#4,#5){ + \raisebox{-19.1pt}{ \hspace{-12pt} + \begin{axopicture}{(50,39)(0,-4)} + \SetScale{0.5}\SetColor{Blue}% + \CArc(40,35)(25,90,270) \CArc(60,35)(25,270,90) + \Line(40,60)(60,60) \Line(40,10)(60,10) \Line(50,10)(50,60) + \Line(0,35)(15,35) \Line(85,35)(100,35) + \SetColor{Black}\SetPFont{Helvetica}{14}% + \PText(53,38)(0)[l]{#5} + \PText(35,62)(0)[rb]{#1} \PText(65,62)(0)[lb]{#2} + \PText(65,8)(0)[lt]{#3} \PText(35,8)(0)[rt]{#4} + \SetColor{Red} \SetWidth{3} + \Line(40,60)(50,60) \CArc(40,35)(25,90,180) + \end{axopicture} + \hspace{-12pt} + } +} +and together with two extra little macro's +\begin{verbatim} +\def\plus{\!+\!} +\def\minus{\!-\!} +\end{verbatim} +\def\plus{\!+\!} +\def\minus{\!-\!} +the equations became rather transparent and easy to program. This is the +code +\begin{verbatim} + \begin{eqnarray} + \TAA({n,m},1,1,1,1,1) & = & \frac{1}{\tilde{N}\plus 5\plus n\minus + m\minus D}\ (\ n\ \ \TAA({n+1,m},0,1,1,1,1) + \ \ -n\ \ \TACs({n+1,m},1,1,1,1) \\ & & + +\ \ \TAA({n,m},1,0,2,1,1) + \ \ -\ \ \TABs({n,m},1,1,2,1) + \ \ +m\ \ \TACs({n,m-1},1,1,1,1) + \ \ -m\ \ \TABs({n,m-1},1,1,1,1)\ \ \ ) \, .\nonumber + \end{eqnarray} +\end{verbatim} +and the equation becomes +\begin{eqnarray} + \TAA({n,m},1,1,1,1,1) & = & \frac{1}{\tilde{N}\plus 5\plus n\minus + m\minus D}\ (\ n\ \ \TAA({n+1,m},0,1,1,1,1) + \ \ -n\ \ \TACs({n+1,m},1,1,1,1) \\ & & + +\ \ \TAA({n,m},1,0,2,1,1) + \ \ -\ \ \TABs({n,m},1,1,2,1) + \ \ +m\ \ \TACs({n,m-1},1,1,1,1) + \ \ -m\ \ \TABs({n,m-1},1,1,1,1)\ \ \ ) \, .\nonumber +\end{eqnarray} +The diagrams are actually four-point diagrams. A momentum $P$ flows through +the diagram (the fat red line), but because the method of computation +involves an expansion in terms of this momentum the remaining diagrams are +like two-point functions. Details are in the paper. + +%>>#] Some examples : +%>>#[ Acknowledgements : + +\section*{Acknowledgements} + +JAMV's work is part of the research program of the ``Stichting voor +Fundamenteel Onderzoek der Materie (FOM)'', which is financially supported +by the ``Nederlandse organisatie voor Wetenschappelijke Onderzoek (NWO)'' and +is also supported by the ERC Advanced Grant no.~320651, HEPGAME. +JCC is supported in part by the U.S. Department of Energy under Grant +No.\ DE-SC0008745. + +We like to thank Lucas Theussl for discussions during the development of +axodraw2. + +%>>#] Acknowledgements : +%--#[ Appendix : + +\appendix + +\section{The \program{axohelp} program: Information for developers} +\label{sec:axohelp.devel} + +This appendix provides some details on how the \program{axohelp} program works. +Most of the information is only relevant to people who wish to modify +or extend axodraw2 and therefore may need to modify \program{axohelp} as well. + +The reason for \program{axohelp}'s existence is that axodraw needs to perform +substantial geometric calculations. When axodraw is used with +pdflatex to produce pdf output directly, suitable calculational +facilities are not available, neither within the PDF language nor +within \LaTeX{} itself. Therefore when axodraw is used under +pdflatex, we use our program \program{axohelp} to perform the calculations. + +The mode of operation is as follows. Let us assume that the +\file{.tex} file being compiled by the \program{pdflatex} program is +called \file{paper.tex}. When one issues the command +\begin{verbatim} + pdflatex paper +\end{verbatim} +the reaction of the system is of course to translate all \TeX{} +related objects into a PDF file. Most (but not all) axodraw objects +need non-trivial calculations and hence their specifications are +placed inside a file called \file{paper.ax1}. At the end of the +processing \program{pdflatex} will place a message on the screen that +mentions that the user should run the command +\begin{verbatim} + axohelp paper +\end{verbatim} +for the processing of this graphical information. In principle it is +possible to arrange for \program{axohelp} to be invoked automatically from +within pdflatex. But for this to be done, the running of general +external commands from pdflatex would have to be enabled. That is a +security risk, and is therefore normally disabled by default for +pdflatex. + +When run, \program{axohelp} reads the file \file{paper.ax1}, processes the +contents, and produces a file \file{paper.ax2}. For each axodraw +object, it contains both the code to be placed in the pdf file, and a +copy of the corresponding specification that was in \file{paper.ax1}. + +When pdflatex is run again, it sees that the file \file{paper.ax2} is +present and reads it in to give essentially an array of objects, one +for each processed axodraw object. Then during the processing of the +document, whenever axodraw runs into an axodraw object in need of +external calculation, it determines whether an exactly corresponding +specification was present in the file \file{paper.ax2}. If not, it +means that the graphical information in the file \file{paper.tex} has +changed since the last run of \program{axohelp} and the graphics information is +invalidated. In that case, at the end of the program the message to +run \program{axohelp} will be printed again. But if instead there is an exact +match between an axodraw object in the current \file{paper.tex} and +its specification in \file{paper.ax2}, then the corresponding pdf code +will be placed in the PDF file. If all axodraw commands have a proper +match in the \file{paper.ax2} file, there will be no message in the +paper.log file and on the screen about rerunning \program{axohelp}; then the PDF +file should contain the correct information for drawing the axodraw +objects (at least if there are no \TeX{} errors). + +In a sense the situation with \program{axohelp} is no different from the use of +makeindex when one prepares a document that contains an index. In that +case one also has to run \LaTeX{} once to prepare a file for the +makeindex program, then run this program which prepares another file +and finally run \LaTeX{} again. Note that if you submit a paper to +arXiv.org, it is likely that their automated system for processing the +file will not run \program{axohelp}. So together with \file{paper.tex}, you one +should also submit the \file{.ax2} file. + +The complete source of the \program{axohelp} program can be found in the file +\file{axohelp.c}. This file contains a bit less than 4000 lines of C +code but should translate without problems with any C compiler --- see +Sec.\ \ref{sec:axohelp} for an appropriate command line on typical +Unix-like systems. + +The \program{axohelp} program functions as follows: +\begin{enumerate} +\item The \file{.ax1} file is located, space is allocated for it and + the complete file is read and closed again. +\item The input is analysed and split in individual object + specifications, of which a list is made. +\item The list of object specifications is processed one by + one. Before the processing of each object specification, the system + is brought to a default state to avoid that there is a memory of the + previous object. +\item In the \file{.ax2} file, for each object is written both the + corresponding pdf code and a copy of the specification of the object + as was earlier read from the \file{.ax1} file. Before the output + for an object is written to the \file{.ax2} file it is optimized a + bit to avoid superfluous spaces and linefeeds. +\end{enumerate} + +Processing an object from the input involves finding the proper routine for +it and testing that the number of parameters is correct. Some objects have +a special input (like the Curve, DashCurve, Polygon and FilledPolygon +commands). All relevant information is stored in an array of double +precision numbers. Then some generic action is taken (like setting the +linewidth and the color) and the right routine is +called. The output is written to an array of fixed (rather large) length. +Finally the array is optimized and written to file. + +A user who would like to extend the system with new objects should +take the above structure into account. There is an array that gives +the correspondence between axodraw object names and the corresponding +routine in \program{axohelp}. For each object, this array also gives the number +of parameters and whether the stroking or non-stroking color space +should be used. + +Naturally, when adding new kinds of object, it is necessary to add new +items to the just-mentioned array, and to add a corresponding +subroutine. One should also try to do all the writing of PDF code by +means of some routines like the ones sitting in the file in the +section named ``PDF utilities''. This is important from the viewpoint +of future action. When new graphical languages will be introduced and +it will be needed to modify axodraw2 such that it can produce code for +those languages, it should be much easier if code in the supporting +\program{axohelp} program needs to be changed in as few places as possible. +They form a set of graphics primitives used by other subroutines. +Some of these subroutines in the ``PDF utilities'' section of +\file{axohelp.c} have names similar to operators in the postscript +language that perform the same function. + +%--#] Appendix : +%>>#[ bibliography : + +\begin{thebibliography}{9} + +\bibitem{axodraw1} J.A.M. Vermaseren, + Comput.\ Phys.\ Commun.\ {\bf 83} (1994) 45--58 + +\bibitem{jaxodraw1} D. Binosi and L. Theussl, + Comput.\ Phys.\ Commun.\ {\bf 161} (2004) 76--86. + +\bibitem{jaxodraw2} +D. Binosi, J. Collins, C. Kaufhold, L. Theussl, + Comput.\ Phys.\ Commun.\ {\bf 180} (2009) 1709--1715 + +\bibitem{GPL} GNU General Public + License. \url{http://www.gnu.org/copyleft/gpl.html}. + +\bibitem{qcdbook} +J.C. Collins, ``Foundations of Perturbative QCD'' (Cambridge + University Press, 2011). + +\bibitem{twopap} S. Moch and J.A.M. Vermaseren, + Nucl.\ Phys.\ {\bf B573} (2000) 853. + %%CITATION = NUPHA,B573,853;%%. + +\end{thebibliography} + +%>>#] bibliography : +\end{document} + diff --git a/Build/source/utils/axodraw2/axodraw2-src/axodraw2.sty b/Build/source/utils/axodraw2/axodraw2-src/axodraw2.sty new file mode 100644 index 00000000000..b8dba9b5aad --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/axodraw2.sty @@ -0,0 +1,4728 @@ +% This is axodraw2.sty +% +% (C) 1994-2016 by authors: +% John Collins (jcc8 at psu dot edu) +% Jos Vermaseren (t68 at nikhef dot nl) +% +% +% Conditions of use: +% +% axodraw is free software: you can redistribute it and/or modify it under +% the terms of the GNU General Public License as published by the Free +% Software Foundation, either version 3 of the License, or (at your option) +% any later version. +% +% axodraw is distributed in the hope that it will be useful, but WITHOUT ANY +% WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +% FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +% details. +% +% For the GNU General Public License see . +% +% Code necessities: +% +% 1. \ignorespaces at end of commands that draw things. Often it won't +% matter, but occasionally a command in a picture environment +% will set material and a following uncommented end-of-line in +% the user's code will shift the insertion point. +% 2. Use end-of-line comments whereever TeX might use the end-of-line as +% a space to be typeset. +% +% Conventions +% +% 1. Any font and color changes that are supposed to be local should +% be made local, either by explicit TeX grouping or by being +% inside commands (e.g., box-making commands) that enforce groups. +% Braces work, but \begingroup and \endgroup are easier to see in +% multiline groups. +% 2. Scaling: +% \unitlength is the unit for the canvas (as in picture environment). +% \axoscale is for the unit for coordinates, widths, etc +% \axotextscale is for all text objects, BUT only when +% PSText is NOT set to scale as graphics objects +% When PSText is set to scale as graphics objects, PSText +% scales by \axoscale, but TeX-text has unit scaling. +% Given a specification of a position (x,y) as in a call to \Line, +% the position of the point relative to the origin is +% x_act = (x + \axoxo ) \axoscale pt + \axoxoffset \unitlength +% y_act = (y + \axoyo ) \axoscale pt + \axoyoffset \unitlength +% Widths and the like for lines are in units of \axoscale pt +% +% #[ About folds : (this line starts with one % and two tabs) +% +% The internals of the file have been organized in folds. +% These are defined as a range of lines if which the first and last +% lines have a special format. Each starts with any three characters +% (may include tabs), then #[ for the start line and #] for the closing +% line, then both lines need identical name fields, closed by a colon. +% After the colon can be anything. When a fold is closed one should see +% only the first line but with the #[ replaced by ## as in +% ## About folds : (this line starts with one % and two tabs) +% Folds can be nested. +% This fold concept comes originally from the occam compiler for the +% transputer in the second half of the 1980's although there it was +% implemented differently. It was taken over by the STedi editor in its +% current form. The sources of this editor are available from the form +% home site: http://www.nikhef.nl/~form +% Some people have managed to emulate these folds in editors like emacs +% and vim. +% +% #] About folds : +% +\ProvidesPackage{axodraw2}[2016/06/02 v2.1.0b] +% +% axodraw.sty file, both for .tex -> .dvi -> .ps and for .tex -> .pdf +% +% #[ Common LaTeX code : +% #[ Variables : +% +% +\RequirePackage{keyval} +\RequirePackage{ifthen} +\RequirePackage{graphicx} +\RequirePackage{color} +\RequirePackage{ifxetex} +% +% +\DeclareOption{v1compatible}{ + \def\B2Text{\BTwoText} + \def\G2Text{\GTwoText} + \def\C2Text{\CTwoText} +} +\DeclareOption{canvasScaleIs1pt}{\canvasScaleOnept} +\DeclareOption{canvasScaleIsObjectScale}{\canvasScaleObjectScale} +\DeclareOption{canvasScaleIsUnitLength}{\canvasScaleUnitLength} +\DeclareOption{PSTextScalesIndependently}{\PSTextScalesLikeGraphicsfalse} +\DeclareOption{PSTextScalesLikeGraphics}{\PSTextScalesLikeGraphicstrue} + +% N.B. Option processing is deferred to end of this file, so that all +% definitions and initializations have been done first. + +% Settings for pdf v. dvi/ps output: +% We need to be able to run under latex, pdflatex, lualatex, and +% xelatex, and use (if possible) \pdfoutput and \pdfliteral +% +% latex: Initially \pdfoutput is 0, and \pdfliteral is defined but +% not usable. +% pdflatex: Initially \pdfoutput is 1, and \pdfliteral is defined and +% usable. +% lualatex: same as pdflatex in versions up to 0.80 +% But in versions from 0.85, pdfouput and pdfliteral aren't +% defined; instead \outputmode, \pdfextension literal{...} +% are available instead. +% xelatex: Both \pdfoutput and \pdfliteral are undefined +% but special{pdf:literal ...} gives same effect as +% \pdfliteral would, and we can assume pdf mode always. +% When \pdfoutput is defined, the user can change its value to change +% the type of output. This must be done before the first page is +% created. But various packages (including graphics and ifpdf, as +% well as axodraw) take actions when the package is loaded that depend +% on current state of \pdfoutput (or its equivalent). So it is +% reasonable to require that \pdfoutput be set only before packages +% are loaded and not set later. +% +% We define \axo@pdfoutput and \axo@pdfliteral for our uses to have +% function of \pdfoutput and \pdfliteral, but to be defined always. +% We initialize them to a default suitable for dvi mode, and override +% these definitions to cover the situations listed above. This needs +% tests for whether \pdfoutput, \outputmode, etc are undefined of +% defined. We put these inside a group, to evade the side effect that +% \@ifundefined defines the object being tested. +% +% Default values: +\newcount\axo@pdfoutput +\axo@pdfoutput=0 +\def\axo@pdfliteral#1% + {\PackageWarning{axo}{Bug: pdfliteral accessed but not available}} +\bgroup + \@ifundefined{pdfoutput}% + {}% + {\global\axo@pdfoutput=\pdfoutput}% + % + \@ifundefined{pdfliteral}% + {}% + {% Define \axo@pdfliteral to call \pdfliteral, so that if the + % definition of \pdfliteral were to be overridden, we get to + % use the changed definition + \gdef\axo@pdfliteral#1{\pdfliteral{#1}}}% + \@ifundefined{outputmode}% + {}% + {\global\axo@pdfoutput=\outputmode} + \@ifundefined{pdfextension}% + {}% + {\gdef\axo@pdfliteral#1{\pdfextension literal{#1}}} +\egroup +\ifxetex + \axo@pdfoutput=1 + \def\axo@pdfliteral#1{\special{pdf:literal #1}} +\fi + +% +% For communicating with axohelp with global file +% +\newif\ifaxo@axohelpRerun +\axo@axohelpRerunfalse +% +\newcounter{axo@objectIndex} +\setcounter{axo@objectIndex}{0} +\newwrite\axo@spec +\newread\axo@axohelpFile +% +\newcommand\axo@setObject[3]{ + \expandafter\gdef\csname axo@input@#1\endcsname{#2} + \expandafter\gdef\csname axo@output@#1\endcsname{#3} +} +% +\ifcase\axo@pdfoutput +\else + \IfFileExists{\jobname.ax2}% + {{% For comparisons between current definition of object + % and previously processed definition, spaces must be preserved. + \obeyspaces + \openin\axo@axohelpFile=\jobname.ax2 + }}% + {% + \PackageWarning{axo}{File `\jobname.ax2' not found.} + \axo@axohelpReruntrue + } + \AtBeginDocument{\immediate\openout\axo@spec\jobname.ax1} + \AtEndDocument{\immediate\closeout\axo@spec + \ifaxo@axohelpRerun + \PackageWarning{axodraw2}{Run `axohelp \jobname' + and then rerun pdflatex.} + \fi + } +\fi + +% Commands to set parameters +% +% Arrow scale: +\newcommand{\AXO@DefaultArrowScale}{1} +\newcommand\SetArrowScale[1]{% + \renewcommand\AXO@DefaultArrowScale{#1}% +} +% Alternative name +\newcommand\DefaultArrowScale[1]{\SetArrowScale{#1}} +\SetArrowScale{1} + +% Arrow inset: +\newcommand\AXO@ArrowInset{0.2} +%\renewcommand\AXO@ArrowInset{-1 } +\newcommand\SetArrowInset[1]{% + \renewcommand\AXO@ArrowInset{#1}% +} + +% Arrow aspect: +\newcommand\AXO@DefaultArrowAspect{1.25} +\newcommand\SetArrowAspect[1]{% + \renewcommand\AXO@DefaultArrowAspect{#1}% +} + +% Arrow position (fractional position along line): +\newcommand\AXO@ArrowPos{0.5} +\newcommand\SetArrowPosition[1]{% + \renewcommand\AXO@ArrowPos{#1}% +} + +% Arrow stroke width +\newcommand{\AXO@DefaultArrowStroke}{0 } +\newcommand\SetArrowStroke[1]{% + \renewcommand\AXO@DefaultArrowStroke{#1}% +} + +\newlength{\axounitlength} +% The next two are scratch registers +\newlength\axo@x +\newlength\axo@y +% Initializations +\axounitlength=\unitlength +\def\axocanvas{1} % How unitlength is set in axopicture environment + % 0 => 1 pt + % 1 => \axoscale pt + % 2 => Don't set it +\def\axominusone{-1} +\def\axoone{1} +\def\axozero{0} +\def\axowidth{0.5} +\def\axoscale{1.0} +\def\axotextscale{1.0} +\newif\ifPSTextScalesLikeGraphics +\PSTextScalesLikeGraphicstrue +\def\axoxoff{0} +\def\axoyoff{0} +\def\axoxo{0} +\def\axoyo{0} +\def\axoarrowsize{2} +% +% +% Now the user callable routines, and their immediate helpers +% +% Commands for setting parameters applicable to subsequent graphical objects: +% +\def\SetLineSep#1{\def\AXO@Sep{#1}\ignorespaces}\relax +\let\SetSep=\SetLineSep\relax +\def\SetDashSize#1{\def\AXO@DashSize{#1}\ignorespaces}\relax +\def\SetWidth#1{\def\axowidth{#1}\ignorespaces} +\def\SetArrowSize#1{\def\axoarrowsize{#1}} + +\def\SetObjectScale#1{\def\axoscale{#1}\ignorespaces} +\def\SetCanvasScale#1{\unitlength = #1 pt\ignorespaces} +\def\SetTextScale#1{\def\axotextscale{#1}\ignorespaces} +\let\SetScale = \SetObjectScale + +\def\SetOffset(#1,#2){\def\axoxoff{#1}\def\axoyoff{#2}\ignorespaces} +\def\SetScaledOffset(#1,#2){\def\axoxo{#1}\def\axoyo{#2}\ignorespaces} + +\def\canvasScaleOnept{\def\axocanvas{0}} +\def\canvasScaleObjectScale{\def\axocanvas{1}} +\def\canvasScaleUnitLength{\def\axocanvas{2}} + +% +% +% #] Variables : +% #[ Defining commands with optional arguments : +% +\def\defWithOption#1#2#3{% + \@namedef{#1}% + {% + \@ifnextchar[%] + {\@nameuse{#1@A}}% + {\@nameuse{#1@A}[]}% + }% + \@namedef{#1@A}[##1]#2% + {#3}% +} +% +% #] Defining commands with optional arguments : +% #[ axopicture : +% +% Version of picture environment with unitlength set to 1pt +% as assumed by axodraw. We also store some variables and reset them +% afterwards. This makes the picture environment also local from the +% axodraw viewpoint. To change the global settings one should issue +% the corresponding command from outside the axopicture environment. +% Use: \begin{axopicture}(width,height)(xshift,yshift) +% \end{axopicture} +% The old use with the regular picture environment will still work, +% but it will have the old shortcomings connected to it. +% +\let\OLDpicture=\picture +\let\endOLDpicture=\endpicture +\newenvironment{axopicture} +{% + \ifcase \axocanvas + \setlength{\unitlength}{1 pt}% + \or + \setlength{\unitlength}{\axoscale\space pt}% + \else + % Leave \unitlength as whatever the user set + \fi + \begin{OLDpicture}% +} +{% + \end{OLDpicture}% + \ignorespacesafterend +} +% +% #] axopicture : +% #[ AXO@keys : +% + +% Diagnostics for unimplemented features: +\newif\ifAXONotImplemented +\AXONotImplementedfalse +\def\AXO@NOTIMPLEMENTED#1{% + \global\AXONotImplementedtrue + \PackageWarning{axodraw2}{#1}% +} +\AtEndDocument{% + \ifAXONotImplemented + \PackageWarningNoLine{axodraw2}{unimplemented features used + somewhere in document}% + \fi +} + +% The next is used temporarily, it gives the result of parsing an +% arrow-using command to give the Postscript code for setting the +% arrow. +% +% Keys for optional arguments: +% First the variables used, with some defaults. +\newif\ifAXO@arrow +\AXO@arrowfalse +\newif\ifAXO@clock +\AXO@clockfalse +\newif\ifAXO@dash +\AXO@dashfalse +\newif\ifAXO@double +\AXO@doublefalse +\newif\ifAXO@flip % Flip arrow orientation, as in JaxoDraw +\AXO@flipfalse +\newif\ifAXO@linecolor % Option sets color for current line +\AXO@linecolorfalse + +\def\AXO@Sep{2} % Double line separation +\def\AXO@DashSize{3} + +% Then the definitions of the keys +\define@key{axo}{arrowscale}{% + \def\AXO@CurrentArrowScale{#1}% +} +\define@key{axo}{arrowwidth}{% + \def\AXO@CurrentArrowWidth{#1}% +} +\define@key{axo}{arrowlength}{% + \def\AXO@CurrentArrowLength{#1}% +} +% Make arrowheight a synonym for arrowlength +\let\KV@axo@arrowheight=\KV@axo@arrowlength +% +\define@key{axo}{arrowpos}{% + \def\AXO@CurrentArrowPos{#1 } +} +% +\define@key{axo}{arrowaspect}{% + \def\AXO@CurrentArrowAspect{#1 } +} +% +\define@key{axo}{arrowinset}{% + \def\AXO@CurrentArrowInset{#1 } +} +% Make inset a synonym for arrowinset +\let\KV@axo@inset=\KV@axo@arrowinset +% +\define@key{axo}{arrowstroke}{% + \def\AXO@CurrentArrowStroke{#1 } +} +% +\define@key{axo}{arrow}[true]{% + \AXO@boolkey{#1}{arrow}% +} +\define@key{axo}{clock}[true]{% + \AXO@boolkey{#1}{clock}% +} +\define@key{axo}{clockwise}[true]{% + \AXO@boolkey{#1}{clock}% +} +\define@key{axo}{color}{% + \def\AXO@CurrentColor{#1}% + \AXO@linecolortrue +} +% Make colour a synonym for color +\let\KV@axo@colour=\KV@axo@color +% +\define@key{axo}{dash}[true]{% + \AXO@boolkey{#1}{dash}% +} +\define@key{axo}{dashsize}{% + \def\AXO@CurrentDashSize{#1 } +} +\define@key{axo}{dsize}{% + \def\AXO@CurrentDashSize{#1 } +} +\define@key{axo}{double}[true]{% + \AXO@boolkey{#1}{double}% +} +\define@key{axo}{flip}[true]{% + \AXO@boolkey{#1}{flip}% +} +\define@key{axo}{linesep}{% + \def\AXO@CurrentSep{#1} +} +\define@key{axo}{sep}{% + \def\AXO@CurrentSep{#1} +} +\define@key{axo}{width}{% + \def\AXO@CurrentWidth{#1}% +} +% +% #] AXO@keys : +% #[ AXO@Parse : +% +% Parsing of optional arguments, etc +% +\def\AXO@Parse#1#2{% + % Usage: \AXO@Parse#1#2 or \AXO@Parse#1#2[#3] + % #1 is a command for setting an object, that takes no optional argument + % #2 and the optional #3 are keyword settings. + % There then follow the compulsory arguments for the command in #1. + % + % E.g., \AXO@Parse{\AXO@Line}{double}(x1,y1)(x2,y2) + % \AXO@Parse{\AXO@Line}{double}[arrow](x1,y1)(x2,y2) + % + % I will + % (a) Set standard initial settings (arrows, etc) + % (b) Parse the keyword settings in #2 and #3, e.g., scale = 3, + % (c) Call #1 to make the object + \AXO@arrowfalse + \AXO@clockfalse + \AXO@dashfalse + \AXO@doublefalse + \AXO@flipfalse + \AXO@linecolorfalse + \let\AXO@CurrentWidth\axowidth + \let\AXO@CurrentArrowPos\AXO@ArrowPos + \let\AXO@CurrentArrowWidth\relax + \let\AXO@CurrentArrowLength\relax + \let\AXO@CurrentArrowInset\AXO@ArrowInset + \let\AXO@CurrentArrowScale\AXO@DefaultArrowScale + \let\AXO@CurrentArrowStroke\AXO@DefaultArrowStroke + \let\AXO@CurrentArrowAspect\AXO@DefaultArrowAspect + \let\AXO@CurrentDashSize\AXO@DashSize + \let\AXO@CurrentSep=\AXO@Sep + \@ifnextchar[{\AXO@Options{#1}{#2}}% + {\AXO@Options{#1}{#2}[]}% +} +% +% #] AXO@Parse : +% #[ AXO@Options : +% +\def\AXO@Options#1#2[#3]{% + % #1 is command to execute, #2 and #3 are options. + \setkeys{axo}{#2}% + \setkeys{axo}{#3}% + \ifx\AXO@CurrentArrowLength\relax + \def\AXO@CurrentArrowLength{0 }% + \fi + \ifx\AXO@CurrentArrowWidth\relax + \def\AXO@CurrentArrowWidth{0 }% + \fi + \ifAXO@arrow + \def\AXO@ArrowArg{ + \AXO@CurrentArrowStroke \space % + \AXO@CurrentArrowWidth \space % + \AXO@CurrentArrowLength \space % + \AXO@CurrentArrowInset \space % + \AXO@CurrentArrowScale \space % + \AXO@CurrentArrowAspect \space % + \AXO@CurrentArrowPos \space % + \ifcase\axo@pdfoutput + true \space % Indicates that an arrow should be drawn. + \else + 1 \space % Indicates that an arrow should be drawn. + \fi + }% + \else + \ifcase\axo@pdfoutput + \def\AXO@ArrowArg{ 0 0 0 0 0 0 0 false }% + \else + \def\AXO@ArrowArg{ 0 0 0 0 0 0 0 0 }% + \fi + \fi + #1% +} +% +\def\AXO@useopts{% + % Override global settings by those from options + % HACK: The \@killglue solves problem that setting color + % causes a shift in horizontal position. + % Motivation: From definition of \put. + \@killglue + \ifAXO@linecolor \SetColor{\AXO@CurrentColor}\fi +} +% +% Now ensure there is a setting for the current arrow +\AXO@Parse{}{} +% +% #] AXO@Options : +% #[ AXO@varia : +% +% Now ensure there is a setting for the current arrow +\AXO@Parse{}{} + +\def\AXO@PrependOption#1#2{% + % Run command #1, which has an optional argument, with #2 prepended + % to the command's optional arguments. If there are no optional + % arguments, just run the command with #2 as the optional arguments + \@ifnextchar[{\AXO@TwoOption{#1}{#2}}% + {#1[#2]}% +} +\def\AXO@TwoOption#1#2[#3]{% + #1[#2,#3]% +} +% +% Copied from graphicx.sty, for use with boolean keys +% Modified to do lower casing here +\def\AXO@boolkey#1#2{% + \lowercase{\AXO@boolkeyA{#1}}{#2}% +} +\def\AXO@boolkeyA#1#2{% + \csname AXO@#2\ifx\relax#1\relax true\else#1\fi\endcsname +} +% +% #] AXO@varia : +% #[ Colors : +% +% Here we make an interface, compatible with both: color.sty, +% with the commands of axodraw v. 1, and with the commands of +% colordvi.sty (used by axodraw v. 1). +% +% 1. We make a set of named colors suitable for use with both +% axodraw's commands that take color arguments and with +% color.sty's \color command. +% 2. We define a command \SetColor to set a named color as the +% current color. It is now identical to \color. +% 3. For each of the colors that we define here, we make +% named color setting commands, e.g., \Red +% \textRed. \Red sets its (one) argument in Red, \textRed +% is a "declaration" that changes the current color. +% All the commands for setting color apply to both regular LaTeX +% material and to axodraw objects. Their setting of color +% respects LaTeX environments and TeX groups. +% +% We also define +% a. Named-color commands like \textRed and \Red for named +% colors to give the same interface as the colordvi +% package (and hence axodraw v. 1). +% b. \SetColor command to set a named color. + + +\let\SetColor=\color + +% For v. 1 compatibility: +\def\IfColor#1#2{#1} + +\newcommand\newcolor[2]{% + % Define a named color both in the color.sty style + % and in the colordvi.sty, with also a command giving the CMYK value. + % #1 is the color's name, #2 is its CMYK definition, space + % separated. + % + % Invoke color.sty's \definecolor after change of argument format: + \axo@new@color #1 #2\@% + % Define commands to use this color, + % E.g., if #1 is Red, then define \Red and \textRed: + \expandafter\def\csname #1\endcsname##1{{\SetColor{#1}##1}\ignorespaces} + \expandafter\def\csname text#1\endcsname{\SetColor{#1}\ignorespaces} + % The following to give the cmyk value of a color, e.g., \cmykRed, + % is no longer needed, since we no longer do color setting in + % postscript and pdf code: +%% \expandafter\def\csname cmyk#1\endcsname{#2} +} + +% Command to invoke color.sty's \definecolor, which needs a translation +% of our space-separated CMYK vector to a comma-separated vector: +\def\axo@new@color #1 #2 #3 #4 #5\@{\definecolor{#1}{cmyk}{#2,#3,#4,#5}} + + +% For consistency we define our named colors here, rather than +% using color.sty's mechanisms. The +% first 68 are standard colors, as defined by dvips, and +% implemented in both colordvi.ps, and in color.sty with its +% usenames and dvipsnames options (in the file dvipsnam.def +% provided by the LaTeX graphics package). +% +% We define an extra 5 colors at the end +% +% The 68 dvips-defined colors are: +% +\newcolor{GreenYellow}{0.15 0 0.69 0} +\newcolor{Yellow}{0 0 1 0} +\newcolor{Goldenrod}{0 0.10 0.84 0} +\newcolor{Dandelion}{0 0.29 0.84 0} +\newcolor{Apricot}{0 0.32 0.52 0} +\newcolor{Peach}{0 0.50 0.70 0} +\newcolor{Melon}{0 0.46 0.50 0} +\newcolor{YellowOrange}{0 0.42 1 0} +\newcolor{Orange}{0 0.61 0.87 0} +\newcolor{BurntOrange}{0 0.51 1 0} +\newcolor{Bittersweet}{0 0.75 1 0.24} +\newcolor{RedOrange}{0 0.77 0.87 0} +\newcolor{Mahogany}{0 0.85 0.87 0.35} +\newcolor{Maroon}{0 0.87 0.68 0.32} +\newcolor{BrickRed}{0 0.89 0.94 0.28} +\newcolor{Red}{0 1 1 0} +\newcolor{OrangeRed}{0 1 0.50 0} +\newcolor{RubineRed}{0 1 0.13 0} +\newcolor{WildStrawberry}{0 0.96 0.39 0} +\newcolor{Salmon}{0 0.53 0.38 0} +\newcolor{CarnationPink}{0 0.63 0 0} +\newcolor{Magenta}{0 1 0 0} +\newcolor{VioletRed}{0 0.81 0 0} +\newcolor{Rhodamine}{0 0.82 0 0} +\newcolor{Mulberry}{0.34 0.90 0 0.02} +\newcolor{RedViolet}{0.07 0.90 0 0.34} +\newcolor{Fuchsia}{0.47 0.91 0 0.08} +\newcolor{Lavender}{0 0.48 0 0} +\newcolor{Thistle}{0.12 0.59 0 0} +\newcolor{Orchid}{0.32 0.64 0 0} +\newcolor{DarkOrchid}{0.40 0.80 0.20 0} +\newcolor{Purple}{0.45 0.86 0 0} +\newcolor{Plum}{0.50 1 0 0} +\newcolor{Violet}{0.79 0.88 0 0} +\newcolor{RoyalPurple}{0.75 0.90 0 0} +\newcolor{BlueViolet}{0.86 0.91 0 0.04} +\newcolor{Periwinkle}{0.57 0.55 0 0} +\newcolor{CadetBlue}{0.62 0.57 0.23 0} +\newcolor{CornflowerBlue}{0.65 0.13 0 0} +\newcolor{MidnightBlue}{0.98 0.13 0 0.43} +\newcolor{NavyBlue}{0.94 0.54 0 0} +\newcolor{RoyalBlue}{1 0.50 0 0} +\newcolor{Blue}{1 1 0 0} +\newcolor{Cerulean}{0.94 0.11 0 0} +\newcolor{Cyan}{1 0 0 0} +\newcolor{ProcessBlue}{0.96 0 0 0} +\newcolor{SkyBlue}{0.62 0 0.12 0} +\newcolor{Turquoise}{0.85 0 0.20 0} +\newcolor{TealBlue}{0.86 0 0.34 0.02} +\newcolor{Aquamarine}{0.82 0 0.30 0} +\newcolor{BlueGreen}{0.85 0 0.33 0} +\newcolor{Emerald}{1 0 0.50 0} +\newcolor{JungleGreen}{0.99 0 0.52 0} +\newcolor{SeaGreen}{0.69 0 0.50 0} +\newcolor{Green}{1 0 1 0} +\newcolor{ForestGreen}{0.91 0 0.88 0.12} +\newcolor{PineGreen}{0.92 0 0.59 0.25} +\newcolor{LimeGreen}{0.50 0 1 0} +\newcolor{YellowGreen}{0.44 0 0.74 0} +\newcolor{SpringGreen}{0.26 0 0.76 0} +\newcolor{OliveGreen}{0.64 0 0.95 0.40} +\newcolor{RawSienna}{0 0.72 1 0.45} +\newcolor{Sepia}{0 0.83 1 0.70} +\newcolor{Brown}{0 0.81 1 0.60} +\newcolor{Tan}{0.14 0.42 0.56 0} +\newcolor{Gray}{0 0 0 0.50} +\newcolor{Black}{0 0 0 1} +\newcolor{White}{0 0 0 0} +% +% Our extra colors +% +\newcolor{LightYellow}{0 0 0.7 0} +\newcolor{LightRed}{0 0.75 0.7 0} +\newcolor{LightBlue}{0.7 0.5 0 0} +\newcolor{LightGray}{0 0 0 0.1} +\newcolor{VeryLightBlue}{0.15 0.07 0 0} +% +\SetColor{Black} +% +% #] Colors : +% #] Common LaTeX code : +% #[ LaTeX primitives : +% +% #[ Putting material +% + +% Some utilities that remove extra space that creeps in, particularly +% when extra groups are inserted before the use of \put. +% Use the definition of \@killglue used in latex.ltx for \put, +% but copy it here, since \@killglue is internal and not documented. +\gdef\AXO@killglue{\unskip\@whiledim \lastskip >\z@\do{\unskip}} + +% Special purpose versions of \put and \special +\long\gdef\putLen(#1,#2)#3{% + % Like LaTeX's \put, except that #1 and #2 are lengths instead of numbers + % giving lengths in units of \unitlength. + \AXO@killglue\raise#2\relax + \hbox to 0pt{\kern#1\relax #3\hss}% + \ignorespaces +} +% +\def\AxoPut(#1,#2)#3{% + % Like \put, but shifted by axodraw's offsets. + % This provides a way of coding the offsets in one place. + % But we are only using it in a limited set of cases so far. + \AXO@killglue + \bgroup + \axounitlength = \axoscale pt + \axo@x = \axoxoff \unitlength + \advance\axo@x by \axoxo \axounitlength + \advance\axo@x by #1 \axounitlength + \axo@y = \axoyoff \unitlength + \advance\axo@y by \axoyo \axounitlength + \advance\axo@y by #2 \axounitlength + \putLen(\axo@x,\axo@y){% + % If there are axodraw objects in #3, they should not also + % apply shifts, that would be double + % counting! Hence: + \SetOffset(0,0)% + \SetScaledOffset(0,0)% + #3% + }% + \egroup +\ignorespaces +} + +\def\AXOspecial#1{% + % Insertion of postscript code: + % Replacement for \special{" ...}, with the color initialized + % to the color befor the \special. (Ordinary \special{"...} + % initializes color to black.) + % Definitions made by \special{!...} are in dictionary SDict + % (as stated in dvips documentation), and we save color there. + \special{ps:: SDict begin savecolor end }% + \special{" restorecolor #1 }% +} + +\def\AXOputPS#1{% + % Insert postscript code after allowing for offsets. + \AxoPut(0,0){\AXOspecial{#1}}% +} + +\def\AXOputPDF#1{ + % Insert pdf code after allowing for offsets. + \AxoPut(0,0){\axo@pdfliteral{#1}}% +} + +% +% Now variables and routines for setting material in boxes (used by +% the BText etc commands. +% +\newdimen\tmpX +\newdimen\tmpY +\newsavebox{\tmpBox} +\newsavebox{\tmpBoxA} +% +\newcount\axo@tmp +\newcount\axo@tmpA +\newcount\axo@tmpB + +\newcount\bpinsp +\bpinsp = 65782 +\newcount\ptinsp +\ptinsp = 65536 + +\def\AssignDecDiv#1#2#3{% + % Assign the variable of name #1 to the result of dividing integer + % #2 by integer #3, with result as a textual decimal. Absolute + % accuracy: 0.001. + % Typical use: conversion of lengths to points and big points. + % \AssignDecDiv{cachedscale}{\unitlength}{65536} + % \AssignDecDiv{cachedscale}{\unitlength}{\ptinsp} + % to get length in points. + % Notes on conversion + % 1 sp = 2^{-16} pt = (1/65536) pt + % 1 pt = (1/72.27) in + % 1 bp = (1/72) in + % 1 sp = (1/65781.76) bp + % Use \relax at end of lines setting count registers. + % This ensures that the code works both when the arguments are + % given as numbers, e.g., \AxoDecDiv{100}{3}, as well as when they are + % given as lengths, etc, e.g., \AxoDecDiv{\unitlength}{256} + % + \axo@tmp = #2\relax + \axo@tmpA = \axo@tmp + \divide \axo@tmpA by #3\relax + \axo@tmpB=\axo@tmpA + \multiply \axo@tmpA by #3\relax + \advance \axo@tmp by -\axo@tmpA + \multiply \axo@tmp by 1000 + \divide \axo@tmp by #3\relax + \expandafter\edef\csname #1\endcsname{\the\axo@tmpB.\the\axo@tmp}% +} + +\def\SetTmpBox#1{% + % Sets the box \tmpBox to the contents of #1 set with current PS + % font and size. Sets \tmpX and \tmpY to the dimensions of the box + % plus some space around it, suitable for drawing an enclosing box. + % + % The vertical box setting numbers agree with those in axodraw's + % postscript code, but not (28 July 2014) with the axohelp pdf code. + % The reverse is true for the horizontal box settings. + % We can tweak them further. + % This is a standardized routine for use in all versions of postscript + % textbox routines. + % N.B. Use LaTeX's \sbox at first step, not TeX primitives to set + % box contents; it works properly with color. + \sbox{\tmpBox}{\UseCurrentPSFont #1}% + \tmpX = \axofontsize pt + \advance \tmpX by \wd\tmpBox + \tmpY = \axofontsize pt + \tmpY = 0.33333 \tmpY + \advance \tmpY by \ht\tmpBox + \advance \tmpY by \dp\tmpBox + \AssignDecDiv{tmpXT}{\tmpX}{\ptinsp}% + \AssignDecDiv{tmpYT}{\tmpY}{\ptinsp}% +} + +\def\SetTmpBoxTwo#1#2{% + % Equivalent of \SetTmpBox for two line commands. + % + % N.B. Use LaTeX's \sbox at first step, not TeX primitives to set + % box contents; it works properly with color. + \sbox{\tmpBox}{\UseCurrentPSFont #1}% + \sbox{\tmpBoxA}{\UseCurrentPSFont #2}% + \ifdim \wd\tmpBox > \wd\tmpBoxA + \tmpX = \wd\tmpBox + \else + \tmpX = \wd\tmpBoxA + \fi + \advance \tmpX by \axofontsize pt + \tmpY = \axofontsize pt + \setbox\tmpBox=% + \vbox{% + \lineskip = 0.1 \tmpY + \baselineskip = 1.1 \tmpY + \vskip 0.3 \tmpY + \hbox{\makebox[0pt]{\box\tmpBox}}% + \hbox{\makebox[0pt]{\box\tmpBoxA}}% + \vskip 0.3 \tmpY + }% + \tmpY = \ht\tmpBox + \advance \tmpY by \dp\tmpBox + \AssignDecDiv{tmpXT}{\tmpX}{\ptinsp}% + \AssignDecDiv{tmpYT}{\tmpY}{\ptinsp}% +} +% +% #] Putting +% #[ Point setting and using : +% +\def\SetPoint#1(#2,#3){% + % Define a named point in 2D + \@namedef{AXO@p.X@#1}{#2}% + \@namedef{AXO@p.Y@#1}{#3}% +} +\def\useX#1{% + % Use a named point + \@nameuse{AXO@p.X@#1}% +} +\def\useY#1{% + % Use a named point + \@nameuse{AXO@p.Y@#1}% +} +% +% #] Point setting and using : +% #[ Particle routines : +% #[ Gluon : +% +\def\Gluon{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \AXO@Parse{\AXO@Gluon}{}% +} +% +% #] Gluon : +% #[ DoubleGluon : +% +\defWithOption{DoubleGluon}{(#2,#3)(#4,#5)#6#7#8}{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \Gluon[double,sep=#8,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DoubleGluon : +% #[ DashGluon : +% +\defWithOption{DashGluon}{(#2,#3)(#4,#5)#6#7#8}{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \Gluon[dash,dashsize=#8,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DashGluon : +% #[ DashDoubleGluon : +% +\defWithOption{DashDoubleGluon}{(#2,#3)(#4,#5)#6#7#8#9}{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \Gluon[double,sep=#8,dash,dashsize=#9,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DashDoubleGluon : +% #[ GluonCirc : +% +% Draws a gluon on a circle. The center of the circle is at (#1,#2) +% The radius and the phase angle are (#3,#4), #5 is the +% amplitude of the gluon, and #6 is the number of windings. +% +\def\GluonCirc{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \AXO@Parse{\AXO@GluonCirc}{}% +} +% +% #] GluonCirc : +% #[ DoubleGluonCirc : +% +\defWithOption{DoubleGluonCirc}{(#2,#3)(#4,#5)#6#7#8}{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \GluonCirc[double,sep=#8,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DoubleGluonCirc : +% #[ DashGluonCirc : +% +\defWithOption{DashGluonCirc}{(#2,#3)(#4,#5)#6#7#8}{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \GluonCirc[dash,dashsize=#8,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DashGluonCirc : +% #[ DashDoubleGluonCirc : +% +\defWithOption{DashDoubleGluonCirc}{(#2,#3)(#4,#5)#6#7#8#9}{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \GluonCirc[double,sep=#8,dash,dashsize=#9,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DashDoubleGluonCirc : +% #[ GluonArc : +% +\def\GluonArc{% +% \GluonArc(x,y)(r,theta1,theta2){amplitude}{numwind} +% draws a gluon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \AXO@Parse{\AXO@GluonArc}{}% +} +% +\let\GlueArc=\GluonArc % For backward compatibility +% +% #] GluonArc : +% #[ DoubleGluonArc : +% +\defWithOption{DoubleGluonArc}{(#2)(#3)#4#5#6}{% +% +% \DoubleGluonArc(x,y)(r,theta1,theta2){amplitude}{numwind}{sep} +% draws a gluon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \GluonArc[double,sep=#6,#1](#2)(#3){#4}{#5}% +} +% +\let\DoubleGlueArc=\DoubleGluonArc % For backward compatibility +% +% #] DoubleGluonArc : +% #[ DashGluonArc : +% +\defWithOption{DashGluonArc}{(#2)(#3)#4#5#6}{% +% +% \DashGluonArc(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a gluon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \GluonArc[dash,dashsize=#6,#1](#2)(#3){#4}{#5}% +} +% +\let\DashGlueArc=\DashGluonArc % For backward compatibility +% +% #] DashGluonArc : +% #[ DashDoubleGluonArc : +% +\defWithOption{DashDoubleGluonArc}{(#2)(#3)#4#5#6#7}{% +% +% \DashGluonArc(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a gluon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \GluonArc[double,sep=#6,dash,dashsize=#7,#1](#2)(#3){#4}{#5}% +} +% +\let\DashDoubleGlueArc=\DashDoubleGluonArc % For backward compatibility +% +% #] DashDoubleGluonArc : +% #[ GluonArcn : +% +\defWithOption{GluonArcn}{(#2)(#3)#4#5}{% +% \GluonArcn(x,y)(r,theta1,theta2){amplitude}{numwind} +% draws a gluon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings. The n stands for clockwise +% + \GluonArc[clockwise,#1](#2)(#3){#4}{#5}% +} +% +\let\GlueArcn=\GluonArcn % For backward compatibility +% +% #] GluonArcn : +% #[ DoubleGluonArcn : +% +\defWithOption{DoubleGluonArcn}{(#2)(#3)#4#5#6}{% +% +% \DoubleGluonArcn(x,y)(r,theta1,theta2){amplitude}{numwind}{sep} +% draws a gluon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings. Clockwise. +% + \GluonArc[clockwise,double,sep=#6,#1](#2)(#3){#4}{#5}% +} +% +\let\DoubleGlueArcn=\DoubleGluonArcn % For backward compatibility +% +% #] DoubleGluonArcn : +% #[ DashGluonArcn : +% +\defWithOption{DashGluonArcn}{(#2)(#3)#4#5#6}{% +% +% \DashGluonArc(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a gluon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings. Clockwise. +% + \GluonArc[clockwise,dash,dashsize=#6,#1](#2)(#3){#4}{#5}% +} +% +\let\DashGlueArcn=\DashGluonArcn % For backward compatibility +% +% #] DashGluonArcn : +% #[ DashDoubleGluonArcn : +% +\defWithOption{DashDoubleGluonArcn}{(#2)(#3)#4#5#6#7}{% +% +% \DashGluonArcn(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a gluon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings. Clockwise. +% + \GluonArc[clockwise,double,sep=#6,dash,dashsize=#7,#1](#2)(#3){#4}{#5}% +} +% +\let\DashDoubleGlueArcn=\DashDoubleGluonArcn % For backward compatibility +% +% #] DashDoubleGluonArcn : +% #[ Photon : +% +\def\Photon{% +% \Photon[opt](x1,y1)(x2,y2){amplitude}{numwind} +% Draws a photon from (x1,y1) to (x2,y2) with given amplitude and +% number of windings +% Supported options: double, sep, linesep +% + \AXO@Parse{\AXO@Photon}{}% +} +% +% #] Photon : +% #[ DoublePhoton : +% +\defWithOption{DoublePhoton}{(#2,#3)(#4,#5)#6#7#8}{% +% +% Draws a photon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \Photon[double,sep=#8,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DoublePhoton : +% #[ DashPhoton : +% +\defWithOption{DashPhoton}{(#2,#3)(#4,#5)#6#7#8}{% +% +% Draws a photon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \Photon[dash,dashsize=#8,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DashPhoton : +% #[ DashDoublePhoton : +% +\defWithOption{DashDoublePhoton}{(#2,#3)(#4,#5)#6#7#8#9}{% +% +% Draws a photon from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \Photon[double,sep=#8,dash,dashsize=#9,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DashDoublePhoton : +% #[ PhotonArc : +% +\def\PhotonArc{% +% \PhotonArc(x,y)(r,theta1,theta2){amplitude}{numwind} +% draws a photon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \AXO@Parse{\AXO@PhotonArc}{}% +} +% +% #] PhotonArc : +% #[ DoublePhotonArc : +% +\defWithOption{DoublePhotonArc}{(#2,#3)(#4,#5,#6)#7#8#9}{% +% +% \PhotonArc(x,y)(r,theta1,theta2){amplitude}{numwind}{sep} +% draws a photon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \PhotonArc[double,sep=#9,#1](#2,#3)(#4,#5,#6){#7}{#8}% +} +% +% #] DoublePhotonArc : +% #[ DashPhotonArc : +% +\defWithOption{DashPhotonArc}{(#2,#3)(#4,#5,#6)#7#8#9}{% +% +% \DashPhotonArc(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a photon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \PhotonArc[dash,dashsize=#9,#1](#2,#3)(#4,#5,#6){#7}{#8}% +} +% +% +% #] DashPhotonArc : +% #[ DashDoublePhotonArc : +% +\defWithOption{DashDoublePhotonArc}{(#2)(#3)#4#5#6#7}{% +% Note that there are actually ten arguments with the optional #1, +% which LaTeX/TeX can't handle. I consolidate the comma separated +% arguments into one, and then pass them to \PhotonArc +% +% \DashPhotonArc(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a photon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \PhotonArc[double,sep=#6,dash,dashsize=#7,#1](#2)(#3){#4}{#5}% +} +% +% +% #] DashDoublePhotonArc : +% #[ PhotonArcn : +% +\defWithOption{PhotonArcn}{(#2,#3)(#4,#5,#6)#7#8}{% +% \PhotonArcn(x,y)(r,theta1,theta2){amplitude}{numwind} +% draws a photon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \PhotonArc[clockwise,#1](#2,#3)(#4,#5,#6){#7}{#8}% +} +% +% #] PhotonArcn : +% #[ DoublePhotonArcn : +% +\defWithOption{DoublePhotonArcn}{(#2)(#3)#4#5#6}{% +% I consolidate the comma separated arguments into one, and then pass +% them to \PhotonArc +% +% \PhotonArcn(x,y)(r,theta1,theta2){amplitude}{numwind}{sep} +% draws a photon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \PhotonArc[clockwise,double,sep=#6,#1](#2)(#3){#4}{#5}% +} +% +% #] DoublePhotonArcn : +% #[ DashPhotonArcn : +% +\defWithOption{DashPhotonArcn}{(#2)(#3)#4#5#6}{% +% I consolidate the comma separated arguments into one, and then pass +% them to \PhotonArc +% +% \DashPhotonArcn(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a photon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings.Clockwise. +% + \PhotonArc[clockwise,dash,dashsize=#6,#1](#2)(#3){#4}{#5}% +} +% +% +% #] DashPhotonArcn : +% #[ DashDoublePhotonArcn : +% +\defWithOption{DashDoublePhotonArcn}{(#2)(#3)#4#5#6#7}{% +% I consolidate the comma separated arguments into one, and then pass +% them to \PhotonArc +% +% \DashPhotonArcn(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a photon on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings. Clockwise. +% + \PhotonArc[clockwise,double,sep=#6,dash,dashsize=#7,#1](#2)(#3){#4}{#5}% +} +% +% +% #] DashDoublePhotonArcn : +% #[ ZigZag : +% +\def\ZigZag{% +% \ZigZag[opt](x1,y1)(x2,y2){amplitude}{numwind} +% Draws a zigzag from (x1,y1) to (x2,y2) with given amplitude and +% number of windings +% Supported options: double, sep, linesep +% + \AXO@Parse{\AXO@ZigZag}{}% +} +% +% #] ZigZag : +% #[ DoubleZigZag : +% +\defWithOption{DoubleZigZag}{(#2,#3)(#4,#5)#6#7#8}{% +% +% Draws a zigzag from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \ZigZag[double,sep=#8,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DoubleZigZag : +% #[ DashZigZag : +% +\defWithOption{DashZigZag}{(#2,#3)(#4,#5)#6#7#8}{% +% +% Draws a zigzag from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \ZigZag[dash,dashsize=#8,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DashZigZag : +% #[ DashDoubleZigZag : +% +\defWithOption{DashDoubleZigZag}{(#2,#3)(#4,#5)#6#7#8#9}{% +% +% Draws a zigzag from (x1,y1) to (x2,y2) with amplitude and number of windings +% + \ZigZag[double,sep=#8,dash,dashsize=#9,#1](#2,#3)(#4,#5){#6}{#7}% +} +% +% #] DashDoubleZigZag : +% #[ ZigZagArc : +% +\def\ZigZagArc{% +% \ZigZagArc(x,y)(r,theta1,theta2){amplitude}{numwind} +% draws a zigzag on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \AXO@Parse{\AXO@ZigZagArc}{}% +} +% +% #] ZigZagArc : +% #[ DoubleZigZagArc : +% +\defWithOption{DoubleZigZagArc}{(#2,#3)(#4,#5,#6)#7#8#9}{% +% +% \ZigZagArc(x,y)(r,theta1,theta2){amplitude}{numwind}{sep} +% draws a zigzag on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \ZigZagArc[double,sep=#9,#1](#2,#3)(#4,#5,#6){#7}{#8}% +} +% +% #] DoubleZigZagArc : +% #[ DashZigZagArc : +% +\defWithOption{DashZigZagArc}{(#2)(#3)#4#5#6}{% +% +% \DashZigZagArc(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a zigzag on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \ZigZagArc[dash,dashsize=#6,#1](#2)(#3){#4}{#5}% +} +% +% +% #] DashZigZagArc : +% #[ DashDoubleZigZagArc : +% +\defWithOption{DashDoubleZigZagArc}{(#2)(#3)#4#5#6#7}{% +% +% \DashZigZagArc(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a zigzag on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \ZigZagArc[double,sep=#6,dash,dashsize=#7,#1](#2)(#3){#4}{#5}% +} +% +% +% #] DashDoubleZigZagArc : +% #[ ZigZagArcn : +% +\defWithOption{ZigZagArcn}{(#2)(#3)#4#5}{% +% \ZigZagArcn(x,y)(r,theta1,theta2){amplitude}{numwind} +% draws a zigzag on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \ZigZagArc[clockwise,#1](#2)(#3){#4}{#5}% +} +% +% #] ZigZagArcn : +% #[ DoubleZigZagArcn : +% +\defWithOption{DoubleZigZagArcn}{(#2)(#3)#4#5#6}{% +% +% \ZigZagArcn(x,y)(r,theta1,theta2){amplitude}{numwind}{sep} +% draws a zigzag on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings +% + \ZigZagArc[clockwise,double,sep=#6,#1](#2)(#3){#4}{#5}% +} +% +% #] DoubleZigZagArcn : +% #[ DashZigZagArcn : +% +\defWithOption{DashZigZagArcn}{(#2)(#3)#4#5#6}{% +% +% \DashZigZagArcn(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a zigzag on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings.Clockwise. +% + \ZigZagArc[clockwise,dash,dashsize=#6,#1](#2)(#3){#4}{#5}% +} +% +% +% #] DashZigZagArcn : +% #[ DashDoubleZigZagArcn : +% +\defWithOption{DashDoubleZigZagArcn}{(#2)(#3)#4#5#6#7}{% +% +% \DashZigZagArcn(x,y)(r,theta1,theta2){amplitude}{numwind}{dashsize} +% draws a zigzag on an arc centered at (x,y) of radius r, starting +% at theta1, and ending at theta2, with given amplitude and +% number of windings. Clockwise. +% + \ZigZagArc[clockwise,double,sep=#6,dash,dashsize=#7,#1](#2)(#3){#4}{#5}% +} +% +% #] DashDoubleZigZagArcn : +% #] Particle routines : +% #[ Line routines : +% #[ Line : +% +\def\Line{% +% \Line[opt](x1,y1)(x2,y2) +% draws a line from (x1,y1) to (x2,y2). NO arrow by default. +% Supported options: all arrow settings, all double line settings, +% all dash line settings. +% + \AXO@Parse{\AXO@Line}{}% +} +% +% #] Line : +% #[ DoubleLine : +% +\defWithOption{DoubleLine}{(#2,#3)(#4,#5)#6}{% +% +% \DoubleLine[opt](x1,y1)(x2,y2){sep} +% Draws a double line, with NO arrow by default, from (x1,y1) to (x2,y2), +% with separation sep +% + \Line[arrow=false,double,sep=#6,#1](#2,#3)(#4,#5)% +} +% +% #] DoubleLine : +% #[ DashLine : +% +\defWithOption{DashLine}{(#2,#3)(#4,#5)#6}{% +% \DashLine[opt](x1,y1)(x2,y2){sep} +% Draws a line from (x1,y1) to (x2,y2) with a dash pattern of which the +% alternating black and white pieces are approximately sep points long +% + \Line[dash,dashsize=#6,#1](#2,#3)(#4,#5)% +} +% +% #] DashLine : +% #[ DashDoubleLine : +% +\defWithOption{DashDoubleLine}{(#2,#3)(#4,#5)#6#7}{% +% \DashDoubleLine[opt](x1,y1)(x2,y2){sep}{dashsize} +% Draws a double line from (x1,y1) to (x2,y2) with separation sep, +% and with a dash pattern of which the +% alternating black and white pieces are approximately sep points long +% Arrow off. + \Line[arrow=off,dash,dashsize=#7,double,sep=#6,#1](#2,#3)(#4,#5)% +} +% +% #] DashDoubleLine : +% #[ ArrowLine : +% +\defWithOption{ArrowLine}{(#2,#3)(#4,#5)}{% +% \ArrowLine[opt](x1,y1)(x2,y2) +% draws a line from (x1,y1) to (x2,y2). Arrow by default. +% + \Line[arrow,#1](#2,#3)(#4,#5)% +} +% +% #] ArrowLine : +% #[ ArrowDoubleLine : +% +\defWithOption{ArrowDoubleLine}{(#2,#3)(#4,#5)#6}{% +% +% \ArrowDoubleLine[opt](x1,y1)(x2,y2){sep} +% Draws a double line, with arrow by default, from (x1,y1) to (x2,y2), +% with separation sep +% + \Line[arrow,double,sep=#6,#1](#2,#3)(#4,#5)% +} +% +% #] ArrowDoubleLine : +% #[ DashArrowLine : +% +\defWithOption{DashArrowLine}{(#2,#3)(#4,#5)#6}{% +% \DashArrowLine[opt](x1,y1)(x2,y2){sep} +% Draws a line from (x1,y1) to (x2,y2) with a dash pattern of which the +% alternating black and white pieces are approximately sep points +% long. Arrow by default. +% + \Line[arrow,dash,dashsize=#6,#1](#2,#3)(#4,#5)% +} +% +\let\ArrowDashLine=\DashArrowLine% +% +% #] DashArrowLine : +% #[ DashArrowDoubleLine : +% +\defWithOption{DashArrowDoubleLine}{(#2,#3)(#4,#5)#6#7}{% +% \DashArrowDoubleLine[opt](x1,y1)(x2,y2){sep}{dashsize} +% Draws a double line from (x1,y1) to (x2,y2) with separation sep, +% and with a dash pattern of which the +% alternating black and white pieces are approximately sep points long +% Arrow on. +% + \Line[arrow,dash,dashsize=#7,double,sep=#6,#1](#2,#3)(#4,#5)% +} +% +\let\ArrowDashDoubleLine=\DashArrowDoubleLine% +% +% #] DashArrowDoubleLine : +% #[ LongArrow : +% +\defWithOption{LongArrow}{(#2,#3)(#4,#5)}{% + \Line[arrow,arrowpos=1,#1](#2,#3)(#4,#5)% +} +% +% #] LongArrow : +% #[ DashLongArrowLine : +% +\defWithOption{DashLongArrowLine}{(#2,#3)(#4,#5)#6}{% +% \DashLongArrowLine[opt](x1,y1)(x2,y2){sep} +% Draws a line from (x1,y1) to (x2,y2) with a dash pattern of which the +% alternating black and white pieces are approximately sep points +% long. Arrow by default. +% +% + \Line[arrow,arrowpos=1,dash,dashsize=#6,#1](#2,#3)(#4,#5)% +} +\let\DashLongArrow=\DashLongArrowLine +\let\LongArrowDash=\DashLongArrowLine +\let\LongArrowDashLine=\DashLongArrowLine +% +% #] DashLongArrowLine : +% #] Line routines : +% #[ Arc routines : +% #[ Arc : +% +\def\Arc{% +% \Arc[opt](x,y)(r,theta1,theta2) +% draws an arc centered at (x,y) of radius r, starting at theta1, +% and ending at theta2. By default: no arrow, undashed, single, +% anticlockwise. +% Supported options: all arrow settings, all double line settings, +% all dash line settings, clock +% + \AXO@Parse{\AXO@Arc}{}% +} +% +% #] Arc : +% #[ CArc : +% +\let\CArc=\Arc +% +% #] CArc : +% #[ DoubleArc : +% +\defWithOption{DoubleArc}{(#2,#3)(#4,#5,#6)#7}{% +% +% Draws a double lined arc segment. The center of the curve +% is at (1,2). +% The radius, start angle and target angle are (#3,#4,#5). +% The arc segment runs anticlockwise +% #6 is the separation of the lines. +% + \Arc[double,sep=#7,#1](#2,#3)(#4,#5,#6)% +} +\let\DoubleCArc=\DoubleArc +% +% #] DoubleArc : +% #[ DashArc : +% +\defWithOption{DashArc}{(#2,#3)(#4,#5,#6)#7}{% +% +% Draws a dashed arc segment. The center of the curve +% is at (1,2). +% The radius, start angle and target angle are (#3,#4,#5). +% The arc segment runs anticlockwise +% #6 is the dashsize. this is rounded to make things come +% out right. +% + \Arc[dash,dsize=#7,#1](#2,#3)(#4,#5,#6)% +} +\let\DashCArc=\DashArc +% +% #] DashArc : +% #[ DashDoubleArc : +% +\defWithOption{DashDoubleArc}{(#2,#3)(#4,#5,#6)#7#8}{ +% +% Draws a dashed arc segment. The center of the curve +% is at (1,2). +% The radius, start angle and target angle are (#3,#4,#5). +% The arc segment runs anticlockwise +% #6 is the line separation. +% #7 is the dashsize. this is rounded to make things come +% out right. +% + \Arc[double,sep=#7,dash,dsize=#8,#1](#2,#3)(#4,#5,#6)% +} +\let\DashDoubleCArc=\DashDoubleArc +% +% #] DashDoubleArc : +% #[ ArrowArc : +% +\def\ArrowArc{% + \AXO@PrependOption{\Arc}{arrow}% +} +\let\ArrowCArc=\ArrowArc +% +% #] ArrowArc : +% #[ ArrowDoubleArc : +% +\defWithOption{ArrowDoubleArc}{(#2,#3)(#4,#5,#6)#7}{% + \Arc[arrow,double,sep=#7,#1](#2,#3)(#4,#5,#6)% +} +\let\ArrowDoubleCArc=\ArrowDoubleArc +% +% #] ArrowDoubleArc : +% #[ ArrowDashArc : +% +\defWithOption{ArrowDashArc}{(#2,#3)(#4,#5,#6)#7}{% + \Arc[arrow,dash,dsize=#7,#1](#2,#3)(#4,#5,#6)% +} +\let\ArrowDashCArc=\ArrowDashArc +\let\DashArrowCArc=\ArrowDashArc +\let\DashArrowArc=\ArrowDashArc +% +% #] ArrowDashArc : +% #[ ArrowDashDoubleArc : +% +\defWithOption{ArrowDashDoubleArc}{(#2,#3)(#4,#5,#6)#7#8}{% + \Arc[arrow,double,sep=#7,dash,dsize=#8,#1](#2,#3)(#4,#5,#6)% +} +\let\ArrowDashDoubleCArc=\ArrowDashDoubleArc +\let\DashArrowDoubleCArc=\ArrowDashDoubleArc +\let\DashArrowDoubleArc=\ArrowDashDoubleArc +% +% +% #] ArrowDashDoubleArc : +% #[ LongArrowArc : +% +\def\LongArrowArc{% + \AXO@PrependOption{\Arc}{arrow,arrowpos=1}% +} +% +% #] LongArrowArc : +% #[ LongDashArrowArc : +% +\defWithOption{LongArrowDashArc}{(#2,#3)(#4,#5,#6)#7}{% + \Arc[arrow,arrowpos=1,dash,dsize=#7,#1](#2,#3)(#4,#5,#6)% +} +\let\LongArrowDashCArc=\LongArrowDashArc +\let\LongDashArrowCArc=\LongArrowDashArc +\let\LongDashArrowArc=\LongArrowDashArc +% +% +% #] LongDashArrowArc : +% #[ ArrowArcn : +% +\def\ArrowArcn{% + \AXO@PrependOption{\Arc}{arrow,clock}% +} +% +% #] ArrowArcn : +% #[ LongArrowArcn : +% +\def\LongArrowArcn{% + % \ArrowArcn, but with arrow at end by default + \AXO@PrependOption{\Arc}{arrow, clock, arrowpos=1}% +} +% +% #] LongArrowArcn : +% #[ DashArrowArcn : +% +\defWithOption{DashArrowArcn}{(#2,#3)(#4,#5,#6)#7}{% +% (x,y)(radius,start,end){dashsize} +% Draws a dashed arc segment with an arrow in it. The center of the curve +% is at (x,y), with given radius, start angle, and end angle +% The arc segment runs anticlockwise + \Arc[clock,arrow,dash,dashsize=#7,#1](#2,#3)(#4,#5,#6)% +} +% +\let\ArrowDashArcn=\DashArrowArcn% +% +% +% #] DashArrowArcn : +% #] Arc routines : +% #[ Bezier : +% +\def\Bezier{% +% \Bezier[opt](x1,y1)(x2,y2)(x3,y3)(x4,y4) +% Draws a Bezier cubic with the control points (x1,y1), (x2,y2), (x3,y3), (x4,y4) +% Supported options: dash, dashsize and dashsize + \AXO@Parse{\AXO@Bezier}{}% +} +% +\defWithOption{DoubleBezier}{(#2,#3)(#4,#5)(#6,#7)(#8)#9}{% +% +% Draws a Bezier cubic with control points (x1,y1), (x2,y2), +% (x3,y3), (x4,y4) in a double line +% + \Bezier[double,sep=#9,#1](#2,#3)(#4,#5)(#6,#7)(#8)% +} +% +\defWithOption{DashBezier}{(#2,#3)(#4,#5)(#6,#7)(#8)#9}{% +% +% Draws a Bezier cubic with control points (x1,y1), (x2,y2), +% (x3,y3), (x4,y4) with a dash pattern of which the +% alternating black and white pieces are approximately #9 points long +% + \Bezier[dash,dashsize=#9,#1](#2,#3)(#4,#5)(#6,#7)(#8)% +} +% +\defWithOption{DashDoubleBezier}{(#2,#3)(#4,#5)(#6)(#7)#8#9}{% +% +% Draws a Bezier cubic with control points (x1,y1), (x2,y2), +% (x3,y3), (x4,y4) with a dash pattern of which the +% alternating black and white pieces are approximately #9 points long +% The line is a double line +% + \Bezier[double,sep=#8,dash,dashsize=#9,#1](#2,#3)(#4,#5)(#6)(#7)% +} +% +% #] Bezier : +% #] LaTeX primitives : +% #[ Mixed routines : +% +% Here we have routines that make different calls depending on the value +% of the variable \axo@pdfoutput +% +% #[ EBox : +% +\def\EBox(#1,#2)(#3,#4){% +% +% Draws a transparent box with the left bottom at (x1,y1) andthe +% right top at (x2,y2). +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add \axowidth\space \axoscale\space ebox }} +\else + \getaxohelp{EBox}{#1 #2 #3 #4 \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] EBox : +% #[ FBox : +% +\def\FBox(#1,#2)(#3,#4){% +% +% Draws a filled box with the left bottom at (x1,y1) and the right top +% at (x2,y2). +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add \axowidth\space \axoscale\space fbox }} +\else + \getaxohelp{FBox}{#1 #2 #3 #4 \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] FBox : +% #[ BBox : +% +\def\BBox(#1,#2)(#3,#4){% +% +% Draws a box with the left bottom at (x1,y1) and the right top +% at (x2,y2). The contents are blanked out. +% + {% + \SetColor{White}% + \FBox(#1,#2)(#3,#4)% + }% + \EBox(#1,#2)(#3,#4)% +} +% +% #] BBox : +% #[ GBox : +% +\def\GBox(#1,#2)(#3,#4)#5{% +% +% Draws a box with the left bottom at (x1,y1) and the right top +% at (x2,y2). The contents are in Grayscale#5 (0=black,1=white). +% + {% + \color[gray]{#5}% + \FBox(#1,#2)(#3,#4)% + \color[gray]{0}% + \EBox(#1,#2)(#3,#4)% + }% +\ignorespaces +} +% +% #] GBox : +% #[ CBox : +% +\def\CBox(#1,#2)(#3,#4)#5#6{% +% +% Draws a box with the left bottom at (x1,y1) and the right top +% at (x2,y2). The outside is color#5 and the inside color #6. +% + {% + \SetColor{#6}% + \FBox(#1,#2)(#3,#4)% + \SetColor{#5}% + \EBox(#1,#2)(#3,#4)% + }% +\ignorespaces +} +% +% #] CBox : +% #[ EBoxc : +% +\def\EBoxc(#1,#2)(#3,#4){% +% +% Draws a centered box with the center at (x1,y1). +% The other parameters are the width and the height. +% Uses current color +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #3 2 div sub #2 \axoyo\space add + #4 2 div sub #1 \axoxo\space add #3 2 div add #2 + \axoyo\space add #4 2 div add \axowidth\space \axoscale\space ebox }} +\else + \getaxohelp{Boxc}{#1 #2 #3 #4 \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +\let\Boxc=\EBoxc +% +% #] EBoxc : +% #[ FBoxc : +% +\def\FBoxc(#1,#2)(#3,#4){% +% +% Draws a filled centered box with the center at (x1,y1). +% The other parameters are the width and the height. +% Current color +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #3 2 div sub #2 \axoyo\space add + #4 2 div sub #1 \axoxo\space add #3 2 div add #2 \axoyo\space add #4 2 div add + \axowidth\space \axoscale\space fbox }} +\else + \getaxohelp{FBoxc}{#1 #2 #3 #4 \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] FBoxc : +% #[ BBoxc : +% +\def\BBoxc(#1,#2)(#3,#4){% +% +% Draws a centered box with the center at (x1,y1). +% The other parameters are the width and the height. +% The contents are blanked out. +% +\bgroup + \SetColor{White}% + \FBoxc(#1,#2)(#3,#4)% +\egroup +\EBoxc(#1,#2)(#3,#4)% +} +% +% #] BBoxc : +% #[ GBoxc : +% +\def\GBoxc(#1,#2)(#3,#4)#5{% +% +% Draws a centered box with the center at (x1,y1). +% The other parameters are the width and the height. +% The contents are in Grayscale#5 (0=black,1=white). +% + {% + \color[gray]{#5}% + \FBoxc(#1,#2)(#3,#4)% + \color[gray]{0}% + \EBoxc(#1,#2)(#3,#4)% + }% +\ignorespaces +} +% +% #] GBoxc : +% #[ CBoxc : +% +\def\CBoxc(#1,#2)(#3,#4)#5#6{% +% +% Draws a centered box with the center at (x1,y1). +% The other parameters are the width and the height. +% The outside is color#5 and the inside color #6. +% + {% + \SetColor{#6}% + \FBoxc(#1,#2)(#3,#4)% + \SetColor{#5}% + \EBoxc(#1,#2)(#3,#4)% + }% +\ignorespaces +} +% +% #] CBoxc : +% #[ RotatedBox : +% +\def\RotatedBox(#1,#2)(#3,#4)#5#6{% +% +% Draws a centered box with the center at (#1,#2) +% with width #3, height #4, anticlockwise rotated by #5, and in +% color #6. +% + \AxoPut(#1,#2){% + {\SetColor{#6}% + \rotatebox{#5}{\EBoxc(0,0)(#3,#4)}% + }}% +} +% +% #] RotatedBox : +% #[ FilledRotatedBox : +% +\def\FilledRotatedBox(#1,#2)(#3,#4)#5#6{% +% +% Draws a filled centered box with the center at (#1,#2) +% with width #3, height #4, anticlockwise rotated by #5, and in +% color #6. +% + \AxoPut(#1,#2){% + {\SetColor{#6}% + \rotatebox{#5}{\FBoxc(0,0)(#3,#4)}% + }}% +} +% +% #] FilledRotatedBox : +% #[ ETri : +% +% Draws a triangle. No filling. +% The corners are (x1,y1), (x2,y2), (x3,y3) +% +\def\ETri(#1,#2)(#3,#4)(#5,#6){% +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add + #5 \axoxo\space add #6 \axoyo\space add + \axowidth\space \axoscale\space triangle }} +\else + \getaxohelp{ETri}{#1 #2 #3 #4 #5 #6 \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] ETri : +% #[ FTri : +% +% Draws a filled triangle. +% The corners are (x1,y1), (x2,y2), (x3,y3) +% +\def\FTri(#1,#2)(#3,#4)(#5,#6){% +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add + #5 \axoxo\space add #6 \axoyo\space add + \axowidth\space \axoscale\space ftriangle }} +\else + \getaxohelp{FTri}{#1 #2 #3 #4 #5 #6 \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] FTri : +% #[ BTri : +% +% Draws a triangle. The contents are blanked out. +% The corners are (x1,y1), (x2,y2), (x3,y3) +% +\def\BTri(#1,#2)(#3,#4)(#5,#6){% + {% + \SetColor{White}% + \FTri(#1,#2)(#3,#4)(#5,#6)% + }% + \ETri(#1,#2)(#3,#4)(#5,#6)% +} +% +% #] BTri : +% #[ GTri : +% +% Draws a triangle. The contents are given in Grayscale #7 (0=black,1=white) +% The corners are (x1,y1), (x2,y2), (x3,y3) +% +\def\GTri(#1,#2)(#3,#4)(#5,#6)#7{% +% + {% + \color[gray]{#7}% + \FTri(#1,#2)(#3,#4)(#5,#6)% + \color[gray]{0}% + \ETri(#1,#2)(#3,#4)(#5,#6)% + }% +\ignorespaces +} +% +% #] GTri : +% #[ CTri : +% +% Draws a colored(#7) triangle. The contents are blanked out in color #8 +% The corners are (x1,y1), (x2,y2), (x3,y3) +% +\def\CTri(#1,#2)(#3,#4)(#5,#6)#7#8{% + {% + \SetColor{#7}% + \FTri(#1,#2)(#3,#4)(#5,#6)% + \SetColor{#8}% + \ETri(#1,#2)(#3,#4)(#5,#6)% + }% +\ignorespaces +} +% +% #] CTri : +% #[ Vertex : +% +\def\Vertex(#1,#2)#3{% +% +% Draws a fat dot at (1,2). The radius of the dot is given by 3. +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add #3 + \axoscale\space vertex }} +\else + \getaxohelp{Vertex}{#1 #2 #3 \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] Vertex : +% #[ ECirc : +% +\def\ECirc(#1,#2)#3{% +% +% Draws a circle at (1,2) and radius 3, with current color. +% Nothing is written inside. +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add #3 + \axowidth\space \axoscale\space ecirc }}% +\else + \getaxohelp{ECirc}{#1 #2 #3 \axowidth}% + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}}% +\fi +} +% +% #] ECirc : +% #[ FCirc : +% +\let\FCirc=\Vertex +% +% #] FCirc : +% #[ BCirc : +% +\def\BCirc(#1,#2)#3{% +% +% Draws a circle at (1,2) and radius 3 that is blanked out. + {% + \SetColor{White}% + \FCirc(#1,#2){#3} + }% + \ECirc(#1,#2){#3}% +} +% +% #] BCirc : +% #[ GCirc : +% +\def\GCirc(#1,#2)#3#4{% +% +% Draws a circle at (1,2) and radius 3 that is blanked out. +% Then it fills the circle with a gray scale 4 (0 = black, 1 is white) +% + {% + \color[gray]{#4}% + \FCirc(#1,#2){#3}% + \color[gray]{0}% + \ECirc(#1,#2){#3}% + }% +\ignorespaces +} +% +% #] GCirc : +% #[ CCirc : +% +% Draws a circle at (1,2) and radius 3 that is blanked out. +% #4 is the color of the circle, #5 the color of the contents +% +\def\CCirc(#1,#2)#3#4#5{% +% +% Draws a circle at (1,2) and radius 3 that is blanked out. +% #4 is the color of the circle, #5 the color of the contents +% +{% + \SetColor{#5}% + \FCirc(#1,#2){#3}% + \SetColor{#4}% + \ECirc(#1,#2){#3}% +}% +\ignorespaces +} +% +% #] CCirc : +% #[ GOval : +% +\def\GOval(#1,#2)(#3,#4)(#5)#6{% +% +% Draws a gray oval that overwrites whatever was there. +% \GOval(x_center,y_center)(height,width)(rotation)(grayscale) +% The grayscale: (0 = black, 1 is white) +% + {% + \color[gray]{#6}% + \FOval(#1,#2)(#3,#4)(#5)% + \color[gray]{0}% + \Oval(#1,#2)(#3,#4)(#5)% + }% + \ignorespaces +} +% +% #] GOval : +% #[ COval : +% +\def\COval(#1,#2)(#3,#4)(#5)#6#7{% +% +% Draws a colored oval that overwrites whatever was there. +% \COval(x_center,y_center)(height,width)(rotation){color1}{color2} +% + {% + \SetColor{#7}% + \FOval(#1,#2)(#3,#4)(#5)% + \SetColor{#6}% + \Oval(#1,#2)(#3,#4)(#5)% + }% + \ignorespaces +} +% +% #] COval : +% #[ FOval : +% +\def\FOval(#1,#2)(#3,#4)(#5){% +% +% Draws a colored oval that overwrites whatever was there. +% \FOval(x_center,y_center)(height,width)(rotation) +% Uses current color +% + \ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff)% + {\AXOspecial{#1 \axoxo\space add #2 \axoyo\space add #3 #4 #5 + \axowidth\space \axoscale\space foval + }}% + \else + \getaxohelp{FOval}{#1 #2 #3 #4 #5 \axowidth}% + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}}% + \fi +} +% +% #] FOval : +% #[ Oval : +% +\def\Oval(#1,#2)(#3,#4)(#5){% +% +% Draws an oval that does not overwrite whatever was there. +% \Oval(x_center,y_center)(height,width)(rotation) +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff)% + {\AXOspecial{#1 \axoxo\space add #2 \axoyo\space add #3 #4 #5 + \axowidth\space \axoscale\space oval + }}% +\else + \getaxohelp{Oval}{#1 #2 #3 #4 #5 \axowidth}% + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}}% +\fi +} +% +% #] Oval : +% #[ Polygon : +% +% Draws a curve through the points in argument 1. +% The points are given as coordinates (x1,y1)(x2,y2)(x3,y3)..... +% The curve is continous and continuous in its first and second +% derivatives. The method is linear interpolation of +% quadratic curves. +% Color name is argument 2. +% +\def\Polygon#1#2{% + {% + \SetColor{#2}% + \ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + [ \axoparray#1] \axowidth\space \axoscale\space polygon }}% + \else + \getaxohelp{Polygon}{"#1" \axowidth}% + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}}% + \fi + }% + \ignorespaces +} +% +% #] Polygon : +% #[ FilledPolygon : +% +% Draws a curve through the points in argument 1. +% The points are given as coordinates (x1,y1)(x2,y2)(x3,y3)..... +% The curve is continous and continuous in its first and second +% derivatives. The method is linear interpolation of +% quadratic curves. +% Color name is argument 2. +% +\def\FilledPolygon#1#2{% + {% + \SetColor{#2}% + \ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + [ \axoparray#1] \axowidth\space \axoscale\space filledpolygon }} + \else + \getaxohelp{FilledPolygon}{"#1" \axowidth}% + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}}% + \fi + }% + \ignorespaces +} +% +% #] FilledPolygon : +% #[ Curve : +% +% Draws a curve through the points in argument 1. +% The points are given as coordinates (x1,y1)(x2,y2)(x3,y3)..... +% The curve is continous and continuous in its first and second +% derivatives. The method is linear interpolation of quadratic curves. +% +\def\Curve#1{% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{[ \axoparray#1] + \axowidth\space \axoscale\space makecurve }} +\else + \getaxohelp{Curve}{"#1" \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] Curve : +% #[ DashCurve : +% +% Draws a curve through the points in argument 1. +% The points are given as coordinates (x1,y1)(x2,y2)(x3,y3)..... +% The curve is continous and continuous in its first and second +% derivatives. The method is linear interpolation of quadratic curves. +% Argument 2 gives a dash size. +% +\def\DashCurve#1#2{% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{[ \axoparray#1] #2 + \axowidth\space \axoscale\space makedashcurve }} +\else + \getaxohelp{DashCurve}{"#1" #2 \axowidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] DashCurve : +% #[ LinAxis : +% +\def\LinAxis(#1,#2)(#3,#4)(#5,#6,#7,#8,#9){% +% +% Draws a line with linear hash marks along it. +% LinAxis(x1,y1)(x2,y2)(num_decs,per_dec,hashsize,offset,width) +% The line is from (x1,y1) to (x2,y2) and the marks are on the left side +% when hashsize is positive, and right when it is negative. +% num_decs is the number of accented marks, per_dec the number of +% divisions between them and offset is the number +% at which one starts at (x1,y1) (like if offset=2 we start at the second +% small mark) Width is the linewidth. +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add + #5 #6 #7 #8 #9 \axoscale\space linaxis }} +\else + \getaxohelp{LinAxis}{#1 #2 #3 #4 #5 #6 #7 #8 #9} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] LinAxis : +% #[ LogAxis : +% +\def\LogAxis(#1,#2)(#3,#4)(#5,#6,#7,#8){% +% +% Draws a line with logarithmic hash marks along it. +% LogAxis(x1,y1)(x2,y2)(num_logs,hashsize,offset,width) +% The line is from (x1,y1) to (x2,y2) and the marks are on the left side +% when hashsize is positive, and right when it is negative. +% num_logs is the number of orders of magnitude and offset is the number +% at which one starts at (x1,y1) (like if offset=2 we start at 2) +% When offset is 0 we start at 1. Width is the linewidth. +% +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add + #5 #6 #7 #8 \axoscale\space logaxis }} +\else + \getaxohelp{LogAxis}{#1 #2 #3 #4 #5 #6 #7 #8} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +% #] LogAxis : +% #[ AxoGrid : +% +\def\AxoGrid(#1,#2)(#3,#4)(#5,#6)#7#8{% +% +% Makes a grid with the left bottom at #1,#2 +% The increments in x and y are #3,#4 +% The number of steps in each direction are #5,#6 (there are n+1 lines) +% #7 is the color and #8 the linewidth +% +{\SetColor{#7}% + \ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){% + \AXOspecial{% + #3 #4 #5 #6 + #1 \axoxo\space add #2 \axoyo\space add + #8 \axoscale\space axogrid + }}% + \else + \getaxohelp{Grid}{#1 #2 #3 #4 #5 #6 #8}% + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}}% + \fi +}% +\ignorespaces +} +% +% #] AxoGrid : +% #[ AXO@Arc : +% +% Generic Arc segment with many options. +% +% +\def\AXO@Arc(#1,#2)(#3,#4,#5){% +% +% Draws arc centered at (#1,#2), radius #3, starting and ending +% angles #4, #5. +% Double, dashing, arrow, clockwise according to current settings +% +{\AXO@useopts +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){% + \AXOspecial{% + \AXO@ArrowArg \space + \ifAXO@flip true \else false \fi + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \ifAXO@clock true \else false \fi + #3 #4 #5 + #1 \axoxo\space add #2 \axoyo\space add + \AXO@CurrentWidth\space \axoscale\space arc2 + }}% +\else + \getaxohelp{AxoArc}{#1 #2 #3 #4 #5 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \AXO@ArrowArg \space + \ifAXO@flip 1 \else 0 \fi + \ifAXO@clock 1 \else 0 \fi + \AXO@CurrentWidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +}\ignorespaces +} +% +% #] AXO@Arc : +% #[ AXO@Bezier : +% +\def\AXO@Bezier(#1,#2)(#3,#4)(#5,#6)(#7,#8){% +% +% Draws a Bezier cubic with the control points (x1,y1), (x2,y2), +% (x3,y3), (x4,y4) +% Assumes options have been set +% +{\AXO@useopts +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add + #5 \axoxo\space add #6 \axoyo\space add + #7 \axoxo\space add #8 \axoyo\space add + \AXO@ArrowArg \space + \ifAXO@flip true \else false \fi + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \AXO@CurrentWidth\space \axoscale\space dashdoublebezier + }}% +\else + \getaxohelp{AxoBezier}{#1 #2 #3 #4 #5 #6 #7 #8 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \AXO@ArrowArg \space + \ifAXO@flip 1 \else 0 \fi + \AXO@CurrentWidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +}\ignorespaces +} +% +% #] AXO@Bezier : +% #[ AXO@GluonHelper : +% +\def\AXO@GluonHelper(#1,#2)(#3,#4)#5#6#7#8{% +% +% Draws a single gluon from (x1,y1) to (x2,y2) with amplitude #5 and number +% of windings #6. Width #7 + #8 +% Assumes options have been set. +% Used as helper from \AXO@Gluon + % +\ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for gluon}\fi +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){% + \AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add + #5 #6 + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + #7 #8 add \axoscale \space dashgluon + }% + }% +\else + \getaxohelp{AxoGluon}{#1 #2 #3 #4 #5 #6 + #7 + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + #8}% + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% +\def\AXO@GluonHelperNEW(#1,#2)(#3,#4)#5#6#7#8{% +% IDEA: Showing cleaner code +% +% Draws a single gluon from (x1,y1) to (x2,y2) with amplitude #5 and number +% of windings #6. Width #7 + #8 +% Assumes options have been set. +% Used as helper from \AXO@Gluon +% + \ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for gluon}\fi + \ifcase\axo@pdfoutput + \AXOputPS{% + #1 #2 #3 #4 #5 #6 + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + #7 #8 add \axoscale \space dashgluon + }% + \else + \getaxohelp{AxoGluon}{#1 #2 #3 #4 #5 #6 + #7 + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + #8}% + \AXOputPDF{\contentspdfNoOffset}% + \fi +} +% +% #] AXO@GluonHelper : +% #[ AXO@Gluon : +% +\def\AXO@Gluon(#1,#2)(#3,#4)#5#6{% +% +% Draws a gluon from (x1,y1) to (x2,y2) with amplitude #5 and number +% of windings #6. +% Assumes options have been set +% +{\AXO@useopts + \ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for gluon}\fi + \AXO@arrowfalse % To avoid repeated errors + \ifAXO@double + \AXO@GluonHelper(#1,#2)(#3,#4){#5}{#6}{\AXO@CurrentWidth}{\AXO@CurrentSep}% + \SetColor{White}% + \AXO@dashfalse + \AXO@GluonHelper(#1,#2)(#3,#4){#5}{#6}{-\AXO@CurrentWidth}{\AXO@CurrentSep}% + \else + \AXO@GluonHelper(#1,#2)(#3,#4){#5}{#6}{0}{\AXO@CurrentWidth}% + \fi + }% +\ignorespaces +} +% #] AXO@Gluon : +% #[ AXO@GluonArcHelper : +% +\def\AXO@GluonArcHelper(#1,#2)(#3,#4,#5)#6#7#8#9{% +% +% Draws a gluon on an arc segment. The center of the curve is at (1,2) +% The radius, start angle and target angle are (#3,#4,#5), #6 is the +% amplitude of the gluon, and #7 is the number of windings. +% Assumes options have been set +% Width #8 + #9 +% Assumes options have been set. +% Used as helper from \AXO@GluonArc +\ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for gluon arc}\fi +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{#6 #7 + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \ifAXO@clock true \else false \fi + #3 #4 #5 + #1 \axoxo\space add #2 \axoyo\space add + #8 #9 add \axoscale\space dashgluearc + }}% +\else + \getaxohelp{AxoGluonArc}{#1 #2 #3 #4 #5 #6 #7 + #8 + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \ifAXO@clock 1 \else 0 \fi + #9} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% #] AXO@GluonArcHelper : +% #[ AXO@GluonArc : +% +\def\AXO@GluonArc(#1,#2)(#3,#4,#5)#6#7{% +% +% Draws a gluon on an arc segment. The center of the curve is at (1,2) +% The radius, start angle and target angle are (#3,#4,#5), #6 is the +% amplitude of the gluon, and #7 is the number of windings. +% Assumes options have been set +% + {\AXO@useopts + \ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for gluon}\fi + \AXO@arrowfalse % To avoid repeated errors + \ifAXO@double + \AXO@GluonArcHelper(#1,#2)(#3,#4,#5){#6}{#7}{\AXO@CurrentWidth}{\AXO@CurrentSep}% + \SetColor{White}% + \AXO@dashfalse + \AXO@GluonArcHelper(#1,#2)(#3,#4,#5){#6}{#7}{-\AXO@CurrentWidth}{\AXO@CurrentSep}% + \else + \AXO@GluonArcHelper(#1,#2)(#3,#4,#5){#6}{#7}{0}{\AXO@CurrentWidth}% + \fi + }% +\ignorespaces +} +% #] AXO@GluonArc : +% #[ AXO@GluonCircHelper : +% +\def\AXO@GluonCircHelper(#1,#2)(#3,#4)#5#6#7#8{% +% +% Draws a gluon on a circle. The center of the circle is at (1,2) +% The radius and the phase angle are (#3,#4), 5 is the +% amplitude of the gluon, and 6 is the number of windings. +% Width #7 + #8 +% Assumes options have been set. +% Used as helper from \AXO@GluonCirc +\ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for gluon arc}\fi +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #5 #6 + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + #3 #4 + #1 \axoxo\space add #2 \axoyo\space add + #7 #8 add \axoscale\space dashgluoncirc + }}% +\else + \getaxohelp{AxoGluonCirc}{#1 #2 #3 #4 #5 #6 + #7 + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + #8} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +} +% #] AXO@GluonCicHelper : +% #[ AXO@GluonCirc : +% +\def\AXO@GluonCirc(#1,#2)(#3,#4)#5#6{% +% +% Draws a gluon on a circle. The center of the circle is at (1,2) +% The radius and the phase angle are (#3,#4), 5 is the +% amplitude of the gluon, and 6 is the number of windings. +% + {\AXO@useopts + \ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for gluon}\fi + \AXO@arrowfalse % To avoid repeated errors + \ifAXO@double + \AXO@GluonCircHelper(#1,#2)(#3,#4){#5}{#6}{\AXO@CurrentWidth}{\AXO@CurrentSep}% + \SetColor{White}% + \AXO@dashfalse + \AXO@GluonCircHelper(#1,#2)(#3,#4){#5}{#6}{-\AXO@CurrentWidth}{\AXO@CurrentSep}% + \else + \AXO@GluonCircHelper(#1,#2)(#3,#4){#5}{#6}{0}{\AXO@CurrentWidth}% + \fi + }% +\ignorespaces +} +% +% #] AXO@GluonCirc : +% #[ AXO@Line : +% +\def\AXO@Line(#1,#2)(#3,#4){% +% +% Draws a line from (x1,y1) to (x2,y2) +% Double, dashing, arrow according to current settings +% +{\AXO@useopts +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){% + \AXOspecial{% + \AXO@ArrowArg \space + \ifAXO@flip true \else false \fi + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add + \AXO@CurrentWidth \space \axoscale \space + dasharrowdoubleline + }}% +\else + \getaxohelp{AxoLine}{#1 #2 #3 #4 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \AXO@ArrowArg \space + \ifAXO@flip 1 \else 0 \fi + \AXO@CurrentWidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}}% +\fi +}\ignorespaces +} +% +% #] AXO@Line : +% #[ AXO@Photon : +% +\def\AXO@Photon(#1,#2)(#3,#4)#5#6{% +% +% Draws a photon from (x1,y1) to (x2,y2) with amplitude #5 and number +% of windings #6. +% Assumes options have been set +% +{\AXO@useopts +\ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for photon}\fi +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add #5 #6 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \AXO@CurrentWidth\space \axoscale\space dashdoublephoton }}% +\else + \getaxohelp{AxoPhoton}{#1 #2 #3 #4 #5 #6 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \AXO@CurrentWidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +}\ignorespaces +} +% #] AXO@Photon : +% #[ AXO@PhotonArc : +% +\def\AXO@PhotonArc(#1,#2)(#3,#4,#5)#6#7{% +% +% Draws a photon on an arc segment. The center of the curve is at (1,2) +% The radius, start angle and target angle are (#3,#4,#5), #6 is the +% amplitude of the gluon, and #7 is the number of wiggles. +% Assumes options have been set +% +{\AXO@useopts +\ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for photon arc}\fi +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #6 #7 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \ifAXO@clock true \else false \fi + #3 #4 #5 + #1 \axoxo\space add #2 \axoyo\space add + \AXO@CurrentWidth\space \axoscale\space dashdoublephotonarc + }}% +\else + \getaxohelp{AxoPhotonArc}{#1 #2 #3 #4 #5 #6 #7 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \ifAXO@clock 1 \else 0 \fi + \AXO@CurrentWidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +}\ignorespaces +} +% +% #] AXO@PhotonArc : +% #[ AXO@ZigZag : +% +\def\AXO@ZigZag(#1,#2)(#3,#4)#5#6{% +% +% Draws a zigzag from (x1,y1) to (x2,y2) with amplitude #5 and number +% of windings #6. +% Assumes options have been set +% +{\AXO@useopts +\ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for zigzag}\fi +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #1 \axoxo\space add #2 \axoyo\space add + #3 \axoxo\space add #4 \axoyo\space add #5 #6 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \AXO@CurrentWidth\space \axoscale\space dashdoublezigzag }}% +\else + \getaxohelp{AxoZigZag}{#1 #2 #3 #4 #5 #6 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \AXO@CurrentWidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}}% +\fi +}\ignorespaces +} +% #] AXO@ZigZag : +% #[ AXO@ZigZagArc : +% +\def\AXO@ZigZagArc(#1,#2)(#3,#4,#5)#6#7{% +% +% Draws a zigzag on an arc segment. The center of the curve is at (1,2) +% The radius, start angle and target angle are (#3,#4,#5), #6 is the +% amplitude of the gluon, and #7 is the number of wiggles. +% Assumes options have been set +% +{\AXO@useopts +\ifAXO@arrow\AXO@NOTIMPLEMENTED{arrow not implemented for zigzag arc}\fi +\ifcase\axo@pdfoutput + \put(\axoxoff,\axoyoff){\AXOspecial{% + #6 #7 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \ifAXO@clock true \else false \fi + #3 #4 #5 + #1 \axoxo\space add #2 \axoyo\space add + \AXO@CurrentWidth\space \axoscale\space dashdoublezigzagarc + }}% +\else + \getaxohelp{AxoZigZagArc}{#1 #2 #3 #4 #5 #6 #7 + \ifAXO@double \AXO@CurrentSep \space \else 0 \fi + \ifAXO@dash \AXO@CurrentDashSize \space \else 0 \fi + \ifAXO@clock 1 \else 0 \fi + \AXO@CurrentWidth} + \put(\axoxoff,\axoyoff){\axo@pdfliteral{\contentspdf}} +\fi +}\ignorespaces +} +% +% #] AXO@ZigZagArc : +% #[ Text and boxes : +% #[ SetPFont : +% +% To access fonts, from both latex and pdflatex, we need +% to define a mapping from the human-readable name to +% the name known to (pdf)latex. Then we can define a +% user command for setting the font. The human-readable +% name is the one used by postscript. +% Variables used: +% \pfontN = human name of current PS font (e.g., Helvetica). +% \pfontC = TeX code for the font (e.g., phvr). +% Both are \relax to use regular document font +% \axofontsize = size of font (text command with unit) + + +\def\defineaxofont#1#2{% + % #1 is user visible name of font, #2 is LaTex name. + % Define a command of name #1 to return #2 + \expandafter\def\csname #1\endcsname{#2} +} + +\def\SetPFont#1#2{% + \ifthenelse{ \equal{#1}{} }% + {\let\pfontN=\relax \let\pfontC=\relax}% + {\@ifundefined{#1}% + {\PackageWarning{axodraw2}{trying to set undefined font `#1'}}% + {\def\pfontN{#1}% Human name (postscript) + \def\pfontC{\@nameuse{#1}}% Code name + }% + }% + \ifthenelse{ \equal{#2}{} }% + {% Use the value of LaTeX's fontsize when the font is used: + \def\axofontsize{\f@size}% + }% + {\def\axofontsize{#2}}% +\ignorespaces +} + +\def\UseCurrentPSFont{% + % Set regular size of regular font, so math has rational size + \fontsize{\axofontsize}{\axofontsize}% + \selectfont + \ifx\pfontC\relax + \else + \font\axofont = \pfontC \space at \axofontsize pt + \axofont + \fi +} + +\defineaxofont{AvantGarde-Book}{pagk} +\defineaxofont{AvantGarde-BookOblique}{pagko} +\defineaxofont{AvantGarde-Demi}{pagd} +\defineaxofont{AvantGarde-DemiOblique}{pagdo} +\defineaxofont{Bookman-Demi}{pbkd} +\defineaxofont{Bookman-DemiItalic}{pbkdi} +\defineaxofont{Bookman-Light}{pbkl} +\defineaxofont{Bookman-LightItalic}{pbkli} +\defineaxofont{Courier-Bold}{pcrb} +\defineaxofont{Courier-BoldOblique}{pcrbo} +\defineaxofont{Courier}{pcrr} +\defineaxofont{Courier-Oblique}{pcrro} +\defineaxofont{Helvetica-Bold}{phvb} +\defineaxofont{Helvetica-BoldOblique}{phvbo} +\defineaxofont{Helvetica-NarrowBold}{phvbrn} +\defineaxofont{Helvetica-NarrowBoldOblique}{phvbon} +\defineaxofont{Helvetica}{phvr} +\defineaxofont{Helvetica-Oblique}{phvro} +\defineaxofont{Helvetica-Narrow}{phvrrn} +\defineaxofont{Helvetica-NarrowOblique}{phvron} +\defineaxofont{NewCenturySchlbk-Bold}{pncb} +\defineaxofont{NewCenturySchlbk-BoldItalic}{pncbi} +\defineaxofont{NewCenturySchlbk-Italic}{pncri} +\defineaxofont{NewCenturySchlbk-Roman}{pncr} +\defineaxofont{Palatino-Bold}{pplb} +\defineaxofont{Palatino-BoldItalic}{pplbi} +\defineaxofont{Palatino-Italic}{pplri} +\defineaxofont{Palatino-Roman}{pplr} +\defineaxofont{Symbol}{psyr} +\defineaxofont{Times-Bold}{ptmb} +\defineaxofont{Times-BoldItalic}{ptmbi} +\defineaxofont{Times-Italic}{ptmri} +\defineaxofont{Times-Roman}{ptmr} +\defineaxofont{ZapfChancery-MediumItalic}{pzcmi} +\defineaxofont{ZapfDingbats}{pzdr} + +% Now we can set the default: + +\SetPFont{Times-Roman}{10} + +% +% #] SetPFont : +% #[ Text : +% +% Aim: \Text(#1,#2)(#3)[#4]#5, to set text #5 at position (#1,#2) +% with angle #3 and positioning #4. +% But the presence of (#3) and [#3] is to be optional (with +% defaults being equivalent to (0) and [] +% +\def\Text(#1,#2){% + \@ifnextchar(% ) + {\Text@A(#1,#2)}% + {\Text@A(#1,#2)(0)}% +} +% +\def\Text@A(#1,#2)(#3){% + \@ifnextchar[% ] + {\Text@Z(#1,#2)(#3)}% + {\Text@Z(#1,#2)(#3)[]}% +} +% +\def\axoscaleTT{\ifPSTextScalesLikeGraphics 1\else \axotextscale \fi} +\def\axoscalePT{\ifPSTextScalesLikeGraphics \axoscale\else \axotextscale \fi} +% +\def\Text@Z(#1,#2)(#3)[#4]#5{% + % + % Draws text at (#1,#2). Argument #3 is combination of l, r, t, b to + % indicate positioning instead of default (which is horizontally and + % vertically centered --- these are same as \makebox + % the text is left adjusted, right adjusted or centered. Or b or t. + % 4 is of course the text. + % + \AxoPut(#1,#2){% + \scalebox{\axoscaleTT}% + {\rotatebox{#3}{\makebox(0,0)[#4]{#5}}}% + }% + \ignorespaces +} +% +% #] Text : +% #[ PText : *+ +% +\def\PText(#1,#2)(#3)[#4]#5{% +% +% Draws a postscript text in a postscript font. +% Focal point is (1,2), rotation angle is 3, 4 is the mode (as in text) +% and 5 is the text. +% + \begingroup + \UseCurrentPSFont + \AxoPut(#1,#2){% + \scalebox{\axoscalePT}% + {\rotatebox{#3}{\makebox(0,0)[#4]{#5}}}% + }% + \endgroup + \ignorespaces +} +% +% #] PText : +% #[ RText : +% +\def\RText(#1,#2)[#3](#4)#5{% +% +% Draws rotated text at (1,2). Argument 3 is l,r or c indicating whether +% the text is left adjusted, right adjusted or centered. +% 4 is the rotation angle and 5 is of course the text. +% + \Text(#1,#2)(#4)[#3]{#5}% + \ignorespaces +} +% +% #] RText : +% #[ rText : * +% +\def\rText(#1,#2)[#3][#4]#5{% +% +% Draws rotated text at (1,2). Argument 3 is l,r or c indicating whether +% the text is left adjusted, right adjusted or centered. +% 4 is the rotation angle (specified as l, r, u, or blank, +% and 5 is of course the text. +% + \begingroup + \def\this@angle{0}% + \ifx#4l% + \def\this@angle{90}% + \else + \ifx#4r% + \def\this@angle{-90}% + \else + \ifx#4u% + \def\this@angle{180}% + \fi + \fi + \fi + \Text(#1,#2)(\this@angle)[#3]{#5}% + \endgroup + \ignorespaces +} +% +% #] rText : +% #[ BText : +% +\def\BText(#1,#2)#3{% +% +% Draws a box with the center at (x1,y1) and postscript text #3 in it. +% + \AxoPut(#1,#2){% + \edef\axoscale{\axoscalePT}% + \SetTmpBox{#3}% + \BBoxc(0,0)(\tmpXT,\tmpYT)% + \PText(0,0)(0)[]{\usebox{\tmpBox}}% + }% + \ignorespaces +} +% +% #] BText : +% #[ GText : +% +\def\GText(#1,#2)#3#4{% +% +% Draws a box with the center at (x1,y1) and postscript(#4) text in it. +% The grayness of the box is given by #3 +% + \AxoPut(#1,#2){% + \edef\axoscale{\axoscalePT}% + \SetTmpBox{#4}% + \GBoxc(0,0)(\tmpXT,\tmpYT){#3}% + \PText(0,0)(0)[]{\usebox{\tmpBox}}% + }% + \ignorespaces +} +% +% #] GText : +% #[ CText : +% +\def\CText(#1,#2)#3#4#5{% +% +% Draws a box with the center at (x1,y1) and postscript(#5) text in it. +% The color of box and text is in #3 +% The color of the background is in #4 +% + \AxoPut(#1,#2){% + \edef\axoscale{\axoscalePT}% + \SetTmpBox{\SetColor{#3}{#5}}% + \CBoxc(0,0)(\tmpXT,\tmpYT){#3}{#4}% + \PText(0,0)(0)[]{\usebox{\tmpBox}}% + }% +} +% +% #] CText : +% #[ BTwoText : +% +\def\BTwoText(#1,#2)#3#4{% +% +% Draws a box with the center at (x1,y1) and two lines of postscript +% text in it. +% + \AxoPut(#1,#2){% + \edef\axoscale{\axoscalePT}% + \SetTmpBoxTwo{#3}{#4}% + \BBoxc(0,0)(\tmpXT,\tmpYT)% + \PText(0,0)(0)[]{\usebox{\tmpBox}}% + }% + \ignorespaces +} +% +% #] BTwoText : +% #[ GTwoText : +% +\def\GTwoText(#1,#2)#3#4#5{% +% +% Draws a box with the center at (x1,y1) and two lines of postscript +% text (#4 and #5) in it. +% The grayness of the box is given by #3 +% + \AxoPut(#1,#2){% + \edef\axoscale{\axoscalePT}% + \SetTmpBoxTwo{#4}{#5}% + \GBoxc(0,0)(\tmpXT,\tmpYT){#3}% + \PText(0,0)(0)[]{\usebox{\tmpBox}}% + }% + \ignorespaces +} +% +% #] GTwoText : +% #[ CTwoText : +% +\def\CTwoText(#1,#2)#3#4#5#6{% +% +% Draws a box with the center at (x1,y1) and two lines of postscript +% text (#5 and #6) in it. +% The color of the box and the text is given by #3 +% The background color is given by #4 +% + \AxoPut(#1,#2){% + \edef\axoscale{\axoscalePT}% + \SetTmpBoxTwo{\SetColor{#3}#5}{\SetColor{#3}#6}% + \CBoxc(0,0)(\tmpXT,\tmpYT){#3}{#4}% + \PText(0,0)(0)[]{\usebox{\tmpBox}}% + }% + \ignorespaces +} +% +% #] CTwoText : +% #] Text and boxes : +% #] Mixed routines : +% #[ Postscript specific : +% +% The code here is used only when we need Postscript output. This concerns +% mainly the Postscript library. +% +\ifcase\axo@pdfoutput +% +% #[ PostScript preamble : +% +\AtBeginDvi{ +% +% This forces the PostScript preamble commands to be put into the +% dvi file. Without this, revtex4 can remove them by funny +% stuff with manipulating the first page. +% +% #[ inventory : +% +% The variables in here are: +% num,num1,ampi,ampi1,x1,y1,x2,y2,x3,y3,x4,y4,dx,dy,dr +% width, arrowpos, arrowspec, arrowwidth, arrowlength, arrowinset +% arcend, arcmid, arcstart, radius, linesep, angdsize, dsize, +% clockwise, dotsize, inc, pi, sign +% darc,const,amp1, amp2, amp3, amp4, amp5, amp6, amp7, amp8, amp1i +% gcolor,xx2 +% +% NOTE: blank lines are not allowed inside the postscript code!!!!! +% (LaTeX sneaks \par commands in and the postscript goes boink) +% +\special{color} % Provoke dvips into including color.pro + % Revtex4 in 2-column mode fails to force that +% +\special{! + /savecolor { %/cmyk [ currentcmykcolor ] def + /oldcolor [ [ currentcolor ] currentcolorspace ] def + } def + /restorecolor { oldcolor aload pop setcolorspace aload pop setcolor } def +% /savecolor { [ currentcmykcolor ] /cmyk ed } def +% /restorecolor { cmyk aload pop setcmykcolor } def +% % Do a save color now, to ensure default variables are defined: + savecolor +} +% +\special{! + /pi 3.141592 def + /ed{exch def}def +% Implement conversion of length unit from pt to bp by scaling + /gs{gsave 1.00375 div dup scale}def + /gsw{ gs + /width ed + width setlinewidth + }def + /p1{/y1 ed /x1 ed}def + /p2{/y2 ed /x2 ed}def + /p3{/y3 ed /x3 ed}def + /p4{/y4 ed /x4 ed}def + /pp1{/yy1 ed /xx1 ed}def + /pp2{/yy2 ed /xx2 ed}def + /pp3{/yy3 ed /xx3 ed}def + /setabs{ + % Usage /var setabs + % Sets variable to its absolute value + dup load abs def + }def + % + /normalizearc { + % Usage: clockwise r angle1 angle2 x y normalizearc + % Adjusts coordinate system for anticlockwize arc from angle + % zero, centered at origin. + % Left on stack: r d_angle, with 0 x1 y1 x2 y2 r + % Pure stack based: computes distance between points. Keeps points + dup + 3 index sub dup mul + 2 index 5 index sub dup mul add sqrt + } def + /setbackgroundcolor{ + 0 0 0 0 setcmykcolor + } def +} +% +% #] inventory : +% #[ Arrows : +% +% Define better arrows +% +\special{! +% Arrow making routines +% + /getarrow { + /witharrow ed + /arrowpos ed + /arrowaspect ed + /arrowscale ed + /arrowinset ed + /arrowlength ed + /arrowwidth ed + /arrowstroke ed + } def + /drawarrow { + gsave + [] 0 setdash + rotate + arrowwidth 0 eq { + arrowlength 0 eq { + linewidth linesep 0.7 mul add 1 add 1.2 mul dup + 2.5 lt { + pop + 2.5 + } if + arrowscale mul + /arrowwidth ed + /arrowlength arrowwidth 2 mul arrowaspect mul def + } { + /arrowlength arrowlength arrowscale mul def + /arrowwidth arrowlength 2 div arrowaspect div def + } ifelse + } { + arrowlength 0 eq { + /arrowwidth arrowwidth arrowscale mul def + /arrowlength arrowwidth 2 mul arrowaspect mul def + } { + /arrowwidth arrowwidth arrowscale mul def + /arrowlength arrowlength arrowscale mul def + } ifelse + } ifelse + arrowstroke 0 ne { + arrowstroke setlinewidth + gsave + setbackgroundcolor + newpath + 0 arrowlength -0.5 mul moveto + arrowwidth arrowlength rlineto + arrowwidth -1 mul arrowlength arrowinset mul -1 mul rlineto + arrowwidth -1 mul arrowlength arrowinset mul rlineto + closepath fill + grestore + newpath + 0 arrowlength -0.5 mul moveto + arrowwidth arrowlength rlineto + arrowwidth -1 mul arrowlength arrowinset mul -1 mul rlineto + arrowwidth -1 mul arrowlength arrowinset mul rlineto + closepath stroke + } { + newpath + 0 arrowlength -0.5 mul moveto + arrowwidth arrowlength rlineto + arrowwidth -1 mul arrowlength arrowinset mul -1 mul rlineto + arrowwidth -1 mul arrowlength arrowinset mul rlineto + closepath fill + } ifelse + grestore + } def +% +} +% +% #] Arrows : +% +% Basic line drawing +% #[ fixdash : +% +\special{! /fixdash{ +% Usage: r dashsize fixdash +% Sets renormalized dashsize, doing +% [rdsize rdsize] 0 setdash +% so that n+1/2 patterns fit in length r +% If dsize is too big or if dsize is zero, use continuous line +% Uses stack, no named variables. + 2 copy gt + 1 index 0 ne + and + { + 2 copy + 2 mul div 0.5 sub round + dup 0 le { pop 0 } if + 2 mul 1 add exch pop div + dup 2 array astore 0 setdash + } + { pop pop [] 0 setdash } + ifelse +} def } +% +% #] fixdash : +% #[ dashline : +% +\special{! /dashline{ +% Draws a straight dashed line: x1,y1,x2,y2 +% Assumes dsize already set +% The pattern is ideally [dsize dsize] 0 setdash +% but we want to have (2*n+1)/2 patterns, so dsize must be rounded +% If dsize is too large or zero, use a continuous line +% Pure stack operation. + gsave + distance dsize fixdash % Function distance leaves points on stack + newpath + moveto + lineto + stroke + grestore +} def } +% #] dashline : +% #[ dasharc : +% +\special{! /dasharc{ +% Draws an arc segment anticlockwise: +% x_center, y_center, radius, start_angle, end_angle +% Assumes angdsize (radians) set elsewhere + gsave + 3 copy sub abs + % Top of stack is copy of radius, start_angle, end_angle + pi mul 180 div mul + % Top of stack is arc length + 3 index angdsize mul fixdash + newpath arc stroke + grestore +} def } +% +% #] dasharc : +% #[ dashgluon : +% +\special{! /dashgluon{ +% +% Draw gluon, possibly dashed +% We have a 'head' and a 'tail' and in between the 'body' +% The head + tail is 2 windings. The body is num-1 windings. +% + gsw + /dsize ed + /num ed /ampi ed + normalizeline /dr ed + /num num 0.5 sub round def +% + dsize 0 eq { + [] 0 setdash + } { + /amp8 ampi abs 0.9 mul def + /size amp8 neg 0 amp8 neg ampi 2 mul dup dr num 2 mul 2 add div exch + 1 lengthofbezier def +% + /ndash size dsize 2 mul div truncate def + ndash 0 eq { /ndash 1 def } if + size 2 dsize ndash mul mul sub abs + size 2 dsize ndash 1 add mul mul sub abs gt { /ndash ndash 1 add def } if + /dsize size 2 ndash mul div def + [ dsize dsize ] dsize 2 div setdash + } ifelse +% + /inc dr num 2 mul 2 add div def % increment per half winding + /amp8 ampi 0.9 mul def + amp8 0 lt {/amp8 amp8 neg def} if +% + /x1 inc 2 mul def +% + newpath + x1 ampi neg moveto + x1 amp8 add dup ampi neg exch ampi inc 1.4 mul ampi curveto + inc 0.5 mul ampi inc 0.1 mul ampi 0.5 mul 0 0 curveto + stroke + newpath + x1 ampi neg moveto + 2 1 num { + pop + x1 amp8 sub dup ampi neg exch ampi dup x1 inc add exch curveto + /x1 x1 inc dup add add def + x1 amp8 add dup ampi exch ampi neg dup x1 exch curveto + } for +% + x1 amp8 sub dup ampi neg exch ampi dup x1 inc 0.6 mul add exch curveto + x1 inc 1.5 mul add ampi dr inc 0.1 mul sub ampi 0.5 mul dr 0 curveto + stroke +% + grestore +} def } +% +% #] dashgluon : +% #[ dashdoublephoton : +% +\special{! /dashdoublephoton{ +% +% Draws a photon from x1,y1 to x2,y2 with amplitude A and n wiggles +% Possibly double +% + gsw + /dsize ed + /linesep ed + /num ed /ampi ed + normalizeline /dr ed + /num num 2 mul 0.5 sub round def +% + dsize 0 eq { + [] 0 setdash + } { +% Compute the dash size + /xdd dr num div def + /size 4 3 div xdd mul pi div dup neg xdd add + 4 3 div ampi mul dup 3 1 roll xdd 0 1 lengthofbezier 2 div def + /ndash size dsize 2 mul div truncate def + ndash 0 eq { /ndash 1 def } if + size 2 dsize ndash mul mul sub abs + size 2 dsize ndash 1 add mul mul sub abs gt { /ndash ndash 1 add def } if + /dsize size 2 ndash mul div def + [ dsize dsize ] dsize 2 div setdash + } ifelse +% + linesep 0 eq + { 0 0 dr 0 ampi num photon1 } + { +% 0 linesep 2 div dup dr exch ampi num photon1 +% 0 linesep -2 div dup dr exch ampi num photon1 +% + linesep width add setlinewidth 0 0 dr 0 ampi num photon1 + [] 0 setdash + 0 0 0 0 setcmykcolor + linesep width sub setlinewidth 0 0 dr 0 ampi num photon1 +% + } + ifelse + grestore +} def } +% +% #] dashdoublephoton : +% #[ photon1 : +% +\special{! /photon1{ +% +% Draws a single photon from x1,y1 to x2,y2 with amplitude A and n wiggles +% + gsave + /num1 ed /ampi1 ed + normalizeline /dr ed +% + /x2 dr num1 div def + /sign 1 def + 1 1 num1 { + pop + newpath + 0 0 moveto + 4 3 div x2 mul pi div dup neg x2 add + 4 3 div ampi1 sign mul mul dup 3 1 roll + x2 0 curveto + stroke + /sign sign neg def + x2 0 translate + } for +% + grestore +} def } +% +% #] photon1 : +% #[ dashdoublezigzag : +% +\special{! /dashdoublezigzag{ +% +% Draws a zigzag from x1,y1 to x2,y2 with amplitude A and n wiggles +% Possibly double +% + gsw + /dsize ed + /linesep ed + /num ed /ampi ed + normalizeline /dr ed + /num num 2 mul 0.5 sub round def +% + dsize 0 eq { + [] 0 setdash + } { +% Compute the dash size + /size dr num 2 mul div dup mul ampi dup mul add sqrt def + /ndash size dsize 2 mul div truncate def + ndash 0 eq { /ndash 1 def } if + size 2 dsize ndash mul mul sub abs + size 2 dsize ndash 1 add mul mul sub abs gt { /ndash ndash 1 add def } if + /dsize size 2 ndash mul div def + [ dsize dsize ] dsize 2 div setdash + } ifelse +% + linesep 0 eq + { 0 0 dr 0 ampi num zigzag1 } + { +% 0 linesep 2 div dup dr exch ampi num zigzag1 +% 0 linesep -2 div dup dr exch ampi num zigzag1 +% + linesep width add setlinewidth 0 0 dr 0 ampi num zigzag1 + [] 0 setdash + 0 0 0 0 setcmykcolor + linesep width sub setlinewidth 0 0 dr 0 ampi num zigzag1 +% + } + ifelse + grestore +} def } +% +% #] dashdoublezigzag : +% #[ zigzag1 : +% +\special{! /zigzag1{ +% +% Draws a single zigzag from x1,y1 to x2,y2 with amplitude A and n wiggles +% + gsave + /num1 ed /ampi1 ed + normalizeline /dr ed +% + /x2 dr num1 div def + /sign 1 def + 1 1 num1 { + pop + newpath + 0 0 moveto + x2 2 div ampi1 sign mul lineto + x2 0 lineto + stroke + /sign sign neg def + x2 0 translate + } for +% + grestore +} def } +% +% #] zigzag1 : +% #[ dashgluearc : +% +\special{! /dashgluearc{ +% +% Draws a gluon on an arcsegment +% gluon_radius, num, linesep (0 for no-double), dsize (0 for no dashes) +% clock, radius, start_angle, end_angle, x_center, y_center +% in which num is the number of windings of the gluon. +% +% Method for the gluon arc itself: +% 1: compute length of arc. +% 2: generate gluon in x and y as if the arc is a straight line +% 3: x' = (radius+y)*cos(x*const) +% y' = (radius+y)*sin(x*const) +% + gsw + normalizearc + /darc ed /radius ed /dsize ed /num ed /ampi ed + /num num 0.5 sub round def +% + dsize 0 eq { + [] 0 setdash + } { + /dr radius darc mul pi mul 180 div def % length of segment. + /const darc dr div def % conversion constant + /inc dr num 2 mul 2 add div def % increment per half winding + /amp8 ampi 0.9 mul def + /amp1 radius ampi add def + /amp2 radius ampi sub def + /amp4 amp1 inc amp8 add const mul cos div def + /amp5 amp2 amp8 const mul cos div def + amp8 0 lt {/amp8 amp8 neg def} if + /x1 inc 2 mul def + /x0 x1 const mul cos amp2 mul def + /y0 x1 const mul sin amp2 mul def + x1 amp8 sub const mul dup cos amp5 mul x0 sub exch sin amp5 mul y0 sub + x1 amp8 sub const mul dup cos amp4 mul x0 sub exch sin amp4 mul y0 sub + x1 inc add const mul dup cos amp1 mul x0 sub exch sin amp1 mul y0 sub + 1 lengthofbezier + /size ed +% + /ndash size dsize 2 mul div truncate def + ndash 0 eq { /ndash 1 def } if + size 2 dsize ndash mul mul sub abs + size 2 dsize ndash 1 add mul mul sub abs gt { /ndash ndash 1 add def } if + /dsize size 2 ndash mul div def + [ dsize dsize ] dsize 2 div setdash + } ifelse +% + /dr radius darc mul pi mul 180 div def % length of segment. + /const darc dr div def % conversion constant + /inc dr num 2 mul 2 add div def % increment per half winding + /amp8 ampi 0.9 mul def + /amp1 radius ampi add def + /amp2 radius ampi sub def + /amp3 radius ampi 2 div add def + /amp4 amp1 inc amp8 add const mul cos div def + /amp5 amp2 amp8 const mul cos div def + /amp6 amp1 inc 0.6 mul amp8 add const mul cos div def + /amp7 amp1 inc 0.9 mul const mul cos div def + amp8 0 lt {/amp8 amp8 neg def} if +% + newpath + /x1 inc 2 mul def + x1 const mul dup cos amp2 mul exch sin amp2 mul + moveto + x1 amp8 add const mul dup cos amp5 mul exch sin amp5 mul + x1 amp8 add const mul dup cos amp6 mul exch sin amp6 mul + inc 1.4 mul const mul dup cos amp1 mul exch sin amp1 mul + curveto + inc 0.5 mul const mul dup cos amp7 mul exch sin amp7 mul + inc 0.1 mul const mul dup cos amp3 mul exch sin amp3 mul + radius 0 + curveto + stroke + newpath + x1 const mul dup cos amp2 mul exch sin amp2 mul moveto + 2 1 num { pop + x1 amp8 sub const mul dup cos amp5 mul exch sin amp5 mul + x1 amp8 sub const mul dup cos amp4 mul exch sin amp4 mul + x1 inc add const mul dup cos amp1 mul exch sin amp1 mul + curveto + /x1 x1 inc dup add add def + x1 amp8 add const mul dup cos amp4 mul exch sin amp4 mul + x1 amp8 add const mul dup cos amp5 mul exch sin amp5 mul + x1 const mul dup cos amp2 mul exch sin amp2 mul + curveto + } for + x1 amp8 sub const mul dup cos amp5 mul exch sin amp5 mul + x1 amp8 sub const mul dup cos amp6 mul exch sin amp6 mul + x1 inc 0.6 mul add const mul dup cos amp1 mul exch sin amp1 mul + curveto + x1 inc 1.5 mul add const mul dup cos amp7 mul exch sin amp7 mul + dr inc 0.1 mul sub const mul dup cos amp3 mul exch sin amp3 mul + dr const mul dup cos radius mul exch sin radius mul + curveto + stroke +% + grestore +} def +} +% +% #] dashgluearc : +% #[ dashdoublephotonarc : +% +\special{! /dashdoublephotonarc{ +% +% Draws a photon on an arcsegment +% photon_radius, num, linesep (0 for no-double), dsize (0 for no dashes), +% clock, radius, start_angle, end_angle, x_center, y_center +% in which num is the number of wiggles of the photon. +% + gsw + normalizearc + /darc ed /radius ed /dsize ed /linesep ed /num ed /ampli ed +% + /num num 2 mul round def % number of half wiggles + /darc1 darc num div def + /cp darc1 cos def + /sp darc1 sin def + darc1 2 div dup + /cp2 exch cos def + /sp2 exch sin def +% + dsize 0 eq { + [] 0 setdash + } { +% +% Compute the length of the outer curve and the inner curve. +% There must be an integer number of patterns in half the sum. +% The we use half of the first to determine where in the pattern +% we should start. +% + /ampli1 ampli def + /beta radius darc1 mul 180 ampli1 mul div def + /tt sp cp beta mul sub cp sp beta mul add div def + /amp1 radius ampli1 add 8 mul beta cp2 mul sp2 sub mul beta 4 cp add mul + tt cp mul 3 mul sp 4 mul sub add radius mul sub + beta tt sub 3 mul div def % this is x2 + radius ampli1 add 8 mul cp2 mul 1 cp add radius mul sub 3 div amp1 sub + dup radius sub exch radius sub beta mul % x1,y1 + amp1 radius sub amp1 radius cp mul sub tt mul radius sp mul add % x2,y2 + radius cp mul radius sub radius sp mul % x3 y3 + 1 lengthofbezier + /len1 ed + /ampli1 ampli1 neg def + /beta radius darc1 mul 180 ampli1 mul div def + /tt sp cp beta mul sub cp sp beta mul add div def + /amp1 radius ampli1 add 8 mul beta cp2 mul sp2 sub mul beta 4 cp add mul + tt cp mul 3 mul sp 4 mul sub add radius mul sub + beta tt sub 3 mul div def % this is x2 + radius ampli1 add 8 mul cp2 mul 1 cp add radius mul sub 3 div amp1 sub + dup radius sub exch radius sub beta mul % x1,y1 + amp1 radius sub amp1 radius cp mul sub tt mul radius sp mul add % x2,y2 + radius cp mul radius sub radius sp mul % x3 y3 + 1 lengthofbezier + /len2 ed + /size len1 len2 add 2 div def + /size2 len1 2 div def +% + /ndash size dsize 2 mul div truncate def + ndash 0 eq { /ndash 1 def } if + size 2 dsize ndash mul mul sub abs + size 2 dsize ndash 1 add mul mul sub abs gt { /ndash ndash 1 add def } if + /dsize size 2 ndash mul div def + /numd size2 dsize 2 mul div truncate def + /dstart dsize 2 div size2 sub 2 numd dsize mul mul add def + dstart 0 lt { /dstart dstart dsize 2 mul add def } if + [ dsize dsize ] dstart setdash + } ifelse +% + linesep 0 eq { + radius photonarc1 + } { + linesep width add setlinewidth radius photonarc1 + [] 0 setdash + 0 0 0 0 setcmykcolor + linesep width sub setlinewidth radius photonarc1 + } ifelse +% + grestore +} def } +% +% #] dashdoublephotonarc : +% #[ photonarc1 : +% +\special{! /photonarc1{ +% Usage: radius photonarc1 +% Draws a single photon on an arcsegment. +% Called from dashdoublephotonarc with coordinates centered on center, +% start on x-axis. +% Assume the following are set: num, ampli, arcend phi, arcstart phi/2, cp, +% cp2, sp, sp2. +% Draws a photonarc center at x1,y1, radius arcstart,arcend, amplitude +% number of wiggles, width, scale +% + gsave + /radius1 ed + % Local copy of amplitude, since I change it + /ampli1 ampli def +% + newpath + radius1 0 moveto + 1 1 num { 1 sub /ii ed + /cpi darc1 ii mul cos def + /spi darc1 ii mul sin def + /beta radius1 darc1 mul 180 ampli1 mul div def + /tt sp cp beta mul sub cp sp beta mul add div def + /x2 radius1 ampli1 add 8 mul beta cp2 mul sp2 sub mul beta 4 cp add mul + tt cp mul 3 mul sp 4 mul sub add radius1 mul sub + beta tt sub 3 mul div def + /x1 radius1 ampli1 add 8 mul cp2 mul 1 cp add radius1 mul sub 3 div x2 sub def + /y1 x1 radius1 sub beta mul def + /y2 x2 radius1 cp mul sub tt mul radius1 sp mul add def + /x3 radius1 cp mul def + /y3 radius1 sp mul def + x1 cpi mul y1 spi mul sub y1 cpi mul x1 spi mul add + x2 cpi mul y2 spi mul sub y2 cpi mul x2 spi mul add + x3 cpi mul y3 spi mul sub y3 cpi mul x3 spi mul add + curveto + /ampli1 ampli1 neg def + } for + stroke +% + grestore +} def } +% +% #] photonarc1 : +% #[ dashdoublezigzagarc : +% +\special{! /dashdoublezigzagarc{ +% +% Draws a zigzag on an arcsegment +% zigzag_radius, num, linesep (0 for no-double), dsize (0 for no dashes), +% clock, radius, start_angle, end_angle, x_center, y_center +% in which num is the number of wiggles of the zigzag. +% + gsw + normalizearc + /darc ed /radius ed /dsize ed /linesep ed /num ed /ampli ed +% + /num num 2 mul round def % number of half wiggles + /darc1 darc num div def + /cp darc1 cos def + /sp darc1 sin def + darc1 2 div dup + /cp2 exch cos def + /sp2 exch sin def +% + dsize 0 eq { + [] 0 setdash + } { + /size ampli dup mul radius dup mul add radius dup mul ampli dup mul sub + cp mul sub 2 div sqrt def + /size2 ampli dup mul ampli radius add radius mul 2 mul 1 cp2 sub mul + add sqrt def +% + /ndash size dsize 2 mul div truncate def + ndash 0 eq { /ndash 1 def } if + size 2 dsize ndash mul mul sub abs + size 2 dsize ndash 1 add mul mul sub abs gt { /ndash ndash 1 add def } if + /dsize size 2 ndash mul div def + /numd size2 dsize 2 mul div truncate def + /dstart dsize 2 div size2 sub 2 numd dsize mul mul add def + dstart 0 lt { /dstart dstart dsize 2 mul add def } if + [ dsize dsize ] dstart setdash + } ifelse +% + linesep 0 eq { + radius zigzagarc1 + } { + linesep width add setlinewidth radius zigzagarc1 + [] 0 setdash + 0 0 0 0 setcmykcolor + linesep width sub setlinewidth radius zigzagarc1 + } ifelse +% + grestore +} def } +% +% #] dashdoublezigzagarc : +% #[ zigzagarc1 : +% +\special{! /zigzagarc1{ +% Usage: radius zigzagarc1 +% Draws a single zigzag on an arcsegment. +% Called from dashdoublezigzagarc with coordinates centered on center, +% start on x-axis. +% Assume the following are set: num, ampli, arcend phi, arcstart phi/2, cp, +% cp2, sp, sp2. +% Draws a zigzagarc center at x1,y1, radius arcstart,arcend, amplitude +% number of wiggles, width, scale +% + gsave + /radius1 ed +% Local copy of amplitude, since I change it + /ampli1 ampli def +% +% Num is the number of half wiggles. We like to start and end with +% quarter wiggles though. +% + /darc2 darc1 2 div def + newpath + radius1 0 moveto + darc2 dup sin exch cos + radius1 ampli1 add mul exch radius1 ampli1 add mul lineto + /ampli1 ampli1 neg def + /num1 num 1 sub def + 1 1 num1 { + darc1 mul darc2 add dup sin exch cos + radius1 ampli1 add mul exch radius1 ampli1 add mul lineto + /ampli1 ampli1 neg def + } for + num darc1 mul dup sin exch cos + radius1 mul exch radius1 mul lineto + stroke +% + grestore +} def } +% +% #] zigzagarc1 : +% #[ dashgluoncirc : +% +\special{! /dashgluoncirc{ +% +% Draws a gluon on a complete circle +% cmyk color setting +% gluon_ampl, num, linesep (0 for no-double), dsize (0 for no dashes) +% radius, phase_angle, x_center, y_center +% in which num is the number of windings of the gluon. +% + gsw + translate + /phase ed /radius ed /dsize ed /num ed /ampi ed + /num num 0.5 sub round def + /darc 180 num div def +% +% We rotate in such a way that 0 angle becomes more accessible. +% + darc phase add rotate +% + dsize 0 eq { + [] 0 setdash + } { + /dr radius 2 mul pi mul def % 2*pi*r + /inc dr 2 num mul div def % 2*pi*r/(2*num) + /const 360 dr div def % 360/(2*pi*r) + /amp8 ampi 0.9 mul def + /amp1 radius ampi add def + /amp2 radius ampi sub def + /amp4 amp1 inc amp8 add const mul cos div def + /amp5 amp2 amp8 const mul cos div def + amp8 0 lt {/amp8 amp8 neg def} if + /xx inc 2 mul def + /x0 amp1 inc const mul cos mul def + /y0 amp1 inc const mul sin mul def + amp4 xx amp8 add const mul cos mul x0 sub + amp4 xx amp8 add const mul sin mul y0 sub + amp5 xx amp8 add const mul cos mul x0 sub + amp5 xx amp8 add const mul sin mul y0 sub + amp2 xx const mul cos mul x0 sub + amp2 xx const mul sin mul y0 sub + 1 lengthofbezier + /size ed +% + /ndash size dsize 2 mul div truncate def + ndash 0 eq { /ndash 1 def } if + size 2 dsize ndash mul mul sub abs + size 2 dsize ndash 1 add mul mul sub abs gt { /ndash ndash 1 add def } if + /dsize size 2 ndash mul div def + [ dsize dsize ] dsize 2 div setdash + } ifelse +% + /dr radius 2 mul pi mul def % 2*pi*r + /inc dr 2 num mul div def % 2*pi*r/(2*num) + /const 360 dr div def % 360/(2*pi*r) + /amp8 ampi 0.9 mul def + /amp1 radius ampi add def + /amp2 radius ampi sub def + /amp4 amp1 inc amp8 add const mul cos div def + /amp5 amp2 amp8 const mul cos div def + amp8 0 lt {/amp8 amp8 neg def} if +% + newpath +% + /xx inc 2 mul def + amp1 inc const mul cos mul amp1 inc const mul sin mul moveto +% + 1 1 num { pop + amp4 xx amp8 add const mul cos mul + amp4 xx amp8 add const mul sin mul + amp5 xx amp8 add const mul cos mul + amp5 xx amp8 add const mul sin mul + amp2 xx const mul cos mul + amp2 xx const mul sin mul + curveto + amp5 xx amp8 sub const mul cos mul + amp5 xx amp8 sub const mul sin mul + amp4 xx amp8 sub const mul cos mul + amp4 xx amp8 sub const mul sin mul + amp1 xx inc add const mul cos mul + amp1 xx inc add const mul sin mul + curveto + /xx xx inc 2 mul add def + } for +% + stroke +% + grestore +} def } +% +% #] dashgluoncirc : +% #[ arc2 : +% +\special{! /arc2{ +% Draws an arc segment: +% arrowspec, arrowpos, flip, linesep, dsize, +% clock, radius, start_angle, end_angle, x_center, y_center, width, scale +% If linesep == 0, then single line, else double with separation linesep. +% + gsw + normalizearc + /darc ed /radius ed + /dsize ed /linesep ed + /angdsize dsize radius div def + /flip ed + getarrow + /arcmid darc arrowpos mul def + /linewidth width def + dsize 0 eq + { linesep 0 eq + { 0 0 radius 0 darc dasharc } + { gsave + linesep linewidth add setlinewidth + 0 0 radius 0 darc dasharc + setbackgroundcolor + [] 0 setdash + linesep linewidth sub setlinewidth + 0 0 radius 0 darc dasharc + grestore + } ifelse + } + { linesep 0 eq + { 0 0 radius 0 arcmid dasharc + 0 0 radius arcmid darc dasharc + } { + gsave + linesep linewidth add setlinewidth + 0 0 radius 0 arcmid dasharc + 0 0 radius arcmid darc dasharc + setbackgroundcolor + [] 0 setdash + linesep linewidth sub setlinewidth + 0 0 radius 0 darc dasharc + grestore + } ifelse + } ifelse + arcmid rotate + radius 0 translate + flip { 0 } { 180 } ifelse + witharrow { drawarrow } if + grestore +} def } +% +% #] arc2 : +% #[ dasharrowdoubleline : +% +\special{! /dasharrowdoubleline{ +% +% arrowspec, arrowpos, flip, linesep, dsize, +% x1, y1, x2, y2, width, scale +% If linesep == 0, then single line, else double with separation linesep. +% Draws a dashed double straight line with arrow. +% If dsize==0, then continuous line. +% If linesep==0, then single line. + gsw + normalizeline + /dr ed + /dsize ed + /linesep ed + /flip ed + getarrow +% + % If linesep is negative, that means the arrow is flipped. + % But the lineend coordinates are already flipped, so there is + % no need to make any adjustment; i.e., replace linesep by + % absolute value. + /linesep setabs + /linewidth width def + linesep 0 eq { + 0 0 dr 0 dashline + } { + gsave + linesep linewidth add setlinewidth 0 0 dr 0 dashline + setbackgroundcolor + [] 0 setdash + linesep linewidth sub setlinewidth 0 0 dr 0 newpath moveto lineto stroke + grestore + } ifelse + dr arrowpos mul 0 translate + flip { -90 }{ 90 } ifelse + witharrow { drawarrow } if + grestore +} def } +% +% #] dasharrowdoubleline : +% #[ vertex : +% +\special{! /vertex{ +% +% Puts a fat dot at x,y size is the radius of the dot +% + gs + /dotsize ed + translate + newpath + 0 0 dotsize 0 360 arc + fill stroke + grestore +} def } +% +% #] vertex : +% #[ ecirc : +% +\special{! /ecirc{ +% +% Draws an anti-clockwise circle : +% x_center, y_center, radius +% Transparent interior +% + gsw /radius ed + translate % x and y are still on stack + newpath 0 0 radius 0 360 arc stroke + grestore +} def } +% +% #] ecirc : +% #[ ebox : +% +\special{! /ebox{ +% +% Draws a transparent box x1,y1,x2,y2 +% + gsw p2 p1 + abox stroke + grestore +} def } +% +% #] ebox : +% #[ fbox : +% +\special{! /fbox{ +% +% Draws a filled box x1,y1,x2,y2 +% + gsw p2 p1 + abox fill + grestore +} def } +% +% #] fbox : +% #[ triangle : +% +\special{! /triangle{ +% +% Draws a triangle x1,y1,x2,y2,x3,y3 +% + gsw p3 p2 p1 + atriangle stroke + grestore +} def } +% +% #] triangle : +% #[ ftriangle : +% +\special{! /ftriangle{ +% +% Draws a triangle x1,y1,x2,y2,x3,y3 +% + gsw p3 p2 p1 + atriangle fill + grestore +} def } +% +% #] ftriangle : +% #[ ellipse: +% +\special{! /ellipse { + % Draw an ellipse + % RedGrittyBrick 20/10/2003 + % From http://www.redgrittybrick.org/postscript/ellipse.html. 2011/03/22 + % draw an ellipse using four bezier curves + % + /r2 exch def % 2nd parameter + /r1 exch def % 1st parameter + /kappa 0.5522847498 def + % + newpath + 0 r2 moveto % start point of curve + % + % top clockwise + kappa r1 mul r2 % 1st Bezier control point + r1 kappa r2 mul % 2nd Bezier control point + r1 0 curveto % end point of curve + % + % right clockwise + r1 kappa r2 mul neg + kappa r1 mul r2 neg + 0 r2 neg curveto + % + % bottom clockwise + kappa r1 mul neg r2 neg + r1 neg kappa r2 mul neg + r1 neg 0 curveto + % + % left clockwise + r1 neg kappa r2 mul + kappa r1 mul neg r2 + 0 r2 curveto + % + } def % ellipse +} +% +% #] ellipse: +% #[ goval : +% +\special{! /goval{ +% +% Draws a gray oval that overwrites whatever was there. +% x_center y_center height width rotation color linewidth scale +% + gsw /gcolor ed /angle ed /width ed /height ed +% + translate % x and y are still on stack + angle rotate + 1 setgray width height ellipse fill + gcolor setgray width height ellipse fill + 0 setgray width height ellipse stroke + grestore +} def } +% +% #] goval : +% #[ fcoval : +% +\special{! /foval{ +% +% Draws an oval that overwrites whatever was there. +% x_center y_center height width rotation linewidth scale +% + gsw /angle ed /width ed /height ed +% + translate % x and y are still on stack + angle rotate + width height ellipse fill + grestore +} def } +% +% #] foval : +% #[ oval : +% +\special{! /oval{ +% +% Draws an oval that does not overwrite whatever was there. +% x_center y_center height width rotation linewidth scale +% + gsw /angle ed /width ed /height ed +% + translate % x and y are still on stack + angle rotate + width height ellipse stroke + grestore +} def } +% +% #] oval : +% #[ polygon : +% +% Incoming stack: +% [array of x,y pairs] width scale +% +\special{! /polygon{ + gsw /points ed + /ss points length 2 idiv 2 mul def + ss 4 gt { + newpath + points 0 get points 1 get moveto + 0 2 ss 4 sub { /ii ed + /x1 points ii 2 add get def + /y1 points ii 3 add get def + x1 y1 lineto + } for + closepath + stroke + } if + grestore +} def } +% +% #] polygon : +% #[ filledpolygon : +% +% Incoming stack: +% [array of x,y pairs] width scale +% +\special{! /filledpolygon{ + gsw /points ed + /ss points length 2 idiv 2 mul def + ss 4 gt { + newpath + points 0 get points 1 get moveto + 0 2 ss 4 sub { /ii ed + /x1 points ii 2 add get def + /y1 points ii 3 add get def + x1 y1 lineto + } for + closepath + fill + } if + grestore +} def } +% +% #] filledpolygon : +% #[ makecurve : +% +\special{! /docurve{ + x1 2 mul x2 add 3 div + y1 y0 sub x1 x0 sub div x2 x0 sub mul + y2 y0 sub x2 x0 sub div x1 x0 sub mul add + y1 add y0 2 mul add 3 div + x1 x2 2 mul add 3 div + y2 y3 sub x2 x3 sub div x1 x3 sub mul + y1 y3 sub x1 x3 sub div x2 x3 sub mul add + y2 add y3 2 mul add 3 div + x2 y2 curveto +} def } +% +\special{! /makecurve{ +% +% Incoming stack: +% [array of x,y pairs] width scale +% + gsw /points ed + /ss points length 2 idiv 2 mul def + newpath + ss 4 gt { + /x1 points 0 get def + /y1 points 1 get def + /x2 points 2 get def + /y2 points 3 get def + /x3 points 4 get def + /y3 points 5 get def + /x0 x1 2 mul x2 sub def + /y0 y3 y2 sub x3 x2 sub div y2 y1 sub x2 x1 sub div sub 2 mul + x2 x1 sub dup mul x3 x1 sub div mul + y1 2 mul add y2 sub def + x1 y1 moveto + docurve + 0 2 ss 8 sub { /ii ed + /x0 points ii get def + /y0 points ii 1 add get def + /x1 points ii 2 add get def + /y1 points ii 3 add get def + /x2 points ii 4 add get def + /y2 points ii 5 add get def + /x3 points ii 6 add get def + /y3 points ii 7 add get def + docurve + } for + /x0 points ss 6 sub get def + /y0 points ss 5 sub get def + /x1 points ss 4 sub get def + /y1 points ss 3 sub get def + /x2 points ss 2 sub get def + /y2 points ss 1 sub get def + /x3 x2 2 mul x1 sub def + /y3 y2 y1 sub x2 x1 sub div y1 y0 sub x1 x0 sub div sub 2 mul + x2 x1 sub dup mul x2 x0 sub div mul + y2 2 mul add y1 sub def + docurve + } { + ss 4 eq { + points 0 get points 1 get moveto + points 2 get points 3 get lineto + } if + } ifelse + stroke + grestore +} def } +% +% #] makecurve : +% #[ makedashcurve : +% +\special{! /makedashcurve{ +% +% Incoming stack: +% [array of x,y pairs] dashsize width scale +% + gsw /dsize ed /points ed + /ss points length 2 idiv 2 mul def + newpath + ss 4 gt { + /x1 points 0 get def + /y1 points 1 get def + /x2 points 2 get def + /y2 points 3 get def + /x3 points 4 get def + /y3 points 5 get def + /x0 x1 2 mul x2 sub def + /y0 y3 y2 sub x3 x2 sub div y2 y1 sub x2 x1 sub div sub 2 mul + x2 x1 sub dup mul x3 x1 sub div mul + y1 2 mul add y2 sub def + x1 y1 moveto + docurve + 0 2 ss 8 sub { /ii ed + /x0 points ii get def + /y0 points ii 1 add get def + /x1 points ii 2 add get def + /y1 points ii 3 add get def + /x2 points ii 4 add get def + /y2 points ii 5 add get def + /x3 points ii 6 add get def + /y3 points ii 7 add get def + docurve + } for + /x0 points ss 6 sub get def + /y0 points ss 5 sub get def + /x1 points ss 4 sub get def + /y1 points ss 3 sub get def + /x2 points ss 2 sub get def + /y2 points ss 1 sub get def + /x3 x2 2 mul x1 sub def + /y3 y2 y1 sub x2 x1 sub div y1 y0 sub x1 x0 sub div sub 2 mul + x2 x1 sub dup mul x2 x0 sub div mul + y2 2 mul add y1 sub def + docurve + } { + ss 4 eq { + points 0 get points 1 get moveto + points 2 get points 3 get lineto + } if + } ifelse + centerdash + stroke + grestore +} def } +% +\special{! /pathlength{ + flattenpath + /dist 0 def + { /yfirst ed /xfirst ed /ymoveto yfirst def /xmoveto xfirst def } + { /ynext ed /xnext ed /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def } + {} + {/ynext ymoveto def /xnext xmoveto def + /dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def } + pathforall + dist +} def } +% +\special{! /centerdash{ + /pathlen pathlength def + /jj pathlen dsize div 2.0 div cvi def + /ddsize pathlen jj 2.0 mul div def + [ddsize] ddsize 2 div setdash +} def } +% +% #] makedashcurve : +% #[ logaxis : +% +\special{! /logaxis{ +% +% Draws an axis from x1,y1 to x2,y2 with nl log divisions +% size of the hashes hs, offset F +% and width W. The stack looks like +% x1,y1,x2,y2,nl,hs,F,W,scale +% After the rotation the hash marks are on top if nl is positive and +% on the bottom if nl is negative +% + gsw /offset ed /hashsize ed /nlogs ed + normalizeline /rr ed + offset 0 ne { /offset offset ln 10 ln div def } if + /offset offset dup cvi sub def + newpath + 0 0 moveto + rr 0 lineto + /lsize rr nlogs div def + 0 1 nlogs { /x2 ed + x2 offset ge { + /y2 x2 offset sub lsize mul def + y2 rr le { + y2 0 moveto + y2 hashsize 1.2 mul lineto + } if + } if + } for + stroke + width 0.6 mul setlinewidth + newpath + 0 1 nlogs { /x2 ed + 2 1 9 { + ln 10 ln div x2 add + /xx2 ed + xx2 offset ge { + /y2 xx2 offset sub lsize mul def + y2 rr le { + y2 0 moveto + y2 hashsize 0.8 mul lineto + } if + } if + } for + } for + stroke + grestore +} def } +% +% #] logaxis : +% #[ linaxis : +% +\special{! /linaxis{ +% +% x1,y1,x2,y2,num_decs,per_dec,hashsize,offset,width,scale +% + gsw /offset ed /hashsize ed /perdec ed /numdec ed + normalizeline + /rr ed + /perdec perdec round def + /offset offset + % Do real equivalent of offset perdec mod + dup cvi perdec idiv + sub + dup 0 lt {perdec add} if + dup perdec ge {perdec sub} if + def + newpath + 0 0 moveto + rr 0 lineto + /x1 rr numdec perdec mul div def + /y1 rr numdec div def + offset 0 eq {0} {1} ifelse 1 numdec + { y1 mul offset x1 mul sub + dup 0 moveto + hashsize 1.2 mul lineto + } for + stroke + width 0.6 mul setlinewidth + newpath + /offset offset dup cvi sub def + offset 0 eq {0} {1} ifelse 1 numdec perdec mul { + offset sub x1 mul + dup 0 ge { + dup rr le { + dup 0 moveto + hashsize 0.8 mul lineto + } if + } if + } for + stroke + grestore +} def } +% +% #] linaxis : +% #[ dashbezier : +% +\special{! /dashbezier{ +% +% Draws a dashed Bezier with control points x1,y1,x2,y2,x3,y3,x4,y4 +% + gsw /dsize ed p4 p3 p2 p1 + dsize 0 ne { + /size x2 x1 sub y2 y1 sub x3 x1 sub y3 y1 sub x4 x1 sub y4 y1 sub + 1 lengthofbezier def + /numdashes size dsize 2 mul div def + numdashes 0 eq { /numdashes 1 def } if + size dsize 2 mul numdashes mul sub abs + size dsize 2 mul numdashes 1 add mul sub abs + gt { /numdashes 1 add def } if + /dsize size numdashes 2 mul div def + [dsize dsize] dsize 2 div setdash + } if + abezier stroke + grestore +} def } +% +% #] dashbezier : +% #[ dashdoublebezier : +% +\special{! /dashdoublebezier{ +% +% Draws a dashed Bezier with control points x1,y1,x2,y2,x3,y3,x4,y4 +% + gsw /dsize ed /linesep ed + /flip ed + getarrow + p4 p3 p2 p1 + /linewidth width def + /bsize x2 x1 sub y2 y1 sub x3 x1 sub y3 y1 sub x4 x1 sub y4 y1 sub + 1 lengthofbezier def + dsize 0 ne { + /numdashes bsize dsize 2 mul div def + numdashes 0 eq { /numdashes 1 def } if + bsize dsize 2 mul numdashes mul sub abs + bsize dsize 2 mul numdashes 1 add mul sub abs + gt { /numdashes 1 add def } if + /dsize bsize numdashes 2 mul div def + [dsize dsize] dsize 2 div setdash + } if + linesep 0 ne { + linesep linewidth add setlinewidth abezier stroke + gsave + 0 0 0 0 setcmykcolor + linesep linewidth sub setlinewidth abezier stroke + grestore + } { + abezier stroke + } ifelse +% + witharrow { + /tb arrowpos def + /tbmax 1 def /tbmin 0 def + { + /sizeb x2 x1 sub y2 y1 sub x3 x1 sub y3 y1 sub x4 x1 sub y4 y1 sub + tb lengthofbezier def + sizeb bsize div arrowpos sub abs 0.0001 le { exit } if + sizeb bsize div arrowpos gt + { /tbmax tb def /tb tb tbmin add 2 div def } + { /tbmin tb def /tb tb tbmax add 2 div def } ifelse + } loop + /ub 1 tb sub def + x1 ub ub ub mul mul mul tb x2 3 mul ub mul ub mul tb x3 3 mul ub mul + x4 tb mul add mul add mul add + y1 ub ub ub mul mul mul tb y2 3 mul ub mul ub mul tb y3 3 mul ub mul + y4 tb mul add mul add mul add translate + y4 tb dup mul mul y3 tb mul 2 3 tb mul sub mul add y2 ub mul 1 3 tb mul + sub mul add y1 ub dup mul mul sub 3 mul + x4 tb dup mul mul x3 tb mul 2 3 tb mul sub mul add x2 ub mul 1 3 tb mul + sub mul add x1 ub dup mul mul sub 3 mul + atan rotate + flip { -90 }{ 90 } ifelse + drawarrow + } if +% + grestore +} def } +% +% #] dashdoublebezier : +% #[ lengthofbezier : +% +% Calculates the length of a Bezier curve assuming that we start +% in the point 0,0. We use a Gaussian quadrature with 16 points. +% If, at any time, more precision is needed we have the 32 points +% numbers in axohelp.c. (and there is more commentary in that file) +% +\special{! + /g16x1 { 0.095012509837637440185 } def + /g16x2 { 0.281603550779258913230 } def + /g16x3 { 0.458016777657227386342 } def + /g16x4 { 0.617876244402643748447 } def + /g16x5 { 0.755404408355003033895 } def + /g16x6 { 0.865631202387831743880 } def + /g16x7 { 0.944575023073232576078 } def + /g16x8 { 0.989400934991649932596 } def + /g16w1 { 0.189450610455068496285 } def + /g16w2 { 0.182603415044923588867 } def + /g16w3 { 0.169156519395002538189 } def + /g16w4 { 0.149595988816576732081 } def + /g16w5 { 0.124628971255533872052 } def + /g16w6 { 0.095158511682492784810 } def + /g16w7 { 0.062253523938647892863 } def + /g16w8 { 0.027152459411754094852 } def + /onepoint { + /gpt ed + /tpt 1 gpt add 2 div tmax mul def + xc tpt mul xb add tpt mul xa add dup mul + yc tpt mul yb add tpt mul ya add dup mul + add sqrt + /tpt 1 gpt sub 2 div tmax mul def + xc tpt mul xb add tpt mul xa add dup mul + yc tpt mul yb add tpt mul ya add dup mul + add sqrt add 2 div + } def + /lengthofbezier { + /tmax ed + pp3 pp2 pp1 + /xa xx1 3 mul def /xb xx2 xx1 2 mul sub 6 mul def + /xc xx3 xx2 xx1 sub 3 mul sub 3 mul def + /ya yy1 3 mul def /yb yy2 yy1 2 mul sub 6 mul def + /yc yy3 yy2 yy1 sub 3 mul sub 3 mul def +% + g16x1 onepoint g16w1 mul + g16x2 onepoint g16w2 mul add + g16x3 onepoint g16w3 mul add + g16x4 onepoint g16w4 mul add + g16x5 onepoint g16w5 mul add + g16x6 onepoint g16w6 mul add + g16x7 onepoint g16w7 mul add + g16x8 onepoint g16w8 mul add + tmax mul + } def +} +% #] lengthofbezier : +% #[ axogrid : +% +\special{! /axogrid{ + gsw translate + /ny ed /nx ed /dy ed /dx ed + /maxx nx dx mul def + /maxy ny dy mul def + 0 1 nx { + newpath dx mul dup 0 moveto maxy lineto stroke + } for + 0 1 ny { + newpath maxx exch dy mul dup 0 exch moveto lineto stroke + } for +} def } +% +% #] axogrid : +} +% #] PostScript preamble : +% #[ axoparray : Puts an array of 2-dim points +% +% Puts a sequence of points in the notation (x1,y1)(x2,y2).... +% on the Postscript stack. This is for Curve and DashCurve. +% +\let\eind=] +% +\def\axoparray(#1,#2)#3{#1 \axoxo\space add #2 \axoyo\space add \ifx #3\eind\else +\expandafter\axoparray\fi#3} +% +% #] axoparray : +% +\fi +% #] Postscript specific : +% #[ PDF specific : +% +% Here are the routines that are used purely for the PDF output. +% The main concern here is the communication with the axohelp program. +% +\ifcase\axo@pdfoutput\else +% +% #[ getaxohelp : +% +% This is the command that makes the PDF work. Use as in +% getaxohelp{NameOfFunction}{parameters to be passed} +% The format is very precise. If axohelp is not happy there will +% be no output. The most common error is that the parameters are +% not separated by black spaces. Some \space might have to be inserted. +% The reason we do not separate the parameters by comma's is that +% both Postscript and PDF want their objects separated by blanks. +% Also a separation by blanks makes the parameters into separate +% arguments in the call to axohelp. Our colors need blanks.... +% +% +\def\getoneline#1#2{% + % Set the command of name #1 to the next line of the file + % for which the input stream number is #2. + \def\tmpfh{#2}% + \ifeof\tmpfh + \else + \read\tmpfh to \tmpline + \fi + \ifeof\tmpfh + \@namedef{#1}{}% + \else + \expandafter \let \csname #1\endcsname = \tmpline + \fi +} +% +\def\getaxohelp#1#2{% + \def\axohelp{}% + \stepcounter{axo@objectIndex}% + \def\axo@currentInput{#1 #2;}% + \immediate\write\axo@spec{[\arabic{axo@objectIndex}]\space \axo@currentInput}% + \ifaxo@axohelpRerun% + \else% + \def\axo@currentInput{{#1 #2;}}% + \getoneline{axo@partOne}\axo@axohelpFile% + \catcode`\ =13% + \getoneline{axo@partTwo}\axo@axohelpFile% + \catcode`\ =10% + \getoneline{axo@partThree}\axo@axohelpFile% + \ifeof\axo@axohelpFile + \rlap{New object; rerun axohelp}% + \global\axo@axohelpReruntrue + \else + \ifthenelse{\equal{\axo@partTwo}{\axo@currentInput}}% + {% Current definition is same as the one processed + % by axohelp, so it is safe to use + \expandafter\def\expandafter\axohelp\axo@partThree% + }% + {% + \rlap{Changed object; rerun axohelp}% + \global\axo@axohelpReruntrue + }% + \fi + \fi% +} +% +% #] getaxohelp : +% #[ Use the axohelp output : +% +% Implement conversion of length unit from pt to bp by scaling +\def\contentspdf{q \axoscale\space 0 0 \axoscale\space 0 0 cm + 0.99626401 0 0 0.99626401 0 0 cm + 1 0 0 1 \axoxo\space \axoyo\space cm + \axohelp\space + Q} +\def\contentspdfNoOffset{q \axoscale\space 0 0 \axoscale\space 0 0 cm + 0.99626401 0 0 0.99626401 0 0 cm + \axohelp\space + Q} +% +% #] Use the axohelp output : +% +\fi +% #] PDF specific : + +% Process options now, after all potentially necessary commands have +% been defined. Use starred form, so that the options are processed +% in the order the user writes them. Also set defaults here. +\PSTextScalesLikeGraphicstrue +\canvasScaleObjectScale +\ProcessOptions* diff --git a/Build/source/utils/axodraw2/axodraw2-src/axohelp.1 b/Build/source/utils/axodraw2/axodraw2-src/axohelp.1 new file mode 100644 index 00000000000..47f62fd5ff8 --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/axohelp.1 @@ -0,0 +1,48 @@ +.TH "axohelp" "1.1" "22 Jan 2018" "" +.SH NAME +axohelp - helper program for use of LaTeX package axodraw2 with +pdflatex. +.SH SYNOPSIS +.B axohelp [options] [filename] +.SH DESCRIPTION +Axohelp is a program used with the axodraw2, which is a LaTeX package +for drawing Feynman graphs (and some other simple graphics) in LaTeX +documents. + +When the axodraw2 package is used with pdflatex (or lualatex or +xelatex) it creates a file with extension .ax1. This contains +specifications of the graphics elements. Axohelp converts this to a +file with extension ax2 that contains the necessary pdf code. +The .ax2 file is read by pdflatex (etc) on its next run, and the +contents of the .ax2 file are used in the final .pdf output file to +draw the desired graphics. + +The files processed are specified as follows: When the filename on the +command line is of the form file.ax1, then the input file is file.ax1 +and the output file is file.ax2. If the filename on the command line +does not have extension .ax1, then this extension is appended. + + +.SH OPTIONS +Options can be introduced by single or double hyphen characters. The +possible options are: + +.TP +.B -h, --help +Gives usage information + +.TP +.B -v, --version +Gives version information + +.TP +.B -V +NOT CURRENTLY IMPLEMENTED: Give information on each function used. + +.SH AUTHOR +Current version, by John Collins (username jcc8 at node psu.edu) and +Jos Vermaseren (username t68 at nikhef dot nl). + +The released version can be obtained from CTAN: +, and an author's website +. diff --git a/Build/source/utils/axodraw2/axodraw2-src/axohelp.c b/Build/source/utils/axodraw2/axodraw2-src/axohelp.c new file mode 100644 index 00000000000..2f93d351be6 --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/axohelp.c @@ -0,0 +1,3732 @@ +/* + #[ License : + + (C) 2016-2018 by authors: + John Collins (jcc8 at psu dot edu) + Jos Vermaseren (t68 at nikhef dot nl) + + axohelp is free software: you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + axohelp is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + For the GNU General Public License see . + + #] License : + #[ Commentary + Modifications : + + This file contains the source code of the axohelp program that is used + together with axopdf.sty and pdflatex. It is a conversion of the postscript + code of axodraw.sty. + + input file contains objects of the type + [number] axohelp input + the output contains objects: + \axo@setObject{label}% + {input data}% + {output} + There may be blank lines and commentary. + + #[ About folds : (this line starts with one blank and two tabs) + + The internals of the file have been organized in folds. + These are defined as a range of lines if which the first and last + lines have a special format. Each starts with any three characters + (may include tabs), then #[ for the start line and #] for the closing + line, then both lines need identical name fields, closed by a colon. + After the colon can be anything. When a fold is closed one should see + only the first line but with the #[ replaced by ## as in + ## About folds : (this line starts with one blank and two tabs) + Folds can be nested. + This fold concept comes originally from the occam compiler for the + transputer in the second half of the 1980's although there it was + implemented differently. It was taken over by the STedi editor in its + current form. The sources of this editor are available from the form + home site: http://www.nikhef.nl/~form + Some people have managed to emulate these folds in editors like emacs + and vim. + + #] About folds : + #] Commentary + Modifications : + #[ Includes : +*/ + +#include +#include +#include +#include + +/* + #] Includes : + #[ Defines : +*/ + +#define NAME "axohelp" +#define VERSIONDATE "2018 Jan 23" +#define VERSION 1 +#define SUBVERSION 1 + +#define COMMENTCHAR '%' +#define TERMCHAR ';' + +#define STROKING 0 +#define NONSTROKING 1 + +char **inputs; +long *inputsizes; +double **inargs; +long numinputs = 0; +long inputallocations = 0; +char *axohelp; +FILE *outfile; +char *inname, *outname; +int VerboseFlag = 0; +char outputbuffer[1000000]; +char *outpos; +long numobject; +char *nameobject; +int witharrow = 0; +int identification = 0; + +static int lastlinefeed = 1; +static double axolinewidth = 0.5; +static struct aRRow { + double stroke; + double width; + double length; + double inset; + double where; + double scale; + double aspect; + int type; /* 0: old style arrow; 1: Jaxodraw style arrow */ + int adjust; /* whether the line length should be adjusted */ +} arrow; +double linesep = 0; +int flip = 0; +int clockwise = 0; + +void OutputString(char *); +void ArrowHead(); +void GetArrow(double *); +void BezierArrow(double *); +void ArcSegment(double,double,double); +double *ReadArray(char *,int *,int *); +double *ReadTail(char *,int *); +double LengthBezier(double,double,double,double,double,double,double); + +double M_pi; +double torad; +#define COS(x) cos((x)*torad) +#define SIN(x) sin((x)*torad) +#define TAN(x) tan((x)*torad) + +typedef void (*TFUN)(double *); + +typedef struct { + char *name; + TFUN func; + int numargs; + int colortype; +} KEYWORD; + +void GluonHelp(double *,double); +void DoubleGluonHelp(double *,double,double,double,double); +void GluonCircHelp(double *); +void GluonArcHelp(double *,double,double); +void PhotonHelp(double *,double); +void PhotonArcHelp(double *,double,int); +void ZigZagHelp(double *,double); +void ZigZagArcHelp(double *); +double ComputeDash(double *,double,double); +double ComputeDashCirc(double *,double); + +void ArrowArc(double *); +void ArrowArcn(double *); +void ArrowDoubleArc(double *); +void ArrowLine(double *); +void ArrowDoubleLine(double *); +void AxoArc(double *); +void AxoBezier(double *); +void AxoGluon(double *); +void AxoGluonArc(double *); +void AxoGluonCirc(double *); +void AxoLine(double *); +void AxoPhoton(double *); +void AxoPhotonArc(double *); +void AxoZigZag(double *); +void AxoZigZagArc(double *); +void BezierCurve(double *); +void Boxc(double *); +void CArc(double *); +void DashArrowArc(double *); +void DashArrowArcn(double *); +void DashArrowLine(double *); +void DashArrowDoubleArc(double *); +void DashArrowDoubleLine(double *); +void DashBezier(double *); +void DashCArc(double *); +void DashDoubleArc(double *); +void DashDoubleBezier(double *); +void DashDoubleLine(double *); +void DashDoublePhoton(double *); +void DashDoublePhotonArc(double *); +void DashDoubleZigZag(double *); +void DashDoubleZigZagArc(double *); +void DashGluon(double *); +void DashGluonArc(double *); +void DashGluonCirc(double *); +void DashPhoton(double *); +void DashPhotonArc(double *); +void DashZigZag(double *); +void DashZigZagArc(double *); +void DashLine(double *); +void DoubleArc(double *); +void DoubleBezier(double *); +void DoubleLine(double *); +void DoublePhoton(double *); +void DoublePhotonArc(double *); +void DoubleZigZag(double *); +void DoubleZigZagArc(double *); +void EBox(double *); +void EBoxc(double *); +void ECirc(double *); +void ETri(double *); +void FBox(double *); +void FBoxc(double *); +void FOval(double *); +void FTri(double *); +void GluonArc(double *); +void GluonCirc(double *); +void Gluon(double *); +void Grid(double *); +void LinAxis(double *); +void Line(double *); +void LogAxis(double *); +void Oval(double *); +void Photon(double *); +void PhotonArc(double *); +void Rotate(double *); +void Vertex(double *); +void ZigZag(double *); +void ZigZagArc(double *); + +void Curve(double *,int); +void DashCurve(double *,int); +void Polygon(double *,int,int); + +void Inivars(void); + +KEYWORD commands[] = { + { "Line", Line, 4, STROKING } + ,{ "ArrowArc", ArrowArc, 7, STROKING } + ,{ "ArrowArcn", ArrowArcn, 7, STROKING } + ,{ "ArrowDoubleArc", ArrowDoubleArc, 8, STROKING } + ,{ "ArrowLine", ArrowLine, 6, STROKING } + ,{ "ArrowDoubleLine", ArrowDoubleLine, 7, STROKING } + ,{ "AxoArc", AxoArc, 17, STROKING } + ,{ "AxoBezier", AxoBezier, 19, STROKING } + ,{ "AxoGluon", AxoGluon, 8, STROKING } + ,{ "AxoGluonArc", AxoGluonArc, 10, STROKING } + ,{ "AxoGluonCirc", AxoGluonCirc, 8, STROKING } + ,{ "AxoLine", AxoLine, 15, STROKING } + ,{ "AxoPhoton", AxoPhoton, 8, STROKING } + ,{ "AxoPhotonArc", AxoPhotonArc, 10, STROKING } + ,{ "AxoZigZag", AxoZigZag, 8, STROKING } + ,{ "AxoZigZagArc", AxoZigZagArc, 10, STROKING } + ,{ "Bezier", BezierCurve, 8, STROKING } + ,{ "Boxc", Boxc, 4, STROKING } + ,{ "CArc", CArc, 5, STROKING } + ,{ "DashArrowArc", DashArrowArc, 8, STROKING } + ,{ "DashArrowArcn", DashArrowArcn, 8, STROKING } + ,{ "DashArrowDoubleArc", DashArrowDoubleArc, 9, STROKING } + ,{ "DashArrowDoubleLine",DashArrowDoubleLine,8, STROKING } + ,{ "DashArrowLine", DashArrowLine, 7, STROKING } + ,{ "DashBezier", DashBezier, 9, STROKING } + ,{ "DashCArc", DashCArc, 6, STROKING } + ,{ "DashDoubleArc", DashDoubleArc, 7, STROKING } + ,{ "DashDoubleBezier", DashDoubleBezier, 10, STROKING } + ,{ "DashDoubleLine", DashDoubleLine, 6, STROKING } + ,{ "DashDoublePhoton", DashDoublePhoton, 8, STROKING } + ,{ "DashDoublePhotonArc",DashDoublePhotonArc,10, STROKING } + ,{ "DashDoubleZigZag", DashDoubleZigZag, 8, STROKING } + ,{ "DashDoubleZigZagArc",DashDoubleZigZagArc,10, STROKING } + ,{ "DashGluon", DashGluon, 7, STROKING } + ,{ "DashGluonArc", DashGluonArc, 10, STROKING } + ,{ "DashGluonCirc", DashGluonCirc, 7, STROKING } + ,{ "DashLine", DashLine, 5, STROKING } + ,{ "DashPhoton", DashPhoton, 7, STROKING } + ,{ "DashPhotonArc", DashPhotonArc, 10, STROKING } + ,{ "DashZigZag", DashZigZag, 7, STROKING } + ,{ "DashZigZagArc", DashZigZagArc, 10, STROKING } + ,{ "DoubleArc", DoubleArc, 6, STROKING } + ,{ "DoubleBezier", DoubleBezier, 9, STROKING } + ,{ "DoubleLine", DoubleLine, 5, STROKING } + ,{ "DoublePhoton", DoublePhoton, 7, STROKING } + ,{ "DoublePhotonArc", DoublePhotonArc, 8, STROKING } + ,{ "DoubleZigZag", DoubleZigZag, 7, STROKING } + ,{ "DoubleZigZagArc", DoubleZigZagArc, 8, STROKING } + ,{ "EBox", EBox, 4, STROKING } + ,{ "FBox", FBox, 4, STROKING } + ,{ "FBoxc", FBoxc, 4, STROKING } + ,{ "ECirc", ECirc, 3, STROKING } + ,{ "ETri", ETri, 6, STROKING } + ,{ "FOval", FOval, 5, NONSTROKING } + ,{ "FTri", FTri, 6, NONSTROKING } + ,{ "GluonArc", GluonArc, 7, STROKING } + ,{ "GluonCirc", GluonCirc, 6, STROKING } + ,{ "Gluon", Gluon, 6, STROKING } + ,{ "Grid", Grid, 6, STROKING } + ,{ "LinAxis", LinAxis, 8, STROKING } + ,{ "LogAxis", LogAxis, 7, STROKING } + ,{ "Oval", Oval, 5, STROKING } + ,{ "Photon", Photon, 6, STROKING } + ,{ "PhotonArc", PhotonArc, 7, STROKING } + ,{ "Rotate", Rotate, 7, NONSTROKING } + ,{ "Vertex", Vertex, 3, NONSTROKING } + ,{ "ZigZag", ZigZag, 6, STROKING } + ,{ "ZigZagArc", ZigZagArc, 7, STROKING } +}; + +/* + #] Defines : + #[ SetDefaults : +*/ + +void SetDefaults() +{ + lastlinefeed = 1; + axolinewidth = 0.5; + linesep = 0; + flip = 0; + clockwise = 0; + witharrow = 0; +} + +/* + #] SetDefaults : + #[ PDF utilities : + + These routines are included to make the program more readable and easier + to write. It also allows the easy use of the OutputString routine that + compactifies the output. +*/ + +#define Stroke outpos += sprintf(outpos," S") +#define CloseAndStroke outpos += sprintf(outpos," h S") +#define Fill outpos += sprintf(outpos," f") +#define CloseAndFill outpos += sprintf(outpos," h f") +#define SaveGraphicsState outpos += sprintf(outpos," q") +#define RestoreGraphicsState outpos += sprintf(outpos," Q") + +void Bezier(double x1,double y1,double x2,double y2,double x3,double y3) { + outpos += + sprintf(outpos,"\n %12.3f %12.3f %12.3f %12.3f %12.3f %12.3f c",x1,y1,x2,y2,x3,y3); +} + +void LineTo(double x1,double y1) { + outpos += + sprintf(outpos,"\n %12.3f %12.3f l",x1,y1); +} + +void MoveTo(double x1,double y1) { + outpos += + sprintf(outpos,"\n %12.3f %12.3f m",x1,y1); +} + +void SetLineWidth(double w) { + outpos += + sprintf(outpos," %12.3f w",w); +} + +void SetDashSize(double dashsize,double phase) { + if ( dashsize ) outpos += sprintf(outpos," [%12.3f] %12.3f d",dashsize,phase); + else outpos += sprintf(outpos," [] 0 d"); +} + +void SetTransferMatrix(double x11,double x12,double x21,double x22,double x,double y) +{ + if ( ( fabs(x11-1.) > 0.001 ) || ( fabs(x22-1.) > 0.001 ) + || ( fabs(x12) > 0.001 ) || ( fabs(x21) > 0.001 ) + || ( fabs(x) > 0.001 ) || ( fabs(y) > 0.001 ) ) { + outpos += + sprintf(outpos,"%12.3f %12.3f %12.3f %12.3f %12.3f %12.3f cm\n",x11,x12,x21,x22,x,y); + } +} + +static double BzK; + +void BezierCircle(double r,char *action) +{ + outpos += + sprintf(outpos," %12.3f 0 m %12.3f %12.3f %12.3f %12.3f 0 %12.3f c\n",-r,-r,r*BzK,-r*BzK,r,r); + outpos += + sprintf(outpos," %12.3f %12.3f %12.3f %12.3f %12.3f 0 c\n",r*BzK,r,r,r*BzK,r); + outpos += + sprintf(outpos," %12.3f %12.3f %12.3f %12.3f 0 %12.3f c\n",r,-r*BzK,r*BzK,-r,-r); + outpos += + sprintf(outpos," %12.3f %12.3f %12.3f %12.3f %12.3f 0 c %s\n",-r*BzK,-r,-r,-r*BzK,-r,action); +} + +void BezierOval(double w, double h, char *action) +{ + outpos += + sprintf(outpos," %12.3f 0 m %12.3f %12.3f %12.3f %12.3f 0 %12.3f c\n",-w,-w,h*BzK,-w*BzK,h,h); + outpos += + sprintf(outpos," %12.3f %12.3f %12.3f %12.3f %12.3f 0 c\n",w*BzK,h,w,h*BzK,w); + outpos += + sprintf(outpos," %12.3f %12.3f %12.3f %12.3f 0 %12.3f c\n",w,-h*BzK,w*BzK,-h,-h); + outpos += + sprintf(outpos," %12.3f %12.3f %12.3f %12.3f %12.3f 0 c %s\n",-w*BzK,-h,-w,-h*BzK,-w,action); +} + +void SetGray(double grayscale,int par) +{ + if ( par == STROKING ) { + outpos += sprintf(outpos," %12.3f G",grayscale); + } + else { + outpos += sprintf(outpos," %12.3f g",grayscale); + } +} + +void SetColor(double c, double m, double y, double k,int par) +{ + if ( par == STROKING ) { + outpos += sprintf(outpos," %12.3f %12.3f %12.3f %12.3f K",c,m,y,k); + } + else { + outpos += sprintf(outpos," %12.3f %12.3f %12.3f %12.3f k",c,m,y,k); + } +} + +void SetBackgroundColor(int par) +{ + if ( par == STROKING ) { outpos += sprintf(outpos," 0 0 0 0 K"); } + else { outpos += sprintf(outpos," 0 0 0 0 k"); } +} + +void Rectangle(double x,double y,double w,double h) { + outpos += sprintf(outpos,"\n %12.3f %12.3f %12.3f %12.3f re",x,y,w,h); +} + +void Triangle(double x1,double y1,double x2,double y2,double x3,double y3) { + outpos += + sprintf(outpos,"\n %12.3f %12.3f m %12.3f %12.3f l %12.3f %12.3f l h",x1,y1,x2,y2,x3,y3); +} + +/* + #] PDF utilities : + #[ Service routines : + #[ GetArrow : +*/ + +void GetArrow(double *args) +{ + witharrow = args[7]; + arrow.stroke = args[0]; + arrow.width = args[1]; + arrow.length = args[2]; + arrow.inset = args[3]; + arrow.scale = args[4]; + arrow.aspect = args[5]; + arrow.where = args[6]; + arrow.type = 1; + arrow.adjust = 0; + if ( args[8] ) flip = 1; + if ( witharrow ) { + if ( arrow.length == 0 && arrow.width == 0 ) { + arrow.width = (axolinewidth + 0.7*linesep + 1 ) * 1.2; + if (arrow.width < 2.5) arrow.width = 2.5; + arrow.length = 2*arrow.width*arrow.aspect; + } + else if ( arrow.width == 0 ) { + arrow.width = arrow.length/(2*arrow.aspect); + } + else if ( arrow.length == 0 ) { + arrow.length = 2*arrow.width*arrow.aspect; + } + arrow.width *= arrow.scale; + arrow.length *= arrow.scale; + if ( arrow.where > 1 ) { arrow.where = 1; arrow.adjust = 1; } + if ( arrow.where < 0 ) { arrow.where = 0; arrow.adjust = 1; } + } +} + +/* + #] GetArrow : + #[ ArrowHead : + + Places an arrowhead of a given size at 0 in the +x direction + The size: Full width is 2*size and full length is also 2*size. +*/ + +void ArrowHead() +/* + Jaxodraw style arrows +*/ +{ + int k; + double length; + SaveGraphicsState; + if ( flip ) length = -arrow.length; + else length = arrow.length; + SetDashSize(0,0); + if ( arrow.stroke ) { + SetLineWidth(arrow.stroke); + for (k = 1; k <= 2; k++ ) { + SaveGraphicsState; + MoveTo(length*0.5,0); + LineTo(-length*0.5,arrow.width); + LineTo(-length*0.5+length*arrow.inset,0); + LineTo(-length*0.5,-arrow.width); + if (k == 1) { + SetBackgroundColor(NONSTROKING); + outpos += sprintf(outpos," h f"); + } + else { + outpos += sprintf(outpos," s"); + } + RestoreGraphicsState; + } + } + else { + MoveTo(length*0.5,0); + LineTo(-length*0.5,arrow.width); + LineTo(-length*0.5+length*arrow.inset,0); + LineTo(-length*0.5,-arrow.width); + outpos += sprintf(outpos," h f"); + } + RestoreGraphicsState; +} + +/* + #] ArrowHead : + #[ BezierArrow : + + We compute the length of the curve. + Then we try to find the t value for which holds: + Length(t)/Length(1) = arrow.where +*/ + +void BezierArrow(double *args) +{ + double t,u,x,y,dx,dy,dr,len,tlen,tmin=0,tmax=1.0; + double x1=args[2]-args[0],x2=args[4]-args[0],x3=args[6]-args[0]; + double y1=args[3]-args[1],y2=args[5]-args[1],y3=args[7]-args[1]; + len = LengthBezier(x1,y1,x2,y2,x3,y3,1.0); + t = arrow.where; + tlen = LengthBezier(x1,y1,x2,y2,x3,y3,t); + while ( fabs(tlen/len-arrow.where) > 0.0001 ) { + if ( tlen/len > arrow.where ) { + tmax = t; + t = 0.5*(tmin+t); + } + else { + tmin = t; + t = 0.5*(tmax+t); + } + tlen = LengthBezier(x1,y1,x2,y2,x3,y3,t); + } + u = 1-t; + x = args[0]*u*u*u+(3*args[2]*u*u+(3*args[4]*u+args[6]*t)*t)*t; + y = args[1]*u*u*u+(3*args[3]*u*u+(3*args[5]*u+args[7]*t)*t)*t; + dx = 3*(-args[0]*u*u+args[2]*u*(1-3*t)+args[4]*t*(2-3*t)+args[6]*t*t); + dy = 3*(-args[1]*u*u+args[3]*u*(1-3*t)+args[5]*t*(2-3*t)+args[7]*t*t); + dr = sqrt(dx*dx+dy*dy); + SetTransferMatrix(1,0,0,1,x,y); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + ArrowHead(); +} + +/* + #] BezierArrow : + #[ ArcSegment : +*/ + +void ArcSegment(double r, double phi1, double dphi) +{ + double xphi, d, x, y, phia, phib, x1,y1,x2,y2,x3,y3; + int num, i; + + num = dphi/90.0001+1.; /* number of segments we should use. */ + xphi = dphi/num; /* arc size of each segment */ + d = 4.*TAN(xphi/4.)/3.; /* the magic distance for the control points */ + + x = r*COS(phi1); y = r*SIN(phi1); + MoveTo(x,y); + for ( i = 0; i < num; i++ ) { + phia = phi1+i*xphi; /* Start of segment */ + phib = phia+xphi; /* End of segment */ + x3 = r*COS(phib); y3 = r*SIN(phib); + x1 = x - y*d; y1 = y + x*d; + x2 = x3+y3*d; y2 = y3-x3*d; + + Bezier(x1,y1,x2,y2,x3,y3); + + x = x3; y = y3; + } +} + +/* + #] ArcSegment : + #[ ReadNumber : +*/ + +char *ReadNumber(char *s,double *num) +{ + double x3,minus = 1; + int x1,x2; + while ( *s == '+' || *s == '-' ) { + if ( *s == '-' ) minus = -minus; + s++; + } + x1 = x2 = 0; x3 = 1; + while ( *s <= '9' && *s >= '0' ) { x1 = 10*x1 + *s++ - '0'; } + if ( *s == 0 ) { *num = x1*minus; return(s); } + if ( *s == '.' ) { + s++; + while ( *s >= '0' && *s <= '9' ) { x2 = 10*x2 + *s++ - '0'; x3 *= 10; } + } + *num = minus*((double)x1 + x2/x3); + return(s); +} + +/* + #] ReadNumber : + #[ ReadArray : + + Reads a tail of floats of the type (x1,y1)(x2,y2),...,(xn,yn) or + (x1,y1)(x2,y2),...,(xn,yn) f1 ... fm + The floats may be written as integers. + Normally they are in the format ####.### + In num1 we return the number of coordinates encountered. + In num2 we return the number of extra floats encountered. + The array of the return value should be freed after it has been used. +*/ + +double *ReadArray(char *inbuf, int *num1, int *num2) +{ + int argsize = 0, newsize, num = 0, i; + double *args = 0, *newargs = 0, *extraargs, x, y; + char *s; + *num2 = 0; + s = inbuf; + while ( *s == ' ' || *s == '\t' || *s == '\n' ) s++; + if ( *s == '"' ) { + s++; + while ( *s == ' ' || *s == '\t' || *s == '\n' ) s++; + } + while ( *s == '(' ) { /* We need to read (x,y) */ + s++; + while ( *s == ' ' || *s == '\n' || *s == '\t' ) s++; + s = ReadNumber(s,&x); + while ( *s == ' ' ) s++; + if ( *s != ',' ) { + fprintf(stderr,"%s: Illegal format for array of numbers in object %ld of type %s in file %s\n" + ,axohelp,numobject,nameobject,inname); + free(args); + return(0); + } + s++; + while ( *s == ' ' || *s == '\n' || *s == '\t' ) s++; + s = ReadNumber(s,&y); + while ( *s == ' ' || *s == '\n' || *s == '\t' ) s++; + if ( *s != ')' ) { + fprintf(stderr,"%s: Illegal format for array of numbers in object %ld of type %s in file %s\n" + ,axohelp,numobject,nameobject,inname); + free(args); + return(0); + } + s++; + while ( *s == ' ' ) s++; + num += 2; + if ( num >= argsize ) { + if ( argsize == 0 ) newsize = 20; + else newsize = 2*argsize; + newargs = (double *)malloc(sizeof(double)*newsize); + if ( args == 0 ) { args = newargs; argsize = newsize; } + else { + for ( i = 0; i < argsize; i++ ) newargs[i] = args[i]; + free(args); + args = newargs; argsize = newsize; + } + } + args[num-2] = x; args[num-1] = y; + } + if ( *s == '"' ) s++; + while ( *s == ' ' || *s == '\t' || *s == '\n' ) s++; + *num1 = num/2; + + if ( *s ) { + if ( ( extraargs = ReadTail(s,num2) ) == 0 ) { + return(0); + } + if ( num+*num2 > argsize ) { + newargs = (double *)malloc(sizeof(double)*(num+*num2)); + for ( i = 0; i < num; i++ ) newargs[i] = args[i]; + free(args); + args = newargs; + argsize = num+*num2; + } + for ( i = 0; i < *num2; i++ ) args[num+i] = extraargs[i]; + free(extraargs); + } + return(args); +} + +/* + #] ReadArray : + #[ ReadTail : + + Reads a command tail that consists of floating point numbers in the + notation xxx.yyy or just as integers without even the decimal point. + The output array is allocated and should be returned in a well behaved + program. +*/ + +double *ReadTail(char *buff,int *number) +{ + char *s; + int num = 1, i; + double *outargs; + s = buff; + while ( *s ) { + if ( *s == ' ' || *s == '\t' || *s == '\n' ) { + num++; *s++ = 0; + while ( *s == ' ' || *s == '\t' || *s == '\n' ) *s++ = 0; + } + else s++; + } + outargs = (double *)malloc(num*sizeof(double)); + s = buff; + for ( i = 0; i < num; i++ ) { + while ( *s == 0 ) s++; + s = ReadNumber(s,outargs+i); + if ( *s == 'p' && s[1] == 't' ) s += 2; + if ( *s != 0 ) { + fprintf(stderr,"%s: Illegal format for number in command %ld (%s) in file %s.\n" + ,axohelp,numobject,nameobject,inname); + free(outargs); + return(0); + } + } + *number = num; + return(outargs); +} + +/* + #] ReadTail : + #[ DoCurve : + + Interpolation curve expressed as a Bezier curve. +*/ + +void DoCurve(double x0, double y0, double x1, double y1, + double x2, double y2, double x3, double y3) +{ + double xx1, yy1, xx2, yy2; + xx1 = (2*x1+x2)/3; + yy1 = ((y1-y0)/(x1-x0)*(x2-x0)+(y2-y0)/(x2-x0)*(x1-x0)+y1+2*y0)/3; + xx2 = (x1+2*x2)/3; + yy2 = ((y2-y3)/(x2-x3)*(x1-x3)+(y1-y3)/(x1-x3)*(x2-x3)+y2+2*y3)/3; + + Bezier(xx1,yy1,xx2,yy2,x2,y2); +} + +/* + #] DoCurve : + #[ LengthBezier : + + Routine computes the length of a Bezier curve. + Method: + x = x0*(1-t)^3+3*x1*t*(1-t)^2+3*x2*t^2*(1-t)+x3*t^3 + y = y0*(1-t)^3+3*y1*t*(1-t)^2+3*y2*t^2*(1-t)+y3*t^3 + We assume that x0=y0=0. (Hence call with x1-x0 etc) + --> dx/dt = 3*x1*(1-t)*(1-3*t)+3*x2*t*(2-3*t)+3*x3*t^2 + = 3*(x1+2*t*(x2-2*x1)+t^2*(x3-3*x2+3*x1)) + --> L = int_0^1 dt * sqrt(dx^2+dy^2) + We use ordinary Gaussian quadratures over the domain -1,...,+1 + + We have here quadratures for 8, 16 or 32 points. + For the moment we use the 16 point quadrature. It seems to work well. + The numbers were taken from Abramowitz and Stegun. +*/ + +typedef struct quad { + double x; + double w; +} QUAD; + +QUAD g8[4] = { + { 0.183434642495650, 0.362683783378362 } + ,{ 0.525532409916329, 0.313706645877887 } + ,{ 0.796666477413627, 0.222381034453374 } + ,{ 0.960289856497536, 0.101228536290376 } + }; +QUAD g16[8] = { + { 0.095012509837637440185, 0.189450610455068496285 } + ,{ 0.281603550779258913230, 0.182603415044923588867 } + ,{ 0.458016777657227386342, 0.169156519395002538189 } + ,{ 0.617876244402643748447, 0.149595988816576732081 } + ,{ 0.755404408355003033895, 0.124628971255533872052 } + ,{ 0.865631202387831743880, 0.095158511682492784810 } + ,{ 0.944575023073232576078, 0.062253523938647892863 } + ,{ 0.989400934991649932596, 0.027152459411754094852 } + }; +QUAD g32[16] = { + { 0.048307665687738316235, 0.096540088514727800567 } + ,{ 0.144471961582796493485, 0.095638720079274859419 } + ,{ 0.239287362252137074545, 0.093844399080804565639 } + ,{ 0.331868602282127649780, 0.091173878695763884713 } + ,{ 0.421351276130635345364, 0.087652093004403811143 } + ,{ 0.506899908932229390024, 0.083311924226946755222 } + ,{ 0.587715757240762329041, 0.078193895787070306472 } + ,{ 0.663044266930215200975, 0.072345794108848506225 } + ,{ 0.732182118740289680387, 0.065822222776361846838 } + ,{ 0.794483795967942406963, 0.058684093478535547145 } + ,{ 0.849367613732569970134, 0.050998059262376176196 } + ,{ 0.896321155766052123965, 0.042835898022226680657 } + ,{ 0.934906075937739689171, 0.034273862913021433103 } + ,{ 0.964762255587506430774, 0.025392065309262059456 } + ,{ 0.985611511545268335400, 0.016274394730905670605 } + ,{ 0.997263861849481563545, 0.007018610009470096600 } + }; + +double LengthBezier(double x1,double y1,double x2,double y2,double x3,double y3,double tmax) +{ + double xa = 3*x1, xb = 6*(x2-2*x1), xc = 3*(x3-3*x2+3*x1); + double ya = 3*y1, yb = 6*(y2-2*y1), yc = 3*(y3-3*y2+3*y1); + double t, sum = 0, dx, dy; + int j; + + for ( j = 0; j < 8; j++ ) { + t = 0.5*(1+g16[j].x)*tmax; + dx = xa+t*(xb+t*xc); + dy = ya+t*(yb+t*yc); + sum += 0.5*g16[j].w*sqrt(dx*dx+dy*dy); + t = 0.5*(1-g16[j].x)*tmax; + dx = xa+t*(xb+t*xc); + dy = ya+t*(yb+t*yc); + sum += 0.5*g16[j].w*sqrt(dx*dx+dy*dy); + } + return(sum*tmax); +} + +/* + #] LengthBezier : + #] Service routines : + #[ ScanForObjects : + + Routine reads the input buffer and sets up pointers to the commands. + Basically it is responsible for checking the input syntax and making + sure all commands will have the proper number of arguments. +*/ + +long ScanForObjects(char *buffer) +{ + char *s = buffer, *t; + if ( *s == COMMENTCHAR ) { while ( *s && *s != '\n' ) s++; } + while ( *s ) { /* here we are to look for a new command */ + if ( *s != '[' ) { /* for the case of the very first character */ + while ( *s && ( *s != '[' || ( *s == '[' && s[-1] == '\\' ) ) ) { + if ( *s == ' ' || *s == '\n' ) { + while ( *s == ' ' || *s == '\n' ) s++; /* Skip blank lines */ + } + else if ( *s == COMMENTCHAR && s[-1] != '\\' ) { + while ( *s && *s != '\n' ) s++; + } + else s++; + } + } + if ( *s == 0 ) break; +/* + if everything is correct we are now on a [ + a: look for matching ] in the same line. This defines the label. +*/ + t = s+1; + while ( *t && *t != ']' && *t != '\n' && ( *t != COMMENTCHAR || + ( *t == COMMENTCHAR && t[-1] != '\\' ) ) ) t++; + if ( *t == 0 ) { + fprintf(stderr,"%s: irregular end of file %s.\n",axohelp,inname); + return(-1); + } + else if ( *t == '\n' ) { + fprintf(stderr,"%s: a label in file %s should inside a single line.\n",axohelp,inname); + return(-1); + } + else if ( *t == COMMENTCHAR ) { + fprintf(stderr,"%s: illegal comment character inside a label in file %s.\n",axohelp,inname); + return(-1); + } + else if ( *t != ']' ) { + fprintf(stderr,"%s: internal error reading a label in file %s.\n",axohelp,inname); + return(-1); + } +/* + Store the address of this command +*/ + if ( numinputs >= inputallocations ) { /* we need more space */ + long newnum, i; + char **newadd; + if ( inputallocations == 0 ) { newnum = 100; } + else { newnum = 2*inputallocations; } + if ( ( newadd = (char **)malloc(newnum*sizeof(char *)) ) == 0 ) { + fprintf(stderr,"%s: memory error reading file %s\n",axohelp,inname); + return(-1); + } + for ( i = 0; i < inputallocations; i++ ) { newadd[i] = inputs[i]; } + if ( inputs != 0 ) free(inputs); + inputs = newadd; + inputallocations = newnum; + } + inputs[numinputs++] = s; +/* + Now scan for the first comment character. That is the end of the object. +*/ + while ( *t && ( *t != TERMCHAR || ( *t == TERMCHAR && t[-1] == '\\' ) ) + && *t != '[' ) t++; + if ( *t != '[' ) { + while ( t[-1] == ' ' || t[-1] == '\n' ) t--; + *t++ = 0; + } + s = t; + } + return(numinputs); +} + +/* + #] ScanForObjects : + #[ ReadInput : +*/ + +char *ReadInput(char *filename) +{ + FILE *finput; + long filesize, num; + char *buffer; + if ( ( finput = fopen(filename,"r") ) == 0 ) { + fprintf(stderr,"%s: Cannot open file %s\n",axohelp,filename); + exit(-1); + } + if ( ( fseek(finput,0,SEEK_END) != 0 ) + || ( ( filesize = ftell(finput) ) < 0 ) + || ( fseek(finput,0,SEEK_SET) != 0 ) ) { + fprintf(stderr,"%s: File error in file %s\n",axohelp,filename); + exit(-1); + } + if ( ( buffer = malloc((filesize+1)*sizeof(char)) ) == 0 ) { + fprintf(stderr,"%s: Error allocating %ld bytes of memory",axohelp,filesize+1); + exit(-1); + } +/* + Assume character in file is 1 byte, which is true for all cases + we currently encounter. +*/ + num = fread( buffer, 1, filesize, finput ); + if ( ferror(finput) ) { + fprintf(stderr,"%s: Error reading file %s\n",axohelp,filename); + exit(-1); + } +/* + By definition, fread reads ALL the items specified, or it gets to + end-of-file, or there is an error. + It returns the actual number of items successfully read, which + is less than the number given in the 3rd argument ONLY if a + read error or end-of-file is encountered. + We have already tested for an error. + But num could legitimately be less than filesize, because of + translation of CRLF to LF (on MSWindows with MSWindows text file). +*/ + buffer[num] = 0; + fclose(finput); + return(buffer); +} + +/* + #] ReadInput : + #[ CleanupOutput : +*/ + +void CleanupOutput(char *str) +{ + char *s, *t; + int period = 0; + s = t = str; + while ( *s && *s != '}' ) { + if ( *s == '\n' ) *s = ' '; + if ( ( *s == ' ' || *s == '\n' ) && ( s[1] == ' ' || s[1] == '\n' ) ) s++; + else *t++ = *s++; + } + while ( *s ) *t++ = *s++; + *t = 0; + s = t = str; + while ( *s ) { + if ( *s == '.' ) { period = 1; *t++ = *s++; } + else if ( *s == '-' && s[1] == '0' && s[2] == ' ' ) { s++; } + else if ( *s <= '9' && *s >= '0' ) { *t++ = *s++; } + else if ( *s == '\n' && ( t > str && t[-1] == '\n' ) ) { s++; } + else if ( period ) { + while ( t > str && t[-1] == '0' ) t--; + if ( t > str && t[-1] == '.' ) t--; + while ( *s == ' ' && s[1] == ' ' ) s++; + period = 0; *t++ = *s++; + } + else if ( *s == ' ' && s[1] == ' ' ) s++; + else { + period = 0; *t++ = *s++; + } + } + *t = 0; + s = t = str; + while ( *s ) { + if ( *s == '-' && s[1] == '0' && s[2] == ' ' ) { s++; } + else *t++ = *s++; + } + *t = 0; +} + +/* + #] CleanupOutput : + #[ DoOneObject : +*/ + +int DoOneObject(char *cinput) +{ + int num, i, num1, num2; + char *s, *t, *StartClean; + double *argbuf = 0; + SetDefaults(); + s = cinput; while ( *s != '[' ) s++; + s++; t = s; while ( *t != ']' ) t++; + *t++ = 0; while ( *t == ' ' || *t == '\t' || *t == '\n' ) t++; + outpos = outputbuffer; + outpos += sprintf(outpos,"\\axo@setObject{%s}%%\n{%s%c}%%\n{",s,t,TERMCHAR); + if ( *s == '0' && s[1] == ']' ) { +/* + The identification line. + In due time we might add more options here. +*/ + if ( strcmp(nameobject,"AxodrawWantsPDF") == 0 ) { + identification = 1; + outpos += sprintf(outpos,"Axohelp version %d.%d. PDF output.}",VERSION,SUBVERSION); + fprintf(outfile,"%s",outputbuffer); + return(0); + } + else { + fprintf(stderr,"%s: Illegal request in identification string [0]: %s\n" + ,axohelp,nameobject); + if ( argbuf ) free(argbuf); + return(-1); + } + } +/* + if ( identification == 0 ) { + fprintf(stderr,"%s: No identification string. Check versions.\n",axohelp); + if ( argbuf ) free(argbuf); + return(-1); + } +*/ + StartClean = outpos; + + nameobject = t; while ( *t != ' ' && *t != '\t' && *t != '\n' && *t ) t++; + *t++ = 0; while ( *t == ' ' || *t == '\t' || *t == '\n' ) t++; +/* + Now nameobject is the name of the command and t points at the first parameter. +*/ + if ( ( strcmp(nameobject,"Curve") == 0 ) + || ( strcmp(nameobject,"Polygon") == 0 ) + || ( strcmp(nameobject,"FilledPolygon") == 0 ) ) { +/* + #[ Curve,Polygons : +*/ + if ( ( argbuf = ReadArray(t,&num1,&num2) ) == 0 ) return(-1); + if ( num2-1 != 0 ) { + fprintf(stderr,"%s: Command %s should have no extra numbers in %s.\n", + axohelp,nameobject,inname); + free(argbuf); + return(-1); + } + else { +/* + First some 'fixed' operations to set the state right + 1: scale 2: linewidth 3: color + Then the function. + Finally the trailer and cleanup. +*/ + axolinewidth = argbuf[2*num1+num2-1]; + SetLineWidth(axolinewidth); + if ( strcmp(nameobject,"Curve") == 0 ) { + Curve(argbuf,num1); + } + else if ( strcmp(nameobject,"Polygon") == 0 ) { + Polygon(argbuf,num1,0); + } + else if ( strcmp(nameobject,"FilledPolygon") == 0 ) { + Polygon(argbuf,num1,1); + } + free(argbuf); + } +/* + #] Curve,Polygons : +*/ + } + else if ( strcmp(nameobject,"DashCurve") == 0 ) { +/* + #[ DashCurve : +*/ + if ( ( argbuf = ReadArray(t,&num1,&num2) ) == 0 ) return(-1); + if ( num2 != 2 ) { + fprintf(stderr,"%s: Command %s does not have two numbers after the coordinates\n in file %s.\n", + axohelp,nameobject,inname); + free(argbuf); + return(-1); + } + else { +/* + First some 'fixed' operations to set the state right + 1: scale 2: linewidth 3: color + Then the function. + Finally the trailer and cleanup. +*/ + axolinewidth = argbuf[2*num1+num2-1]; + SetLineWidth(axolinewidth); + DashCurve(argbuf,num1); + free(argbuf); + } +/* + #] DashCurve : +*/ + } + else { +/* + #[ Regular command : +*/ + if ( ( argbuf = ReadTail(t,&num) ) == 0 ) return(-1); + for ( i = 0; i < sizeof(commands)/sizeof(KEYWORD); i++ ) { + if ( strcmp(nameobject,commands[i].name) == 0 ) { + if ( num == commands[i].numargs+1 ) { +/* + First some 'fixed' operations to set the state right + 1: scale 2: linewidth 3: color + Then the function. + Finally the trailer and cleanup. +*/ + axolinewidth = argbuf[num-1]; + SetLineWidth(axolinewidth); + (*(commands[i].func))(argbuf); + free(argbuf); + break; + } + else { + fprintf(stderr,"%s: Command %s should have %d(+1) arguments in %s.\n" + ,axohelp,nameobject,commands[i].numargs,inname); + free(argbuf); + return(-1); + } + } + } +/* + #] Regular command : +*/ + if ( i >= sizeof(commands)/sizeof(KEYWORD) ) { + fprintf(stderr,"%s: Command %s not recognized in file %s.\n", + axohelp,nameobject,inname); + free(argbuf); + return(-1); + } + } + outpos += sprintf(outpos,"}\n"); + CleanupOutput(StartClean); + fprintf(outfile,"%s",outputbuffer); + return(0); +} + +/* + #] DoOneObject : + #[ PrintHelp : +*/ + +void PrintHelp(char *name) +{ + fprintf(stderr,"This is %s v. %d.%d of %s\n", NAME, VERSION, SUBVERSION, VERSIONDATE); + fprintf(stderr,"Usage: %s [OPTION] filename\n",name); + fprintf(stderr,"Input will then be from filename.ax1, output to filename.ax2.\n"); + fprintf(stderr,"-h, --help : prints this help information and terminates.\n"); + fprintf(stderr,"-v, --version : prints version information and terminates.\n"); + fprintf(stderr,"-V : prints information about each function treated in stdout.\n"); + fprintf(stderr," (NOT CURRENTLY IMPLEMENTED)\n\n"); + fprintf(stderr,"Please report bugs to jcc8@psu.edu.\n"); + fprintf(stderr,"axodraw2 web page: https://ctan.org/pkg/axodraw2\n"); +} + +/* + #] PrintHelp : + #[ PrintHelpPrompt : +*/ + +void PrintHelpPrompt(char *name) +{ + fprintf(stderr,"Try '%s --help' for more information.\n", name); +} + +/* + #] PrintHelpPrompt : + #[ Inivars : +*/ + +void Inivars() +{ + M_pi = acos(-1.); + torad = M_pi/180.; + BzK = 4.*(sqrt(2.)-1.)/3.; +} + +/* + #] Inivars : + #[ main : +*/ + +int main(int argc,char **argv) +{ + char *s, *inbuffer; + int length, error = 0; + long num,i; + + Inivars(); + argc--; + axohelp = *argv++; + if ( argc <= 0 ) { + PrintHelp(axohelp); + return -1; + } + while ( (*argv)[0] == '-' ) { /* we have options */ + s = *argv; + if ( s[1] == '-' ) { + /* Double "--", treat as "-" */ + s++; + } + if ( ( strcmp(s,"-h") == 0) || ( strcmp(s,"-help") == 0 ) ) { + PrintHelp(axohelp); + return 0; + } + else if ( ( strcmp(s,"-v") == 0 ) || ( strcmp(s,"-version") == 0 ) ) { + fprintf(stderr, + "%s %d.%d\n(release date %s)\n" + "Copyright 2018 John Collins and Jos Vermaseren.\n" + "License GPLv3+: GNU GPL version 3 or later .\n" + "There is NO WARRANTY, to the extent permitted by law.\n", + axohelp, VERSION, SUBVERSION, VERSIONDATE); + return 0; + } + else if ( strcmp( s, "-V" ) == 0 ) { + VerboseFlag = 1; + } + else { + fprintf(stderr,"%s: Illegal option %s\n", axohelp, *argv); + PrintHelpPrompt(axohelp); + return -1; + } + argc--; argv++; + if ( argc <= 0 ) { + fprintf(stderr,"%s: Not enough arguments\n",axohelp); + PrintHelpPrompt(axohelp); + return -1; + } + } + if ( argc != 1 ) { + fprintf(stderr,"%s: Too many arguments\n",axohelp); + PrintHelpPrompt(axohelp); + return -1; + } +/* + The filename is now in s. We copy it to a separate string and + paste on the extension .ax1 (if needed), and construct the + name of the output file. +*/ + s = *argv; + length = strlen(s); + inname = strcpy(malloc((length+5)*sizeof(char)),s); + outname = strcpy(malloc((length+5)*sizeof(char)),s); + s = inname + length; + if ( (length > 4) && (strcmp(s+length-4, ".ax1") == 0) ) { + outname[length-1] = '2'; + } + else { + strcpy( inname+length, ".ax1" ); + strcpy( outname+length, ".ax2" ); + } + if ( ( inbuffer = ReadInput(inname) ) == 0 ) return(-1); + if ( ( outfile = fopen(outname,"w") ) == 0 ) { + fprintf(stderr,"%s: Cannot create file %s\n",axohelp,outname); + exit(-1); + } + num = ScanForObjects(inbuffer); + for ( i = 0; i < num; i++ ) { + numobject = i+1; + if ( DoOneObject(inputs[i]) < 0 ) { error++; } + } + fclose(outfile); + if ( error > 0 ) { + fprintf(stderr,"%s: %d objects in %s were not translated correctly.\n", + axohelp,error,inname); + return(-1); + } + return(0); +} + +/* + #] main : + #[ routines : + #[ Line routines : + #[ Line : * + + Line(x1,y1)(x2,y2) +*/ + +void Line(double *args) +{ + MoveTo(args[0],args[1]); + LineTo(args[2],args[3]); + Stroke; +} + +/* + #] Line : + #[ DoubleLine : * + + DoubleLine(x1,y1)(x2,y2){sep} +*/ + +void DoubleLine(double *args) +{ + SaveGraphicsState; + if ( args[4] > 0 ) { + SetLineWidth(args[4]+axolinewidth); + Line(args); + SetLineWidth(args[4]-axolinewidth); + SetBackgroundColor(STROKING); + } + Line(args); + RestoreGraphicsState; +} + +/* + #] DoubleLine : + #[ DashLine : * + + DashLine(x1,y1)(x2,y2){dashsize} +*/ + +void DashLine(double *args) +{ + double dx = args[2]-args[0], dy = args[3]-args[1], dr = sqrt(dx*dx+dy*dy); + double dashsize = args[4]; + int num; + num = dr/dashsize; + if ( ( num%2 ) == 1 ) num++; + dashsize = dr/num; + SetDashSize(dashsize,dashsize/2); + Line(args); +} + +/* + #] DashLine : + #[ DashDoubleLine : * + + DashDoubleLine(x1,y1)(x2,y2){sep}{dashsize} +*/ + +void DashDoubleLine(double *args) +{ + double dx = args[2]-args[0], dy = args[3]-args[1], dr = sqrt(dx*dx+dy*dy); + double dashsize = args[5]; + int num; + num = dr/dashsize; + if ( ( num%2 ) == 1 ) num++; + dashsize = dr/num; + SetDashSize(dashsize,dashsize/2); + DoubleLine(args); +} + +/* + #] DashDoubleLine : + #[ ArrowLine : * + + ArrowLine(x1,y1)(x2,y2){size}{where} + + where: x of arrowhead is x1+where*(x2-x1). Same for y. + serves both ArrowLine and LongArrowLine +*/ + +void ArrowLine(double *args) +{ + double dx, dy, dr, where; + Line(args); + if ( arrow.type == 0 ) where = args[5]; + else where = arrow.where; + dx = args[2]-args[0]; + dy = args[3]-args[1]; + dr = sqrt(dx*dx+dy*dy); + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + SetTransferMatrix(1,0,0,1,dr*where,0); + if ( arrow.type == 0 ) arrow.width = args[4]; + ArrowHead(); +} + +/* + #] ArrowLine : + #[ ArrowDoubleLine : * + + ArrowDoubleLine(x1,y1)(x2,y2){sep}{size}{where} + + where: x of arrowhead is x1+where*(x2-x1). Same for y. + serves both ArrowLine and LongArrowLine +*/ + +void ArrowDoubleLine(double *args) +{ + double dx, dy, dr, where; + DoubleLine(args); + if ( arrow.type == 0 ) where = args[6]; + else where = arrow.where; + dx = args[2]-args[0]; + dy = args[3]-args[1]; + dr = sqrt(dx*dx+dy*dy); + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + SetTransferMatrix(1,0,0,1,dr*where,0); + if ( arrow.type == 0 ) arrow.width = args[5]+args[4]; + ArrowHead(); +} + +/* + #] ArrowDoubleLine : + #[ DashArrowLine : * + + DashArrowLine(x1,y1)(x2,y2){dashsize}{amplitude}{where} + + where: x of arrowhead is x1+where*(x2-x1). Same for y. + we re-adjust the position of the arrow to place it on a dash. +*/ + +void DashArrowLine(double *args) +{ + double dx = args[2]-args[0], dy = args[3]-args[1], dr = sqrt(dx*dx+dy*dy); + double dashsize = args[4], where; + int num, nw; + if ( arrow.type == 0 ) where = args[6]; + else where = arrow.where; + num = dr/dashsize; + if ( ( num%2 ) == 1 ) num++; + if ( num%4 != 0 && where > 0.499 && where < 0.501 ) num += 2; + dashsize = dr/num; + SetDashSize(dashsize,dashsize/2); + Line(args); + nw = where*(num/2)+0.5; + where = (2.0*nw)/num; + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + SetTransferMatrix(1,0,0,1,dr*where,0); + if ( arrow.type == 0 ) arrow.width = args[5]; + ArrowHead(); +} + +/* + #] DashArrowLine : + #[ DashArrowDoubleLine : * + + DashArrowDoubleLine(x1,y1)(x2,y2){sep}{dashsize}{amplitude}{where} + + where: x of arrowhead is x1+where*(x2-x1). Same for y. + we re-adjust the position of the arrow to place it on a dash. +*/ + +void DashArrowDoubleLine(double *args) +{ + double dx = args[2]-args[0], dy = args[3]-args[1], dr = sqrt(dx*dx+dy*dy); + double dashsize = args[5], where; + int num, nw; + if ( arrow.type == 0 ) where = args[7]; + else where = arrow.where; + num = dr/dashsize; + if ( ( num%2 ) == 1 ) num++; + if ( num%4 != 0 && where > 0.499 && where < 0.501 ) num += 2; + dashsize = dr/num; + SetDashSize(dashsize,dashsize/2); + DoubleLine(args); + nw = where*(num/2)+0.5; + where = (2.0*nw)/num; + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + SetTransferMatrix(1,0,0,1,dr*where,0); + if ( arrow.type == 0 ) arrow.width = args[6]+args[4]; + ArrowHead(); +} + +/* + #] DashArrowDoubleLine : + #] Line routines : + #[ Arc routines : + #[ CArc : * + + CArc(x1,y1)(r,phi1,phi2) + + The arc segment runs anticlockwise + + We divide the segment into a number of equal segments, each less + than 90 degrees. Then the control points are at distance + 4*tan(90/n)/3 from the endpoints, in which n=360/(phi2-phi1) + (note that if n=4 we get tan(22.5)=sqrt(2)-1). +*/ + +void CArc(double *args) +{ + double phi1 = args[3], phi2 = args[4], r = args[2]; + double dphi; + while ( phi2 < phi1 ) phi2 += 360; + dphi = phi2-phi1; + if ( dphi <= 0 ) { return; } + if ( dphi >= 360 ) { ECirc(args); return; } + SetTransferMatrix(1,0,0,1,args[0],args[1]); + ArcSegment(r,phi1,dphi); + Stroke; +} + +/* + #] CArc : + #[ DoubleArc : * + + DoubleArc(x1,y1)(r,phi1,phi2){sep} + + The arc segment runs anticlockwise + + We divide the segment into a number of equal segments, each less + than 90 degrees. Then the control points are at distance + 4*tan(90/n)/3 from the endpoints, in which n=360/(phi2-phi1) + (note that if n=4 we get tan(22.5)=sqrt(2)-1). +*/ + +void DoubleArc(double *args) +{ + double phi1 = args[3], phi2 = args[4], r = args[2]; + double dphi, sep = args[5]; + while ( phi2 < phi1 ) phi2 += 360; + dphi = phi2-phi1; + if ( dphi <= 0 ) { return; } + SetTransferMatrix(1,0,0,1,args[0],args[1]); + ArcSegment(r+sep/2,phi1,dphi); + Stroke; + ArcSegment(r-sep/2,phi1,dphi); + Stroke; +} + +/* + #] DoubleArc : + #[ DashCArc : * + + DashCArc(x1,y1)(r,phi1,phi2){dashsize} + + The arc segment runs anticlockwise +*/ + +void DashCArc(double *args) +{ + double arcsize = args[4]-args[3]; + double r = args[2], dr, dashsize = args[5]; + int num; + if ( arcsize <= 0 ) arcsize += 360; + if ( arcsize > 360 ) arcsize = 360; + dr = 2*M_pi*r*(arcsize/360); + num = dr/dashsize; + if ( (num%2) == 1 ) num++; + dashsize = dr/num; + SetDashSize(dashsize,dashsize/2); + CArc(args); +} + +/* + #] DashCArc : + #[ DashDoubleArc : * + + DashDoubleArc(x1,y1)(r,phi1,phi2){sep}{dashsize} + + The arc segment runs anticlockwise + The trouble here is to synchronize the two dash patterns. + This is done by a rescaling. We assume that the rescaling is + sufficiently small that the linewidth does not suffer from it. +*/ + +void DashDoubleArc(double *args) +{ + double phi1 = args[3], r = args[2]; + double arcsize = args[4]-args[3]; + double dr, dashsize = args[6], sep = args[5]; + int num; + linesep = sep; + SetTransferMatrix(1,0,0,1,args[0],args[1]); + if ( arcsize <= 0 ) arcsize += 360; + if ( arcsize > 360 ) arcsize = 360; + dr = 2*M_pi*r*(arcsize/360); + num = dr/dashsize; + if ( (num%2) == 1 ) num++; + dashsize = dr/num; + SetDashSize(dashsize,dashsize/2); + SaveGraphicsState; + SetTransferMatrix(1+0.5*sep/r,0,0,1+0.5*sep/r,0,0); + ArcSegment(r,phi1,arcsize); + Stroke; + RestoreGraphicsState; + SaveGraphicsState; + SetTransferMatrix(1-0.5*sep/r,0,0,1-0.5*sep/r,0,0); + ArcSegment(r,phi1,arcsize); + Stroke; + RestoreGraphicsState; +} + +/* + #] DashDoubleArc : + #[ ArrowArc : * + + ArrowArc(x1,y1)(r,phi1,phi2){amplitude}{where} + + where: phi of arrowhead is phi1+where*(phi2-phi1) + The arc segment runs anticlockwise + serves both ArrowArc and LongArrowArc and ... (Jaxodraw addition) +*/ + +void ArrowArc(double *args) +{ + double phi1 = args[3], phi2 = args[4], r = args[2]; + double dphi, x, y, phi; + if ( arrow.type == 0 ) { + arrow.width = args[5]; + arrow.where = args[6]; + } + + while ( phi2 < phi1 ) phi2 += 360; + dphi = phi2-phi1; + SetTransferMatrix(1,0,0,1,args[0],args[1]); + + if ( dphi <= 0 ) { return; } + ArcSegment(r,phi1,dphi); + Stroke; +/* + Now compute the position and angle of the arrowhead +*/ + phi = phi1 + arrow.where*dphi; + x = r*COS(phi); y = r*SIN(phi); + SetTransferMatrix(1,0,0,1,x,y); + SetTransferMatrix(COS(phi+90),SIN(phi+90),-SIN(phi+90),COS(phi+90),0,0); + ArrowHead(); +} + +/* + #] ArrowArc : + #[ ArrowDoubleArc : * + + ArrowDoubleArc(x1,y1)(r,phi1,phi2){sep}{amplitude}{where} + + where: phi of arrowhead is phi1+where*(phi2-phi1) + The arc segment runs anticlockwise + serves both ArrowArc and LongArrowArc and ... (Jaxodraw addition) +*/ + +void ArrowDoubleArc(double *args) +{ + double phi1 = args[3], phi2 = args[4], r = args[2]; + double dphi, x, y, phi; + linesep = args[5]; + while ( phi2 < phi1 ) phi2 += 360; + dphi = phi2-phi1; + if ( dphi <= 0 ) { return; } + SetTransferMatrix(1,0,0,1,args[0],args[1]); + ArcSegment(r+linesep/2,phi1,dphi); + Stroke; + ArcSegment(r-linesep/2,phi1,dphi); + Stroke; +/* + Now compute the position and angle of the arrowhead +*/ + if ( arrow.type == 0 ) { + arrow.width = args[6]; + arrow.where = args[7]; + } + phi = phi1 + arrow.where*dphi; + x = r*COS(phi); y = r*SIN(phi); + SetTransferMatrix(1,0,0,1,x,y); + SetTransferMatrix(COS(phi+90),SIN(phi+90),-SIN(phi+90),COS(phi+90),0,0); + ArrowHead(); +} + +/* + #] ArrowDoubleArc : + #[ DashArrowArc : + + + DashArrowArc(x1,y1)(r,phi1,phi2){dashsize}{amplitude}{where} + + where: phi of arrowhead is phi1+where*(phi2-phi1) + The arc segment runs anticlockwise +*/ + +void DashArrowArc(double *args) +{ + double dphi, x, y, phi, phi1 = args[3], phi2 = args[4]; + double r = args[2], dr, dashsize = args[5]; + int num; + if ( arrow.type == 0 ) { + arrow.width = args[6]; + arrow.where = args[7]; + } + + while ( phi2 < phi1 ) phi2 += 360; + dphi = phi2-phi1; + if ( dphi > 360 ) dphi = 360; + dr = 2*M_pi*r*(dphi/360); + num = dr/dashsize; + if ( (num%2) == 1 ) num++; + if ( num%4 != 0 && arrow.where > 0.499 && arrow.where < 0.501 ) num += 2; + dashsize = dr/num; + SetDashSize(dashsize,dashsize/2); + SetTransferMatrix(1,0,0,1,args[0],args[1]); + if ( dphi <= 0 ) { return; } + ArcSegment(r,phi1,dphi); + Stroke; +/* + Now compute the position and angle of the arrowhead +*/ + phi = phi1 + arrow.where*dphi; + x = r*COS(phi); y = r*SIN(phi); + SetTransferMatrix(1,0,0,1,x,y); + SetTransferMatrix(COS(phi+90),SIN(phi+90),-SIN(phi+90),COS(phi+90),0,0); + ArrowHead(); +} + +/* + #] DashArrowArc : + #[ DashArrowDoubleArc : + + + DashArrowDoubleArc(x1,y1)(r,phi1,phi2){sep}{dashsize}{amplitude}{where} + + where: phi of arrowhead is phi1+where*(phi2-phi1) + The arc segment runs anticlockwise +*/ + +void DashArrowDoubleArc(double *args) +{ + double dphi, x, y, phi, phi1 = args[3], phi2 = args[4]; + double r = args[2], dr, dashsize = args[6]; + int num; + linesep = args[5]; + if ( arrow.type == 0 ) { + arrow.width = args[7]; + arrow.where = args[8]; + } + + while ( phi2 < phi1 ) phi2 += 360; + dphi = phi2-phi1; + if ( dphi > 360 ) dphi = 360; + dr = 2*M_pi*r*(dphi/360); + num = dr/dashsize; + if ( (num%2) == 1 ) num++; + if ( num%4 != 0 && arrow.where > 0.499 && arrow.where < 0.501 ) num += 2; + dashsize = dr/num; + SetDashSize(dashsize,dashsize/2); + SetTransferMatrix(1,0,0,1,args[0],args[1]); + if ( dphi <= 0 ) { return; } + SaveGraphicsState; + SetTransferMatrix(1+0.5*linesep/r,0,0,1+0.5*linesep/r,0,0); + ArcSegment(r,phi1,dphi); + Stroke; + RestoreGraphicsState; + SaveGraphicsState; + SetTransferMatrix(1-0.5*linesep/r,0,0,1-0.5*linesep/r,0,0); + ArcSegment(r,phi1,dphi); + Stroke; + RestoreGraphicsState; +/* + Now compute the position and angle of the arrowhead +*/ + phi = phi1 + arrow.where*dphi; + x = r*COS(phi); y = r*SIN(phi); + SetTransferMatrix(1,0,0,1,x,y); + SetTransferMatrix(COS(phi+90),SIN(phi+90),-SIN(phi+90),COS(phi+90),0,0); + ArrowHead(); +} + +/* + #] DashArrowDoubleArc : + #[ ArrowArcn : + + + ArrowArcn(x1,y1)(r,phi1,phi2){amplitude}{where} + + where: phi of arrowhead is phi1+where*(phi2-phi1) + The arc segment runs clockwise +*/ + +void ArrowArcn(double *args) +{ + double newargs[7], a; + int i; + for ( i = 0; i < 7; i++ ) newargs[i] = args[i]; + newargs[6] = 1-newargs[6]; + a = newargs[3]; newargs[3] = newargs[4]; newargs[4] = a; + ArrowArc(newargs); +} + +/* + #] ArrowArcn : + #[ DashArrowArcn : + + + DashArrowArc(x1,y1)(r,phi1,phi2){amplitude}{where}{dashsize} + + where: phi of arrowhead is phi1+where*(phi2-phi1) + The arc segment runs clockwise +*/ + +void DashArrowArcn(double *args) +{ + double newargs[8], a; + int i; + for ( i = 0; i < 8; i++ ) newargs[i] = args[i]; + newargs[6] = 1-newargs[6]; + a = newargs[3]; newargs[3] = newargs[4]; newargs[4] = a; + DashArrowArc(newargs); +} + +/* + #] DashArrowArcn : + #] Arc routines : + #[ Circle routines : + #[ ECirc : + + + ECirc(x,y){radius} + Draws a circle +*/ + +void ECirc(double *args) +{ + SetTransferMatrix(1,0,0,1,args[0],args[1]); + BezierCircle(args[2],"S"); +} + +/* + #] ECirc : + #[ FOval : + + + FOval(x1,y1)(h,w) filled oval in default color + +*/ + +void FOval(double *args) +{ + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of oval */ + SetTransferMatrix(COS(args[4]),SIN(args[4]),-SIN(args[4]),COS(args[4]),0,0); + BezierOval(args[3],args[2],"f"); + BezierOval(args[3],args[2],"S"); +} + +/* + #] COval : + #[ Oval : + + + Oval(x1,y1)(h,w)(phi) + + One way would be with different scales in the x and y direction, + but that messes up the linewidth. + We need to describe quarter ovals with Bezier curves. The proper + parameters for the curves we can obtain from the circle with scaling. +*/ + +void Oval(double *args) +{ + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of oval */ + SetTransferMatrix(COS(args[4]),SIN(args[4]),-SIN(args[4]),COS(args[4]),0,0); + BezierOval(args[3],args[2],"S"); +} + +/* + #] Oval : + #] Circle routines : + #[ Box routines : + #[ EBox : * + + \EBox(#1,#2)(#3,#4) + + Draws a box with the left bottom at (x1,y1) and the right top + at (x2,y2). + Transparent interior. Current color for edge. +*/ + +void EBox(double *args) +{ + Rectangle(args[0],args[1],args[2]-args[0],args[3]-args[1]); + Stroke; +} + +/* + #] EBox : + #[ FBox : * + + \FBox(#1,#2)(#3,#4) + + Draws a filled box with the left bottom at (x1,y1) and + the right top at (x2,y2). + Current color. +*/ + +void FBox(double *args) +{ + Rectangle(args[0],args[1],args[2]-args[0],args[3]-args[1]); + Fill; +} + +/* + #] FBox : + #[ Boxc : * + + \Boxc(#1,#2)(#3,#4) + + Draws a transparent box with the center at (x1,y1). + The width and height are (3,4). Uses current color. +*/ + +void Boxc(double *args) +{ + Rectangle(args[0]-args[2]/2,args[1]-args[3]/2,args[2],args[3]); + Stroke; +} + +/* + #] Boxc : + #[ FBoxc : * + + \FBoxc(#1,#2)(#3,#4) + + Draws a filled box with the center at (x1,y1). + The width and height are (3,4). Uses current color. +*/ + +void FBoxc(double *args) +{ + Rectangle(args[0]-args[2]/2,args[1]-args[3]/2,args[2],args[3]); + Fill; +} + +/* + #] FBoxc : + #] Box routines : + #[ Triangle routines : + #[ ETri : * + + \ETri(#1,#2)(#3,#4)(#5,#6) + + Draws a triangle with the three corners. +*/ + +void ETri(double *args) +{ + Triangle(args[0],args[1],args[2],args[3],args[4],args[5]); + Stroke; +} + +/* + #] ETri : + #[ FTri : * + + \FTri(#1,#2)(#3,#4)(#5,#6) + + Draws a triangle with the three corners. +*/ + +void FTri(double *args) +{ + Triangle(args[0],args[1],args[2],args[3],args[4],args[5]); + Fill; +} + +/* + #] FTri : + #] Triangle routines : + #[ Particle routines : + #[ Vertex : + + + Vertex(x,y){radius} + Draws a filled circle +*/ + +void Vertex(double *args) +{ + SetTransferMatrix(1,0,0,1,args[0],args[1]); + BezierCircle(args[2],"f"); +} + +/* + #] Vertex : + #[ ComputeDash : +*/ + +double ComputeDash(double *args,double dr,double indash) +{ + int numwindings = args[5]+0.5, numdashes; + int numhalfwindings = 2*numwindings+2.1; + double onehalfwinding = dr/numhalfwindings; + double amp8 = fabs(args[4])*0.9; + double size = LengthBezier(-amp8,0, -amp8,2*args[4], onehalfwinding,2*args[4],1.0); + + numdashes = size/(2*indash); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*indash*numdashes) > fabs(size-2*indash*(numdashes+1)) ) + numdashes++; + return(size/(2*numdashes)); +} + +/* + #] ComputeDash : + #[ ComputeDashCirc : +*/ + +double ComputeDashCirc(double *args,double indash) +{ + int num = args[5]+0.5, numdashes; + double ampi = args[4], radius = args[2]; + double darc; + double dr,conv,inc; + double amp1,amp2,amp4,amp5,amp8; + double x0,x1,x2,x3,y0,y1,y2,y3,xx,size; + darc = 360.; + dr = darc*torad*radius; + conv = 1.0/radius; + inc = dr/(2*num); /* increment per half winding */ + amp8 = ampi*0.9; + amp1 = radius+ampi; + amp2 = radius-ampi; + amp4 = amp1/cos((inc+amp8)*conv); + amp5 = amp2/cos(amp8*conv); + if ( amp8 < 0 ) amp8 = -amp8; + xx = 2*inc; + x0 = amp1*cos(inc*conv); + y0 = amp1*sin(inc*conv); + x1 = amp4*cos((xx+amp8)*conv)-x0; + y1 = amp4*sin((xx+amp8)*conv)-y0; + x2 = amp5*cos((xx+amp8)*conv)-x0; + y2 = amp5*sin((xx+amp8)*conv)-y0; + x3 = amp2*cos(xx*conv)-x0; + y3 = amp2*sin(xx*conv)-y0; + size = LengthBezier(x1,y1,x2,y2,x3,y3,1.0); + numdashes = size/(2*indash); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*indash*numdashes) > fabs(size-2*indash*(numdashes+1)) ) + numdashes++; + return(size/(2*numdashes)); +} + +/* + #] ComputeDashCirc : + #[ ComputeDashPhotonArc : +*/ + +double ComputeDashPhotonArc(double *args,double darc,double dashsize,double *dashstart) +{ + int numdashes, numd; + double len1, len2, size, size2, ampli = args[5], radius = args[2]; + double cp = cos(darc); + double sp = sin(darc); + double cp2 = cos(darc/2.); + double sp2 = sin(darc/2.); + double beta = radius*darc/(M_pi*ampli); + double tt = (sp-cp*beta)/(cp+sp*beta); + double x2 = ((radius+ampli)*8*(beta*cp2-sp2)-(beta*(4+cp) + +(tt*cp*3.-sp*4.))*radius)/((beta-tt)*3.); + double x1 = ((radius+ampli)*8.*cp2-(1+cp)*radius)/3.-x2; + double y1 = (x1-radius)*beta; + double y2 = (x2-radius*cp)*tt+radius*sp; + double x3 = radius*cp; + double y3 = radius*sp; + len1 = LengthBezier(x1-radius,y1,x2-radius,y2,x3-radius,y3,1.0); + ampli = -ampli; + beta = radius*darc/(M_pi*ampli); + tt = (sp-cp*beta)/(cp+sp*beta); + x2 = ((radius+ampli)*8*(beta*cp2-sp2)-(beta*(4+cp) + +(tt*cp*3.-sp*4.))*radius)/((beta-tt)*3.); + x1 = ((radius+ampli)*8.*cp2-(1+cp)*radius)/3.-x2; + y1 = (x1-radius)*beta; + y2 = (x2-radius*cp)*tt+radius*sp; + x3 = radius*cp; + y3 = radius*sp; + len2 = LengthBezier(x1-radius,y1,x2-radius,y2,x3-radius,y3,1.0); + size = (len1+len2)/2; + size2 = len1/2; + numdashes = size/(2*dashsize); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*dashsize*numdashes) > fabs(size-2*dashsize*(numdashes+1)) ) + numdashes++; + dashsize = size/(2*numdashes); + numd = size2/(2*dashsize); + *dashstart = -(size2 - 2*numd*dashsize) + dashsize/2; + if ( *dashstart < 0 ) *dashstart += 2*dashsize; + return(dashsize); +} + +/* + #] ComputeDashPhotonArc : + #[ ComputeDashGluonArc : +*/ + +double ComputeDashGluonArc(double *args,double darc,double dashsize) +{ + int numdashes, num = args[6]; + double radius = args[2], ampi = args[5]; + double dr,conv,inc, size; + double amp1,amp2,amp4,amp5,amp8; + double x1,x2,x3,y1,y2,y3,xx,x3p,y3p; + dr = darc*torad*radius; + conv = 1.0/radius; + inc = dr/(2*num+2); /* increment per half winding */ + amp8 = ampi*0.9; + amp1 = radius+ampi; + amp2 = radius-ampi; + amp4 = amp1/cos((inc+amp8)*conv); + amp5 = amp2/cos(amp8*conv); + if ( amp8 < 0 ) amp8 = -amp8; + + xx = 2*inc; + x3p = amp2*cos(xx*conv); + y3p = amp2*sin(xx*conv); + x1 = amp5*cos((xx-amp8)*conv)-x3p; + y1 = amp5*sin((xx-amp8)*conv)-y3p; + x2 = amp4*cos((xx-amp8)*conv)-x3p; + y2 = amp4*sin((xx-amp8)*conv)-y3p; + x3 = amp1*cos((xx+inc)*conv)-x3p; + y3 = amp1*sin((xx+inc)*conv)-y3p; + size = LengthBezier(x1,y1,x2,y2,x3,y3,1.0); + + numdashes = size/(2*dashsize); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*dashsize*numdashes) > fabs(size-2*dashsize*(numdashes+1)) ) + numdashes++; + dashsize = size/(2*numdashes); + return(dashsize); +} + +/* + #] ComputeDashGluonArc : + #[ GluonHelp : + + We draw the gluon in two strokes. This is due to the possibility + of a dash pattern. We want the dashes to be nicely symmetric on + the central windings. That means that either the start and end need + a different size dashes, or we draw the start 'backwards'. + We have chosen for the last solution. +*/ + +void GluonHelp(double *args,double dr) +{ + int numwindings = args[5]+0.5; + int numhalfwindings = 2*numwindings+2.1; + double onehalfwinding = dr/numhalfwindings; + double amp8 = fabs(args[4])*0.9; + double xx = 2*onehalfwinding; + int i; + MoveTo(xx,-args[4]); + Bezier(xx+amp8,-args[4],xx+amp8,args[4],1.4*onehalfwinding,args[4]); + Bezier(0.5*onehalfwinding,args[4], + 0.1*onehalfwinding,args[4]*0.5,0,0); + Stroke; + MoveTo(xx,-args[4]); + for ( i = 0; i < numwindings-1; i++ ) { + Bezier(xx-amp8,-args[4], xx-amp8,args[4], xx+onehalfwinding,args[4]); + xx += 2*onehalfwinding; + Bezier(xx+amp8,args[4], xx+amp8,-args[4], xx,-args[4]); + } + Bezier(xx-amp8,-args[4], xx-amp8,args[4], xx+onehalfwinding*0.6,args[4]); + Bezier(dr-onehalfwinding*0.5,args[4], + dr-onehalfwinding*0.1,args[4]*0.5, + dr,0); + Stroke; +} + +/* + #] GluonHelp : + #[ GluonCircHelp : +*/ + +void GluonCircHelp(double *args) +{ + int num = args[5], i; + double ampi = args[4], radius = args[2]; + double darc; + double dr,conv,inc; + double amp1,amp2,amp4,amp5,amp8; + double x1,x2,x3,y1,y2,y3,xx; + darc = 360.; + dr = darc*torad*radius; + conv = 1.0/radius; + inc = dr/(2*num); /* increment per half winding */ + amp8 = ampi*0.9; + amp1 = radius+ampi; + amp2 = radius-ampi; + amp4 = amp1/cos((inc+amp8)*conv); + amp5 = amp2/cos(amp8*conv); + if ( amp8 < 0 ) amp8 = -amp8; + xx = 2*inc; + x3 = amp1*cos(inc*conv); + y3 = amp1*sin(inc*conv); + MoveTo(x3,y3); +/* + Now the loop +*/ + for ( i = 0; i < num; i++ ) { + x1 = amp4*cos((xx+amp8)*conv); + y1 = amp4*sin((xx+amp8)*conv); + x2 = amp5*cos((xx+amp8)*conv); + y2 = amp5*sin((xx+amp8)*conv); + x3 = amp2*cos(xx*conv); + y3 = amp2*sin(xx*conv); + Bezier(x1,y1,x2,y2,x3,y3); + x1 = amp5*cos((xx-amp8)*conv); + y1 = amp5*sin((xx-amp8)*conv); + x2 = amp4*cos((xx-amp8)*conv); + y2 = amp4*sin((xx-amp8)*conv); + x3 = amp1*cos((xx+inc)*conv); + y3 = amp1*sin((xx+inc)*conv); + Bezier(x1,y1,x2,y2,x3,y3); + xx += 2*inc; + } + Stroke; +} + +/* + #] GluonCircHelp : + #[ GluonArcHelp : +*/ + +void GluonArcHelp(double *args, double darc, double ampi) +{ + int num = args[6], i; + double radius = args[2]; + double dr,conv,inc; + double amp1,amp2,amp3,amp4,amp5,amp6,amp7,amp8; + double x1,x2,x3,y1,y2,y3,xx,x1p,y1p,x2p,y2p,x3p,y3p; + dr = darc*torad*radius; + conv = 1.0/radius; + inc = dr/(2*num+2); /* increment per half winding */ + amp8 = ampi*0.9; + amp1 = radius+ampi; + amp2 = radius-ampi; + amp3 = radius+ampi/2; + amp4 = amp1/cos((inc+amp8)*conv); + amp5 = amp2/cos(amp8*conv); + amp6 = amp1/cos((inc*0.6+amp8)*conv); + amp7 = amp1/cos(inc*0.9*conv); + if ( amp8 < 0 ) amp8 = -amp8; + xx = 2*inc; +/* + First the starting part. We draw it separately because there could + be a dashing pattern. This way the windings come out best. +*/ + x1 = amp3*cos(inc*0.1*conv); + y1 = amp3*sin(inc*0.1*conv); + x2 = amp7*cos(inc*0.5*conv); + y2 = amp7*sin(inc*0.5*conv); + x3 = amp1*cos(inc*1.4*conv); + y3 = amp1*sin(inc*1.4*conv); + x1p = amp6*cos((xx+amp8)*conv); + y1p = amp6*sin((xx+amp8)*conv); + x2p = amp5*cos((xx+amp8)*conv); + y2p = amp5*sin((xx+amp8)*conv); + x3p = amp2*cos(xx*conv); + y3p = amp2*sin(xx*conv); + MoveTo(x3p,y3p); + Bezier(x2p,y2p,x1p,y1p,x3,y3); + Bezier(x2,y2,x1,y1,radius,0); + Stroke; +/* + Now the loop +*/ + MoveTo(x3p,y3p); + for ( i = 1; i < num; i++ ) { + x1 = amp5*cos((xx-amp8)*conv); + y1 = amp5*sin((xx-amp8)*conv); + x2 = amp4*cos((xx-amp8)*conv); + y2 = amp4*sin((xx-amp8)*conv); + x3 = amp1*cos((xx+inc)*conv); + y3 = amp1*sin((xx+inc)*conv); + Bezier(x1,y1,x2,y2,x3,y3); + xx += 2*inc; + x1 = amp4*cos((xx+amp8)*conv); + y1 = amp4*sin((xx+amp8)*conv); + x2 = amp5*cos((xx+amp8)*conv); + y2 = amp5*sin((xx+amp8)*conv); + x3 = amp2*cos(xx*conv); + y3 = amp2*sin(xx*conv); + Bezier(x1,y1,x2,y2,x3,y3); + } +/* + And now the end point +*/ + x1 = amp5*cos((xx-amp8)*conv); + y1 = amp5*sin((xx-amp8)*conv); + x2 = amp6*cos((xx-amp8)*conv); + y2 = amp6*sin((xx-amp8)*conv); + x3 = amp1*cos((xx+inc*0.6)*conv); + y3 = amp1*sin((xx+inc*0.6)*conv); + Bezier(x1,y1,x2,y2,x3,y3); + x1 = amp7*cos((xx+inc*1.5)*conv); + y1 = amp7*sin((xx+inc*1.5)*conv); + x2 = amp3*cos((dr-inc*0.1)*conv); + y2 = amp3*sin((dr-inc*0.1)*conv); + x3 = radius*cos(dr*conv); + y3 = radius*sin(dr*conv); + + Bezier(x1,y1,x2,y2,x3,y3); + + Stroke; +} + +/* + #] GluonArcHelp : + #[ PhotonHelp : +*/ + +void PhotonHelp(double *args, double dr) +{ + int numhalfwindings = args[5]*2+0.5; + double onehalfwinding = dr/numhalfwindings; + double y = 4.*args[4]/3; + double x, xx; + int i; + MoveTo(0,0); +/* + Now loop over the half windings, alternating the sign of the y's +*/ + x = (4*onehalfwinding)/3/M_pi; xx = 0; + for ( i = 0; i < numhalfwindings; i++, y = -y ) { + Bezier(xx+x,y, xx+onehalfwinding-x,y, xx+onehalfwinding,0); + xx += onehalfwinding; + } + Stroke; +} +/* + #] PhotonHelp : + #[ PhotonArcHelp : +*/ + +void PhotonArcHelp(double *args,double arcend,int num) +{ + int i; + double ampli = args[5], radius = args[2]; + double cp,sp,cp2,sp2,cpi,spi; + double x1,x2,x3,y1,y2,y3,beta,tt; + + cp = cos(arcend); + sp = sin(arcend); + cp2 = cos(arcend/2.); + sp2 = sin(arcend/2.); + + MoveTo(radius,0); + for ( i = 0; i < num; i++, ampli = -ampli ) { + cpi = cos(i*arcend); + spi = sin(i*arcend); + beta = radius*arcend/(M_pi*ampli); + tt = (sp-cp*beta)/(cp+sp*beta); + x2 = ((radius+ampli)*8*(beta*cp2-sp2)-(beta*(4+cp) + +(tt*cp*3.-sp*4.))*radius)/((beta-tt)*3.); + x1 = ((radius+ampli)*8.*cp2-(1+cp)*radius)/3.-x2; + y1 = (x1-radius)*beta; + y2 = (x2-radius*cp)*tt+radius*sp; + x3 = radius*cp; + y3 = radius*sp; + Bezier(cpi*x1-spi*y1,cpi*y1+spi*x1, + cpi*x2-spi*y2,cpi*y2+spi*x2, + cpi*x3-spi*y3,cpi*y3+spi*x3); + } + Stroke; +} + +/* + #] PhotonArcHelp : + #[ ZigZagHelp : +*/ + +void ZigZagHelp(double *args, double dr) +{ + int numhalfwindings = args[5]*2+0.5; + double onehalfwinding = dr/numhalfwindings; + double x = onehalfwinding, y = args[4]; + int i; + MoveTo(0,0); +/* + Now loop over the half windings, alternating the sign of the y's +*/ + for ( i = 0; i < numhalfwindings; i++, y = -y ) { + LineTo(x-onehalfwinding/2.,y); LineTo(x,0); + x += onehalfwinding; + } + Stroke; +} + +/* + #] ZigZagHelp : + #[ ZigZagArcHelp : +*/ + +void ZigZagArcHelp(double *args) +{ + int num = 2*args[6]-0.5, i; + double amp = args[5], r = args[2]; + double arcstart = args[3], arcend = args[4], darc; + if ( arcend < arcstart ) arcend += 360.; + darc = (arcend-arcstart)/(num+1); + MoveTo(r*COS(arcstart),r*SIN(arcstart)); + arcstart += darc/2; + for ( i = 0; i <= num; i++, amp = -amp ) { + LineTo((r+amp)*COS(arcstart+darc*i),(r+amp)*SIN(arcstart+darc*i)); + } + LineTo(r*COS(arcend),r*SIN(arcend)); + Stroke; +} + +/* + #] ZigZagArcHelp : + #[ Gluon : * + + Gluon(x1,y1)(x2,y2){amplitude}{windings} + + Each half winding is one cubic Bezier curve. + In addition the end points are different Bezier curves. +*/ + +void Gluon(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + GluonHelp(args,dr); +} + +/* + #] Gluon : + #[ DashGluon : * + + DashGluon(x1,y1)(x2,y2){amplitude}{windings}{dashsize} + + Each half winding is one cubic Bezier curve. + In addition the end points are different Bezier curves. +*/ + +void DashGluon(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + double dashsize; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + + dashsize = ComputeDash(args,dr,args[6]); + SetDashSize(dashsize,dashsize/2); + GluonHelp(args,dr); +} + +/* + #] DashGluon : + #[ GluonCirc : * + + GluonCirc(x1,y1)(r,phi){amplitude}{windings} + + Draws a gluon on a circle + x_center,y_center,radius,phase_angle,gluon_radius,num + in which num is the number of windings of the gluon. + Method: Same as GluonArc, but without special start and end +*/ + +void GluonCirc(double *args) +{ + int num = args[5]; + double arcstart = args[3]; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + + arcstart += 360./(2*num); /* extra phase to make 0 angle more accessible */ + + SetTransferMatrix(COS(arcstart),SIN(arcstart) + ,-SIN(arcstart),COS(arcstart),0,0); + + GluonCircHelp(args); +} + +/* + #] GluonCirc : + #[ DashGluonCirc : * + + DashGluonCirc(x1,y1)(r,phi){amplitude}{windings}{dashsize} + + Draws a gluon on a circle + x_center,y_center,radius,phase_angle,gluon_radius,num + in which num is the number of windings of the gluon. + Method: Same as GluonArc, but without special start and end +*/ + +void DashGluonCirc(double *args) +{ + int num = args[5]; + double arcstart = args[3], dashsize; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + + arcstart += 360./(2*num); /* extra phase to make 0 angle more accessible */ + + SetTransferMatrix(COS(arcstart),SIN(arcstart) + ,-SIN(arcstart),COS(arcstart),0,0); + + dashsize = ComputeDashCirc(args,args[6]); + + SetDashSize(dashsize,dashsize/2); + GluonCircHelp(args); +} + +/* + #] DashGluonCirc : + #[ GluonArc : * + + GluonArc(x1,y1)(r,phi1,phi2){amplitude}{windings} + + Draws a gluon on an arcsegment + x_center,y_center,radius,stat_angle,end_angle,gluon_radius,num + in which num is the number of windings of the gluon. + Method: + 1: compute length of arc. + 2: generate gluon in x and y as if the arc is a straight line + 3: x' = (radius+y)*cos(x*const) + y' = (radius+y)*sin(x*const) +*/ + +void GluonArc(double *args) +{ + double darc, arcstart = args[3],arcend = args[4], ampi = args[5]; +/* + When arcend comes before arcstart we have a problem. The solution is + to flip the order and change the sign on ampi +*/ + if ( arcend < arcstart ) { + darc = arcstart; arcstart = arcend; arcend = darc; ampi = -ampi; + } + + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + + SetTransferMatrix(COS(arcstart),SIN(arcstart) + ,-SIN(arcstart),COS(arcstart),0,0); + darc = arcend-arcstart; + GluonArcHelp(args,darc,ampi); +} + +/* + #] GluonArc : + #[ DashGluonArc : * + + DashGluonArc(x1,y1)(r,phi1,phi2){amplitude}{windings}{dashsize} + + Draws a gluon on an arcsegment + x_center,y_center,radius,stat_angle,end_angle,gluon_radius,num + in which num is the number of windings of the gluon. + Method: + 1: compute length of arc. + 2: generate gluon in x and y as if the arc is a straight line + 3: x' = (radius+y)*cos(x*const) + y' = (radius+y)*sin(x*const) +*/ + +void DashGluonArc(double *args) +{ + double darc, arcstart = args[3],arcend = args[4], ampi = args[5]; + double dashsize = args[7]; +/* + When arcend comes before arcstart we have a problem. The solution is + to flip the order and change the sign on ampi +*/ + if ( arcend < arcstart ) { + darc = arcstart; arcstart = arcend; arcend = darc; ampi = -ampi; + } + + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + + SetTransferMatrix(COS(arcstart),SIN(arcstart) + ,-SIN(arcstart),COS(arcstart),0,0); + darc = arcend-arcstart; + dashsize = ComputeDashGluonArc(args,darc,dashsize); + SetDashSize(dashsize,dashsize/2); + GluonArcHelp(args,darc,ampi); +} + +/* + #] DashGluonArc : + #[ Photon : * + + Photon(x1,y1)(x2,y2){amplitude}{windings} + + Each half winding is one cubic Bezier curve. +*/ + +void Photon(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + + PhotonHelp(args,dr); +} + +/* + #] Photon : + #[ DoublePhoton : * + + DoublePhoton(x1,y1)(x2,y2){amplitude}{windings}{sep} + + Each half winding is one cubic Bezier curve. +*/ + +void DoublePhoton(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + linesep = args[6]; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + + SaveGraphicsState; + SetLineWidth(linesep+axolinewidth); + PhotonHelp(args,dr); + RestoreGraphicsState; + + SaveGraphicsState; + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + PhotonHelp(args,dr); + RestoreGraphicsState; +} + +/* + #] DoublePhoton : + #[ DashPhoton : * + + DashPhoton(x1,y1)(x2,y2){amplitude}{windings}{dashsize} + + Each half winding is one cubic Bezier curve. +*/ + +void DashPhoton(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + int numdashes, numhalfwindings = args[5]*2+0.5; + double x, y, size; + double dashsize = args[6], onehalfwinding = dr/numhalfwindings; + x = (4*onehalfwinding)/3/M_pi; y = 4.*args[4]/3; + size = 0.5*LengthBezier(x,y, onehalfwinding-x,y, onehalfwinding,0,1.0); + numdashes = size/(2*args[6]); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*dashsize*numdashes) > fabs(size-2*dashsize*(numdashes+1)) ) + numdashes++; + dashsize = size/(2*numdashes); + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + + SetDashSize(dashsize,dashsize/2); + PhotonHelp(args,dr); +} + +/* + #] DashPhoton : + #[ DashDoublePhoton : * + + DashDoublePhoton(x1,y1)(x2,y2){amplitude}{windings}{sep}{dashsize} + + Each half winding is one cubic Bezier curve. +*/ + +void DashDoublePhoton(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + int numdashes, numhalfwindings = args[5]*2+0.5; + double x, y, size; + double dashsize = args[7], onehalfwinding = dr/numhalfwindings; + x = (4*onehalfwinding)/3/M_pi; y = 4.*args[4]/3; + size = 0.5*LengthBezier(x,y, onehalfwinding-x,y, onehalfwinding,0,1.0); + numdashes = size/(2*args[6]); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*dashsize*numdashes) > fabs(size-2*dashsize*(numdashes+1)) ) + numdashes++; + dashsize = size/(2*numdashes); + + linesep = args[6]; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + SetDashSize(dashsize,dashsize/2); + + SaveGraphicsState; + SetLineWidth(linesep+axolinewidth); + PhotonHelp(args,dr); + RestoreGraphicsState; + +/* SetDashSize(0,0); */ + SaveGraphicsState; + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + PhotonHelp(args,dr); + RestoreGraphicsState; +} + +/* + #] DashDoublePhoton : + #[ PhotonArc : * + + PhotonArc(x1,y1)(r,phi1,phi2){amplitude}{windings} + + This routine follows the Postscript routine closely, except for that + we do not put a transfer matrix inside the loop. The corresponding + moveto messes up the path. One would have to put stroking operations + in there each time. +*/ + +void PhotonArc(double *args) +{ + double arcstart = args[3],arcend = args[4]; + int num = 2*args[6]+0.5; + + if ( arcend < arcstart ) arcend += 360.; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + + arcend = torad*(arcend-arcstart)/num; + + SetTransferMatrix(COS(arcstart),SIN(arcstart) + ,-SIN(arcstart),COS(arcstart),0,0); + + PhotonArcHelp(args,arcend,num); +} + +/* + #] PhotonArc : + #[ DoublePhotonArc : * + + DoublePhotonArc(x1,y1)(r,phi1,phi2){amplitude}{windings}{sep} +*/ + +void DoublePhotonArc(double *args) +{ + double arcstart = args[3],arcend = args[4]; + int num = 2*args[6]+0.5; + linesep = args[7]; + + if ( arcend < arcstart ) arcend += 360.; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + + arcend = torad*(arcend-arcstart)/num; + + SetTransferMatrix(COS(arcstart),SIN(arcstart) + ,-SIN(arcstart),COS(arcstart),0,0); + + SaveGraphicsState; + SetLineWidth(linesep+axolinewidth); + PhotonArcHelp(args,arcend,num); + RestoreGraphicsState; + + SaveGraphicsState; + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + PhotonArcHelp(args,arcend,num); + RestoreGraphicsState; +} + +/* + #] DoublePhotonArc : + #[ DashPhotonArc : * + + DashPhotonArc(x1,y1)(r,phi1,phi2){amplitude}{windings}{dashsize} +*/ + +void DashPhotonArc(double *args) +{ + double arcstart = args[3],arcend = args[4]; + double dashsize = args[7], dashstart; + int num = 2*args[6]+0.5; + + if ( arcend < arcstart ) arcend += 360.; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + + arcend = torad*(arcend-arcstart)/num; + + SetTransferMatrix(COS(arcstart),SIN(arcstart) + ,-SIN(arcstart),COS(arcstart),0,0); + + dashsize = ComputeDashPhotonArc(args,arcend,dashsize,&dashstart); + SetDashSize(dashsize,dashstart); + PhotonArcHelp(args,arcend,num); +} + +/* + #] DashPhotonArc : + #[ DashDoublePhotonArc : * + + DashDoublePhotonArc(x1,y1)(r,phi1,phi2){amplitude}{windings}{sep}{dashsize} +*/ + +void DashDoublePhotonArc(double *args) +{ + double arcstart = args[3],arcend = args[4]; + double dashsize = args[8], dashstart; + int num = 2*args[6]+0.5; + linesep = args[7]; + + if ( arcend < arcstart ) arcend += 360.; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + + arcend = torad*(arcend-arcstart)/num; + + SetTransferMatrix(COS(arcstart),SIN(arcstart) + ,-SIN(arcstart),COS(arcstart),0,0); + dashsize = ComputeDashPhotonArc(args,arcend,dashsize,&dashstart); + + SaveGraphicsState; + SetDashSize(dashsize,dashstart); + SetLineWidth(linesep+axolinewidth); + PhotonArcHelp(args,arcend,num); + RestoreGraphicsState; + + SaveGraphicsState; + SetDashSize(0,0); + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + PhotonArcHelp(args,arcend,num); + RestoreGraphicsState; +} + +/* + #] DashDoublePhotonArc : + #[ ZigZag : * + + ZigZag(x1,y1)(x2,y2){amplitude}{windings} + + We draw each half winding as two straight lines. + This can be done better! +*/ + +void ZigZag(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + ZigZagHelp(args,dr); +} + +/* + #] ZigZag : + #[ DoubleZigZag : * + + DoubleZigZag(x1,y1)(x2,y2){amplitude}{windings}{sep} + + We draw each half winding as two straight lines. + This can be done better! +*/ + +void DoubleZigZag(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + linesep = args[6]; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + + SaveGraphicsState; + SetLineWidth(linesep+axolinewidth); + ZigZagHelp(args,dr); + RestoreGraphicsState; + + SaveGraphicsState; + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + ZigZagHelp(args,dr); + RestoreGraphicsState; +} + +/* + #] DoubleZigZag : + #[ DashZigZag : * + + DashZigZag(x1,y1)(x2,y2){amplitude}{windings}{dashsize} + + We should recalculate the size of the dashes. Otherwise the points + of the teeth can become messy. +*/ + +void DashZigZag(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + double dashsize = args[6]; + int n = args[5]*2+0.5; + double size = dr/(n*2); + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + + size = sqrt(size*size+args[4]*args[4]); + n = size/(2*dashsize); /* number of complete dash patterns rounded down */ +/* + Now test what is closer to dash: size/n or size/(n+1) +*/ + if ( n == 0 ) n = 1; + if ( fabs(size-2*dashsize*n) > fabs(size-2*dashsize*(n+1)) ) n++; + dashsize = size/(2*n); + + SetDashSize(dashsize,dashsize/2); + ZigZagHelp(args,dr); +} + +/* + #] DashZigZag : + #[ DashDoubleZigZag : * + + DashDoubleZigZag(x1,y1)(x2,y2){amplitude}{windings}{sep}{dashsize} + + We draw each half winding as two straight lines. + This can be done better! +*/ + +void DashDoubleZigZag(double *args) +{ + double dx = args[2] - args[0]; + double dy = args[3] - args[1]; + double dr = sqrt(dx*dx+dy*dy); + double dashsize = args[7]; + int n = args[5]*2+0.5; + double size = dr/(n*2); + linesep = args[6]; + + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + + size = sqrt(size*size+args[4]*args[4]); + n = size/(2*dashsize); /* number of complete dash patterns rounded down */ +/* + Now test what is closer to dash: size/n or size/(n+1) +*/ + if ( n == 0 ) n = 1; + if ( fabs(size-2*dashsize*n) > fabs(size-2*dashsize*(n+1)) ) n++; + dashsize = size/(2*n); + + SetDashSize(dashsize,dashsize/2); + + SaveGraphicsState; + SetLineWidth(linesep+axolinewidth); + ZigZagHelp(args,dr); + RestoreGraphicsState; + + SetDashSize(0,0); + + SaveGraphicsState; + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + ZigZagHelp(args,dr); + RestoreGraphicsState; +} + +/* + #] DashDoubleZigZag : + #[ ZigZagArc : * + + ZigZagArc(x1,y1)(r,phi1,phi2){amplitude}{windings} +*/ + +void ZigZagArc(double *args) +{ + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + ZigZagArcHelp(args); +} + +/* + #] ZigZagArc : + #[ DoubleZigZagArc : * + + DoubleZigZagArc(x1,y1)(r,phi1,phi2){amplitude}{windings}{sep} +*/ + +void DoubleZigZagArc(double *args) +{ + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + linesep = args[7]; + + SaveGraphicsState; + SetLineWidth(linesep+axolinewidth); + ZigZagArcHelp(args); + RestoreGraphicsState; + + SaveGraphicsState; + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + ZigZagArcHelp(args); + RestoreGraphicsState; +} + +/* + #] DoubleZigZagArc : + #[ DashZigZagArc : * + + DashZigZagArc(x1,y1)(r,phi1,phi2){amplitude}{windings}{dashsize} +*/ + +void DashZigZagArc(double *args) +{ + double dashsize = args[7], dashstart; + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + { + int num = 2*args[6]-0.5, numdashes; + double amp = args[5], r = args[2], size, size2; + double arcstart = args[3], arcend = args[4], darc; + if ( arcend < arcstart ) arcend += 360.; + darc = (arcend-arcstart)/(num+1); + size = sqrt(0.5*(amp*amp+r*r-(r*r-amp*amp)*COS(darc))); + size2 = sqrt(amp*amp+2*(amp+r)*r*(1-COS(darc/2))); + numdashes = size/(2*dashsize); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*dashsize*numdashes) > fabs(size-2*dashsize*(numdashes+1)) ) + numdashes++; + dashsize = size/(2*numdashes); + num = size2/(2*dashsize); + dashstart = -(size2 - 2*num*dashsize) + dashsize/2; + if ( dashstart < 0 ) dashstart += 2*dashsize; + } + SetDashSize(dashsize,dashstart); + ZigZagArcHelp(args); +} + +/* + #] DashZigZagArc : + #[ DashDoubleZigZagArc : * + + DashDoubleZigZagArc(x1,y1)(r,phi1,phi2){amplitude}{windings}{sep}{dashsize} +*/ + +void DashDoubleZigZagArc(double *args) +{ + double dashsize = args[8], dashstart; + SetTransferMatrix(1,0,0,1,args[0],args[1]); /* Move to center of circle */ + linesep = args[7]; + { + int num = 2*args[6]-0.5, numdashes; + double amp = args[5], r = args[2], size, size2; + double arcstart = args[3], arcend = args[4], darc; + if ( arcend < arcstart ) arcend += 360.; + darc = (arcend-arcstart)/(num+1); + size = sqrt(0.5*(amp*amp+r*r-(r*r-amp*amp)*COS(darc))); + size2 = sqrt(amp*amp+2*(amp+r)*r*(1-COS(darc/2))); + numdashes = size/(2*dashsize); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*dashsize*numdashes) > fabs(size-2*dashsize*(numdashes+1)) ) + numdashes++; + dashsize = size/(2*numdashes); + num = size2/(2*dashsize); + dashstart = -(size2 - 2*num*dashsize) + dashsize/2; + if ( dashstart < 0 ) dashstart += 2*dashsize; + } + + SaveGraphicsState; + SetDashSize(dashsize,dashstart); + SetLineWidth(linesep+axolinewidth); + ZigZagArcHelp(args); + RestoreGraphicsState; + + SaveGraphicsState; + SetDashSize(0,0); + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + ZigZagArcHelp(args); + RestoreGraphicsState; +} + +/* + #] DashDoubleZigZagArc : + #] Particle routines : + #[ Drawing routines : + #[ Polygon : +*/ + +void Polygon(double *args,int num,int type) +{ + int i; + MoveTo(args[0],args[1]); + args += 2; + for ( i = 1; i < num; i++, args += 2 ) { + LineTo(args[0],args[1]); + } + if ( type == 0 ) { CloseAndStroke; } + else if ( type == 1 ) { CloseAndFill; } +} + +/* + #] Polygon : + #[ Curve : + + + Curve{(x1,y1),...,(xn,yn)} + + num is the number of pairs in points. +*/ + +void Curve(double *points,int num) +{ + int i, ss; + double x0,y0,x1,y1,x2,y2,x3,y3; + + if ( num < 2 ) return; + if ( num == 2 ) { Line(points); return; } + + ss = 2*num; + + x1 = points[0]; y1 = points[1]; + x2 = points[2]; y2 = points[3]; + x3 = points[4]; y3 = points[5]; + x0 = 2*x1-x2; + y0 = 2*((y3-y2)/(x3-x2)-(y2-y1)/(x2-x1))*((x2-x1)*(x2-x1)/(x3-x1))+2*y1-y2; + + MoveTo(x1,y1); + DoCurve(x0,y0,x1,y1,x2,y2,x3,y3); + + for ( i = 0; i < ss-6; i += 2 ) { + DoCurve(points[i ],points[i+1],points[i+2],points[i+3], + points[i+4],points[i+5],points[i+6],points[i+7]); + } + if ( ss > 6 ) { + x0 = points[ss-6]; y0 = points[ss-5]; + x1 = points[ss-4]; y1 = points[ss-3]; + x2 = points[ss-2]; y2 = points[ss-1]; + x3 = 2*x2-x1; + y3 = 2*((y2-y1)/(x2-x1)-(y1-y0)/(x1-x0))*((x2-x1)*(x2-x1)/(x2-x0))+2*y2-y1; + + DoCurve(x0,y0,x1,y1,x2,y2,x3,y3); + } + Stroke; +} + +/* + #] Curve : + #[ DashCurve : + + + DashCurve{(x1,y1),...,(xn,yn)}{dashsize} +*/ + +void DashCurve(double *args,int num1) +{ + double dashsize = args[2*num1]; + if ( num1 == 2 ) { + DashLine(args); + } + else if ( num1 > 2 ) { + SetDashSize(dashsize,dashsize/2); + Curve(args,num1); + } +} + +/* + #] DashCurve : + #[ LogAxis : + + Draws a line with logarithmic hash marks along it. + LogAxis(x1,y1)(x2,y2)(num_logs,hashsize,offset,width) + The line is from (x1,y1) to (x2,y2) and the marks are on the left side + when hashsize is positive, and right when it is negative. + num_logs is the number of orders of magnitude and offset is the number + at which one starts at (x1,y1) (like if offset=2 we start at 2) + When offset is 0 we start at 1. Width is the linewidth. +*/ + +void LogAxis(double *args) +{ + double dx = args[2]-args[0], dy = args[3]-args[1], dr = sqrt(dx*dx+dy*dy); + double width = args[7], size, nlogs = args[4], hashsize = args[5]; + double offset = args[6], x; + int i, j; + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + MoveTo(0,0); LineTo(dr,0); Stroke; +/* + Now compute the hash marks. +*/ + size = dr/nlogs; + if ( offset <= 0 ) { offset = 0; } + else { offset = log10(offset); } +/* + Big hash marks +*/ + for ( i = 1; i <= nlogs; i++ ) { + MoveTo((i-offset)*size,0); + LineTo((i-offset)*size,hashsize*1.2); + Stroke; + } +/* + Little hash marks +*/ + SetLineWidth(0.6*width); + for ( i = 0; i <= nlogs; i++ ) { + for ( j = 2; j < 10; j++ ) { + x = (i-offset+log10(j))*size; + if ( x >= 0 && x <= dr ) { + MoveTo(x,0); LineTo(x,hashsize*0.8); Stroke; + } + } + } +} + +/* + #] LogAxis : + #[ LinAxis : + + Draws a line with linear hash marks along it. + LinAxis(x1,y1)(x2,y2)(num_decs,per_dec,hashsize,offset,width) + The line is from (x1,y1) to (x2,y2) and the marks are on the left side + when hashsize is positive, and right when it is negative. + num_decs is the number of accented marks, per_dec the number of + divisions between them and offset is the number + at which one starts at (x1,y1) (like if offset=2 we start at the second + small mark) Width is the linewidth. +*/ + +void LinAxis(double *args) +{ + double width = args[8], hashsize = args[6], x; + double dx = args[2]-args[0], dy = args[3]-args[1], dr = sqrt(dx*dx+dy*dy); + double num_decs = args[4], per_dec = args[5], size, size2; + int i, j, numperdec = per_dec+0.5, offset = args[7]; + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(dx/dr,dy/dr,-dy/dr,dx/dr,0,0); + MoveTo(0,0); LineTo(dr,0); Stroke; + size = dr/num_decs; + if ( numperdec > 1 ) size2 = size / numperdec; + else { size2 = size; numperdec = 1; } + if ( offset > numperdec ) offset = numperdec; + else if ( offset <= 0 ) offset = 0; +/* + Big hashes +*/ + for ( i = 0; i <= num_decs; i++ ) { + x = i*size-offset*size2; + if ( x >= 0 && x <= dr ) { + MoveTo(x,0); LineTo(x,hashsize*1.2); Stroke; + } + } +/* + Little hash marks. +*/ + j = num_decs*numperdec+0.5; + SetLineWidth(0.6*width); + for ( i = 0; i <= j; i++ ) { + if ( (i+offset)%numperdec != 0 ) { + x = i*size2; + if ( x >= 0 && x <= dr ) { + MoveTo(x,0); LineTo(x,hashsize*0.8); Stroke; + } + } + } +} + +/* + #] LinAxis : + #[ BezierCurve : + + Draws a Bezier curve. Starts at (x1,y1). + The control points are (x2,y2),(x3,y3),(x4,y4) +*/ + +void BezierCurve(double *args) +{ + MoveTo(args[0],args[1]); + Bezier(args[2],args[3],args[4],args[5],args[6],args[7]); + Stroke; + if ( witharrow ) BezierArrow(args); +} + +/* + #] BezierCurve : + #[ DoubleBezier : + + Draws a Bezier curve. Starts at (x1,y1). + The control points are (x2,y2),(x3,y3),(x4,y4) +*/ + +void DoubleBezier(double *args) +{ + linesep = args[8]; + SaveGraphicsState; + SetLineWidth(linesep+axolinewidth); + MoveTo(args[0],args[1]); + Bezier(args[2],args[3],args[4],args[5],args[6],args[7]); + Stroke; + RestoreGraphicsState; + SaveGraphicsState; + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + MoveTo(args[0],args[1]); + Bezier(args[2],args[3],args[4],args[5],args[6],args[7]); + Stroke; + RestoreGraphicsState; + if ( witharrow ) BezierArrow(args); +} + +/* + #] DoubleBezier : + #[ DashBezier : + + Draws a Bezier curve. Starts at (x1,y1). + The control points are (x2,y2),(x3,y3),(x4,y4) +*/ + +void DashBezier(double *args) +{ + int numdashes; + double size, dashsize = args[8]; + size = LengthBezier(args[2]-args[0],args[3]-args[1] + ,args[4]-args[0],args[5]-args[1],args[6]-args[0],args[7]-args[1],1.0); + + numdashes = size/(2*dashsize); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*dashsize*numdashes) > fabs(size-2*dashsize*(numdashes+1)) ) + numdashes++; + dashsize = (size/(2*numdashes)); + + SetDashSize(dashsize,dashsize/2); + MoveTo(args[0],args[1]); + Bezier(args[2],args[3],args[4],args[5],args[6],args[7]); + Stroke; + if ( witharrow ) BezierArrow(args); +} + +/* + #] DashBezier : + #[ DashDoubleBezier : + + Draws a Bezier curve. Starts at (x1,y1). + The control points are (x2,y2),(x3,y3),(x4,y4) +*/ + +void DashDoubleBezier(double *args) +{ + int numdashes; + double size, dashsize = args[9]; + size = LengthBezier(args[2]-args[0],args[3]-args[1] + ,args[4]-args[0],args[5]-args[1],args[6]-args[0],args[7]-args[1],1.0); + + numdashes = size/(2*dashsize); + if ( numdashes == 0 ) numdashes = 1; + if ( fabs(size-2*dashsize*numdashes) > fabs(size-2*dashsize*(numdashes+1)) ) + numdashes++; + dashsize = (size/(2*numdashes)); + + SetDashSize(dashsize,dashsize/2); + linesep = args[8]; + SaveGraphicsState; + SetLineWidth(linesep+axolinewidth); + MoveTo(args[0],args[1]); + Bezier(args[2],args[3],args[4],args[5],args[6],args[7]); + Stroke; + RestoreGraphicsState; + SaveGraphicsState; + SetLineWidth(linesep-axolinewidth); + SetBackgroundColor(STROKING); + MoveTo(args[0],args[1]); + Bezier(args[2],args[3],args[4],args[5],args[6],args[7]); + Stroke; + RestoreGraphicsState; + if ( witharrow ) BezierArrow(args); +} + +/* + #] DashDoubleBezier : + #] Drawing routines : + #[ Wrapper routines : + #[ AxoArc : + + Draws arc centered at (#1,#2), radius #3, starting and ending + angles #4, #5. + Double, dashing, arrow, flip, clockwise +*/ + +void AxoArc(double *args) +{ + double dashsize = args[6]; + linesep = args[5]; + GetArrow(args+7); + if ( args[16] ) { /* If clockwise: reverse the angles and the arrow */ + double e; + clockwise = 1; /* In principle not needed */ + flip = 1-flip; + arrow.where = 1-arrow.where; + e = args[3]; args[3] = args[4]; args[4] = e; + } + + if ( witharrow ) { + if ( arrow.where > 1 ) arrow.where = 1; + if ( arrow.where < 0 ) arrow.where = 0; + if ( dashsize > 0 ) { + if ( linesep > 0 ) { + DashArrowDoubleArc(args); + } + else { + args[5] = args[6]; + DashArrowArc(args); + } + } + else { + if ( linesep > 0 ) { + ArrowDoubleArc(args); + } + else { + ArrowArc(args); + } + } + } + else { + if ( dashsize > 0 ) { + if ( linesep > 0 ) { + DashDoubleArc(args); + } + else { + args[5] = args[6]; + DashCArc(args); + } + } + else { + if ( linesep > 0 ) { + DoubleArc(args); + } + else { + CArc(args); + } + } + } +} + +/* + #] AxoArc : + #[ AxoBezier : +*/ + +void AxoBezier(double *args) +{ + linesep = args[8]; + GetArrow(args+10); + if ( witharrow ) { + if ( arrow.where > 1 ) arrow.where = 1; + if ( arrow.where < 0 ) arrow.where = 0; + } + if ( args[9] ) { /* dashes */ + if ( args[8] ) { /* double */ + DashDoubleBezier(args); + } + else { + args[8] = args[9]; + DashBezier(args); + } + } + else { + if ( args[8] ) { /* double */ + DoubleBezier(args); + } + else { + BezierCurve(args); /* The name Bezier was already taken */ + } + } +} + +/* + #] AxoBezier : + #[ AxoGluon : +*/ + +void AxoGluon(double *args) +{ + SetLineWidth(axolinewidth + args[6]); + if ( args[7] ) { /* dashes */ + args[6] = args[7]; + DashGluon(args); + } + else { + Gluon(args); + } +} + +/* + #] AxoGluon : + #[ AxoGluonArc : +*/ + +void AxoGluonArc(double *args) +{ + SetLineWidth(axolinewidth + args[7]); + if ( args[9] ) { /* Clockwise */ + double a = args[3]; args[3] = args[4]; args[4] = a; + } + if ( args[8] ) { /* Dashes */ + args[7] = args[8]; + DashGluonArc(args); + } + else { + GluonArc(args); + } +} + +/* + #] AxoGluonArc : + #[ AxoGluonCirc : +*/ + +void AxoGluonCirc(double *args) +{ + SetLineWidth(axolinewidth + args[6]); + if ( args[7] ) { /* dashes */ + args[6] = args[7]; + DashGluonCirc(args); + } + else { + GluonCirc(args); + } +} + +/* + #] AxoGluonCirc : + #[ AxoLine : + + AxoLine(x1,y1)(x2,y2){sep}{dashsize}{stroke width length inset}{where} + + Generic switchyard to the various routines for compatibility + with Jaxodraw and axodraw4j + + Note: because the specific routines can be called either in the + direct way or by means of the generic routine, they have to know + what arrow to use. This is regulated by arrow.type. 0=old arrows. +*/ + +void AxoLine(double *args) +{ + linesep = args[4]; + GetArrow(args+6); + if ( witharrow ) { + if ( arrow.where > 1 ) arrow.where = 1; + if ( arrow.where < 0 ) arrow.where = 0; + if ( args[5] == 0 ) { + if ( linesep == 0 ) ArrowLine(args); + else { ArrowDoubleLine(args); } + } + else { + if ( linesep == 0 ) { + args[4] = args[5]; + DashArrowLine(args); + } + else { DashArrowDoubleLine(args); } + } + } + else { + if ( args[5] == 0 ) { /* No dashing */ + if ( linesep == 0 ) Line(args); + else DoubleLine(args); + } + else { + if ( linesep == 0 ) { + args[4] = args[5]; DashLine(args); + } + else DashDoubleLine(args); + } + } +} + +/* + #] AxoLine : + #[ AxoPhoton : +*/ + +void AxoPhoton(double *args) +{ + if ( args[7] ) { /* dashes */ + if ( args[6] ) { /* double */ + DashDoublePhoton(args); + } + else { + args[6] = args[7]; + DashPhoton(args); + } + } + else { + if ( args[6] ) { /* double */ + DoublePhoton(args); + } + else { + Photon(args); + } + } +} + +/* + #] AxoPhoton : + #[ AxoPhotonArc : +*/ + +void AxoPhotonArc(double *args) +{ + if ( args[9] ) { /* Clockwise */ + int num = 2*args[6]+0.5; + double a = args[3]; args[3] = args[4]; args[4] = a; + if ( ( num & 1 ) == 0 ) args[5] = -args[5]; + } + if ( args[8] ) { /* dash */ + if ( args[7] ) { /* double */ + DashDoublePhotonArc(args); + } + else { + args[7] = args[8]; + DashPhotonArc(args); + } + } + else { + if ( args[7] ) { /* double */ + DoublePhotonArc(args); + } + else { + PhotonArc(args); + } + } +} + +/* + #] AxoPhotonArc : + #[ AxoZigZag : +*/ + +void AxoZigZag(double *args) +{ + if ( args[7] ) { /* dashes */ + if ( args[6] ) { /* double */ + DashDoubleZigZag(args); + } + else { + args[6] = args[7]; + DashZigZag(args); + } + } + else { + if ( args[6] ) { /* double */ + DoubleZigZag(args); + } + else { + ZigZag(args); + } + } +} + +/* + #] AxoZigZag : + #[ AxoZigZagArc : +*/ + +void AxoZigZagArc(double *args) +{ + if ( args[9] ) { /* Clockwise */ + int num = 2*args[6]+0.5; + double a = args[3]; args[3] = args[4]; args[4] = a; + if ( ( num & 1 ) == 0 ) args[5] = -args[5]; + } + if ( args[8] ) { /* dash */ + if ( args[7] ) { /* double */ + DashDoubleZigZagArc(args); + } + else { + args[7] = args[8]; + DashZigZagArc(args); + } + } + else { + if ( args[7] ) { /* double */ + DoubleZigZagArc(args); + } + else { + ZigZagArc(args); + } + } +} + +/* + #] AxoZigZagArc : + #] Wrapper routines : + #[ Various routines : + #[ Rotate : + + + Rotate: x y angle hmode vmode textwidth textheight + Note, the textwidth/textheight have been scaled already; +*/ + +void Rotate(double *args) +{ + double textheight = args[6]*args[4]/2/65536.; + double textwidth = args[5]*args[3]/2/65536.; + SetTransferMatrix(1,0,0,1,args[0],args[1]); + SetTransferMatrix(COS(args[2]),SIN(args[2]),-SIN(args[2]),COS(args[2]),0,0); + SetTransferMatrix(1,0,0,1,-textwidth,textheight); +} + +/* + #] Rotate : + #[ Grid : + + Makes a coordinate grid in the indicated color. + (x0,y0)(incx,incy)(nx,ny){color}{linewidth} +*/ + +void Grid(double *args) +{ + int i, nx = args[4]+0.01, ny = args[5]+0.01; + double maxx = args[2]*args[4]; + double maxy = args[3]*args[5]; + SetTransferMatrix(1,0,0,1,args[0],args[1]); + for ( i = 0; i <= nx; i++ ) { + MoveTo(i*args[2],0); + LineTo(i*args[2],maxy); + Stroke; + } + for ( i = 0; i <= ny; i++ ) { + MoveTo(0,i*args[3]); + LineTo(maxx,i*args[3]); + Stroke; + } +} + +/* + #] Grid : + #] Various routines : + #] routines : +*/ diff --git a/Build/source/utils/axodraw2/axodraw2-src/axohelp.test b/Build/source/utils/axodraw2/axodraw2-src/axohelp.test new file mode 100755 index 00000000000..b282d3bd0c2 --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/axohelp.test @@ -0,0 +1,22 @@ +#!/bin/sh -vx + +# Copyright (C) 2018 John Collins (jcc8@psu.edu) +# You may freely use, modify and/or distribute this file. + +if test -z "$test_srcdir"; then + # If not set, then we are not running from `make check'. + test_srcdir=`echo "$0" | sed -e 's,/[^\\/]*$,,'` # == dirname $0 + test "$test_srcdir" = "$0" && test_srcdir=. # in case subst failed +fi + +echo Running axohelp on test document ... +cp $test_srcdir/test* . +./axohelp test \ + || { echo axohelp failed to run correctly ; exit 1; } + +echo Checking result ... +diff test.ax2-std test.ax2 \ + || { echo The .ax2 file created by axohelp was incorrect; exit 1; } + +echo Success, so I will remove generated file test.ax2 +rm test.ax2 diff --git a/Build/source/utils/axodraw2/axodraw2-src/configure.ac b/Build/source/utils/axodraw2/axodraw2-src/configure.ac new file mode 100644 index 00000000000..f5b23f9b73d --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/configure.ac @@ -0,0 +1,10 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_INIT([axohelp], [1], [jcc8@psu.edu]) +AM_INIT_AUTOMAKE([no-define]) +AC_CHECK_LIB([m], [sqrt],, + AC_MSG_ERROR([*** Please install libm on your system ***])) +AC_PROG_CC +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/Build/source/utils/axodraw2/axodraw2-src/example.tex b/Build/source/utils/axodraw2/axodraw2-src/example.tex new file mode 100644 index 00000000000..c2b6bf8779b --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/example.tex @@ -0,0 +1,18 @@ +\documentclass{article} +\usepackage{axodraw2} +\begin{document} +Example of Feynman graph made by axodraw2: +\begin{center} + \begin{axopicture}(200,110) + \SetColor{Red} + \Arc[arrow](100,50)(40,0,180) + \Text(100,100)[]{$\alpha P_1 + \beta P_2 + k_\perp$} + \SetColor{Black} + \Arc[arrow](100,50)(40,180,360) + \Gluon(0,50)(60,50){5}{4} + \Vertex(60,50){2} + \Gluon(140,50)(200,50){5}{4} + \Vertex(140,50){2} + \end{axopicture} +\end{center} +\end{document} diff --git a/Build/source/utils/axodraw2/axodraw2-src/test.ax1 b/Build/source/utils/axodraw2/axodraw2-src/test.ax1 new file mode 100644 index 00000000000..e35af1a45c3 --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/test.ax1 @@ -0,0 +1,494 @@ +[1] AxoLine 0 2 35 2 2.5 0 0 0 0 0 0 0 0 0 0 1; +[2] AxoLine 0 2 30 2 0 0 0 0 0 0.2 1 1.25 0.8 1 0 1; +[3] AxoArc 100 50 40 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[4] AxoArc 100 50 40 180 360 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[5] AxoGluon 0 50 60 50 5 4 0 0 0.5; +[6] Vertex 60 50 2 0.5; +[7] AxoGluon 140 50 200 50 5 4 0 0 0.5; +[8] Vertex 140 50 2 0.5; +[9] Grid 0 0 10 10 9 14 0.5; +[10] Grid 0 0 10 10 9 4 0.5; +[11] AxoLine 10 10 80 30 0 0 0 0 0 0 0 0 0 0 0 0.5; +[12] Grid 0 0 10 10 9 8 0.5; +[13] AxoLine 10 70 80 70 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[14] AxoLine 10 50 80 50 0 3 0 0 0 0 0 0 0 0 0 0.5; +[15] AxoLine 10 30 80 30 2 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[16] AxoLine 10 10 80 10 2 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[17] Grid 0 0 10 10 9 4 0.5; +[18] AxoLine 10 25 80 25 1 0 0 0 0 0 0 0 0 0 0 0.5; +[19] AxoLine 10 15 80 15 2 0 0 0 0 0 0 0 0 0 0 0.5; +[20] Grid 0 0 10 10 9 4 0.5; +[21] AxoLine 10 25 80 25 0 2 0 0 0 0 0 0 0 0 0 0.5; +[22] AxoLine 10 15 80 15 0 6 0 0 0 0 0 0 0 0 0 0.5; +[23] Grid 0 0 10 10 9 4 0.5; +[24] AxoLine 10 25 80 25 1.5 2 0 0 0 0 0 0 0 0 0 0.5; +[25] AxoLine 10 15 80 15 1.5 6 0 0 0 0 0 0 0 0 0 0.5; +[26] Grid 0 0 10 10 9 5 0.5; +[27] AxoArc 45 0 40 20 160 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[28] Grid 0 0 10 10 8 8 0.5; +[29] AxoArc 40 40 30 20 160 0 3 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5; +[30] Grid 0 0 10 10 9 5 0.5; +[31] AxoArc 45 0 40 20 160 2 0 0 0 0 0 0 0 0 0 0 0 0.5; +[32] Grid 0 0 10 10 9 5 0.5; +[33] AxoArc 45 0 40 20 160 0 4 0 0 0 0 0 0 0 0 0 0 0.5; +[34] Grid 0 0 10 10 9 5 0.5; +[35] AxoArc 45 0 40 20 160 2 4 0 0 0 0 0 0 0 0 0 0 0.5; +[36] Grid 0 0 10 10 6 6 0.5; +[37] AxoBezier 10 10 75 30 65 40 20 50 0 0 0 0 0 0 0 0 0 0 0 0.5; +[38] Grid 0 0 10 10 6 6 0.5; +[39] AxoBezier 10 10 75 30 65 40 20 50 2 0 0 0 0 0.2 1 1.25 1 1 0 0.5; +[40] Grid 0 0 10 10 6 6 0.5; +[41] AxoBezier 10 10 75 30 65 40 20 50 1.5 0 0 0 0 0 0 0 0 0 0 0.5; +[42] Grid 0 0 10 10 6 6 0.5; +[43] AxoBezier 10 10 75 30 65 40 20 50 0 4 0 0 0 0 0 0 0 0 0 0.5; +[44] Grid 0 0 10 10 6 6 0.5; +[45] AxoBezier 10 10 75 30 65 40 20 50 1.5 4 0 0 0 0 0 0 0 0 0 0.5; +[46] Grid 0 0 10 10 6 6 0.5; +[47] Curve "(5,55)(10,32.5)(15,23)(20,18)(25,14.65)(30,12.3)(40,9.5)(55,7)" 0.5; +[48] Grid 0 0 10 10 6 6 0.5; +[49] DashCurve "(5,55)(10,32.5)(15,23)(20,18)(25,14.65)(30,12.3)(40,9.5)(55,7)" 4 0.5; +[50] Grid 0 0 10 10 9 4 0.5; +[51] AxoGluon 10 20 80 20 5 7 0 0 0.5; +[52] Grid 0 0 10 10 9 4 0.5; +[53] AxoGluon 10 20 80 20 4 7 0.5 1 2; +[54] AxoGluon 10 20 80 20 4 7 -0.5 0 2; +[55] Grid 0 0 10 10 9 4 0.5; +[56] AxoGluon 10 20 80 20 5 7 0.5 0 1.3; +[57] AxoGluon 10 20 80 20 5 7 -0.5 0 1.3; +[58] Grid 0 0 10 10 9 4 0.5; +[59] AxoGluon 10 20 80 20 5 7 0 1 0.5; +[60] Grid 0 0 10 10 9 4 0.5; +[61] AxoGluon 10 20 80 20 5 7 0.5 1 1.3; +[62] AxoGluon 10 20 80 20 5 7 -0.5 0 1.3; +[63] Grid 0 0 10 10 9 5 0.5; +[64] AxoGluonArc 45 0 40 20 160 5 8 0 0 0 0.5; +[65] Grid 0 0 10 10 9 5 0.5; +[66] AxoGluonArc 45 0 40 20 160 5 8 0.5 0 0 1.3; +[67] AxoGluonArc 45 0 40 20 160 5 8 -0.5 0 0 1.3; +[68] Grid 0 0 10 10 9 5 0.5; +[69] AxoGluonArc 45 0 40 20 160 5 8 0 1.5 0 0.5; +[70] Grid 0 0 10 10 9 5 0.5; +[71] AxoGluonArc 45 0 40 20 160 5 8 0.5 1.5 0 1.3; +[72] AxoGluonArc 45 0 40 20 160 5 8 -0.5 0 0 1.3; +[73] Grid 0 0 10 10 8 8 0.5; +[74] AxoGluonCirc 40 40 30 0 5 16 0 0 0.5; +[75] Grid 0 0 10 10 8 8 0.5; +[76] AxoGluonCirc 40 40 30 0 5 16 0.5 0 1.3; +[77] AxoGluonCirc 40 40 30 0 5 16 -0.5 0 1.3; +[78] Grid 0 0 10 10 8 8 0.5; +[79] AxoGluonCirc 40 40 30 0 5 16 0 1.5 0.5; +[80] Grid 0 0 10 10 8 8 0.5; +[81] AxoGluonCirc 40 40 30 0 5 16 0.5 1.5 1.3; +[82] AxoGluonCirc 40 40 30 0 5 16 -0.5 0 1.3; +[83] Grid 0 0 10 10 9 4 0.5; +[84] AxoPhoton 10 20 80 20 5 7 0 0 0.5; +[85] Grid 0 0 10 10 9 4 0.5; +[86] AxoPhoton 10 20 80 20 5 7 1.3 0 0.5; +[87] Grid 0 0 10 10 9 4 0.5; +[88] AxoPhoton 10 20 80 20 5 7 0 1 0.5; +[89] Grid 0 0 10 10 9 4 0.5; +[90] AxoPhoton 10 20 80 20 5 7 1.3 1 0.5; +[91] Grid 0 0 10 10 9 5 0.5; +[92] AxoPhotonArc 45 0 40 20 160 5 8 0 0 0 0.5; +[93] Grid 0 0 10 10 9 5 0.5; +[94] AxoPhotonArc 45 0 40 20 160 5 8 1.3 0 0 0.5; +[95] Grid 0 0 10 10 9 5 0.5; +[96] AxoPhotonArc 45 0 40 20 160 5 8 0 1.5 0 0.5; +[97] Grid 0 0 10 10 9 5 0.5; +[98] AxoPhotonArc 45 0 40 20 160 5 8 1.3 1.5 0 0.5; +[99] Grid 0 0 10 10 9 4 0.5; +[100] AxoZigZag 10 20 80 20 5 7.5 0 0 0.5; +[101] Grid 0 0 10 10 9 4 0.5; +[102] AxoZigZag 10 20 80 20 5 7 1.5 0 0.5; +[103] Grid 0 0 10 10 9 4 0.5; +[104] AxoZigZag 10 20 80 20 5 7 1.3 0 0.5; +[105] Grid 0 0 10 10 9 4 0.5; +[106] AxoZigZag 10 20 80 20 5 7 0 1 0.5; +[107] Grid 0 0 10 10 9 4 0.5; +[108] AxoZigZag 10 20 80 20 5 7 1.3 1 0.5; +[109] Grid 0 0 10 10 9 5 0.5; +[110] AxoZigZagArc 45 0 40 20 160 5 8 0 0 0 0.5; +[111] Grid 0 0 10 10 9 5 0.5; +[112] AxoZigZagArc 45 0 40 20 160 5 8 1.3 0 0 0.5; +[113] Grid 0 0 10 10 9 5 0.5; +[114] AxoZigZagArc 45 0 40 20 160 5 8 0 1.5 0 0.5; +[115] Grid 0 0 10 10 9 5 0.5; +[116] AxoZigZagArc 45 0 40 20 160 5 8 1.3 1.5 0 0.5; +[117] Grid 0 0 10 10 8 5 0.5; +[118] AxoLine 10 10 70 10 0 0 0 0 0 0 0 0 0 0 0 0.5; +[119] AxoPhoton 40 10 40 40 4 3 0 0 0.5; +[120] Vertex 40 10 1.5 0.5; +[121] Grid 0 0 10 10 6 6 0.5; +[122] AxoLine 0 0 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[123] ECirc 30 30 20 0.5; +[124] Grid 0 0 10 10 6 6 0.5; +[125] AxoLine 0 0 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[126] Vertex 30 30 20 0.5; +[127] ECirc 30 30 20 0.5; +[128] AxoLine 60 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[129] Grid 0 0 10 10 6 6 0.5; +[130] AxoLine 0 0 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[131] Vertex 30 30 20 0.5; +[132] ECirc 30 30 20 0.5; +[133] AxoLine 60 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[134] Grid 0 0 10 10 6 6 0.5; +[135] AxoLine 0 0 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[136] Vertex 30 30 20 0.5; +[137] ECirc 30 30 20 0.5; +[138] AxoLine 60 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[139] Grid 0 0 10 10 8 11 0.5; +[140] Oval 40 80 20 30 0 0.5; +[141] Oval 40 30 20 30 30 0.5; +[142] Grid 0 0 10 10 8 6 0.5; +[143] FOval 40 30 20 30 30 0.5; +[144] Grid 0 0 10 10 8 6 0.5; +[145] AxoLine 0 0 80 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[146] FOval 40 30 20 30 0 0.5; +[147] Oval 40 30 20 30 0 0.5; +[148] AxoLine 80 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[149] Grid 0 0 10 10 8 6 0.5; +[150] AxoLine 0 0 80 60 0 0 0 0 0 0 0 0 0 0 0 1; +[151] FOval 40 30 20 30 20 1; +[152] Oval 40 30 20 30 20 1; +[153] AxoLine 80 0 0 60 0 0 0 0 0 0 0 0 0 0 0 1; +[154] Grid 0 0 10 10 6 5 0.5; +[155] EBox 10 10 50 40 0.5; +[156] Grid 0 0 10 10 6 5 0.5; +[157] FBox 10 10 50 40 0.5; +[158] Grid 0 0 10 10 6 5 0.5; +[159] FBox 10 10 50 40 0.5; +[160] EBox 10 10 50 40 0.5; +[161] Grid 0 0 10 10 6 5 0.5; +[162] FBox 10 10 50 40 0.5; +[163] EBox 10 10 50 40 0.5; +[164] Grid 0 0 10 10 6 5 0.5; +[165] FBox 10 10 50 40 1.5; +[166] EBox 10 10 50 40 1.5; +[167] Grid 0 0 10 10 6 5 0.5; +[168] Boxc 30 25 40 30 0.5; +[169] Grid 0 0 10 10 6 5 0.5; +[170] FBoxc 30 25 40 30 0.5; +[171] Boxc 30 25 40 30 0.5; +[172] Grid 0 0 10 10 6 5 0.5; +[173] FBoxc 30 25 40 30 0.5; +[174] Boxc 30 25 40 30 0.5; +[175] Grid 0 0 10 10 6 5 0.5; +[176] FBoxc 30 25 40 30 1.5; +[177] Boxc 30 25 40 30 1.5; +[178] Grid 0 0 10 10 6 5 0.5; +[179] Boxc 0 0 40 30 0.5; +[180] Grid 0 0 10 10 6 5 0.5; +[181] FBoxc 0 0 40 30 0.5; +[182] Grid 0 0 10 10 6 5 0.5; +[183] ETri 10 20 50 10 40 40 0.5; +[184] Grid 0 0 10 10 6 5 0.5; +[185] FTri 10 20 50 10 40 40 0.5; +[186] ETri 10 20 50 10 40 40 0.5; +[187] Grid 0 0 10 10 6 5 0.5; +[188] FTri 10 20 50 10 40 40 0.5; +[189] ETri 10 20 50 10 40 40 0.5; +[190] Grid 0 0 10 10 6 5 0.5; +[191] FTri 10 20 50 10 40 40 1; +[192] ETri 10 20 50 10 40 40 1; +[193] Grid 0 0 10 10 6 5 0.5; +[194] Polygon "(10,20)(20,10)(40,20)(50,10)(45,40)(15,30)" 0.5; +[195] Grid 0 0 10 10 6 5 0.5; +[196] FilledPolygon "(10,20)(20,10)(40,20)(50,10)(45,40)(15,30)" 0.5; +[197] Grid 0 0 10 10 10 5 0.5; +[198] LinAxis 10 30 90 30 4 5 5 0 1; +[199] LinAxis 10 10 90 10 4 5 5 2 1; +[200] Grid 0 0 10 10 10 4 0.5; +[201] LogAxis 0 30 100 30 4 3 0 1; +[202] LogAxis 0 10 100 10 4 3 3 1; +[203] Grid 0 0 10 10 9 9 0.5; +[204] Vertex 10 10 1.5 0.5; +[205] Vertex 45 45 1.5 0.5; +[206] Vertex 80 80 1.5 0.5; +[207] Grid 0 0 10 10 9 9 0.5; +[208] Vertex 10 10 1.5 0.5; +[209] Vertex 45 45 1.5 0.5; +[210] Vertex 80 10 1.5 0.5; +[211] Grid 0 0 10 10 9 9 0.5; +[212] Vertex 10 10 1.5 0.5; +[213] Vertex 45 45 1.5 0.5; +[214] Vertex 80 80 1.5 0.5; +[215] Grid 0 0 10 10 10 9 0.5; +[216] AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[217] FBoxc 0 0 54.599 15.89 0.5; +[218] Boxc 0 0 54.599 15.89 0.5; +[219] FBoxc 0 0 50.559 17.421 0.5; +[220] Boxc 0 0 50.559 17.421 0.5; +[221] Grid 0 0 10 10 10 9 0.5; +[222] AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[223] FBoxc 0 0 46.799 15.513 0.5; +[224] Boxc 0 0 46.799 15.513 0.5; +[225] FBoxc 0 0 71.0 5.444 0.5; +[226] Boxc 0 0 71.0 5.444 0.5; +[227] Grid 0 0 10 10 9 9 0.5; +[228] AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[229] FBoxc 0 0 53.339 15.424 0.5; +[230] Boxc 0 0 53.339 15.424 0.5; +[231] FBoxc 0 0 47.599 12.975 0.5; +[232] Boxc 0 0 47.599 12.975 0.5; +[233] Grid 0 0 10 10 9 9 0.5; +[234] AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[235] FBoxc 0 0 45.359 34.223 0.5; +[236] Boxc 0 0 45.359 34.223 0.5; +[237] FBoxc 0 0 54.176 38.704 0.5; +[238] Boxc 0 0 54.176 38.704 0.5; +[239] Grid 0 0 10 10 10 9 0.5; +[240] AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[241] FBoxc 0 0 46.931 28.548 0.5; +[242] Boxc 0 0 46.931 28.548 0.5; +[243] FBoxc 0 0 63.799 27.10 0.5; +[244] Boxc 0 0 63.799 27.10 0.5; +[245] Grid 0 0 10 10 9 9 0.5; +[246] AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[247] FBoxc 0 0 49.539 25.840 0.5; +[248] Boxc 0 0 49.539 25.840 0.5; +[249] FBoxc 0 0 55.999 31.745 0.5; +[250] Boxc 0 0 55.999 31.745 0.5; +[251] Grid 0 0 10 10 12 9 0.5; +[252] FBoxc 0 0 143.37 62.444 0.5; +[253] Boxc 0 0 143.37 62.444 0.5; +[254] Grid 0 0 10 10 13 9 0.5; +[255] FBoxc 0 0 128.811 61.543 0.5; +[256] Boxc 0 0 128.811 61.543 0.5; +[257] Grid 0 0 10 10 9 8 0.5; +[258] AxoGluon 10 70 80 70 3 5 0 0 0.5; +[259] AxoGluon 10 50 80 50 3 9 0 0 0.5; +[260] AxoGluon 10 30 80 30 5 7 0 0 0.5; +[261] AxoGluon 10 10 80 10 8 9 0 0 0.5; +[262] Grid 0 0 10 10 9 8 0.5; +[263] AxoGluon 10 70 80 70 5 7 0.5 0 1.2; +[264] AxoGluon 10 70 80 70 5 7 -0.5 0 1.2; +[265] AxoGluon 80 50 10 50 5 7 0.5 0 1.2; +[266] AxoGluon 80 50 10 50 5 7 -0.5 0 1.2; +[267] AxoGluon 10 30 80 30 -5 7 0.5 0 1.2; +[268] AxoGluon 10 30 80 30 -5 7 -0.5 0 1.2; +[269] AxoGluon 80 10 10 10 -5 7 0.5 0 1.2; +[270] AxoGluon 80 10 10 10 -5 7 -0.5 0 1.2; +[271] Grid 0 0 10 10 9 7 0.5; +[272] AxoGluonArc 45 20 40 20 160 5 8 0 0 0 0.5; +[273] AxoGluonArc 45 0 40 20 160 -5 8 0 0 0 0.5; +[274] Grid 0 0 10 10 8 8 0.5; +[275] AxoGluonCirc 40 40 30 0 5 16 0 0 0.5; +[276] Grid 0 0 10 10 8 8 0.5; +[277] AxoGluonArc 40 40 30 0 360 5 16 0 0 0 0.5; +[278] AxoGluon 7 30 27 30 3 3 0 0 0.5; +[279] AxoGluonCirc 50 30 20 0 3 16 0 0 0.5; +[280] AxoGluon 73 30 93 30 3 3 0 0 0.5; +[281] Vertex 27 30 1.5 0.5; +[282] Vertex 73 30 1.5 0.5; +[283] AxoGluon 110 30 130 30 3 3 0 0 0.5; +[284] AxoGluonArc 150 30 20 0 180 3 8 0 0 0 0.5; +[285] AxoGluonArc 150 30 20 180 360 3 8 0 0 0 0.5; +[286] AxoGluon 170 30 190 30 3 3 0 0 0.5; +[287] Vertex 130 30 1.5 0.5; +[288] Vertex 170 30 1.5 0.5; +[289] AxoGluon 210 30 230 30 3 3 0 0 0.5; +[290] AxoGluonArc 250 30 20 0 180 -3 8 0 0 0 0.5; +[291] AxoGluonArc 250 30 20 180 360 -3 8 0 0 0 0.5; +[292] AxoGluon 270 30 290 30 3 3 0 0 0.5; +[293] Vertex 230 30 1.5 0.5; +[294] Vertex 270 30 1.5 0.5; +[295] AxoLine 310 30 330 30 0 3 0 0 0 0 0 0 0 0 0 0.5; +[296] AxoGluonArc 350 30 20 -180 180 3 16 0 0 0 0.5; +[297] Vertex 330 30 1.5 0.5; +[298] AxoLine 387 30 407 30 0 3 0 0 0 0 0 0 0 0 0 0.5; +[299] AxoGluonCirc 430 30 20 0 3 16 0 0 0.5; +[300] Vertex 407 30 1.5 0.5; +[301] Grid 0 0 10 10 15 10 0.5; +[302] AxoLine 10 50 100 50 0 0 3 40 0 0.3 1 1 1 1 0 3; +[303] AxoLine 55 50 55 90 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5; +[304] AxoLine 60 5 84 5 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5; +[305] AxoLine 60 95 140 95 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5; +[306] Grid 0 0 10 10 9 8 0.5; +[307] AxoLine 10 70 80 70 0 0 0 0 0 0.2 2 1.25 0.5 1 0 0.5; +[308] AxoLine 10 50 80 50 0 0 0 0 0 0.2 1 1.25 0.8 1 1 0.5; +[309] AxoLine 10 30 80 30 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[310] AxoLine 10 10 80 10 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[311] Grid 0 0 10 10 9 6 0.5; +[312] AxoLine 10 30 80 30 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5; +[313] AxoLine 10 10 80 10 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5; +[314] AxoLine 10 50 70 50 0 0 0 0 0 0.2 0.8 1.25 1 1 0 4; +[315] Grid 0 0 10 10 9 10 0.5; +[316] AxoLine 10 90 75 90 5 0 1 0 0 0.2 1.3 1.25 1 1 0 0.5; +[317] AxoLine 10 70 80 70 2 0 1 0 0 0.2 1.5 1.25 1 1 0 0.5; +[318] AxoLine 10 50 80 50 2 0 1 0 0 0.2 1 1.25 1 1 0 0.5; +[319] AxoLine 10 30 80 30 2 0 1 0 0 0.2 1 1.25 0.5 1 0 0.5; +[320] AxoLine 10 10 80 10 2 0 1 0 0 0.2 1 1.25 0.5 1 0 0.5; +[321] Grid 0 0 10 10 9 8 0.5; +[322] AxoLine 10 70 80 70 0 3 0 0 0 0.2 1.5 1.25 0.3 1 0 0.5; +[323] AxoLine 10 50 80 50 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[324] AxoLine 10 30 80 30 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[325] AxoLine 10 10 80 10 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[326] Grid 0 0 10 10 9 8 0.5; +[327] AxoLine 10 70 80 70 1.5 3 0.5 0 0 0.2 1.5 1.25 1 1 0 0.5; +[328] AxoLine 10 50 80 50 1.5 3 0.5 0 0 0.2 1 1.25 0.5 1 0 0.5; +[329] AxoLine 10 30 80 30 1.5 3 0.5 0 0 0.2 1 1.25 0.5 1 0 0.5; +[330] AxoLine 10 10 80 10 1.5 3 0.5 0 0 0.2 1 1.25 0.5 1 0 0.5; +[331] Grid 0 0 10 10 9 8 0.5; +[332] AxoLine 10 70 80 70 0 3 0 0 0 0.2 1.5 1.25 0 1 1 0.5; +[333] AxoLine 10 50 80 50 0 3 0 0 0 0.2 1 1.25 1 1 0 0.5; +[334] AxoLine 10 30 80 30 0 3 0 0 0 0.2 1 1.25 1 1 0 0.5; +[335] AxoLine 10 10 80 10 0 3 0 0 0 0.2 1 1.25 1 1 0 0.5; +[336] Grid 0 0 10 10 9 14 0.5; +[337] AxoArc 45 95 40 160 20 0 0 0 0 0 0.2 1 1.25 1 1 0 1 0.5; +[338] AxoArc 45 80 40 160 20 0 0 0 0 0 0.2 1 1.25 1 1 0 1 0.5; +[339] AxoArc 45 65 40 160 20 0 0 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5; +[340] AxoArc 45 50 40 160 20 0 0 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5; +[341] AxoArc 45 35 40 20 160 0 0 0 0 0 0.2 1 1.25 1 1 0 0 0.5; +[342] AxoArc 45 20 40 20 160 0 0 0 0 0 0.2 1 1.25 1 1 0 0 0.5; +[343] AxoArc 45 5 40 20 160 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[344] AxoArc 45 -10 40 20 160 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[345] Grid 0 0 10 10 9 11 0.5; +[346] AxoArc 45 65 40 160 20 0 3 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5; +[347] AxoArc 45 50 40 160 20 0 3 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5; +[348] AxoArc 45 35 40 20 160 0 3 0 0 0 0.2 1 1.25 1 1 0 0 0.5; +[349] AxoArc 45 20 40 20 160 0 3 0 0 0 0.2 1 1.25 1 1 0 0 0.5; +[350] AxoArc 45 5 40 20 160 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[351] AxoArc 45 -10 40 20 160 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[352] Grid 0 0 10 10 9 8 0.5; +[353] AxoArc 45 35 40 20 160 1.5 3 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[354] AxoArc 45 20 40 20 160 1.5 3 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[355] AxoArc 45 5 40 20 160 1.5 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[356] AxoArc 45 -10 40 20 160 1.5 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[357] Grid 0 0 10 10 8 8 0.5; +[358] AxoBezier 10 10 30 30 10 50 30 70 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[359] AxoBezier 30 10 50 30 30 50 50 70 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5; +[360] AxoBezier 50 10 70 30 50 50 70 70 1 0 0.5 0 0 0.2 1 1.25 1 1 0 0.5; +[361] AxoArc 30 0 30 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[362] FBoxc 0 0 30.0 12.747 0.5; +[363] Boxc 0 0 30.0 12.747 0.5; +[364] AxoArc 30 0 30 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[365] FBoxc 0 0 30.0 12.747 0.5; +[366] Boxc 0 0 30.0 12.747 0.5; +[367] AxoArc 30 0 30 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[368] FBoxc 0 0 30.0 12.747 0.5; +[369] Boxc 0 0 30.0 12.747 0.5; +[370] AxoArc 30 0 30 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5; +[371] FBoxc 0 0 30.0 12.747 0.5; +[372] Boxc 0 0 30.0 12.747 0.5; +[373] AxoLine 0 10 40 30 0 0 0 0 0 0 0 0 0 0 0 0.5; +[374] AxoLine 0 10 40 30 0 0 0 0 0 0 0 0 0 0 0 0.5; +[375] AxoGluon 0 10 40 10 4 4 0 0 0.5; +[376] AxoGluon 0 5 30 5 3 4 0 0 0.5; +[377] AxoLine 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 2; +[378] AxoLine 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 2; +[379] AxoPhoton 7 70 37 70 4 3 0 0 0.5; +[380] AxoPhoton 7 70 37 70 -4 3 0 0 0.5; +[381] AxoGluonArc 70 70 30 90 270 3 10 0 0 0 0.5; +[382] AxoLine 100 100 70 100 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5; +[383] AxoLine 130 100 100 100 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5; +[384] AxoLine 70 100 130 40 0 0 0.5 0 0 0.2 0.8 1.25 0.25 1 0 0.5; +[385] AxoLine 100 40 70 40 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5; +[386] AxoLine 130 40 100 40 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5; +[387] AxoLine 70 40 130 100 0 0 0.5 0 0 0.2 0.8 1.25 0.75 1 0 0.5; +[388] AxoGluonArc 130 70 30 270 450 3 10 0 0 0 0.5; +[389] AxoPhoton 163 70 193 70 4 3 0 0 0.5; +[390] AxoPhoton 163 70 193 70 -4 3 0 0 0.5; +[391] AxoGluon 100 100 100 130 3 4 0 0 0.5; +[392] AxoGluon 100 40 100 10 3 4 0 0 0.5; +[393] Vertex 37 70 2 0.5; +[394] Vertex 163 70 2 0.5; +[395] Vertex 70 100 2 0.5; +[396] Vertex 70 40 2 0.5; +[397] Vertex 130 100 2 0.5; +[398] Vertex 130 40 2 0.5; +[399] Vertex 100 100 2 0.5; +[400] Vertex 100 40 2 0.5; +[401] AxoPhoton 7 70 40 70 4 3 0 0 0.5; +[402] AxoPhoton 7 70 40 70 -4 3 0 0 0.5; +[403] AxoGluonArc 70 70 30 180 270 3 5 0 0 0 0.5; +[404] AxoBezier 100 100 55 100 40 95 40 70 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5; +[405] AxoLine 130 100 100 100 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5; +[406] AxoBezier 40 70 110 70 130 70 130 40 0 0 0.5 0 0 0.2 0.8 1.25 0.37 1 0 0.5; +[407] AxoLine 100 40 70 40 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5; +[408] AxoLine 130 40 100 40 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5; +[409] AxoLine 70 40 130 100 0 0 0.5 0 0 0.2 0.8 1.25 0.75 1 0 0.5; +[410] AxoGluonArc 130 70 30 270 450 3 10 0 0 0 0.5; +[411] AxoPhoton 163 70 193 70 4 3 0 0 0.5; +[412] AxoPhoton 163 70 193 70 -4 3 0 0 0.5; +[413] AxoGluon 100 100 100 130 3 4 0 0 0.5; +[414] AxoGluon 100 40 100 10 3 4 0 0 0.5; +[415] Vertex 40 70 2 0.5; +[416] Vertex 163 70 2 0.5; +[417] Vertex 70 40 2 0.5; +[418] Vertex 130 100 2 0.5; +[419] Vertex 130 40 2 0.5; +[420] Vertex 100 100 2 0.5; +[421] Vertex 100 40 2 0.5; +[422] AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[423] AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[424] AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[425] AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5; +[426] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[427] AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[428] AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[429] AxoLine 50 35 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[430] AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[431] AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3; +[432] Vertex 50 60 1.3 3; +[433] AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[434] AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[435] AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[436] AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5; +[437] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[438] AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[439] AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[440] AxoLine 50 35 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[441] AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[442] AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3; +[443] Vertex 50 60 1.3 3; +[444] AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[445] AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[446] AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[447] AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5; +[448] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[449] AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[450] AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[451] AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[452] AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3; +[453] AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[454] AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[455] AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[456] AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5; +[457] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[458] AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[459] AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[460] AxoLine 50 35 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[461] AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[462] AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3; +[463] Vertex 50 60 1.3 3; +[464] AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[465] AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[466] AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[467] AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5; +[468] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[469] AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[470] AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[471] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[472] Vertex 50 60 1.3 3; +[473] AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[474] AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3; +[475] AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[476] AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[477] AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[478] AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5; +[479] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[480] AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[481] AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[482] AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[483] AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3; +[484] AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[485] AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5; +[486] AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[487] AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5; +[488] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5; +[489] AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[490] AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5; +[491] AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[492] Vertex 50 60 1.3 3; +[493] AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3; +[494] AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3; diff --git a/Build/source/utils/axodraw2/axodraw2-src/test.ax2-std b/Build/source/utils/axodraw2/axodraw2-src/test.ax2-std new file mode 100644 index 00000000000..45a4cf5002c --- /dev/null +++ b/Build/source/utils/axodraw2/axodraw2-src/test.ax2-std @@ -0,0 +1,1482 @@ +\axo@setObject{1}% +{AxoLine 0 2 35 2 2.5 0 0 0 0 0 0 0 0 0 0 1;}% +{ 1 w q 3.5 w 0 2 m 35 2 l S 1.5 w 0 0 0 0 K 0 2 m 35 2 l S Q} +\axo@setObject{2}% +{AxoLine 0 2 30 2 0 0 0 0 0 0.2 1 1.25 0.8 1 0 1;}% +{ 1 w 0 2 m 30 2 l S 1 0 0 1 0 2 cm 1 0 0 1 24 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{3}% +{AxoArc 100 50 40 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 100 50 cm 40 0 m 40 22.091 22.091 40 0 40 c -22.091 40 -40 22.091 -40 0 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{4}% +{AxoArc 100 50 40 180 360 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 100 50 cm -40 0 m -40 -22.091 -22.091 -40 0 -40 c 22.091 -40 40 -22.091 40 0 c S 1 0 0 1 0 -40 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{5}% +{AxoGluon 0 50 60 50 5 4 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 0 50 cm 12 -5 m 16.5 -5 16.5 5 8.4 5 c 3 5 0.6 2.5 0 0 c S 12 -5 m 7.5 -5 7.5 5 18 5 c 28.5 5 28.5 -5 24 -5 c 19.5 -5 19.5 5 30 5 c 40.5 5 40.5 -5 36 -5 c 31.5 -5 31.5 5 42 5 c 52.5 5 52.5 -5 48 -5 c 43.5 -5 43.5 5 51.6 5 c 57 5 59.4 2.5 60 0 c S} +\axo@setObject{6}% +{Vertex 60 50 2 0.5;}% +{ 0.5 w 1 0 0 1 60 50 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{7}% +{AxoGluon 140 50 200 50 5 4 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 140 50 cm 12 -5 m 16.5 -5 16.5 5 8.4 5 c 3 5 0.6 2.5 0 0 c S 12 -5 m 7.5 -5 7.5 5 18 5 c 28.5 5 28.5 -5 24 -5 c 19.5 -5 19.5 5 30 5 c 40.5 5 40.5 -5 36 -5 c 31.5 -5 31.5 5 42 5 c 52.5 5 52.5 -5 48 -5 c 43.5 -5 43.5 5 51.6 5 c 57 5 59.4 2.5 60 0 c S} +\axo@setObject{8}% +{Vertex 140 50 2 0.5;}% +{ 0.5 w 1 0 0 1 140 50 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{9}% +{Grid 0 0 10 10 9 14 0.5;}% +{ 0.5 w 0 0 m 0 140 l S 10 0 m 10 140 l S 20 0 m 20 140 l S 30 0 m 30 140 l S 40 0 m 40 140 l S 50 0 m 50 140 l S 60 0 m 60 140 l S 70 0 m 70 140 l S 80 0 m 80 140 l S 90 0 m 90 140 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S 0 100 m 90 100 l S 0 110 m 90 110 l S 0 120 m 90 120 l S 0 130 m 90 130 l S 0 140 m 90 140 l S} +\axo@setObject{10}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{11}% +{AxoLine 10 10 80 30 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 10 10 m 80 30 l S} +\axo@setObject{12}% +{Grid 0 0 10 10 9 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 90 0 m 90 80 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S} +\axo@setObject{13}% +{AxoLine 10 70 80 70 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 10 70 m 80 70 l S 1 0 0 1 10 70 cm 1 0 0 1 35 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{14}% +{AxoLine 10 50 80 50 0 3 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 50 m 80 50 l S} +\axo@setObject{15}% +{AxoLine 10 30 80 30 2 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w q 2.5 w 10 30 m 80 30 l S 1.5 w 0 0 0 0 K 10 30 m 80 30 l S Q 1 0 0 1 10 30 cm 1 0 0 1 35 0 cm q [] 0 d 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l h f Q} +\axo@setObject{16}% +{AxoLine 10 10 80 10 2 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d q 2.5 w 10 10 m 80 10 l S 1.5 w 0 0 0 0 K 10 10 m 80 10 l S Q 1 0 0 1 10 10 cm 1 0 0 1 35 0 cm q [] 0 d 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l h f Q} +\axo@setObject{17}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{18}% +{AxoLine 10 25 80 25 1 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w q 1.5 w 10 25 m 80 25 l S 0.5 w 0 0 0 0 K 10 25 m 80 25 l S Q} +\axo@setObject{19}% +{AxoLine 10 15 80 15 2 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w q 2.5 w 10 15 m 80 15 l S 1.5 w 0 0 0 0 K 10 15 m 80 15 l S Q} +\axo@setObject{20}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{21}% +{AxoLine 10 25 80 25 0 2 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 1.944] 0.972 d 10 25 m 80 25 l S} +\axo@setObject{22}% +{AxoLine 10 15 80 15 0 6 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 5.833] 2.917 d 10 15 m 80 15 l S} +\axo@setObject{23}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{24}% +{AxoLine 10 25 80 25 1.5 2 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 1.944] 0.972 d q 2 w 10 25 m 80 25 l S 1 w 0 0 0 0 K 10 25 m 80 25 l S Q} +\axo@setObject{25}% +{AxoLine 10 15 80 15 1.5 6 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 5.833] 2.917 d q 2 w 10 15 m 80 15 l S 1 w 0 0 0 0 K 10 15 m 80 15 l S Q} +\axo@setObject{26}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{27}% +{AxoArc 45 0 40 20 160 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S} +\axo@setObject{28}% +{Grid 0 0 10 10 8 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S} +\axo@setObject{29}% +{AxoArc 40 40 30 20 160 0 3 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5;}% +{ 0.5 w [ 2.88] 1.44 d 1 0 0 1 40 40 cm -28.191 10.261 m -32.724 -2.195 -28.547 -16.149 -17.915 -24.064 c -7.283 -31.979 7.283 -31.979 17.915 -24.064 c 28.547 -16.149 32.724 -2.195 28.191 10.261 c S 1 0 0 1 0 -30 cm q [] 0 d -3.125 0 m 3.125 2.5 l 1.875 0 l 3.125 -2.5 l h f Q} +\axo@setObject{30}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{31}% +{AxoArc 45 0 40 20 160 2 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm 38.527 14.023 m 32.632 30.22 17.236 41 0 41 c -17.236 41 -32.632 30.22 -38.527 14.023 c S 36.648 13.339 m 31.04 28.746 16.396 39 0 39 c -16.396 39 -31.04 28.746 -36.648 13.339 c S} +\axo@setObject{32}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{33}% +{AxoArc 45 0 40 20 160 0 4 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 4.072] 2.036 d 1 0 0 1 45 0 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S} +\axo@setObject{34}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{35}% +{AxoArc 45 0 40 20 160 2 4 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm [ 4.072] 2.036 d q 1.025 0 0 1.025 0 0 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S Q q 0.975 0 0 0.975 0 0 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S Q} +\axo@setObject{36}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{37}% +{AxoBezier 10 10 75 30 65 40 20 50 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 10 10 m 75 30 65 40 20 50 c S} +\axo@setObject{38}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{39}% +{AxoBezier 10 10 75 30 65 40 20 50 2 0 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w q 2.5 w 10 10 m 75 30 65 40 20 50 c S Q q 1.5 w 0 0 0 0 K 10 10 m 75 30 65 40 20 50 c S Q 1 0 0 1 20 50 cm -0.976 0.217 -0.217 -0.976 0 0 cm q [] 0 d 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l h f Q} +\axo@setObject{40}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{41}% +{AxoBezier 10 10 75 30 65 40 20 50 1.5 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w q 2 w 10 10 m 75 30 65 40 20 50 c S Q q 1 w 0 0 0 0 K 10 10 m 75 30 65 40 20 50 c S Q} +\axo@setObject{42}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{43}% +{AxoBezier 10 10 75 30 65 40 20 50 0 4 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 3.95] 1.975 d 10 10 m 75 30 65 40 20 50 c S} +\axo@setObject{44}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{45}% +{AxoBezier 10 10 75 30 65 40 20 50 1.5 4 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 3.95] 1.975 d q 2 w 10 10 m 75 30 65 40 20 50 c S Q q 1 w 0 0 0 0 K 10 10 m 75 30 65 40 20 50 c S Q} +\axo@setObject{46}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{47}% +{Curve "(5,55)(10,32.5)(15,23)(20,18)(25,14.65)(30,12.3)(40,9.5)(55,7)" 0.5;}% +{ 0.5 w 5 55 m 6.667 45.333 8.333 37.833 10 32.5 c 11.667 27.167 13.333 25.417 15 23 c 16.667 20.583 18.333 19.392 20 18 c 21.667 16.608 23.333 15.6 25 14.65 c 26.667 13.7 28.333 12.978 30 12.3 c 33.333 10.944 36.667 10.282 40 9.5 c 45 8.327 50 7.493 55 7 c S} +\axo@setObject{48}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{49}% +{DashCurve "(5,55)(10,32.5)(15,23)(20,18)(25,14.65)(30,12.3)(40,9.5)(55,7)" 4 0.5;}% +{ 0.5 w [ 4] 2 d 5 55 m 6.667 45.333 8.333 37.833 10 32.5 c 11.667 27.167 13.333 25.417 15 23 c 16.667 20.583 18.333 19.392 20 18 c 21.667 16.608 23.333 15.6 25 14.65 c 26.667 13.7 28.333 12.978 30 12.3 c 33.333 10.944 36.667 10.282 40 9.5 c 45 8.327 50 7.493 55 7 c S} +\axo@setObject{50}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{51}% +{AxoGluon 10 20 80 20 5 7 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 10 20 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{52}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{53}% +{AxoGluon 10 20 80 20 4 7 0.5 1 2;}% +{ 2 w 2.5 w 1 0 0 1 10 20 cm [ 0.966] 0.483 d 8.75 -4 m 12.35 -4 12.35 4 6.125 4 c 2.188 4 0.438 2 0 0 c S 8.75 -4 m 5.15 -4 5.15 4 13.125 4 c 21.1 4 21.1 -4 17.5 -4 c 13.9 -4 13.9 4 21.875 4 c 29.85 4 29.85 -4 26.25 -4 c 22.65 -4 22.65 4 30.625 4 c 38.6 4 38.6 -4 35 -4 c 31.4 -4 31.4 4 39.375 4 c 47.35 4 47.35 -4 43.75 -4 c 40.15 -4 40.15 4 48.125 4 c 56.1 4 56.1 -4 52.5 -4 c 48.9 -4 48.9 4 56.875 4 c 64.85 4 64.85 -4 61.25 -4 c 57.65 -4 57.65 4 63.875 4 c 67.812 4 69.562 2 70 0 c S} +\axo@setObject{54}% +{AxoGluon 10 20 80 20 4 7 -0.5 0 2;}% +{ 2 w 1.5 w 1 0 0 1 10 20 cm 8.75 -4 m 12.35 -4 12.35 4 6.125 4 c 2.188 4 0.438 2 0 0 c S 8.75 -4 m 5.15 -4 5.15 4 13.125 4 c 21.1 4 21.1 -4 17.5 -4 c 13.9 -4 13.9 4 21.875 4 c 29.85 4 29.85 -4 26.25 -4 c 22.65 -4 22.65 4 30.625 4 c 38.6 4 38.6 -4 35 -4 c 31.4 -4 31.4 4 39.375 4 c 47.35 4 47.35 -4 43.75 -4 c 40.15 -4 40.15 4 48.125 4 c 56.1 4 56.1 -4 52.5 -4 c 48.9 -4 48.9 4 56.875 4 c 64.85 4 64.85 -4 61.25 -4 c 57.65 -4 57.65 4 63.875 4 c 67.812 4 69.562 2 70 0 c S} +\axo@setObject{55}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{56}% +{AxoGluon 10 20 80 20 5 7 0.5 0 1.3;}% +{ 1.3 w 1.8 w 1 0 0 1 10 20 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{57}% +{AxoGluon 10 20 80 20 5 7 -0.5 0 1.3;}% +{ 1.3 w 0.8 w 1 0 0 1 10 20 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{58}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{59}% +{AxoGluon 10 20 80 20 5 7 0 1 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 10 20 cm [ 1.008] 0.504 d 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{60}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{61}% +{AxoGluon 10 20 80 20 5 7 0.5 1 1.3;}% +{ 1.3 w 1.8 w 1 0 0 1 10 20 cm [ 1.008] 0.504 d 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{62}% +{AxoGluon 10 20 80 20 5 7 -0.5 0 1.3;}% +{ 1.3 w 0.8 w 1 0 0 1 10 20 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{63}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{64}% +{AxoGluonArc 45 0 40 20 160 5 8 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm 33.718 9.386 m 32.658 13.195 42.52 17.18 44.19 8.501 c 45.234 3.075 42.496 0.577 40 0 c S 33.718 9.386 m 34.778 5.577 45.838 7.35 41.32 17.824 c 36.802 28.297 27.923 21.47 29.966 18.084 c 32.009 14.699 42.188 19.373 35.026 28.252 c 27.865 37.13 21.142 28.172 24.018 25.458 c 26.895 22.745 35.447 29.977 26.167 36.61 c 16.887 43.243 12.813 32.809 16.312 30.967 c 19.81 29.124 26.109 38.385 15.391 42.286 c 4.672 46.187 3.545 35.044 7.41 34.207 c 11.274 33.37 14.859 43.981 3.487 44.865 c -7.885 45.749 -5.983 34.711 -2.035 34.941 c 1.912 35.171 2.521 46.355 -8.672 44.156 c -19.865 41.958 -15.072 31.835 -11.331 33.115 c -7.589 34.395 -10.003 45.333 -20.196 40.213 c -30.389 35.094 -23.057 26.627 -19.796 28.864 c -16.535 31.1 -21.529 40.492 -28.387 34.917 c -32.674 31.431 -32.183 27.758 -30.642 25.712 c S} +\axo@setObject{65}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{66}% +{AxoGluonArc 45 0 40 20 160 5 8 0.5 0 0 1.3;}% +{ 1.3 w 1.8 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm 33.718 9.386 m 32.658 13.195 42.52 17.18 44.19 8.501 c 45.234 3.075 42.496 0.577 40 0 c S 33.718 9.386 m 34.778 5.577 45.838 7.35 41.32 17.824 c 36.802 28.297 27.923 21.47 29.966 18.084 c 32.009 14.699 42.188 19.373 35.026 28.252 c 27.865 37.13 21.142 28.172 24.018 25.458 c 26.895 22.745 35.447 29.977 26.167 36.61 c 16.887 43.243 12.813 32.809 16.312 30.967 c 19.81 29.124 26.109 38.385 15.391 42.286 c 4.672 46.187 3.545 35.044 7.41 34.207 c 11.274 33.37 14.859 43.981 3.487 44.865 c -7.885 45.749 -5.983 34.711 -2.035 34.941 c 1.912 35.171 2.521 46.355 -8.672 44.156 c -19.865 41.958 -15.072 31.835 -11.331 33.115 c -7.589 34.395 -10.003 45.333 -20.196 40.213 c -30.389 35.094 -23.057 26.627 -19.796 28.864 c -16.535 31.1 -21.529 40.492 -28.387 34.917 c -32.674 31.431 -32.183 27.758 -30.642 25.712 c S} +\axo@setObject{67}% +{AxoGluonArc 45 0 40 20 160 5 8 -0.5 0 0 1.3;}% +{ 1.3 w 0.8 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm 33.718 9.386 m 32.658 13.195 42.52 17.18 44.19 8.501 c 45.234 3.075 42.496 0.577 40 0 c S 33.718 9.386 m 34.778 5.577 45.838 7.35 41.32 17.824 c 36.802 28.297 27.923 21.47 29.966 18.084 c 32.009 14.699 42.188 19.373 35.026 28.252 c 27.865 37.13 21.142 28.172 24.018 25.458 c 26.895 22.745 35.447 29.977 26.167 36.61 c 16.887 43.243 12.813 32.809 16.312 30.967 c 19.81 29.124 26.109 38.385 15.391 42.286 c 4.672 46.187 3.545 35.044 7.41 34.207 c 11.274 33.37 14.859 43.981 3.487 44.865 c -7.885 45.749 -5.983 34.711 -2.035 34.941 c 1.912 35.171 2.521 46.355 -8.672 44.156 c -19.865 41.958 -15.072 31.835 -11.331 33.115 c -7.589 34.395 -10.003 45.333 -20.196 40.213 c -30.389 35.094 -23.057 26.627 -19.796 28.864 c -16.535 31.1 -21.529 40.492 -28.387 34.917 c -32.674 31.431 -32.183 27.758 -30.642 25.712 c S} +\axo@setObject{68}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{69}% +{AxoGluonArc 45 0 40 20 160 5 8 0 1.5 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm [ 1.461] 0.731 d 33.718 9.386 m 32.658 13.195 42.52 17.18 44.19 8.501 c 45.234 3.075 42.496 0.577 40 0 c S 33.718 9.386 m 34.778 5.577 45.838 7.35 41.32 17.824 c 36.802 28.297 27.923 21.47 29.966 18.084 c 32.009 14.699 42.188 19.373 35.026 28.252 c 27.865 37.13 21.142 28.172 24.018 25.458 c 26.895 22.745 35.447 29.977 26.167 36.61 c 16.887 43.243 12.813 32.809 16.312 30.967 c 19.81 29.124 26.109 38.385 15.391 42.286 c 4.672 46.187 3.545 35.044 7.41 34.207 c 11.274 33.37 14.859 43.981 3.487 44.865 c -7.885 45.749 -5.983 34.711 -2.035 34.941 c 1.912 35.171 2.521 46.355 -8.672 44.156 c -19.865 41.958 -15.072 31.835 -11.331 33.115 c -7.589 34.395 -10.003 45.333 -20.196 40.213 c -30.389 35.094 -23.057 26.627 -19.796 28.864 c -16.535 31.1 -21.529 40.492 -28.387 34.917 c -32.674 31.431 -32.183 27.758 -30.642 25.712 c S} +\axo@setObject{70}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{71}% +{AxoGluonArc 45 0 40 20 160 5 8 0.5 1.5 0 1.3;}% +{ 1.3 w 1.8 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm [ 1.461] 0.731 d 33.718 9.386 m 32.658 13.195 42.52 17.18 44.19 8.501 c 45.234 3.075 42.496 0.577 40 0 c S 33.718 9.386 m 34.778 5.577 45.838 7.35 41.32 17.824 c 36.802 28.297 27.923 21.47 29.966 18.084 c 32.009 14.699 42.188 19.373 35.026 28.252 c 27.865 37.13 21.142 28.172 24.018 25.458 c 26.895 22.745 35.447 29.977 26.167 36.61 c 16.887 43.243 12.813 32.809 16.312 30.967 c 19.81 29.124 26.109 38.385 15.391 42.286 c 4.672 46.187 3.545 35.044 7.41 34.207 c 11.274 33.37 14.859 43.981 3.487 44.865 c -7.885 45.749 -5.983 34.711 -2.035 34.941 c 1.912 35.171 2.521 46.355 -8.672 44.156 c -19.865 41.958 -15.072 31.835 -11.331 33.115 c -7.589 34.395 -10.003 45.333 -20.196 40.213 c -30.389 35.094 -23.057 26.627 -19.796 28.864 c -16.535 31.1 -21.529 40.492 -28.387 34.917 c -32.674 31.431 -32.183 27.758 -30.642 25.712 c S} +\axo@setObject{72}% +{AxoGluonArc 45 0 40 20 160 5 8 -0.5 0 0 1.3;}% +{ 1.3 w 0.8 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm 33.718 9.386 m 32.658 13.195 42.52 17.18 44.19 8.501 c 45.234 3.075 42.496 0.577 40 0 c S 33.718 9.386 m 34.778 5.577 45.838 7.35 41.32 17.824 c 36.802 28.297 27.923 21.47 29.966 18.084 c 32.009 14.699 42.188 19.373 35.026 28.252 c 27.865 37.13 21.142 28.172 24.018 25.458 c 26.895 22.745 35.447 29.977 26.167 36.61 c 16.887 43.243 12.813 32.809 16.312 30.967 c 19.81 29.124 26.109 38.385 15.391 42.286 c 4.672 46.187 3.545 35.044 7.41 34.207 c 11.274 33.37 14.859 43.981 3.487 44.865 c -7.885 45.749 -5.983 34.711 -2.035 34.941 c 1.912 35.171 2.521 46.355 -8.672 44.156 c -19.865 41.958 -15.072 31.835 -11.331 33.115 c -7.589 34.395 -10.003 45.333 -20.196 40.213 c -30.389 35.094 -23.057 26.627 -19.796 28.864 c -16.535 31.1 -21.529 40.492 -28.387 34.917 c -32.674 31.431 -32.183 27.758 -30.642 25.712 c S} +\axo@setObject{73}% +{Grid 0 0 10 10 8 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S} +\axo@setObject{74}% +{AxoGluonCirc 40 40 30 0 5 16 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 40 40 cm 0.981 0.195 -0.195 0.981 0 0 cm 34.327 6.828 m 31.863 19.217 21.651 13.058 23.097 9.567 c 24.543 6.076 36.119 8.942 29.101 19.445 c 22.084 29.948 15.006 20.349 17.678 17.678 c 20.349 15.006 29.948 22.084 19.445 29.101 c 8.942 36.119 6.076 24.543 9.567 23.097 c 13.058 21.651 19.217 31.863 6.828 34.327 c -5.561 36.792 -3.778 25 0 25 c 3.778 25 5.561 36.792 -6.828 34.327 c -19.217 31.863 -13.058 21.651 -9.567 23.097 c -6.076 24.543 -8.942 36.119 -19.445 29.101 c -29.948 22.084 -20.349 15.006 -17.678 17.678 c -15.006 20.349 -22.084 29.948 -29.101 19.445 c -36.119 8.942 -24.543 6.076 -23.097 9.567 c -21.651 13.058 -31.863 19.217 -34.327 6.828 c -36.792 -5.561 -25 -3.778 -25 0 c -25 3.778 -36.792 5.561 -34.327 -6.828 c -31.863 -19.217 -21.651 -13.058 -23.097 -9.567 c -24.543 -6.076 -36.119 -8.942 -29.101 -19.445 c -22.084 -29.948 -15.006 -20.349 -17.678 -17.678 c -20.349 -15.006 -29.948 -22.084 -19.445 -29.101 c -8.942 -36.119 -6.076 -24.543 -9.567 -23.097 c -13.058 -21.651 -19.217 -31.863 -6.828 -34.327 c 5.561 -36.792 3.778 -25 0 -25 c -3.778 -25 -5.561 -36.792 6.828 -34.327 c 19.217 -31.863 13.058 -21.651 9.567 -23.097 c 6.076 -24.543 8.942 -36.119 19.445 -29.101 c 29.948 -22.084 20.349 -15.006 17.678 -17.678 c 15.006 -20.349 22.084 -29.948 29.101 -19.445 c 36.119 -8.942 24.543 -6.076 23.097 -9.567 c 21.651 -13.058 31.863 -19.217 34.327 -6.828 c 36.792 5.561 25 3.778 25 0 c 25 -3.778 36.792 -5.561 34.327 6.828 c S} +\axo@setObject{75}% +{Grid 0 0 10 10 8 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S} +\axo@setObject{76}% +{AxoGluonCirc 40 40 30 0 5 16 0.5 0 1.3;}% +{ 1.3 w 1.8 w 1 0 0 1 40 40 cm 0.981 0.195 -0.195 0.981 0 0 cm 34.327 6.828 m 31.863 19.217 21.651 13.058 23.097 9.567 c 24.543 6.076 36.119 8.942 29.101 19.445 c 22.084 29.948 15.006 20.349 17.678 17.678 c 20.349 15.006 29.948 22.084 19.445 29.101 c 8.942 36.119 6.076 24.543 9.567 23.097 c 13.058 21.651 19.217 31.863 6.828 34.327 c -5.561 36.792 -3.778 25 0 25 c 3.778 25 5.561 36.792 -6.828 34.327 c -19.217 31.863 -13.058 21.651 -9.567 23.097 c -6.076 24.543 -8.942 36.119 -19.445 29.101 c -29.948 22.084 -20.349 15.006 -17.678 17.678 c -15.006 20.349 -22.084 29.948 -29.101 19.445 c -36.119 8.942 -24.543 6.076 -23.097 9.567 c -21.651 13.058 -31.863 19.217 -34.327 6.828 c -36.792 -5.561 -25 -3.778 -25 0 c -25 3.778 -36.792 5.561 -34.327 -6.828 c -31.863 -19.217 -21.651 -13.058 -23.097 -9.567 c -24.543 -6.076 -36.119 -8.942 -29.101 -19.445 c -22.084 -29.948 -15.006 -20.349 -17.678 -17.678 c -20.349 -15.006 -29.948 -22.084 -19.445 -29.101 c -8.942 -36.119 -6.076 -24.543 -9.567 -23.097 c -13.058 -21.651 -19.217 -31.863 -6.828 -34.327 c 5.561 -36.792 3.778 -25 0 -25 c -3.778 -25 -5.561 -36.792 6.828 -34.327 c 19.217 -31.863 13.058 -21.651 9.567 -23.097 c 6.076 -24.543 8.942 -36.119 19.445 -29.101 c 29.948 -22.084 20.349 -15.006 17.678 -17.678 c 15.006 -20.349 22.084 -29.948 29.101 -19.445 c 36.119 -8.942 24.543 -6.076 23.097 -9.567 c 21.651 -13.058 31.863 -19.217 34.327 -6.828 c 36.792 5.561 25 3.778 25 0 c 25 -3.778 36.792 -5.561 34.327 6.828 c S} +\axo@setObject{77}% +{AxoGluonCirc 40 40 30 0 5 16 -0.5 0 1.3;}% +{ 1.3 w 0.8 w 1 0 0 1 40 40 cm 0.981 0.195 -0.195 0.981 0 0 cm 34.327 6.828 m 31.863 19.217 21.651 13.058 23.097 9.567 c 24.543 6.076 36.119 8.942 29.101 19.445 c 22.084 29.948 15.006 20.349 17.678 17.678 c 20.349 15.006 29.948 22.084 19.445 29.101 c 8.942 36.119 6.076 24.543 9.567 23.097 c 13.058 21.651 19.217 31.863 6.828 34.327 c -5.561 36.792 -3.778 25 0 25 c 3.778 25 5.561 36.792 -6.828 34.327 c -19.217 31.863 -13.058 21.651 -9.567 23.097 c -6.076 24.543 -8.942 36.119 -19.445 29.101 c -29.948 22.084 -20.349 15.006 -17.678 17.678 c -15.006 20.349 -22.084 29.948 -29.101 19.445 c -36.119 8.942 -24.543 6.076 -23.097 9.567 c -21.651 13.058 -31.863 19.217 -34.327 6.828 c -36.792 -5.561 -25 -3.778 -25 0 c -25 3.778 -36.792 5.561 -34.327 -6.828 c -31.863 -19.217 -21.651 -13.058 -23.097 -9.567 c -24.543 -6.076 -36.119 -8.942 -29.101 -19.445 c -22.084 -29.948 -15.006 -20.349 -17.678 -17.678 c -20.349 -15.006 -29.948 -22.084 -19.445 -29.101 c -8.942 -36.119 -6.076 -24.543 -9.567 -23.097 c -13.058 -21.651 -19.217 -31.863 -6.828 -34.327 c 5.561 -36.792 3.778 -25 0 -25 c -3.778 -25 -5.561 -36.792 6.828 -34.327 c 19.217 -31.863 13.058 -21.651 9.567 -23.097 c 6.076 -24.543 8.942 -36.119 19.445 -29.101 c 29.948 -22.084 20.349 -15.006 17.678 -17.678 c 15.006 -20.349 22.084 -29.948 29.101 -19.445 c 36.119 -8.942 24.543 -6.076 23.097 -9.567 c 21.651 -13.058 31.863 -19.217 34.327 -6.828 c 36.792 5.561 25 3.778 25 0 c 25 -3.778 36.792 -5.561 34.327 6.828 c S} +\axo@setObject{78}% +{Grid 0 0 10 10 8 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S} +\axo@setObject{79}% +{AxoGluonCirc 40 40 30 0 5 16 0 1.5 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 40 40 cm 0.981 0.195 -0.195 0.981 0 0 cm [ 1.524] 0.762 d 34.327 6.828 m 31.863 19.217 21.651 13.058 23.097 9.567 c 24.543 6.076 36.119 8.942 29.101 19.445 c 22.084 29.948 15.006 20.349 17.678 17.678 c 20.349 15.006 29.948 22.084 19.445 29.101 c 8.942 36.119 6.076 24.543 9.567 23.097 c 13.058 21.651 19.217 31.863 6.828 34.327 c -5.561 36.792 -3.778 25 0 25 c 3.778 25 5.561 36.792 -6.828 34.327 c -19.217 31.863 -13.058 21.651 -9.567 23.097 c -6.076 24.543 -8.942 36.119 -19.445 29.101 c -29.948 22.084 -20.349 15.006 -17.678 17.678 c -15.006 20.349 -22.084 29.948 -29.101 19.445 c -36.119 8.942 -24.543 6.076 -23.097 9.567 c -21.651 13.058 -31.863 19.217 -34.327 6.828 c -36.792 -5.561 -25 -3.778 -25 0 c -25 3.778 -36.792 5.561 -34.327 -6.828 c -31.863 -19.217 -21.651 -13.058 -23.097 -9.567 c -24.543 -6.076 -36.119 -8.942 -29.101 -19.445 c -22.084 -29.948 -15.006 -20.349 -17.678 -17.678 c -20.349 -15.006 -29.948 -22.084 -19.445 -29.101 c -8.942 -36.119 -6.076 -24.543 -9.567 -23.097 c -13.058 -21.651 -19.217 -31.863 -6.828 -34.327 c 5.561 -36.792 3.778 -25 0 -25 c -3.778 -25 -5.561 -36.792 6.828 -34.327 c 19.217 -31.863 13.058 -21.651 9.567 -23.097 c 6.076 -24.543 8.942 -36.119 19.445 -29.101 c 29.948 -22.084 20.349 -15.006 17.678 -17.678 c 15.006 -20.349 22.084 -29.948 29.101 -19.445 c 36.119 -8.942 24.543 -6.076 23.097 -9.567 c 21.651 -13.058 31.863 -19.217 34.327 -6.828 c 36.792 5.561 25 3.778 25 0 c 25 -3.778 36.792 -5.561 34.327 6.828 c S} +\axo@setObject{80}% +{Grid 0 0 10 10 8 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S} +\axo@setObject{81}% +{AxoGluonCirc 40 40 30 0 5 16 0.5 1.5 1.3;}% +{ 1.3 w 1.8 w 1 0 0 1 40 40 cm 0.981 0.195 -0.195 0.981 0 0 cm [ 1.524] 0.762 d 34.327 6.828 m 31.863 19.217 21.651 13.058 23.097 9.567 c 24.543 6.076 36.119 8.942 29.101 19.445 c 22.084 29.948 15.006 20.349 17.678 17.678 c 20.349 15.006 29.948 22.084 19.445 29.101 c 8.942 36.119 6.076 24.543 9.567 23.097 c 13.058 21.651 19.217 31.863 6.828 34.327 c -5.561 36.792 -3.778 25 0 25 c 3.778 25 5.561 36.792 -6.828 34.327 c -19.217 31.863 -13.058 21.651 -9.567 23.097 c -6.076 24.543 -8.942 36.119 -19.445 29.101 c -29.948 22.084 -20.349 15.006 -17.678 17.678 c -15.006 20.349 -22.084 29.948 -29.101 19.445 c -36.119 8.942 -24.543 6.076 -23.097 9.567 c -21.651 13.058 -31.863 19.217 -34.327 6.828 c -36.792 -5.561 -25 -3.778 -25 0 c -25 3.778 -36.792 5.561 -34.327 -6.828 c -31.863 -19.217 -21.651 -13.058 -23.097 -9.567 c -24.543 -6.076 -36.119 -8.942 -29.101 -19.445 c -22.084 -29.948 -15.006 -20.349 -17.678 -17.678 c -20.349 -15.006 -29.948 -22.084 -19.445 -29.101 c -8.942 -36.119 -6.076 -24.543 -9.567 -23.097 c -13.058 -21.651 -19.217 -31.863 -6.828 -34.327 c 5.561 -36.792 3.778 -25 0 -25 c -3.778 -25 -5.561 -36.792 6.828 -34.327 c 19.217 -31.863 13.058 -21.651 9.567 -23.097 c 6.076 -24.543 8.942 -36.119 19.445 -29.101 c 29.948 -22.084 20.349 -15.006 17.678 -17.678 c 15.006 -20.349 22.084 -29.948 29.101 -19.445 c 36.119 -8.942 24.543 -6.076 23.097 -9.567 c 21.651 -13.058 31.863 -19.217 34.327 -6.828 c 36.792 5.561 25 3.778 25 0 c 25 -3.778 36.792 -5.561 34.327 6.828 c S} +\axo@setObject{82}% +{AxoGluonCirc 40 40 30 0 5 16 -0.5 0 1.3;}% +{ 1.3 w 0.8 w 1 0 0 1 40 40 cm 0.981 0.195 -0.195 0.981 0 0 cm 34.327 6.828 m 31.863 19.217 21.651 13.058 23.097 9.567 c 24.543 6.076 36.119 8.942 29.101 19.445 c 22.084 29.948 15.006 20.349 17.678 17.678 c 20.349 15.006 29.948 22.084 19.445 29.101 c 8.942 36.119 6.076 24.543 9.567 23.097 c 13.058 21.651 19.217 31.863 6.828 34.327 c -5.561 36.792 -3.778 25 0 25 c 3.778 25 5.561 36.792 -6.828 34.327 c -19.217 31.863 -13.058 21.651 -9.567 23.097 c -6.076 24.543 -8.942 36.119 -19.445 29.101 c -29.948 22.084 -20.349 15.006 -17.678 17.678 c -15.006 20.349 -22.084 29.948 -29.101 19.445 c -36.119 8.942 -24.543 6.076 -23.097 9.567 c -21.651 13.058 -31.863 19.217 -34.327 6.828 c -36.792 -5.561 -25 -3.778 -25 0 c -25 3.778 -36.792 5.561 -34.327 -6.828 c -31.863 -19.217 -21.651 -13.058 -23.097 -9.567 c -24.543 -6.076 -36.119 -8.942 -29.101 -19.445 c -22.084 -29.948 -15.006 -20.349 -17.678 -17.678 c -20.349 -15.006 -29.948 -22.084 -19.445 -29.101 c -8.942 -36.119 -6.076 -24.543 -9.567 -23.097 c -13.058 -21.651 -19.217 -31.863 -6.828 -34.327 c 5.561 -36.792 3.778 -25 0 -25 c -3.778 -25 -5.561 -36.792 6.828 -34.327 c 19.217 -31.863 13.058 -21.651 9.567 -23.097 c 6.076 -24.543 8.942 -36.119 19.445 -29.101 c 29.948 -22.084 20.349 -15.006 17.678 -17.678 c 15.006 -20.349 22.084 -29.948 29.101 -19.445 c 36.119 -8.942 24.543 -6.076 23.097 -9.567 c 21.651 -13.058 31.863 -19.217 34.327 -6.828 c 36.792 5.561 25 3.778 25 0 c 25 -3.778 36.792 -5.561 34.327 6.828 c S} +\axo@setObject{83}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{84}% +{AxoPhoton 10 20 80 20 5 7 0 0 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm 0 0 m 2.122 6.667 2.878 6.667 5 0 c 7.122 -6.667 7.878 -6.667 10 0 c 12.122 6.667 12.878 6.667 15 0 c 17.122 -6.667 17.878 -6.667 20 0 c 22.122 6.667 22.878 6.667 25 0 c 27.122 -6.667 27.878 -6.667 30 0 c 32.122 6.667 32.878 6.667 35 0 c 37.122 -6.667 37.878 -6.667 40 0 c 42.122 6.667 42.878 6.667 45 0 c 47.122 -6.667 47.878 -6.667 50 0 c 52.122 6.667 52.878 6.667 55 0 c 57.122 -6.667 57.878 -6.667 60 0 c 62.122 6.667 62.878 6.667 65 0 c 67.122 -6.667 67.878 -6.667 70 0 c S} +\axo@setObject{85}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{86}% +{AxoPhoton 10 20 80 20 5 7 1.3 0 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm q 1.8 w 0 0 m 2.122 6.667 2.878 6.667 5 0 c 7.122 -6.667 7.878 -6.667 10 0 c 12.122 6.667 12.878 6.667 15 0 c 17.122 -6.667 17.878 -6.667 20 0 c 22.122 6.667 22.878 6.667 25 0 c 27.122 -6.667 27.878 -6.667 30 0 c 32.122 6.667 32.878 6.667 35 0 c 37.122 -6.667 37.878 -6.667 40 0 c 42.122 6.667 42.878 6.667 45 0 c 47.122 -6.667 47.878 -6.667 50 0 c 52.122 6.667 52.878 6.667 55 0 c 57.122 -6.667 57.878 -6.667 60 0 c 62.122 6.667 62.878 6.667 65 0 c 67.122 -6.667 67.878 -6.667 70 0 c S Q q 0.8 w 0 0 0 0 K 0 0 m 2.122 6.667 2.878 6.667 5 0 c 7.122 -6.667 7.878 -6.667 10 0 c 12.122 6.667 12.878 6.667 15 0 c 17.122 -6.667 17.878 -6.667 20 0 c 22.122 6.667 22.878 6.667 25 0 c 27.122 -6.667 27.878 -6.667 30 0 c 32.122 6.667 32.878 6.667 35 0 c 37.122 -6.667 37.878 -6.667 40 0 c 42.122 6.667 42.878 6.667 45 0 c 47.122 -6.667 47.878 -6.667 50 0 c 52.122 6.667 52.878 6.667 55 0 c 57.122 -6.667 57.878 -6.667 60 0 c 62.122 6.667 62.878 6.667 65 0 c 67.122 -6.667 67.878 -6.667 70 0 c S Q} +\axo@setObject{87}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{88}% +{AxoPhoton 10 20 80 20 5 7 0 1 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm [ 0.958] 0.479 d 0 0 m 2.122 6.667 2.878 6.667 5 0 c 7.122 -6.667 7.878 -6.667 10 0 c 12.122 6.667 12.878 6.667 15 0 c 17.122 -6.667 17.878 -6.667 20 0 c 22.122 6.667 22.878 6.667 25 0 c 27.122 -6.667 27.878 -6.667 30 0 c 32.122 6.667 32.878 6.667 35 0 c 37.122 -6.667 37.878 -6.667 40 0 c 42.122 6.667 42.878 6.667 45 0 c 47.122 -6.667 47.878 -6.667 50 0 c 52.122 6.667 52.878 6.667 55 0 c 57.122 -6.667 57.878 -6.667 60 0 c 62.122 6.667 62.878 6.667 65 0 c 67.122 -6.667 67.878 -6.667 70 0 c S} +\axo@setObject{89}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{90}% +{AxoPhoton 10 20 80 20 5 7 1.3 1 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm [ 0.958] 0.479 d q 1.8 w 0 0 m 2.122 6.667 2.878 6.667 5 0 c 7.122 -6.667 7.878 -6.667 10 0 c 12.122 6.667 12.878 6.667 15 0 c 17.122 -6.667 17.878 -6.667 20 0 c 22.122 6.667 22.878 6.667 25 0 c 27.122 -6.667 27.878 -6.667 30 0 c 32.122 6.667 32.878 6.667 35 0 c 37.122 -6.667 37.878 -6.667 40 0 c 42.122 6.667 42.878 6.667 45 0 c 47.122 -6.667 47.878 -6.667 50 0 c 52.122 6.667 52.878 6.667 55 0 c 57.122 -6.667 57.878 -6.667 60 0 c 62.122 6.667 62.878 6.667 65 0 c 67.122 -6.667 67.878 -6.667 70 0 c S Q q 0.8 w 0 0 0 0 K 0 0 m 2.122 6.667 2.878 6.667 5 0 c 7.122 -6.667 7.878 -6.667 10 0 c 12.122 6.667 12.878 6.667 15 0 c 17.122 -6.667 17.878 -6.667 20 0 c 22.122 6.667 22.878 6.667 25 0 c 27.122 -6.667 27.878 -6.667 30 0 c 32.122 6.667 32.878 6.667 35 0 c 37.122 -6.667 37.878 -6.667 40 0 c 42.122 6.667 42.878 6.667 45 0 c 47.122 -6.667 47.878 -6.667 50 0 c 52.122 6.667 52.878 6.667 55 0 c 57.122 -6.667 57.878 -6.667 60 0 c 62.122 6.667 62.878 6.667 65 0 c 67.122 -6.667 67.878 -6.667 70 0 c S Q} +\axo@setObject{91}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{92}% +{AxoPhotonArc 45 0 40 20 160 5 8 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm 40 0 m 46.644 2.584 46.495 4.542 39.534 6.085 c 32.484 7.648 32.517 7.508 38.149 12.028 c 43.708 16.491 42.977 18.313 35.875 17.692 c 28.681 17.062 28.754 16.939 32.766 22.943 c 36.727 28.871 35.481 30.389 28.895 27.661 c 22.223 24.897 22.33 24.801 24.35 31.734 c 26.345 38.578 24.701 39.651 19.24 35.069 c 13.707 30.427 13.838 30.368 13.681 37.588 c 13.525 44.715 11.634 45.244 7.804 39.231 c 3.923 33.141 4.066 33.124 1.745 39.962 c -0.547 46.713 -2.509 46.648 -4.355 39.762 c -6.224 32.787 -6.083 32.813 -10.353 38.637 c -14.568 44.386 -16.421 43.735 -16.11 36.612 c -15.795 29.398 -15.668 29.466 -21.492 33.736 c -27.241 37.951 -28.812 36.773 -26.374 30.074 c -23.904 23.288 -23.803 23.39 -30.642 25.712 c S} +\axo@setObject{93}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{94}% +{AxoPhotonArc 45 0 40 20 160 5 8 1.3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm q 1.8 w 40 0 m 46.644 2.584 46.495 4.542 39.534 6.085 c 32.484 7.648 32.517 7.508 38.149 12.028 c 43.708 16.491 42.977 18.313 35.875 17.692 c 28.681 17.062 28.754 16.939 32.766 22.943 c 36.727 28.871 35.481 30.389 28.895 27.661 c 22.223 24.897 22.33 24.801 24.35 31.734 c 26.345 38.578 24.701 39.651 19.24 35.069 c 13.707 30.427 13.838 30.368 13.681 37.588 c 13.525 44.715 11.634 45.244 7.804 39.231 c 3.923 33.141 4.066 33.124 1.745 39.962 c -0.547 46.713 -2.509 46.648 -4.355 39.762 c -6.224 32.787 -6.083 32.813 -10.353 38.637 c -14.568 44.386 -16.421 43.735 -16.11 36.612 c -15.795 29.398 -15.668 29.466 -21.492 33.736 c -27.241 37.951 -28.812 36.773 -26.374 30.074 c -23.904 23.288 -23.803 23.39 -30.642 25.712 c S Q q 0.8 w 0 0 0 0 K 40 0 m 46.644 2.584 46.495 4.542 39.534 6.085 c 32.484 7.648 32.517 7.508 38.149 12.028 c 43.708 16.491 42.977 18.313 35.875 17.692 c 28.681 17.062 28.754 16.939 32.766 22.943 c 36.727 28.871 35.481 30.389 28.895 27.661 c 22.223 24.897 22.33 24.801 24.35 31.734 c 26.345 38.578 24.701 39.651 19.24 35.069 c 13.707 30.427 13.838 30.368 13.681 37.588 c 13.525 44.715 11.634 45.244 7.804 39.231 c 3.923 33.141 4.066 33.124 1.745 39.962 c -0.547 46.713 -2.509 46.648 -4.355 39.762 c -6.224 32.787 -6.083 32.813 -10.353 38.637 c -14.568 44.386 -16.421 43.735 -16.11 36.612 c -15.795 29.398 -15.668 29.466 -21.492 33.736 c -27.241 37.951 -28.812 36.773 -26.374 30.074 c -23.904 23.288 -23.803 23.39 -30.642 25.712 c S Q} +\axo@setObject{95}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{96}% +{AxoPhotonArc 45 0 40 20 160 5 8 0 1.5 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm [ 1.512] 0.594 d 40 0 m 46.644 2.584 46.495 4.542 39.534 6.085 c 32.484 7.648 32.517 7.508 38.149 12.028 c 43.708 16.491 42.977 18.313 35.875 17.692 c 28.681 17.062 28.754 16.939 32.766 22.943 c 36.727 28.871 35.481 30.389 28.895 27.661 c 22.223 24.897 22.33 24.801 24.35 31.734 c 26.345 38.578 24.701 39.651 19.24 35.069 c 13.707 30.427 13.838 30.368 13.681 37.588 c 13.525 44.715 11.634 45.244 7.804 39.231 c 3.923 33.141 4.066 33.124 1.745 39.962 c -0.547 46.713 -2.509 46.648 -4.355 39.762 c -6.224 32.787 -6.083 32.813 -10.353 38.637 c -14.568 44.386 -16.421 43.735 -16.11 36.612 c -15.795 29.398 -15.668 29.466 -21.492 33.736 c -27.241 37.951 -28.812 36.773 -26.374 30.074 c -23.904 23.288 -23.803 23.39 -30.642 25.712 c S} +\axo@setObject{97}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{98}% +{AxoPhotonArc 45 0 40 20 160 5 8 1.3 1.5 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm q [ 1.512] 0.594 d 1.8 w 40 0 m 46.644 2.584 46.495 4.542 39.534 6.085 c 32.484 7.648 32.517 7.508 38.149 12.028 c 43.708 16.491 42.977 18.313 35.875 17.692 c 28.681 17.062 28.754 16.939 32.766 22.943 c 36.727 28.871 35.481 30.389 28.895 27.661 c 22.223 24.897 22.33 24.801 24.35 31.734 c 26.345 38.578 24.701 39.651 19.24 35.069 c 13.707 30.427 13.838 30.368 13.681 37.588 c 13.525 44.715 11.634 45.244 7.804 39.231 c 3.923 33.141 4.066 33.124 1.745 39.962 c -0.547 46.713 -2.509 46.648 -4.355 39.762 c -6.224 32.787 -6.083 32.813 -10.353 38.637 c -14.568 44.386 -16.421 43.735 -16.11 36.612 c -15.795 29.398 -15.668 29.466 -21.492 33.736 c -27.241 37.951 -28.812 36.773 -26.374 30.074 c -23.904 23.288 -23.803 23.39 -30.642 25.712 c S Q q [] 0 d 0.8 w 0 0 0 0 K 40 0 m 46.644 2.584 46.495 4.542 39.534 6.085 c 32.484 7.648 32.517 7.508 38.149 12.028 c 43.708 16.491 42.977 18.313 35.875 17.692 c 28.681 17.062 28.754 16.939 32.766 22.943 c 36.727 28.871 35.481 30.389 28.895 27.661 c 22.223 24.897 22.33 24.801 24.35 31.734 c 26.345 38.578 24.701 39.651 19.24 35.069 c 13.707 30.427 13.838 30.368 13.681 37.588 c 13.525 44.715 11.634 45.244 7.804 39.231 c 3.923 33.141 4.066 33.124 1.745 39.962 c -0.547 46.713 -2.509 46.648 -4.355 39.762 c -6.224 32.787 -6.083 32.813 -10.353 38.637 c -14.568 44.386 -16.421 43.735 -16.11 36.612 c -15.795 29.398 -15.668 29.466 -21.492 33.736 c -27.241 37.951 -28.812 36.773 -26.374 30.074 c -23.904 23.288 -23.803 23.39 -30.642 25.712 c S Q} +\axo@setObject{99}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{100}% +{AxoZigZag 10 20 80 20 5 7.5 0 0 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm 0 0 m 2.333 5 l 4.667 0 l 7 -5 l 9.333 0 l 11.667 5 l 14 0 l 16.333 -5 l 18.667 0 l 21 5 l 23.333 0 l 25.667 -5 l 28 0 l 30.333 5 l 32.667 0 l 35 -5 l 37.333 0 l 39.667 5 l 42 0 l 44.333 -5 l 46.667 0 l 49 5 l 51.333 0 l 53.667 -5 l 56 0 l 58.333 5 l 60.667 0 l 63 -5 l 65.333 0 l 67.667 5 l 70 0 l S} +\axo@setObject{101}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{102}% +{AxoZigZag 10 20 80 20 5 7 1.5 0 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm q 2 w 0 0 m 2.5 5 l 5 0 l 7.5 -5 l 10 0 l 12.5 5 l 15 0 l 17.5 -5 l 20 0 l 22.5 5 l 25 0 l 27.5 -5 l 30 0 l 32.5 5 l 35 0 l 37.5 -5 l 40 0 l 42.5 5 l 45 0 l 47.5 -5 l 50 0 l 52.5 5 l 55 0 l 57.5 -5 l 60 0 l 62.5 5 l 65 0 l 67.5 -5 l 70 0 l S Q q 1 w 0 0 0 0 K 0 0 m 2.5 5 l 5 0 l 7.5 -5 l 10 0 l 12.5 5 l 15 0 l 17.5 -5 l 20 0 l 22.5 5 l 25 0 l 27.5 -5 l 30 0 l 32.5 5 l 35 0 l 37.5 -5 l 40 0 l 42.5 5 l 45 0 l 47.5 -5 l 50 0 l 52.5 5 l 55 0 l 57.5 -5 l 60 0 l 62.5 5 l 65 0 l 67.5 -5 l 70 0 l S Q} +\axo@setObject{103}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{104}% +{AxoZigZag 10 20 80 20 5 7 1.3 0 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm q 1.8 w 0 0 m 2.5 5 l 5 0 l 7.5 -5 l 10 0 l 12.5 5 l 15 0 l 17.5 -5 l 20 0 l 22.5 5 l 25 0 l 27.5 -5 l 30 0 l 32.5 5 l 35 0 l 37.5 -5 l 40 0 l 42.5 5 l 45 0 l 47.5 -5 l 50 0 l 52.5 5 l 55 0 l 57.5 -5 l 60 0 l 62.5 5 l 65 0 l 67.5 -5 l 70 0 l S Q q 0.8 w 0 0 0 0 K 0 0 m 2.5 5 l 5 0 l 7.5 -5 l 10 0 l 12.5 5 l 15 0 l 17.5 -5 l 20 0 l 22.5 5 l 25 0 l 27.5 -5 l 30 0 l 32.5 5 l 35 0 l 37.5 -5 l 40 0 l 42.5 5 l 45 0 l 47.5 -5 l 50 0 l 52.5 5 l 55 0 l 57.5 -5 l 60 0 l 62.5 5 l 65 0 l 67.5 -5 l 70 0 l S Q} +\axo@setObject{105}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{106}% +{AxoZigZag 10 20 80 20 5 7 0 1 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm [ 0.932] 0.466 d 0 0 m 2.5 5 l 5 0 l 7.5 -5 l 10 0 l 12.5 5 l 15 0 l 17.5 -5 l 20 0 l 22.5 5 l 25 0 l 27.5 -5 l 30 0 l 32.5 5 l 35 0 l 37.5 -5 l 40 0 l 42.5 5 l 45 0 l 47.5 -5 l 50 0 l 52.5 5 l 55 0 l 57.5 -5 l 60 0 l 62.5 5 l 65 0 l 67.5 -5 l 70 0 l S} +\axo@setObject{107}% +{Grid 0 0 10 10 9 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S} +\axo@setObject{108}% +{AxoZigZag 10 20 80 20 5 7 1.3 1 0.5;}% +{ 0.5 w 1 0 0 1 10 20 cm [ 0.932] 0.466 d q 1.8 w 0 0 m 2.5 5 l 5 0 l 7.5 -5 l 10 0 l 12.5 5 l 15 0 l 17.5 -5 l 20 0 l 22.5 5 l 25 0 l 27.5 -5 l 30 0 l 32.5 5 l 35 0 l 37.5 -5 l 40 0 l 42.5 5 l 45 0 l 47.5 -5 l 50 0 l 52.5 5 l 55 0 l 57.5 -5 l 60 0 l 62.5 5 l 65 0 l 67.5 -5 l 70 0 l S Q [] 0 d q 0.8 w 0 0 0 0 K 0 0 m 2.5 5 l 5 0 l 7.5 -5 l 10 0 l 12.5 5 l 15 0 l 17.5 -5 l 20 0 l 22.5 5 l 25 0 l 27.5 -5 l 30 0 l 32.5 5 l 35 0 l 37.5 -5 l 40 0 l 42.5 5 l 45 0 l 47.5 -5 l 50 0 l 52.5 5 l 55 0 l 57.5 -5 l 60 0 l 62.5 5 l 65 0 l 67.5 -5 l 70 0 l S Q} +\axo@setObject{109}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{110}% +{AxoZigZagArc 45 0 40 20 160 5 8 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm 37.588 13.681 m 40.989 18.572 l 29.312 19.126 l 33.507 30.038 l 22.204 27.055 l 22.924 38.723 l 13.04 32.48 l 10.218 43.824 l 2.67 34.898 l -3.433 44.869 l -7.948 34.086 l -16.766 41.76 l -17.83 30.118 l -28.548 34.785 l -26.061 23.363 l -37.687 24.591 l -31.88 14.445 l -37.588 13.681 l S} +\axo@setObject{111}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{112}% +{AxoZigZagArc 45 0 40 20 160 5 8 1.3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm q 1.8 w 37.588 13.681 m 40.989 18.572 l 29.312 19.126 l 33.507 30.038 l 22.204 27.055 l 22.924 38.723 l 13.04 32.48 l 10.218 43.824 l 2.67 34.898 l -3.433 44.869 l -7.948 34.086 l -16.766 41.76 l -17.83 30.118 l -28.548 34.785 l -26.061 23.363 l -37.687 24.591 l -31.88 14.445 l -37.588 13.681 l S Q q 0.8 w 0 0 0 0 K 37.588 13.681 m 40.989 18.572 l 29.312 19.126 l 33.507 30.038 l 22.204 27.055 l 22.924 38.723 l 13.04 32.48 l 10.218 43.824 l 2.67 34.898 l -3.433 44.869 l -7.948 34.086 l -16.766 41.76 l -17.83 30.118 l -28.548 34.785 l -26.061 23.363 l -37.687 24.591 l -31.88 14.445 l -37.588 13.681 l S Q} +\axo@setObject{113}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{114}% +{AxoZigZagArc 45 0 40 20 160 5 8 0 1.5 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm [ 1.461] 0.618 d 37.588 13.681 m 40.989 18.572 l 29.312 19.126 l 33.507 30.038 l 22.204 27.055 l 22.924 38.723 l 13.04 32.48 l 10.218 43.824 l 2.67 34.898 l -3.433 44.869 l -7.948 34.086 l -16.766 41.76 l -17.83 30.118 l -28.548 34.785 l -26.061 23.363 l -37.687 24.591 l -31.88 14.445 l -37.588 13.681 l S} +\axo@setObject{115}% +{Grid 0 0 10 10 9 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S} +\axo@setObject{116}% +{AxoZigZagArc 45 0 40 20 160 5 8 1.3 1.5 0 0.5;}% +{ 0.5 w 1 0 0 1 45 0 cm q [ 1.461] 0.618 d 1.8 w 37.588 13.681 m 40.989 18.572 l 29.312 19.126 l 33.507 30.038 l 22.204 27.055 l 22.924 38.723 l 13.04 32.48 l 10.218 43.824 l 2.67 34.898 l -3.433 44.869 l -7.948 34.086 l -16.766 41.76 l -17.83 30.118 l -28.548 34.785 l -26.061 23.363 l -37.687 24.591 l -31.88 14.445 l -37.588 13.681 l S Q q [] 0 d 0.8 w 0 0 0 0 K 37.588 13.681 m 40.989 18.572 l 29.312 19.126 l 33.507 30.038 l 22.204 27.055 l 22.924 38.723 l 13.04 32.48 l 10.218 43.824 l 2.67 34.898 l -3.433 44.869 l -7.948 34.086 l -16.766 41.76 l -17.83 30.118 l -28.548 34.785 l -26.061 23.363 l -37.687 24.591 l -31.88 14.445 l -37.588 13.681 l S Q} +\axo@setObject{117}% +{Grid 0 0 10 10 8 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S} +\axo@setObject{118}% +{AxoLine 10 10 70 10 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 10 10 m 70 10 l S} +\axo@setObject{119}% +{AxoPhoton 40 10 40 40 4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 40 10 cm 0 1 -1 0 0 0 cm 0 0 m 2.122 5.333 2.878 5.333 5 0 c 7.122 -5.333 7.878 -5.333 10 0 c 12.122 5.333 12.878 5.333 15 0 c 17.122 -5.333 17.878 -5.333 20 0 c 22.122 5.333 22.878 5.333 25 0 c 27.122 -5.333 27.878 -5.333 30 0 c S} +\axo@setObject{120}% +{Vertex 40 10 1.5 0.5;}% +{ 0.5 w 1 0 0 1 40 10 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{121}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{122}% +{AxoLine 0 0 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 0 m 60 60 l S} +\axo@setObject{123}% +{ECirc 30 30 20 0.5;}% +{ 0.5 w 1 0 0 1 30 30 cm -20 0 m -20 11.046 -11.046 20 0 20 c 11.046 20 20 11.046 20 0 c 20 -11.046 11.046 -20 0 -20 c -11.046 -20 -20 -11.046 -20 0 c S } +\axo@setObject{124}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{125}% +{AxoLine 0 0 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 0 m 60 60 l S} +\axo@setObject{126}% +{Vertex 30 30 20 0.5;}% +{ 0.5 w 1 0 0 1 30 30 cm -20 0 m -20 11.046 -11.046 20 0 20 c 11.046 20 20 11.046 20 0 c 20 -11.046 11.046 -20 0 -20 c -11.046 -20 -20 -11.046 -20 0 c f } +\axo@setObject{127}% +{ECirc 30 30 20 0.5;}% +{ 0.5 w 1 0 0 1 30 30 cm -20 0 m -20 11.046 -11.046 20 0 20 c 11.046 20 20 11.046 20 0 c 20 -11.046 11.046 -20 0 -20 c -11.046 -20 -20 -11.046 -20 0 c S } +\axo@setObject{128}% +{AxoLine 60 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 60 0 m 0 60 l S} +\axo@setObject{129}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{130}% +{AxoLine 0 0 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 0 m 60 60 l S} +\axo@setObject{131}% +{Vertex 30 30 20 0.5;}% +{ 0.5 w 1 0 0 1 30 30 cm -20 0 m -20 11.046 -11.046 20 0 20 c 11.046 20 20 11.046 20 0 c 20 -11.046 11.046 -20 0 -20 c -11.046 -20 -20 -11.046 -20 0 c f } +\axo@setObject{132}% +{ECirc 30 30 20 0.5;}% +{ 0.5 w 1 0 0 1 30 30 cm -20 0 m -20 11.046 -11.046 20 0 20 c 11.046 20 20 11.046 20 0 c 20 -11.046 11.046 -20 0 -20 c -11.046 -20 -20 -11.046 -20 0 c S } +\axo@setObject{133}% +{AxoLine 60 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 60 0 m 0 60 l S} +\axo@setObject{134}% +{Grid 0 0 10 10 6 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S 0 60 m 60 60 l S} +\axo@setObject{135}% +{AxoLine 0 0 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 0 m 60 60 l S} +\axo@setObject{136}% +{Vertex 30 30 20 0.5;}% +{ 0.5 w 1 0 0 1 30 30 cm -20 0 m -20 11.046 -11.046 20 0 20 c 11.046 20 20 11.046 20 0 c 20 -11.046 11.046 -20 0 -20 c -11.046 -20 -20 -11.046 -20 0 c f } +\axo@setObject{137}% +{ECirc 30 30 20 0.5;}% +{ 0.5 w 1 0 0 1 30 30 cm -20 0 m -20 11.046 -11.046 20 0 20 c 11.046 20 20 11.046 20 0 c 20 -11.046 11.046 -20 0 -20 c -11.046 -20 -20 -11.046 -20 0 c S } +\axo@setObject{138}% +{AxoLine 60 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 60 0 m 0 60 l S} +\axo@setObject{139}% +{Grid 0 0 10 10 8 11 0.5;}% +{ 0.5 w 0 0 m 0 110 l S 10 0 m 10 110 l S 20 0 m 20 110 l S 30 0 m 30 110 l S 40 0 m 40 110 l S 50 0 m 50 110 l S 60 0 m 60 110 l S 70 0 m 70 110 l S 80 0 m 80 110 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S 0 90 m 80 90 l S 0 100 m 80 100 l S 0 110 m 80 110 l S} +\axo@setObject{140}% +{Oval 40 80 20 30 0 0.5;}% +{ 0.5 w 1 0 0 1 40 80 cm -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c S } +\axo@setObject{141}% +{Oval 40 30 20 30 30 0.5;}% +{ 0.5 w 1 0 0 1 40 30 cm 0.866 0.5 -0.5 0.866 0 0 cm -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c S } +\axo@setObject{142}% +{Grid 0 0 10 10 8 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 70 0 m 70 60 l S 80 0 m 80 60 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S} +\axo@setObject{143}% +{FOval 40 30 20 30 30 0.5;}% +{ 0.5 w 1 0 0 1 40 30 cm 0.866 0.5 -0.5 0.866 0 0 cm -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c f -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c S } +\axo@setObject{144}% +{Grid 0 0 10 10 8 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 70 0 m 70 60 l S 80 0 m 80 60 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S} +\axo@setObject{145}% +{AxoLine 0 0 80 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 0 m 80 60 l S} +\axo@setObject{146}% +{FOval 40 30 20 30 0 0.5;}% +{ 0.5 w 1 0 0 1 40 30 cm -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c f -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c S } +\axo@setObject{147}% +{Oval 40 30 20 30 0 0.5;}% +{ 0.5 w 1 0 0 1 40 30 cm -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c S } +\axo@setObject{148}% +{AxoLine 80 0 0 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 80 0 m 0 60 l S} +\axo@setObject{149}% +{Grid 0 0 10 10 8 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 70 0 m 70 60 l S 80 0 m 80 60 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S} +\axo@setObject{150}% +{AxoLine 0 0 80 60 0 0 0 0 0 0 0 0 0 0 0 1;}% +{ 1 w 0 0 m 80 60 l S} +\axo@setObject{151}% +{FOval 40 30 20 30 20 1;}% +{ 1 w 1 0 0 1 40 30 cm 0.94 0.342 -0.342 0.94 0 0 cm -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c f -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c S } +\axo@setObject{152}% +{Oval 40 30 20 30 20 1;}% +{ 1 w 1 0 0 1 40 30 cm 0.94 0.342 -0.342 0.94 0 0 cm -30 0 m -30 11.046 -16.569 20 0 20 c 16.569 20 30 11.046 30 0 c 30 -11.046 16.569 -20 0 -20 c -16.569 -20 -30 -11.046 -30 0 c S } +\axo@setObject{153}% +{AxoLine 80 0 0 60 0 0 0 0 0 0 0 0 0 0 0 1;}% +{ 1 w 80 0 m 0 60 l S} +\axo@setObject{154}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{155}% +{EBox 10 10 50 40 0.5;}% +{ 0.5 w 10 10 40 30 re S} +\axo@setObject{156}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{157}% +{FBox 10 10 50 40 0.5;}% +{ 0.5 w 10 10 40 30 re f} +\axo@setObject{158}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{159}% +{FBox 10 10 50 40 0.5;}% +{ 0.5 w 10 10 40 30 re f} +\axo@setObject{160}% +{EBox 10 10 50 40 0.5;}% +{ 0.5 w 10 10 40 30 re S} +\axo@setObject{161}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{162}% +{FBox 10 10 50 40 0.5;}% +{ 0.5 w 10 10 40 30 re f} +\axo@setObject{163}% +{EBox 10 10 50 40 0.5;}% +{ 0.5 w 10 10 40 30 re S} +\axo@setObject{164}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{165}% +{FBox 10 10 50 40 1.5;}% +{ 1.5 w 10 10 40 30 re f} +\axo@setObject{166}% +{EBox 10 10 50 40 1.5;}% +{ 1.5 w 10 10 40 30 re S} +\axo@setObject{167}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{168}% +{Boxc 30 25 40 30 0.5;}% +{ 0.5 w 10 10 40 30 re S} +\axo@setObject{169}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{170}% +{FBoxc 30 25 40 30 0.5;}% +{ 0.5 w 10 10 40 30 re f} +\axo@setObject{171}% +{Boxc 30 25 40 30 0.5;}% +{ 0.5 w 10 10 40 30 re S} +\axo@setObject{172}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{173}% +{FBoxc 30 25 40 30 0.5;}% +{ 0.5 w 10 10 40 30 re f} +\axo@setObject{174}% +{Boxc 30 25 40 30 0.5;}% +{ 0.5 w 10 10 40 30 re S} +\axo@setObject{175}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{176}% +{FBoxc 30 25 40 30 1.5;}% +{ 1.5 w 10 10 40 30 re f} +\axo@setObject{177}% +{Boxc 30 25 40 30 1.5;}% +{ 1.5 w 10 10 40 30 re S} +\axo@setObject{178}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{179}% +{Boxc 0 0 40 30 0.5;}% +{ 0.5 w -20 -15 40 30 re S} +\axo@setObject{180}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{181}% +{FBoxc 0 0 40 30 0.5;}% +{ 0.5 w -20 -15 40 30 re f} +\axo@setObject{182}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{183}% +{ETri 10 20 50 10 40 40 0.5;}% +{ 0.5 w 10 20 m 50 10 l 40 40 l h S} +\axo@setObject{184}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{185}% +{FTri 10 20 50 10 40 40 0.5;}% +{ 0.5 w 10 20 m 50 10 l 40 40 l h f} +\axo@setObject{186}% +{ETri 10 20 50 10 40 40 0.5;}% +{ 0.5 w 10 20 m 50 10 l 40 40 l h S} +\axo@setObject{187}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{188}% +{FTri 10 20 50 10 40 40 0.5;}% +{ 0.5 w 10 20 m 50 10 l 40 40 l h f} +\axo@setObject{189}% +{ETri 10 20 50 10 40 40 0.5;}% +{ 0.5 w 10 20 m 50 10 l 40 40 l h S} +\axo@setObject{190}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{191}% +{FTri 10 20 50 10 40 40 1;}% +{ 1 w 10 20 m 50 10 l 40 40 l h f} +\axo@setObject{192}% +{ETri 10 20 50 10 40 40 1;}% +{ 1 w 10 20 m 50 10 l 40 40 l h S} +\axo@setObject{193}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{194}% +{Polygon "(10,20)(20,10)(40,20)(50,10)(45,40)(15,30)" 0.5;}% +{ 0.5 w 10 20 m 20 10 l 40 20 l 50 10 l 45 40 l 15 30 l h S} +\axo@setObject{195}% +{Grid 0 0 10 10 6 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 0 0 m 60 0 l S 0 10 m 60 10 l S 0 20 m 60 20 l S 0 30 m 60 30 l S 0 40 m 60 40 l S 0 50 m 60 50 l S} +\axo@setObject{196}% +{FilledPolygon "(10,20)(20,10)(40,20)(50,10)(45,40)(15,30)" 0.5;}% +{ 0.5 w 10 20 m 20 10 l 40 20 l 50 10 l 45 40 l 15 30 l h f} +\axo@setObject{197}% +{Grid 0 0 10 10 10 5 0.5;}% +{ 0.5 w 0 0 m 0 50 l S 10 0 m 10 50 l S 20 0 m 20 50 l S 30 0 m 30 50 l S 40 0 m 40 50 l S 50 0 m 50 50 l S 60 0 m 60 50 l S 70 0 m 70 50 l S 80 0 m 80 50 l S 90 0 m 90 50 l S 100 0 m 100 50 l S 0 0 m 100 0 l S 0 10 m 100 10 l S 0 20 m 100 20 l S 0 30 m 100 30 l S 0 40 m 100 40 l S 0 50 m 100 50 l S} +\axo@setObject{198}% +{LinAxis 10 30 90 30 4 5 5 0 1;}% +{ 1 w 1 0 0 1 10 30 cm 0 0 m 80 0 l S 0 0 m 0 6 l S 20 0 m 20 6 l S 40 0 m 40 6 l S 60 0 m 60 6 l S 80 0 m 80 6 l S 0.6 w 4 0 m 4 4 l S 8 0 m 8 4 l S 12 0 m 12 4 l S 16 0 m 16 4 l S 24 0 m 24 4 l S 28 0 m 28 4 l S 32 0 m 32 4 l S 36 0 m 36 4 l S 44 0 m 44 4 l S 48 0 m 48 4 l S 52 0 m 52 4 l S 56 0 m 56 4 l S 64 0 m 64 4 l S 68 0 m 68 4 l S 72 0 m 72 4 l S 76 0 m 76 4 l S} +\axo@setObject{199}% +{LinAxis 10 10 90 10 4 5 5 2 1;}% +{ 1 w 1 0 0 1 10 10 cm 0 0 m 80 0 l S 12 0 m 12 6 l S 32 0 m 32 6 l S 52 0 m 52 6 l S 72 0 m 72 6 l S 0.6 w 0 0 m 0 4 l S 4 0 m 4 4 l S 8 0 m 8 4 l S 16 0 m 16 4 l S 20 0 m 20 4 l S 24 0 m 24 4 l S 28 0 m 28 4 l S 36 0 m 36 4 l S 40 0 m 40 4 l S 44 0 m 44 4 l S 48 0 m 48 4 l S 56 0 m 56 4 l S 60 0 m 60 4 l S 64 0 m 64 4 l S 68 0 m 68 4 l S 76 0 m 76 4 l S 80 0 m 80 4 l S} +\axo@setObject{200}% +{Grid 0 0 10 10 10 4 0.5;}% +{ 0.5 w 0 0 m 0 40 l S 10 0 m 10 40 l S 20 0 m 20 40 l S 30 0 m 30 40 l S 40 0 m 40 40 l S 50 0 m 50 40 l S 60 0 m 60 40 l S 70 0 m 70 40 l S 80 0 m 80 40 l S 90 0 m 90 40 l S 100 0 m 100 40 l S 0 0 m 100 0 l S 0 10 m 100 10 l S 0 20 m 100 20 l S 0 30 m 100 30 l S 0 40 m 100 40 l S} +\axo@setObject{201}% +{LogAxis 0 30 100 30 4 3 0 1;}% +{ 1 w 1 0 0 1 0 30 cm 0 0 m 100 0 l S 25 0 m 25 3.6 l S 50 0 m 50 3.6 l S 75 0 m 75 3.6 l S 100 0 m 100 3.6 l S 0.6 w 7.526 0 m 7.526 2.4 l S 11.928 0 m 11.928 2.4 l S 15.051 0 m 15.051 2.4 l S 17.474 0 m 17.474 2.4 l S 19.454 0 m 19.454 2.4 l S 21.127 0 m 21.127 2.4 l S 22.577 0 m 22.577 2.4 l S 23.856 0 m 23.856 2.4 l S 32.526 0 m 32.526 2.4 l S 36.928 0 m 36.928 2.4 l S 40.051 0 m 40.051 2.4 l S 42.474 0 m 42.474 2.4 l S 44.454 0 m 44.454 2.4 l S 46.127 0 m 46.127 2.4 l S 47.577 0 m 47.577 2.4 l S 48.856 0 m 48.856 2.4 l S 57.526 0 m 57.526 2.4 l S 61.928 0 m 61.928 2.4 l S 65.051 0 m 65.051 2.4 l S 67.474 0 m 67.474 2.4 l S 69.454 0 m 69.454 2.4 l S 71.127 0 m 71.127 2.4 l S 72.577 0 m 72.577 2.4 l S 73.856 0 m 73.856 2.4 l S 82.526 0 m 82.526 2.4 l S 86.928 0 m 86.928 2.4 l S 90.051 0 m 90.051 2.4 l S 92.474 0 m 92.474 2.4 l S 94.454 0 m 94.454 2.4 l S 96.127 0 m 96.127 2.4 l S 97.577 0 m 97.577 2.4 l S 98.856 0 m 98.856 2.4 l S} +\axo@setObject{202}% +{LogAxis 0 10 100 10 4 3 3 1;}% +{ 1 w 1 0 0 1 0 10 cm 0 0 m 100 0 l S 13.072 0 m 13.072 3.6 l S 38.072 0 m 38.072 3.6 l S 63.072 0 m 63.072 3.6 l S 88.072 0 m 88.072 3.6 l S 0.6 w 0 0 m 0 2.4 l S 3.123 0 m 3.123 2.4 l S 5.546 0 m 5.546 2.4 l S 7.526 0 m 7.526 2.4 l S 9.199 0 m 9.199 2.4 l S 10.649 0 m 10.649 2.4 l S 11.928 0 m 11.928 2.4 l S 20.598 0 m 20.598 2.4 l S 25 0 m 25 2.4 l S 28.123 0 m 28.123 2.4 l S 30.546 0 m 30.546 2.4 l S 32.526 0 m 32.526 2.4 l S 34.199 0 m 34.199 2.4 l S 35.649 0 m 35.649 2.4 l S 36.928 0 m 36.928 2.4 l S 45.598 0 m 45.598 2.4 l S 50 0 m 50 2.4 l S 53.123 0 m 53.123 2.4 l S 55.546 0 m 55.546 2.4 l S 57.526 0 m 57.526 2.4 l S 59.199 0 m 59.199 2.4 l S 60.649 0 m 60.649 2.4 l S 61.928 0 m 61.928 2.4 l S 70.598 0 m 70.598 2.4 l S 75 0 m 75 2.4 l S 78.123 0 m 78.123 2.4 l S 80.546 0 m 80.546 2.4 l S 82.526 0 m 82.526 2.4 l S 84.199 0 m 84.199 2.4 l S 85.649 0 m 85.649 2.4 l S 86.928 0 m 86.928 2.4 l S 95.598 0 m 95.598 2.4 l S 100 0 m 100 2.4 l S} +\axo@setObject{203}% +{Grid 0 0 10 10 9 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S} +\axo@setObject{204}% +{Vertex 10 10 1.5 0.5;}% +{ 0.5 w 1 0 0 1 10 10 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{205}% +{Vertex 45 45 1.5 0.5;}% +{ 0.5 w 1 0 0 1 45 45 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{206}% +{Vertex 80 80 1.5 0.5;}% +{ 0.5 w 1 0 0 1 80 80 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{207}% +{Grid 0 0 10 10 9 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S} +\axo@setObject{208}% +{Vertex 10 10 1.5 0.5;}% +{ 0.5 w 1 0 0 1 10 10 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{209}% +{Vertex 45 45 1.5 0.5;}% +{ 0.5 w 1 0 0 1 45 45 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{210}% +{Vertex 80 10 1.5 0.5;}% +{ 0.5 w 1 0 0 1 80 10 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{211}% +{Grid 0 0 10 10 9 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S} +\axo@setObject{212}% +{Vertex 10 10 1.5 0.5;}% +{ 0.5 w 1 0 0 1 10 10 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{213}% +{Vertex 45 45 1.5 0.5;}% +{ 0.5 w 1 0 0 1 45 45 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{214}% +{Vertex 80 80 1.5 0.5;}% +{ 0.5 w 1 0 0 1 80 80 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{215}% +{Grid 0 0 10 10 10 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 100 0 m 100 90 l S 0 0 m 100 0 l S 0 10 m 100 10 l S 0 20 m 100 20 l S 0 30 m 100 30 l S 0 40 m 100 40 l S 0 50 m 100 50 l S 0 60 m 100 60 l S 0 70 m 100 70 l S 0 80 m 100 80 l S 0 90 m 100 90 l S} +\axo@setObject{216}% +{AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 30 65 m 60 25 l S 1 0 0 1 30 65 cm 0.6 -0.8 0.8 0.6 0 0 cm 1 0 0 1 25 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{217}% +{FBoxc 0 0 54.599 15.89 0.5;}% +{ 0.5 w -27.299 -7.945 54.599 15.89 re f} +\axo@setObject{218}% +{Boxc 0 0 54.599 15.89 0.5;}% +{ 0.5 w -27.299 -7.945 54.599 15.89 re S} +\axo@setObject{219}% +{FBoxc 0 0 50.559 17.421 0.5;}% +{ 0.5 w -25.279 -8.71 50.559 17.421 re f} +\axo@setObject{220}% +{Boxc 0 0 50.559 17.421 0.5;}% +{ 0.5 w -25.279 -8.71 50.559 17.421 re S} +\axo@setObject{221}% +{Grid 0 0 10 10 10 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 100 0 m 100 90 l S 0 0 m 100 0 l S 0 10 m 100 10 l S 0 20 m 100 20 l S 0 30 m 100 30 l S 0 40 m 100 40 l S 0 50 m 100 50 l S 0 60 m 100 60 l S 0 70 m 100 70 l S 0 80 m 100 80 l S 0 90 m 100 90 l S} +\axo@setObject{222}% +{AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 30 65 m 60 25 l S 1 0 0 1 30 65 cm 0.6 -0.8 0.8 0.6 0 0 cm 1 0 0 1 25 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{223}% +{FBoxc 0 0 46.799 15.513 0.5;}% +{ 0.5 w -23.399 -7.756 46.799 15.513 re f} +\axo@setObject{224}% +{Boxc 0 0 46.799 15.513 0.5;}% +{ 0.5 w -23.399 -7.756 46.799 15.513 re S} +\axo@setObject{225}% +{FBoxc 0 0 71.0 5.444 0.5;}% +{ 0.5 w -35.5 -2.722 71 5.444 re f} +\axo@setObject{226}% +{Boxc 0 0 71.0 5.444 0.5;}% +{ 0.5 w -35.5 -2.722 71 5.444 re S} +\axo@setObject{227}% +{Grid 0 0 10 10 9 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S} +\axo@setObject{228}% +{AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 30 65 m 60 25 l S 1 0 0 1 30 65 cm 0.6 -0.8 0.8 0.6 0 0 cm 1 0 0 1 25 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{229}% +{FBoxc 0 0 53.339 15.424 0.5;}% +{ 0.5 w -26.669 -7.712 53.339 15.424 re f} +\axo@setObject{230}% +{Boxc 0 0 53.339 15.424 0.5;}% +{ 0.5 w -26.669 -7.712 53.339 15.424 re S} +\axo@setObject{231}% +{FBoxc 0 0 47.599 12.975 0.5;}% +{ 0.5 w -23.799 -6.487 47.599 12.975 re f} +\axo@setObject{232}% +{Boxc 0 0 47.599 12.975 0.5;}% +{ 0.5 w -23.799 -6.487 47.599 12.975 re S} +\axo@setObject{233}% +{Grid 0 0 10 10 9 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S} +\axo@setObject{234}% +{AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 30 65 m 60 25 l S 1 0 0 1 30 65 cm 0.6 -0.8 0.8 0.6 0 0 cm 1 0 0 1 25 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{235}% +{FBoxc 0 0 45.359 34.223 0.5;}% +{ 0.5 w -22.68 -17.111 45.359 34.223 re f} +\axo@setObject{236}% +{Boxc 0 0 45.359 34.223 0.5;}% +{ 0.5 w -22.68 -17.111 45.359 34.223 re S} +\axo@setObject{237}% +{FBoxc 0 0 54.176 38.704 0.5;}% +{ 0.5 w -27.088 -19.352 54.176 38.704 re f} +\axo@setObject{238}% +{Boxc 0 0 54.176 38.704 0.5;}% +{ 0.5 w -27.088 -19.352 54.176 38.704 re S} +\axo@setObject{239}% +{Grid 0 0 10 10 10 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 100 0 m 100 90 l S 0 0 m 100 0 l S 0 10 m 100 10 l S 0 20 m 100 20 l S 0 30 m 100 30 l S 0 40 m 100 40 l S 0 50 m 100 50 l S 0 60 m 100 60 l S 0 70 m 100 70 l S 0 80 m 100 80 l S 0 90 m 100 90 l S} +\axo@setObject{240}% +{AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 30 65 m 60 25 l S 1 0 0 1 30 65 cm 0.6 -0.8 0.8 0.6 0 0 cm 1 0 0 1 25 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{241}% +{FBoxc 0 0 46.931 28.548 0.5;}% +{ 0.5 w -23.465 -14.274 46.931 28.548 re f} +\axo@setObject{242}% +{Boxc 0 0 46.931 28.548 0.5;}% +{ 0.5 w -23.465 -14.274 46.931 28.548 re S} +\axo@setObject{243}% +{FBoxc 0 0 63.799 27.10 0.5;}% +{ 0.5 w -31.899 -13.55 63.799 27.1 re f} +\axo@setObject{244}% +{Boxc 0 0 63.799 27.10 0.5;}% +{ 0.5 w -31.899 -13.55 63.799 27.1 re S} +\axo@setObject{245}% +{Grid 0 0 10 10 9 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S} +\axo@setObject{246}% +{AxoLine 30 65 60 25 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 30 65 m 60 25 l S 1 0 0 1 30 65 cm 0.6 -0.8 0.8 0.6 0 0 cm 1 0 0 1 25 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{247}% +{FBoxc 0 0 49.539 25.840 0.5;}% +{ 0.5 w -24.77 -12.92 49.539 25.84 re f} +\axo@setObject{248}% +{Boxc 0 0 49.539 25.840 0.5;}% +{ 0.5 w -24.77 -12.92 49.539 25.84 re S} +\axo@setObject{249}% +{FBoxc 0 0 55.999 31.745 0.5;}% +{ 0.5 w -28 -15.873 55.999 31.745 re f} +\axo@setObject{250}% +{Boxc 0 0 55.999 31.745 0.5;}% +{ 0.5 w -28 -15.873 55.999 31.745 re S} +\axo@setObject{251}% +{Grid 0 0 10 10 12 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 100 0 m 100 90 l S 110 0 m 110 90 l S 120 0 m 120 90 l S 0 0 m 120 0 l S 0 10 m 120 10 l S 0 20 m 120 20 l S 0 30 m 120 30 l S 0 40 m 120 40 l S 0 50 m 120 50 l S 0 60 m 120 60 l S 0 70 m 120 70 l S 0 80 m 120 80 l S 0 90 m 120 90 l S} +\axo@setObject{252}% +{FBoxc 0 0 143.37 62.444 0.5;}% +{ 0.5 w -71.685 -31.222 143.37 62.444 re f} +\axo@setObject{253}% +{Boxc 0 0 143.37 62.444 0.5;}% +{ 0.5 w -71.685 -31.222 143.37 62.444 re S} +\axo@setObject{254}% +{Grid 0 0 10 10 13 9 0.5;}% +{ 0.5 w 0 0 m 0 90 l S 10 0 m 10 90 l S 20 0 m 20 90 l S 30 0 m 30 90 l S 40 0 m 40 90 l S 50 0 m 50 90 l S 60 0 m 60 90 l S 70 0 m 70 90 l S 80 0 m 80 90 l S 90 0 m 90 90 l S 100 0 m 100 90 l S 110 0 m 110 90 l S 120 0 m 120 90 l S 130 0 m 130 90 l S 0 0 m 130 0 l S 0 10 m 130 10 l S 0 20 m 130 20 l S 0 30 m 130 30 l S 0 40 m 130 40 l S 0 50 m 130 50 l S 0 60 m 130 60 l S 0 70 m 130 70 l S 0 80 m 130 80 l S 0 90 m 130 90 l S} +\axo@setObject{255}% +{FBoxc 0 0 128.811 61.543 0.5;}% +{ 0.5 w -64.406 -30.771 128.811 61.543 re f} +\axo@setObject{256}% +{Boxc 0 0 128.811 61.543 0.5;}% +{ 0.5 w -64.406 -30.771 128.811 61.543 re S} +\axo@setObject{257}% +{Grid 0 0 10 10 9 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 90 0 m 90 80 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S} +\axo@setObject{258}% +{AxoGluon 10 70 80 70 3 5 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 10 70 cm 11.667 -3 m 14.367 -3 14.367 3 8.167 3 c 2.917 3 0.583 1.5 0 0 c S 11.667 -3 m 8.967 -3 8.967 3 17.5 3 c 26.033 3 26.033 -3 23.333 -3 c 20.633 -3 20.633 3 29.167 3 c 37.7 3 37.7 -3 35 -3 c 32.3 -3 32.3 3 40.833 3 c 49.367 3 49.367 -3 46.667 -3 c 43.967 -3 43.967 3 52.5 3 c 61.033 3 61.033 -3 58.333 -3 c 55.633 -3 55.633 3 61.833 3 c 67.083 3 69.417 1.5 70 0 c S} +\axo@setObject{259}% +{AxoGluon 10 50 80 50 3 9 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 10 50 cm 7 -3 m 9.7 -3 9.7 3 4.9 3 c 1.75 3 0.35 1.5 0 0 c S 7 -3 m 4.3 -3 4.3 3 10.5 3 c 16.7 3 16.7 -3 14 -3 c 11.3 -3 11.3 3 17.5 3 c 23.7 3 23.7 -3 21 -3 c 18.3 -3 18.3 3 24.5 3 c 30.7 3 30.7 -3 28 -3 c 25.3 -3 25.3 3 31.5 3 c 37.7 3 37.7 -3 35 -3 c 32.3 -3 32.3 3 38.5 3 c 44.7 3 44.7 -3 42 -3 c 39.3 -3 39.3 3 45.5 3 c 51.7 3 51.7 -3 49 -3 c 46.3 -3 46.3 3 52.5 3 c 58.7 3 58.7 -3 56 -3 c 53.3 -3 53.3 3 59.5 3 c 65.7 3 65.7 -3 63 -3 c 60.3 -3 60.3 3 65.1 3 c 68.25 3 69.65 1.5 70 0 c S} +\axo@setObject{260}% +{AxoGluon 10 30 80 30 5 7 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 10 30 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{261}% +{AxoGluon 10 10 80 10 8 9 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 10 10 cm 7 -8 m 14.2 -8 14.2 8 4.9 8 c 1.75 8 0.35 4 0 0 c S 7 -8 m -0.2 -8 -0.2 8 10.5 8 c 21.2 8 21.2 -8 14 -8 c 6.8 -8 6.8 8 17.5 8 c 28.2 8 28.2 -8 21 -8 c 13.8 -8 13.8 8 24.5 8 c 35.2 8 35.2 -8 28 -8 c 20.8 -8 20.8 8 31.5 8 c 42.2 8 42.2 -8 35 -8 c 27.8 -8 27.8 8 38.5 8 c 49.2 8 49.2 -8 42 -8 c 34.8 -8 34.8 8 45.5 8 c 56.2 8 56.2 -8 49 -8 c 41.8 -8 41.8 8 52.5 8 c 63.2 8 63.2 -8 56 -8 c 48.8 -8 48.8 8 59.5 8 c 70.2 8 70.2 -8 63 -8 c 55.8 -8 55.8 8 65.1 8 c 68.25 8 69.65 4 70 0 c S} +\axo@setObject{262}% +{Grid 0 0 10 10 9 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 90 0 m 90 80 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S} +\axo@setObject{263}% +{AxoGluon 10 70 80 70 5 7 0.5 0 1.2;}% +{ 1.2 w 1.7 w 1 0 0 1 10 70 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{264}% +{AxoGluon 10 70 80 70 5 7 -0.5 0 1.2;}% +{ 1.2 w 0.7 w 1 0 0 1 10 70 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{265}% +{AxoGluon 80 50 10 50 5 7 0.5 0 1.2;}% +{ 1.2 w 1.7 w 1 0 0 1 80 50 cm -1 0 0 -1 0 0 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{266}% +{AxoGluon 80 50 10 50 5 7 -0.5 0 1.2;}% +{ 1.2 w 0.7 w 1 0 0 1 80 50 cm -1 0 0 -1 0 0 cm 8.75 -5 m 13.25 -5 13.25 5 6.125 5 c 2.188 5 0.438 2.5 0 0 c S 8.75 -5 m 4.25 -5 4.25 5 13.125 5 c 22 5 22 -5 17.5 -5 c 13 -5 13 5 21.875 5 c 30.75 5 30.75 -5 26.25 -5 c 21.75 -5 21.75 5 30.625 5 c 39.5 5 39.5 -5 35 -5 c 30.5 -5 30.5 5 39.375 5 c 48.25 5 48.25 -5 43.75 -5 c 39.25 -5 39.25 5 48.125 5 c 57 5 57 -5 52.5 -5 c 48 -5 48 5 56.875 5 c 65.75 5 65.75 -5 61.25 -5 c 56.75 -5 56.75 5 63.875 5 c 67.812 5 69.562 2.5 70 0 c S} +\axo@setObject{267}% +{AxoGluon 10 30 80 30 -5 7 0.5 0 1.2;}% +{ 1.2 w 1.7 w 1 0 0 1 10 30 cm 8.75 5 m 13.25 5 13.25 -5 6.125 -5 c 2.188 -5 0.438 -2.5 0 0 c S 8.75 5 m 4.25 5 4.25 -5 13.125 -5 c 22 -5 22 5 17.5 5 c 13 5 13 -5 21.875 -5 c 30.75 -5 30.75 5 26.25 5 c 21.75 5 21.75 -5 30.625 -5 c 39.5 -5 39.5 5 35 5 c 30.5 5 30.5 -5 39.375 -5 c 48.25 -5 48.25 5 43.75 5 c 39.25 5 39.25 -5 48.125 -5 c 57 -5 57 5 52.5 5 c 48 5 48 -5 56.875 -5 c 65.75 -5 65.75 5 61.25 5 c 56.75 5 56.75 -5 63.875 -5 c 67.812 -5 69.562 -2.5 70 0 c S} +\axo@setObject{268}% +{AxoGluon 10 30 80 30 -5 7 -0.5 0 1.2;}% +{ 1.2 w 0.7 w 1 0 0 1 10 30 cm 8.75 5 m 13.25 5 13.25 -5 6.125 -5 c 2.188 -5 0.438 -2.5 0 0 c S 8.75 5 m 4.25 5 4.25 -5 13.125 -5 c 22 -5 22 5 17.5 5 c 13 5 13 -5 21.875 -5 c 30.75 -5 30.75 5 26.25 5 c 21.75 5 21.75 -5 30.625 -5 c 39.5 -5 39.5 5 35 5 c 30.5 5 30.5 -5 39.375 -5 c 48.25 -5 48.25 5 43.75 5 c 39.25 5 39.25 -5 48.125 -5 c 57 -5 57 5 52.5 5 c 48 5 48 -5 56.875 -5 c 65.75 -5 65.75 5 61.25 5 c 56.75 5 56.75 -5 63.875 -5 c 67.812 -5 69.562 -2.5 70 0 c S} +\axo@setObject{269}% +{AxoGluon 80 10 10 10 -5 7 0.5 0 1.2;}% +{ 1.2 w 1.7 w 1 0 0 1 80 10 cm -1 0 0 -1 0 0 cm 8.75 5 m 13.25 5 13.25 -5 6.125 -5 c 2.188 -5 0.438 -2.5 0 0 c S 8.75 5 m 4.25 5 4.25 -5 13.125 -5 c 22 -5 22 5 17.5 5 c 13 5 13 -5 21.875 -5 c 30.75 -5 30.75 5 26.25 5 c 21.75 5 21.75 -5 30.625 -5 c 39.5 -5 39.5 5 35 5 c 30.5 5 30.5 -5 39.375 -5 c 48.25 -5 48.25 5 43.75 5 c 39.25 5 39.25 -5 48.125 -5 c 57 -5 57 5 52.5 5 c 48 5 48 -5 56.875 -5 c 65.75 -5 65.75 5 61.25 5 c 56.75 5 56.75 -5 63.875 -5 c 67.812 -5 69.562 -2.5 70 0 c S} +\axo@setObject{270}% +{AxoGluon 80 10 10 10 -5 7 -0.5 0 1.2;}% +{ 1.2 w 0.7 w 1 0 0 1 80 10 cm -1 0 0 -1 0 0 cm 8.75 5 m 13.25 5 13.25 -5 6.125 -5 c 2.188 -5 0.438 -2.5 0 0 c S 8.75 5 m 4.25 5 4.25 -5 13.125 -5 c 22 -5 22 5 17.5 5 c 13 5 13 -5 21.875 -5 c 30.75 -5 30.75 5 26.25 5 c 21.75 5 21.75 -5 30.625 -5 c 39.5 -5 39.5 5 35 5 c 30.5 5 30.5 -5 39.375 -5 c 48.25 -5 48.25 5 43.75 5 c 39.25 5 39.25 -5 48.125 -5 c 57 -5 57 5 52.5 5 c 48 5 48 -5 56.875 -5 c 65.75 -5 65.75 5 61.25 5 c 56.75 5 56.75 -5 63.875 -5 c 67.812 -5 69.562 -2.5 70 0 c S} +\axo@setObject{271}% +{Grid 0 0 10 10 9 7 0.5;}% +{ 0.5 w 0 0 m 0 70 l S 10 0 m 10 70 l S 20 0 m 20 70 l S 30 0 m 30 70 l S 40 0 m 40 70 l S 50 0 m 50 70 l S 60 0 m 60 70 l S 70 0 m 70 70 l S 80 0 m 80 70 l S 90 0 m 90 70 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S} +\axo@setObject{272}% +{AxoGluonArc 45 20 40 20 160 5 8 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 45 20 cm 0.94 0.342 -0.342 0.94 0 0 cm 33.718 9.386 m 32.658 13.195 42.52 17.18 44.19 8.501 c 45.234 3.075 42.496 0.577 40 0 c S 33.718 9.386 m 34.778 5.577 45.838 7.35 41.32 17.824 c 36.802 28.297 27.923 21.47 29.966 18.084 c 32.009 14.699 42.188 19.373 35.026 28.252 c 27.865 37.13 21.142 28.172 24.018 25.458 c 26.895 22.745 35.447 29.977 26.167 36.61 c 16.887 43.243 12.813 32.809 16.312 30.967 c 19.81 29.124 26.109 38.385 15.391 42.286 c 4.672 46.187 3.545 35.044 7.41 34.207 c 11.274 33.37 14.859 43.981 3.487 44.865 c -7.885 45.749 -5.983 34.711 -2.035 34.941 c 1.912 35.171 2.521 46.355 -8.672 44.156 c -19.865 41.958 -15.072 31.835 -11.331 33.115 c -7.589 34.395 -10.003 45.333 -20.196 40.213 c -30.389 35.094 -23.057 26.627 -19.796 28.864 c -16.535 31.1 -21.529 40.492 -28.387 34.917 c -32.674 31.431 -32.183 27.758 -30.642 25.712 c S} +\axo@setObject{273}% +{AxoGluonArc 45 0 40 20 160 -5 8 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 45 0 cm 0.94 0.342 -0.342 0.94 0 0 cm 43.352 12.068 m 41.988 16.966 32.467 13.118 34.37 6.612 c 35.182 2.392 37.497 0.509 40 0 c S 43.352 12.068 m 44.715 7.17 34.568 5.543 32.138 13.863 c 27.754 21.34 35.901 27.604 38.528 23.251 c 41.154 18.899 31.815 14.61 27.243 21.973 c 21.014 28.001 27.183 36.221 30.881 32.732 c 34.579 29.243 26.732 22.607 20.352 28.474 c 12.735 32.611 16.474 42.184 20.972 39.814 c 25.47 37.445 19.69 28.948 11.971 32.889 c 3.524 34.832 4.558 45.056 9.527 43.98 c 14.495 42.904 11.206 33.168 2.712 34.895 c -5.946 34.501 -7.692 44.628 -2.617 44.924 c 2.459 45.219 1.901 34.958 -6.745 34.344 c -14.981 31.642 -19.378 40.931 -14.568 42.577 c -9.758 44.223 -7.543 34.187 -15.708 31.277 c -22.918 26.466 -29.645 34.235 -25.452 37.11 c -21.26 39.986 -16.439 30.918 -22.079 27.157 c -25.413 24.446 -28.397 24.492 -30.642 25.712 c S} +\axo@setObject{274}% +{Grid 0 0 10 10 8 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S} +\axo@setObject{275}% +{AxoGluonCirc 40 40 30 0 5 16 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 40 40 cm 0.981 0.195 -0.195 0.981 0 0 cm 34.327 6.828 m 31.863 19.217 21.651 13.058 23.097 9.567 c 24.543 6.076 36.119 8.942 29.101 19.445 c 22.084 29.948 15.006 20.349 17.678 17.678 c 20.349 15.006 29.948 22.084 19.445 29.101 c 8.942 36.119 6.076 24.543 9.567 23.097 c 13.058 21.651 19.217 31.863 6.828 34.327 c -5.561 36.792 -3.778 25 0 25 c 3.778 25 5.561 36.792 -6.828 34.327 c -19.217 31.863 -13.058 21.651 -9.567 23.097 c -6.076 24.543 -8.942 36.119 -19.445 29.101 c -29.948 22.084 -20.349 15.006 -17.678 17.678 c -15.006 20.349 -22.084 29.948 -29.101 19.445 c -36.119 8.942 -24.543 6.076 -23.097 9.567 c -21.651 13.058 -31.863 19.217 -34.327 6.828 c -36.792 -5.561 -25 -3.778 -25 0 c -25 3.778 -36.792 5.561 -34.327 -6.828 c -31.863 -19.217 -21.651 -13.058 -23.097 -9.567 c -24.543 -6.076 -36.119 -8.942 -29.101 -19.445 c -22.084 -29.948 -15.006 -20.349 -17.678 -17.678 c -20.349 -15.006 -29.948 -22.084 -19.445 -29.101 c -8.942 -36.119 -6.076 -24.543 -9.567 -23.097 c -13.058 -21.651 -19.217 -31.863 -6.828 -34.327 c 5.561 -36.792 3.778 -25 0 -25 c -3.778 -25 -5.561 -36.792 6.828 -34.327 c 19.217 -31.863 13.058 -21.651 9.567 -23.097 c 6.076 -24.543 8.942 -36.119 19.445 -29.101 c 29.948 -22.084 20.349 -15.006 17.678 -17.678 c 15.006 -20.349 22.084 -29.948 29.101 -19.445 c 36.119 -8.942 24.543 -6.076 23.097 -9.567 c 21.651 -13.058 31.863 -19.217 34.327 -6.828 c 36.792 5.561 25 3.778 25 0 c 25 -3.778 36.792 -5.561 34.327 6.828 c S} +\axo@setObject{276}% +{Grid 0 0 10 10 8 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S} +\axo@setObject{277}% +{AxoGluonArc 40 40 30 0 360 5 16 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 40 40 cm 23.312 9.031 m 21.947 12.554 31.445 17.987 33.835 8.954 c 35.338 3.275 32.494 0.601 30 0 c S 23.312 9.031 m 24.677 5.508 36.168 8.073 29.758 18.425 c 23.348 28.778 15.93 19.635 18.475 16.842 c 21.021 14.05 30.809 20.593 21.092 27.931 c 11.375 35.269 7.761 24.063 11.143 22.379 c 14.526 20.695 21.29 30.332 9.578 33.664 c -2.133 36.996 -1.456 25.242 2.307 24.893 c 6.069 24.545 8.895 35.974 -3.229 34.851 c -15.354 33.727 -10.476 23.012 -6.842 24.046 c -3.207 25.08 -4.701 36.758 -15.601 31.331 c -26.501 25.903 -18.081 17.673 -15.066 19.95 c -12.051 22.227 -17.662 32.578 -25.865 23.579 c -34.068 14.581 -23.244 9.948 -21.255 13.161 c -19.266 16.373 -28.238 23.998 -32.637 12.643 c -37.035 1.289 -25.269 0.88 -24.574 4.594 c -23.88 8.308 -35 12.176 -35 0 c -35 -12.176 -23.88 -8.308 -24.574 -4.594 c -25.269 -0.88 -37.035 -1.289 -32.637 -12.643 c -28.238 -23.998 -19.266 -16.373 -21.255 -13.161 c -23.244 -9.948 -34.068 -14.581 -25.865 -23.579 c -17.662 -32.578 -12.051 -22.227 -15.066 -19.95 c -18.081 -17.673 -26.501 -25.903 -15.601 -31.331 c -4.701 -36.758 -3.207 -25.08 -6.842 -24.046 c -10.476 -23.012 -15.354 -33.727 -3.229 -34.851 c 8.895 -35.974 6.069 -24.545 2.307 -24.893 c -1.456 -25.242 -2.133 -36.996 9.578 -33.664 c 21.29 -30.332 14.526 -20.695 11.143 -22.379 c 7.761 -24.063 11.375 -35.269 21.092 -27.931 c 30.809 -20.593 21.021 -14.05 18.475 -16.842 c 15.93 -19.635 23.348 -28.778 29.758 -18.425 c 36.168 -8.073 24.677 -5.508 23.312 -9.031 c 21.947 -12.554 31.445 -17.987 33.835 -8.954 c 35.338 -3.275 32.494 -0.601 30 0 c S} +\axo@setObject{278}% +{AxoGluon 7 30 27 30 3 3 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 7 30 cm 5 -3 m 7.7 -3 7.7 3 3.5 3 c 1.25 3 0.25 1.5 0 0 c S 5 -3 m 2.3 -3 2.3 3 7.5 3 c 12.7 3 12.7 -3 10 -3 c 7.3 -3 7.3 3 12.5 3 c 17.7 3 17.7 -3 15 -3 c 12.3 -3 12.3 3 16.5 3 c 18.75 3 19.75 1.5 20 0 c S} +\axo@setObject{279}% +{AxoGluonCirc 50 30 20 0 3 16 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 50 30 cm 0.981 0.195 -0.195 0.981 0 0 cm 22.558 4.487 m 21.014 12.248 14.822 8.639 15.706 6.506 c 16.59 4.372 23.52 6.199 19.124 12.778 c 14.728 19.357 10.388 13.654 12.021 12.021 c 13.654 10.388 19.357 14.728 12.778 19.124 c 6.199 23.52 4.372 16.59 6.506 15.706 c 8.639 14.822 12.248 21.014 4.487 22.558 c -3.274 24.102 -2.309 17 0 17 c 2.309 17 3.274 24.102 -4.487 22.558 c -12.248 21.014 -8.639 14.822 -6.506 15.706 c -4.372 16.59 -6.199 23.52 -12.778 19.124 c -19.357 14.728 -13.654 10.388 -12.021 12.021 c -10.388 13.654 -14.728 19.357 -19.124 12.778 c -23.52 6.199 -16.59 4.372 -15.706 6.506 c -14.822 8.639 -21.014 12.248 -22.558 4.487 c -24.102 -3.274 -17 -2.309 -17 0 c -17 2.309 -24.102 3.274 -22.558 -4.487 c -21.014 -12.248 -14.822 -8.639 -15.706 -6.506 c -16.59 -4.372 -23.52 -6.199 -19.124 -12.778 c -14.728 -19.357 -10.388 -13.654 -12.021 -12.021 c -13.654 -10.388 -19.357 -14.728 -12.778 -19.124 c -6.199 -23.52 -4.372 -16.59 -6.506 -15.706 c -8.639 -14.822 -12.248 -21.014 -4.487 -22.558 c 3.274 -24.102 2.309 -17 0 -17 c -2.309 -17 -3.274 -24.102 4.487 -22.558 c 12.248 -21.014 8.639 -14.822 6.506 -15.706 c 4.372 -16.59 6.199 -23.52 12.778 -19.124 c 19.357 -14.728 13.654 -10.388 12.021 -12.021 c 10.388 -13.654 14.728 -19.357 19.124 -12.778 c 23.52 -6.199 16.59 -4.372 15.706 -6.506 c 14.822 -8.639 21.014 -12.248 22.558 -4.487 c 24.102 3.274 17 2.309 17 0 c 17 -2.309 24.102 -3.274 22.558 4.487 c S} +\axo@setObject{280}% +{AxoGluon 73 30 93 30 3 3 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 73 30 cm 5 -3 m 7.7 -3 7.7 3 3.5 3 c 1.25 3 0.25 1.5 0 0 c S 5 -3 m 2.3 -3 2.3 3 7.5 3 c 12.7 3 12.7 -3 10 -3 c 7.3 -3 7.3 3 12.5 3 c 17.7 3 17.7 -3 15 -3 c 12.3 -3 12.3 3 16.5 3 c 18.75 3 19.75 1.5 20 0 c S} +\axo@setObject{281}% +{Vertex 27 30 1.5 0.5;}% +{ 0.5 w 1 0 0 1 27 30 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{282}% +{Vertex 73 30 1.5 0.5;}% +{ 0.5 w 1 0 0 1 73 30 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{283}% +{AxoGluon 110 30 130 30 3 3 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 110 30 cm 5 -3 m 7.7 -3 7.7 3 3.5 3 c 1.25 3 0.25 1.5 0 0 c S 5 -3 m 2.3 -3 2.3 3 7.5 3 c 12.7 3 12.7 -3 10 -3 c 7.3 -3 7.3 3 12.5 3 c 17.7 3 17.7 -3 15 -3 c 12.3 -3 12.3 3 16.5 3 c 18.75 3 19.75 1.5 20 0 c S} +\axo@setObject{284}% +{AxoGluonArc 150 30 20 0 180 3 8 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 150 30 cm 15.975 5.814 m 15.185 7.984 20.957 11.019 22.317 5.564 c 23.198 2.03 21.497 0.375 20 0 c S 15.975 5.814 m 16.765 3.645 23.596 5.13 19.919 11.5 c 16.241 17.87 11.539 12.696 13.023 10.927 c 14.507 9.159 20.419 12.891 14.784 17.619 c 9.149 22.347 6.5 15.877 8.5 14.722 c 10.5 13.568 14.779 19.097 7.866 21.613 c 0.954 24.129 0.678 17.143 2.952 16.742 c 5.226 16.341 7.356 23 0 23 c -7.356 23 -5.226 16.341 -2.952 16.742 c -0.678 17.143 -0.954 24.129 -7.866 21.613 c -14.779 19.097 -10.5 13.568 -8.5 14.722 c -6.5 15.877 -9.149 22.347 -14.784 17.619 c -20.419 12.891 -14.507 9.159 -13.023 10.927 c -11.539 12.696 -16.241 17.87 -19.919 11.5 c -23.596 5.13 -16.765 3.645 -15.975 5.814 c -15.185 7.984 -20.957 11.019 -22.317 5.564 c -23.198 2.03 -21.497 0.375 -20 0 c S} +\axo@setObject{285}% +{AxoGluonArc 150 30 20 180 360 3 8 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 150 30 cm -1 0 0 -1 0 0 cm 15.975 5.814 m 15.185 7.984 20.957 11.019 22.317 5.564 c 23.198 2.03 21.497 0.375 20 0 c S 15.975 5.814 m 16.765 3.645 23.596 5.13 19.919 11.5 c 16.241 17.87 11.539 12.696 13.023 10.927 c 14.507 9.159 20.419 12.891 14.784 17.619 c 9.149 22.347 6.5 15.877 8.5 14.722 c 10.5 13.568 14.779 19.097 7.866 21.613 c 0.954 24.129 0.678 17.143 2.952 16.742 c 5.226 16.341 7.356 23 0 23 c -7.356 23 -5.226 16.341 -2.952 16.742 c -0.678 17.143 -0.954 24.129 -7.866 21.613 c -14.779 19.097 -10.5 13.568 -8.5 14.722 c -6.5 15.877 -9.149 22.347 -14.784 17.619 c -20.419 12.891 -14.507 9.159 -13.023 10.927 c -11.539 12.696 -16.241 17.87 -19.919 11.5 c -23.596 5.13 -16.765 3.645 -15.975 5.814 c -15.185 7.984 -20.957 11.019 -22.317 5.564 c -23.198 2.03 -21.497 0.375 -20 0 c S} +\axo@setObject{286}% +{AxoGluon 170 30 190 30 3 3 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 170 30 cm 5 -3 m 7.7 -3 7.7 3 3.5 3 c 1.25 3 0.25 1.5 0 0 c S 5 -3 m 2.3 -3 2.3 3 7.5 3 c 12.7 3 12.7 -3 10 -3 c 7.3 -3 7.3 3 12.5 3 c 17.7 3 17.7 -3 15 -3 c 12.3 -3 12.3 3 16.5 3 c 18.75 3 19.75 1.5 20 0 c S} +\axo@setObject{287}% +{Vertex 130 30 1.5 0.5;}% +{ 0.5 w 1 0 0 1 130 30 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{288}% +{Vertex 170 30 1.5 0.5;}% +{ 0.5 w 1 0 0 1 170 30 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{289}% +{AxoGluon 210 30 230 30 3 3 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 210 30 cm 5 -3 m 7.7 -3 7.7 3 3.5 3 c 1.25 3 0.25 1.5 0 0 c S 5 -3 m 2.3 -3 2.3 3 7.5 3 c 12.7 3 12.7 -3 10 -3 c 7.3 -3 7.3 3 12.5 3 c 17.7 3 17.7 -3 15 -3 c 12.3 -3 12.3 3 16.5 3 c 18.75 3 19.75 1.5 20 0 c S} +\axo@setObject{290}% +{AxoGluonArc 250 30 20 0 180 -3 8 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 250 30 cm 21.613 7.866 m 20.544 10.802 15.054 7.915 16.495 4.113 c 17.146 1.5 18.497 0.323 20 0 c S 21.613 7.866 m 22.681 4.931 16.625 3.614 14.722 8.5 c 11.442 12.591 15.611 17.177 17.619 14.784 c 19.627 12.391 14.386 9.082 10.927 13.023 c 6.446 15.745 8.795 21.481 11.5 19.919 c 14.205 18.357 10.412 13.455 5.814 15.975 c 0.672 17 0.917 23.193 3.994 22.651 c 7.07 22.108 5.182 16.205 0 17 c -5.182 16.205 -7.07 22.108 -3.994 22.651 c -0.917 23.193 -0.672 17 -5.814 15.975 c -10.412 13.455 -14.205 18.357 -11.5 19.919 c -8.795 21.481 -6.446 15.745 -10.927 13.023 c -14.386 9.082 -19.627 12.391 -17.619 14.784 c -15.611 17.177 -11.442 12.591 -14.722 8.5 c -16.625 3.614 -22.681 4.931 -21.613 7.866 c -20.544 10.802 -15.054 7.915 -16.495 4.113 c -17.146 1.5 -18.497 0.323 -20 0 c S} +\axo@setObject{291}% +{AxoGluonArc 250 30 20 180 360 -3 8 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 250 30 cm -1 0 0 -1 0 0 cm 21.613 7.866 m 20.544 10.802 15.054 7.915 16.495 4.113 c 17.146 1.5 18.497 0.323 20 0 c S 21.613 7.866 m 22.681 4.931 16.625 3.614 14.722 8.5 c 11.442 12.591 15.611 17.177 17.619 14.784 c 19.627 12.391 14.386 9.082 10.927 13.023 c 6.446 15.745 8.795 21.481 11.5 19.919 c 14.205 18.357 10.412 13.455 5.814 15.975 c 0.672 17 0.917 23.193 3.994 22.651 c 7.07 22.108 5.182 16.205 0 17 c -5.182 16.205 -7.07 22.108 -3.994 22.651 c -0.917 23.193 -0.672 17 -5.814 15.975 c -10.412 13.455 -14.205 18.357 -11.5 19.919 c -8.795 21.481 -6.446 15.745 -10.927 13.023 c -14.386 9.082 -19.627 12.391 -17.619 14.784 c -15.611 17.177 -11.442 12.591 -14.722 8.5 c -16.625 3.614 -22.681 4.931 -21.613 7.866 c -20.544 10.802 -15.054 7.915 -16.495 4.113 c -17.146 1.5 -18.497 0.323 -20 0 c S} +\axo@setObject{292}% +{AxoGluon 270 30 290 30 3 3 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 270 30 cm 5 -3 m 7.7 -3 7.7 3 3.5 3 c 1.25 3 0.25 1.5 0 0 c S 5 -3 m 2.3 -3 2.3 3 7.5 3 c 12.7 3 12.7 -3 10 -3 c 7.3 -3 7.3 3 12.5 3 c 17.7 3 17.7 -3 15 -3 c 12.3 -3 12.3 3 16.5 3 c 18.75 3 19.75 1.5 20 0 c S} +\axo@setObject{293}% +{Vertex 230 30 1.5 0.5;}% +{ 0.5 w 1 0 0 1 230 30 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{294}% +{Vertex 270 30 1.5 0.5;}% +{ 0.5 w 1 0 0 1 270 30 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{295}% +{AxoLine 310 30 330 30 0 3 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 3.333] 1.667 d 310 30 m 330 30 l S} +\axo@setObject{296}% +{AxoGluonArc 350 30 20 -180 180 3 16 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 350 30 cm -1 0 0 -1 0 0 cm 15.852 6.141 m 15.018 8.294 20.758 11.464 22.235 5.884 c 23.222 2.152 21.496 0.397 20 0 c S 15.852 6.141 m 16.686 3.988 23.565 5.632 19.555 12.108 c 15.545 18.584 11.008 13.159 12.563 11.453 c 14.119 9.746 19.939 13.764 13.861 18.354 c 7.782 22.945 5.511 16.247 7.578 15.218 c 9.645 14.189 13.62 20.038 6.294 22.122 c -1.032 24.206 -0.731 17.141 1.569 16.927 c 3.868 16.714 5.462 23.605 -2.122 22.902 c -9.707 22.199 -6.873 15.719 -4.652 16.351 c -2.431 16.983 -3.434 23.984 -10.252 20.589 c -17.07 17.194 -12.087 12.175 -10.245 13.566 c -8.402 14.958 -11.866 21.124 -16.997 15.495 c -22.129 9.866 -15.669 6.986 -14.454 8.949 c -13.238 10.913 -18.695 15.411 -21.447 8.309 c -24.198 1.206 -17.135 0.854 -16.711 3.124 c -16.286 5.393 -23 7.617 -23 0 c -23 -7.617 -16.286 -5.393 -16.711 -3.124 c -17.135 -0.854 -24.198 -1.206 -21.447 -8.309 c -18.695 -15.411 -13.238 -10.913 -14.454 -8.949 c -15.669 -6.986 -22.129 -9.866 -16.997 -15.495 c -11.866 -21.124 -8.402 -14.958 -10.245 -13.566 c -12.087 -12.175 -17.07 -17.194 -10.252 -20.589 c -3.434 -23.984 -2.431 -16.983 -4.652 -16.351 c -6.873 -15.719 -9.707 -22.199 -2.122 -22.902 c 5.462 -23.605 3.868 -16.714 1.569 -16.927 c -0.731 -17.141 -1.032 -24.206 6.294 -22.122 c 13.62 -20.038 9.645 -14.189 7.578 -15.218 c 5.511 -16.247 7.782 -22.945 13.861 -18.354 c 19.939 -13.764 14.119 -9.746 12.563 -11.453 c 11.008 -13.159 15.545 -18.584 19.555 -12.108 c 23.565 -5.632 16.686 -3.988 15.852 -6.141 c 15.018 -8.294 20.758 -11.464 22.235 -5.884 c 23.222 -2.152 21.496 -0.397 20 0 c S} +\axo@setObject{297}% +{Vertex 330 30 1.5 0.5;}% +{ 0.5 w 1 0 0 1 330 30 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{298}% +{AxoLine 387 30 407 30 0 3 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w [ 3.333] 1.667 d 387 30 m 407 30 l S} +\axo@setObject{299}% +{AxoGluonCirc 430 30 20 0 3 16 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 430 30 cm 0.981 0.195 -0.195 0.981 0 0 cm 22.558 4.487 m 21.014 12.248 14.822 8.639 15.706 6.506 c 16.59 4.372 23.52 6.199 19.124 12.778 c 14.728 19.357 10.388 13.654 12.021 12.021 c 13.654 10.388 19.357 14.728 12.778 19.124 c 6.199 23.52 4.372 16.59 6.506 15.706 c 8.639 14.822 12.248 21.014 4.487 22.558 c -3.274 24.102 -2.309 17 0 17 c 2.309 17 3.274 24.102 -4.487 22.558 c -12.248 21.014 -8.639 14.822 -6.506 15.706 c -4.372 16.59 -6.199 23.52 -12.778 19.124 c -19.357 14.728 -13.654 10.388 -12.021 12.021 c -10.388 13.654 -14.728 19.357 -19.124 12.778 c -23.52 6.199 -16.59 4.372 -15.706 6.506 c -14.822 8.639 -21.014 12.248 -22.558 4.487 c -24.102 -3.274 -17 -2.309 -17 0 c -17 2.309 -24.102 3.274 -22.558 -4.487 c -21.014 -12.248 -14.822 -8.639 -15.706 -6.506 c -16.59 -4.372 -23.52 -6.199 -19.124 -12.778 c -14.728 -19.357 -10.388 -13.654 -12.021 -12.021 c -13.654 -10.388 -19.357 -14.728 -12.778 -19.124 c -6.199 -23.52 -4.372 -16.59 -6.506 -15.706 c -8.639 -14.822 -12.248 -21.014 -4.487 -22.558 c 3.274 -24.102 2.309 -17 0 -17 c -2.309 -17 -3.274 -24.102 4.487 -22.558 c 12.248 -21.014 8.639 -14.822 6.506 -15.706 c 4.372 -16.59 6.199 -23.52 12.778 -19.124 c 19.357 -14.728 13.654 -10.388 12.021 -12.021 c 10.388 -13.654 14.728 -19.357 19.124 -12.778 c 23.52 -6.199 16.59 -4.372 15.706 -6.506 c 14.822 -8.639 21.014 -12.248 22.558 -4.487 c 24.102 3.274 17 2.309 17 0 c 17 -2.309 24.102 -3.274 22.558 4.487 c S} +\axo@setObject{300}% +{Vertex 407 30 1.5 0.5;}% +{ 0.5 w 1 0 0 1 407 30 cm -1.5 0 m -1.5 0.828 -0.828 1.5 0 1.5 c 0.828 1.5 1.5 0.828 1.5 0 c 1.5 -0.828 0.828 -1.5 0 -1.5 c -0.828 -1.5 -1.5 -0.828 -1.5 0 c f } +\axo@setObject{301}% +{Grid 0 0 10 10 15 10 0.5;}% +{ 0.5 w 0 0 m 0 100 l S 10 0 m 10 100 l S 20 0 m 20 100 l S 30 0 m 30 100 l S 40 0 m 40 100 l S 50 0 m 50 100 l S 60 0 m 60 100 l S 70 0 m 70 100 l S 80 0 m 80 100 l S 90 0 m 90 100 l S 100 0 m 100 100 l S 110 0 m 110 100 l S 120 0 m 120 100 l S 130 0 m 130 100 l S 140 0 m 140 100 l S 150 0 m 150 100 l S 0 0 m 150 0 l S 0 10 m 150 10 l S 0 20 m 150 20 l S 0 30 m 150 30 l S 0 40 m 150 40 l S 0 50 m 150 50 l S 0 60 m 150 60 l S 0 70 m 150 70 l S 0 80 m 150 80 l S 0 90 m 150 90 l S 0 100 m 150 100 l S} +\axo@setObject{302}% +{AxoLine 10 50 100 50 0 0 3 40 0 0.3 1 1 1 1 0 3;}% +{ 3 w 10 50 m 100 50 l S 1 0 0 1 10 50 cm 1 0 0 1 90 0 cm q [] 0 d 3 w q 40 0 m -40 40 l -16 0 l -40 -40 l 0 0 0 0 k h f Q q 40 0 m -40 40 l -16 0 l -40 -40 l s Q Q} +\axo@setObject{303}% +{AxoLine 55 50 55 90 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w 55 50 m 55 90 l S 1 0 0 1 55 50 cm 0 1 -1 0 0 0 cm 1 0 0 1 40 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{304}% +{AxoLine 60 5 84 5 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w 60 5 m 84 5 l S 1 0 0 1 60 5 cm 1 0 0 1 24 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{305}% +{AxoLine 60 95 140 95 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w 60 95 m 140 95 l S 1 0 0 1 60 95 cm 1 0 0 1 80 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{306}% +{Grid 0 0 10 10 9 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 90 0 m 90 80 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S} +\axo@setObject{307}% +{AxoLine 10 70 80 70 0 0 0 0 0 0.2 2 1.25 0.5 1 0 0.5;}% +{ 0.5 w 10 70 m 80 70 l S 1 0 0 1 10 70 cm 1 0 0 1 35 0 cm q [] 0 d 6.25 0 m -6.25 5 l -3.75 0 l -6.25 -5 l h f Q} +\axo@setObject{308}% +{AxoLine 10 50 80 50 0 0 0 0 0 0.2 1 1.25 0.8 1 1 0.5;}% +{ 0.5 w 10 50 m 80 50 l S 1 0 0 1 10 50 cm 1 0 0 1 56 0 cm q [] 0 d -3.125 0 m 3.125 2.5 l 1.875 0 l 3.125 -2.5 l h f Q} +\axo@setObject{309}% +{AxoLine 10 30 80 30 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 10 30 m 80 30 l S 1 0 0 1 10 30 cm 1 0 0 1 35 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{310}% +{AxoLine 10 10 80 10 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 10 10 m 80 10 l S 1 0 0 1 10 10 cm 1 0 0 1 35 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{311}% +{Grid 0 0 10 10 9 6 0.5;}% +{ 0.5 w 0 0 m 0 60 l S 10 0 m 10 60 l S 20 0 m 20 60 l S 30 0 m 30 60 l S 40 0 m 40 60 l S 50 0 m 50 60 l S 60 0 m 60 60 l S 70 0 m 70 60 l S 80 0 m 80 60 l S 90 0 m 90 60 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S} +\axo@setObject{312}% +{AxoLine 10 30 80 30 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w 10 30 m 80 30 l S 1 0 0 1 10 30 cm 1 0 0 1 70 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{313}% +{AxoLine 10 10 80 10 0 0 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w 10 10 m 80 10 l S 1 0 0 1 10 10 cm 1 0 0 1 70 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{314}% +{AxoLine 10 50 70 50 0 0 0 0 0 0.2 0.8 1.25 1 1 0 4;}% +{ 4 w 10 50 m 70 50 l S 1 0 0 1 10 50 cm 1 0 0 1 60 0 cm q [] 0 d 6 0 m -6 4.8 l -3.6 0 l -6 -4.8 l h f Q} +\axo@setObject{315}% +{Grid 0 0 10 10 9 10 0.5;}% +{ 0.5 w 0 0 m 0 100 l S 10 0 m 10 100 l S 20 0 m 20 100 l S 30 0 m 30 100 l S 40 0 m 40 100 l S 50 0 m 50 100 l S 60 0 m 60 100 l S 70 0 m 70 100 l S 80 0 m 80 100 l S 90 0 m 90 100 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S 0 100 m 90 100 l S} +\axo@setObject{316}% +{AxoLine 10 90 75 90 5 0 1 0 0 0.2 1.3 1.25 1 1 0 0.5;}% +{ 0.5 w q 5.5 w 10 90 m 75 90 l S 4.5 w 0 0 0 0 K 10 90 m 75 90 l S Q 1 0 0 1 10 90 cm 1 0 0 1 65 0 cm q [] 0 d 1 w q 9.75 0 m -9.75 7.8 l -5.85 0 l -9.75 -7.8 l 0 0 0 0 k h f Q q 9.75 0 m -9.75 7.8 l -5.85 0 l -9.75 -7.8 l s Q Q} +\axo@setObject{317}% +{AxoLine 10 70 80 70 2 0 1 0 0 0.2 1.5 1.25 1 1 0 0.5;}% +{ 0.5 w q 2.5 w 10 70 m 80 70 l S 1.5 w 0 0 0 0 K 10 70 m 80 70 l S Q 1 0 0 1 10 70 cm 1 0 0 1 70 0 cm q [] 0 d 1 w q 6.525 0 m -6.525 5.22 l -3.915 0 l -6.525 -5.22 l 0 0 0 0 k h f Q q 6.525 0 m -6.525 5.22 l -3.915 0 l -6.525 -5.22 l s Q Q} +\axo@setObject{318}% +{AxoLine 10 50 80 50 2 0 1 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w q 2.5 w 10 50 m 80 50 l S 1.5 w 0 0 0 0 K 10 50 m 80 50 l S Q 1 0 0 1 10 50 cm 1 0 0 1 70 0 cm q [] 0 d 1 w q 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l 0 0 0 0 k h f Q q 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l s Q Q} +\axo@setObject{319}% +{AxoLine 10 30 80 30 2 0 1 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w q 2.5 w 10 30 m 80 30 l S 1.5 w 0 0 0 0 K 10 30 m 80 30 l S Q 1 0 0 1 10 30 cm 1 0 0 1 35 0 cm q [] 0 d 1 w q 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l 0 0 0 0 k h f Q q 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l s Q Q} +\axo@setObject{320}% +{AxoLine 10 10 80 10 2 0 1 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w q 2.5 w 10 10 m 80 10 l S 1.5 w 0 0 0 0 K 10 10 m 80 10 l S Q 1 0 0 1 10 10 cm 1 0 0 1 35 0 cm q [] 0 d 1 w q 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l 0 0 0 0 k h f Q q 4.35 0 m -4.35 3.48 l -2.61 0 l -4.35 -3.48 l s Q Q} +\axo@setObject{321}% +{Grid 0 0 10 10 9 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 90 0 m 90 80 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S} +\axo@setObject{322}% +{AxoLine 10 70 80 70 0 3 0 0 0 0.2 1.5 1.25 0.3 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 70 m 80 70 l S 1 0 0 1 10 70 cm 1 0 0 1 23.333 0 cm q [] 0 d 4.688 0 m -4.688 3.75 l -2.812 0 l -4.688 -3.75 l h f Q} +\axo@setObject{323}% +{AxoLine 10 50 80 50 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 50 m 80 50 l S 1 0 0 1 10 50 cm 1 0 0 1 35 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{324}% +{AxoLine 10 30 80 30 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 30 m 80 30 l S 1 0 0 1 10 30 cm 1 0 0 1 35 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{325}% +{AxoLine 10 10 80 10 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 10 m 80 10 l S 1 0 0 1 10 10 cm 1 0 0 1 35 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{326}% +{Grid 0 0 10 10 9 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 90 0 m 90 80 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S} +\axo@setObject{327}% +{AxoLine 10 70 80 70 1.5 3 0.5 0 0 0.2 1.5 1.25 1 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d q 2 w 10 70 m 80 70 l S 1 w 0 0 0 0 K 10 70 m 80 70 l S Q 1 0 0 1 10 70 cm 1 0 0 1 70 0 cm q [] 0 d 0.5 w q 5.737 0 m -5.737 4.59 l -3.442 0 l -5.737 -4.59 l 0 0 0 0 k h f Q q 5.737 0 m -5.737 4.59 l -3.442 0 l -5.737 -4.59 l s Q Q} +\axo@setObject{328}% +{AxoLine 10 50 80 50 1.5 3 0.5 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d q 2 w 10 50 m 80 50 l S 1 w 0 0 0 0 K 10 50 m 80 50 l S Q 1 0 0 1 10 50 cm 1 0 0 1 35 0 cm q [] 0 d 0.5 w q 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l 0 0 0 0 k h f Q q 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l s Q Q} +\axo@setObject{329}% +{AxoLine 10 30 80 30 1.5 3 0.5 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d q 2 w 10 30 m 80 30 l S 1 w 0 0 0 0 K 10 30 m 80 30 l S Q 1 0 0 1 10 30 cm 1 0 0 1 35 0 cm q [] 0 d 0.5 w q 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l 0 0 0 0 k h f Q q 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l s Q Q} +\axo@setObject{330}% +{AxoLine 10 10 80 10 1.5 3 0.5 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d q 2 w 10 10 m 80 10 l S 1 w 0 0 0 0 K 10 10 m 80 10 l S Q 1 0 0 1 10 10 cm 1 0 0 1 35 0 cm q [] 0 d 0.5 w q 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l 0 0 0 0 k h f Q q 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l s Q Q} +\axo@setObject{331}% +{Grid 0 0 10 10 9 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 90 0 m 90 80 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S} +\axo@setObject{332}% +{AxoLine 10 70 80 70 0 3 0 0 0 0.2 1.5 1.25 0 1 1 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 70 m 80 70 l S 1 0 0 1 10 70 cm q [] 0 d -4.688 0 m 4.688 3.75 l 2.812 0 l 4.688 -3.75 l h f Q} +\axo@setObject{333}% +{AxoLine 10 50 80 50 0 3 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 50 m 80 50 l S 1 0 0 1 10 50 cm 1 0 0 1 70 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{334}% +{AxoLine 10 30 80 30 0 3 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 30 m 80 30 l S 1 0 0 1 10 30 cm 1 0 0 1 70 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{335}% +{AxoLine 10 10 80 10 0 3 0 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w [ 2.917] 1.458 d 10 10 m 80 10 l S 1 0 0 1 10 10 cm 1 0 0 1 70 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{336}% +{Grid 0 0 10 10 9 14 0.5;}% +{ 0.5 w 0 0 m 0 140 l S 10 0 m 10 140 l S 20 0 m 20 140 l S 30 0 m 30 140 l S 40 0 m 40 140 l S 50 0 m 50 140 l S 60 0 m 60 140 l S 70 0 m 70 140 l S 80 0 m 80 140 l S 90 0 m 90 140 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S 0 100 m 90 100 l S 0 110 m 90 110 l S 0 120 m 90 120 l S 0 130 m 90 130 l S 0 140 m 90 140 l S} +\axo@setObject{337}% +{AxoArc 45 95 40 160 20 0 0 0 0 0 0.2 1 1.25 1 1 0 1 0.5;}% +{ 0.5 w 1 0 0 1 45 95 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 37.588 13.681 cm -0.342 0.94 -0.94 -0.342 0 0 cm q [] 0 d -3.125 0 m 3.125 2.5 l 1.875 0 l 3.125 -2.5 l h f Q} +\axo@setObject{338}% +{AxoArc 45 80 40 160 20 0 0 0 0 0 0.2 1 1.25 1 1 0 1 0.5;}% +{ 0.5 w 1 0 0 1 45 80 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 37.588 13.681 cm -0.342 0.94 -0.94 -0.342 0 0 cm q [] 0 d -3.125 0 m 3.125 2.5 l 1.875 0 l 3.125 -2.5 l h f Q} +\axo@setObject{339}% +{AxoArc 45 65 40 160 20 0 0 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5;}% +{ 0.5 w 1 0 0 1 45 65 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d -3.125 0 m 3.125 2.5 l 1.875 0 l 3.125 -2.5 l h f Q} +\axo@setObject{340}% +{AxoArc 45 50 40 160 20 0 0 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5;}% +{ 0.5 w 1 0 0 1 45 50 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d -3.125 0 m 3.125 2.5 l 1.875 0 l 3.125 -2.5 l h f Q} +\axo@setObject{341}% +{AxoArc 45 35 40 20 160 0 0 0 0 0 0.2 1 1.25 1 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 35 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 -37.588 13.681 cm -0.342 -0.94 0.94 -0.342 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{342}% +{AxoArc 45 20 40 20 160 0 0 0 0 0 0.2 1 1.25 1 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 20 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 -37.588 13.681 cm -0.342 -0.94 0.94 -0.342 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{343}% +{AxoArc 45 5 40 20 160 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 5 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{344}% +{AxoArc 45 -10 40 20 160 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 -10 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{345}% +{Grid 0 0 10 10 9 11 0.5;}% +{ 0.5 w 0 0 m 0 110 l S 10 0 m 10 110 l S 20 0 m 20 110 l S 30 0 m 30 110 l S 40 0 m 40 110 l S 50 0 m 50 110 l S 60 0 m 60 110 l S 70 0 m 70 110 l S 80 0 m 80 110 l S 90 0 m 90 110 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S 0 90 m 90 90 l S 0 100 m 90 100 l S 0 110 m 90 110 l S} +\axo@setObject{346}% +{AxoArc 45 65 40 160 20 0 3 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5;}% +{ 0.5 w [ 3.054] 1.527 d 1 0 0 1 45 65 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d -3.125 0 m 3.125 2.5 l 1.875 0 l 3.125 -2.5 l h f Q} +\axo@setObject{347}% +{AxoArc 45 50 40 160 20 0 3 0 0 0 0.2 1 1.25 0.5 1 0 1 0.5;}% +{ 0.5 w [ 3.054] 1.527 d 1 0 0 1 45 50 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d -3.125 0 m 3.125 2.5 l 1.875 0 l 3.125 -2.5 l h f Q} +\axo@setObject{348}% +{AxoArc 45 35 40 20 160 0 3 0 0 0 0.2 1 1.25 1 1 0 0 0.5;}% +{ 0.5 w [ 3.054] 1.527 d 1 0 0 1 45 35 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 -37.588 13.681 cm -0.342 -0.94 0.94 -0.342 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{349}% +{AxoArc 45 20 40 20 160 0 3 0 0 0 0.2 1 1.25 1 1 0 0 0.5;}% +{ 0.5 w [ 3.054] 1.527 d 1 0 0 1 45 20 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 -37.588 13.681 cm -0.342 -0.94 0.94 -0.342 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{350}% +{AxoArc 45 5 40 20 160 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w [ 3.054] 1.527 d 1 0 0 1 45 5 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{351}% +{AxoArc 45 -10 40 20 160 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w [ 3.054] 1.527 d 1 0 0 1 45 -10 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{352}% +{Grid 0 0 10 10 9 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 90 0 m 90 80 l S 0 0 m 90 0 l S 0 10 m 90 10 l S 0 20 m 90 20 l S 0 30 m 90 30 l S 0 40 m 90 40 l S 0 50 m 90 50 l S 0 60 m 90 60 l S 0 70 m 90 70 l S 0 80 m 90 80 l S} +\axo@setObject{353}% +{AxoArc 45 35 40 20 160 1.5 3 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w [ 3.054] 1.527 d 1 0 0 1 45 35 cm q 1.019 0 0 1.019 0 0 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S Q q 0.981 0 0 0.981 0 0 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S Q 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l h f Q} +\axo@setObject{354}% +{AxoArc 45 20 40 20 160 1.5 3 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w [ 3.054] 1.527 d 1 0 0 1 45 20 cm q 1.019 0 0 1.019 0 0 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S Q q 0.981 0 0 0.981 0 0 cm 37.588 13.681 m 31.836 29.483 16.816 40 0 40 c -16.816 40 -31.836 29.483 -37.588 13.681 c S Q 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l h f Q} +\axo@setObject{355}% +{AxoArc 45 5 40 20 160 1.5 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 5 cm 38.292 13.937 m 32.433 30.035 17.131 40.75 0 40.75 c -17.131 40.75 -32.433 30.035 -38.292 13.937 c S 36.883 13.424 m 31.239 28.93 16.501 39.25 0 39.25 c -16.501 39.25 -31.239 28.93 -36.883 13.424 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l h f Q} +\axo@setObject{356}% +{AxoArc 45 -10 40 20 160 1.5 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 45 -10 cm 38.292 13.937 m 32.433 30.035 17.131 40.75 0 40.75 c -17.131 40.75 -32.433 30.035 -38.292 13.937 c S 36.883 13.424 m 31.239 28.93 16.501 39.25 0 39.25 c -16.501 39.25 -31.239 28.93 -36.883 13.424 c S 1 0 0 1 0 40 cm -1 0 0 -1 0 0 cm q [] 0 d 3.825 0 m -3.825 3.06 l -2.295 0 l -3.825 -3.06 l h f Q} +\axo@setObject{357}% +{Grid 0 0 10 10 8 8 0.5;}% +{ 0.5 w 0 0 m 0 80 l S 10 0 m 10 80 l S 20 0 m 20 80 l S 30 0 m 30 80 l S 40 0 m 40 80 l S 50 0 m 50 80 l S 60 0 m 60 80 l S 70 0 m 70 80 l S 80 0 m 80 80 l S 0 0 m 80 0 l S 0 10 m 80 10 l S 0 20 m 80 20 l S 0 30 m 80 30 l S 0 40 m 80 40 l S 0 50 m 80 50 l S 0 60 m 80 60 l S 0 70 m 80 70 l S 0 80 m 80 80 l S} +\axo@setObject{358}% +{AxoBezier 10 10 30 30 10 50 30 70 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w 10 10 m 30 30 10 50 30 70 c S 1 0 0 1 20 40 cm 0 1 -1 0 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{359}% +{AxoBezier 30 10 50 30 30 50 50 70 0 3 0 0 0 0.2 1 1.25 0.5 1 0 0.5;}% +{ 0.5 w [ 2.971] 1.486 d 30 10 m 50 30 30 50 50 70 c S 1 0 0 1 40 40 cm 0 1 -1 0 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{360}% +{AxoBezier 50 10 70 30 50 50 70 70 1 0 0.5 0 0 0.2 1 1.25 1 1 0 0.5;}% +{ 0.5 w q 1.5 w 50 10 m 70 30 50 50 70 70 c S Q q 0.5 w 0 0 0 0 K 50 10 m 70 30 50 50 70 70 c S Q 1 0 0 1 70 70 cm 0.707 0.707 -0.707 0.707 0 0 cm q [] 0 d 0.5 w q 3.3 0 m -3.3 2.64 l -1.98 0 l -3.3 -2.64 l 0 0 0 0 k h f Q q 3.3 0 m -3.3 2.64 l -1.98 0 l -3.3 -2.64 l s Q Q} +\axo@setObject{361}% +{AxoArc 30 0 30 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 30 0 cm 30 0 m 30 16.569 16.569 30 0 30 c -16.569 30 -30 16.569 -30 0 c S 1 0 0 1 0 30 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{362}% +{FBoxc 0 0 30.0 12.747 0.5;}% +{ 0.5 w -15 -6.373 30 12.747 re f} +\axo@setObject{363}% +{Boxc 0 0 30.0 12.747 0.5;}% +{ 0.5 w -15 -6.373 30 12.747 re S} +\axo@setObject{364}% +{AxoArc 30 0 30 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 30 0 cm 30 0 m 30 16.569 16.569 30 0 30 c -16.569 30 -30 16.569 -30 0 c S 1 0 0 1 0 30 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{365}% +{FBoxc 0 0 30.0 12.747 0.5;}% +{ 0.5 w -15 -6.373 30 12.747 re f} +\axo@setObject{366}% +{Boxc 0 0 30.0 12.747 0.5;}% +{ 0.5 w -15 -6.373 30 12.747 re S} +\axo@setObject{367}% +{AxoArc 30 0 30 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 30 0 cm 30 0 m 30 16.569 16.569 30 0 30 c -16.569 30 -30 16.569 -30 0 c S 1 0 0 1 0 30 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{368}% +{FBoxc 0 0 30.0 12.747 0.5;}% +{ 0.5 w -15 -6.373 30 12.747 re f} +\axo@setObject{369}% +{Boxc 0 0 30.0 12.747 0.5;}% +{ 0.5 w -15 -6.373 30 12.747 re S} +\axo@setObject{370}% +{AxoArc 30 0 30 0 180 0 0 0 0 0 0.2 1 1.25 0.5 1 0 0 0.5;}% +{ 0.5 w 1 0 0 1 30 0 cm 30 0 m 30 16.569 16.569 30 0 30 c -16.569 30 -30 16.569 -30 0 c S 1 0 0 1 0 30 cm -1 0 0 -1 0 0 cm q [] 0 d 3.125 0 m -3.125 2.5 l -1.875 0 l -3.125 -2.5 l h f Q} +\axo@setObject{371}% +{FBoxc 0 0 30.0 12.747 0.5;}% +{ 0.5 w -15 -6.373 30 12.747 re f} +\axo@setObject{372}% +{Boxc 0 0 30.0 12.747 0.5;}% +{ 0.5 w -15 -6.373 30 12.747 re S} +\axo@setObject{373}% +{AxoLine 0 10 40 30 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 10 m 40 30 l S} +\axo@setObject{374}% +{AxoLine 0 10 40 30 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 10 m 40 30 l S} +\axo@setObject{375}% +{AxoGluon 0 10 40 10 4 4 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 0 10 cm 8 -4 m 11.6 -4 11.6 4 5.6 4 c 2 4 0.4 2 0 0 c S 8 -4 m 4.4 -4 4.4 4 12 4 c 19.6 4 19.6 -4 16 -4 c 12.4 -4 12.4 4 20 4 c 27.6 4 27.6 -4 24 -4 c 20.4 -4 20.4 4 28 4 c 35.6 4 35.6 -4 32 -4 c 28.4 -4 28.4 4 34.4 4 c 38 4 39.6 2 40 0 c S} +\axo@setObject{376}% +{AxoGluon 0 5 30 5 3 4 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 0 5 cm 6 -3 m 8.7 -3 8.7 3 4.2 3 c 1.5 3 0.3 1.5 0 0 c S 6 -3 m 3.3 -3 3.3 3 9 3 c 14.7 3 14.7 -3 12 -3 c 9.3 -3 9.3 3 15 3 c 20.7 3 20.7 -3 18 -3 c 15.3 -3 15.3 3 21 3 c 26.7 3 26.7 -3 24 -3 c 21.3 -3 21.3 3 25.8 3 c 28.5 3 29.7 1.5 30 0 c S} +\axo@setObject{377}% +{AxoLine 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 2;}% +{ 2 w 0 0 m 50 0 l S} +\axo@setObject{378}% +{AxoLine 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 2;}% +{ 2 w 0 0 m 50 0 l S} +\axo@setObject{379}% +{AxoPhoton 7 70 37 70 4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 7 70 cm 0 0 m 2.122 5.333 2.878 5.333 5 0 c 7.122 -5.333 7.878 -5.333 10 0 c 12.122 5.333 12.878 5.333 15 0 c 17.122 -5.333 17.878 -5.333 20 0 c 22.122 5.333 22.878 5.333 25 0 c 27.122 -5.333 27.878 -5.333 30 0 c S} +\axo@setObject{380}% +{AxoPhoton 7 70 37 70 -4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 7 70 cm 0 0 m 2.122 -5.333 2.878 -5.333 5 0 c 7.122 5.333 7.878 5.333 10 0 c 12.122 -5.333 12.878 -5.333 15 0 c 17.122 5.333 17.878 5.333 20 0 c 22.122 -5.333 22.878 -5.333 25 0 c 27.122 5.333 27.878 5.333 30 0 c S} +\axo@setObject{381}% +{AxoGluonArc 70 70 30 90 270 3 10 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 70 70 cm 0 1 -1 0 0 0 cm 25.906 7.607 m 25.22 9.945 31.179 12.295 32.343 6.553 c 33.19 2.374 31.497 0.45 30 0 c S 25.906 7.607 m 26.593 5.269 33.268 6.592 30.018 13.709 c 26.768 20.826 21.397 16.647 22.714 14.597 c 24.031 12.548 30.064 15.697 24.94 21.61 c 19.816 27.524 15.84 22.001 17.681 20.405 c 19.523 18.81 24.423 23.531 17.841 27.761 c 11.259 31.991 9 25.572 11.216 24.56 c 13.433 23.548 16.804 29.459 9.297 31.663 c 1.79 33.868 1.431 27.072 3.843 26.725 c 6.254 26.378 7.824 33 0 33 c -7.824 33 -6.254 26.378 -3.843 26.725 c -1.431 27.072 -1.79 33.868 -9.297 31.663 c -16.804 29.459 -13.433 23.548 -11.216 24.56 c -9 25.572 -11.259 31.991 -17.841 27.761 c -24.423 23.531 -19.523 18.81 -17.681 20.405 c -15.84 22.001 -19.816 27.524 -24.94 21.61 c -30.064 15.697 -24.031 12.548 -22.714 14.597 c -21.397 16.647 -26.768 20.826 -30.018 13.709 c -33.268 6.592 -26.593 5.269 -25.906 7.607 c -25.22 9.945 -31.179 12.295 -32.343 6.553 c -33.19 2.374 -31.497 0.45 -30 0 c S} +\axo@setObject{382}% +{AxoLine 100 100 70 100 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5;}% +{ 0.5 w 100 100 m 70 100 l S 1 0 0 1 100 100 cm -1 0 0 -1 0 0 cm 1 0 0 1 15 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{383}% +{AxoLine 130 100 100 100 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5;}% +{ 0.5 w 130 100 m 100 100 l S 1 0 0 1 130 100 cm -1 0 0 -1 0 0 cm 1 0 0 1 15 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{384}% +{AxoLine 70 100 130 40 0 0 0.5 0 0 0.2 0.8 1.25 0.25 1 0 0.5;}% +{ 0.5 w 70 100 m 130 40 l S 1 0 0 1 70 100 cm 0.707 -0.707 0.707 0.707 0 0 cm 1 0 0 1 21.213 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{385}% +{AxoLine 100 40 70 40 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5;}% +{ 0.5 w 100 40 m 70 40 l S 1 0 0 1 100 40 cm -1 0 0 -1 0 0 cm 1 0 0 1 15 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{386}% +{AxoLine 130 40 100 40 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5;}% +{ 0.5 w 130 40 m 100 40 l S 1 0 0 1 130 40 cm -1 0 0 -1 0 0 cm 1 0 0 1 15 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{387}% +{AxoLine 70 40 130 100 0 0 0.5 0 0 0.2 0.8 1.25 0.75 1 0 0.5;}% +{ 0.5 w 70 40 m 130 100 l S 1 0 0 1 70 40 cm 0.707 0.707 -0.707 0.707 0 0 cm 1 0 0 1 63.64 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{388}% +{AxoGluonArc 130 70 30 270 450 3 10 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 130 70 cm 0 -1 1 0 0 0 cm 25.906 7.607 m 25.22 9.945 31.179 12.295 32.343 6.553 c 33.19 2.374 31.497 0.45 30 0 c S 25.906 7.607 m 26.593 5.269 33.268 6.592 30.018 13.709 c 26.768 20.826 21.397 16.647 22.714 14.597 c 24.031 12.548 30.064 15.697 24.94 21.61 c 19.816 27.524 15.84 22.001 17.681 20.405 c 19.523 18.81 24.423 23.531 17.841 27.761 c 11.259 31.991 9 25.572 11.216 24.56 c 13.433 23.548 16.804 29.459 9.297 31.663 c 1.79 33.868 1.431 27.072 3.843 26.725 c 6.254 26.378 7.824 33 0 33 c -7.824 33 -6.254 26.378 -3.843 26.725 c -1.431 27.072 -1.79 33.868 -9.297 31.663 c -16.804 29.459 -13.433 23.548 -11.216 24.56 c -9 25.572 -11.259 31.991 -17.841 27.761 c -24.423 23.531 -19.523 18.81 -17.681 20.405 c -15.84 22.001 -19.816 27.524 -24.94 21.61 c -30.064 15.697 -24.031 12.548 -22.714 14.597 c -21.397 16.647 -26.768 20.826 -30.018 13.709 c -33.268 6.592 -26.593 5.269 -25.906 7.607 c -25.22 9.945 -31.179 12.295 -32.343 6.553 c -33.19 2.374 -31.497 0.45 -30 0 c S} +\axo@setObject{389}% +{AxoPhoton 163 70 193 70 4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 163 70 cm 0 0 m 2.122 5.333 2.878 5.333 5 0 c 7.122 -5.333 7.878 -5.333 10 0 c 12.122 5.333 12.878 5.333 15 0 c 17.122 -5.333 17.878 -5.333 20 0 c 22.122 5.333 22.878 5.333 25 0 c 27.122 -5.333 27.878 -5.333 30 0 c S} +\axo@setObject{390}% +{AxoPhoton 163 70 193 70 -4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 163 70 cm 0 0 m 2.122 -5.333 2.878 -5.333 5 0 c 7.122 5.333 7.878 5.333 10 0 c 12.122 -5.333 12.878 -5.333 15 0 c 17.122 5.333 17.878 5.333 20 0 c 22.122 -5.333 22.878 -5.333 25 0 c 27.122 5.333 27.878 5.333 30 0 c S} +\axo@setObject{391}% +{AxoGluon 100 100 100 130 3 4 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 100 100 cm 0 1 -1 0 0 0 cm 6 -3 m 8.7 -3 8.7 3 4.2 3 c 1.5 3 0.3 1.5 0 0 c S 6 -3 m 3.3 -3 3.3 3 9 3 c 14.7 3 14.7 -3 12 -3 c 9.3 -3 9.3 3 15 3 c 20.7 3 20.7 -3 18 -3 c 15.3 -3 15.3 3 21 3 c 26.7 3 26.7 -3 24 -3 c 21.3 -3 21.3 3 25.8 3 c 28.5 3 29.7 1.5 30 0 c S} +\axo@setObject{392}% +{AxoGluon 100 40 100 10 3 4 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 100 40 cm 0 -1 1 0 0 0 cm 6 -3 m 8.7 -3 8.7 3 4.2 3 c 1.5 3 0.3 1.5 0 0 c S 6 -3 m 3.3 -3 3.3 3 9 3 c 14.7 3 14.7 -3 12 -3 c 9.3 -3 9.3 3 15 3 c 20.7 3 20.7 -3 18 -3 c 15.3 -3 15.3 3 21 3 c 26.7 3 26.7 -3 24 -3 c 21.3 -3 21.3 3 25.8 3 c 28.5 3 29.7 1.5 30 0 c S} +\axo@setObject{393}% +{Vertex 37 70 2 0.5;}% +{ 0.5 w 1 0 0 1 37 70 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{394}% +{Vertex 163 70 2 0.5;}% +{ 0.5 w 1 0 0 1 163 70 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{395}% +{Vertex 70 100 2 0.5;}% +{ 0.5 w 1 0 0 1 70 100 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{396}% +{Vertex 70 40 2 0.5;}% +{ 0.5 w 1 0 0 1 70 40 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{397}% +{Vertex 130 100 2 0.5;}% +{ 0.5 w 1 0 0 1 130 100 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{398}% +{Vertex 130 40 2 0.5;}% +{ 0.5 w 1 0 0 1 130 40 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{399}% +{Vertex 100 100 2 0.5;}% +{ 0.5 w 1 0 0 1 100 100 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{400}% +{Vertex 100 40 2 0.5;}% +{ 0.5 w 1 0 0 1 100 40 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{401}% +{AxoPhoton 7 70 40 70 4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 7 70 cm 0 0 m 2.334 5.333 3.166 5.333 5.5 0 c 7.834 -5.333 8.666 -5.333 11 0 c 13.334 5.333 14.166 5.333 16.5 0 c 18.834 -5.333 19.666 -5.333 22 0 c 24.334 5.333 25.166 5.333 27.5 0 c 29.834 -5.333 30.666 -5.333 33 0 c S} +\axo@setObject{402}% +{AxoPhoton 7 70 40 70 -4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 7 70 cm 0 0 m 2.334 -5.333 3.166 -5.333 5.5 0 c 7.834 5.333 8.666 5.333 11 0 c 13.334 -5.333 14.166 -5.333 16.5 0 c 18.834 5.333 19.666 5.333 22 0 c 24.334 -5.333 25.166 -5.333 27.5 0 c 29.834 5.333 30.666 5.333 33 0 c S} +\axo@setObject{403}% +{AxoGluonArc 70 70 30 180 270 3 5 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 70 70 cm -1 0 0 -1 0 0 cm 26.08 6.988 m 25.449 9.342 31.424 11.535 32.447 6.014 c 33.159 2.173 31.497 0.412 30 0 c S 26.08 6.988 m 26.711 4.635 33.324 5.782 30.488 12.629 c 27.652 19.475 22.164 15.61 23.383 13.5 c 24.601 11.39 30.692 14.21 26.181 20.089 c 21.669 25.968 17.369 20.815 19.092 19.092 c 20.815 17.369 25.968 21.669 20.089 26.181 c 14.21 30.692 11.39 24.601 13.5 23.383 c 15.61 22.164 19.475 27.652 12.629 30.488 c 5.782 33.324 4.635 26.711 6.988 26.08 c 9.342 25.449 11.535 31.424 6.014 32.447 c 2.173 33.159 0.412 31.497 0 30 c S} +\axo@setObject{404}% +{AxoBezier 100 100 55 100 40 95 40 70 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5;}% +{ 0.5 w 100 100 m 55 100 40 95 40 70 c S 1 0 0 1 61.639 97.193 cm -0.974 -0.225 0.225 -0.974 0 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{405}% +{AxoLine 130 100 100 100 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5;}% +{ 0.5 w 130 100 m 100 100 l S 1 0 0 1 130 100 cm -1 0 0 -1 0 0 cm 1 0 0 1 15 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{406}% +{AxoBezier 40 70 110 70 130 70 130 40 0 0 0.5 0 0 0.2 0.8 1.25 0.37 1 0 0.5;}% +{ 0.5 w 40 70 m 110 70 130 70 130 40 c S 1 0 0 1 79.601 69.67 cm 1 -0.03 0.03 1 0 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{407}% +{AxoLine 100 40 70 40 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5;}% +{ 0.5 w 100 40 m 70 40 l S 1 0 0 1 100 40 cm -1 0 0 -1 0 0 cm 1 0 0 1 15 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{408}% +{AxoLine 130 40 100 40 0 0 0.5 0 0 0.2 0.8 1.25 0.5 1 0 0.5;}% +{ 0.5 w 130 40 m 100 40 l S 1 0 0 1 130 40 cm -1 0 0 -1 0 0 cm 1 0 0 1 15 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{409}% +{AxoLine 70 40 130 100 0 0 0.5 0 0 0.2 0.8 1.25 0.75 1 0 0.5;}% +{ 0.5 w 70 40 m 130 100 l S 1 0 0 1 70 40 cm 0.707 0.707 -0.707 0.707 0 0 cm 1 0 0 1 63.64 0 cm q [] 0 d 0.5 w q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l 0 0 0 0 k h f Q q 2.5 0 m -2.5 2 l -1.5 0 l -2.5 -2 l s Q Q} +\axo@setObject{410}% +{AxoGluonArc 130 70 30 270 450 3 10 0 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 130 70 cm 0 -1 1 0 0 0 cm 25.906 7.607 m 25.22 9.945 31.179 12.295 32.343 6.553 c 33.19 2.374 31.497 0.45 30 0 c S 25.906 7.607 m 26.593 5.269 33.268 6.592 30.018 13.709 c 26.768 20.826 21.397 16.647 22.714 14.597 c 24.031 12.548 30.064 15.697 24.94 21.61 c 19.816 27.524 15.84 22.001 17.681 20.405 c 19.523 18.81 24.423 23.531 17.841 27.761 c 11.259 31.991 9 25.572 11.216 24.56 c 13.433 23.548 16.804 29.459 9.297 31.663 c 1.79 33.868 1.431 27.072 3.843 26.725 c 6.254 26.378 7.824 33 0 33 c -7.824 33 -6.254 26.378 -3.843 26.725 c -1.431 27.072 -1.79 33.868 -9.297 31.663 c -16.804 29.459 -13.433 23.548 -11.216 24.56 c -9 25.572 -11.259 31.991 -17.841 27.761 c -24.423 23.531 -19.523 18.81 -17.681 20.405 c -15.84 22.001 -19.816 27.524 -24.94 21.61 c -30.064 15.697 -24.031 12.548 -22.714 14.597 c -21.397 16.647 -26.768 20.826 -30.018 13.709 c -33.268 6.592 -26.593 5.269 -25.906 7.607 c -25.22 9.945 -31.179 12.295 -32.343 6.553 c -33.19 2.374 -31.497 0.45 -30 0 c S} +\axo@setObject{411}% +{AxoPhoton 163 70 193 70 4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 163 70 cm 0 0 m 2.122 5.333 2.878 5.333 5 0 c 7.122 -5.333 7.878 -5.333 10 0 c 12.122 5.333 12.878 5.333 15 0 c 17.122 -5.333 17.878 -5.333 20 0 c 22.122 5.333 22.878 5.333 25 0 c 27.122 -5.333 27.878 -5.333 30 0 c S} +\axo@setObject{412}% +{AxoPhoton 163 70 193 70 -4 3 0 0 0.5;}% +{ 0.5 w 1 0 0 1 163 70 cm 0 0 m 2.122 -5.333 2.878 -5.333 5 0 c 7.122 5.333 7.878 5.333 10 0 c 12.122 -5.333 12.878 -5.333 15 0 c 17.122 5.333 17.878 5.333 20 0 c 22.122 -5.333 22.878 -5.333 25 0 c 27.122 5.333 27.878 5.333 30 0 c S} +\axo@setObject{413}% +{AxoGluon 100 100 100 130 3 4 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 100 100 cm 0 1 -1 0 0 0 cm 6 -3 m 8.7 -3 8.7 3 4.2 3 c 1.5 3 0.3 1.5 0 0 c S 6 -3 m 3.3 -3 3.3 3 9 3 c 14.7 3 14.7 -3 12 -3 c 9.3 -3 9.3 3 15 3 c 20.7 3 20.7 -3 18 -3 c 15.3 -3 15.3 3 21 3 c 26.7 3 26.7 -3 24 -3 c 21.3 -3 21.3 3 25.8 3 c 28.5 3 29.7 1.5 30 0 c S} +\axo@setObject{414}% +{AxoGluon 100 40 100 10 3 4 0 0 0.5;}% +{ 0.5 w 0.5 w 1 0 0 1 100 40 cm 0 -1 1 0 0 0 cm 6 -3 m 8.7 -3 8.7 3 4.2 3 c 1.5 3 0.3 1.5 0 0 c S 6 -3 m 3.3 -3 3.3 3 9 3 c 14.7 3 14.7 -3 12 -3 c 9.3 -3 9.3 3 15 3 c 20.7 3 20.7 -3 18 -3 c 15.3 -3 15.3 3 21 3 c 26.7 3 26.7 -3 24 -3 c 21.3 -3 21.3 3 25.8 3 c 28.5 3 29.7 1.5 30 0 c S} +\axo@setObject{415}% +{Vertex 40 70 2 0.5;}% +{ 0.5 w 1 0 0 1 40 70 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{416}% +{Vertex 163 70 2 0.5;}% +{ 0.5 w 1 0 0 1 163 70 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{417}% +{Vertex 70 40 2 0.5;}% +{ 0.5 w 1 0 0 1 70 40 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{418}% +{Vertex 130 100 2 0.5;}% +{ 0.5 w 1 0 0 1 130 100 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{419}% +{Vertex 130 40 2 0.5;}% +{ 0.5 w 1 0 0 1 130 40 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{420}% +{Vertex 100 100 2 0.5;}% +{ 0.5 w 1 0 0 1 100 100 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{421}% +{Vertex 100 40 2 0.5;}% +{ 0.5 w 1 0 0 1 100 40 cm -2 0 m -2 1.105 -1.105 2 0 2 c 1.105 2 2 1.105 2 0 c 2 -1.105 1.105 -2 0 -2 c -1.105 -2 -2 -1.105 -2 0 c f } +\axo@setObject{422}% +{AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c -25 -13.807 -13.807 -25 0 -25 c S} +\axo@setObject{423}% +{AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 60 35 cm 0 -25 m 13.807 -25 25 -13.807 25 0 c 25 13.807 13.807 25 0 25 c S} +\axo@setObject{424}% +{AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 60 m 60 60 l S} +\axo@setObject{425}% +{AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 10 m 60 10 l S} +\axo@setObject{426}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 50 10 m 50 60 l S} +\axo@setObject{427}% +{AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 35 m 15 35 l S} +\axo@setObject{428}% +{AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 85 35 m 100 35 l S} +\axo@setObject{429}% +{AxoLine 50 35 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 50 35 m 50 60 l S} +\axo@setObject{430}% +{AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 40 60 m 50 60 l S} +\axo@setObject{431}% +{AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c S} +\axo@setObject{432}% +{Vertex 50 60 1.3 3;}% +{ 3 w 1 0 0 1 50 60 cm -1.3 0 m -1.3 0.718 -0.718 1.3 0 1.3 c 0.718 1.3 1.3 0.718 1.3 0 c 1.3 -0.718 0.718 -1.3 0 -1.3 c -0.718 -1.3 -1.3 -0.718 -1.3 0 c f } +\axo@setObject{433}% +{AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c -25 -13.807 -13.807 -25 0 -25 c S} +\axo@setObject{434}% +{AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 60 35 cm 0 -25 m 13.807 -25 25 -13.807 25 0 c 25 13.807 13.807 25 0 25 c S} +\axo@setObject{435}% +{AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 60 m 60 60 l S} +\axo@setObject{436}% +{AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 10 m 60 10 l S} +\axo@setObject{437}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 50 10 m 50 60 l S} +\axo@setObject{438}% +{AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 35 m 15 35 l S} +\axo@setObject{439}% +{AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 85 35 m 100 35 l S} +\axo@setObject{440}% +{AxoLine 50 35 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 50 35 m 50 60 l S} +\axo@setObject{441}% +{AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 40 60 m 50 60 l S} +\axo@setObject{442}% +{AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c S} +\axo@setObject{443}% +{Vertex 50 60 1.3 3;}% +{ 3 w 1 0 0 1 50 60 cm -1.3 0 m -1.3 0.718 -0.718 1.3 0 1.3 c 0.718 1.3 1.3 0.718 1.3 0 c 1.3 -0.718 0.718 -1.3 0 -1.3 c -0.718 -1.3 -1.3 -0.718 -1.3 0 c f } +\axo@setObject{444}% +{AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c -25 -13.807 -13.807 -25 0 -25 c S} +\axo@setObject{445}% +{AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 60 35 cm 0 -25 m 13.807 -25 25 -13.807 25 0 c 25 13.807 13.807 25 0 25 c S} +\axo@setObject{446}% +{AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 60 m 60 60 l S} +\axo@setObject{447}% +{AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 10 m 60 10 l S} +\axo@setObject{448}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 50 10 m 50 60 l S} +\axo@setObject{449}% +{AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 35 m 15 35 l S} +\axo@setObject{450}% +{AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 85 35 m 100 35 l S} +\axo@setObject{451}% +{AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 40 60 m 50 60 l S} +\axo@setObject{452}% +{AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c S} +\axo@setObject{453}% +{AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c -25 -13.807 -13.807 -25 0 -25 c S} +\axo@setObject{454}% +{AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 60 35 cm 0 -25 m 13.807 -25 25 -13.807 25 0 c 25 13.807 13.807 25 0 25 c S} +\axo@setObject{455}% +{AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 60 m 60 60 l S} +\axo@setObject{456}% +{AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 10 m 60 10 l S} +\axo@setObject{457}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 50 10 m 50 60 l S} +\axo@setObject{458}% +{AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 35 m 15 35 l S} +\axo@setObject{459}% +{AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 85 35 m 100 35 l S} +\axo@setObject{460}% +{AxoLine 50 35 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 50 35 m 50 60 l S} +\axo@setObject{461}% +{AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 40 60 m 50 60 l S} +\axo@setObject{462}% +{AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c S} +\axo@setObject{463}% +{Vertex 50 60 1.3 3;}% +{ 3 w 1 0 0 1 50 60 cm -1.3 0 m -1.3 0.718 -0.718 1.3 0 1.3 c 0.718 1.3 1.3 0.718 1.3 0 c 1.3 -0.718 0.718 -1.3 0 -1.3 c -0.718 -1.3 -1.3 -0.718 -1.3 0 c f } +\axo@setObject{464}% +{AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c -25 -13.807 -13.807 -25 0 -25 c S} +\axo@setObject{465}% +{AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 60 35 cm 0 -25 m 13.807 -25 25 -13.807 25 0 c 25 13.807 13.807 25 0 25 c S} +\axo@setObject{466}% +{AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 60 m 60 60 l S} +\axo@setObject{467}% +{AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 10 m 60 10 l S} +\axo@setObject{468}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 50 10 m 50 60 l S} +\axo@setObject{469}% +{AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 35 m 15 35 l S} +\axo@setObject{470}% +{AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 85 35 m 100 35 l S} +\axo@setObject{471}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 50 10 m 50 60 l S} +\axo@setObject{472}% +{Vertex 50 60 1.3 3;}% +{ 3 w 1 0 0 1 50 60 cm -1.3 0 m -1.3 0.718 -0.718 1.3 0 1.3 c 0.718 1.3 1.3 0.718 1.3 0 c 1.3 -0.718 0.718 -1.3 0 -1.3 c -0.718 -1.3 -1.3 -0.718 -1.3 0 c f } +\axo@setObject{473}% +{AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 40 60 m 50 60 l S} +\axo@setObject{474}% +{AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c S} +\axo@setObject{475}% +{AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c -25 -13.807 -13.807 -25 0 -25 c S} +\axo@setObject{476}% +{AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 60 35 cm 0 -25 m 13.807 -25 25 -13.807 25 0 c 25 13.807 13.807 25 0 25 c S} +\axo@setObject{477}% +{AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 60 m 60 60 l S} +\axo@setObject{478}% +{AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 10 m 60 10 l S} +\axo@setObject{479}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 50 10 m 50 60 l S} +\axo@setObject{480}% +{AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 35 m 15 35 l S} +\axo@setObject{481}% +{AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 85 35 m 100 35 l S} +\axo@setObject{482}% +{AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 40 60 m 50 60 l S} +\axo@setObject{483}% +{AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c S} +\axo@setObject{484}% +{AxoArc 40 35 25 90 270 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c -25 -13.807 -13.807 -25 0 -25 c S} +\axo@setObject{485}% +{AxoArc 60 35 25 270 90 0 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 1 0 0 1 60 35 cm 0 -25 m 13.807 -25 25 -13.807 25 0 c 25 13.807 13.807 25 0 25 c S} +\axo@setObject{486}% +{AxoLine 40 60 60 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 60 m 60 60 l S} +\axo@setObject{487}% +{AxoLine 40 10 60 10 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 40 10 m 60 10 l S} +\axo@setObject{488}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 50 10 m 50 60 l S} +\axo@setObject{489}% +{AxoLine 0 35 15 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 0 35 m 15 35 l S} +\axo@setObject{490}% +{AxoLine 85 35 100 35 0 0 0 0 0 0 0 0 0 0 0 0.5;}% +{ 0.5 w 85 35 m 100 35 l S} +\axo@setObject{491}% +{AxoLine 50 10 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 50 10 m 50 60 l S} +\axo@setObject{492}% +{Vertex 50 60 1.3 3;}% +{ 3 w 1 0 0 1 50 60 cm -1.3 0 m -1.3 0.718 -0.718 1.3 0 1.3 c 0.718 1.3 1.3 0.718 1.3 0 c 1.3 -0.718 0.718 -1.3 0 -1.3 c -0.718 -1.3 -1.3 -0.718 -1.3 0 c f } +\axo@setObject{493}% +{AxoLine 40 60 50 60 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 40 60 m 50 60 l S} +\axo@setObject{494}% +{AxoArc 40 35 25 90 180 0 0 0 0 0 0 0 0 0 0 0 0 3;}% +{ 3 w 1 0 0 1 40 35 cm 0 25 m -13.807 25 -25 13.807 -25 0 c S} diff --git a/Build/source/utils/axodraw2/configure b/Build/source/utils/axodraw2/configure new file mode 100755 index 00000000000..9fb2e109645 --- /dev/null +++ b/Build/source/utils/axodraw2/configure @@ -0,0 +1,5845 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for axohelp (TeX Live) 1. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and jcc8@psu.edu about +$0: your system, including any error possibly output before +$0: this message. Then install a modern shell, or manually +$0: run the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='axohelp (TeX Live)' +PACKAGE_TARNAME='axohelp--tex-live-' +PACKAGE_VERSION='1' +PACKAGE_STRING='axohelp (TeX Live) 1' +PACKAGE_BUGREPORT='jcc8@psu.edu' +PACKAGE_URL='' + +ac_unique_file="axodraw2-src/axohelp.c" +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +AXODRAW2_TREE +WIN32_WRAP_FALSE +WIN32_WRAP_TRUE +WIN_WRAPPER +WIN32_FALSE +WIN32_TRUE +WARNING_CFLAGS +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_compiler_warnings +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +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 axohelp (TeX Live) 1 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root + [DATAROOTDIR/doc/axohelp--tex-live-] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of axohelp (TeX Live) 1:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-compiler-warnings=[no|min|yes|max|all] + Turn on compiler warnings [default: yes if + maintainer-mode, min otherwise] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +axohelp (TeX Live) configure 1 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link +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 axohelp (TeX Live) $as_me 1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +ac_aux_dir= +for ac_dir in ../../build-aux "$srcdir"/../../build-aux; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in ../../build-aux \"$srcdir\"/../../build-aux" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + + + +am__api_version='1.15' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Check whether --enable-compiler-warnings was given. +if test "${enable_compiler_warnings+set}" = set; then : + enableval=$enable_compiler_warnings; +fi +case $enable_compiler_warnings in #( + no | min | yes | max | all) : + ;; #( + *) : + if test "x$enable_maintainer_mode" = xyes; then : + enable_compiler_warnings=yes +else + enable_compiler_warnings=min +fi ;; +esac + + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='axohelp--tex-live-' + VERSION='1' + + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler accepts prototypes" >&5 +$as_echo_n "checking whether the compiler accepts prototypes... " >&6; } +if ${kb_cv_c_prototypes+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +extern void foo(int i,...); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + kb_cv_c_prototypes=yes +else + kb_cv_c_prototypes=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kb_cv_c_prototypes" >&5 +$as_echo "$kb_cv_c_prototypes" >&6; } +if test "x$kb_cv_c_prototypes" = xno; then + as_fn_error $? "Sorry, your compiler does not understand prototypes." "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what warning flags to pass to the C compiler" >&5 +$as_echo_n "checking what warning flags to pass to the C compiler... " >&6; } +if ${kpse_cv_warning_cflags+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$GCC" = xyes; then + kpse_cv_warning_cflags= +if test "x$enable_compiler_warnings" != xno; then + kpse_cv_warning_cflags="-Wimplicit -Wreturn-type" + case `$CC -dumpversion` in #( + 3.4.* | 4.* | 5.*) : + kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wdeclaration-after-statement" ;; #( + *) : + ;; +esac + case `$CC -dumpversion` in #( + 3.[234].* | 4.* | 5.*) : + kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wno-unknown-pragmas" ;; #( + *) : + ;; +esac + if test "x$enable_compiler_warnings" != xmin; then + kpse_cv_warning_cflags="-Wall -Wunused $kpse_cv_warning_cflags" + kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wmissing-prototypes -Wmissing-declarations" + if test "x$enable_compiler_warnings" != xyes; then + kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wparentheses -Wswitch -Wtrigraphs -Wpointer-arith" + kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wcast-qual -Wcast-align -Wwrite-strings" + case `$CC -dumpversion` in #( + 3.4.* | 4.* | 5.*) : + kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wold-style-definition" ;; #( + *) : + ;; +esac + if test "x$enable_compiler_warnings" != xmax; then + kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wshadow" + fi + fi + fi +fi +elif test "x$enable_compiler_warnings" = xno; then + kpse_cv_warning_cflags= +else + kpse_cv_warning_cflags= # FIXME: warning flags for non-GNU C compilers +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_warning_cflags" >&5 +$as_echo "$kpse_cv_warning_cflags" >&6; } +WARNING_CFLAGS=$kpse_cv_warning_cflags + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5 +$as_echo_n "checking for sqrt in -lm... " >&6; } +if ${ac_cv_lib_m_sqrt+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sqrt (); +int +main () +{ +return sqrt (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_sqrt=yes +else + ac_cv_lib_m_sqrt=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5 +$as_echo "$ac_cv_lib_m_sqrt" >&6; } +if test "x$ac_cv_lib_m_sqrt" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +else + as_fn_error $? "*** Please install libm on your system ***" "$LINENO" 5 +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# trailing TL stuff. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for native WIN32 or MINGW32" >&5 +$as_echo_n "checking for native WIN32 or MINGW32... " >&6; } +if ${kpse_cv_have_win32+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef WIN32 + choke me +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __MINGW32__ + choke me +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + kpse_cv_have_win32=mingw32 +else + kpse_cv_have_win32=native +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + kpse_cv_have_win32=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_have_win32" >&5 +$as_echo "$kpse_cv_have_win32" >&6; } + + if test "x$kpse_cv_have_win32" != xno; then + WIN32_TRUE= + WIN32_FALSE='#' +else + WIN32_TRUE='#' + WIN32_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WIN64" >&5 +$as_echo_n "checking for WIN64... " >&6; } +if ${kpse_cv_have_win64+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef _WIN64 + choke me +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + kpse_cv_have_win64=yes +else + kpse_cv_have_win64=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_have_win64" >&5 +$as_echo "$kpse_cv_have_win64" >&6; } +case $kpse_cv_have_win64 in #( + yes) : + WIN_WRAPPER=w64_wrapper ;; #( + *) : + WIN_WRAPPER=w32_wrapper ;; +esac + + if test -r "$srcdir/../../texk/texlive/$WIN_WRAPPER/runscript.exe"; then + WIN32_WRAP_TRUE= + WIN32_WRAP_FALSE='#' +else + WIN32_WRAP_TRUE='#' + WIN32_WRAP_FALSE= +fi + + +AXODRAW2_TREE=axodraw2-src + + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then + as_fn_error $? "conditional \"WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WIN32_WRAP_TRUE}" && test -z "${WIN32_WRAP_FALSE}"; then + as_fn_error $? "conditional \"WIN32_WRAP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by axohelp (TeX Live) $as_me 1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +axohelp (TeX Live) config.status 1 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/Build/source/utils/axodraw2/configure.ac b/Build/source/utils/axodraw2/configure.ac new file mode 100644 index 00000000000..25a7c2cc51a --- /dev/null +++ b/Build/source/utils/axodraw2/configure.ac @@ -0,0 +1,28 @@ +# $Id$ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. +dnl Copyright 2018 John Collins +dnl +dnl This file is free software; the copyright holder +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +AC_INIT([axohelp (TeX Live)], [1], [jcc8@psu.edu]) +AC_PREREQ([2.65]) +AC_CONFIG_SRCDIR([axodraw2-src/axohelp.c]) +AC_CONFIG_AUX_DIR([../../build-aux]) +AC_CONFIG_MACRO_DIR([../../m4]) + +KPSE_BASIC([axodraw2], [no-define]) + +AC_CHECK_LIB([m], [sqrt],, + AC_MSG_ERROR([*** Please install libm on your system ***])) +AC_PROG_CC + +# trailing TL stuff. +AC_PROG_MAKE_SET +KPSE_COND_WIN32_WRAP +AC_SUBST([AXODRAW2_TREE], [axodraw2-src]) + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/Build/source/utils/configure b/Build/source/utils/configure index f16b1ffe777..b7ea4c70d41 100755 --- a/Build/source/utils/configure +++ b/Build/source/utils/configure @@ -695,6 +695,7 @@ enable_multiplatform enable_cxx_runtime_hack enable_libtool_hack enable_autosp +enable_axodraw2 enable_devnag enable_lacheck enable_m_tx @@ -1483,6 +1484,7 @@ Optional Features: --enable-cxx-runtime-hack link C++ runtime statically --enable-libtool-hack ignore libtool dependency_libs --disable-autosp do not build the autosp package + --disable-axodraw2 do not build the axodraw2 package --disable-devnag do not build the devnag package --disable-lacheck do not build the lacheck package --disable-m-tx do not build the m-tx package @@ -3362,7 +3364,8 @@ esac ;; esac ## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir -## configure options and TL libraries required for vlna +## $Id$ +## configure options and TL libraries required for autosp. # Check whether --enable-autosp was given. if test "${enable_autosp+set}" = set; then : enableval=$enable_autosp; @@ -3379,6 +3382,25 @@ $as_echo "$as_me: Assuming \`--enable-autosp=$enable_autosp'" >&6;} ;; esac +## utils/autosp/ac/withenable.ac: configure.ac fragment for TeX Live subdir +## $Id$ +## configure options and TL libraries for axodraw2. +# Check whether --enable-axodraw2 was given. +if test "${enable_axodraw2+set}" = set; then : + enableval=$enable_axodraw2; +fi +case $enable_axodraw2 in #( + yes|no) : + ;; #( + *) : + + enable_axodraw2=$enable_all_pkgs + { $as_echo "$as_me:${as_lineno-$LINENO}: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&5 +$as_echo "$as_me: Assuming \`--enable-axodraw2=$enable_axodraw2'" >&6;} + ac_configure_args="$ac_configure_args '--enable-axodraw2=$enable_axodraw2'" + ;; +esac + ## utils/devnag/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/devnag/ ## configure options and TL libraries required for devnag # Check whether --enable-devnag was given. @@ -6424,6 +6446,10 @@ if test -x $srcdir/autosp/configure; then test "x$enable_autosp" = xyes && MAKE_SUBDIRS="$MAKE_SUBDIRS autosp" CONF_SUBDIRS="$CONF_SUBDIRS autosp" fi +if test -x $srcdir/axodraw2/configure; then + test "x$enable_axodraw2" = xyes && MAKE_SUBDIRS="$MAKE_SUBDIRS axodraw2" + CONF_SUBDIRS="$CONF_SUBDIRS axodraw2" +fi if test -x $srcdir/devnag/configure; then test "x$enable_devnag" = xyes && MAKE_SUBDIRS="$MAKE_SUBDIRS devnag" CONF_SUBDIRS="$CONF_SUBDIRS devnag" -- cgit v1.2.3