\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{asysyntex}[2008/07/06 v1.79]

\RequirePackage{xcolor}
\colorlet{comment}{green!50!black}
\colorlet{string}{blue!50!black}
\colorlet{background}{olive!25}

\RequirePackage{listings}

% 语言定义
% keywords 对应 asy-keyword-name
% keywords=[2] 对应 asy-type-name
% keywords=[3] 对应 asy-function-name
% keywords=[4] 对应 asy-variable-name 
\lstdefinelanguage{Asymptote}{alsoletter={},
  sensitive=true,%
  keywords={and, controls, tension, atleast, curl, if, else, while, for, do,
  return, break, continue, struct, typedef, new, access, import, unravel,
  from, include, quote, static, public, private, restricted, this, explicit,
  true, false, null, cycle, newframe, operator},
  keywords=[2]{Braid, FitResult, Label, Legend, Rmf, TreeNode, abscissa, arc,
  arrowhead, binarytree, binarytreeNode, block, bool, bool3, bounds, bqe,
  circle, conic, coord, coordsys, cputime, ellipse, file, filltype, frame,
  grid3, guide, horner, hsv, hyperbola, indexedTransform, int, inversion,
  key, line, linefit, marginT, marker, mass, object, pair, parabola, path,
  path3, pen, picture, point, position, projection, real, revolution, scaleT,
  scientific, segment, side, slice, splitface, string, surface,
  tensionSpecifier, ticklocate, ticksgridT, tickvalues, transform,
  transformation, tree, triangle, trilinear, triple, vector, vertex, void},
  keywords=[3]{AND, Arc, ArcArrow, ArcArrows, Arrow, Arrows, Automatic,
  AvantGarde, BBox, BWRainbow, BWRainbow2, Bar, Bars, BeginArcArrow,
  BeginArrow, BeginBar, BeginDotMargin, BeginMargin, BeginPenMargin, Blank,
  Bookman, Bottom, BottomTop, Bounds, Break, Broken, BrokenLog, Ceil, Circle,
  CircleBarIntervalMarker, Cos, Courier, CrossIntervalMarker, DefaultFormat,
  DefaultLogFormat, Degrees, Dir, DotMargin, DotMargins, Dotted, Draw,
  Drawline, Embed, EndArcArrow, EndArrow, EndBar, EndDotMargin, EndMargin,
  EndPenMargin, Fill, FillDraw, Floor, Format, Full, Gaussian, Gaussrand,
  Gaussrandpair, Gradient, Grayscale, Helvetica, Hermite, HookHead,
  InOutTicks, InTicks, J, Label, Landscape, Left, LeftRight, LeftTicks,
  Legend, Linear, Link, Log, LogFormat, Margin, Margins, Mark, MidArcArrow,
  MidArrow, NOT, NewCenturySchoolBook, NoBox, NoMargin, NoModifier, NoTicks,
  NoTicks3, NoZero, NoZeroFormat, None, OR, OmitFormat, OmitTick, OutTicks,
  Ox, Oy, Palatino, PaletteTicks, Pen, PenMargin, PenMargins, Pentype,
  Portrait, RadialShade, Rainbow, Range, Relative, Right, RightTicks, Rotate,
  Round, SQR, Scale, ScaleX, ScaleY, ScaleZ, Seascape, Shift, Sin, Slant,
  Spline, StickIntervalMarker, Straight, Symbol, Tan, TeXify, Ticks, Ticks3,
  TildeIntervalMarker, TimesRoman, Top, TrueMargin, UnFill, UpsideDown,
  Wheel, X, XEquals, XOR, XY, XYEquals, XYZero, XYgrid, XZEquals, XZZero,
  XZero, XZgrid, Y, YEquals, YXgrid, YZ, YZEquals, YZZero, YZero, YZgrid, Z,
  ZX, ZXgrid, ZYgrid, ZapfChancery, ZapfDingbats, _cputime, _draw, _eval,
  _image, _labelpath, _strokepath, _texpath, aCos, aSin, aTan, abort, abs,
  accel, acos, acosh, acot, acsc, add, addArrow, addMargins, addSaveFunction,
  addnode, addnodes, addpenarc, addpenline, addseg, adjust, alias, align,
  all, altitude, angabscissa, angle, angpoint, animate, annotate,
  anticomplementary, antipedal, apply, approximate, arc, arcarrowsize,
  arccircle, arcdir, arcfromcenter, arcfromfocus, arclength, arcnodesnumber,
  arcpoint, arcsubtended, arcsubtendedcenter, arctime, arctopath, array,
  arrow, arrow2, arrowbase, arrowbasepoints, arrowsize, asec, asin, asinh,
  ask, assert, asy, asycode, asydir, asyfigure, asyfilecode, asyinclude,
  asywrite, atan, atan2, atanh, atbreakpoint, atexit, atime, attach, attract,
  atupdate, autoformat, autoscale, autoscale3, axes, axes3, axialshade, axis,
  axiscoverage, azimuth, babel, background, bangles, bar, barmarksize,
  barsize, basealign, baseline, bbox, beep, begin, beginclip, begingroup,
  beginpoint, between, bevel, bezier, bezierP, bezierPP, bezierPPP, bezulate,
  bibliography, bibliographystyle, binarytree, binarytreeNode, binomial,
  binput, bins, bisector, bisectorpoint, bispline, blend, boutput, box, bqe,
  breakpoint, breakpoints, brick, buildRestoreDefaults, buildRestoreThunk,
  buildcycle, bulletcolor, canonical, canonicalcartesiansystem,
  cartesiansystem, case1, case2, case3, cbrt, cd, ceil, center,
  centerToFocus, centroid, cevian, change2, changecoordsys, checkSegment,
  checkconditionlength, checker, checklengths, checkposition, checktriangle,
  choose, circle, circlebarframe, circlemarkradius, circlenodesnumber,
  circumcenter, circumcircle, clamped, clear, clip, clipdraw, close, cmyk,
  code, colatitude, collect, collinear, color, colorless, colors, colorspace,
  comma, compassmark, complement, complementary, concat, concurrent, cone,
  conic, conicnodesnumber, conictype, conj, connect, containmentTree,
  contains, contour, contour3, controlSpecifier, convert, coordinates,
  coordsys, copy, cos, cosh, cot, countIntersections, cputime, crop,
  cropcode, cross, crossframe, crosshatch, crossmarksize, csc, csv,
  cubicroots, curabscissa, curlSpecifier, curpoint, currentarrow,
  currentexitfunction, currentmomarrow, currentpolarconicroutine, curve, cut,
  cutafter, cutbefore, cyclic, cylinder, debugger, deconstruct, defaultdir,
  defaultformat, defaultpen, defaultspline, defined, degenerate, degrees,
  delete, deletepreamble, determinant, diagonal, diamond, diffdiv, dimension,
  dir, dirSpecifier, dirtime, display, distance, divisors, do_overpaint, dot,
  dotframe, dotsize, downcase, draw, drawAll, drawDoubleLine, drawFermion,
  drawGhost, drawGluon, drawMomArrow, drawPhoton, drawScalar, drawVertex,
  drawVertexBox, drawVertexBoxO, drawVertexBoxX, drawVertexO, drawVertexOX,
  drawVertexTriangle, drawVertexTriangleO, drawVertexX, drawarrow,
  drawarrow2, drawline, drawtick, duplicate, elle, ellipse,
  ellipsenodesnumber, embed, embed3, empty, enclose, end, endScript, endclip,
  endgroup, endl, endpoint, endpoints, eof, eol, equation, equations, erase,
  erf, erfc, error, errorbar, errorbars, eval, excenter, excircle, exit,
  exitXasyMode, exitfunction, exp, expfactors, expi, expm1, exradius, extend,
  extension, extouch, fabs, factorial, fermat, fft, fhorner, figure, file,
  filecode, fill, filldraw, filloutside, fillrule, filltype, find, finite,
  finiteDifferenceJacobian, firstcut, firstframe, fit, fixedscaling, floor,
  flush, fmdefaults, fmod, focusToCenter, font, fontcommand, fontsize, foot,
  format, frac, frequency, fromCenter, fromFocus, fspline, functionshade,
  gamma, generate_random_backtrace, generateticks, gergonne, getc, getint,
  getpair, getreal, getstring, gettriple, gluon, gouraudshade, graph,
  graphic, gray, grestore, grid, grid3, gsave, halfbox, hatch, hdiffdiv,
  hermite, hex, histogram, history, hline, hprojection, hsv, hyperbola,
  hyperbolanodesnumber, hyperlink, hypot, identity, image, incenter,
  incentral, incircle, increasing, incrementposition, indexedTransform,
  initXasyMode, initdefaults, input, inradius, insert, inside, integrate,
  interactive, interior, interp, interpolate, intersect, intersection,
  intersectionpoint, intersectionpoints, intersections, intouch, inverse,
  inversion, invisible, is3D, isDuplicate, isogonal, isogonalconjugate,
  isotomic, isotomicconjugate, isparabola, italic, item, key, kurtosis,
  kurtosisexcess, label, labelaxis, labelmargin, labelpath, labels,
  labeltick, labelx, labelx3, labely, labely3, labelz, labelz3, lastcut,
  latex, latitude, latticeshade, layer, layout, ldexp, leastsquares, legend,
  legenditem, length, lift, limits, line, linear, linecap, linejoin,
  linemargin, lineskip, linetype, linewidth, link, list, lm_enorm,
  lm_evaluate_default, lm_lmdif, lm_lmpar, lm_minimize, lm_print_default,
  lm_print_quiet, lm_qrfac, lm_qrsolv, locale, locate, locatefile, location,
  log, log10, log1p, logaxiscoverage, longitude, lookup, magnetize, makeNode,
  makedraw, makepen, map, margin, markangle, markangleradius, markanglespace,
  markarc, marker, markinterval, marknodes, markrightangle, markuniform,
  mass, masscenter, massformat, math, max, max3, maxbound, maxcoords,
  maxlength, maxratio, maxtimes, mean, medial, median, midpoint, min, min3,
  minbound, minipage, minratio, mintimes, miterlimit, momArrowPath,
  momarrowsize, monotonic, nativeformat, natural, needshipout, newl, newpage,
  newslide, newton, newtree, nextframe, nextnormal, nextpage, nib,
  nodabscissa, none, normalvideo, notaknot, numberpage, nurb, object, offset,
  onpath, opacity, opposite, orientation, orig_circlenodesnumber,
  orig_circlenodesnumber1, orig_draw, orig_ellipsenodesnumber,
  orig_ellipsenodesnumber1, orig_hyperbolanodesnumber,
  orig_parabolanodesnumber, origin, orthic, orthocentercenter, outformat,
  outline, outprefix, output, overwrite, pack, pad, pairs, palette, parabola,
  parabolanodesnumber, parallel, partialsum, path, path3, pattern, pause,
  pdf, pedal, periodic, perp, perpendicular, perpendicularmark, phantom,
  phi1, phi2, phi3, photon, piecewisestraight, point, polar,
  polarconicroutine, polargraph, polygon, postcontrol, postscript, pow10,
  ppoint, prc, prc0, precision, precontrol, prepend, print_random_addresses,
  project, projection, purge, pwhermite, quadrant, quadraticroots, quantize,
  quarticroots, quotient, radialshade, radians, radicalcenter, radicalline,
  radius, rand, randompath, rd, read1, read2, read3, readline, realmult,
  realquarticroots, rectangle, rectangular, rectify, reflect, relabscissa,
  relative, relativedistance, reldir, relpoint, reltime, remainder, remark,
  removeDuplicates, rename, replace, report, rescale, rescale2,
  resetdefaultpen, restore, restoredefaults, reverse, reversevideo, rf,
  rfind, rgb, rgba, rgbint, rmf, rms, rotate, rotateO, rotation, round,
  roundbox, roundedpath, roundrectangle, samecoordsys, sameside, sample,
  save, savedefaults, saveline, scale, scale3, scaleO, scaleT, scaleless,
  scientific, search, searchtree, sec, secondaryX, secondaryY, seconds,
  section, sector, seek, seekeof, segment, sequence, setpens, sgn, sgnd,
  sharpangle, sharpdegrees, shift, shiftless, shipout, shipout3, show, side,
  simeq, simpson, sin, single, sinh, size, size3, skewness, skip, slant,
  sleep, slope, slopefield, solve, solveBVP, sort, sourceline, sphere, split,
  sqrt, square, srand, standardizecoordsys, startScript, startTrembling,
  stdev, step, stickframe, stickmarksize, stickmarkspace, stop, straight,
  straightness, string, stripdirectory, stripextension, stripfile,
  strokepath, subdivide, subitem, subpath, substr, sum, surface, symmedial,
  symmedian, system, tab, tableau, tan, tangent, tangential, tangents, tanh,
  tell, tensionSpecifier, tensorshade, tex, texcolor, texify, texpath,
  texpreamble, texreset, texshipout, texsize, textpath, thick, thin, tick,
  tickMax, tickMax3, tickMin, tickMin3, ticklabelshift, ticklocate,
  tildeframe, tildemarksize, tile, tiling, time, times, title, titlepage,
  topbox, transform, transformation, transpose, tremble, trembleFuzz,
  tremble_circlenodesnumber, tremble_circlenodesnumber1, tremble_draw,
  tremble_ellipsenodesnumber, tremble_ellipsenodesnumber1,
  tremble_hyperbolanodesnumber, tremble_marknodes, tremble_markuniform,
  tremble_parabolanodesnumber, triangle, triangleAbc, triangleabc,
  triangulate, tricoef, tridiagonal, trilinear, trim, trueMagnetize,
  truepoint, tube, uncycle, unfill, uniform, unit, unitrand, unitsize,
  unityroot, unstraighten, upcase, updatefunction, upscale, uptodate,
  usepackage, usersetting, usetypescript, usleep, value, variance,
  variancebiased, vbox, vector, vectorfield, verbatim, view, vline,
  vprojection, windingnumber, word, write, xaxis, xaxis3, xaxis3At, xaxisAt,
  xequals, xinput, xlimits, xoutput, xpart, xscale, xscaleO, xtick, xtick3,
  xtrans, yaxis, yaxis3, yaxis3At, yaxisAt, yequals, ylimits, ypart, yscale,
  yscaleO, ytick, ytick3, ytrans, zaxis3, zaxis3At, zero, zero3, zlimits,
  zpart, ztick, ztick3, ztrans},
  keywords=[4]{AliceBlue, Align, Allow, AntiqueWhite, Apricot, Aqua,
  Aquamarine, Aspect, Azure, BeginPoint, Beige, Bisque, Bittersweet, Black,
  BlanchedAlmond, Blue, BlueGreen, BlueViolet, Both, Break, BrickRed, Brown,
  BurlyWood, BurntOrange, CCW, CW, CadetBlue, CarnationPink, Center,
  Centered, Cerulean, Chartreuse, Chocolate, Coeff, Coral, CornflowerBlue,
  Cornsilk, Crimson, Crop, Cyan, Dandelion, DarkBlue, DarkCyan,
  DarkGoldenrod, DarkGray, DarkGreen, DarkKhaki, DarkMagenta, DarkOliveGreen,
  DarkOrange, DarkOrchid, DarkRed, DarkSalmon, DarkSeaGreen, DarkSlateBlue,
  DarkSlateGray, DarkTurquoise, DarkViolet, DeepPink, DeepSkyBlue,
  DefaultHead, DimGray, DodgerBlue, Dotted, Draw, E, ENE, EPS, ESE, E_Euler,
  E_PC, E_RK2, E_RK3BS, Emerald, EndPoint, Euler, Fill, FillDraw, FireBrick,
  FloralWhite, ForestGreen, Fuchsia, Gainsboro, GhostWhite, Gold, Goldenrod,
  Gray, Green, GreenYellow, Honeydew, HookHead, Horizontal, HotPink, I,
  IgnoreAspect, IndianRed, Indigo, Ivory, JOIN_IN, JOIN_OUT, JungleGreen,
  Khaki, LM_DWARF, LM_MACHEP, LM_SQRT_DWARF, LM_SQRT_GIANT, LM_USERTOL,
  Label, Lavender, LavenderBlush, LawnGreen, LeftJustified, LeftSide,
  LemonChiffon, LightBlue, LightCoral, LightCyan, LightGoldenrodYellow,
  LightGreen, LightGrey, LightPink, LightSalmon, LightSeaGreen, LightSkyBlue,
  LightSlateGray, LightSteelBlue, LightYellow, Lime, LimeGreen, Linear,
  Linen, Log, Logarithmic, Magenta, Mahogany, Mark, MarkFill, Maroon, Max,
  MediumAquamarine, MediumBlue, MediumOrchid, MediumPurple, MediumSeaGreen,
  MediumSlateBlue, MediumSpringGreen, MediumTurquoise, MediumVioletRed,
  Melon, MidPoint, MidnightBlue, Min, MintCream, MistyRose, Moccasin, Move,
  MoveQuiet, Mulberry, N, NE, NNE, NNW, NW, NavajoWhite, Navy, NavyBlue,
  NoAlign, NoCrop, NoFill, NoSide, OldLace, Olive, OliveDrab, OliveGreen,
  Orange, OrangeRed, Orchid, Ox, Oy, PC, PaleGoldenrod, PaleGreen,
  PaleTurquoise, PaleVioletRed, PapayaWhip, Peach, PeachPuff, Periwinkle,
  Peru, PineGreen, Pink, Plum, PowderBlue, ProcessBlue, Purple, RK2, RK3,
  RK3BS, RK4, RK5, RK5DP, RK5F, RawSienna, Red, RedOrange, RedViolet,
  Rhodamine, RightJustified, RightSide, RosyBrown, RoyalBlue, RoyalPurple,
  RubineRed, S, SE, SSE, SSW, SW, SaddleBrown, Salmon, SandyBrown, SeaGreen,
  Seashell, Sepia, Sienna, Silver, SimpleHead, SkyBlue, SlateBlue, SlateGray,
  Snow, SpringGreen, SteelBlue, Suppress, SuppressQuiet, Tan, TeXHead, Teal,
  TealBlue, Thistle, Ticksize, Tomato, Turquoise, UnFill, VERSION, Value,
  Vertical, Violet, VioletRed, W, WNW, WSW, Wheat, White, WhiteSmoke,
  WildStrawberry, XYAlign, YAlign, Yellow, YellowGreen, YellowOrange,
  addpenarc, addpenline, align, allowstepping, angularsystem, animationdelay,
  appendsuffix, arcarrowangle, arcarrowfactor, arrow2sizelimit, arrowangle,
  arrowbarb, arrowdir, arrowfactor, arrowhookfactor, arrowlength,
  arrowsizelimit, arrowtexfactor, authorpen, axis, axiscoverage,
  axislabelfactor, background, backgroundcolor, backgroundpen, barfactor,
  barmarksizefactor, basealign, baselinetemplate, beveljoin, bigvertexpen,
  bigvertexsize, black, blue, bm, bottom, bp, brown, bullet, byfoci,
  byvertices, camerafactor, chartreuse, circlemarkradiusfactor,
  circlenodesnumberfactor, circleprecision, circlescale, cm, codefile,
  codepen, codeskip, colorPen, coloredNodes, coloredSegments,
  conditionlength, conicnodesfactor, count, cputimeformat,
  crossmarksizefactor, currentcoordsys, currentpatterns, currentpen,
  currentpicture, currentposition, currentprojection, curvilinearsystem,
  cuttings, cyan, darkblue, darkbrown, darkcyan, darkgray, darkgreen,
  darkgrey, darkmagenta, darkolive, darkred, dashdotted, dashed, datepen,
  dateskip, debuggerlines, debugging, deepblue, deepcyan, deepgray,
  deepgreen, deepgrey, deepmagenta, deepred, default, defaultControl,
  defaultS, defaultbackpen, defaultcoordsys, defaultfilename, defaultformat,
  defaultmassformat, defaultpen, diagnostics, differentlengths, dot,
  dotfactor, dotframe, dotted, doublelinepen, doublelinespacing, down,
  duplicateFuzz, ellipsenodesnumberfactor, eps, epsgeo, epsilon, evenodd,
  extendcap, fermionpen, figureborder, figuremattpen, firstnode, firststep,
  foregroundcolor, fuchsia, fuzz, gapfactor, ghostpen, gluonamplitude,
  gluonpen, gluonratio, gray, green, grey, hatchepsilon, havepagenumber,
  heavyblue, heavycyan, heavygray, heavygreen, heavygrey, heavymagenta,
  heavyred, hline, hwratio, hyperbolanodesnumberfactor, identity4, ignore,
  inXasyMode, inch, inches, includegraphicscommand, inf, infinity,
  institutionpen, intMax, intMin, invert, invisible, itempen, itemskip,
  itemstep, labelmargin, landscape, lastnode, left, legendhskip,
  legendlinelength, legendmargin, legendmarkersize, legendmaxrelativewidth,
  legendvskip, lightblue, lightcyan, lightgray, lightgreen, lightgrey,
  lightmagenta, lightolive, lightred, lightyellow, linemargin, lm_infmsg,
  lm_shortmsg, longdashdotted, longdashed, magenta, magneticPoints,
  magneticRadius, mantissaBits, markangleradius, markangleradiusfactor,
  markanglespace, markanglespacefactor, mediumblue, mediumcyan, mediumgray,
  mediumgreen, mediumgrey, mediummagenta, mediumred, mediumyellow, middle,
  minDistDefault, minblockheight, minblockwidth, mincirclediameter,
  minipagemargin, minipagewidth, minvertexangle, miterjoin, mm,
  momarrowfactor, momarrowlength, momarrowmargin, momarrowoffset,
  momarrowpen, monoPen, morepoints, nCircle, newbulletcolor, ngraph, nil,
  nmesh, nobasealign, nodeMarginDefault, nodesystem, nomarker, nopoint,
  noprimary, nullpath, nullpen, numarray, ocgindex, oldbulletcolor, olive,
  orange, origin, overpaint, page, pageheight, pagemargin, pagenumberalign,
  pagenumberpen, pagenumberposition, pagewidth, paleblue, palecyan, palegray,
  palegreen, palegrey, palemagenta, palered, paleyellow,
  parabolanodesnumberfactor, perpfactor, phi, photonamplitude, photonpen,
  photonratio, pi, pink, plain, plus, preamblenodes, pt, purple, r3, r4a,
  r4b, randMax, realDigits, realEpsilon, realMax, realMin, red,
  relativesystem, reverse, right, roundcap, roundjoin, royalblue, salmon,
  saveFunctions, scalarpen, sequencereal, settings, shipped,
  signedtrailingzero, solid, springgreen, sqrtEpsilon, squarecap, squarepen,
  startposition, stdin, stdout, stepfactor, stepfraction, steppagenumberpen,
  stepping, stickframe, stickmarksizefactor, stickmarkspacefactor, textpen,
  ticksize, tildeframe, tildemarksizefactor, tinv, titlealign, titlepagepen,
  titlepageposition, titlepen, titleskip, top, trailingzero, treeLevelStep,
  treeMinNodeWidth, treeNodeStep, trembleAngle, trembleFrequency,
  trembleRandom, tremblingMode, undefined, unitcircle, unitsquare, up,
  urlpen, urlskip, version, vertexpen, vertexsize, viewportmargin,
  viewportsize, vline, white, wye, xformStack, yellow, ylabelwidth,
  zerotickfuzz, zerowinding},
  morecomment=[l]{//},% 注释
  morecomment=[s]{/*}{*/},% 注释
  morestring=[b]",% 字符串
  morestring=[b]',% 字符串
}
% 定义别名
\lstalias{asy}{Asymptote}
\lstset{%
  language=asy,
  escapechar=`,
  columns=fixed,
  basewidth=0.55em,
  basicstyle={\ttfamily},
  keywordstyle={\bfseries},
  keywordstyle=[2]{\bfseries},
  keywordstyle=[3]{},
  keywordstyle=[4]{},
  commentstyle={\color{comment}},
  stringstyle={\color{string}},
  xleftmargin={2em},
  xrightmargin={2em},
  tabsize=8,
  backgroundcolor={\color{background}},
  numberstyle=\footnotesize,
  stepnumber=1,
  numbersep=5pt}
%
\def\oldvert{|} % 保存字符 | 的旧定义（其 catcode 在此定义读入时已确定）
\lstMakeShortInline\|

\endinput

% vim:tw=77:
