\usepackage{listings}
\usepackage{xcolor}
\definecolor{maccolor}{rgb}{0.3,0.3,0.8}
\newcommand\macoutput[1]{{\tt [Macaulay2 output o#1]}}%placeholder to compile w/o running M2
\lstdefinelanguage{Macaulay2}
{
basicstyle={\ttfamily},
keywordstyle={\color{maccolor!80!black}},
commentstyle={\color{gray}},
stringstyle={\color{red!40!black}},
rulecolor=\color{maccolor},
basewidth={1.2ex}, %workaround for prompts being same width as normal tt text
sensitive=false,
morecomment=[l]{--},
morecomment=[s]{-*}{*-},
morestring=[b]",
escapechar={`},
escapebegin={\rmfamily},
morekeywords={about,abs,AbstractToricVarieties,accumulate,Acknowledgement,acos,acosh,acot,addCancelTask,addDependencyTask,addEndFunction,addHook,AdditionalPaths,addStartFunction,addStartTask,Adjacent,adjoint,AdjointIdeal,AffineVariety,AfterEval,AfterNoPrint,AfterPrint,agm,AInfinity,alarm,AlgebraicSplines,Algorithm,Alignment,all,AllCodimensions,allowableThreads,ambient,analyticSpread,Analyzer,AnalyzeSheafOnP1,ancestor,ancestors,ANCHOR,and,andP,AngleBarList,ann,annihilator,antipode,any,append,applicationDirectory,applicationDirectorySuffix,apply,applyKeys,applyPairs,applyTable,applyValues,apropos,argument,Array,arXiv,Ascending,ascii,asin,asinh,ass,assert,associatedGradedRing,associatedPrimes,AssociativeAlgebras,AssociativeExpression,atan,atan2,atEndOfFile,Authors,autoload,AuxiliaryFiles,backtrace,Bag,Bareiss,baseFilename,BaseFunction,baseName,baseRing,baseRings,BaseRow,BasicList,basis,BasisElementLimit,Bayer,BeforePrint,beginDocumentation,BeginningMacaulay2,Benchmark,benchmark,Bertini,BesselJ,BesselY,betti,BettiCharacters,BettiTally,between,BGG,BIBasis,Binary,BinaryOperation,Binomial,binomial,BinomialEdgeIdeals,Binomials,BKZ,BlockMatrix,BLOCKQUOTE,BODY,Body,BoijSoederberg,BOLD,Book3264Examples,Boolean,BooleanGB,borel,Boxes,BR,break,Browse,Bruns,cache,CacheExampleOutput,CacheFunction,CacheTable,cacheValue,CallLimit,cancelTask,capture,catch,Caveat,CC,CDATA,ceiling,Center,centerString,Certification,ChainComplex,chainComplex,ChainComplexExtras,ChainComplexMap,ChainComplexOperations,ChangeMatrix,char,CharacteristicClasses,characters,charAnalyzer,check,CheckDocumentation,chi,Chordal,class,Classic,clean,clearAll,clearEcho,clearOutput,close,closeIn,closeOut,ClosestFit,CODE,code,codim,CodimensionLimit,coefficient,CoefficientRing,coefficientRing,coefficients,Cofactor,CohenEngine,CohenTopLevel,CoherentSheaf,CohomCalg,cohomology,coimage,CoincidentRootLoci,coker,cokernel,collectGarbage,columnAdd,columnate,columnMult,columnPermute,columnRankProfile,columnSwap,combine,Command,commandInterpreter,commandLine,COMMENT,commonest,commonRing,comodule,CompactMatrix,compactMatrixForm,CompiledFunction,CompiledFunctionBody,CompiledFunctionClosure,Complement,complement,complete,CompleteIntersection,CompleteIntersectionResolutions,Complexes,ComplexField,components,compose,compositions,compress,concatenate,conductor,ConductorElement,cone,Configuration,ConformalBlocks,conjugate,connectionCount,Consequences,Constant,Constants,constParser,content,continue,contract,Contributors,ConvexInterface,conwayPolynomial,ConwayPolynomials,copy,copyDirectory,copyFile,copyright,Core,CorrespondenceScrolls,cos,cosh,cot,CotangentSchubert,cotangentSheaf,coth,cover,coverMap,cpuTime,createTask,Cremona,csc,csch,current,currentColumnNumber,currentDirectory,currentFileDirectory,currentFileName,currentLayout,currentLineNumber,currentPackage,currentString,currentTime,Cyclotomic,Database,Date,DD,dd,deadParser,debug,debugError,DebuggingMode,debuggingMode,debugLevel,DecomposableSparseSystems,Decompose,decompose,deepSplice,Default,default,defaultPrecision,Degree,degree,degreeLength,DegreeLift,DegreeLimit,DegreeMap,DegreeOrder,DegreeRank,Degrees,degrees,degreesMonoid,degreesRing,delete,demark,denominator,Dense,Density,Depth,depth,Descending,Descent,Describe,describe,Description,det,determinant,DeterminantalRepresentations,DGAlgebras,diagonalMatrix,diameter,Dictionary,dictionary,dictionaryPath,diff,DiffAlg,difference,dim,directSum,disassemble,discriminant,dismiss,Dispatch,distinguished,DIV,Divide,divideByVariable,DivideConquer,DividedPowers,Divisor,DL,Dmodules,do,doc,docExample,docTemplate,document,DocumentTag,Down,drop,DT,dual,eagonNorthcott,EagonResolution,echoOff,echoOn,EdgeIdeals,edit,EigenSolver,eigenvalues,eigenvectors,eint,EisenbudHunekeVasconcelos,elapsedTime,elapsedTiming,elements,Eliminate,eliminate,Elimination,EliminationMatrices,EllipticCurves,EllipticIntegrals,else,EM,Email,End,end,endl,endPackage,Engine,engineDebugLevel,EngineRing,EngineTests,entries,EnumerationCurves,environment,Equation,EquivariantGB,erase,erf,erfc,error,errorDepth,euler,EulerConstant,eulers,even,EXAMPLE,ExampleFiles,ExampleItem,examples,ExampleSystems,Exclude,exec,exit,exp,expectedReesIdeal,expm1,exponents,export,exportFrom,exportMutable,Expression,expression,Ext,extend,ExteriorIdeals,ExteriorModules,exteriorPower,Factor,factor,false,Fano,FastMinors,FastNonminimal,FGLM,File,fileDictionaries,fileExecutable,fileExists,fileExitHooks,fileLength,fileMode,FileName,FilePosition,fileReadable,fileTime,fileWritable,fillMatrix,findFiles,findHeft,FindOne,findProgram,findSynonyms,FiniteFittingIdeals,First,first,firstkey,FirstPackage,fittingIdeal,flagLookup,FlatMonoid,flatten,flattenRing,Flexible,flip,floor,flush,fold,FollowLinks,for,forceGB,fork,FormalGroupLaws,Format,format,formation,FourierMotzkin,FourTiTwo,fpLLL,frac,fraction,FractionField,frames,FrobeniusThresholds,from,fromDividedPowers,fromDual,Function,FunctionApplication,FunctionBody,functionBody,FunctionClosure,FunctionFieldDesingularization,fusePairs,futureParser,GaloisField,Gamma,gb,GBDegrees,gbRemove,gbSnapshot,gbTrace,gcd,gcdCoefficients,gcdLLL,GCstats,genera,GeneralOrderedMonoid,GenerateAssertions,generateAssertions,generator,generators,Generic,GenericInitialIdeal,genericMatrix,genericSkewMatrix,genericSymmetricMatrix,gens,genus,get,getc,getChangeMatrix,getenv,getGlobalSymbol,getNetFile,getNonUnit,getPrimeWithRootOfUnity,getSymbol,getWWW,GF,gfanInterface,Givens,GKMVarieties,GLex,Global,global,globalAssign,globalAssignFunction,GlobalAssignHook,globalAssignment,globalAssignmentHooks,GlobalDictionary,GlobalHookStore,globalReleaseFunction,GlobalReleaseHook,Gorenstein,GradedLieAlgebras,GradedModule,gradedModule,GradedModuleMap,gradedModuleMap,gramm,GraphicalModels,GraphicalModelsMLE,Graphics,graphIdeal,graphRing,Graphs,Grassmannian,GRevLex,GroebnerBasis,groebnerBasis,GroebnerBasisOptions,GroebnerStrata,GroebnerWalk,groupID,GroupLex,GroupRevLex,GTZ,Hadamard,handleInterrupts,HardDegreeLimit,hash,HashTable,hashTable,HEAD,HEADER1,HEADER2,HEADER3,HEADER4,HEADER5,HEADER6,HeaderType,Heading,Headline,Heft,heft,Height,height,help,Hermite,hermite,Hermitian,HH,hh,HigherCIOperators,HighestWeights,Hilbert,hilbertFunction,hilbertPolynomial,hilbertSeries,HodgeIntegrals,hold,Holder,Hom,homeDirectory,HomePage,Homogeneous,Homogeneous2,homogenize,homology,homomorphism,HomotopyLieAlgebra,hooks,horizontalJoin,HorizontalSpace,HR,HREF,HTML,html,httpHeaders,Hybrid,HyperplaneArrangements,Hypertext,hypertext,HypertextContainer,HypertextParagraph,icFracP,icFractions,icMap,icPIdeal,id,Ideal,ideal,idealizer,identity,if,IgnoreExampleErrors,ii,image,imaginaryPart,IMG,ImmutableType,importFrom,in,incomparable,Increment,independentSets,indeterminate,IndeterminateNumber,Index,index,indexComponents,IndexedVariable,IndexedVariableTable,indices,inducedMap,inducesWellDefinedMap,InexactField,InexactFieldFamily,InexactNumber,InfiniteNumber,infinity,info,InfoDirSection,infoHelp,Inhomogeneous,input,Inputs,insert,installAssignmentMethod,installedPackages,installHilbertFunction,installMethod,installMinprimes,installPackage,InstallPrefix,instance,instances,IntegralClosure,integralClosure,integrate,IntermediateMarkUpType,interpreterDepth,intersect,intersectInP,Intersection,intersection,interval,InvariantRing,inverse,InverseMethod,inversePermutation,Inverses,inverseSystem,InverseSystems,Invertible,InvolutiveBases,irreducibleCharacteristicSeries,irreducibleDecomposition,isAffineRing,isANumber,isBorel,isCanceled,isCommutative,isConstant,isDirectory,isDirectSum,isEmpty,isField,isFinite,isFinitePrimeField,isFreeModule,isGlobalSymbol,isHomogeneous,isIdeal,isInfinite,isInjective,isInputFile,isIsomorphism,isLinearType,isListener,isLLL,isMember,isModule,isMonomialIdeal,isNormal,isOpen,isOutputFile,isPolynomialRing,isPrimary,isPrime,isPrimitive,isPseudoprime,isQuotientModule,isQuotientOf,isQuotientRing,isReady,isReal,isReduction,isRegularFile,isRing,isSkewCommutative,isSorted,isSquareFree,isStandardGradedPolynomialRing,isSubmodule,isSubquotient,isSubset,isSupportedInZeroLocus,isSurjective,isTable,isUnit,isWellDefined,isWeylAlgebra,ITALIC,Iterate,Jacobian,jacobian,jacobianDual,Jets,Join,join,Jupyter,K3Carpets,K3Surfaces,Keep,KeepFiles,KeepZeroes,ker,kernel,kernelLLL,kernelOfLocalization,Key,keys,Keyword,Keywords,kill,koszul,Kronecker,KustinMiller,LABEL,last,lastMatch,LATER,LatticePolytopes,Layout,lcm,leadCoefficient,leadComponent,leadMonomial,leadTerm,Left,left,length,LengthLimit,letterParser,Lex,LexIdeals,LI,Licenses,LieTypes,lift,liftable,Limit,limitFiles,limitProcesses,Linear,LinearAlgebra,LinearTruncations,lineNumber,lines,LINK,linkFile,List,list,listForm,listLocalSymbols,listSymbols,listUserSymbols,LITERAL,LLL,LLLBases,lngamma,load,loadDepth,LoadDocumentation,loadedFiles,loadedPackages,loadPackage,Local,local,localDictionaries,LocalDictionary,localize,LocalRings,locate,log,log1p,LongPolynomial,lookup,lookupCount,LowerBound,LUdecomposition,M0nbar,M2CODE,Macaulay2Doc,makeDirectory,MakeDocumentation,makeDocumentTag,MakeHTML,MakeInfo,MakeLinks,makePackageIndex,MakePDF,makeS2,Manipulator,map,MapExpression,MapleInterface,markedGB,Markov,MarkUpType,match,mathML,Matrix,matrix,MatrixExpression,Matroids,max,maxAllowableThreads,maxExponent,MaximalRank,maxPosition,MaxReductionCount,MCMApproximations,member,memoize,memoizeClear,memoizeValues,MENU,merge,mergePairs,META,method,MethodFunction,MethodFunctionBinary,MethodFunctionSingle,MethodFunctionWithOptions,methodOptions,methods,midpoint,min,minExponent,mingens,mingle,minimalBetti,MinimalGenerators,MinimalMatrix,minimalPresentation,minimalPresentationMap,minimalPresentationMapInv,MinimalPrimes,minimalPrimes,minimalReduction,Minimize,minimizeFilename,MinimumVersion,minors,minPosition,minPres,minprimes,Minus,minus,Miura,MixedMultiplicity,mkdir,mod,Module,module,ModuleDeformations,modulo,MonodromySolver,Monoid,monoid,MonoidElement,Monomial,MonomialAlgebras,monomialCurveIdeal,MonomialIdeal,monomialIdeal,MonomialIntegerPrograms,MonomialOrbits,MonomialOrder,Monomials,monomials,MonomialSize,monomialSubideal,moveFile,multidegree,multidoc,multigraded,MultigradedBettiTally,MultiGradedRationalMap,multiplicity,MultiplicitySequence,MultiplierIdeals,MultiplierIdealsDim2,MultiprojectiveVarieties,mutable,MutableHashTable,mutableIdentity,MutableList,MutableMatrix,mutableMatrix,NAGtypes,Name,nanosleep,Nauty,NautyGraphs,NCAlgebra,NCLex,needs,needsPackage,Net,net,NetFile,netList,new,newClass,newCoordinateSystem,NewFromMethod,newline,NewMethod,newNetFile,NewOfFromMethod,NewOfMethod,newPackage,newRing,nextkey,nextPrime,nil,NNParser,NoetherianOperators,NoetherNormalization,NonAssociativeProduct,NonminimalComplexes,nonspaceAnalyzer,NoPrint,norm,normalCone,Normaliz,NormalToricVarieties,not,Nothing,notify,notImplemented,NTL,null,nullaryMethods,nullhomotopy,nullParser,nullSpace,Number,number,NumberedVerticalList,numcols,numColumns,numerator,numeric,NumericalAlgebraicGeometry,NumericalCertification,NumericalImplicitization,NumericalLinearAlgebra,NumericalSchubertCalculus,numericInterval,NumericSolutions,numgens,numRows,numrows,odd,oeis,of,ofClass,OL,OldPolyhedra,OldToricVectorBundles,on,OneExpression,OnlineLookup,OO,oo,ooo,oooo,openDatabase,openDatabaseOut,openFiles,openIn,openInOut,openListener,OpenMath,openOut,openOutAppend,operatorAttributes,Option,OptionalComponentsPresent,optionalSignParser,Options,options,OptionTable,optP,or,Order,order,OrderedMonoid,orP,OutputDictionary,Outputs,override,pack,Package,package,PackageCitations,PackageDictionary,PackageExports,PackageImports,PackageTemplate,packageTemplate,pad,pager,PairLimit,pairs,PairsRemaining,PARA,Parametrization,parent,Parenthesize,Parser,Parsing,part,Partition,partition,partitions,parts,path,pdim,peek,PencilsOfQuadrics,Permanents,permanents,permutations,pfaffians,PHCpack,PhylogeneticTrees,pi,PieriMaps,pivots,PlaneCurveSingularities,plus,poincare,poincareN,Points,polarize,poly,Polyhedra,Polymake,PolynomialRing,Posets,Position,position,positions,PositivityToricBundles,POSIX,Postfix,Power,power,powermod,PRE,Precision,precision,Prefix,prefixDirectory,prefixPath,preimage,prepend,presentation,pretty,primaryComponent,PrimaryDecomposition,primaryDecomposition,PrimaryTag,PrimitiveElement,Print,print,printerr,printingAccuracy,printingLeadLimit,printingPrecision,printingSeparator,printingTimeLimit,printingTrailLimit,printString,printWidth,processID,Product,product,ProductOrder,profile,profileSummary,Program,programPaths,ProgramRun,Proj,Projective,ProjectiveHilbertPolynomial,projectiveHilbertPolynomial,ProjectiveVariety,promote,protect,Prune,prune,PruneComplex,pruningMap,Pseudocode,pseudocode,pseudoRemainder,Pullback,PushForward,pushForward,Python,QQ,QQParser,QRDecomposition,QthPower,Quasidegrees,QuaternaryQuartics,QuillenSuslin,quit,Quotient,quotient,quotientRemainder,QuotientRing,Radical,radical,RadicalCodim1,radicalContainment,RaiseError,random,RandomCanonicalCurves,RandomComplexes,RandomCurves,RandomCurvesOverVerySmallFiniteFields,RandomGenus14Curves,RandomIdeals,randomKRationalPoint,RandomMonomialIdeals,randomMutableMatrix,RandomObjects,RandomPlaneCurves,RandomPoints,RandomSpaceCurves,Range,rank,RationalMaps,RationalPoints,RationalPoints2,ReactionNetworks,read,readDirectory,readlink,readPackage,RealField,RealFP,realPart,realpath,RealQP,RealQP1,RealRoots,RealRR,RealXD,recursionDepth,recursionLimit,Reduce,reducedRowEchelonForm,reduceHilbert,reductionNumber,ReesAlgebra,reesAlgebra,reesAlgebraIdeal,reesIdeal,References,ReflexivePolytopesDB,regex,regexQuote,registerFinalizer,regSeqInIdeal,Regularity,regularity,relations,RelativeCanonicalResolution,relativizeFilename,Reload,remainder,RemakeAllDocumentation,remove,removeDirectory,removeFile,removeLowestDimension,reorganize,replace,RerunExamples,res,reshape,ResidualIntersections,ResLengthThree,Resolution,resolution,ResolutionsOfStanleyReisnerRings,restart,Result,resultant,Resultants,return,returnCode,Reverse,reverse,RevLex,Right,right,Ring,ring,RingElement,RingFamily,ringFromFractions,RingMap,rootPath,roots,rootURI,rotate,round,rowAdd,RowExpression,rowMult,rowPermute,rowRankProfile,rowSwap,RR,RRi,rsort,run,RunDirectory,RunExamples,RunExternalM2,runHooks,runLengthEncode,runProgram,same,saturate,Saturation,scan,scanKeys,scanLines,scanPairs,scanValues,schedule,schreyerOrder,Schubert,Schubert2,SchurComplexes,SchurFunctors,SchurRings,SCRIPT,scriptCommandLine,ScriptedFunctor,SCSCP,searchPath,sec,sech,SectionRing,SeeAlso,seeParsing,SegreClasses,select,selectInSubring,selectVariables,SelfInitializingType,SemidefiniteProgramming,Seminormalization,separate,SeparateExec,separateRegexp,Sequence,sequence,Serialization,serialNumber,Set,set,setEcho,setGroupID,setIOExclusive,setIOSynchronized,setIOUnSynchronized,setRandomSeed,setup,setupEmacs,sheaf,SheafExpression,sheafExt,sheafHom,SheafOfRings,shield,ShimoyamaYokoyama,short,show,showClassStructure,showHtml,showStructure,showTex,showUserStructure,SimpleDoc,simpleDocFrob,SimplicialComplexes,SimplicialDecomposability,SimplicialPosets,SimplifyFractions,sin,singularLocus,sinh,size,size2,SizeLimit,SkewCommutative,SlackIdeals,sleep,SLnEquivariantMatrices,SLPexpressions,SMALL,smithNormalForm,solve,someTerms,Sort,sort,sortColumns,SortStrategy,source,SourceCode,SourceRing,SPACE,SpaceCurves,SPAN,span,SparseMonomialVectorExpression,SparseResultants,SparseVectorExpression,Spec,SpechtModule,SpecialFanoFourfolds,specialFiber,specialFiberIdeal,SpectralSequences,splice,splitWWW,sqrt,SRdeformations,stack,stacksProject,Standard,standardForm,standardPairs,StartWithOneMinor,stashValue,StatePolytope,StatGraphs,status,stderr,stdio,step,StopBeforeComputation,stopIfError,StopWithMinimalGenerators,Strategy,String,STRONG,StronglyStableIdeals,STYLE,Style,style,SUB,sub,SubalgebraBases,sublists,submatrix,submatrixByDegrees,Subnodes,subquotient,SubringLimit,Subscript,subscript,SUBSECTION,subsets,substitute,substring,subtable,Sugarless,Sum,sum,SumOfTwists,SumsOfSquares,SUP,super,SuperLinearAlgebra,Superscript,superscript,support,SVD,SVDComplexes,switch,SwitchingFields,sylvesterMatrix,Symbol,symbol,SymbolBody,symbolBody,SymbolicPowers,symlinkDirectory,symlinkFile,symmetricAlgebra,symmetricAlgebraIdeal,symmetricKernel,SymmetricPolynomials,symmetricPower,synonym,SYNOPSIS,syz,Syzygies,SyzygyLimit,SyzygyMatrix,SyzygyRows,syzygyScheme,TABLE,Table,table,take,Tally,tally,tan,TangentCone,tangentCone,tangentSheaf,tanh,target,Task,taskResult,TateOnProducts,TD,temporaryFileName,tensor,tensorAssociativity,TensorComplexes,terminalParser,terms,TEST,Test,testExample,testHunekeQuestion,TestIdeals,TestInput,tests,TEX,tex,TeXmacs,texMath,Text,TH,then,Thing,ThinSincereQuivers,ThreadedGB,threadVariable,Threshold,throw,Time,time,times,timing,TITLE,TO,to,TO2,toAbsolutePath,toCC,toDividedPowers,toDual,toExternalString,toField,TOH,toList,toLower,top,top,topCoefficients,Topcom,topComponents,topLevelMode,Tor,TorAlgebra,Toric,ToricInvariants,ToricTopology,ToricVectorBundles,toRR,toRRi,toSequence,toString,TotalPairs,toUpper,TR,trace,transpose,TriangularSets,Tries,Trim,trim,Triplets,Tropical,true,Truncate,truncate,truncateOutput,Truncations,try,TSpreadIdeals,TT,tutorial,Type,TypicalValue,typicalValues,UL,ultimate,unbag,uncurry,Undo,undocumented,uniform,uninstallAllPackages,uninstallPackage,Unique,unique,Units,Unmixed,unsequence,unstack,Up,UpdateOnly,UpperTriangular,URL,urlEncode,Usage,use,UseCachedExampleOutput,UseHilbertFunction,UserMode,userSymbols,UseSyzygies,utf8,utf8check,validate,value,values,Variable,VariableBaseName,Variables,Variety,variety,vars,Vasconcelos,Vector,vector,VectorExpression,VectorFields,VectorGraphics,Verbose,Verbosity,Verify,VersalDeformations,versalEmbedding,Version,version,VerticalList,VerticalSpace,viewHelp,VirtualResolutions,VirtualTally,VisibleList,Visualize,wait,WebApp,wedgeProduct,weightRange,Weights,WeylAlgebra,WeylGroups,when,whichGm,while,width,wikipedia,Wrap,wrap,WrapperType,XML,xor,youngest,zero,ZeroExpression,zeta,ZZ,ZZParser}
}
\lstalias{Macaulay2output}{Macaulay2}
