| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053 |
- % \iffalse
- %
- % Copyright 2016-2019, Association for Computing Machinery
- % This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either
- % version 1.3 of this license or (at your option) any
- % later version.
- % The latest version of the license is in
- % http://www.latex-project.org/lppl.txt
- % and version 1.3 or later is part of all distributions of
- % LaTeX version 2005/12/01 or later.
- %
- % This work has the LPPL maintenance status `maintained'.
- %
- % The Current Maintainer of this work is Boris Veytsman,
- % <borisv@lk.net>
- %
- % This work consists of the file acmart.dtx, the derived file
- % acmart.cls, the files ACM-Reference-Format.bst, and templates
- % sample-acmlarge.tex, sample-acmsmall.tex, sample-acmtog.tex,
- % samplebody-conf.tex, samplebody-journals.tex, sample-manuscript.tex,
- % sample-sigchi-a.tex, sample-sigchi.tex,
- % sample-sigconf-authordraft.tex, sample-sigconf.tex,
- % sample-sigplan.tex
- %
- % \fi
- %
- %
- %% \CharacterTable
- %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
- %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
- %% Digits \0\1\2\3\4\5\6\7\8\9
- %% Exclamation \! Double quote \" Hash (number) \#
- %% Dollar \$ Percent \% Ampersand \&
- %% Acute accent \' Left paren \( Right paren \)
- %% Asterisk \* Plus \+ Comma \,
- %% Minus \- Point \. Solidus \/
- %% Colon \: Semicolon \; Less than \<
- %% Equals \= Greater than \> Question mark \?
- %% Commercial at \@ Left bracket \[ Backslash \\
- %% Right bracket \] Circumflex \^ Underscore \_
- %% Grave accent \` Left brace \{ Vertical bar \|
- %% Right brace \} Tilde \~}
- %
- %
- % \MakeShortVerb{|}
- % \def\guide{acmguide}
- % \iffalse
- % From
- % http://tex.stackexchange.com/questions/117892/can-i-convert-a-string-to-catcode-11 by egreg
- % \fi
- % \begingroup
- % \everyeof{\noexpand}
- % \endlinechar=-1
- % \xdef\currentjob{\scantokens\expandafter{\jobname}}
- % \endgroup
- %
- % \ifx\currentjob\guide\OnlyDescription\fi
- % \GetFileInfo{acmart.dtx}
- % \title{\LaTeX{} Class for the \emph{Association for Computing
- % Machinery}\thanks{\copyright 2016--2019, Association for Computing Machinery}}
- % \author{Boris Veytsman\thanks{%
- % \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}},
- % \href{mailto:boris@varphi.com}{\texttt{boris@varphi.com}}}}
- % \date{\filedate, \fileversion}
- % \maketitle
- % \begin{abstract}
- % This package provides a class for typesetting publications of
- % the Association for Computing Machinery.
- % \end{abstract}
- % \tableofcontents
- %
- % \clearpage
- %
- %\section{Introduction}
- %\label{sec:intro}
- %
- % The Association for Computing
- % Machinery\footnote{\url{http://www.acm.org/}} is the world's largest
- % educational and scientific computing society, which delivers
- % resources that advance computing as a science and a
- % profession. It was one of the
- % early adopters of \TeX\ for its typesetting.
- %
- % It provided several different classes for a number of journals and
- % conference proceedings. Unfortunately during the years since these
- % classes were written, the code was patched many times, and
- % supporting different versions of the classes became difficult.
- %
- % This package provides the uniform interface for all ACM
- % publications. It is intended to replace all the different classes and
- % packages and provide an up-to-date \LaTeX\ package.
- %
- % This package uses only free \TeX\ packages and fonts included in \TeX
- % Live, Mik\TeX\ and other popular \TeX\ distributions. It is
- % intended to be published in these distributions itself, which
- % minimizes users' efforts in the installation and support of this
- % package.
- %
- % I am grateful to
- % Michael D.~Adams,
- % Leif Andersen,
- % Lawrence Christopher Angrave,
- % Dirk Beyer,
- % Joachim Breitner,
- % Benjamin Byholm,
- % Nils Anders Danielsson,
- % Michael Ekstrand,
- % Matthew Fluet,
- % Paolo G.~Giarrusso,
- % Ben Greenman,
- % Enrico Gregorio,
- % Jamie Davis,
- % Peter Kemp,
- % Kerry A. Seitz, Jr.,
- % Luis Leiva,
- % Ben Liblit,
- % Rholais Lii,
- % LianTze Lim,
- % Kai Mindermann,
- % Frank Mittelbach,
- % Serguei Mokhov,
- % Ross Moore,
- % John Owens,
- % Joel Nider,
- % Tobias Pape,
- % Philip Quinn,
- % Mathias Rav,
- % Andreas Reichinger,
- % Matteo Riondato,
- % Craig Rodkin,
- % Bernard Rous,
- % David Shamma,
- % Gabriel Scherer,
- % Stephen Spencer,
- % Shin Hwei Tan,
- % Daniel Thomas,
- % Zack Weinberg,
- % John Wickerson
- % and many others for their invaluable help.
- %
- % The development version of the package is available at
- % \url{https://github.com/borisveytsman/acmart}.
- %
- %\section{User's guide}
- %\label{sec:ug}
- %
- %
- % This class uses many commands and customizaton options, so it might
- % appear intimidating for a casual user. Do not panic! Many of these
- % commands and options can be safely left with their default values
- % or the values recommended by your conference or journal editors. If
- % you have problems or questions, do not hesitate to ask me directly
- % or the community at \url{https://github.com/borisveytsman/acmart},
- % \url{https://tex.stackexchange.com} or the closest \TeX\ Users
- % Group. The world-wide \TeX\ Users Group is at
- % \url{https://tug.org/}; please consider joining us if you use \TeX\
- % regularly.
- %
- %\subsection{Installation}
- %\label{sec:ug_install}
- %
- % Most probably, you already have this package installed in your
- % favorite \TeX\ distribution; if not, you may want to upgrade. You
- % may need to upgrade it anyway since this package uses a number of
- % relatively recent packages, especially the ones related to fonts.
- %
- % The latest released version of this package can be found on CTAN:
- % \url{https://www.ctan.org/pkg/acmart}. The development version can
- % be found on GitHub: \url{https://github.com/borisveytsman/acmart}.
- % At this address you can file a bug report---or even contribute your
- % own enhancement by making a pull request.
- %
- % Please note that the version on Github is a development (or
- % experimental) version: please download it for testing new features.
- % The production version is the one on CTAN and ACM sites.
- %
- % Most users should not attempt to install this package themselves
- % but should rather rely on their \TeX\ distributions to provide it. If you
- % decide to install the package yourself, follow the standard rules:
- % \begin{enumerate}
- % \item Run |latex acmart.ins|. This will produce the file
- % |acmart.cls|
- % \item Put the files |acmart.cls| and |ACM-Reference-Format.bst|
- % in places where \LaTeX{} can find them (see \cite{TeXFAQ} or
- % the documentation for your \TeX{} system).\label{item:install}
- % \item Update the database of file names. Again, see \cite{TeXFAQ}
- % or the documentation for your \TeX{} system for the system-specific
- % details.\label{item:update}
- % \item The file |acmart.pdf| provides the documentation for the
- % package. (This is probably the file you are reading now.)
- % \end{enumerate}
- % As an alternative to items~\ref{item:install} and~\ref{item:update}
- % you can just put the files in the working directory where your
- % |.tex| file is.
- %
- %
- % This class uses a number of other packages. They are included in all
- % major \TeX\ distributions (\TeX Live, Mac\TeX, Mik\TeX) of 2015 and
- % later, so you probably have them installed. Just in case here is
- % the list of these packages:
- % \begin{itemize}
- % \item \textsl{amscls}, \url{http://www.ctan.org/pkg/amscls}
- % \item \textsl{amsfonts}, \url{http://www.ctan.org/pkg/amsfonts}
- % \item \textsl{amsmath}, \url{http://www.ctan.org/pkg/amsmath}
- % \item \textsl{binhex}, \url{http://www.ctan.org/pkg/binhex}
- % \item \textsl{balance}, \url{http://www.ctan.org/pkg/balance}
- % \item \textsl{booktabs}, \url{http://www.ctan.org/pkg/booktabs}
- % \item \textsl{caption}, \url{http://www.ctan.org/pkg/caption}
- % \item \textsl{comment}, \url{http://www.ctan.org/pkg/comment}
- % \item \textsl{cm-super}, \url{http://www.ctan.org/pkg/cm-super}
- % \item \textsl{cmap}, \url{http://www.ctan.org/pkg/cmap}
- % \item \textsl{draftwatermark}, \url{http://www.ctan.org/pkg/draftwatermark}
- % \item \textsl{environ}, \url{http://www.ctan.org/pkg/environ}
- % \item \textsl{etoolbox}, \url{http://www.ctan.org/pkg/etoolbox}
- % \item \textsl{fancyhdr}, \url{http://www.ctan.org/pkg/fancyhdr}
- % \item \textsl{float}, \url{http://www.ctan.org/pkg/float}
- % \item \textsl{fontaxes}, \url{http://www.ctan.org/pkg/fontaxes}
- % \item \textsl{geometry}, \url{http://www.ctan.org/pkg/geometry}
- % \item \textsl{graphics}, \url{http://www.ctan.org/pkg/graphics}
- % \item \textsl{hyperref}, \url{http://www.ctan.org/pkg/hyperref}
- % \item \textsl{ifluatex}, \url{http://www.ctan.org/pkg/ifluatex}
- % \item \textsl{ifxetex}, \url{http://www.ctan.org/pkg/ifxetex}
- % \item \textsl{inconsolata}, \url{http://www.ctan.org/pkg/inconsolata}
- % \item \textsl{libertine}, \url{http://www.ctan.org/pkg/libertine}
- % \item \textsl{manyfoot}, \url{http://www.ctan.org/pkg/manyfoot}
- % \item \textsl{microtype}, \url{http://www.ctan.org/pkg/microtype}
- % \item \textsl{mmap}, \url{http://www.ctan.org/pkg/mmap}
- % \item \textsl{ms}, \url{http://www.ctan.org/pkg/ms}
- % \item \textsl{mweights}, \url{http://www.ctan.org/pkg/mweights}
- % \item \textsl{natbib}, \url{http://www.ctan.org/pkg/natbib}
- % \item \textsl{nccfoots}, \url{http://www.ctan.org/pkg/nccfoots}
- % \item \textsl{newtx}, \url{http://www.ctan.org/pkg/newtx}
- % \item \textsl{oberdiek}, \url{http://www.ctan.org/pkg/oberdiek}
- % \item \textsl{pdftex-def}, \url{http://www.ctan.org/pkg/pdftex-def}
- % \item \textsl{refcount}, \url{http://www.ctan.org/pkg/refcount}
- % \item \textsl{setspace}, \url{http://www.ctan.org/pkg/setspace}
- % \item \textsl{textcase}, \url{http://www.ctan.org/pkg/textcase}
- % \item \textsl{totpages}, \url{http://www.ctan.org/pkg/totpages}
- % \item \textsl{trimspaces}, \url{http://www.ctan.org/pkg/trimspaces}
- % \item \textsl{upquote}, \url{http://www.ctan.org/pkg/upquote}
- % \item \textsl{url}, \url{http://www.ctan.org/pkg/url}
- % \item \textsl{xcolor}, \url{http://www.ctan.org/pkg/xcolor}
- % \item \textsl{xkeyval}, \url{http://www.ctan.org/pkg/xkeyval}
- % \item \textsl{xstring}, \url{http://www.ctan.org/pkg/xstring}
- % \end{itemize}
- %
- %
- %\subsection{Invocation and options}
- %\label{sec:invocation}
- %
- % To use this class, put in the preamble of your document
- % \begin{quote}
- % \cs{documentclass}\oarg{options}|{acmart}|
- % \end{quote}
- % There are several options corresponding to the type of the document and
- % its general appearance. They are described below. Generally
- % speaking, the options have |key=value| forms, for example,
- % \begin{verbatim}
- % \documentclass[format=acmsmall, screen=true, review=false]{acmart}
- % \end{verbatim}
- %
- %
- % The option |format| describes the format of the output. There are
- % several possible values for this option, for example,
- % \begin{verbatim}
- % \documentclass[format=acmtog]{acmart}
- % \end{verbatim}
- % Actually the words |format=| can be omitted, e.g.,
- % \begin{verbatim}
- % \documentclass[acmtog, review=false]{acmart}
- % \end{verbatim}
- % The possible formats are listed in
- % Table~\ref{tab:opts_format}. Note that formats starting with |acm|
- % are intended for journals and transactions, while formats starting
- % with |sig| are intended for proceedings published as books.
- %
- % Note that sometimes conference proceedings are published as a
- % special issue (or issues) of an ACM journal. In this case, you
- % should use the journal format for a conference paper. Please
- % contact your conference committee if in doubt.
- %
- % \begin{table}
- % \centering
- % \caption{The possible values for the \texttt{format} option}
- % \label{tab:opts_format}
- % \begin{tabularx}{\textwidth}{>{\ttfamily}lX}
- % \toprule
- % \normalfont Value & Meaning\\
- % \midrule
- % manuscript & A manuscript. This is the default. \\
- % acmsmall & Small single-column format. Used for CIE, CSUR,
- % JACM, JDIQ, JEA, JERIC,
- % JETC, PACMCGIT, PACMHCI, PACMPL, TAAS, TACCESS, TACO,
- % TALG, TALLIP (formerly TALIP), TCPS, TDS,
- % TEAC, TECS, TELO, THRI, TIIS, TIOT, TISSEC, TIST, TKDD, TMIS,
- % TOCE, TOCHI, TOCL,
- % TOCS, TOCT, TODAES, TODS, TOIS, TOIT, TOMACS, TOMM (formerly
- % TOMCCAP), TOMPECS, TOMS, TOPC, TOPLAS, TOPS,
- % TOS, TOSEM, TOSN, TQC, TRETS,
- % TSAS, TSC, TSLP and TWEB, including special issues. \\
- % acmlarge & Large single-column format. Used for DTRAP, HEALTH,
- % IMWUT, JOCCH, POMACS and TAP, including special issues. \\
- % acmtog & Large double-column format. Used for
- % TOG, including annual conference Technical Papers.\\
- % sigconf & Proceedings format for most ACM
- % conferences (with the exceptions listed below) and all ICPS
- % volumes.\\
- % sigplan & Proceedings format for SIGPLAN conferences.\\
- % sigchi & Proceedings format for SIGCHI conferences.\\
- % sigchi-a & Format for SIGCHI extended abstracts.\\
- % \bottomrule
- % \end{tabularx}
- % \end{table}
- %
- % There are several Boolean options that can take |true| or |false|
- % values. They are listed in Table~\ref{tab:opts_bool}. The words
- % |=true| can be omitted when setting a Boolean option, so instead of
- % |screen=true| one can write just |screen|, for example,
- % \begin{verbatim}
- % \documentclass[acmsmall, screen, review]{acmart}
- % \end{verbatim}
- % The option |review| is useful when combined with the |manuscript| format
- % option. It provides a version suitable for reviewers and
- % copy editors.
- %
- % The default for the option |screen| depends on the publication. At
- % present it is |false| for all publications \emph{but} PACM, since
- % PACM is now electronic-only. Thus PACM titles~(see
- % Table~\ref{tab:pubs}) set this option to |true|. In the future this
- % option may involve additional features suitable for on-screen
- % versions of articles.
- %
- % The option |natbib| is used when the corresponding
- % \BibTeX\ style is based on |natbib|. In most cases you do not need
- % to set it. See
- % Section~\ref{sec:ug_bibliography}.
- %
- % The option |anonymous| is used
- % for anonymous review processes and causes all author information to be
- % obscured.
- %
- % The option |timestamp| is used to include a time stamp in the
- % footer of each page. When preparing a document, this can help avoid
- % confusing different revisions. The footer also includes the page range of
- % the document. This helps detect missing pages in hard copies.
- %
- % The option |authordraft| is intended for author's drafts that are not
- % intended for distribution. It typesets a copyright block to give the
- % author an idea of its size and the overall size of the paper but
- % overprints it with the phrase ``Unpublished working draft. Not for
- % distribution.'', which is also used as a watermark. This option sets
- % |timestamp| and |review| to |true|, but these can be
- % overriden by setting these options to |false| \emph{after}
- % setting |authordraft| to |true|.
- %
- % The option |balance| determines whether the last page in the two
- % column mode has balanced columns. By default it is |true|; however,
- % it may lead to problems for some documents. Set it to |false| if
- % you encounter compilation errors. Note that for one page documents
- % \cs{balance} command might cause problems.
- %
- % The option |urlbreakonhyphens| determines whether URLs can be split
- % between lines after hyphens. By default it is true. Set it to
- % |false| to disallow these breaks.
- %
- % \begin{table}
- % \centering
- % \caption{Boolean options}
- % \label{tab:opts_bool}
- % \begin{tabularx}{\textwidth}{>{\ttfamily}l>{\ttfamily}lX}
- % \toprule
- % \normalfont Option & \normalfont Default & Meaning\\
- % \midrule
- % review & false & A review version: lines are numbered and
- % hyperlinks are colored\\
- % screen & {\rmfamily see text} & A screen version:
- % hyperlinks are colored\\
- % natbib & true & Whether to use the |natbib| package (see
- % Section~\ref{sec:ug_bibliography})\\
- % anonymous & false & Whether to make author(s) anonymous\\
- % authorversion & false & Whether to generate a special
- % version for the authors' personal use or posting (see
- % Section~\ref{sec:ug_topmatter})\\
- % nonacm & false & Use the class typesetting options for
- % a non-ACM document, which will not include the conference/journal
- % header and footers or permission statements\\
- % timestamp & false & Whether to put a time stamp in the
- % footer of each page\\
- % authordraft & false & Whether author's-draft mode is enabled\\
- % acmthm & true & Whether to define theorem-like environments, see
- % Section~\ref{sec:ug_theorems}\\
- % balance & true & Whether to balance the last page in two column
- % mode\\
- % urlbreakonhyphens & true & Whether to break urls on hyphens\\
- % \bottomrule
- % \end{tabularx}
- % \end{table}
- %
- %
- %
- %\subsection{Top matter}
- %\label{sec:ug_topmatter}
- %
- % A number of commands set up \emph{top matter} or (in
- % computer science jargon) \emph{metadata} for an article. They
- % establish the publication name, article title, authors, DOI and
- % other data. Some of these commands, like \cs{title} and \cs{author},
- % should be put by the authors. Others, like \cs{acmVolume} and
- % \cs{acmDOI}---by the editors. Below we describe these commands and
- % mention who should issue them. These macros should be used
- % \emph{before} the \cs{maketitle} command. Note that in previous
- % versions of ACM classes some of these commands should be used before
- % \cs{maketitle}, and some after it. Now they all must be used before
- % \cs{maketitle}.
- %
- %
- % This class internally loads the |amsart| class, so many top-matter
- % commands are inherited from |amsart|~\cite{Downes04:amsart}.
- %
- % \DescribeMacro{\acmJournal}%
- % The macro \cs{acmJournal}\marg{shortName} sets the name of the
- % journal or transaction for journals and transactions. The argument
- % is the short name of the publication \emph{in uppercase}, for
- % example,
- % \begin{verbatim}
- % \acmJournal{TOMS}
- % \end{verbatim}
- % The currently recognized journals are listed in
- % Table~\ref{tab:pubs}. Note that conference proceedings published in
- % \emph{book} form do not set this macro.
- %
- %
- %
- % \DescribeMacro{\acmConference}%
- % The macro
- % \cs{acmConference}\oarg{short name}\marg{name}\marg{date}\marg{venue} is
- % used for conference proceedings published in the book form. The
- % arguments are the following:
- % \begin{description}
- % \item[short name:] the abbreviated name of the conference (optional).
- % \item[name:] the name of the conference.
- % \item[date:] the date(s) of the conference.
- % \item[venue:] the place of the conference.
- % \end{description}
- % Examples:
- % \begin{verbatim}
- % \acmConference[TD'15]{Technical Data Conference}{November
- % 12--16}{Dallas, TX, USA}
- % \acmConference{SA'15 Art Papers}{November 02--06, 2015}{Kobe, Japan}
- % \end{verbatim}
- %
- % \DescribeMacro{\acmBooktitle}%
- % By default we assume that conference proceedings are published
- % in the book named \emph{Proceedings of \textsc{CONFERENCE}}, where
- % \textsc{CONFERENCE} is the name of the conference inferred from the
- % command \cs{acmConference} above. However, sometimes the book title
- % is different. The command \cs{acmBooktitle} can be used to set this
- % title, for example,
- % \begin{verbatim}
- % \acmBooktitle{Companion to the first International Conference on the
- % Art, Science and Engineering of Programming (Programming '17)}
- % \end{verbatim}
- %
- % An ACM paper should have either \cs{acmJournal} or
- % \cs{acmConference} command. If it has both (or more) commands, the
- % last one takes precedence. Note that if you have the command
- % \cs{acmConference} in a journal format like |acmsmall|, the class
- % will use conference format for bibstrip and reference citation
- % formatting. In the samples directory there is a file
- % |sample-acmsmall-conf.tex| with the example of this usage.
- %
- %
- %
- % \DescribeMacro{\editor}%
- % In most cases, conference proceedings are edited. You can use the
- % command \cs{editor}\marg{editor} to set the editor of the volume.
- % This command can be repeated, for example,
- % \begin{verbatim}
- % \editor{Jennifer B. Sartor}
- % \editor{Theo D'Hondt}
- % \editor{Wolfgang De Meuter}
- % \end{verbatim}
- %
- %
- % \DescribeMacro{\title}%
- % The command |\title|, as in the |amsart| class, has two arguments: one
- % optional, and one mandatory:
- % \begin{flushleft}
- % |\title[|\meta{ShortTitle}|]{|\meta{FullTitle}|}|
- % \end{flushleft}
- % The mandatory argument is the full title of the article. The
- % optional argument, if present, defines the shorter version of the
- % title for running heads. If the optional argument is absent, the
- % full title is used instead.
- %
- % It is expected that this command is inserted by the author of the
- % manuscript.
- %
- % \DescribeMacro{\subtitle}%
- % Besides title, ACM classes allow a subtitle, set with the
- % \cs{subtitle}\marg{subtitle} macro.
- %
- % The commands for specifying authors are highly structured.
- % The reason is they serve double duty: the authors' information is
- % typeset in the manuscript \emph{and} is used by the metadata
- % extraction tools for indexing and cataloguing. Therefore it is very
- % important to follow the guidelines exactly.
- %
- % \DescribeMacro{\author}%
- % \DescribeMacro{\orcid}
- % \DescribeMacro{\affiliation}%
- % \DescribeMacro{\email}%
- % The basic commands are \cs{author}, \cs{orcid} (for the researchers
- % registered with ORCID, \url{http://www.orcid.org/}), \cs{affiliation} and
- % \cs{email}. In the simplest case, you enter them in this order:
- % \begin{verbatim}
- % \author{...}
- % \orcid{...}
- % \affiliation{...}
- % \email{...}
- % \end{verbatim}
- % Do \emph{not} use the \LaTeX\ \cs{and} macro or commas, or \verb|\\|
- % between the authors! Each author deserves his or
- % her own \cs{author} command. An attempt to list several authors or
- % their e-mails in one command leads to a warning or an error. This
- % is not a bug, but the expected behavior.
- %
- % Note that some formats do not typeset e-mails or ORCID identifiers.
- % Do not worry: the metadata tools will get them.
- %
- % Sometimes an author has several affiliations. In this case, the
- % \cs{affiliation} command should be repeated:
- % \begin{verbatim}
- % \author{...}
- % \orcid{...}
- % \affiliation{...}
- % \affiliation{...}
- % \email{...}
- % \end{verbatim}
- % Similarly you can repeat the \cs{email} command.
- %
- % You may have several authors with the same affiliation, different
- % affiliations, or overlapping affiliations (author~$A_1$ is affiliated
- % with institutions $I_1$ and $I_2$, while author $A_2$ is affiliated
- % with $I_2$ only, author $A_3$ is affiliated with
- % $I_1$ and $I_3$, etc.). The recommended solution is to put the
- % \cs{affiliation} commands after each author, possibly repeating them:
- % \begin{verbatim}
- % \author{...}
- % \orcid{...}
- % \affiliation{...}
- % \affiliation{...}
- % \email{...}
- % \author{...}
- % \orcid{...}
- % \affiliation{...}
- % \email{...}
- % \author{...}
- % \orcid{...}
- % \affiliation{...}
- % \affiliation{...}
- % \email{...}
- % \end{verbatim}
- % In some cases, when several authors share the same affiliation, you can
- % try to save space using the format
- % \begin{verbatim}
- % \author{...}
- % \email{...}
- % \author{...}
- % \email{...}
- % \affiliation{...}
- % \end{verbatim}
- % However, this format is not generally recommended.
- %
- % \DescribeMacro{\additionalaffiliation}%
- % In some cases, too many affiliations can take too much space. The
- % command \cs{additionalaffiliation}\marg{affiliation} creates a
- % footnote after an author's name with the words ``Also with
- % \marg{affiliation}''. You should use this command only as a last
- % resort. An example of usage is:
- % \begin{verbatim}
- % \author{G. Tobin}
- % \author{Ben Trovato}
- % \additionalaffiliation{%
- % \institution{The Th{\o}rv{\"a}ld Group}
- % \streetaddress{1 Th{\o}rv{\"a}ld Circle}
- % \city{Hekla}
- % \country{Iceland}}
- % \affiliation{%
- % \institution{Institute for Clarity in Documentation}
- % \streetaddress{P.O. Box 1212}
- % \city{Dublin}
- % \state{Ohio}
- % \postcode{43017-6221}}
- % \end{verbatim}
- % Here Trovato and Tobin share their affiliation with the Institute
- % for Clarity in Documentation, but only Ben Trovato is affiliated
- % with The Th{\o}rv{\"a}ld Group.
- %
- %
- % \DescribeMacro{\position}%
- % \DescribeMacro{\institution}%
- % \DescribeMacro{\department}%
- % \DescribeMacro{\streetaddress}%
- % \DescribeMacro{\city}%
- % \DescribeMacro{\state}%
- % \DescribeMacro{\postcode}%
- % \DescribeMacro{\country}%
- % The \cs{affiliation} and \cs{additionalaffiliation} commands are
- % further structured to interact with the metadata extraction tools.
- % Inside these commands you should use the \cs{position},
- % \cs{institution}, \cs{department}, \cs{city}, \cs{streetaddress},
- % \cs{state}, \cs{postcode} and \cs{country} macros to indicate the
- % corresponding parts of the affiliation. Note that in some cases
- % (for example, journals) these parts are not printed in the resulting
- % copy, but they \emph{are} necessary since they are used by the XML
- % metadata extraction programs. Do \emph{not} put commas or |\\|
- % between the elements of \cs{affiliation}. They will be provided
- % automatically.
- %
- %
- % An example of the author block:
- % \begin{verbatim}
- % \author{A. U. Thor}
- % \orcid{1234-4564-1234-4565}
- % \affiliation{%
- % \institution{University of New South Wales}
- % \department{School of Biomedical Engineering}
- % \streetaddress{Samuels Building (F25), Kensington Campus}
- % \city{Sidney}
- % \state{NSW}
- % \postcode{2052}
- % \country{Australia}}
- % \email{author@nsw.au.edu}
- % \author{A. N. Other}
- % \affiliation{%
- % \institution{University of New South Wales}
- % \city{Sidney}
- % \state{NSW}
- % \country{Australia}}
- % \author{C. O. Respondent}
- % \orcid{1234-4565-4564-1234}
- % \affiliation{%
- % \institution{University of Pennsylvania}
- % \city{Philadelphia}
- % \state{PA}
- % \country{USA}}
- % \affiliation{%
- % \institution{University of New South Wales}
- % \city{Sidney}
- % \state{NSW}
- % \country{Australia}}
- % \end{verbatim}
- %
- % Note that the old ACM conference formats did not allow more than six
- % authors and required some effort from authors to achieve
- % alignment. The new format is much better in this.
- %
- % Sometimes an author works in several departments within the same
- % insitution. There could be two situations: the departments are
- % independent, or one department is within another. In the first
- % case, just repeat the command \cs{department} several times. To
- % handle the second case the command has an optional numerical
- % parameter. The departments with higher numbers are higher in the
- % organizational chart. Compare
- % \begin{verbatim}
- % \affiliation{%
- % \department[0]{Department of Lunar Studies} % 0 is the default
- % \department[1]{John Doe Institute} % higher than 0
- % \institution{University of San Serriffe}
- % \country{San Serriffe}}
- % \end{verbatim}
- % and
- % \begin{verbatim}
- % \affiliation{%
- % \department{Department of Lunar Studies} % Not in the John Doe Institute!
- % \department{John Doe Institute}
- % \institution{University of San Serriffe}
- % \country{San Serriffe}}
- % \end{verbatim}
- %
- %
- % The command \cs{affiliation} formats its output according to
- % American conventions. This might be wrong for some cases.
- % Consider, for example, a German address. In Germany, the postcode is
- % put before the city and is not separated by a comma. We can handle this
- % order using
- % \begin{verbatim}
- % \affiliation{%
- % \institution{Fluginstitut}
- % \streetaddress{Sonnenallee 17}
- % \postcode{123456}
- % \city{Helm}
- % \country{Germany}}
- % \end{verbatim}
- % However, the comma after the postcode is unfortunate: the address will
- % be typeset (in some formats) as
- % \begin{verbatim}
- % Fluginstitut
- % Sonenallee 17
- % 123456, Helm, Germany
- % \end{verbatim}
- %
- %
- % To overcome this problem, the command \cs{affiliation} has an
- % optional parameter |obeypunctuation|, which can be |false| (the
- % default) or |true|. If this parameter is |true|, \cs{afffiliation}
- % obeys the author's command. Thus
- % \begin{verbatim}
- % \affiliation[obeypunctuation=true]{%
- % \institution{Fluginstitut}\\
- % \streetaddress{Sonnenallee 17}\\
- % \postcode{123456}
- % \city{Helm},
- % \country{Germany}}
- % \end{verbatim}
- % will be typeset as
- % \begin{verbatim}
- % Fluginstitut
- % Sonenallee 17
- % 123456 Helm, Germany
- % \end{verbatim}
- %
- % Note that you should \emph{not} use this option for journals.
- %
- % It is expected that these commands are inserted by the author of the
- % manuscript.
- %
- % \DescribeMacro{\thanks}%
- % Like |amsart| (and unlike standard \LaTeX{}), we allow
- % |\thanks| only \emph{outside} of the commands |\title| and |\author|.
- % This command is obsolete and should \emph{not} be used in most
- % cases. Do not list your acknowledgments or grant sponsors here.
- % Put this information in the |acks| environment (see
- % Section~\ref{sec:ug_acks}).
- %
- % \DescribeMacro{\authorsaddresses}%
- % In some formats, addresses are printed as a footnote on the first
- % page. By default \LaTeX\ typesets them itself using the information
- % you give it. However, you can override its choice using the
- % commmand \cs{authorsaddresses}\marg{contact addresses}, for example,
- % \begin{verbatim}
- % \authorsaddresses{%
- % Authors' addresses: G.~Zhou, Computer Science Department, College of
- % William and Mary, 104 Jameson Rd, Williamsburg, PA 23185, US;
- % V.~B\'eranger, Inria Paris-Rocquencourt, Rocquencourt, France;
- % A.~Patel, Rajiv Gandhi University, Rono-Hills, Doimukh, Arunachal
- % Pradesh, India; H.~Chan, Tsinghua University, 30 Shuangqing Rd,
- % Haidian Qu, Beijing Shi, China; T.~Yan, Eaton Innovation Center,
- % Prague, Czech Republic; T.~He, C.~Huang, J.~A.~Stankovic University
- % of Virginia, School of Engineering Charlottesville, VA 22903, USA;
- % T. F. Abdelzaher, (Current address) NASA Ames Research Center,
- % Moffett Field, California 94035.}
- % \end{verbatim}
- % You can \emph{suppress} printing authors' addresses by setting them
- % to an empty string: |\authorsaddresses{}|.
- %
- % \DescribeMacro{\titlenote}%
- % \DescribeMacro{\subtitlenote}%
- % \DescribeMacro{\authornote}%
- % While the command \cs{thanks} generates a note without a footnote
- % mark, sometimes the authors might need notes more tightly connected
- % to the title, subtitle or author. The commands \cs{titlenote},
- % \cs{subtitlenote} and \cs{authornote} that follow the corresponding
- % commands (\cs{title}, \cs{subtitle} and \cs{author}) generate such
- % notes. For example,
- % \begin{verbatim}
- % \title{This is a title}
- % \titlenote{This is a titlenote}
- % \author{A. U. Thor}
- % \authornote{This is an authornote}
- % \end{verbatim}
- %
- % Please never use a \cs{footnote} inside an \cs{author} or \cs{title}
- % command since this confuses the metadata extraction software. (Actually
- % these commands now produce errors.)
- %
- % \DescribeMacro{\authornotemark}%
- % Sometimes one may need to have the same footnote connected to
- % several authors. The command \cs{authornotemark}\oarg{number} adds
- % just the footnote mark, for example,
- % \begin{verbatim}
- % \author{A. U. Thor}
- % \authornote{Both authors contributed equally to the paper}
- % ...
- % \author{A. N. Other}
- % \authornotemark[1]
- % \end{verbatim}
- % The correct numbering of these marks is the responsibility of the
- % user.
- %
- % \DescribeMacro{\acmVolume}%
- % \DescribeMacro{\acmNumber}%
- % \DescribeMacro{\acmArticle}%
- % \DescribeMacro{\acmYear}%
- % \DescribeMacro{\acmMonth}%
- % The macros \cs{acmVolume}, \cs{acmNumber}, \cs{acmArticle},
- % \cs{acmYear} and \cs{acmMonth} are inserted by the editor and set
- % the journal volume, issue, article number, year and month
- % corrspondingly. The arguments of all these commands, including
- % \cs{acmMonth}, is numerical. For example,
- % \begin{verbatim}
- % \acmVolume{9}
- % \acmNumber{4}
- % \acmArticle{39}
- % \acmYear{2010}
- % \acmMonth{3}
- % \end{verbatim}
- % Note that \cs{acmArticle} is used not only for journals but also
- % for some conference proceedings.
- %
- % \DescribeMacro{\acmArticleSeq}%
- % The articles in the same issue of a journal have a \emph{sequence
- % number}. It is used to vertically position the black blob on the first
- % page of some formats. By default it is the same as the article number,
- % but the command \cs{acmArticleSeq}\marg{n} can be used to change it:
- % \begin{verbatim}
- % \acmArticle{39} % The sequence number will be 39 by default
- % \acmArticleSeq{5} % We redefine it to 5
- % \end{verbatim}
- % Setting this number to zero suppresses the blob.
- %
- % \DescribeMacro{\acmSubmissionID}%
- % If your paper got a Submission~ID from the Conference Management
- % System, put it here:
- % \begin{verbatim}
- % \acmSubmissionID{123-A56-BU3}
- % \end{verbatim}
- %
- %
- % \DescribeMacro{\acmPrice}%
- % The macro \cs{acmPrice}\marg{price} sets the price for the article,
- % for example,
- % \begin{verbatim}
- % \acmPrice{25.00}
- % \end{verbatim}
- % Note that you do not need to put the dollar sign here, just the
- % amount. By default the price is \$15.00, unless the copyright is
- % set to |usgov|, |rightsretained|, |iw3c2w3|, or |iw3c2w3g|, when it
- % is suppressed. Note that to override the defaults you need to set
- % the price \emph{after} the \cs{setcopyright} command. Also, the
- % command |\acmPrice{}| suppresses the printing of the price.
- %
- % \DescribeMacro{\acmISBN}%
- % Book-like volumes have ISBN numbers attached to them. The macro
- % \cs{acmISBN}\marg{ISBN} sets it. Normally it is set by the
- % typesetter, for example,
- % \begin{verbatim}
- % \acmISBN{978-1-4503-3916-2}
- % \end{verbatim}
- % Setting it to the empty string, as |\acmISBN{}|, suppresses printing the
- % ISBN.
- %
- % \DescribeMacro{\acmDOI}%
- % The macro \cs{acmDOI}\marg{DOI} sets the DOI of the article, for
- % example,
- % \begin{verbatim}
- % \acmDOI{10.1145/9999997.9999999}
- % \end{verbatim}
- % It is normally set by the typesetter. Setting it to the empty
- % string, as |\acmDOI{}|, suppresses the DOI.
- %
- %
- % \DescribeMacro{\acmBadgeR}%
- % \DescribeMacro{\acmBadgeL}%
- % Some conference articles get special distinctions, for example, the
- % artifact evaluation for PPoPP~2016
- % (see~\url{http://ctuning.org/ae/ppopp2016.html}). These articles
- % display special badges supplied by the conference organizers. This
- % class provides commands to add these badges:
- % \cs{acmBadgeR}\oarg{url}\marg{graphics} and
- % \cs{acmBadgeL}\oarg{url}\marg{graphics}. The first command puts the
- % badge to the right of the title, and the second one---to the left.
- % The exception is the |sigchi-a| mode for SIGCHI extended abstracts,
- % which puts the badges on the left margin. The arguments have the
- % following meaning: \oarg{url}, if provided, sets the link to the
- % badge authority in the screen version, while \marg{graphics} sets
- % the graphics file with the badge image. The file must be a cropped
- % square, which is scaled to a standard size in the output. For
- % example, if the badge image is |ae-logo.pdf|, the command is
- % \begin{verbatim}
- % \acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
- % \end{verbatim}
- %
- %
- %
- % \DescribeMacro{\startPage}%
- % The macro \cs{startPage}\marg{page} sets the first page of the
- % article in a journal or book. It is used by the typesetter.
- %
- %
- % \DescribeMacro{\terms}%
- % \DescribeMacro{\keywords}%
- % The command
- % \cs{keywords}\marg{keyword, keyword,\ldots} sets keywords for the
- % article. They must be
- % separated by commas, for example,
- % \begin{verbatim}
- % \keywords{wireless sensor networks, media access control,
- % multi-channel, radio interference, time synchronization}
- % \end{verbatim}
- %
- % \DescribeEnv{CCSXML}%
- % \DescribeMacro{\ccsdesc}%
- % ACM publications are classified according to the ACM Computing
- % Classification Scheme (CCS). CCS codes are used both in the typeset
- % version of the publications \emph{and} in the metadata in various
- % databases. Therefore you need to provide both \TeX\ commands and XML
- % metadata with the paper.
- %
- % The tool at \url{http://dl.acm.org/ccs.cfm} can be used to generate
- % CCS codes. After you select the topics, click on ``Generate CCS
- % codes'' to get results like the following:
- % \begin{verbatim}
- % \begin{CCSXML}
- % <ccs2012>
- % <concept>
- % <concept_id>10010520.10010553.10010562</concept_id>
- % <concept_desc>Computer systems organization~Embedded systems</concept_desc>
- % <concept_significance>500</concept_significance>
- % </concept>
- % <concept>
- % <concept_id>10010520.10010575.10010755</concept_id>
- % <concept_desc>Computer systems organization~Redundancy</concept_desc>
- % <concept_significance>300</concept_significance>
- % </concept>
- % <concept>
- % <concept_id>10010520.10010553.10010554</concept_id>
- % <concept_desc>Computer systems organization~Robotics</concept_desc>
- % <concept_significance>100</concept_significance>
- % </concept>
- % <concept>
- % <concept_id>10003033.10003083.10003095</concept_id>
- % <concept_desc>Networks~Network reliability</concept_desc>
- % <concept_significance>100</concept_significance>
- % </concept>
- % </ccs2012>
- % \end{CCSXML}
- %
- % \ccsdesc[500]{Computer systems organization~Embedded systems}
- % \ccsdesc[300]{Computer systems organization~Redundancy}
- % \ccsdesc{Computer systems organization~Robotics}
- % \ccsdesc[100]{Networks~Network reliability}
- % \end{verbatim}
- %
- % You just need to copy this code and paste it in your paper anywhere
- % before \verb|\maketitle|.
- %
- % \DescribeMacro{\setcopyright}
- % There are several possibilities for the copyright of the papers
- % published by the ACM: the authors may transfer the rights to the ACM,
- % license them to the ACM, some or all authors might be employees of the
- % US or Canadian governments, etc. Accordingly the command
- % \verb|\setcopyright{...}| is introduced. Its argument is the
- % copyright status of the paper, for example,
- % \verb|\setcopyright{acmcopyright}|. The possible values for this
- % command are listed in Table~\ref{tab:setcopyright}. This command
- % must be placed in the preamble, before |\begin{document}|.
- %
- % \begin{table}
- % \centering
- % \caption{Parameters for the \texttt{\textbackslash setcopyright} command}
- % \label{tab:setcopyright}
- % \begin{tabularx}{\textwidth}{lX}
- % \toprule
- % Parameter & Meaning\\
- % \midrule
- % \texttt{none} & The copyright and permission information is not
- % typeset. (This is the option for some ACM conferences.) \\
- % \texttt{acmcopyright} & The authors transfer the copyright to the
- % ACM (the ``traditional'' choice).\\
- % \texttt{acmlicensed} & The authors retain the copyright but
- % license the publication rights to ACM\@. \\
- % \texttt{rightsretained} & The authors retain the copyright and
- % publication rights to themselves or somebody else. \\
- % \texttt{usgov} & All the authors are employees of the US
- % government. \\
- % \texttt{usgovmixed} & Some authors are employees of the US
- % government. \\
- % \texttt{cagov} & All the authors are employees of the Canadian
- % government. \\
- % \texttt{cagovmixed} & Some authors are employees of the Canadian
- % government. \\
- % \texttt{licensedusgovmixed} & Some authors are employees of the US
- % government, and the publication rights are licensed to ACM\@. \\
- % \texttt{licensedcagov} & All the authors are employees of the Canadian
- % government, and the publication rights are licensed to ACM\@. \\
- % \texttt{licensedcagovmixed} & Some authors are employees of the
- % Canadian
- % government, and the publication rights are licensed to ACM\@. \\
- % \texttt{othergov} & Authors are employees of a
- % government other than the US or Canada. \\
- % \texttt{licensedothergov} & Authors are employees of a
- % government other than the US or Canada, and the publication rights
- % are licensed to ACM\@. \\
- % \texttt{iw3c2w3} & Special statement for conferences organized
- % by IW3C2.\\
- % \texttt{iw3c2w3g} & Special statement for conferences organized
- % by IW3C2, when some authors are approved Google employees.\\
- % \bottomrule
- % \end{tabularx}
- % \end{table}
- % The ACM submission software should generate the right command for you
- % to paste into your file.
- %
- %
- % \DescribeMacro{\copyrightyear}%
- % Each copyright statement must have the year of copyright. By
- % default it is the same as \cs{acmYear}, but you can override this
- % using the macro \cs{copyrightyear}, e.g.,
- % \begin{verbatim}
- % \acmYear{2016}
- % \copyrightyear{2015}
- % \end{verbatim}
- %
- % There is a special case for a personal copy that the authors may be
- % allowed to generate for their use or a posting on a personal site
- % (check the instructions for the specific journal or conference for
- % the details). The document option |authorversion=true| produces a
- % special form of the copyright statement for this case. Note that
- % you still need the \cs{setcopyright} command and (optionally)
- % \cs{copyrightyear} command to tell \TeX\ about the copyright owner and
- % year. Also, you should be aware that due to the different sizes of
- % the permssion blocks for the printed version and authors' version,
- % the page breaks might be different between them.
- %
- % \DescribeEnv{abstract}%
- % The environment |abstract| must \emph{precede} the \cs{maketitle}
- % command. Again, this is different from the standard \LaTeX.
- % Putting |abstract| after \cs{maketitle} will trigger an error.
- %
- %
- % \DescribeEnv{teaserfigure}%
- % A special kind of figure is used for many two-column conference
- % proceedings. This figure is placed just after the authors but
- % before the main text. The environment |teaserfigure| is used for these
- % figures. This environment must be used \emph{before}
- % \cs{maketitle}, for example,
- % \begin{verbatim}
- % \begin{teaserfigure}
- % \includegraphics[width=\textwidth]{sampleteaser}
- % \caption{This is a teaser}
- % \label{fig:teaser}
- % \end{teaserfigure}
- % \end{verbatim}
- %
- %
- % \DescribeMacro{\settopmatter}%
- % Some information in the top matter is printed for certain journals
- % or proceedings and suppressed for others. You can override these
- % defaults using the command \cs{settopmatter}\marg{settings}. The
- % settings and their meanings are listed in
- % Table~\ref{tab:settopmatter}. For example,
- % \begin{verbatim}
- % \settopmatter{printacmref=false, printccs=true, printfolios=true}
- % \end{verbatim}
- % The parameter |authorsperrow| requires some explanation. In
- % conference proceedings authors' information is typeset in boxes,
- % several boxes per row (see |sample-sigconf.pdf|,
- % |sample-sigplan.pdf|, etc.). The number of boxes per row is
- % determined automatically. If you want to override this,
- % you can do it using this parameter, for example,
- % \begin{verbatim}
- % \settopmatter{authorsperrow=4}
- % \end{verbatim}
- % However, in most cases you should \emph{not} do this and should use the
- % default settings. Setting |authorsperrow| to $0$ will revert it to the
- % default settings.
- %
- % \begin{table}
- % \centering
- % \caption{Settings for the \cs{settopmatter} command}
- % \label{tab:settopmatter}
- % \begin{tabularx}{\textwidth}{llX}
- % \toprule
- % Parameter & Values & Meaning\\
- % \midrule
- % |printccs| & true/false & Whether to print CCS categories\\
- % |printacmref| & true/false & Whether to print the ACM bibliographic
- % entry\\
- % |printfolios| & true/false & Whether to print page numbers
- % (folios)\\
- % |authorsperrow| & numeric & Number of authors per row for the title
- % page in
- % conference proceedings formats\\
- % \bottomrule
- % \end{tabularx}
- % \end{table}
- %
- %
- % \DescribeMacro{\received}%
- % The command \cs{received}\oarg{stage}\marg{date} sets the history of
- % the publication. The~\oarg{stage} argument is optional; the default
- % is |Received| for the first date and |revised| for the subsequent
- % ones. For example,
- % \begin{verbatim}
- % \received{February 2007}
- % \received[revised]{March 2009}
- % \received[accepted]{June 2009}
- % \end{verbatim}
- %
- %
- % \DescribeMacro{\maketitle}%
- % The macro \cs{maketitle} must be the last command in the top-matter
- % group. That is it must follow the commands defined in this section.
- %
- %
- % \DescribeMacro{\shortauthors}%
- % \emph{After} the command \cs{maketitle}, the macro \cs{shortauthors}
- % stores the names of the authors for the running head. You can
- % redefine it if the list of author's name is too long, e.g.,
- % \begin{verbatim}
- % \maketitle
- % \renewcommand{\shortauthors}{Zhou et al.}
- % \end{verbatim}
- %
- %
- %\subsection{Algorithms}
- %\label{sec:ug_algorithms}
- %
- % There are now several good packages for typesetting
- % algorithms~\cite{Fiorio15, Brito09, Heinz15}, and the authors are
- % free to choose their favorite one.
- %
- %
- %
- %\subsection{Figures and tables}
- %\label{sec:ug_floats}
- %
- % The new ACM styles use the standard \LaTeX\ interface for figures and
- % tables. There are some important items to be aware of, however.
- %
- % \begin{enumerate}
- % \item The captions for figures must be entered \emph{after} the
- % figure bodies and for tables \emph{before} the table bodies.
- % \item The ACM uses the standard types for figures and tables and adds
- % several new ones. In total there are the following types:
- % \begin{description}
- % \item[figure, table:] a standard figure or table taking a full text
- % width in one-column formats and one column width in two-column formats.
- % \item[figure*, table*] in two-column formats, a special figure or
- % table taking a full text width.
- % \item[teaserfigure:] a special figure before \cs{maketitle}.
- % \item[sidebar, marginfigure, margintable:] in the |sigchi-a| format,
- % special sidebars, tables and figures in the margin.
- % \end{description}
- %
- % \item Accordingly, when scaling images, one should use the
- % following sizes:
- % \begin{enumerate}
- % \item For |teaserfigure|, |figure| in one-column mode or |figure*| in
- % two-column mode, use \cs{textwidth}. In one-column mode, you can also
- % use \cs{columnwidth}, which coincides with \cs{textwidth} in this
- % case.
- % \item For |figure| in two-column mode, use \cs{columnwidth}.
- % \item For |marginfigure|, use \cs{marginparwidth}.
- % \item For |figure*| in SIGCHI extended
- % abstracts, use \cs{fulltextwidth}.
- % \end{enumerate}
- %
- % \end{enumerate}
- %
- % It is strongly recommended to use the package |booktabs|~\cite{Fear05}
- % and follow its main principles of typography with respect to tables:
- % \begin{enumerate}
- % \item Never, ever use vertical rules.
- % \item Never use double rules.
- % \end{enumerate}
- % It is also a good idea not to overuse horizontal rules.
- %
- % For table \emph{footnotes} you have several options described in the TeX
- % FAQ~\cite{TeXFAQ}. The simplest one is to use a \cs{minipage}
- % environment:
- % \begin{verbatim}
- % \begin{table}
- % \caption{Simulation Configuration}
- % \label{tab:conf}
- % \begin{minipage}{\columnwidth}
- % \begin{center}
- % \begin{tabular}{ll}
- % \toprule
- % TERRAIN\footnote{This is a table footnote. This is a
- % table footnote. This is a table footnote.} &
- % (200\,m$\times$200\,m) Square\\
- % Node Number & 289\\
- % Node Placement & Uniform\\
- % Application & Many-to-Many/Gossip CBR Streams\\
- % Payload Size & 32 bytes\\
- % Routing Layer & GF\\
- % MAC Layer & CSMA/MMSN\\
- % Radio Layer & RADIO-ACCNOISE\\
- % Radio Bandwidth & 250Kbps\\
- % Radio Range & 20m--45m\\
- % \bottomrule
- % \end{tabular}
- % \end{center}
- % \bigskip
- % \footnotesize\emph{Source:} This is a table
- % sourcenote. This is a table sourcenote. This is a table
- % sourcenote.
- %
- % \emph{Note:} This is a table footnote.
- % \end{minipage}
- % \end{table}
- % \end{verbatim}
- %
- % \DescribeEnv{sidebar}%
- % \DescribeEnv{marginfigure}%
- % \DescribeEnv{margintable}%
- % SIGCHI extended abstracts use margin space extensively. This package
- % provides three environments for this with optional captions:
- % \begin{description}
- % \item[sidebar:] textual information in the margin
- % \item[marginfigure:] a figure in the margin
- % \item[margintable:] a table in the margin
- % \end{description}
- %
- %
- % Tables and figures (including margin tables and margin figures) are
- % by default centered. However, in some cases (for example, when you
- % use several subimages per figure) you may need to override this.
- % A good way to do so is to put the contents into a
- % \cs{minipage} of the width \cs{columnwidth}.
- %
- %
- %\subsection{Descriptions of images}
- %\label{sec:descriptions}
- %
- % \DescribeMacro{\Description}%
- % Some readers of ACM publications might be visually challenged.
- % These readers might use a voice-over software to read aloud the
- % papers. It is important to provide them a description of each
- % image used in the paper.
- %
- % The command \cs{Description}\oarg{short description}\marg{long
- % description} should be placed inside every \texttt{figure},
- % \texttt{teaserfigure} or \texttt{marginfigure} environment to
- % provide a description of the image(s) used in the figure. Unlike
- % \cs{caption}, which is used alongside the image, \cs{Description} is
- % intended to be used instead of the image, for example,
- % \begin{verbatim}
- % \begin{figure}
- % \centering
- % \includegraphics{voltage}
- % \Description{A bell-like histogram centered at $0.5$~V with most
- % measurements between $0.2$~V and $0.8$~V}
- % \caption{Histogram of the measurements of voltage}
- % \label{fig:voltage}
- % \end{figure}
- % \end{verbatim}
- % At present the lack of descriptions generates a warning at
- % compilation.
- %
- %\subsection{Theorems}
- %\label{sec:ug_theorems}
- %
- % The ACM classes define two theorem styles and several pre-defined
- % theorem environments:
- % \begin{description}
- % \item[acmplain:] this is the style used for
- % |theorem|,
- % |conjecture|,
- % |proposition|,
- % |lemma| and
- % |corollary|, and
- % \item[acmdefinition:] this is the style used for
- % |example| and
- % |definition|.
- % \end{description}
- %
- %
- % These environments are defined by default. In the unusual
- % circumstance that a user does not wish to have these environments
- % defined, the option |acmthm=false| in the preamble will suppress
- % them.
- %
- %\subsection{Online-only and offline-only material}
- %\label{sec:ug_screen}
- %
- % \DescribeEnv{printonly}%
- % \DescribeEnv{screenonly}%
- % Some supplementary material in ACM publications is put online but
- % not in the printed version. The text inside the environment
- % |screenonly| will be typeset only when the option |screen| (see
- % Section~\ref{sec:invocation}) is set to |true|. Conversely, the
- % text inside the environment |printonly| is typeset only when this
- % option is set to |false|. For example,
- % \begin{verbatim}
- % \section{Supplementary materials}
- %
- % \begin{printonly}
- % Supplementary materials are available in the online version of this paper.
- % \end{printonly}
- %
- % \begin{screenonly}
- % (The actual supplementary materials.)
- % \end{screenonly}
- % \end{verbatim}
- %
- % We use the |comment| package for typesetting this code, so
- % |\begin| and |\end| should start on a line of their own with
- % no leading or trailing spaces.
- %
- %\subsection{Note about anonymous mode}
- %\label{sec:ug_anonymous}
- %
- % \DescribeEnv{anonsuppress}%
- % When the option |anonymous| is selected, \TeX\ suppresses author
- % information (including the number of authors) for a blind review.
- % However, sometimes the information identifying the authors may be
- % present in the body of the paper. For example,
- % \begin{verbatim}
- % \begin{anonsuppress}
- % This is the continuation of the previous work by the author
- % \cite{prev1, prev2}.
- % \end{anonsuppress}
- % \end{verbatim}
- %
- % As for the |printonly| and |screenonly| environments,
- % |\begin{anonsuppress}| and |\end{anonsuppress}| should start on a
- % line of their own with no leading or trailing spaces.
- %
- %\subsection{Acknowledgments}
- %\label{sec:ug_acks}
- %
- % The traditional ``Acknowledgments'' section is conventionally used
- % to thank persons and granting agencies for their help and support.
- % However, there are several important considerations about this
- % section.
- %
- % First, in anonymous mode this section must be omitted: it gives
- % too much information to reviewers. Second, data about
- % grants is extracted and stored separately by the postprocessing
- % software. ACM classes provide facilities for both these tasks.
- %
- % \DescribeEnv{acks}%
- % The environment |acks| starts an unnumbered section
- % ``Acknowledgments'' unless the anonymous mode is chosen. Put all
- % thanks inside this environment.
- %
- % As for the |printonly| and |screenonly| environments,
- % |\begin{acks}| and |\end{acks}| should start on a
- % line of their own with no leading or trailing spaces.
- %
- % \DescribeMacro{\grantsponsor}%
- % \DescribeMacro{\grantnum}%
- % All financial support \emph{must} be listed using the commands
- % \cs{grantsponsor} and \cs{grantnum}. These commands tell the
- % postprocessing software about the granting organization and
- % grant. The format of these commands is the following:
- % \begin{quote}
- % \cs{grantsponsor}\marg{sponsorID}\marg{name}\marg{url}\\
- % \cs{grantnum}\oarg{url}\marg{sponsorID}\marg{number}.
- % \end{quote}
- % Here \marg{sponsorID} is the unique ID used to match grants to
- % sponsors, \marg{name} is the name of the sponsor, \marg{url} is its
- % URL, and \marg{number} is the grant number. The \marg{sponsorID} of
- % the \cs{grantnum} command must correspond to the \marg{sponsorID} of a
- % \cs{grantsponsor} command. Some awards have their own web pages,
- % which you can include using the optional argument of the \cs{grantnum}
- % command.
- %
- % At present \marg{sponsorID} is chosen by the authors and can be an
- % arbitrary key in the same way the label of a \cs{cite} is arbitrarily
- % chosen. There might be a change to this policy if the ACM decides to
- % create a global database of sponsoring organizations.
- %
- % Example:
- % \begin{verbatim}
- % \begin{acks}
- % The authors would like to thank Dr. Yuhua Li for providing the
- % matlab code of the \textit{BEPS} method.
- %
- % The authors would also like to thank the anonymous referees for
- % their valuable comments and helpful suggestions. This work is
- % supported by the \grantsponsor{GS501100001809}{National Natural
- % Science Foundation of
- % China}{https://doi.org/10.13039/501100001809} under Grant
- % No.:~\grantnum{GS501100001809}{61273304}
- % and~\grantnum[http://www.nnsf.cn/youngscientists]{GS501100001809}{Young
- % Scientists' Support Program}.
- % \end{acks}
- % \end{verbatim}
- %
- %
- %\subsection{Bibliography}
- %\label{sec:ug_bibliography}
- %
- % The ACM uses the |natbib| package for formatting references and
- % the Bib\TeX\ style file \path{ACM-Reference-Format.bst} for Bib\TeX\
- % processing. You can disable loading of |natbib| using the
- % option |natbib=false| in \cs{documentclass}. However, it is not
- % recommended, as well as the use of Bib\TeX\ styles other than
- % \path{ACM-Reference-Format.bst}, and may delay the processing of the
- % manuscript.
- %
- %
- % \DescribeMacro{\citestyle}%
- % If you use |natbib|, you can select one of two predefined citation
- % styles using the command \cs{citestyle}: the author-year format
- % |acmauthoryear| or the numeric format |acmnumeric|. For example,
- % \begin{verbatim}
- % \citestyle{acmauthoryear}
- % \end{verbatim}
- % Note that numeric citations are the default mode for most formats.
- %
- % \DescribeMacro{\setcitestyle}%
- % You can further customize |natbib| using
- % the \cs{setcitestyle} command, for example,
- % \begin{verbatim}
- % \setcitestyle{numbers,sort&compress}
- % \end{verbatim}
- %
- % One of the more common versions is
- % \begin{verbatim}
- % \setcitestyle{nosort}
- % \end{verbatim}
- % It is useful if you do not like the way |natbib| sorts citation
- % lists.
- %
- % If you use |natbib|, then commands like \cs{citep} and
- % \cs{citeauthor} are automatically supported. The command
- % \cs{shortcite} is the same as \cs{cite} in numerical mode and cites
- % the year in author-date mode.
- %
- % Note that before version~1.48 the command \cs{citeyear} put the year
- % in parentheses. In version~1.48 and later it produces just the
- % year; the command \cs{citeyearpar} can be used to emulate its old
- % behavior.
- %
- % There are several customized \BibTeX\ entry types and fields in the ACM
- % style file \path{ACM-Reference-Format.bst} that you may want to be
- % aware of.
- %
- % The style supports the fields \path{doi} and \path{url}, for example,
- % \begin{verbatim}
- % doi = "10.1145/1188913.1188915",
- % url = "http://ccrma.stanford.edu/~jos/bayes/bayes.pdf",
- % \end{verbatim}
- %
- % The style supports the arXiv-recommended fields \path{eprint} and
- % (optionally) \path{primaryclass}, for example,
- % \begin{verbatim}
- % eprint = "960935712",
- % primaryclass = "cs",
- % \end{verbatim}
- % See the examples at \url{http://arxiv.org/hypertex/bibstyles/}.
- %
- % There are several special entry types. Types \path{online} and
- % \path{game} are used for Web pages and games, for example,
- % \begin{verbatim}
- % @online{Thornburg01,
- % author = "Harry Thornburg",
- % year = "2001",
- % title = "Introduction to Bayesian Statistics",
- % url = "http://ccrma.stanford.edu/~jos/bayes/bayes.html",
- % month = mar,
- % lastaccessed = "March 2, 2005",
- % }
- % \end{verbatim}
- % Entry types \path{artifactsoftware}, \path{artifactdataset}
- % (with synonyms \path{software} and \path{dataset}) can be used to
- % cite software artifacts and datasets, for example,
- % \begin{verbatim}
- % @ArtifactSoftware{R,
- % title = {R: A Language and Environment for Statistical Computing},
- % author = {{R Core Team}},
- % organization = {R Foundation for Statistical Computing},
- % address = {Vienna, Austria},
- % year = {2019},
- % url = {https://www.R-project.org/},
- %}
- % @ArtifactDataset{UMassCitations,
- % author = {Sam Anzaroot and Andrew McCallum},
- % title = {{UMass} Citation Field Extraction Dataset},
- % year = 2013,
- % url =
- % {http://www.iesl.cs.umass.edu/data/data-umasscitationfield},
- % lastaccessed = {May 27, 2019}
- % }
- % \end{verbatim}
- %
- %
- % For these entry types you can use the \path{lastaccessed} field to add
- % the access date for the URL.
- %
- %
- %
- % There are two ways to enter video or audio sources in the
- % bibliograpy corresponding to two different possibilies. For
- % standalone sources available online, you can use an \path{online}
- % entry and set its \path{howpublished} field. For example,
- % \begin{verbatim}
- % @online{Obama08,
- % author = "Barack Obama",
- % year = "2008",
- % title = "A more perfect union",
- % howpublished = "Video",
- % day = "5",
- % url = "http://video.google.com/videoplay?docid=6528042696351994555",
- % month = mar,
- % lastaccessed = "March 21, 2008",
- % }
- % \end{verbatim}
- %
- % For sources available as attachments to conference proceedings
- % and similar documents, you can use the usual \path{inproceedings}
- % entry type and set its \path{howpublished} field:
- % \begin{verbatim}
- % @Inproceedings{Novak03,
- % author = "Dave Novak",
- % title = "Solder man",
- % booktitle = "ACM SIGGRAPH 2003 Video Review on Animation theater Program",
- % year = "2003",
- % publisher = "ACM Press",
- % address = "New York, NY",
- % pages = "4",
- % month = "March 21, 2008",
- % doi = "10.9999/woot07-S422",
- % howpublished = "Video",
- % }
- % \end{verbatim}
- %
- % Sometimes you need to cite a complete issue of a journal. The
- % \path{periodical} entry type is intended for this:
- % \begin{verbatim}
- % @periodical{JCohen96,
- % key = "Cohen",
- % editor = "Jacques Cohen",
- % title = "Special issue: Digital Libraries",
- % journal = "Communications of the {ACM}",
- % volume = "39",
- % number = "11",
- % month = nov,
- % year = "1996",
- % }
- % \end{verbatim}
- %
- % If you do not know the year of publication, the style will add
- % ``[n.\,d.]'' (for ``no date'') to the entry.
- %
- % If you do not know the author (this is often the case for online
- % entries), use the |key| field to add a key for sorting and citations,
- % for example,
- % \begin{verbatim}
- % @online{TUGInstmem,
- % key = {TUG},
- % year = 2017,
- % title = "Institutional members of the {\TeX} Users Group",
- % url = "http://wwtug.org/instmem.html",
- % lastaccessed = "May 27, 2017",
- % }
- % \end{verbatim}
- %
- % A note about sorting. The current ACM bibliography styles always
- % sort the entries according to authors names and publication year.
- % There is a controversy about sorting names with ``von'' or ``van''
- % part: should Ludwig van Beethoven be sorted under ``V'' or under
- % ``B''? The American practice is to use ``van'' in sorting, i.e. to
- % file van Beethoven under ``V''. However, some authorities recommend
- % to sort Dutch persons according to their last names (see
- % e.g. \url{https://www.ifla.org/files/assets/cataloguing/pubs/names-of-persons_1996.pdf}).
- % While I do not want to take a part in this dispute, I would like to
- % point to the old ``noopsort'' trick by Oren Patashnik. Add to the
- % \texttt{.bib} file the line
- % \begin{verbatim}
- % @PREAMBLE{"\providecommand{\noopsort}[1]{}"}
- % \end{verbatim}
- % and then encode the author as
- % \begin{verbatim}
- % author = {Ludwig {\noopsort{Beethoven}}van Beethoven},
- % \end{verbatim}
- % This will make the author to be sorted as ``Beethoven'' rather than
- % ``van Beethoven''.
- %
- %\subsection{Colors}
- %\label{sec:ug_colors}
- %
- % While printed ACM publications are usually black and white, |screen|
- % mode allows the use of colors. The ACM classes pre-define several
- % colors according to~\cite{ACMIdentityStandards}: |ACMBlue|,
- % |ACMYellow|, |ACMOrange|, |ACMRed|, |ACMLightBlue|, |ACMGreen|,
- % |ACMPurple| and |ACMDarkBlue|. You can use them in color
- % assignments.
- %
- % The ACM provides the following recommendation on color use.
- %
- % The most accessible approach would be to ensure that your article is
- % still readable when printed in greyscale. The most notable reasons
- % for this are:
- % \begin{enumerate}
- % \item The most common type of inherited Color Vision Deficiency
- % (CVD) is red-green (in which similar-brightness colors that differ
- % only in their amounts of red or green are often confused), and it
- % affects up to 8\% of males and 0.5\% of females of Northern European
- % descent.
- % \item The most common type of acquired Color Vision Deficiency (CVD)
- % is blue-yellow (including mild cases for many older adults).
- % \item Most printing is in black and white.
- % \item Situational impairments (e.g., bright sunlight shining on a
- % mobile screen) tend to reduce the entire color gamut, reducing color
- % discriminability.
- % \end{enumerate}
- %
- % \textbf{Note:} It is \emph{not} safe to encode information using
- % only variations in color (i.e., only differences in hue and/or
- % saturation) as there is bound to be someone affected!
- %
- % To ensure that you are using the most accessible colors, the ACM
- % recommends that you choose sets of colors to help ensure suitable
- % variations in when printed in greyscale by using either of the following tools:
- % \begin{enumerate}
- % \item ColourBrewer: \url{http://colorbrewer2.org/}
- % \item ACE: The Accessible Colour Evaluator:
- % \url{http://daprlab.com/ace/} for designing WCAG 2.0 compliant
- % palettes.
- % \end{enumerate}
- %
- %
- %\subsection{Other notable packages and typographic remarks}
- %\label{sec:ug_other}
- %
- % Several other packages are recommended for specialized tasks.
- %
- % The package |subcaption|~\cite{Sommerfeldt13:Subcaption} is
- % recommended for complex figures with several subplots or subfigures
- % that require separate subcaptioning. The packages
- % |nomencl|~\cite{Nomencl} and
- % |glossaries|~\cite{Talbot16:Glossaries} can be used for the
- % automatic creation of the lists of symbols and concepts used.
- %
- %
- % By default |acmart| prevents all widows and orphans (i.e., lonely
- % lines at the beginning or end of the page) and hyphenation at
- % the end of the page. This is done by the rather strict settings
- % \begin{verbatim}
- % \widowpenalty=10000
- % \clubpenalty=10000
- % \brokenpenalty=10000
- % \end{verbatim}
- % However, this may lead to frustrating results when the authors must
- % obey a page limit. Setting these penalties to smaller values may
- % help if you absolutely need to.
- %
- % Another problem might be the too strict line breaking rules. Again,
- % a strategically placed \cs{sloppy} command or putting the
- % problematic paragraph inside \texttt{sloppypar} environment might
- % help---but beware, the results might be, well, sloppy.
- %
- % Note that the uppercasing in section titles is done using
- % the |textcase| package~\cite{Carlisle04:Textcase}, so the command
- % \cs{NoCaseChange} inside the title may help to prevent extraneous
- % uppercasing.
- %
- %
- %
- %\subsection{Disabled or forbidden commands}
- %\label{sec:ug_disabled}
- %
- % The goal of |acmart| package is to provide a uniform look and feel
- % for ACM publications. Accordingly, a number of commands is
- % forbidden or disabled in |acmart|.
- %
- % You may \emph{not} put several authors or several e-mails into a
- % \cs{author} or \cs{email} command. This may lead to errors or
- % warning.
- %
- % You cannot change \cs{baselinestretch} in your document: this
- % produces an error.
- %
- % You should not abuse the command \cs{vspace}: this command may
- % disturb the typesetting of ACM papers.
- %
- %\subsection{A note for wizards: \texttt{acmart-preload-hook.tex}}
- %\label{sec:ug_preload}
- %
- % Sometimes you need to change the behavior of |acmart|. The
- % usual way to do this is to redefine commands in the preamble.
- % However, these definitions are executed \emph{after} |acmart| is
- % loaded and certain decisions are made. This presents a number of
- % problems.
- %
- % For example, one may want to use the |titletoc| package with |acmart|.
- % This package should be loaded before |hyperref|. However, since
- % |acmart| loads |hyperref| itself, the line |\usepackage{titletoc}|
- % in the preamble will lead to grief (see
- % \url{http://tex.stackexchange.com/questions/357265/using-titletoc-with-acm-acmart-style}).
- %
- % Another example is passing options to a package. Suppose you want to
- % use the |dvipsnames| option of the |xcolor| package. Normally you cannot do
- % this because |acmart| loads this package itself without options.
- %
- % The file |acmart-preload-hook.tex| can be used to solve these
- % problems. If this file exists, it will be processed before any other
- % package. You can use this file to load packages or pass options to
- % them. For example, if you put in this file
- % \begin{verbatim}
- % \let\LoadClassOrig\LoadClass
- % \renewcommand\LoadClass[2][]{\LoadClassOrig[#1]{#2}%
- % \usepackage{titletoc}}
- % \end{verbatim}
- % then |titletoc| will be loaded before |hyperref|. If you put in
- % this file
- % \begin{verbatim}
- % \PassOptionsToPackage{dvipsnames}{xcolor}
- % \end{verbatim}
- % you will pass |dvipsnames| to |xcolor|.
- %
- % \textbf{Important note.} This hook makes it too easy to create a
- % manuscript that is not acceptable by the ACM. It is even easier to
- % create a file that cannot be compiled. So please do not use it
- % \emph{unless you know what you are doing.} And if you use it,
- % \emph{do not ask for support.} If you decide to use this hook, you
- % are on your own.
- %
- %
- %\subsection{Currently supported publications}
- %\label{sec:pubs}
- %
- %\bgroup\centering
- % \begin{longtable}{>{\ttfamily}p{0.2\textwidth}@{}p{0.8\textwidth}}
- % \caption{ACM publications and arguments of the \cs{acmJournal}
- % command}
- % \label{tab:pubs}\\
- % \toprule
- % \normalfont Abbreviation & Publication \\
- % \midrule
- % \endfirsthead
- % \caption[]{ACM publications and arguments of the \cs{acmJournal}
- % command (continued)}\\
- % \toprule
- % \normalfont Abbreviation & Publication \\
- % \midrule
- % \endhead
- % \bottomrule
- % \endfoot
- % CIE & ACM Computers in Entertainment \\
- % CSUR & ACM Computing Surveys\\
- % DGOV & Digital Government: Research and Practice \\
- % DTRAP & Digital Threats: Research and Practice\\
- % HEALTH & ACM Transactions on Computing for Healthcare\\
- % IMWUT & PACM on Interactive, Mobile, Wearable and Ubiquitous
- % Technologies\\
- % JACM & Journal of the ACM \\
- % JDIQ & ACM Journal of Data and Information Quality \\
- % JEA & ACM Journal of Experimental Algorithmics \\
- % JERIC & ACM Journal of Educational Resources in Computing\\
- % JETC & ACM Journal on Emerging Technologies in Computing Systems \\
- % JOCCH & ACM Journal on Computing and Cultural Heritage \\
- % PACMCGIT & Proceedings of the ACM on Computer Graphics and
- % Interactive Techniques\\
- % PACMHCI & PACM on Human-Computer Interaction\\
- % PACMPL & PACM on Programming Languages \\
- % POMACS & PACM on Measurement and Analysis of Computing Systems \\
- % TAAS & ACM Transactions on Autonomous and Adaptive Systems\\
- % TACCESS & ACM Transactions on Accessible Computing\\
- % TACO & ACM Transactions on Architecture and Code Optimization \\
- % TALG & ACM Transactions on Algorithms \\
- % TALLIP & ACM Transactions on Asian and Low-Resource Language
- % Information Processing\\
- % TAP & ACM Transactions on Applied Perception \\
- % TCPS & ACM Transactions on Cyber-Physical Systems\\
- % TDS & ACM Transactions on Data Science\\
- % TEAC & ACM Transactions on Economics and Computation\\
- % TECS & ACM Transactions on Embedded Computing Systems \\
- % TELO & ACM Transactions on Evolutionary Learning \\
- % THRI & ACM Transactions on Human-Robot Interaction\\
- % TIIS & ACM Transactions on Interactive Intelligent Systems\\
- % TIOT & ACM Transactions on Internet of Things \\
- % TISSEC & ACM Transactions on Information and System Security\\
- % TIST & ACM Transactions on Intelligent Systems and Technology \\
- % TKDD & ACM Transactions on Knowledge Discovery from Data\\
- % TMIS & ACM Transactions on Management Information Systems\\
- % TOCE & ACM Transactions on Computing Education\\
- % TOCHI & ACM Transactions on Computer-Human Interaction\\
- % TOCL & ACM Transactions on Computational Logic\\
- % TOCS & ACM Transactions on Computer Systems \\
- % TOCT & ACM Transactions on Computation Theory \\
- % TODAES & ACM Transactions on Design Automation of Electronic Systems\\
- % TODS & ACM Transactions on Database Systems\\
- % TOG & ACM Transactions on Graphics\\
- % TOIS & ACM Transactions on Information Systems\\
- % TOIT & ACM Transactions on Internet Technology\\
- % TOMACS & ACM Transactions on Modeling and Computer Simulation \\
- % TOMM & ACM Transactions on Multimedia Computing, Communications
- % and Applications \\
- % TOMPECS & ACM Transactions on Modeling and Performance Evaluation
- % of Computing Systems\\
- % TOMS & ACM Transactions on Mathematical Software\\
- % TOPC & ACM Transactions on Parallel Computing\\
- % TOPLAS & ACM Transactions on Programming Languages and Systems\\
- % TOPS & ACM Transactions on Privacy and Security\\
- % TOS & ACM Transactions on Storage\\
- % TOSEM & ACM Transactions on Software Engineering and Methodology\\
- % TOSN & ACM Transactions on Sensor Networks\\
- % TQC & ACM Transactions on Quantum Computing\\
- % TRETS & ACM Transactions on Reconfigurable Technology and Systems\\
- % TSAS & ACM Transactions on Spatial Algorithms and Systems\\
- % TSC & ACM Transactions on Social Computing\\
- % TSLP & ACM Transactions on Speech and Language Processing \\
- % TWEB & ACM Transactions on the Web\\
- % \end{longtable}
- %\egroup
- %
- % Besides the publications listed in Table~\ref{tab:pubs}, there is a
- % special ``publication'' type FACMP, a forthcoming ACM publication,
- % reserved for new journals which are not assigned an ISSN yet.
- %
- % \StopEventually{
- % \clearpage
- % \bibliography{acmart}
- % \bibliographystyle{unsrt}}
- %
- % \clearpage
- %
- %
- %\section{Implementation}
- %\label{sec:impl}
- %
- %\subsection{Identification}
- %\label{sec:ident}
- %
- % We start with a declaration of who we are. Most |.dtx| files put
- % driver code in a separate~|.drv| driver file. We roll this code into the
- % main file and use the pseudo-guard |<gobble>| for it.
- % \begin{macrocode}
- %<class>\NeedsTeXFormat{LaTeX2e}
- %<*gobble>
- \ProvidesFile{acmart.dtx}
- %</gobble>
- %<class>\ProvidesClass{acmart}
- [2019/10/19 v1.65 Typesetting articles for the Association for Computing Machinery]
- % \end{macrocode}
- %
- % \changes{v1.00}{2016/04/14}{First released version}
- % \changes{v1.01}{2016/04/18}{Defined ACM colors}
- % \changes{v1.01}{2016/04/18}{Changed hyperref colors in screen mode
- % (closes \url{https://github.com/borisveytsman/acmart/issues/1})}
- % \changes{v1.01}{2016/04/18}{Set headheight to 1pc for all formats
- % (closes \url{https://github.com/borisveytsman/acmart/issues/5})}
- % \changes{v1.02}{2016/04/21}{Documentation changes
- % (closes \url{https://github.com/borisveytsman/acmart/issues/13})}
- % \changes{v1.02}{2016/04/21}{Added TOPS and TSC
- % (closes \url{https://github.com/borisveytsman/acmart/issues/12})}
- % \changes{v1.03}{2016/04/22}{Added authorversion option
- % (closes \url{https://github.com/borisveytsman/acmart/issues/9})}
- % \changes{v1.03}{2016/04/22}{Added anonsuppress environment}
- % \changes{v1.04}{2016/04/26}{Updated bibliography for siggraph}
- % \changes{v1.05}{2016/04/27}{Patched \cs{setcitestyle} command;
- % closes \url{https://github.com/borisveytsman/acmart/issues/19}}
- % \changes{v1.05}{2016/04/27}{Added processing doi numbers for
- % acmsiggraph and doi numbers for sigproc.bib}
- % \changes{v1.08}{2016/05/13}{SIGPLAN reformatting by Matthew Fluet}
- % \changes{v1.08}{2016/05/13}{Typos corrected (Tobias Pape)}
- % \changes{v1.09}{2016/05/18}{Revert SIGPLAN caption rules}
- % \changes{v1.11}{2016/05/27}{Customization of ACM theorem styles and
- % proof environment by Matthew Fluet}
- % \changes{v1.12}{2016/05/30}{Documentation updates}
- % \changes{v1.14}{2016/06/09}{\cs{citestyle} updates (Matthew Fluet)}
- % \changes{v1.16}{2016/07/07}{Formatting header/footer (Matthew
- % Fluet)}
- % \changes{v1.18}{2016/07/10}{Natbib is now the default for all
- % formats}
- % \changes{v1.19}{2016/07/28}{Include 'Abstract', 'Acknowledgements',
- % and 'References' in PDF bookmarks (Matthew Fluet)}
- % \changes{v1.20}{2016/08/06}{Bug fixes for bst}
- % \changes{v1.22}{2016/09/25}{More bibliography changes for Aptara}
- % \changes{v1.23}{2016/11/04}{Add PACMPL journal option}
- % \changes{v1.26}{2016/12/24}{Corrected \cs{shortcite} bug}
- % \changes{v1.26}{2016/12/24}{Documentation typos fixed (thanks to
- % Stephen Spencer)}
- % \changes{v1.30}{2017/02/04}{Bibtex style now recognizes https:// in
- % doi}
- % \changes{v1.31}{2017/03/04}{Documentation changes}
- % \changes{v1.32}{2017/03/07}{Format siggraph is now obsolete}
- % \changes{v1.32}{2017/03/07}{Added POMACS journal option}
- % \changes{v1.33}{2017/03/12}{BibTeX crossref bug corrected}
- % \changes{v1.33}{2017/03/18}{BibTeX comma before articleno bug
- % corrected}
- % \changes{v1.33}{2017/03/18}{BibTeX numpages bug corrected}
- % \changes{v1.33}{2017/03/28}{Added acmart-preload-hook}
- % \changes{v1.33}{2017/03/33}{Documentation updates}
- % \changes{v1.35}{2017/04/23}{BibTeX bug fixed: et al.}
- % \changes{v1.36}{2017/05/12}{Added the possibility to adjust number of
- % author boxes per row in conference formats}
- % \changes{v1.37}{2017/05/13}{Set \cs{normalparindent}; Reduce list
- % indentation (Matthew Fluet)}%
- % \changes{v1.38}{2017/05/13}{Increase default font size for SIGPLAN}
- % \changes{v1.40}{2017/05/27}{Bibliography changes}
- % \changes{v1.40}{2017/06/15}{Added package cleveref}
- % \changes{v1.40}{2017/06/16}{Added new copyright version:
- % licensedcagov}
- % \changes{v1.41}{2017/06/25}{Added new badges}
- % \changes{v1.42}{2017/07/02}{Deleted ACM badges}
- % \changes{v1.44}{2017/07/30}{Added package refcount}
- % \changes{v1.44}{2017/07/30}{Deleted package cleveref}
- % \changes{v1.44}{2017/07/30}{Put theorem defs in a separate style}
- % \changes{v1.46}{2017/08/17}{Bst file bug fixes: label width is
- % calculated correctly}
- % \changes{v1.46}{2017/08/25}{Added etoolbox}
- % \changes{v1.46}{2017/08/29}{Restore theorem defs to class file}
- % \changes{v1.47}{2017/08/31}{New journal: THRI}
- % \changes{v1.48}{2017/09/09}{Typos fixed (Jamie Davis)}
- % \changes{v1.48}{2017/09/16}{Code prettying (Michael D.~Adams)}
- % \changes{v1.48}{2017/09/23}{Misc entries in the bibliography no
- % longer produce a separate date}
- % \changes{v1.48}{2017/10/01}{Initial support for Biblatex (Daniel Thomas)}
- % \changes{1.48}{2017/10/14}{Bib code cleanup (Zack Weinberg)}
- % \changes{1.48}{2017/12/03}{Documentation update (siggraph)}
- % \changes{1.49}{2018/01/24}{New journal: DTRAP}
- % \changes{1.53}{2018/04/14}{New journals: PACMCGIT, TIOT, TDSCI}
- % \changes{1.53}{2018/04/14}{Rearranged docs}
- % \changes{1.54}{2018/06/17}{Moved footnote stuff before hyperref call
- % (Ross Moore)}
- % \changes{1.56}{2018/11/11}{Documented \cs{Description}}
- % \changes{1.57}{2018/12/16}{Booktabs package is now the default}
- % \changes{1.58}{2019/02/09}{Changes in samples (Enrico Gregorio)}
- % \changes{1.58}{2019/03/29}{New journal: HEALTH. TDS is renamed to
- % TDSCI}
- % \changes{1.60}{2019/04/22}{New option: urlbreakonhyphens}
- % \changes{1.62}{2019/07/31}{New journal: TELO}
- % \changes{1.63}{2019/08/04}{New journal: TQUANT}
- % \changes{1.63}{2019/08/04}{New journal: FACMP}
- % \changes{1.63a}{2019/08/05}{Move: TQUANT to TQC}
- % \changes{1.64}{2019/08/17}{Putting abstract after \cs{maketitle} now
- % causes an error}
- % \changes{1.65}{2019/10/19}{New journal: DGOV}
- %
- % And the driver code:
- % \begin{macrocode}
- %<*gobble>
- \documentclass{ltxdoc}
- \usepackage{array,booktabs,amsmath,graphicx,fancyvrb,tabularx, longtable}
- \usepackage[tt=false, type1=true]{libertine}
- \usepackage[varqu]{zi4}
- \usepackage[libertine]{newtxmath}
- \usepackage[tableposition=top]{caption}
- \usepackage{hypdoc}
- \PageIndex
- \CodelineIndex
- \RecordChanges
- \EnableCrossrefs
- \begin{document}
- \DocInput{acmart.dtx}
- \end{document}
- %</gobble>
- %<*class>
- \def\@classname{acmart}
- % \end{macrocode}
- %
- %
- %
- %\subsection{Preload hook}
- %\label{sec:preload}
- %
- % We preload |acmart-preload-hook|:
- % \begin{macrocode}
- \InputIfFileExists{acmart-preload-hook.tex}{%
- \ClassWarning{\@classname}{%
- I am loading acmart-preload-hook.tex. You are fully responsible
- for any problems from now on.}}{}
- % \end{macrocode}
- %
- % \subsection{Options}
- % \label{sec:options}
- %
- % We need |xkeyval| since some of our options may have values:
- % \begin{macrocode}
- \RequirePackage{xkeyval}
- % \end{macrocode}
- %
- % We use |xstring| to check whether user input is valid
- % \begin{macrocode}
- \RequirePackage{xstring}
- % \end{macrocode}
- %
- %
- %
- % \begin{macro}{format}
- % The possible formats
- % \begin{macrocode}
- \define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
- manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
- sigplan, sigchi, sigchi-a}[manuscript]{}{%
- \ClassError{\@classname}{The option format must be manuscript,
- acmsmall, acmlarge, acmtog, sigconf, siggraph,
- sigplan, sigchi or sigchi-a}}
- \def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
- \@DeclareACMFormat{manuscript}
- \@DeclareACMFormat{acmsmall}
- \@DeclareACMFormat{acmlarge}
- \@DeclareACMFormat{acmtog}
- \@DeclareACMFormat{sigconf}
- \@DeclareACMFormat{siggraph}
- \@DeclareACMFormat{sigplan}
- \@DeclareACMFormat{sigchi}
- \@DeclareACMFormat{sigchi-a}
- \ExecuteOptionsX{format}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@screen}
- % Whether we use screen mode
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
- \if@ACM@screen
- \PackageInfo{\@classname}{Using screen mode}%
- \else
- \PackageInfo{\@classname}{Not using screen mode}%
- \fi}{\PackageError{\@classname}{The option screen can be either true or
- false}}
- \ExecuteOptionsX{screen=false}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@urlbreakonhyphens}
- % \changes{1.60}{2019/04/22}{introduced macro}
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{%
- \if@ACM@urlbreakonhyphens
- \PackageInfo{\@classname}{Using breaking urls on hyphens}%
- \else
- \PackageInfo{\@classname}{Not breaking urls on hyphens}%
- \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or
- false}}
- \ExecuteOptionsX{urlbreakonhyphens=true}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@acmthm}
- % \changes{v1.44}{2017/07/30}{Added macro}
- % \changes{v1.46}{2017/08/29}{Modified description}
- % Whether we define theorem-like environments.
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
- \if@ACM@acmthm
- \PackageInfo{\@classname}{Requiring acmthm}%
- \else
- \PackageInfo{\@classname}{Suppressing acmthm}%
- \fi}{\PackageError{\@classname}{The option acmthm can be either true or
- false}}
- \ExecuteOptionsX{acmthm=true}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\if@ACM@review}
- % \changes{v1.48}{2017/09/09}{Review mode now switches on folios}
- % Whether we use review mode
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
- \if@ACM@review
- \PackageInfo{\@classname}{Using review mode}%
- \AtBeginDocument{\@ACM@printfoliostrue}%
- \else
- \PackageInfo{\@classname}{Not using review mode}%
- \fi}{\PackageError{\@classname}{The option review can be either true or
- false}}
- \ExecuteOptionsX{review=false}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@authorversion}
- % \changes{v1.03}{2016/04/22}{Added macro}
- % Whether we use author's-version mode
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
- \if@ACM@authorversion
- \PackageInfo{\@classname}{Using authorversion mode}%
- \else
- \PackageInfo{\@classname}{Not using authorversion mode}%
- \fi}{\PackageError{\@classname}{The option authorversion can be either true or
- false}}
- \ExecuteOptionsX{authorversion=false}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@nonacm}
- % \changes{v1.54}{2018/05/08}{Added macro}
- % Special option for non-ACM publications
- % using the ACM typesetting options.
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{%
- \if@ACM@nonacm
- \PackageInfo{\@classname}{Using nonacm mode}%
- \AtBeginDocument{\@ACM@printacmreffalse}%
- % in 'nonacm' mode we disable the "ACM Reference Format"
- % printing by default, but this can be re-enabled by the
- % user using \settopmatter{printacmref=true}
- \else
- \PackageInfo{\@classname}{Not using nonacm mode}%
- \fi}{\PackageError{\@classname}{The option nonacm can be either true or
- false}}
- \ExecuteOptionsX{nonacm=false}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@balance}
- % \changes{v1.57}{2018/12/16}{Added macro}
- % Whether to balance the last page
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{%
- \PackageError{\@classname}{The option balance can be either true or
- false}}
- \ExecuteOptionsX{balance}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\if@ACM@natbib@override}
- % \changes{v1.12}{2016/05/30}{Added macro}
- % \changes{v1.33}{2017/03/28}{Deleted macro}
- % This macro is no longer used.
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@natbib}
- % Whether we use |natbib| mode
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
- \if@ACM@natbib
- \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
- \else
- \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
- \fi}{\PackageError{\@classname}{The option natbib can be either true or
- false}}
- \ExecuteOptionsX{natbib=true}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\if@ACM@anonymous}
- % Whether we use anonymous mode
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
- \if@ACM@anonymous
- \PackageInfo{\@classname}{Using anonymous mode}%
- \else
- \PackageInfo{\@classname}{Not using anonymous mode}%
- \fi}{\PackageError{\@classname}{The option anonymous can be either true or
- false}}
- \ExecuteOptionsX{anonymous=false}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\if@ACM@timestamp}
- % \changes{v1.33}{2017/03/10}{Added macro (Michael D.~Adams)}
- % Whether we use timestamp mode
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
- \if@ACM@timestamp
- \PackageInfo{\@classname}{Using timestamp mode}%
- \else
- \PackageInfo{\@classname}{Not using timestamp mode}%
- \fi}{\PackageError{\@classname}{The option timestamp can be either true or
- false}}
- \ExecuteOptionsX{timestamp=false}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\if@ACM@authordraft}
- % \changes{v1.33}{2017/03/28}{Added macro}
- % \changes{v1.36}{2017/05/13}{Corrected typo, thanks to bargteil}
- % Whether we use author-draft mode
- % \begin{macrocode}
- \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
- \if@ACM@authordraft
- \PackageInfo{\@classname}{Using authordraft mode}%
- \@ACM@timestamptrue
- \@ACM@reviewtrue
- \else
- \PackageInfo{\@classname}{Not using authordraft mode}%
- \fi}{\PackageError{\@classname}{The option authordraft can be either true or
- false}}
- \ExecuteOptionsX{authordraft=false}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\ACM@fontsize}
- % The font size to pass to the base class
- % \begin{macrocode}
- \def\ACM@fontsize{}
- \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
- \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
- \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
- \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \changes{v1.01}{2016/04/18}{Explicitly put draft option
- % (closes \url{https://github.com/borisveytsman/acmart/issues/4})}
- %
- % \begin{macrocode}
- \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
- \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
- \ProcessOptionsX
- \ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
- % \end{macrocode}
- %
- %
- %
- %\subsection{Setting switches}
- %\label{sec:switches}
- %
- % \begin{macro}{\if@ACM@manuscript}
- % Whether we use manuscript mode
- % \begin{macrocode}
- \newif\if@ACM@manuscript
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@journal}
- % There are two kinds of publications: journals and books
- % \begin{macrocode}
- \newif\if@ACM@journal
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\if@ACM@journal@bibstrip}
- % \changes{v1.59}{2019/04/20}{Introduced macro}
- % Sometimes ACM wants a journal-like publication to have conference
- % information in the bibstrip and vice versa, so we have an additional
- % switch.
- % \begin{macrocode}
- \newif\if@ACM@journal@bibstrip
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@sigchiamode}
- % The formatting of SIGCHI extended abstracts is quite unusual. We have a
- % special switch for them.
- % \begin{macrocode}
- \newif\if@ACM@sigchiamode
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % Setting up switches
- % \begin{macrocode}
- \ifnum\ACM@format@nr=5\relax % siggraph
- \ClassWarning{\@classname}{The format siggraph is now obsolete.
- I am switching to sigconf.}
- \setkeys{acmart.cls}{format=sigconf}
- \fi
- \ifnum\ACM@format@nr=0\relax
- \@ACM@manuscripttrue
- \else
- \@ACM@manuscriptfalse
- \fi
- \@ACM@sigchiamodefalse
- \ifcase\ACM@format@nr
- \relax % manuscript
- \@ACM@journaltrue
- \or % acmsmall
- \@ACM@journaltrue
- \or % acmlarge
- \@ACM@journaltrue
- \or % acmtog
- \@ACM@journaltrue
- \or % sigconf
- \@ACM@journalfalse
- \or % siggraph
- \@ACM@journalfalse
- \or % sigplan
- \@ACM@journalfalse
- \or % sigchi
- \@ACM@journalfalse
- \or % sigchi-a
- \@ACM@journalfalse
- \@ACM@sigchiamodetrue
- \fi
- \if@ACM@journal
- \@ACM@journal@bibstriptrue
- \else
- \@ACM@journal@bibstripfalse
- \fi
- % \end{macrocode}
- %
- %
- %
- %\subsection{Loading the base class and package}
- %\label{sec:loading}
- %
- % \changes{v1.13}{2016/06/06}{Increased font size for ACM Large}
- % \changes{v1.38}{2017/05/13}{Increase default font size for SIGPLAN}
- %
- %
- % At this point we either have \cs{ACM@fontsize} or use defaults
- % \begin{macrocode}
- \ifx\ACM@fontsize\@empty
- \ifcase\ACM@format@nr
- \relax % manuscript
- \def\ACM@fontsize{9pt}%
- \or % acmsmall
- \def\ACM@fontsize{10pt}%
- \or % acmlarge
- \def\ACM@fontsize{10pt}%
- \or % acmtog
- \def\ACM@fontsize{9pt}%
- \or % sigconf
- \def\ACM@fontsize{9pt}%
- \or % siggraph
- \def\ACM@fontsize{9pt}%
- \or % sigplan
- \def\ACM@fontsize{10pt}%
- \or % sigchi
- \def\ACM@fontsize{10pt}%
- \or % sigchi-a
- \def\ACM@fontsize{10pt}%
- \fi
- \fi
- \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
- \LoadClass[\ACM@fontsize, reqno]{amsart}
- \RequirePackage{microtype}
- % \end{macrocode}
- %
- %
- % We need |etoolbox| for delayed code
- % \begin{macrocode}
- \RequirePackage{etoolbox}
- % \end{macrocode}
- %
- % Booktabs is now the default
- % \begin{macrocode}
- \RequirePackage{booktabs}
- % \end{macrocode}
- %
- %
- % We need |totpages| to calculate the number of pages and
- % |refcount| to use that number
- % \begin{macrocode}
- \RequirePackage{refcount}
- \RequirePackage{totpages}
- % \end{macrocode}
- %
- % The \cs{collect@body} macro in |amsmath| is defined using \cs{def}. We load
- % |environ| to access the \cs{long} version of this command
- % \begin{macrocode}
- \RequirePackage{environ}
- % \end{macrocode}
- %
- % We use |setspace| for double spacing
- % \begin{macrocode}
- \if@ACM@manuscript
- \RequirePackage{setspace}
- \onehalfspacing
- \fi
- % \end{macrocode}
- %
- % \changes{v1.40}{2017/06/05}{Added `textcase' package}
- % We need |textcase| for better upcasing
- % \begin{macrocode}
- \RequirePackage{textcase}
- % \end{macrocode}
- %
- %
- %\subsection{Citations}
- % \changes{v1.19}{2016/07/28}{Include 'References' in PDF bookmarks
- % (Matthew Fluet)}
- % \changes{v1.14}{2016/06/09}{Patched \cs{citestyle}}
- % \changes{v1.55}{2016/08/012}{Typo corrected (Zack Weinberg)}
- % We patch \cs{setcitestyle} to allow, for example,
- % \cs{setcitestyle}|{sort}| and \cs{setcitestyle}|{nosort}|. We patch
- % \cs{citestyle} to warn about undefined citation styles.
- % \begin{macrocode}
- \if@ACM@natbib
- \RequirePackage{natbib}
- \renewcommand{\bibsection}{%
- \section*{\refname}%
- \phantomsection\addcontentsline{toc}{section}{\refname}%
- }
- \renewcommand{\bibfont}{\bibliofont}
- \renewcommand\setcitestyle[1]{
- \@for\@tempa:=#1\do
- {\def\@tempb{round}\ifx\@tempa\@tempb
- \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
- \def\@tempb{square}\ifx\@tempa\@tempb
- \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
- \def\@tempb{angle}\ifx\@tempa\@tempb
- \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
- \def\@tempb{curly}\ifx\@tempa\@tempb
- \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
- \def\@tempb{semicolon}\ifx\@tempa\@tempb
- \renewcommand\NAT@sep{;}\fi
- \def\@tempb{colon}\ifx\@tempa\@tempb
- \renewcommand\NAT@sep{;}\fi
- \def\@tempb{comma}\ifx\@tempa\@tempb
- \renewcommand\NAT@sep{,}\fi
- \def\@tempb{authoryear}\ifx\@tempa\@tempb
- \NAT@numbersfalse\fi
- \def\@tempb{numbers}\ifx\@tempa\@tempb
- \NAT@numberstrue\NAT@superfalse\fi
- \def\@tempb{super}\ifx\@tempa\@tempb
- \NAT@numberstrue\NAT@supertrue\fi
- \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
- \let\bibstyle=\@gobble\fi
- \def\@tempb{bibstyle}\ifx\@tempa\@tempb
- \let\bibstyle=\@citestyle\fi
- \def\@tempb{sort}\ifx\@tempa\@tempb
- \def\NAT@sort{\@ne}\fi
- \def\@tempb{nosort}\ifx\@tempa\@tempb
- \def\NAT@sort{\z@}\fi
- \def\@tempb{compress}\ifx\@tempa\@tempb
- \def\NAT@cmprs{\@ne}\fi
- \def\@tempb{nocompress}\ifx\@tempa\@tempb
- \def\NAT@cmprs{\z@}\fi
- \def\@tempb{sort&compress}\ifx\@tempa\@tempb
- \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
- \def\@tempb{mcite}\ifx\@tempa\@tempb
- \let\NAT@merge\@ne\fi
- \def\@tempb{merge}\ifx\@tempa\@tempb
- \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
- \def\@tempb{elide}\ifx\@tempa\@tempb
- \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
- \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
- \NAT@longnamestrue\fi
- \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
- \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
- \expandafter\NAT@find@eq\@tempa=\relax\@nil
- \if\@tempc\relax\else
- \expandafter\NAT@rem@eq\@tempc
- \def\@tempb{open}\ifx\@tempa\@tempb
- \xdef\NAT@open{\@tempc}\fi
- \def\@tempb{close}\ifx\@tempa\@tempb
- \xdef\NAT@close{\@tempc}\fi
- \def\@tempb{aysep}\ifx\@tempa\@tempb
- \xdef\NAT@aysep{\@tempc}\fi
- \def\@tempb{yysep}\ifx\@tempa\@tempb
- \xdef\NAT@yrsep{\@tempc}\fi
- \def\@tempb{notesep}\ifx\@tempa\@tempb
- \xdef\NAT@cmt{\@tempc}\fi
- \def\@tempb{citesep}\ifx\@tempa\@tempb
- \xdef\NAT@sep{\@tempc}\fi
- \fi
- }%
- \NAT@@setcites
- }
- \renewcommand\citestyle[1]{%
- \ifcsname bibstyle@#1\endcsname%
- \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
- \else%
- \@latex@error{Undefined `#1' citestyle}%
- \fi
- }%
- \fi
- % \end{macrocode}
- %
- % \begin{macro}{\bibstyle@acmauthoryear}
- % \changes{v1.13}{2016/06/06}{Added macro}
- % \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle@acmauthoryear}
- % before use}
- % \changes{v1.35}{2017/04/13}{Square brackets for author-year style}
- % The default author-year format:
- % \begin{macrocode}
- \newcommand{\bibstyle@acmauthoryear}{%
- \setcitestyle{%
- authoryear,%
- open={[},close={]},citesep={;},%
- aysep={},yysep={,},%
- notesep={, }}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\bibstyle@acmnumeric}
- % \changes{v1.13}{2016/06/06}{Added macro}
- % \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle@numeric}
- % before use}
- % The default numeric format:
- % \begin{macrocode}
- \newcommand{\bibstyle@acmnumeric}{%
- \setcitestyle{%
- numbers,sort&compress,%
- open={[},close={]},citesep={,},%
- notesep={, }}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \changes{v1.28}{2017/01/07}{Corrected option natbib behavior}
- % The default is numeric:
- % \begin{macrocode}
- \if@ACM@natbib
- \citestyle{acmnumeric}
- \fi
- % \end{macrocode}
- %
- % \begin{macro}{\@startsection}
- % \changes{v1.31}{2017/03/04}{Added \cs{tochangmeasure}}
- % Before we call |hyperref|, we redefine \cs{startsection} commands to
- % their \LaTeX\ defaults since the |amsart| ones are too AMS-specific.
- % We need to do this early since we want |hyperref| to have a chance
- % to redefine them again:
- % \begin{macrocode}
- \def\@startsection#1#2#3#4#5#6{%
- \if@noskipsec \leavevmode \fi
- \par
- \@tempskipa #4\relax
- \@afterindenttrue
- \ifdim \@tempskipa <\z@
- \@tempskipa -\@tempskipa \@afterindentfalse
- \fi
- \if@nobreak
- \everypar{}%
- \else
- \addpenalty\@secpenalty\addvspace\@tempskipa
- \fi
- \@ifstar
- {\@ssect{#3}{#4}{#5}{#6}}%
- {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
- \def\@sect#1#2#3#4#5#6[#7]#8{%
- \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
- \ifnum #2>\c@secnumdepth
- \let\@svsec\@empty
- \else
- \refstepcounter{#1}%
- \protected@edef\@svsec{\@seccntformat{#1}\relax}%
- \fi
- \@tempskipa #5\relax
- \ifdim \@tempskipa>\z@
- \begingroup
- #6{%
- \@hangfrom{\hskip #3\relax\@svsec}%
- \interlinepenalty \@M #8\@@par}%
- \endgroup
- \csname #1mark\endcsname{#7}%
- \ifnum #2>\c@secnumdepth \else
- \@tochangmeasure{\csname the#1\endcsname}%
- \fi
- \addcontentsline{toc}{#1}{%
- \ifnum #2>\c@secnumdepth \else
- \protect\numberline{\csname the#1\endcsname}%
- \fi
- #7}%
- \else
- \def\@svsechd{%
- #6{\hskip #3\relax
- \@svsec #8}%
- \csname #1mark\endcsname{#7}%
- \ifnum #2>\c@secnumdepth \else
- \@tochangmeasure{\csname the#1\endcsname\space}%
- \fi
- \addcontentsline{toc}{#1}{%
- \ifnum #2>\c@secnumdepth \else
- \protect\numberline{\csname the#1\endcsname}%
- \fi
- #7}}%
- \fi
- \@xsect{#5}}
- \def\@xsect#1{%
- \@tempskipa #1\relax
- \ifdim \@tempskipa>\z@
- \par \nobreak
- \vskip \@tempskipa
- \@afterheading
- \else
- \@nobreakfalse
- \global\@noskipsectrue
- \everypar{%
- \if@noskipsec
- \global\@noskipsecfalse
- {\setbox\z@\lastbox}%
- \clubpenalty\@M
- \begingroup \@svsechd \endgroup
- \unskip
- \@tempskipa #1\relax
- \hskip -\@tempskipa
- \else
- \clubpenalty \@clubpenalty
- \everypar{}%
- \fi}%
- \fi
- \ignorespaces}
- \def\@seccntformat#1{\csname the#1\endcsname\quad}
- \def\@ssect#1#2#3#4#5{%
- \@tempskipa #3\relax
- \ifdim \@tempskipa>\z@
- \begingroup
- #4{%
- \@hangfrom{\hskip #1}%
- \interlinepenalty \@M #5\@@par}%
- \endgroup
- \else
- \def\@svsechd{#4{\hskip #1\relax #5}}%
- \fi
- \@xsect{#3}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@startsection}
- % \changes{v1.31}{2017/03/04}{Rededined macro}
- % \changes{v1.43}{2017/07/09}{Added \cs{makeatletter}}
- % The |amsart| package redefines \cs{startsection}. Here we redefine
- % it again to make the table of contents work.
- % \begin{macrocode}
- \def\@starttoc#1#2{\begingroup\makeatletter
- \setTrue{#1}%
- \par\removelastskip\vskip\z@skip
- \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
- {.5\linespacing}{\centering\contentsnamefont}{#2}%
- \@input{\jobname.#1}%
- \if@filesw
- \@xp\newwrite\csname tf@#1\endcsname
- \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
- \fi
- \global\@nobreakfalse \endgroup
- \addvspace{32\p@\@plus14\p@}%
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\l@subsection}
- % \changes{v1.40}{2017/05/27}{Redefined macro}
- % Section spacing is more generous than for |amsart|
- % \begin{macrocode}
- \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\l@subsection}
- % \changes{v1.31}{2017/03/04}{Redefined macro}
- % The spacing in |amsart| is too large
- % \begin{macrocode}
- \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
- % \end{macrocode}
- %
- % \end{macro}
- % \begin{macro}{\l@subsubsection}
- % \changes{v1.31}{2017/03/04}{Redefined macro}
- % The spacing in |amsart| is too large
- % \begin{macrocode}
- \def\l@subsubsection{\@tocline{2}{0pt}{1pc}{5pc}{}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % We need to define foonote-related stuff before the call to hyperref
- % (Ross Moore)
- % \begin{macro}{\@makefntext}
- % We do not use indentation for footnotes
- % \begin{macrocode}
- \def\@makefntext{\noindent\@makefnmark}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@footnotetext}
- % In |sigchi-a| mode our footnotes are in the margin!
- % \begin{macrocode}
- \if@ACM@sigchiamode
- \long\def\@footnotetext#1{\marginpar{%
- \reset@font\small
- \interlinepenalty\interfootnotelinepenalty
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}%
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mpfootnotetext}
- % \changes{v1.13}{2016/06/06}{Made minipage footnotes centered}
- % We want the footnotes in minipages centered:
- % \begin{macrocode}
- \long\def\@mpfootnotetext#1{%
- \global\setbox\@mpfootins\vbox{%
- \unvbox\@mpfootins
- \reset@font\footnotesize
- \hsize\columnwidth
- \@parboxrestore
- \protected@edef\@currentlabel
- {\csname p@mpfootnote\endcsname\@thefnmark}%
- \color@begingroup\centering
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@makefnmark}
- % \changes{v1.17}{2016/067/09}{Redefined}
- % AMS classes use a buggy definition of \cs{makefnmark}. We revert
- % to the standard one.
- % \begin{macrocode}
- \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % And now, |hyperref|
- % \changes{v1.28}{2017/01/07}{Got rid of warnings in pdf keywords}
- % \changes{v1.46}{2017/08/25}{Delayed hypersetup since journal options
- % may change screen mode}
- % \changes{v1.55}{2018/10/20}{Now we use purple color for links}
- % \changes{v1.58}{2019/26/01}{Suppressed \cs{addtocounter} in pdf subject}
- % \begin{macrocode}
- \let\@footnotemark@nolink\@footnotemark
- \let\@footnotetext@nolink\@footnotetext
- \RequirePackage[bookmarksnumbered,unicode]{hyperref}
- \pdfstringdefDisableCommands{%
- \def\addtocounter#1#2{}%
- \def\unskip{}%
- \def\textbullet{- }%
- \def\textrightarrow{ -> }%
- \def\footnotemark{}%
- }
- \urlstyle{rm}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \or % acmtog
- \or % sigconf
- \or % siggraph
- \or % sigplan
- \urlstyle{sf}
- \or % sigchi
- \or % sigchi-a
- \urlstyle{sf}
- \fi
- \AtEndPreamble{%
- \if@ACM@urlbreakonhyphens
- \def\do@url@hyp{\do\-}%
- \fi
- \if@ACM@screen
- \hypersetup{colorlinks,
- linkcolor=ACMPurple,
- citecolor=ACMPurple,
- urlcolor=ACMDarkBlue,
- filecolor=ACMDarkBlue}
- \else
- \hypersetup{hidelinks}
- \fi
- \hypersetup{pdflang={en},
- pdfdisplaydoctitle}}
- % \end{macrocode}
- %
- % Bibliography mangling.
- % \changes{v1.33}{2017/03/23}{Moved \cs{citename} definition for
- % non-natbib bibliography, so a package may redefine it}
- % \changes{v1.48}{2017/09/23}{\cs{citeyear} no longer behaves like
- % \cs{citeyearpar}}
- % \begin{macrocode}
- \if@ACM@natbib
- \let\citeN\cite
- \let\cite\citep
- \let\citeANP\citeauthor
- \let\citeNN\citeyearpar
- \let\citeyearNP\citeyear
- \let\citeNP\citealt
- \DeclareRobustCommand\citeA
- {\begingroup\NAT@swafalse
- \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
- \providecommand\newblock{}%
- \else
- \AtBeginDocument{%
- \let\shortcite\cite%
- \providecommand\citename[1]{#1}}
- \fi
- \newcommand\shortcite[2][]{%
- \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi}
- % \end{macrocode}
- %
- %
- % \begin{macro}{\bibliographystyle}
- % \changes{v1.13}{2016/06/06}{Redefined macro}
- % The |amsart| package redefines \cs{bibliographystyle} since it
- % prefers the AMS bibliography style. We turn it back to the
- % \LaTeX\ definition:
- % \begin{macrocode}
- \def\bibliographystyle#1{%
- \ifx\@begindocumenthook\@undefined\else
- \expandafter\AtBeginDocument
- \fi
- {\if@filesw
- \immediate\write\@auxout{\string\bibstyle{#1}}%
- \fi}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % Graphics and color.
- % \changes{1.48}{2017/10/22}{Added prologue option to xcolor}
- % \begin{macrocode}
- \RequirePackage{graphicx}
- \RequirePackage[prologue]{xcolor}
- % \end{macrocode}
- %
- % We define ACM colors according to~\cite{ACMIdentityStandards}:
- % \begin{macrocode}
- \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
- \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
- \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
- \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
- \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
- \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
- \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
- \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
- % \end{macrocode}
- %
- %
- % Author-draft mode
- % \begin{macrocode}
- \if@ACM@authordraft
- \RequirePackage{draftwatermark}
- \SetWatermarkFontSize{0.5in}
- \SetWatermarkColor[gray]{.9}
- \SetWatermarkText{\parbox{12em}{\centering
- Unpublished working draft.\\
- Not for distribution.}}
- \fi
- % \end{macrocode}
- %
- %
- %\subsection{Paper size and paragraphing}
- %\label{sec:paper}
- %
- % \changes{v1.17}{2016/07/07}{Slightly decreased margins for sigs}
- % \changes{v1.29}{2017/01/22}{Increased head to 13pt}
- % \changes{v1.40}{2017/07/15}{Added heightrounded to geometry}
- % \changes{v1.56}{2018/10/16}{Make two-column layouts flush (Philip Quinn)}
- % We use |geometry| for dimensions. Note that the present margins do not
- % depend on the font size option---we might need to change this.
- % See \url{https://github.com/borisveytsman/acmart/issues/5#issuecomment-272881329}.
- % \begin{macrocode}
- \RequirePackage{geometry}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \geometry{letterpaper,head=13pt,
- marginparwidth=6pc,heightrounded}%
- \or % acmsmall
- \geometry{twoside=true,
- includeheadfoot, head=13pt, foot=2pc,
- paperwidth=6.75in, paperheight=10in,
- top=58pt, bottom=44pt, inner=46pt, outer=46pt,
- marginparwidth=2pc,heightrounded
- }%
- \or % acmlarge
- \geometry{twoside=true, head=13pt, foot=2pc,
- paperwidth=8.5in, paperheight=11in,
- includeheadfoot,
- top=78pt, bottom=114pt, inner=81pt, outer=81pt,
- marginparwidth=4pc,heightrounded
- }%
- \or % acmtog
- \geometry{twoside=true, head=13pt, foot=2pc,
- paperwidth=8.5in, paperheight=11in,
- includeheadfoot, columnsep=24pt,
- top=52pt, bottom=75pt, inner=52pt, outer=52pt,
- marginparwidth=2pc,heightrounded
- }%
- \or % sigconf
- \geometry{twoside=true, head=13pt,
- paperwidth=8.5in, paperheight=11in,
- includeheadfoot, columnsep=2pc,
- top=57pt, bottom=73pt, inner=54pt, outer=54pt,
- marginparwidth=2pc,heightrounded
- }%
- \or % siggraph
- \geometry{twoside=true, head=13pt,
- paperwidth=8.5in, paperheight=11in,
- includeheadfoot, columnsep=2pc,
- top=57pt, bottom=73pt, inner=54pt, outer=54pt,
- marginparwidth=2pc,heightrounded
- }%
- \or % sigplan
- \geometry{twoside=true, head=13pt,
- paperwidth=8.5in, paperheight=11in,
- includeheadfoot=false, columnsep=2pc,
- top=1in, bottom=1in, inner=0.75in, outer=0.75in,
- marginparwidth=2pc,heightrounded
- }%
- \or % sigchi
- \geometry{twoside=true, head=13pt,
- paperwidth=8.5in, paperheight=11in,
- includeheadfoot, columnsep=2pc,
- top=66pt, bottom=73pt, inner=54pt, outer=54pt,
- marginparwidth=2pc,heightrounded
- }%
- \or % sigchi-a
- \geometry{twoside=false, head=13pt,
- paperwidth=11in, paperheight=8.5in,
- includeheadfoot, marginparsep=72pt,
- marginparwidth=170pt, columnsep=20pt,
- top=72pt, bottom=72pt, left=314pt, right=72pt
- }%
- \@mparswitchfalse
- \reversemarginpar
- \fi
- % \end{macrocode}
- %
- %
- % \begin{macro}{\parindent}
- % \begin{macro}{\parskip}
- % Paragraphing
- % \begin{macrocode}
- \setlength\parindent{10\p@}
- \setlength\parskip{\z@}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \or % acmtog
- \setlength\parindent{9\p@}%
- \or % sigconf
- \or % siggraph
- \or % sigplan
- \or % sigchi
- \or % sigchi-a
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\normalparindent}
- % \changes{v1.37}{2017/05/13}{Set \cs{normalparindent} (Matthew Fluet)}%
- % The |amsart| package defines the \cs{normalparindent} length and
- % initializes it to 12pt (the value of \cs{parindent} in |amsart|). It
- % is later used to set the \cs{listparindent} length in the |quotation|
- % environment and the \cs{parindent} length in the \cs{@footnotetext}
- % command. We set \cs{normalparindent} to the value of \cs{parindent}
- % as selected by |acmart| for consistent paragraph indents.
- % \begin{macrocode}
- \setlength\normalparindent{\parindent}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % Footnotes require some consideration. We have several layers of
- % footnotes: frontmatter footnotes, ``regular'' footnotes and the
- % special insert for the bibstrip. In the old ACM classes, the bibstrip
- % was a \cs{@float}. The problem with floats is that they tend to, well,
- % float---and we want the guarantee they stay.
- %
- % We use |manyfoot| for layered footnotes instead.
- %
- % \begin{macro}{\copyrightpermissionfootnoterule}
- % \changes{v1.12}{2016/05/30}{Added macro}
- % This is the footnote rule that separates the bibstrip from the rest of
- % the paper. It is a full width rule.
- % \begin{macrocode}
- \def\copyrightpermissionfootnoterule{\kern-3\p@
- \hrule \@width \columnwidth \kern 2.6\p@}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macrocode}
- \RequirePackage{manyfoot}
- \SelectFootnoteRule[2]{copyrightpermission}
- \DeclareNewFootnote{authorsaddresses}
- \SelectFootnoteRule[2]{copyrightpermission}
- \DeclareNewFootnote{copyrightpermission}
- % \end{macrocode}
- %
- %
- % \begin{macro}{\footnoterule}
- % \changes{v1.12}{2016/05/30}{Made shorter}
- % Tschichold's rules:
- % \begin{macrocode}
- \def\footnoterule{\kern-3\p@
- \hrule \@width 4pc \kern 2.6\p@}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\endminipage}
- % We do not use footnote rules in minipages
- % \begin{macrocode}
- \def\endminipage{%
- \par
- \unskip
- \ifvoid\@mpfootins\else
- \vskip\skip\@mpfootins
- \normalcolor
- \unvbox\@mpfootins
- \fi
- \@minipagefalse
- \color@endgroup
- \egroup
- \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@textbottom}
- % \changes{v1.31}{2017/03/04}{Redefined}
- % Add some stretch according to David Carlisle's advice at
- % \url{http://tex.stackexchange.com/a/62318/5522}
- % \begin{macrocode}
- \def\@textbottom{\vskip \z@ \@plus 1pt}
- \let\@texttop\relax
- % \end{macrocode}
- %
- % \end{macro}
- %
- % In two-column layouts, force both columns to be the same height by inserting
- % extra internal vertical space to fill out the page.
- % \begin{macrocode}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \or % acmtog
- \flushbottom
- \or % sigconf
- \flushbottom
- \or % siggraph
- \flushbottom
- \or % sigplan
- \flushbottom
- \or % sigchi
- \flushbottom
- \or % sigchi-a
- \fi
- % \end{macrocode}
- %
- %\subsection{Fonts}
- %\label{sec:fonts}
- %
- % \changes{v1.12}{2016/05/30}{Added graceful behavior when libertine
- % fonts are absent}
- % \changes{v1.33}{2017/03/29}{Added cmap and glyphtounicode}
- % \changes{v1.40}{2017/05/27}{Added Ross Moore code for glyphtounicode}
- %
- % Somehow PDFTeX and XeTeX require different incantations to make a PDF
- % compliant with the current Acrobat bugs. Xpdf is much better.
- %
- % The code below is by Ross Moore.
- % \begin{macrocode}
- \RequirePackage{iftex}
- \ifPDFTeX
- \input{glyphtounicode}
- \pdfglyphtounicode{f_f}{FB00}
- \pdfglyphtounicode{f_f_i}{FB03}
- \pdfglyphtounicode{f_f_l}{FB04}
- \pdfglyphtounicode{f_i}{FB01}
- \pdfglyphtounicode{t_t}{0074 0074}
- \pdfglyphtounicode{f_t}{0066 0074}
- \pdfglyphtounicode{T_h}{0054 0068}
- \pdfgentounicode=1
- \fi
- \RequirePackage{cmap}
- % \end{macrocode}
- %
- %
- % \begin{macro}{\if@ACM@newfonts}
- % \changes{v1.12}{2016/05/30}{Added macro}%
- % Whether we load the new fonts
- % \begin{macrocode}
- \newif\if@ACM@newfonts
- \@ACM@newfontstrue
- \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
- have the libertine package installed. Please upgrade your
- TeX}\@ACM@newfontsfalse}
- \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
- have the zi4 package installed. Please upgrade your
- TeX}\@ACM@newfontsfalse}
- \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
- have the newtxmath package installed. Please upgrade your
- TeX}\@ACM@newfontsfalse}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \changes{v1.30}{2017/02/15}{Switched to T1: looks like libertine has
- % problems with \cs{l} in OT1}%
- % \changes{v1.33}{2017/03/12}{Switched to Type~1 fonts for libertine
- % even if OTF-capable engine is used (Kai Mindermann)}
- % \changes{v1.51}{2018/04/05}{XeTeX now uses OTF fonts (Joachim
- % Breitner)}
- % \changes{v1.54}{2018/07/16}{XeTeX now uses T1 encoding}
- % \changes{v1.56}{2018/11/11}{Looks like XeTeX requires explicit
- % monotype font delcaration}
- % We use Libertine throughout.
- % \begin{macrocode}
- \if@ACM@newfonts
- \RequirePackage[T1]{fontenc}
- \ifxetex
- \RequirePackage[tt=false]{libertine}
- \setmonofont{inconsolata}
- \else
- \RequirePackage[tt=false, type1=true]{libertine}
- \fi
- \RequirePackage[varqu]{zi4}
- \RequirePackage[libertine]{newtxmath}
- \fi
- % \end{macrocode}
- %
- % \begin{macro}{\liningnums}
- % \changes{v1.46}{2017/08/28}{Workaround for compatibility with fontspec}
- % Libertine defines \cs{liningnums}, which makes |fontspec| unhappy.
- % While we do not use |fontspec|, some users do.
- % \begin{macrocode}
- \let\liningnums\@undefined
- \AtEndPreamble{%
- \DeclareTextFontCommand{\liningnums}{\libertineLF}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % The SIGCHI extended abstracts are sans serif:
- % \begin{macrocode}
- \if@ACM@sigchiamode
- \renewcommand{\familydefault}{\sfdefault}
- \fi
- % \end{macrocode}
- %
- %
- %
- %\subsection{Image descriptions}
- %\label{sec:description}
- %
- % \begin{macro}{\if@Description@present}
- % \changes{v1.56}{2018/11/11}{Added macro}
- % A local switch: whether there is a description in the given figure
- % \begin{macrocode}
- \newif\if@Description@present
- \@Description@presenttrue
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\if@undescribed@images}
- % \changes{v1.56}{2018/11/11}{Added macro}
- % A global switch whether some images were \emph{not} described
- % \begin{macrocode}
- \newif\if@undescribed@images
- \@undescribed@imagesfalse
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\Description}
- % \changes{v1.56}{2018/11/11}{Added macro}
- % The Description macro right now just sets switches
- % \begin{macrocode}
- \newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces}
- % \end{macrocode}
- % \end{macro}
- %
- % The global warning
- % \begin{macrocode}
- \AtEndDocument{\if@undescribed@images
- \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi}
- % \end{macrocode}
- %
- % Hooks for figures and tables
- % \begin{macrocode}
- \AtBeginEnvironment{figure}{\@Description@presentfalse
- \let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig}
- \AtBeginEnvironment{figure*}{\@Description@presentfalse
- \let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig}
- \AtEndEnvironment{figure}{\if@Description@present\else
- \global\@undescribed@imagestrue
- \ClassWarning{\@classname}{A possible image without description}\fi}
- \AtEndEnvironment{figure*}{\if@Description@present\else
- \global\@undescribed@imagestrue
- \ClassWarning{\@classname}{A possible image without description}\fi}
- \AtBeginEnvironment{table}{\let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig}
- \AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig}
- % \end{macrocode}
- %
- %
- %\subsection{Floats}
- %\label{sec:floats}
- %
- % \changes{v1.55}{2018/10/20}{Table captions for SIGCHI now use the
- % same font size as figure captions (Luis Leiva)}
- % We use the |caption| package
- % \begin{macrocode}
- \RequirePackage{caption, float}
- \captionsetup[table]{position=top}
- \if@ACM@journal
- \captionsetup{labelfont={sf, small},
- textfont={sf, small}, margin=\z@}
- \captionsetup[figure]{name={Fig.}}
- \else
- \captionsetup{labelfont={bf},
- textfont={bf}, labelsep=colon, margin=\z@}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \or % acmtog
- \or % sigconf
- \or % siggraph
- \captionsetup{textfont={it}}
- \or % sigplan
- \captionsetup{labelfont={bf},
- textfont={normalfont}, labelsep=period, margin=\z@}
- \or % sigchi
- \captionsetup[figure]{labelfont={bf, small},
- textfont={bf, small}}
- \captionsetup[table]{labelfont={bf, small},
- textfont={bf, small}}
- \or % sigchi-a
- \captionsetup[figure]{labelfont={bf, small},
- textfont={bf, small}}
- \captionsetup[table]{labelfont={bf, small},
- textfont={bf, small}}
- \fi
- \fi
- % \end{macrocode}
- %
- % \begin{macro}{sidebar}
- % The |sidebar| environment:
- % \begin{macrocode}
- \newfloat{sidebar}{}{sbar}
- \floatname{sidebar}{Sidebar}
- \renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@sidebar}
- % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
- % The processing of the saved text
- % \begin{macrocode}
- \long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}%
- \marginpar{\small#1}\egroup}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{marginfigure}
- % The |marginfigure| environment:
- % \begin{macrocode}
- \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@marginfigure}
- % \changes{v1.12}{2016/05/30}{Now centering by default}
- % \changes{v1.56}{2018/11/11}{Added checking for description}
- % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
- % The processing of the saved text
- % \begin{macrocode}
- \long\def\@marginfigure#1{\bgroup
- \let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig
- \captionsetup{type=figure}%
- \marginpar{\@Description@presentfalse\centering
- \small#1\if@Description@present\else
- \global\@undescribed@imagestrue
- \ClassWarning{\@classname}{A possible image without description}
- \fi}%
- \egroup}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{margintable}
- % The |margintable| environment:
- % \begin{macrocode}
- \newenvironment{margintable}{\Collect@Body\@margintable}{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@margintable}
- % \changes{v1.12}{2016/05/30}{Now centering by default}
- % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
- % The processing of the saved text
- % \begin{macrocode}
- \long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig\captionsetup{type=table}%
- \marginpar{\centering\small#1}\egroup}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % SIGCHI extended abstracts provide an interesting possibility to push
- % into the margin. Here we use |figure*| and |table*| for this.
- % \begin{macro}{\fulltextwidth}
- % We define the width of the boxes as
- % \begin{macrocode}
- \newdimen\fulltextwidth
- \fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@dblfloat}
- % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
- % We redefine the double-float command. First, we make the size
- % bigger. Second, our default position is going to be |tp| (to give
- % marginalia a chance)
- % \begin{macrocode}
- \if@ACM@sigchiamode
- \def\@dblfloat{\bgroup\let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth
- \let\@endfloatbox\@endwidefloatbox
- \def\@fpsadddefault{\def\@fps{tp}}%
- \@float}
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\end@dblfloat}
- % And the end. Just adding a \cs{bgroup}.
- % \begin{macrocode}
- \if@ACM@sigchiamode
- \def\end@dblfloat{%
- \end@float\egroup}
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@endwidefloatbox}
- % This is the end of a wide box---we basically move everything
- % to the left
- % \begin{macrocode}
- \def\@endwidefloatbox{%
- \par\vskip\z@skip
- \@minipagefalse
- \outer@nobreak
- \egroup
- \color@endbox
- \global\setbox\@currbox=\vbox{\moveleft
- \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
- \wd\@currbox=\textwidth
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- %\subsection{Lists}
- %\label{sec:lists}
- %
- % \begin{macrocode}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \or % acmtog
- \or % sigconf
- \or % siggraph
- \or % sigplan
- \def\labelenumi{\theenumi.}
- \def\labelenumii{\theenumii.}
- \def\labelenumiii{\theenumiii.}
- \def\labelenumiv{\theenumiv.}
- \or % sigchi
- \or % sigchi-a
- \fi
- % \end{macrocode}
- %
- %
- % \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}%
- % The AMS uses generous margins for lists. Note that |amsart| defines
- % \cs{leftmargin} values for list levels at the beginning of the
- % document, so we must redefine them in the same manner. Also, note that
- % |amsart| redefines the |enumerate| and |itemize| environments with a
- % \cs{makelabel} command that uses \cs{llap}, so the \cs{labelwidth}
- % value is~(effectively) irrelevant; nonetheless, we follow |amsart|
- % and set \cs{labelwidth} to \cs{leftmargin} minus \cs{labelsep}.
- % \begin{macrocode}
- \newdimen\@ACM@labelwidth
- \AtBeginDocument{%
- \setlength\labelsep{4pt}
- \setlength{\@ACM@labelwidth}{6.5pt}
- %% First-level list: when beginning after the first line of an
- %% indented paragraph or ending before an indented paragraph, labels
- %% should not hang to the left of the preceding/following text.
- \setlength\leftmargini{\z@}
- \addtolength\leftmargini{\parindent}
- \addtolength\leftmargini{2\labelsep}
- \addtolength\leftmargini{\@ACM@labelwidth}
- %% Second-level and higher lists.
- \setlength\leftmarginii{\z@}
- \addtolength\leftmarginii{0.5\labelsep}
- \addtolength\leftmarginii{\@ACM@labelwidth}
- \setlength\leftmarginiii{\leftmarginii}
- \setlength\leftmarginiv{\leftmarginiii}
- \setlength\leftmarginv{\leftmarginiv}
- \setlength\leftmarginvi{\leftmarginv}
- \@listi}
- \newskip\listisep
- \listisep\smallskipamount
- \def\@listI{\leftmargin\leftmargini
- \labelwidth\leftmargini \advance\labelwidth-\labelsep
- \listparindent\z@
- \topsep\listisep}
- \let\@listi\@listI
- \def\@listii{\leftmargin\leftmarginii
- \labelwidth\leftmarginii \advance\labelwidth-\labelsep
- \topsep\z@skip}
- \def\@listiii{\leftmargin\leftmarginiii
- \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
- \def\@listiv{\leftmargin\leftmarginiv
- \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
- \def\@listv{\leftmargin\leftmarginv
- \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
- \def\@listvi{\leftmargin\leftmarginvi
- \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
- % \end{macrocode}
- %
- %
- % \begin{macro}{\descriptionlabel}
- % \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}%
- % \changes{v1.12}{2016/05/30}{Redefined}
- % We do not use a colon by default like |amsart| does:
- % \begin{macrocode}
- \renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\description}
- % \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}%
- % \changes{v1.17}{2016/07/07}{Decreased indent}
- % Make the |description| environment indentation consistent with that of
- % the |itemize| and |enumerate| environments.
- % \begin{macrocode}
- \renewenvironment{description}{\list{}{%
- \labelwidth\@ACM@labelwidth
- \let\makelabel\descriptionlabel}%
- }{
- \endlist
- }
- \let\enddescription=\endlist % for efficiency
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- %\subsection{Top-matter data}
- %\label{sec:top_matter_data}
- %
- % \begin{macro}{\if@ACM@maketitle@typeset}
- % \changes{v1.64}{2019/08/17}{Introduced macro}
- % The switch to check whether \cs{maketitle} is already typeset. It
- % is initally false, and setting top matter when it is true is wrong.
- % \begin{macrocode}
- \newif\if@ACM@maketitle@typeset
- \@ACM@maketitle@typesetfalse
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \changes{v1.24}{2016/11/16}{Add IMWUT journal option}
- % \changes{v1.25}{2016/12/03}{Updated PACMPL}
- % \changes{v1.30}{2017/02/15}{Updated IMWUT and PACMPL}
- % \changes{v1.36}{2017/05/13}{Added PACMHCI journal options}
- % \changes{v1.46}{2017/08/25}{PACM now set screen to true}
- % \changes{v1.53}{2018/04/14}{Added PACMCGIT, TIOT, TDSCI}
- % \changes{v1.58}{2019/03/29}{Added HEALTH. TDSCI is renamed to TDS}
- %
- % We use the |xkeyval| interface to define journal titles and the relevant
- % information
- % \begin{macrocode}
- \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
- CIE,%
- CSUR,%
- DGOV,%
- DTRAP,%
- HEALTH,%
- IMWUT,%
- JACM,%
- JDIQ,%
- JEA,%
- JERIC,%
- JETC,%
- JOCCH,%
- PACMCGIT,%
- PACMHCI,%
- PACMPL,%
- POMACS,%
- TAAS,%
- TACCESS,%
- TACO,%
- TALG,%
- TALLIP,%
- TAP,%
- TCPS,%
- TDS,%
- TEAC,%
- TECS,%
- TELO,%
- THRI,%
- TIIS,%
- TIOT,%
- TISSEC,%
- TIST,%
- TKDD,%
- TMIS,%
- TOCE,%
- TOCHI,%
- TOCL,%
- TOCS,%
- TOCT,%
- TODAES,%
- TODS,%
- TOG,%
- TOIS,%
- TOIT,%
- TOMACS,%
- TOMM,%
- TOMPECS,%
- TOMS,%
- TOPC,%
- TOPS,%
- TOPLAS,%
- TOS,%
- TOSEM,%
- TOSN,%
- TQC,%
- TRETS,%
- TSAS,%
- TSC,%
- TSLP,%
- TWEB,%
- FACMP%
- }{%
- \ifcase\@journalCode@nr
- \relax % CIE
- \def\@journalName{ACM Computers in Entertainment}%
- \def\@journalNameShort{ACM Comput. Entertain.}%
- \def\@permissionCodeOne{1544-3574}%
- \or % CSUR
- \def\@journalName{ACM Computing Surveys}%
- \def\@journalNameShort{ACM Comput. Surv.}%
- \def\@permissionCodeOne{0360-0300}%
- \or % DGOV
- \def\@journalName{Digital Government: Research and Practice}%
- \def\@journalNameShort{Digit. Gov. Res. Pract.}%
- \def\@permissionCodeOne{2639-0175}%
- \or % DTRAP
- \def\@journalName{Digital Threats: Research and Practice}%
- \def\@journalNameShort{Digit. Threat. Res. Pract.}%
- \def\@permissionCodeOne{2576-5337}%
- \or % HEALTH
- \def\@journalName{ACM Transactions on Computing for Healthcare}%
- \def\@journalNameShort{ACM Trans. Comput. Healthcare}%
- \def\@permissionCodeOne{2637-8051}%
- \or % IMWUT
- \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
- Wearable and Ubiquitous Technologies}%
- \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
- \def\@permissionCodeOne{2474-9567}%
- \@ACM@screentrue
- \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
- \or % JACM
- \def\@journalName{Journal of the ACM}%
- \def\@journalNameShort{J. ACM}%
- \def\@permissionCodeOne{0004-5411}%
- \or % JDIQ
- \def\@journalName{ACM Journal of Data and Information Quality}%
- \def\@journalNameShort{ACM J. Data Inform. Quality}%
- \def\@permissionCodeOne{1936-1955}%
- \or % JEA
- \def\@journalName{ACM Journal of Experimental Algorithmics}%
- \def\@journalNameShort{ACM J. Exp. Algor.}%
- \def\@permissionCodeOne{1084-6654}%
- \or % JERIC
- \def\@journalName{ACM Journal of Educational Resources in Computing}%
- \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
- \def\@permissionCodeOne{1073-0516}%
- \or % JETC
- \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
- \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
- \def\@permissionCodeOne{1550-4832}%
- \or % JOCCH
- \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
- \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
- \or % PACMCGIT
- \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}%
- \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}%
- \def\@permissionCodeOne{2577-6193}%
- \@ACM@screentrue
- \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
- \or % PACMHCI
- \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
- \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
- \def\@permissionCodeOne{2573-0142}%
- \@ACM@screentrue
- \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
- \or % PACMPL
- \def\@journalName{Proceedings of the ACM on Programming Languages}%
- \def\@journalNameShort{Proc. ACM Program. Lang.}%
- \def\@permissionCodeOne{2475-1421}%
- \@ACM@screentrue
- \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
- \or % POMACS
- \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
- \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
- \def\@permissionCodeOne{2476-1249}%
- \@ACM@screentrue
- \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
- \or % TAAS
- \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
- \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
- \def\@permissionCodeOne{1556-4665}%
- \or % TACCESS
- \def\@journalName{ACM Transactions on Accessible Computing}%
- \def\@journalNameShort{ACM Trans. Access. Comput.}%
- \def\@permissionCodeOne{1936-7228}%
- \or % TACO
- \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
- \def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
- \or % TALG
- \def\@journalName{ACM Transactions on Algorithms}%
- \def\@journalNameShort{ACM Trans. Algor.}%
- \def\@permissionCodeOne{1549-6325}%
- \or % TALLIP
- \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
- \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
- \def\@permissionCodeOne{2375-4699}%
- \or % TAP
- \def\@journalName{ACM Transactions on Applied Perception}%
- \or % TCPS
- \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
- \or % TDS
- \def\@journalName{ACM Transactions on Data Science}%
- \def\@journalNameShort{ACM Trans. Data Sci.}%
- \def\@permissionCodeOne{2577-3224}%
- \or % TEAC
- \def\@journalName{ACM Transactions on Economics and Computation}%
- \or % TECS
- \def\@journalName{ACM Transactions on Embedded Computing Systems}%
- \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
- \def\@permissionCodeOne{1539-9087}%
- \or % TELO
- \def\@journalName{ACM Transactions on Evolutionary Learning}%
- \def\@journalNameShort{ACM Trans. Evol. Learn.}%
- \def\@permissionCodeOne{2688-3007}%
- \or % THRI
- \def\@journalName{ACM Transactions on Human-Robot Interaction}%
- \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
- \def\@permissionCodeOne{2573-9522}%
- \or % TIIS
- \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
- \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
- \def\@permissionCodeOne{2160-6455}%
- \or % TIOT
- \def\@journalName{ACM Transactions on Internet of Things}%
- \def\@journalNameShort{ACM Trans. Internet Things}%
- \def\@permissionCodeOne{2577-6207}%
- \or % TISSEC
- \def\@journalName{ACM Transactions on Information and System Security}%
- \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
- \def\@permissionCodeOne{1094-9224}%
- \or % TIST
- \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
- \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
- \def\@permissionCodeOne{2157-6904}%
- \or % TKDD
- \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
- \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
- \def\@permissionCodeOne{1556-4681}%
- \or % TMIS
- \def\@journalName{ACM Transactions on Management Information Systems}%
- \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
- \def\@permissionCodeOne{2158-656X}%
- \or % TOCE
- \def\@journalName{ACM Transactions on Computing Education}%
- \def\@journalNameShort{ACM Trans. Comput. Educ.}%
- \def\@permissionCodeOne{1946-6226}%
- \or % TOCHI
- \def\@journalName{ACM Transactions on Computer-Human Interaction}%
- \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
- \def\@permissionCodeOne{1073-0516}%
- \or % TOCL
- \def\@journalName{ACM Transactions on Computational Logic}%
- \def\@journalNameShort{ACM Trans. Comput. Logic}%
- \def\@permissionCodeOne{1529-3785}%
- \or % TOCS
- \def\@journalName{ACM Transactions on Computer Systems}%
- \def\@journalNameShort{ACM Trans. Comput. Syst.}%
- \def\@permissionCodeOne{0734-2071}%
- \or % TOCT
- \def\@journalName{ACM Transactions on Computation Theory}%
- \def\@journalNameShort{ACM Trans. Comput. Theory}%
- \def\@permissionCodeOne{1942-3454}%
- \or % TODAES
- \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
- \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
- \def\@permissionCodeOne{1084-4309}%
- \or % TODS
- \def\@journalName{ACM Transactions on Database Systems}%
- \def\@journalNameShort{ACM Trans. Datab. Syst.}%
- \def\@permissionCodeOne{0362-5915}%
- \or % TOG
- \def\@journalName{ACM Transactions on Graphics}%
- \def\@journalNameShort{ACM Trans. Graph.}%
- \def\@permissionCodeOne{0730-0301}
- \or % TOIS
- \def\@journalName{ACM Transactions on Information Systems}%
- \def\@permissionCodeOne{1046-8188}%
- \or % TOIT
- \def\@journalName{ACM Transactions on Internet Technology}%
- \def\@journalNameShort{ACM Trans. Internet Technol.}%
- \def\@permissionCodeOne{1533-5399}%
- \or % TOMACS
- \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
- \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
- \or % TOMM
- \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
- \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
- \def\@permissionCodeOne{1551-6857}%
- \def\@permissionCodeTwo{0100}%
- \or % TOMPECS
- \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
- \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
- \def\@permissionCodeOne{2376-3639}%
- \or % TOMS
- \def\@journalName{ACM Transactions on Mathematical Software}%
- \def\@journalNameShort{ACM Trans. Math. Softw.}%
- \def\@permissionCodeOne{0098-3500}%
- \or % TOPC
- \def\@journalName{ACM Transactions on Parallel Computing}%
- \def\@journalNameShort{ACM Trans. Parallel Comput.}%
- \def\@permissionCodeOne{1539-9087}%
- \or % TOPS
- \def\@journalName{ACM Transactions on Privacy and Security}%
- \def\@journalNameShort{ACM Trans. Priv. Sec.}%
- \def\@permissionCodeOne{2471-2566}%
- \or % TOPLAS
- \def\@journalName{ACM Transactions on Programming Languages and Systems}%
- \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
- \def\@permissionCodeOne{0164-0925}%
- \or % TOS
- \def\@journalName{ACM Transactions on Storage}%
- \def\@journalNameShort{ACM Trans. Storage}%
- \def\@permissionCodeOne{1553-3077}%
- \or % TOSEM
- \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
- \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
- \def\@permissionCodeOne{1049-331X}%
- \or % TOSN
- \def\@journalName{ACM Transactions on Sensor Networks}%
- \def\@journalNameShort{ACM Trans. Sensor Netw.}%
- \def\@permissionCodeOne{1550-4859}%
- \or % TQC
- \def\@journalName{ACM Transactions on Quantum Computing}%
- \def\@journalNameShort{ACM Trans. Quantum Comput.}%
- \def\@permissionCodeOne{2643-6817}%
- \or % TRETS
- \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
- \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
- \def\@permissionCodeOne{1936-7406}%
- \or % TSAS
- \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
- \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
- \def\@permissionCodeOne{2374-0353}%
- \or % TSC
- \def\@journalName{ACM Transactions on Social Computing}%
- \def\@journalNameShort{ACM Trans. Soc. Comput.}%
- \def\@permissionCodeOne{2469-7818}%
- \or % TSLP
- \def\@journalName{ACM Transactions on Speech and Language Processing}%
- \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
- \def\@permissionCodeOne{1550-4875}%
- \or % TWEB
- \def\@journalName{ACM Transactions on the Web}%
- \def\@journalNameShort{ACM Trans. Web}%
- \def\@permissionCodeOne{1559-1131}%
- \else % FACMP, a dummy journal
- \def\@journalName{Forthcoming ACM Publication}%
- \def\@journalNameShort{ACM Forthcoming}%
- \def\@permissionCodeOne{XXXX-XXXX}%
- \fi
- \ClassInfo{\@classname}{Using journal code \@journalCode}%
- }{%
- \ClassError{\@classname}{Incorrect journal #1}%
- }%
- % \end{macrocode}
- % \begin{macro}{\acmJournal}
- % \changes{v1.59}{2019/04/20}{Setting \cs{@ACM@journal@bibstrip}}
- % And the syntactic sugar around it
- % \begin{macrocode}
- \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}%
- \global\@ACM@journal@bibstriptrue}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % The defaults:
- % \begin{macrocode}
- \def\@journalCode@nr{0}
- \def\@journalName{}%
- \def\@journalNameShort{\@journalName}%
- \def\@permissionCodeOne{XXXX-XXXX}%
- \def\@permissionCodeTwo{}%
- % \end{macrocode}
- %
- %
- % \begin{macro}{\acmConference}
- % \changes{v1.59}{2019/04/20}{Setting \cs{@ACM@journal@bibstrip}}
- % This is the conference command
- % \begin{macrocode}
- \newcommand\acmConference[4][]{%
- \gdef\acmConference@shortname{#1}%
- \gdef\acmConference@name{#2}%
- \gdef\acmConference@date{#3}%
- \gdef\acmConference@venue{#4}%
- \ifx\acmConference@shortname\@empty
- \gdef\acmConference@shortname{#2}%
- \fi
- \global\@ACM@journal@bibstripfalse
- }
- \if@ACM@journal\else
- \acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
- DC, USA}%
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmBooktitle}
- % \changes{v1.44}{2017/08/11}{Added macro}
- % \begin{macro}{\@acmBooktitle}
- % \changes{v1.44}{2017/08/11}{Added macro}
- % The book title of the conference:
- % \begin{macrocode}
- \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
- \acmBooktitle{Proceedings of \acmConference@name
- \ifx\acmConference@name\acmConference@shortname\else
- \ (\acmConference@shortname)\fi}
- % \end{macrocode}
- %
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\@editorsAbbrev}
- % \changes{v1.44}{2017/08/11}{Added macro}
- % How to abbreviate editors
- % \begin{macrocode}
- \def\@editorsAbbrev{(Ed.)}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@acmEditors}
- % \changes{v1.44}{2017/08/11}{Added macro}
- % The list of editors
- % \begin{macrocode}
- \def\@acmEditors{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\editor}
- % \changes{v1.44}{2017/08/11}{Added macro}
- % Add a new editor to the list
- % \begin{macrocode}
- \def\editor#1{\ifx\@acmEditors\@empty
- \gdef\@acmEditors{#1}%
- \else
- \gdef\@editorsAbbrev{(Eds.)}%
- \g@addto@macro\@acmEditors{\and#1}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\subtitle}
- % The subtitle macro
- % \begin{macrocode}
- \def\subtitle#1{\def\@subtitle{#1}}
- \subtitle{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\num@authorgroups}
- % \changes{v1.15}{2016/06/25}{Renamed}
- % The total number of ``groups''. Each group is several authors with
- % the same affiliations(s)
- % \begin{macrocode}
- \newcount\num@authorgroups
- \num@authorgroups=0\relax
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\num@authors}
- % \changes{v1.46}{2017/08/27}{Introduced macro}
- % The total number of authors
- % \begin{macrocode}
- \newcount\num@authors
- \num@authors=0\relax
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- %
- %
- % \begin{macro}{\if@insideauthorgroup}
- % \changes{v1.15}{2016/06/25}{Introduced macro}
- % Whether we are continuing an author group
- % \begin{macrocode}
- \newif\if@insideauthorgroup
- \@insideauthorgroupfalse
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\author}
- % \changes{v1.15}{2016/06/25}{Added code for author groups}
- % \changes{v1.46}{2017/08/27}{Started counting authors}
- % \changes{v1.54}{2018/06/23}{Added submission id in anonymous mode}
- % \changes{v1.57}{2018/12/09}{Added warning if \cs{author} has comma}
- % Adding an author to the list of authors and addresses
- % \begin{macrocode}
- \renewcommand\author[2][]{%
- \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
- authors in the same \string\author\space macro!}}{}%
- \global\advance\num@authors by 1\relax
- \if@insideauthorgroup\else
- \global\advance\num@authorgroups by 1\relax
- \global\@insideauthorgrouptrue
- \fi
- \ifx\addresses\@empty
- \if@ACM@anonymous
- \gdef\addresses{\@author{Anonymous Author(s)%
- \ifx\@acmSubmissionID\@empty\else\\Submission Id:
- \@acmSubmissionID\fi}}%
- \gdef\authors{Anonymous Author(s)}%
- \else
- \gdef\addresses{\@author{#2}}%
- \gdef\authors{#2}%
- \fi
- \else
- \if@ACM@anonymous\else
- \g@addto@macro\addresses{\and\@author{#2}}%
- \g@addto@macro\authors{\and#2}%
- \fi
- \fi
- \if@ACM@anonymous
- \ifx\shortauthors\@empty
- \gdef\shortauthors{Anon.
- \ifx\@acmSubmissionID\@empty\else Submission Id:
- \@acmSubmissionID\fi}%
- \fi
- \else
- \def\@tempa{#1}%
- \ifx\@tempa\@empty
- \ifx\shortauthors\@empty
- \gdef\shortauthors{#2}%
- \else
- \g@addto@macro\shortauthors{\and#2}%
- \fi
- \else
- \ifx\shortauthors\@empty
- \gdef\shortauthors{#1}%
- \else
- \g@addto@macro\shortauthors{\and#1}%
- \fi
- \fi
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\affiliation}
- % \changes{v1.15}{2016/06/25}{Added code for author groups}
- % The macro \cs{affiliation} mimics \cs{address} from |amsart|.
- % Note that it has an optional argument, which we use differently
- % from |amsart|.
- % \begin{macrocode}
- \newcommand{\affiliation}[2][]{%
- \global\@insideauthorgroupfalse
- \if@ACM@anonymous\else
- \g@addto@macro\addresses{\affiliation{#1}{#2}}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@affiliation@obeypunctuation}
- % \changes{v1.33}{2017/03/28}{Added macro}
- % Whether to use the author's punctuation (false by default, which adds
- % American-style address punctuation)
- % \begin{macrocode}
- \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
- [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- %
- % \begin{macro}{\additionalaffiliation}
- % \changes{v1.31}{2017/03/04}{Added macro}
- % Additional affiliations go to footnotes
- % \begin{macrocode}
- \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@additionalaffiliation}
- % \changes{v1.31}{2017/03/04}{Added macro}
- % Process \cs{additionalaffiliation} inside \cs{authornote}
- % \begin{macrocode}
- \def\@additionalaffiliation#1{\bgroup
- \def\position##1{\ignorespaces}%
- \def\institution##1{##1\ignorespaces}%
- \def\department{\@ifnextchar[{\@department}{\@department[]}}%
- \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
- \let\streetaddress\position
- \let\city\position
- \let\state\position
- \let\postcode\position
- \let\country\position
- Also with #1\unskip.\egroup}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\email}
- % \changes{v1.57}{2018/12/09}{Added warning if \cs{author} has comma}
- % The macro \cs{email} mimics \cs{email} from |amsart|.
- % Again, it has an optional argument that we do not currently need
- % but keep for possible future use.
- % \begin{macrocode}
- \renewcommand{\email}[2][]{%
- \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
- addresses in the same \string\email\space macro!}}{}%
- \if@ACM@anonymous\else
- \g@addto@macro\addresses{\email{#1}{#2}}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\orcid}
- % \changes{v1.15}{2016/06/25}{Introduced macro}
- % Right now we do not typeset ORCIDs
- % \begin{macrocode}
- \def\orcid#1{\unskip\ignorespaces}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\authorsaddresses}
- % \changes{v1.46}{2017/08/27}{Introduced macro}
- % Setting up authors' addresses
- % \begin{macrocode}
- \def\authorsaddresses#1{\def\@authorsaddresses{#1}}
- \authorsaddresses{\@mkauthorsaddresses}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@titlenotes}
- % The title notes
- % \begin{macrocode}
- \def\@titlenotes{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\titlenote}
- % Adding a note to the title
- % \begin{macrocode}
- \def\titlenote#1{%
- \g@addto@macro\@title{\footnotemark}%
- \if@ACM@anonymous
- \g@addto@macro\@titlenotes{%
- \stepcounter{footnote}\footnotetext{Title note}}%
- \else
- \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@subtitlenotes}
- % The subtitle notes
- % \begin{macrocode}
- \def\@subtitlenotes{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\subtitlenote}
- % Adding a note to the subtitle
- % \begin{macrocode}
- \def\subtitlenote#1{%
- \g@addto@macro\@subtitle{\footnotemark}%
- \if@ACM@anonymous
- \g@addto@macro\@subtitlenotes{%
- \stepcounter{footnote}\footnotetext{Subtitle note}}%
- \else
- \g@addto@macro\@subtitlenotes{%
- \stepcounter{footnote}\footnotetext{#1}}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@authornotes}
- % The author notes
- % \begin{macrocode}
- \def\@authornotes{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\authornote}
- % Adding a note to the author
- % \begin{macrocode}
- \def\authornote#1{%
- \if@ACM@anonymous\else
- \g@addto@macro\addresses{\@authornotemark}%
- \g@addto@macro\@authornotes{%
- \stepcounter{footnote}\footnotetext{#1}}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\authornotemark}
- % \changes{v1.39}{2017/05/14}{Added macro}
- % Adding a footnote mark to the authors
- % \begin{macrocode}
- \newcommand\authornotemark[1][\relax]{%
- \ifx#1\relax\relax\relax
- \g@addto@macro\addresses{\@authornotemark}%
- \else
- \g@addto@macro\addresses{\@@authornotemark{#1}}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmVolume}
- % \changes{v1.17}{2016/07/10}{The default is now numerical}
- % The current volume
- % \begin{macrocode}
- \def\acmVolume#1{\def\@acmVolume{#1}}
- \acmVolume{1}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmNumber}
- % \changes{v1.17}{2016/07/10}{The default is now numerical}
- % The current number
- % \begin{macrocode}
- \def\acmNumber#1{\def\@acmNumber{#1}}
- \acmNumber{1}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmArticle}
- % \changes{v1.17}{2016/07/10}{The default is now numerical}
- % \changes{v1.44}{2017/08/111}{The default is now empty}
- % The current article
- % \begin{macrocode}
- \def\acmArticle#1{\def\@acmArticle{#1}}
- \acmArticle{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmArticleSeq}
- % \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
- % \changes{v1.44}{2017/08/11}{Now acmArticle might be empty}
- % The sequence number
- % \begin{macrocode}
- \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
- \acmArticleSeq{\@acmArticle}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmYear}
- % \changes{v1.17}{2016/07/10}{The default is now numerical}
- % \changes{v1.31}{2017/03/04}{The default now is the current year
- % (Matteo Riondato)}
- % The current year
- % \begin{macrocode}
- \def\acmYear#1{\def\@acmYear{#1}}
- \acmYear{\the\year}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmMonth}
- % \changes{v1.17}{2016/07/09}{The default must be numerical. Closes \#50.}
- % \changes{v1.31}{2017/03/04}{The default now is the current month
- % (Matteo Riondato)}
- % The current month
- % \begin{macrocode}
- \def\acmMonth#1{\def\@acmMonth{#1}}
- \acmMonth{\the\month}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@acmPubDate}
- % The publication date
- % \begin{macrocode}
- \def\@acmPubDate{\ifcase\@acmMonth\or
- January\or February\or March\or April\or May\or June\or
- July\or August\or September\or October\or November\or
- December\fi~\@acmYear}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmPrice}
- % The price
- % \begin{macrocode}
- \def\acmPrice#1{\def\@acmPrice{#1}}
- \acmPrice{15.00}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\acmSubmissionID}
- % \changes{v1.33}{2017/03/29}{Added macro}
- % The submission ID
- % \begin{macrocode}
- \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
- \acmSubmissionID{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\acmISBN}
- % \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
- % The book ISBN
- % \begin{macrocode}
- \def\acmISBN#1{\def\@acmISBN{#1}}
- \acmISBN{978-x-xxxx-xxxx-x/YY/MM}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmDOI}
- % \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
- % The paper DOI
- % \begin{macrocode}
- \def\acmDOI#1{\def\@acmDOI{#1}}
- \acmDOI{10.1145/nnnnnnn.nnnnnnn}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@badge}
- % \changes{v1.06}{2016/05/01}{Added macro}
- % Whether to print a badge. Note that either a left or right badge
- % triggers it:
- % \begin{macrocode}
- \newif\if@ACM@badge
- \@ACM@badgefalse
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@ACM@badge@width}
- % \changes{v1.06}{2016/05/01}{Added macro}
- % The width of the badge
- % \begin{macrocode}
- \newlength\@ACM@badge@width
- \setlength\@ACM@badge@width{5pc}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@ACM@title@width}
- % \changes{v1.06}{2016/05/01}{Added macro}
- % The width of the badge
- % \begin{macrocode}
- \newlength\@ACM@title@width
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@ACM@badge@skip}
- % \changes{v1.06}{2016/05/01}{Added macro}
- % The space between the badge and the title
- % \begin{macrocode}
- \newlength\@ACM@badge@skip
- \setlength\@ACM@badge@skip{1pc}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmBadgeR}
- % \changes{v1.06}{2016/05/01}{Added macro}
- % Setting the right badge
- % \begin{macrocode}
- \newcommand\acmBadgeR[2][]{\@ACM@badgetrue
- \def\@acmBadgeR@url{#1}%
- \def\@acmBadgeR@image{#2}}
- \def\@acmBadgeR@url{}
- \def\@acmBadgeR@image{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acmBadgeL}
- % \changes{v1.06}{2016/05/01}{Added macro}
- % Setting the left badge
- % \begin{macrocode}
- \newcommand\acmBadgeL[2][]{\@ACM@badgetrue
- \def\@acmBadgeL@url{#1}%
- \def\@acmBadgeL@image{#2}}
- \def\@acmBadgeL@url{}
- \def\@acmBadgeL@image{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\startPage}
- % The start page of the paper
- % \begin{macrocode}
- \def\startPage#1{\def\@startPage{#1}}
- \startPage{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\terms}
- % \changes{v1.34}{2017/04/09}{The \cs{terms} command now just produces
- % a warning}
- % Terms are obsolete. We use CCS now.
- % \begin{macrocode}
- \def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
- obsolete. I am going to ignore it}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\keywords}
- % Keywords are mostly obsolete. We use CCS now. Still it makes
- % sense to keep them for compatibility.
- % \begin{macrocode}
- \def\keywords#1{\def\@keywords{#1}}
- \keywords{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{abstract}
- % The |amsart| package puts |abstract| in a box. Since we do not
- % know whether we will use two-column mode, we prefer to save the text
- % \begin{macrocode}
- \renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@saveabstract}
- % And saving the abstract
- % \begin{macrocode}
- \long\def\@saveabstract#1{\if@ACM@maketitle@typeset
- \ClassError{\@classname}{Abstract must be defined before maketitle
- command. Please move it!}\fi
- \long\gdef\@abstract{#1}}
- \@saveabstract{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@lempty}
- % The long version of \cs{@empty} (to compare with \cs{@abstract})
- % \begin{macrocode}
- \long\def\@lempty{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@printccs}
- % \changes{v1.27}{2016/12/29}{Typo corrected}
- % Whether to print CCS
- % \begin{macrocode}
- \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
- \if@ACM@printccs
- \ClassInfo{\@classname}{Printing CCS}%
- \else
- \ClassInfo{\@classname}{Suppressing CCS}%
- \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}
- % \end{macrocode}
- %
- % \end{macro}
- % \begin{macro}{\if@ACM@printacmref}
- % \changes{v1.17}{2016/07/10}{Renamed from \cs{if@ACM@printbib}}
- % Whether to print the ACM bibstrip
- % \begin{macrocode}
- \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
- \if@ACM@printacmref
- \ClassInfo{\@classname}{Printing bibformat}%
- \else
- \ClassInfo{\@classname}{Suppressing bibformat}%
- \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@ACM@printfolios}
- % \changes{v1.13}{2016/06/06}{Added macro}
- % Whether to print folios
- % \begin{macrocode}
- \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
- \if@ACM@printfolios
- \ClassInfo{\@classname}{Printing folios}%
- \else
- \ClassInfo{\@classname}{Suppressing folios}%
- \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\@ACM@authorsperrow}
- % \changes{v1.36}{2017/05/13}{Added macro}
- % The number of authors per row. 0 means use the default algorithm.
- % \begin{macrocode}
- \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
- \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
- #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
- numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\settopmatter}
- % The usual syntactic sugar
- % \begin{macrocode}
- \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \changes{v1.13}{2016/06/06}{Print bibliographic information by
- % default for the proceedings}
- % Now the settings
- % \begin{macrocode}
- \settopmatter{printccs=true, printacmref=true}
- \if@ACM@manuscript
- \settopmatter{printfolios=true}
- \else
- \if@ACM@journal
- \settopmatter{printfolios=true}
- \else
- \settopmatter{printfolios=false}
- \fi
- \fi
- \settopmatter{authorsperrow=0}
- % \end{macrocode}
- %
- % \begin{macro}{\@received}
- % The container for the paper history
- % \begin{macrocode}
- \def\@received{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\received}
- % The \cs{received} command
- % \begin{macrocode}
- \newcommand\received[2][]{\def\@tempa{#1}%
- \ifx\@tempa\@empty
- \ifx\@received\@empty
- \gdef\@received{Received #2}%
- \else
- \g@addto@macro{\@received}{; revised #2}%
- \fi
- \else
- \ifx\@received\@empty
- \gdef\@received{#1 #2}%
- \else
- \g@addto@macro{\@received}{; #1 #2}%
- \fi
- \fi}
- \AtEndDocument{%
- \ifx\@received\@empty\else
- \par\bigskip\noindent\small\normalfont\@received\par
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %\subsection{Concepts system}
- %\label{sec:concepts}
- %
- % We exclude |CCSXML| stuff generated by the ACM system:
- % \begin{macrocode}
- \RequirePackage{comment}
- \excludecomment{CCSXML}
- % \end{macrocode}
- %
- % \begin{macro}{\@concepts}
- % This is the storage macro and counter for concepts
- % \begin{macrocode}
- \let\@concepts\@empty
- \newcounter{@concepts}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\ccsdesc}
- % \changes{v1.40}{2017/05/27}{Now we can parse |Significance~General| nodes}
- % The first argument is the significance, the second is the
- % concept(s)
- % \begin{macrocode}
- \newcommand\ccsdesc[2][100]{%
- \ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\ccsdesc@parse}
- % \changes{v1.28}{2017/01/04}{Change from \cs{to} to
- % \cs{textrightarrow} (Matteo Riondato)}
- % \changes{v1.29}{2017/01/22}{Add spacing after bullet and around
- % rightarrow; semicolon separators no longer in bold/italic (John Wickerson)}
- % \changes{v1.40}{2017/05/27}{Now we can parse |Significance~General| nodes}
- % \changes{v1.56}{2018/10/23}{End the concepts list with a period
- % (Philip Quinn)}
- % The parser of the expression |Significance~General~Specific| (we need
- % |textcomp| for |\textrightarrow|). Note that |Specific| can be empty!
- % \begin{macrocode}
- \RequirePackage{textcomp}
- \def\ccsdesc@parse#1~#2~#3~{%
- \stepcounter{@concepts}%
- \expandafter\ifx\csname CCS@General@#2\endcsname\relax
- \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
- \textbf{#2}}%
- \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
- \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
- \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
- \csname CCS@Punctuation@#2\endcsname
- \csname CCS@Specific@#2\endcsname}%
- \fi
- \ifx#3\relax\relax\else
- \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
- \textrightarrow\ }%
- \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
- \addtocounter{@concepts}{-1}%
- \ifnum#1>499\textbf{#3}\else
- \ifnum#1>299\textit{#3}\else
- #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}%
- \fi
- \ccsdesc@parse@finish}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\ccdesc@parse@finish}
- % \changes{v1.40}{2017/05/27}{Added macro}
- % Gobble everything to |\ccsdesc@parse@end|
- % \begin{macrocode}
- \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %\subsection{Copyright system}
- %\label{sec:copyright}
- %
- % This is from |acmcopyright.sty|
- %
- % \begin{macro}{\if@printcopyright}
- % Whether to print a copyright symbol
- % \begin{macrocode}
- \newif\if@printcopyright
- \@printcopyrighttrue
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@printpermission}
- % Whether to print the permission block
- % \begin{macrocode}
- \newif\if@printpermission
- \@printpermissiontrue
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\if@acmowned}
- % Whether the ACM owns the rights to the paper
- % \begin{macrocode}
- \newif\if@acmowned
- \@acmownedtrue
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \changes{v1.10}{2016/05/22}{Changes of `licensedothergov' wording}
- % \changes{v1.35}{2017/04/22}{If the copyright is set to usgov or
- % rigtsretained, the price is suppressed}
- % \changes{v1.51}{2018/04/05}{Suppress price if the copyright is set
- % to iw3c2w3 or iw3c2w3g}
- % \changes{v1.51}{2018/04/05}{Corrected the bug with price suppression}
- % Keys:
- % \begin{macrocode}
- \define@choicekey*{ACM@}{acmcopyrightmode}[%
- \acm@copyrightinput\acm@copyrightmode]{none,%
- acmcopyright,acmlicensed,rightsretained,%
- usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
- licensedcagov,licensedcagovmixed,othergov,licensedothergov,%
- iw3c2w3,iw3c2w3g}{%
- \@printpermissiontrue
- \@printcopyrighttrue
- \@acmownedtrue
- \ifnum\acm@copyrightmode=0\relax % none
- \@printpermissionfalse
- \@printcopyrightfalse
- \@acmownedfalse
- \fi
- \ifnum\acm@copyrightmode=2\relax % acmlicensed
- \@acmownedfalse
- \fi
- \ifnum\acm@copyrightmode=3\relax % rightsretained
- \@acmownedfalse
- \AtBeginDocument{\acmPrice{}}%
- \fi
- \ifnum\acm@copyrightmode=4\relax % usgov
- \@printpermissiontrue
- \@printcopyrightfalse
- \@acmownedfalse
- \AtBeginDocument{\acmPrice{}}%
- \fi
- \ifnum\acm@copyrightmode=6\relax % cagov
- \@acmownedfalse
- \fi
- \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
- \@acmownedfalse
- \fi
- \ifnum\acm@copyrightmode=9\relax % licensedcagov
- \@acmownedfalse
- \fi
- \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
- \@acmownedfalse
- \fi
- \ifnum\acm@copyrightmode=11\relax % othergov
- \@acmownedtrue
- \fi
- \ifnum\acm@copyrightmode=12\relax % licensedothergov
- \@acmownedfalse
- \fi
- \ifnum\acm@copyrightmode=13\relax % iw3c2w3
- \@acmownedfalse
- \AtBeginDocument{\acmPrice{}}%
- \fi
- \ifnum\acm@copyrightmode=14\relax % iw3c2w3g
- \@acmownedfalse
- \AtBeginDocument{\acmPrice{}}%
- \fi}
- % \end{macrocode}
- %
- % \begin{macro}{\setcopyright}
- % This is the syntactic sugar around setting keys.
- % \begin{macrocode}
- \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
- \setcopyright{acmcopyright}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@copyrightowner}
- % \changes{v1.40}{2017/06/16}{Added new copyright version:
- % licensedcagov}
- % \changes{v1.52}{2018/04/09}{Rewording of licenses}
- % Here is the owner of the copyright
- % \begin{macrocode}
- \def\@copyrightowner{%
- \ifcase\acm@copyrightmode\relax % none
- \or % acmcopyright
- Association for Computing Machinery.
- \or % acmlicensed
- Copyright held by the owner/author(s). Publication rights licensed to
- ACM\@.
- \or % rightsretained
- Copyright held by the owner/author(s).
- \or % usgov
- \or % usgovmixed
- Association for Computing Machinery.
- \or % cagov
- Crown in Right of Canada.
- \or %cagovmixed
- Association for Computing Machinery.
- \or %licensedusgovmixed
- Copyright held by the owner/author(s). Publication rights licensed to
- ACM\@.
- \or % licensedcagov
- Crown in Right of Canada. Publication rights licensed to
- ACM\@.
- \or %licensedcagovmixed
- Copyright held by the owner/author(s). Publication rights licensed to
- ACM\@.
- \or % othergov
- Association for Computing Machinery.
- \or % licensedothergov
- Copyright held by the owner/author(s). Publication rights licensed to
- ACM\@.
- \or % ic2w3www
- IW3C2 (International World Wide Web Conference Committee), published
- under Creative Commons CC-BY~4.0 License.
- \or % ic2w3wwwgoogle
- IW3C2 (International World Wide Web Conference Committee), published
- under Creative Commons CC-BY-NC-ND~4.0 License.
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@formatdoi}
- % \changes{v1.03}{2016/04/22}{Added macro}
- % \changes{v1.32}{2017/04/07}{New doi format}
- % Print a clickable DOI
- % \begin{macrocode}
- \def\@formatdoi#1{\url{https://doi.org/#1}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@copyrightpermission}
- % \changes{v1.40}{2017/06/16}{Added new copyright version: licensedcagov}
- % \changes{v1.50}{2018/02/07}{New copyright statements for iw3c2w3[g]}
- % \changes{v1.52}{2018/04/09}{Another rewording of copyright
- % statements for iw3c2w3[g]}
- % The canned permission block.
- % \begin{macrocode}
- \def\@copyrightpermission{%
- \ifcase\acm@copyrightmode\relax % none
- \or % acmcopyright
- Permission to make digital or hard copies of all or part of this
- work for personal or classroom use is granted without fee provided
- that copies are not made or distributed for profit or commercial
- advantage and that copies bear this notice and the full citation on
- the first page. Copyrights for components of this work owned by
- others than ACM must be honored. Abstracting with credit is
- permitted. To copy otherwise, or republish, to post on servers or to
- redistribute to lists, requires prior specific permission
- and\hspace*{.5pt}/or a fee. Request permissions from
- permissions@acm.org.
- \or % acmlicensed
- Permission to make digital or hard copies of all or part of this
- work for personal or classroom use is granted without fee provided
- that copies are not made or distributed for profit or commercial
- advantage and that copies bear this notice and the full citation on
- the first page. Copyrights for components of this work owned by
- others than the author(s) must be honored. Abstracting with credit
- is permitted. To copy otherwise, or republish, to post on servers
- or to redistribute to lists, requires prior specific permission
- and\hspace*{.5pt}/or a fee. Request permissions from
- permissions@acm.org.
- \or % rightsretained
- Permission to make digital or hard copies of part or all of this work
- for personal or classroom use is granted without fee provided that
- copies are not made or distributed for profit or commercial advantage
- and that copies bear this notice and the full citation on the first
- page. Copyrights for third-party components of this work must be
- honored. For all other uses, contact the
- owner\hspace*{.5pt}/author(s).
- \or % usgov
- This paper is authored by an employee(s) of the United States
- Government and is in the public domain. Non-exclusive copying or
- redistribution is allowed, provided that the article citation is
- given and the authors and agency are clearly identified as its
- source.
- \or % usgovmixed
- ACM acknowledges that this contribution was authored or co-authored
- by an employee, contractor, or affiliate of the United States government. As such,
- the United States government retains a nonexclusive, royalty-free right to
- publish or reproduce this article, or to allow others to do so, for
- government purposes only.
- \or % cagov
- This article was authored by employees of the Government of Canada.
- As such, the Canadian government retains all interest in the
- copyright to this work and grants to ACM a nonexclusive,
- royalty-free right to publish or reproduce this article, or to allow
- others to do so, provided that clear attribution is given both to
- the authors and the Canadian government agency employing them.
- Permission to make digital or hard copies for personal or classroom
- use is granted. Copies must bear this notice and the full citation
- on the first page. Copyrights for components of this work owned by
- others than the Canadian Government must be honored. To copy
- otherwise, distribute, republish, or post, requires prior specific
- permission and\hspace*{.5pt}/or a fee. Request permissions from
- permissions@acm.org.
- \or % cagovmixed
- ACM acknowledges that this contribution was co-authored by an
- affiliate of the national government of Canada. As such, the Crown
- in Right of Canada retains an equal interest in the copyright.
- Reprints must include clear attribution to ACM and the author's
- government agency affiliation. Permission to make digital or hard
- copies for personal or classroom use is granted. Copies must bear
- this notice and the full citation on the first page. Copyrights for
- components of this work owned by others than ACM must be honored.
- To copy otherwise, distribute, republish, or post, requires prior
- specific permission and\hspace*{.5pt}/or a fee. Request permissions
- from permissions@acm.org.
- \or % licensedusgovmixed
- Publication rights licensed to ACM\@. ACM acknowledges that this
- contribution was authored or co-authored by an employee, contractor
- or affiliate of the United States government. As such, the
- Government retains a nonexclusive, royalty-free right to publish or
- reproduce this article, or to allow others to do so, for Government
- purposes only.
- \or % licensedcagov
- This article was authored by employees of the Government of Canada.
- As such, the Canadian government retains all interest in the
- copyright to this work and grants to ACM a nonexclusive,
- royalty-free right to publish or reproduce this article, or to allow
- others to do so, provided that clear attribution is given both to
- the authors and the Canadian government agency employing them.
- Permission to make digital or hard copies for personal or classroom
- use is granted. Copies must bear this notice and the full citation
- on the first page. Copyrights for components of this work owned by
- others than the Canadian Government must be honored. To copy
- otherwise, distribute, republish, or post, requires prior specific
- permission and\hspace*{.5pt}/or a fee. Request permissions from
- permissions@acm.org.
- \or % licensedcagovmixed
- Publication rights licensed to ACM\@. ACM acknowledges that this
- contribution was authored or co-authored by an employee, contractor
- or affiliate of the national government of Canada. As such, the
- Government retains a nonexclusive, royalty-free right to publish or
- reproduce this article, or to allow others to do so, for Government
- purposes only.
- \or % othergov
- ACM acknowledges that this contribution was authored or co-authored
- by an employee, contractor or affiliate of a national government. As
- such, the Government retains a nonexclusive, royalty-free right to
- publish or reproduce this article, or to allow others to do so, for
- Government purposes only.
- \or % licensedothergov
- Publication rights licensed to ACM\@. ACM acknowledges that this
- contribution was authored or co-authored by an employee, contractor
- or affiliate of a national government. As such, the Government
- retains a nonexclusive, royalty-free right to publish or reproduce
- this article, or to allow others to do so, for Government purposes
- only.
- \or % iw3c2w3
- This paper is published under the Creative Commons Attribution~4.0
- International (CC-BY~4.0) license. Authors reserve their rights to
- disseminate the work on their personal and corporate Web sites with
- the appropriate attribution.
- \or % iw3c2w3g
- This paper is published under the Creative Commons
- Attribution-NonCommercial-NoDerivs~4.0 International
- (CC-BY-NC-ND~4.0) license. Authors reserve their rights to
- disseminate the work on their personal and corporate Web sites with
- the appropriate attribution.
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- %
- %
- % \begin{macro}{\copyrightyear}
- % By default, the copyright year is the same as \cs{acmYear}, but
- % one can override this:
- % \begin{macrocode}
- \def\copyrightyear#1{\def\@copyrightyear{#1}}
- \copyrightyear{\@acmYear}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@teaserfigures}
- % The teaser figures container
- % \begin{macrocode}
- \def\@teaserfigures{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{teaserfigure}
- % The teaser figure
- % \begin{macrocode}
- \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@saveteaser}
- % Saving the teaser
- % \begin{macrocode}
- \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\thanks}
- % We redefine |amsart| \cs{thanks} so the |anonymous| key works
- % \begin{macrocode}
- \renewcommand{\thanks}[1]{%
- \@ifnotempty{#1}{%
- \if@ACM@anonymous
- \g@addto@macro\thankses{\thanks{A note}}%
- \else
- \g@addto@macro\thankses{\thanks{#1}}%
- \fi}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \subsection{Typesetting top matter}
- % \label{sec:makefile}
- %
- % \begin{macro}{\mktitle@bx}
- % Some of our formats use a two-column design. Some use a one-column
- % design. In all cases we use a wide title. Thus we typeset the top
- % matter in a special box to be used in the construction
- % \cs{@twocolumn}\oarg{box}.
- % \begin{macrocode}
- \newbox\mktitle@bx
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\maketitle}
- % \changes{v1.03}{2016/04/22}{Added special case of authorversion}
- % \changes{v1.07}{2016/05/03}{Corrected a bug with abstract footnotes}
- % \changes{v1.07}{2016/05/03}{Corrected a bug with permssion and
- % footnotes order}
- % \changes{v1.10}{2016/05/23}{Corrected a bug with doi in manuscript
- % and author vertsion,
- % \url{https://github.com/borisveytsman/acmart/issues/36}}
- % \changes{v1.12}{2016/05/30}{Moved thankses to copyrightpermission box}
- % \changes{v1.33}{2017/03/27}{Fixed the bug with figures on top and
- % bottom of the title page, thanks to David Epstein}
- % \changes{v1.34}{2017/04/09}{Deleted `DOI' from doi numbers}
- % \changes{v1.34}{2017/04/09}{Added date to the bibstrip in conf proceedings}
- % \changes{v1.34}{2017/04/09}{The \cs{terms} command is now obsolete}
- % \changes{v1.34}{2017/04/11}{Rearranged bibstrip}
- % \changes{v1.44}{2017/07/30}{Empty DOI or ISBN are not printed (by
- % Michael Ekstrand)}
- % \changes{v1.46}{2017/08/27}{Added authors' addresses}
- % \changes{v1.46}{2017/08/28}{Thankses go before authors' addresses}
- % \changes{v1.48}{2017/09/23}{Added acmart and version info to
- % pdfcreator tag}
- % \changes{v1.48}{2017/10/14}{Suppressed empty DOI (Serguei Mokhov)}
- % \changes{v1.48}{2017/11/18}{Added language and doctitle attributes
- % to PDF (Andreas Reichinger)}
- % \changes{v1.55}{2018/10/14}{Fixes topnum}
- % \changes{v1.58}{2019/01/23}{Original \cs{vspace} inside
- % \cs{maketitle}}
- % \changes{v1.64}{2019/08/17}{Added a switch setting to show that
- % \cs{maketitle} is typeset}
- % The (in)famous \cs{maketitle}. Note that in |sigchi-a| mode, authors
- % are \emph{not} in the title box.
- %
- % Another note: there is a subtle difference between author notes,
- % title notes and thanks. The latter two refer to the paper itself
- % and therefore belong to the copyright/permission block. By the
- % way, this was the default behavior of the old ACM classes.
- % \begin{macrocode}
- \def\maketitle{%
- \@ACM@maketitle@typesettrue
- \if@ACM@anonymous
- % Anonymize omission of \author-s
- \ifnum\num@authorgroups=0\author{}\fi
- \fi
- \begingroup
- \let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig
- \let\@footnotemark\@footnotemark@nolink
- \let\@footnotetext\@footnotetext@nolink
- \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
- \hsize=\textwidth
- \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
- \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
- \@printtopmatter
- \if@ACM@sigchiamode\@mkauthors\fi
- \setcounter{footnote}{0}%
- \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
- \@titlenotes
- \@subtitlenotes
- \@authornotes
- \let\@makefnmark\relax
- \let\@thefnmark\relax
- \let\@makefntext\noindent
- \ifx\@empty\thankses\else
- \footnotetextauthorsaddresses{%
- \def\par{\let\par\@par}\parindent\z@\@setthanks}%
- \fi
- \ifx\@empty\@authorsaddresses\else
- \if@ACM@anonymous\else
- \if@ACM@journal@bibstrip
- \footnotetextauthorsaddresses{%
- \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
- \fi
- \fi
- \fi
- \if@ACM@nonacm\else\footnotetextcopyrightpermission{%
- \if@ACM@authordraft
- \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
- Unpublished working draft. Not for distribution.}}%
- \color[gray]{0.9}%
- \fi
- \parindent\z@\parskip0.1\baselineskip
- \if@ACM@authorversion\else
- \if@printpermission\@copyrightpermission\par\fi
- \fi
- \if@ACM@manuscript\else
- \if@ACM@journal@bibstrip\else % Print the conference information
- {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
- \fi
- \fi
- \if@printcopyright
- \copyright\ \@copyrightyear\ \@copyrightowner\\
- \else
- \@copyrightyear.\
- \fi
- \if@ACM@manuscript
- Manuscript submitted to ACM\\
- \else
- \if@ACM@authorversion
- This is the author's version of the work. It is posted here for
- your personal use. Not for redistribution. The definitive Version
- of Record was published in
- \if@ACM@journal@bibstrip
- \emph{\@journalName}%
- \else
- \emph{\@acmBooktitle}%
- \fi
- \ifx\@acmDOI\@empty
- .
- \else
- , \@formatdoi{\@acmDOI}.
- \fi\\
- \else
- \if@ACM@nonacm\else
- \if@ACM@journal@bibstrip
- \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
- \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
- \@formatdoi{\@acmDOI}%
- \else % Conference
- \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN
- \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
- \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
- \fi
- \fi
- \fi
- \fi}
- \fi
- \endgroup
- \setcounter{footnote}{0}%
- \@mkabstract
- \if@ACM@printccs
- \ifx\@concepts\@empty\else\bgroup
- {\@specialsection{CCS Concepts}%
- \@concepts\par}\egroup
- \fi
- \fi
- \ifx\@keywords\@empty\else\bgroup
- {\if@ACM@journal
- \@specialsection{Additional Key Words and Phrases}%
- \else
- \@specialsection{Keywords}%
- \fi
- \@keywords}\par\egroup
- \fi
- \andify\authors
- \andify\shortauthors
- \global\let\authors=\authors
- \global\let\shortauthors=\shortauthors
- \if@ACM@printacmref
- \@mkbibcitation
- \fi
- \hypersetup{%
- pdfauthor={\authors},
- pdftitle={\@title},
- pdfsubject={\@concepts},
- pdfkeywords={\@keywords},
- pdfcreator={LaTeX with acmart
- \csname ver@acmart.cls\endcsname\space
- and hyperref
- \csname ver@hyperref.sty\endcsname}}%
- \global\@topnum\z@ % this prevents floats from falling
- % at the top of page 1
- \global\@botnum\z@ % we do not want them to be on the bottom either
- \@printendtopmatter
- \@afterindentfalse
- \@afterheading
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@specialsection}
- % This macro starts sections for proceedings and uses \cs{small} for journals
- % \begin{macrocode}
- \def\@specialsection#1{%
- \ifcase\ACM@format@nr
- \relax % manuscript
- \par\medskip\small\noindent#1: %
- \or % acmsmall
- \par\medskip\small\noindent#1: %
- \or % acmlarge
- \par\medskip\small\noindent#1: %
- \or % acmtog
- \par\medskip\small\noindent#1: %
- \or % sigconf
- \section*{#1}%
- \or % siggraph
- \section*{#1}%
- \or % sigplan
- \paragraph*{#1}%
- \or % sigchi
- \section*{#1}%
- \or % sigchi-a
- \section*{#1}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@printtopmatter}
- % \changes{v1.06}{2016/05/01}{Added processing badges}
- % \changes{v1.46}{2017/08/29}{Deleted rule}
- % The printing of top matter starts a new page and uses the given
- % title box. Note that for |sigchi-a| we print badges here rather
- % than in \cs{mktitle} since we want them in the margins.
- % \begin{macrocode}
- \def\@printtopmatter{%
- \ifx\@startPage\@empty
- \gdef\@startPage{1}%
- \else
- \setcounter{page}{\@startPage}%
- \fi
- \thispagestyle{firstpagestyle}%
- \noindent
- \ifcase\ACM@format@nr
- \relax % manuscript
- \box\mktitle@bx\par
- \or % acmsmall
- \box\mktitle@bx\par
- \or % acmlarge
- \box\mktitle@bx\par
- \or % acmtog
- \twocolumn[\box\mktitle@bx]%
- \or % sigconf
- \twocolumn[\box\mktitle@bx]%
- \or % siggraph
- \twocolumn[\box\mktitle@bx]%
- \or % sigplan
- \twocolumn[\box\mktitle@bx]%
- \or % sigchi
- \twocolumn[\box\mktitle@bx]%
- \or % sigchi-a
- \par\box\mktitle@bx\par\bigskip
- \if@ACM@badge
- \marginpar{\noindent
- \ifx\@acmBadgeL@image\@empty\else
- \href{\@acmBadgeL@url}{%
- \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
- \hskip\@ACM@badge@skip
- \fi
- \ifx\@acmBadgeR@image\@empty\else
- \href{\@acmBadgeR@url}{%
- \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
- \fi}%
- \fi
- \fi
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mktitle}
- % The title of the article
- % \begin{macrocode}
- \def\@mktitle{%
- \ifcase\ACM@format@nr
- \relax % manuscript
- \@mktitle@i
- \or % acmsmall
- \@mktitle@i
- \or % acmlarge
- \@mktitle@i
- \or % acmtog
- \@mktitle@i
- \or % sigconf
- \@mktitle@iii
- \or % siggraph
- \@mktitle@iii
- \or % sigplan
- \@mktitle@iii
- \or % sigchi
- \@mktitle@iii
- \or % sigchi-a
- \@mktitle@iv
- \fi
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@titlefont}
- % \changes{v1.06}{2016/05/01}{Added macro}
- % \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to
- % \cs{sffamily}\cs{bfseries}}
- % The font to typeset the title
- % \begin{macrocode}
- \def\@titlefont{%
- \ifcase\ACM@format@nr
- \relax % manuscript
- \LARGE\sffamily\bfseries
- \or % acmsmall
- \LARGE\sffamily\bfseries
- \or % acmlarge
- \LARGE\sffamily\bfseries
- \or % acmtog
- \Huge\sffamily
- \or % sigconf
- \Huge\sffamily\bfseries
- \or % siggraph
- \Huge\sffamily\bfseries
- \or % sigplan
- \Huge\bfseries
- \or % sigchi
- \Huge\sffamily\bfseries
- \or % sigchi-a
- \Huge\bfseries
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@subtitlefont}
- % \changes{v1.06}{2016/05/01}{Added macro}
- % \changes{v1.33}{2017/03/12}{Added \cs{normalsize}}
- % The font to typeset the subtitle
- % \begin{macrocode}
- \def\@subtitlefont{\normalsize
- \ifcase\ACM@format@nr
- \relax % manuscript
- \mdseries
- \or % acmsmall
- \mdseries
- \or % acmlarge
- \mdseries
- \or % acmtog
- \LARGE
- \or % sigconf
- \LARGE\mdseries
- \or % siggraph
- \LARGE\mdseries
- \or % sigplan
- \LARGE\mdseries
- \or % sigchi
- \LARGE\mdseries
- \or % sigchi-a
- \mdseries
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mktitle@i}
- % \changes{v1.06}{2016/05/01}{Made generic}
- % \changes{v1.06}{2016/05/01}{Added processing badges}
- % The version of \cs{mktitle} for most journals
- % \begin{macrocode}
- \def\@mktitle@i{\hsize=\textwidth
- \@ACM@title@width=\hsize
- \ifx\@acmBadgeL@image\@empty\else
- \advance\@ACM@title@width by -\@ACM@badge@width
- \advance\@ACM@title@width by -\@ACM@badge@skip
- \fi
- \ifx\@acmBadgeR@image\@empty\else
- \advance\@ACM@title@width by -\@ACM@badge@width
- \advance\@ACM@title@width by -\@ACM@badge@skip
- \fi
- \setbox\mktitle@bx=\vbox{\noindent\@titlefont
- \ifx\@acmBadgeL@image\@empty\else
- \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
- \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
- \hskip\@ACM@badge@skip
- \fi
- \parbox[t]{\@ACM@title@width}{\raggedright
- \@titlefont\noindent
- \@title
- \ifx\@subtitle\@empty\else
- \par\noindent{\@subtitlefont\@subtitle}
- \fi}%
- \ifx\@acmBadgeR@image\@empty\else
- \hskip\@ACM@badge@skip
- \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
- \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
- \fi
- \par\bigskip}}%
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mktitle@ii}
- % \changes{v1.06}{2016/05/01}{Now this macro is obsolete}
- % The version of \cs{mktitle} for TOG. Since v1.06, this is subsumed by
- % the \cs{mktitle@i} macro
- % \end{macro}
- %
- %
- % \begin{macro}{\@mktitle@iii}
- % \changes{v1.06}{2016/05/01}{Made more generic}
- % \changes{v1.06}{2016/05/01}{Added processing badges}
- % The version of \cs{@mktitle} for SIG proceedings. Note that since
- % the title is centered, we leave space for the left badge even if
- % only the right badge is defined.
- % \begin{macrocode}
- \def\@mktitle@iii{\hsize=\textwidth
- \setbox\mktitle@bx=\vbox{\@titlefont\centering
- \@ACM@title@width=\hsize
- \if@ACM@badge
- \advance\@ACM@title@width by -2\@ACM@badge@width
- \advance\@ACM@title@width by -2\@ACM@badge@skip
- \parbox[b]{\@ACM@badge@width}{\strut
- \ifx\@acmBadgeL@image\@empty\else
- \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
- \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
- \fi}%
- \hskip\@ACM@badge@skip
- \fi
- \parbox[t]{\@ACM@title@width}{\centering\@titlefont
- \@title
- \ifx\@subtitle\@empty\else
- \par\noindent{\@subtitlefont\@subtitle}
- \fi
- }%
- \if@ACM@badge
- \hskip\@ACM@badge@skip
- \parbox[b]{\@ACM@badge@width}{\strut
- \ifx\@acmBadgeR@image\@empty\else
- \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
- \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
- \fi}%
- \fi
- \par\bigskip}}%
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@mktitle@iv}
- % \changes{v1.06}{2016/05/01}{Made more generic}
- % The version of \cs{@mktitle} for |sigchi-a|
- % \begin{macrocode}
- \def\@mktitle@iv{\hsize=\textwidth
- \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
- \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
- \noindent\@title
- \ifx\@subtitle\@empty\else
- \par\noindent\@subtitlefont\@subtitle
- \fi
- \par\bigskip}}%
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@ACM@addtoaddress}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % This macro adds an item to the address using the following rules:
- % \begin{enumerate}
- % \item If we start a paragraph, add the item
- % \item Otherwise, add a comma and the item
- % \item However, the comma is deleted if it is at the end of a
- % line. We use the magic \cs{cleaders} trick for this.
- % \end{enumerate}
- % \begin{macrocode}
- \newbox\@ACM@commabox
- \def\@ACM@addtoaddress#1{%
- \ifvmode\else
- \if@ACM@affiliation@obeypunctuation\else
- \setbox\@ACM@commabox=\hbox{, }%
- \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
- \fi\fi
- #1}
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\institution}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \begin{macro}{\position}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \begin{macro}{\department}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.30}{2017/02/10}{Added optional parameter}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \begin{macro}{\streetaddress}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \changes{v1.40}{2017/06/15}{We now do not print this even in SIG}
- % \begin{macro}{\city}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \changes{v1.40}{2017/06/15}{We now do not print this even in SIG}
- % \begin{macro}{\state}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \changes{v1.40}{2017/06/15}{We now do not print this even in SIG}
- % \begin{macro}{\postcode}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \changes{v1.40}{2017/06/15}{We now do not print this even in SIG}
- % \begin{macro}{\country}
- % \changes{v1.15}{2016/07/03}{Added macro}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \changes{v1.40}{2017/05/27}{Fixed bugs with extra spaces}
- % \changes{v1.43}{2017/07/11}{Added comma before country for journals}
- % \changes{v1.46}{2017/08/30}{Corrected spacing for institution}
- % Theoretically we can define the macros for \cs{affiliation} inside
- % the \cs{@mkauthors}-style commands. However, this would lead to a
- % strange error if an author uses them outside \cs{affiliation}. Of
- % course we can make them produce an error message, but\ldots
- % \begin{macrocode}
- \def\streetaddress#1{\unskip\ignorespaces}
- \def\postcode#1{\unskip\ignorespaces}
- \if@ACM@journal
- \def\position#1{\unskip\ignorespaces}
- \def\institution#1{\unskip~#1\ignorespaces}
- \def\city#1{\unskip\ignorespaces}
- \def\state#1{\unskip\ignorespaces}
- \newcommand\department[2][0]{\unskip\ignorespaces}
- \def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
- \else
- \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
- \def\institution#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
- \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
- #2\else#2\par\fi}%
- % \def\streetaddress#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
- \let\city\@ACM@addtoaddress
- \let\state\@ACM@addtoaddress
- % \def\postcode#1{\if@ACM@affiliation@obeypunctuation#1\else\unskip\space#1\fi}%
- \let\country\@ACM@addtoaddress
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\@mkauthors}
- % \changes{v1.17}{2016/07/09}{TOG now uses the same authors block as
- % other journals}
- % Typesetting the authors
- % \begin{macrocode}
- \def\@mkauthors{\begingroup
- \hsize=\textwidth
- \ifcase\ACM@format@nr
- \relax % manuscript
- \@mkauthors@i
- \or % acmsmall
- \@mkauthors@i
- \or % acmlarge
- \@mkauthors@i
- \or % acmtog
- \@mkauthors@i
- \or % sigconf
- \@mkauthors@iii
- \or % siggraph
- \@mkauthors@iii
- \or % sigplan
- \@mkauthors@iii
- \or % sigchi
- \@mkauthors@iii
- \or % sigchi-a
- \@mkauthors@iv
- \fi
- \endgroup
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@authorfont}
- % Somehow different conferences use different fonts for author
- % names. Why?
- % \begin{macrocode}
- \def\@authorfont{\Large\sffamily}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@affiliationfont}
- % Font for affiliations
- % \begin{macrocode}
- \def\@affiliationfont{\normalsize\normalfont}
- % \end{macrocode}
- % \end{macro}
- %
- % \changes{v1.13}{2016/06/06}{Font adjustments for acmsmall}
- % Adjusting fonts for different formats
- % \begin{macrocode}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \def\@authorfont{\large\sffamily}
- \def\@affiliationfont{\small\normalfont}
- \or % acmlarge
- \or % acmtog
- \def\@authorfont{\LARGE\sffamily}
- \def\@affiliationfont{\large}
- \or % sigconf
- \def\@authorfont{\LARGE}
- \def\@affiliationfont{\large}
- \or % siggraph
- \def\@authorfont{\normalsize\normalfont}
- \def\@affiliationfont{\normalsize\normalfont}
- \or % sigplan
- \def\@authorfont{\Large\normalfont}
- \def\@affiliationfont{\normalsize\normalfont}
- \or % sigchi
- \def\@authorfont{\bfseries}
- \def\@affiliationfont{\mdseries}
- \or % sigchi-a
- \def\@authorfont{\bfseries}
- \def\@affiliationfont{\mdseries}
- \fi
- % \end{macrocode}
- %
- % \begin{macro}{\@typeset@author@line}
- % \changes{v1.18}{2016/07/12}{Added macro}
- % At this point we have \cs{@currentauthors} and
- % \cs{@currentaffiliations}. We typeset them in the journal style
- % \begin{macrocode}
- \def\@typeset@author@line{%
- \andify\@currentauthors\par\noindent
- \@currentauthors\def\@currentauthors{}%
- \ifx\@currentaffiliations\@empty\else
- \andify\@currentaffiliations
- \unskip, {\@currentaffiliations}\par
- \fi
- \def\@currentaffiliations{}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@mkauthors@i}
- % \changes{v1.18}{2016/07/12}{Now we andify affiliations}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \changes{v1.40}{2017/06/04}{Switched to MakeTextUppercase}
- % This version is used in most journal formats. Note that \cs{and} between
- % authors with the same affiliation becomes \verb*| and |:
- % \begin{macrocode}
- \def\@mkauthors@i{%
- \def\@currentauthors{}%
- \def\@currentaffiliations{}%
- \global\let\and\@typeset@author@line
- \def\@author##1{%
- \ifx\@currentauthors\@empty
- \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
- \else
- \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
- \fi
- \gdef\and{}}%
- \def\email##1##2{}%
- \def\affiliation##1##2{%
- \def\@tempa{##2}\ifx\@tempa\@empty\else
- \ifx\@currentaffiliations\@empty
- \gdef\@currentaffiliations{%
- \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
- \setkeys{@ACM@affiliation@}{##1}%
- \@affiliationfont##2}%
- \else
- \g@addto@macro{\@currentaffiliations}{\and
- \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
- \setkeys{@ACM@affiliation@}{##1}##2}%
- \fi
- \fi
- \global\let\and\@typeset@author@line}%
- \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
- \noindent\addresses\@typeset@author@line
- \par\medskip}%
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mkauthors@ii}
- % \changes{v1.17}{2016/07/09}{Deleted}
- % The \cs{@mkauthors@ii} command was the version used in |acmtog|.
- % It is no longer necessary.
- %
- % \end{macro}
- %
- % \begin{macro}{\author@bx}
- % The box to put an individual author in
- % \begin{macrocode}
- \newbox\author@bx
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\author@bx@wd}
- % The width of the author box
- % \begin{macrocode}
- \newdimen\author@bx@wd
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\author@bx@sep}
- % The separation between author boxes
- % \begin{macrocode}
- \newskip\author@bx@sep
- \author@bx@sep=1pc\relax
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@typeset@author@bx}
- % \changes{v1.15}{2016/07/04}{Moved to separate macro}
- % \changes{v1.61}{2019/05/26}{Added \cs{normalbaselines}}
- % Typesetting the box with authors. Note that in |sigchi-a| the box
- % is not centered.
- % \begin{macrocode}
- \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd
- \def\and{\par}\normalbaselines
- \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author@bx\hspace{\author@bx@sep}%
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@mkauthors@iii}
- % \changes{v1.15}{2016/07/04}{New authors system}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \changes{v1.36}{2017/05/12}{Added authorsperrow overrride}
- % The |sigconf| version. Here we use a centered design with each
- % author in a separate box.
- % \begin{macrocode}
- \def\@mkauthors@iii{%
- % \end{macrocode}
- % First, we need to determine the design of the author strip. The
- % boxes are separated by \cs{author@bx@sep} plus two
- % \cs{author@bx@sep} margins. This means that each box must be of
- % width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$,
- % where $N$ is the number of boxes per row.
- % \begin{macrocode}
- \author@bx@wd=\textwidth\relax
- \advance\author@bx@wd by -\author@bx@sep\relax
- \ifnum\@ACM@authorsperrow>0\relax
- \divide\author@bx@wd by \@ACM@authorsperrow\relax
- \else
- \ifcase\num@authorgroups
- \relax % 0?
- \or % 1=one author per row
- \or % 2=two authors per row
- \divide\author@bx@wd by \num@authorgroups\relax
- \or % 3=three authors per row
- \divide\author@bx@wd by \num@authorgroups\relax
- \or % 4=two authors per row (!)
- \divide\author@bx@wd by 2\relax
- \else % three authors per row
- \divide\author@bx@wd by 3\relax
- \fi
- \fi
- \advance\author@bx@wd by -\author@bx@sep\relax
- % \end{macrocode}
- % Now, parsing of \cs{addresses}:
- % \begin{macrocode}
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}%
- \def\@author##1{\ifx\@currentauthors\@empty
- \gdef\@currentauthors{\par##1}%
- \else
- \g@addto@macro\@currentauthors{\par##1}%
- \fi
- \gdef\and{}}%
- \def\email##1##2{\ifx\@currentaffiliation\@empty
- \gdef\@currentaffiliation{\bgroup
- \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
- \else
- \g@addto@macro\@currentaffiliation{\par\bgroup
- \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
- \fi}%
- \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
- \gdef\@currentaffiliation{%
- \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
- \setkeys{@ACM@affiliation@}{##1}##2}%
- \else
- \g@addto@macro\@currentaffiliation{\par
- \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
- \setkeys{@ACM@affiliation@}{##1}##2}%
- \fi
- \global\let\and\@typeset@author@bx
- }%
- % \end{macrocode}
- % Actual typesetting is done by the \cs{and} macro:
- % \begin{macrocode}
- \hsize=\textwidth
- \global\setbox\mktitle@bx=\vbox{\noindent
- \box\mktitle@bx\par\medskip\leavevmode
- \lineskip=1pc\relax\centering\hspace*{-1em}%
- \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@mkauthors@iv}
- % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
- % \changes{v1.36}{2017/05/12}{Added authorsperrow overrride}
- % The |sigchi-a| version. We put authors in the main text with
- % no more than 2 authors per line, unless overriden.
- % \begin{macrocode}
- \def\@mkauthors@iv{%
- % \end{macrocode}
- % First, we need to determine the design of the author strip. The
- % boxes are separated by \cs{author@bx@sep} plus two
- % \cs{author@bx@sep} margins. This means that each box must be of
- % width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$,
- % where $N$ is the number of boxes per row.
- % \begin{macrocode}
- \author@bx@wd=\columnwidth\relax
- \advance\author@bx@wd by -\author@bx@sep\relax
- \ifnum\@ACM@authorsperrow>0\relax
- \divide\author@bx@wd by \@ACM@authorsperrow\relax
- \else
- \ifcase\num@authorgroups
- \relax % 0?
- \or % 1=one author per row
- \else % 2=two authors per row
- \divide\author@bx@wd by 2\relax
- \fi
- \fi
- \advance\author@bx@wd by -\author@bx@sep\relax
- % \end{macrocode}
- % Now, parsing of \cs{addresses}:
- % \begin{macrocode}
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}%
- \def\@author##1{\ifx\@currentauthors\@empty
- \gdef\@currentauthors{\par##1}%
- \else
- \g@addto@macro\@currentauthors{\par##1}%
- \fi
- \gdef\and{}}%
- \def\email##1##2{\ifx\@currentaffiliation\@empty
- \gdef\@currentaffiliation{\nolinkurl{##2}}%
- \else
- \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
- \fi}%
- \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
- \gdef\@currentaffiliation{%
- \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
- \setkeys{@ACM@affiliation@}{##1}##2}%
- \else
- \g@addto@macro\@currentaffiliation{\par
- \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
- \setkeys{@ACM@affiliation@}{##1}##2}%
- \fi
- \global\let\and\@typeset@author@bx}%
- %
- % \end{macrocode}
- % Actual typesetting is done by the \cs{and} macro
- % \begin{macrocode}
- \bgroup\hsize=\columnwidth
- \par\raggedright\leftskip=\z@
- \lineskip=1pc\noindent
- \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mkauthorsaddresses}
- % \changes{v1.46}{2017/08/27}{Introduced macro}
- % \changes{v1.65}{2019/10/13}{Deleted cs{@addpunct}}
- % Typesetting authors' addresses in the footnote style
- % \begin{macrocode}
- \def\@mkauthorsaddresses{%
- \ifnum\num@authors>1\relax
- Authors' \else Author's \fi
- \ifnum\num@authorgroups>1\relax
- addresses: \else address: \fi
- \bgroup
- \def\streetaddress##1{\unskip, ##1}%
- \def\postcode##1{\unskip, ##1}%
- \def\position##1{\unskip\ignorespaces}%
- \def\institution##1{\unskip, ##1}%
- \def\city##1{\unskip, ##1}%
- \def\state##1{\unskip, ##1}%
- \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
- \def\country##1{\unskip, ##1}%
- \def\and{\unskip; }%
- \def\@author##1{##1}%
- \def\email##1##2{\unskip, \nolinkurl{##2}}%
- \addresses
- \egroup}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@setaddresses}
- % This is an |amsart| macro that we do not need.
- % \begin{macrocode}
- \def\@setaddresses{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@authornotemark}
- % Adding a footnote mark to authors. This version adds a ``normal''
- % footnote mark.
- % \begin{macrocode}
- \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@@authornotemark}
- % \changes{v1.39}{2017/05/14}{Added macro}
- % Adding a footnote mark to authors with a given number
- % \begin{macrocode}
- \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mkteasers}
- % Typesetting the teasers
- % \changes{v1.56}{2018/11/1}{Added check for description}
- % \begin{macrocode}
- \def\@mkteasers{%
- \ifx\@teaserfigures\@empty\else
- \def\@teaser##1{\par\bigskip\bgroup
- \captionsetup{type=figure}##1\egroup\par}
- \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
- \noindent\@Description@presentfalse
- \@teaserfigures\par\if@Description@present\else
- \global\@undescribed@imagestrue
- \ClassWarning{\@classname}{A possible image without
- description}\fi
- \medskip}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mkabstract}
- % \changes{v1.19}{2016/07/28}{Include 'Abstract' in PDF bookmarks
- % (Matthew Fluet)}
- % \changes{v1.20}{2016/08/03}{Deleted spurious space}
- % \changes{v1.29}{2017/01/22}{Removed spurious indentation (John
- % Wickerson)}
- % \changes{v1.48}{2017/09/16}{Removed spurious indentation if abstract
- % is followed by an empty line}
- % Typesetting the abstract
- % \begin{macrocode}
- \def\@mkabstract{\bgroup
- \ifx\@abstract\@lempty\else
- {\phantomsection\addcontentsline{toc}{section}{Abstract}%
- \if@ACM@journal
- \everypar{\setbox\z@\lastbox\everypar{}}\small
- \else
- \section*{\abstractname}%
- \fi
- \ignorespaces\@abstract\par}%
- \fi\egroup}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@mkbibcitation}
- % \changes{v1.17}{2016/07/10}{Changed format for sigs}
- % \changes{v1.17}{2016/07/10}{Added \cs{nobreak}}
- % \changes{v1.31}{2017/03/04}{Disabled linebreak}
- % \changes{v1.34}{2017/04/09}{Deleted DOI from doi numbers}
- % \changes{v1.44}{2017/07/30}{If the paper has just one page, use
- % `page' instead of `pages'}
- % \changes{v1.46}{2017/08/25}{Added subtitle}
- % \changes{v1.54}{2018/06/10}{Bug corrected (Ross Moore)}
- % \changes{v1.55}{2018/07/25}{Bug corrected}
- % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
- % Print the |bibcitation| format
- % \begin{macrocode}
- \def\@mkbibcitation{\bgroup
- \let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig
- \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
- \def\footnotemark{}%
- \def\\{\unskip{} \ignorespaces}%
- \def\footnote{\ClassError{\@classname}{Please do not use footnotes
- inside a \string\title{} or \string\author{} command! Use
- \string\titlenote{} or \string\authornote{} instead!}}%
- \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
- Article~\@acmArticle\ \fi}%
- \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
- \noindent\bgroup
- \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title
- \ifx\@subtitle\@empty. \else: \@subtitle. \fi
- \if@ACM@nonacm\else
- % The 'nonacm' option disables 'printacmref' by default,
- % and the present \@mkbibcitation definition is never used
- % in this case. The conditional remains useful if the user
- % explicitly sets \settopmatter{printacmref=true}.
- \if@ACM@journal@bibstrip
- \textit{\@journalNameShort}
- \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
- \ref{TotPages}~\@pages@word.
- \else
- In \textit{\@acmBooktitle}%
- \ifx\@acmEditors\@empty\textit{.}\else
- \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
- \fi\
- ACM, New York, NY, USA%
- \@article@string\unskip, \ref{TotPages}~\@pages@word.
- \fi
- \fi
- \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
- \par\egroup}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@printendtopmatter}
- % \changes{v1.46}{2017/08/28}{Made it \cs{par}\cs{bigskip} uniformly}
- % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
- % End the top matter
- % \begin{macrocode}
- \def\@printendtopmatter{\bgroup
- \let\@vspace\@vspace@orig
- \let\@vspacer\@vspacer@orig
- \par\bigskip
- \egroup}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@setthanks}
- % We redefine \cs{\@setthanks} using \cs{long}
- % \begin{macrocode}
- \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@setauthorsaddresses}
- % \changes{v1.46}{2018/08/25}{Introduced macro}
- % \begin{macrocode}
- \def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- %
- %\subsection{Headers and Footers}
- %\label{sec:head_foot}
- %
- % We use |fancyhdr| for our headers and footers:
- % \begin{macrocode}
- \RequirePackage{fancyhdr}
- % \end{macrocode}
- %
- % \begin{macro}{\ACM@restore@pagestyle}
- % \changes{v1.44}{2017/07/30}{Added macro}
- % The following code by Ross Moore protects against changes by
- % the |totpages| package:
- % \begin{macrocode}
- \let\ACM@ps@plain\ps@plain
- \let\ACM@ps@myheadings\ps@myheadings
- \let\ACM@ps@headings\ps@headings
- \def\ACM@restore@pagestyle{%
- \let\ps@plain\ACM@ps@plain
- \let\ps@myheadings\ACM@ps@myheadings
- \let\ps@headings\ACM@ps@headings}
- \AtBeginDocument{\ACM@restore@pagestyle}
- % \end{macrocode}
- %
- %
- % \end{macro}
- %
- %
- %
- % \begin{macro}{\ACM@linecount@bx}
- % \changes{v1.34}{2017/04/10}{Rulers now are continuous}
- % \changes{v1.40}{2017/05/27}{Work around a bug in xcolor: looks like
- % cmyk colors in boxes do not work}
- % \changes{v1.46}{2017/08/28}{Rearranged the code to get rid of
- % spurious underfull messages (Benjamin Byholm)}
- % \changes{v1.64}{2019/08/24}{Bug fix: made the spacing on the left
- % and the right size equal}
- % This is the box displayed in review mode
- % \begin{macrocode}
- \if@ACM@review
- \newsavebox{\ACM@linecount@bx}
- \newlength\ACM@linecount@bxht
- \newcount\ACM@linecount
- \ACM@linecount\@ne\relax
- \def\ACM@mk@linecount{%
- \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
- \normalsize
- \setlength{\ACM@linecount@bxht}{0pt}%
- \loop{\color{red}\scriptsize\the\ACM@linecount}\\
- \global\advance\ACM@linecount by \@ne
- \addtolength{\ACM@linecount@bxht}{\baselineskip}%
- \ifdim\ACM@linecount@bxht<\textheight\repeat
- {\color{red}\scriptsize\the\ACM@linecount}\hfill
- \global\advance\ACM@linecount by \@ne}}}
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\ACM@linecountL}
- % \changes{v1.33}{2017/03/29}{Renamed macro}
- % \changes{v1.34}{2017/04/10}{Rulers now are continuous}
- % How to display the box on the left
- % \begin{macrocode}
- \def\ACM@linecountL{%
- \if@ACM@review
- \ACM@mk@linecount
- \begin{picture}(0,0)%
- \put(-26,-22){\usebox{\ACM@linecount@bx}}%
- \end{picture}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\ACM@linecountR}
- % \changes{v1.33}{2017/03/29}{Added macro}
- % \changes{v1.34}{2017/04/10}{Rulers now are continuous}
- % How to display the box on the right
- % \begin{macrocode}
- \def\ACM@linecountR{%
- \if@ACM@review
- \ACM@mk@linecount
- \begin{picture}(0,0)%
- \put(20,-22){\usebox{\ACM@linecount@bx}}%
- \end{picture}%
- \fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\ACM@timestamp}
- % \changes{v1.33}{2017/03/10}{Added macro (Michael D.~Adams)}
- % \changes{v1.33}{2017/03/28}{Added current page number}
- % \changes{v1.33}{2017/03/29}{Added submission id}
- % \changes{v1.48}{2017/09/16}{Fromatting change (Michael D.~Adams)}
- % The timestamp system
- % \begin{macrocode}
- \if@ACM@timestamp
- % Subtracting 30 from \time gives us the effect of rounding down despite
- % \numexpr rounding to nearest
- \newcounter{ACM@time@hours}
- \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
- \newcounter{ACM@time@minutes}
- \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
- \newcommand\ACM@timestamp{%
- \footnotesize%
- \ifx\@acmSubmissionID\@empty\relax\else
- Submission ID: \@acmSubmissionID.{ }%
- \fi
- \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
- \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }%
- Page \thepage\ of \@startPage--\pageref*{TotPages}.%
- }
- \fi
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\@shortauthors}
- % \changes{v1.15}{2016/07/04}{Introduced macro}
- % \changes{v1.54}{2016/06/23}{Added submission id in anonymous mode}
- % Even if the author redefined \cs{shortauthors}, we do not print
- % it in the headers when in anonymous mode:
- % \begin{macrocode}
- \def\@shortauthors{%
- \if@ACM@anonymous
- Anon.
- \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi
- \else\shortauthors\fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@headfootfont}
- % \changes{v1.16}{2016/07/07}{Added macro}
- % \changes{v1.48}{2017/09/16}{Deleted unnecessary switch (Michael D.~Adams)}
- % \changes{v1.60}{2019/04/22}{Moved to footnotesize}
- % The font to typeset header and footer text.
- % \begin{macrocode}
- \def\@headfootfont{\sffamily\footnotesize}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{standardpagestyle}
- % \changes{v1.10}{2016/05/22}{Reversed folios location}
- % \changes{v1.13}{2016/06/06}{Suppressed folios if sig}
- % \changes{v1.13}{2016/06/06}{Added headers for sigs}
- % \changes{v1.13}{2016/06/06}{Expanded headers for sigchi-a}
- % \changes{v1.15}{2016/07/04}{Better handling of anonymous mode}
- % \changes{v1.16}{2016/07/07}{Customize header/footer text font}
- % \changes{v1.17}{2016/07/10}{Added paper title to sigs}
- % \changes{v1.29}{2017/01/22}{Corrected printfolios (Matthew Fluet)}
- % \changes{v1.33}{2017/03/10}{Added timestamp (Michael D.~Adams)}
- % \changes{v1.33}{2017/03/29}{Added right linecount for two-column formats}
- % The page style for all pages but the first one
- % \changes{v1.51}{2018/04/05}{We now use journal abbreviation for
- % footers}
- % \changes{v1.59}{2019/04/20}{Added logic for conference papers using
- % journal format}
- % \changes{v1.59}{2019/04/20}{Moved page styles to \cs{AtBeginDocument}}
- % The page style for all pages but the first one
- % \begin{macrocode}
- \AtBeginDocument{%
- \fancypagestyle{standardpagestyle}{%
- \fancyhf{}%
- \renewcommand{\headrulewidth}{\z@}%
- \renewcommand{\footrulewidth}{\z@}%
- \def\@acmArticlePage{%
- \ifx\@acmArticle\empty%
- \if@ACM@printfolios\thepage\fi%
- \else%
- \@acmArticle\if@ACM@printfolios:\thepage\fi%
- \fi%
- }%
- \if@ACM@journal@bibstrip
- \ifcase\ACM@format@nr
- \relax % manuscript
- \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
- \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
- \fancyhead[RE]{\@shortauthors}%
- \fancyhead[LO]{\ACM@linecountL\shorttitle}%
- \if@ACM@nonacm\else%
- \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}
- \fi%
- \or % acmsmall
- \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}%
- \fancyhead[RO]{\@headfootfont\@acmArticlePage}%
- \fancyhead[RE]{\@headfootfont\@shortauthors}%
- \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
- \if@ACM@nonacm\else%
- \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
- \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
- \fi
- \or % acmlarge
- \fancyhead[LE]{\ACM@linecountL\@headfootfont
- \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
- \fancyhead[LO]{\ACM@linecountL}%
- \fancyhead[RO]{\@headfootfont
- \shorttitle\quad\textbullet\quad\@acmArticlePage}%
- \if@ACM@nonacm\else%
- \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
- \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
- \fi
- \or % acmtog
- \fancyhead[LE]{\ACM@linecountL\@headfootfont
- \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
- \fancyhead[LO]{\ACM@linecountL}%
- \fancyhead[RE]{\ACM@linecountR}%
- \fancyhead[RO]{\@headfootfont
- \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}%
- \if@ACM@nonacm\else%
- \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
- \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
- \fi
- \else % Proceedings
- \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
- \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
- \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
- \if@ACM@nonacm\else%
- \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
- \acmConference@shortname,
- \acmConference@date, \acmConference@venue}%
- \fancyhead[RO]{\@headfootfont
- \acmConference@shortname,
- \acmConference@date, \acmConference@venue\ACM@linecountR}%
- \fi
- \fi
- \else % Proceedings
- \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
- \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
- \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
- \if@ACM@nonacm\else%
- \fancyhead[LE]{\ACM@linecountL\@headfootfont
- \acmConference@shortname,
- \acmConference@date, \acmConference@venue}%
- \fancyhead[RO]{\@headfootfont
- \acmConference@shortname,
- \acmConference@date, \acmConference@venue\ACM@linecountR}%
- \fi
- \fi
- \if@ACM@sigchiamode
- \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
- \fi
- \if@ACM@timestamp
- \fancyfoot[LO,RE]{\ACM@timestamp}
- \fi
- }%
- \pagestyle{standardpagestyle}
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@folio@wd}
- % \begin{macro}{\@folio@ht}
- % \begin{macro}{\@folio@voffset}
- % \begin{macro}{\@folio@max}
- % Folio blob width, height, offsets and max number
- % \begin{macrocode}
- \newdimen\@folio@wd
- \@folio@wd=\z@
- \newdimen\@folio@ht
- \@folio@ht=\z@
- \newdimen\@folio@voffset
- \@folio@voffset=\z@
- \def\@folio@max{1}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \@folio@wd=45.75pt\relax
- \@folio@ht=1.25in\relax
- \@folio@voffset=.2in\relax
- \def\@folio@max{8}
- \or % acmlarge
- \@folio@wd=43.25pt\relax
- \@folio@ht=79pt\relax
- \@folio@voffset=.55in\relax
- \def\@folio@max{10}
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\@folioblob}
- % \changes{v1.44}{2017/08/11}{Suppress the blob if acmArticleSeq is empty}
- % \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to
- % \cs{sffamily}\cs{bfseries}}
- % The macro to typeset the folio blob.
- % \begin{macrocode}
- \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
- \ifnum\@tempcnta=0\relax\else
- % \end{macrocode}
- % First, we calculate \cs{@acmArticleSeq} modulo \cs{@folio@max}
- % \begin{macrocode}
- \loop
- \ifnum\@tempcnta>\@folio@max\relax
- \advance\@tempcnta by - \@folio@max
- \repeat
- % \end{macrocode}
- %
- % \begin{macrocode}
- \advance\@tempcnta by -1\relax
- \@tempdima=\@folio@ht\relax
- \multiply\@tempdima by \the\@tempcnta\relax
- \advance\@tempdima by -\@folio@voffset\relax
- \begin{picture}(0,0)
- \makebox[\z@]{\raisebox{-\@tempdima}{%
- \rlap{%
- \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
- \rule{\@folio@wd}{\@folio@ht}}}%
- \parbox{\@folio@wd}{%
- \centering
- \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
- \end{picture}\fi}
- % \end{macrocode}
- %
- %
- % \end{macro}
- %
- % \begin{macro}{firstpagestyle}
- % \changes{v1.33}{2017/03/10}{Added timestamp (Michael D.~Adams)}
- % \changes{v1.33}{2017/03/29}{Added right linecount for two-column
- % formats}
- % \changes{v1.51}{2018/04/05}{We now use journal abbreviation for
- % footers}
- % \changes{v1.59}{2019/04/20}{Added logic for conference papers using
- % journal format}
- % \changes{v1.59}{2019/04/20}{Moved page styles to \cs{AtBeginDocument}}
- % The page style for the first page only.
- % \begin{macrocode}
- \AtBeginDocument{%
- \fancypagestyle{firstpagestyle}{%
- \fancyhf{}%
- \renewcommand{\headrulewidth}{\z@}%
- \renewcommand{\footrulewidth}{\z@}%
- \if@ACM@journal@bibstrip
- \ifcase\ACM@format@nr
- \relax % manuscript
- \fancyhead[L]{\ACM@linecountL}%
- \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
- \if@ACM@nonacm\else%
- \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
- \fi%
- \or % acmsmall
- \if@ACM@nonacm\else%
- \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
- \@acmNumber, Article \@acmArticle. Publication date:
- \@acmPubDate.}%
- \fi%
- \fancyhead[LE]{\ACM@linecountL\@folioblob}%
- \fancyhead[LO]{\ACM@linecountL}%
- \fancyhead[RO]{\@folioblob}%
- \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
- \or % acmlarge
- \if@ACM@nonacm\else%
- \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
- \@acmNumber, Article \@acmArticle. Publication date:
- \@acmPubDate.}%
- \fi%
- \fancyhead[RO]{\@folioblob}%
- \fancyhead[LE]{\ACM@linecountL\@folioblob}%
- \fancyhead[LO]{\ACM@linecountL}%
- \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
- \or % acmtog
- \if@ACM@nonacm\else%
- \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
- \@acmNumber, Article \@acmArticle. Publication date:
- \@acmPubDate.}%
- \fi%
- \fancyhead[L]{\ACM@linecountL}%
- \fancyhead[R]{\ACM@linecountR}%
- \else % Conference proceedings
- \fancyhead[L]{\ACM@linecountL}%
- \fancyhead[R]{\ACM@linecountR}%
- \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
- \fi
- \else
- \fancyhead[L]{\ACM@linecountL}%
- \fancyhead[R]{\ACM@linecountR}%
- \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
- \fi
- \if@ACM@timestamp
- \ifnum\ACM@format@nr=0\relax % Manuscript
- \fancyfoot[LO,RE]{\ACM@timestamp\quad
- \if@ACM@nonacm\else
- \footnotesize Manuscript submitted to ACM
- \fi}
- \else
- \fancyfoot[LO,RE]{\ACM@timestamp}
- \fi
- \fi
- }}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- %\subsection{Sectioning}
- %\label{sec:sectioninng}
- %
- % \begin{macro}{\ACM@NRadjust}
- % \changes{v1.54}{2018/06/17}{Added macro}
- % Ross Moore's macro.
- % \begin{quotation}
- % Initially |\ACM@sect@format@| just passes through its |#1|
- % argument unchanged.
- % When a sectioning macro such as |\section| occurs, the
- % |\ACM@NRadjust| redefines |\ACM@sect@format@| to expand into the
- % styling commands; e.g., |\@secfont|.
- % Then |\Sectionformat| is temporarily redefined to produce
- % |\realSectionformat{\ACM@sect@format{#1}}{#2}|, which ultimately
- % becomes |\Sectionformat{\@secfont{#1}}{#2}|.
- % This is done to allow |\Sectionformat| to be variable, as may be
- % needed in particular circumstances. Its current expansion is saved
- % as |\realSectionformat| which is used with the modified 1st argument,
- % then |\Sectionformat| is reverted to its former expansion.
- %
- % To style the section-number, the line |#1{}| is used at the end of
- % |\ACM@NRadjust|. This imposes style-changing commands for fonts and
- % sizes, but any |\MakeUppercase| acts on just the |{}|. It's a bit hacky,
- % by essentially assuming that only numbers occur here, not letters to
- % be case-changed. (This should be acceptable in a class-file, as it
- % ought to be possible to change the case elsewhere, if that was ever
- % desired.) Also, it can result in |\@adddotafter| being called too
- % soon, so a slight adjustment is made, via |\ACM@adddotafter|, which
- % now tests whether its argument is empty. But the coding has to allow
- % for other packages to have also patched |\@adddotafter|.
- % \end{quotation}
- % \begin{macrocode}
- \def\ACM@NRadjust#1{%
- \begingroup
- \expandafter\ifx\csname Sectionformat\endcsname\relax
- % do nothing when \Sectionformat is unknown
- \def\next{\endgroup #1}%
- \else
- \def\next{\endgroup
- \let\realSectionformat\Sectionformat
- \def\ACM@sect@format@{#1}%
- \let\Sectionformat\ACM@NR@adjustedSectionformat
- %% next lines added 2018-06-17 to ensure section number is styled
- \let\real@adddotafter\@adddotafter
- \let\@adddotafter\ACM@adddotafter
- #1{}% imposes the styles, but nullifies \MakeUppercase
- \let\@adddotafter\real@adddotafter
- }%
- \fi \next
- }
- % \end{macrocode}
- % \end{macro}
- %
- % \begin{macro}{\ACM@NR@adjustedSectionformat}
- % \changes{v1.54}{2018/06/17}{Added macro}
- % \begin{macrocode}
- \def\ACM@NR@adjustedSectionformat#1#2{%
- \realSectionformat{\ACM@sect@format{#1}}{#2}%
- \let\Sectionformat\realSectionformat}
- \DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@}
- \def\ACM@sect@format@null#1{#1}
- \let\ACM@sect@format@\ACM@sect@format@null
- \AtBeginDocument{%
- \expandafter\ifx\csname LTX@adddotafter\endcsname\relax
- \let\LTX@adddotafter\@adddotafter
- \fi
- }
- % \end{macrocode}
- %
- % \end{macro}
- % \begin{macro}{\ACM@adddotafter}
- % \changes{v1.54}{2018/06/17}{Added macro}
- % \begin{macrocode}
- \def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \changes{v1.54}{2018/05/27}{Deleted indent for subsubsection}
- % \changes{v1.54}{2018/06/17}{Added Ross's patch for sectioning}
- % Sectioning is different for different levels
- % \begin{macrocode}
- \renewcommand\section{\@startsection{section}{1}{\z@}%
- {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {.25\baselineskip}%
- {\ACM@NRadjust\@secfont}}
- \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
- {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {.25\baselineskip}%
- {\ACM@NRadjust\@subsecfont}}
- \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
- {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {-3.5\p@}%
- {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}}
- \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
- {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {-3.5\p@}%
- {\ACM@NRadjust{\@parfont\@adddotafter}}}
- \renewcommand\part{\@startsection{part}{9}{\z@}%
- {-10\p@ \@plus -4\p@ \@minus -2\p@}%
- {4\p@}%
- {\ACM@NRadjust\@parfont}}
- % \end{macrocode}
- %
- % \begin{macro}{\section@raggedright}
- % \changes{v1.12}{2016/05/30}{Introduced macro}%
- % Special version of \cs{raggedright} compatible with
- % \cs{MakeUppercase}
- % \begin{macrocode}
- \def\section@raggedright{\@rightskip\@flushglue
- \rightskip\@rightskip
- \leftskip\z@skip
- \parindent\z@}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@secfont}
- % \begin{macro}{\@subsecfont}
- % \begin{macro}{\@subsubsecfont}
- % \begin{macro}{\@parfont}
- % \changes{v1.12}{2016/05/30}{Moved to \cs{section@raggedright}}%
- % \changes{v1.40}{2017/06/04}{Switched to MakeTextUppercase}
- % \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to
- % \cs{sffamily}\cs{bfseries}}
- % Fonts for sections etc. are different for different formats.
- % \begin{macrocode}
- \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\sffamily\bfseries\section@raggedright}
- \def\@subsubsecfont{\sffamily\itshape}
- \def\@parfont{\itshape}
- \setcounter{secnumdepth}{3}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\sffamily\large\section@raggedright}
- \or % acmtog
- \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\sffamily\large\section@raggedright}
- \or % sigconf
- \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\bfseries\Large\section@raggedright}
- \or % siggraph
- \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
- \or % sigplan
- \def\@secfont{\bfseries\Large\section@raggedright}
- \def\@subsecfont{\bfseries\section@raggedright}
- \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
- {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {.25\baselineskip}%
- {\@subsubsecfont}}
- \def\@subsubsecfont{\bfseries\section@raggedright}
- \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
- {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {-3.5\p@}%
- {\@parfont\@addspaceafter}}
- \def\@parfont{\bfseries\itshape}
- \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
- {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {-3.5\p@}%
- {\@subparfont\@addspaceafter}}
- \def\@subparfont{\itshape}
- \or % sigchi
- \setcounter{secnumdepth}{1}
- \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\sffamily\bfseries\section@raggedright}
- \or % sigchi-a
- \setcounter{secnumdepth}{0}
- \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\sffamily\bfseries\section@raggedright}
- \fi
- % \end{macrocode}
- %
- % \end{macro}
- % \end{macro}
- % \end{macro}
- % \end{macro}
- %
- % \begin{macro}{\@adddotafter}
- % Add punctuation after a sectioning command
- % \begin{macrocode}
- \def\@adddotafter#1{#1\@addpunct{.}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@addspaceafter}
- % Add space after a sectioning command
- % \begin{macrocode}
- \def\@addspaceafter#1{#1\@addpunct{\enspace}}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %\subsection{TOC lists}
- %\label{sec:tocs}
- %
- % \begin{macro}{\@dotsep}
- % Related to the \cs{tableofcontents} are all the horizontal fillers. Base
- % \LaTeX\ defines \cs{@dottedtocline}, which we should not disable. Yet, this
- % command expects \cs{@dotsep} to be defined but leaves this to the class
- % implementation. Since |amsart| does not provide this, we copy the standard
- % variant from |article| here.
- % \begin{macrocode}
- \providecommand*\@dotsep{4.5}
- % \end{macrocode}
- % \end{macro}
- %
- %
- %
- %\subsection{Theorems}
- %\label{sec:theorems}
- %
- % \begin{macro}{\@acmplainbodyfont}
- % The font to typeset the body of the |acmplain| theorem style.
- % \begin{macrocode}
- \def\@acmplainbodyfont{\itshape}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@acmplainindent}
- % The amount to indent the |acmplain| theorem style.
- % \begin{macrocode}
- \def\@acmplainindent{\parindent}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@acmplainheadfont}
- % The font to typeset the head of the |acmplain| theorem style.
- % \begin{macrocode}
- \def\@acmplainheadfont{\scshape}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@acmplainnotefont}
- % The font to typeset the note of the |acmplain| theorem style.
- % \begin{macrocode}
- \def\@acmplainnotefont{\@empty}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % Customization of the |acmplain| theorem style:
- % \begin{macrocode}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \or % acmtog
- \or % sigconf
- \or % siggraph
- \or % sigplan
- \def\@acmplainbodyfont{\itshape}
- \def\@acmplainindent{\z@}
- \def\@acmplainheadfont{\bfseries}
- \def\@acmplainnotefont{\normalfont}
- \or % sigchi
- \or % sigchi-a
- \fi
- % \end{macrocode}
- %
- % \begin{macro}{acmplain}
- % The |acmplain| theorem style
- % \begin{macrocode}
- \newtheoremstyle{acmplain}%
- {.5\baselineskip\@plus.2\baselineskip
- \@minus.2\baselineskip}% space above
- {.5\baselineskip\@plus.2\baselineskip
- \@minus.2\baselineskip}% space below
- {\@acmplainbodyfont}% body font
- {\@acmplainindent}% indent amount
- {\@acmplainheadfont}% head font
- {.}% punctuation after head
- {.5em}% spacing after head
- {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\@acmdefinitionbodyfont}
- % The font to typeset the body of the |acmdefinition| theorem style.
- % \begin{macrocode}
- \def\@acmdefinitionbodyfont{\normalfont}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@acmdefinitionindent}
- % The amount to indent the |acmdefinition| theorem style.
- % \begin{macrocode}
- \def\@acmdefinitionindent{\parindent}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@acmdefinitionheadfont}
- % The font to typeset the head of the |acmdefinition| theorem style.
- % \begin{macrocode}
- \def\@acmdefinitionheadfont{\itshape}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@acmdefinitionnotefont}
- % The font to typeset the note of the |acmdefinition| theorem style.
- % \begin{macrocode}
- \def\@acmdefinitionnotefont{\@empty}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % Customization of the |acmdefinition| theorem style:
- % \begin{macrocode}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \or % acmtog
- \or % sigconf
- \or % siggraph
- \or % sigplan
- \def\@acmdefinitionbodyfont{\normalfont}
- \def\@acmdefinitionindent{\z@}
- \def\@acmdefinitionheadfont{\bfseries}
- \def\@acmdefinitionnotefont{\normalfont}
- \or % sigchi
- \or % sigchi-a
- \fi
- % \end{macrocode}
- %
- % \begin{macro}{acmdefinition}
- % The |acmdefinition| theorem style
- % \begin{macrocode}
- \newtheoremstyle{acmdefinition}%
- {.5\baselineskip\@plus.2\baselineskip
- \@minus.2\baselineskip}% space above
- {.5\baselineskip\@plus.2\baselineskip
- \@minus.2\baselineskip}% space below
- {\@acmdefinitionbodyfont}% body font
- {\@acmdefinitionindent}% indent amount
- {\@acmdefinitionheadfont}% head font
- {.}% punctuation after head
- {.5em}% spacing after head
- {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
- % \end{macrocode}
- %
- % \end{macro}
- %
- % Make |acmplain| the default theorem style.
- % \begin{macrocode}
- \theoremstyle{acmplain}
- % \end{macrocode}
- %
- % Delay defining the theorem environments until after other packages
- % have been loaded. In particular, the |cleveref| package must be
- % loaded before the theorem environments are defined in order to show
- % the correct environment name (see
- % \url{https://github.com/borisveytsman/acmart/issues/138}). The |acmthm|
- % option is used to suppress the definition of any theorem
- % environments. Also, to avoid obscure errors arising from these
- % environment definitions conflicting with environments defined by the
- % user or by user-loaded packages, we only define environments that
- % have not yet been defined.
- % \begin{macrocode}
- \AtEndPreamble{%
- \if@ACM@acmthm
- \theoremstyle{acmplain}
- \@ifundefined{theorem}{%
- \newtheorem{theorem}{Theorem}[section]
- }{}
- \@ifundefined{conjecture}{%
- \newtheorem{conjecture}[theorem]{Conjecture}
- }{}
- \@ifundefined{proposition}{%
- \newtheorem{proposition}[theorem]{Proposition}
- }{}
- \@ifundefined{lemma}{%
- \newtheorem{lemma}[theorem]{Lemma}
- }{}
- \@ifundefined{corollary}{%
- \newtheorem{corollary}[theorem]{Corollary}
- }{}
- \theoremstyle{acmdefinition}
- \@ifundefined{example}{%
- \newtheorem{example}[theorem]{Example}
- }{}
- \@ifundefined{definition}{%
- \newtheorem{definition}[theorem]{Definition}
- }{}
- \fi
- \theoremstyle{acmplain}
- }
- % \end{macrocode}
- %
- %
- % \begin{macro}{\@proofnamefont}
- % The font to typeset the proof name.
- % \begin{macrocode}
- \def\@proofnamefont{\scshape}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\@proofindent}
- % Whether or not to indent proofs.
- % \begin{macrocode}
- \def\@proofindent{\indent}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % Customization of the proof environment.
- % \begin{macrocode}
- \ifcase\ACM@format@nr
- \relax % manuscript
- \or % acmsmall
- \or % acmlarge
- \or % acmtog
- \or % sigconf
- \or % siggraph
- \or % sigplan
- \def\@proofnamefont{\itshape}
- \def\@proofindent{\noindent}
- \or % sigchi
- \or % sigchi-a
- \fi
- % \end{macrocode}
- %
- % \begin{macro}{proof}
- % We want some customization of the proof environment.
- % \begin{macrocode}
- \renewenvironment{proof}[1][\proofname]{\par
- \pushQED{\qed}%
- \normalfont \topsep6\p@\@plus6\p@\relax
- \trivlist
- \item[\@proofindent\hskip\labelsep
- {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
- }{%
- \popQED\endtrivlist\@endpefalse
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- %
- %\subsection{Balancing columns}
- %\label{sec:balancing}
- %
- % We need balancing only if the user did not disable it, and we use a
- % two column format
- % \begin{macrocode}
- \AtEndPreamble{%
- \if@ACM@balance
- \ifcase\ACM@format@nr
- \relax % manuscript
- \global\@ACM@balancefalse
- \or % acmsmall
- \global\@ACM@balancefalse
- \or % acmlarge
- \global\@ACM@balancefalse
- \or % acmtog
- \RequirePackage{balance}%
- \or % sigconf
- \RequirePackage{balance}%
- \or % siggraph
- \RequirePackage{balance}%
- \or % sigplan
- \RequirePackage{balance}%
- \or % sigchi
- \RequirePackage{balance}%
- \or % sigchi-a
- \global\@ACM@balancefalse
- \fi
- \fi
- }
- \AtEndDocument{%
- \if@ACM@balance
- \if@twocolumn
- \balance
- \fi\fi}
- % \end{macrocode}
- %
- %
- %\subsection{Acknowledgments}
- %\label{sec:acks}
- %
- % \begin{macro}{\acksname}
- % \changes{v1.56}{2018/10/16}{Added macro (Philip Quinn)}
- % \begin{macrocode}
- \newcommand\acksname{Acknowledgments}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\acks}
- % \changes{v1.19}{2016/07/28}{Include 'Acknowledgements' in PDF bookmarks
- % (Matthew Fluet)}
- % \changes{v1.15}{2016/07/05}{Added macro}
- % This is a |comment|-like structure
- % \begin{macrocode}
- \specialcomment{acks}{%
- \begingroup
- \section*{\acksname}
- \phantomsection\addcontentsline{toc}{section}{\acksname}
- }{%
- \endgroup
- }
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\grantsponsor}
- % \changes{v1.15}{2016/07/05}{Added macro}
- % \changes{v1.17}{2016/07/10}{Renamed}
- % We just typeset the name of the sponsor
- % \begin{macrocode}
- \def\grantsponsor#1#2#3{#2}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \begin{macro}{\grantnum}
- % \changes{v1.15}{2016/07/05}{Added macro}
- % \changes{v1.17}{2016/07/10}{Added url}
- % \begin{macrocode}
- \newcommand\grantnum[3][]{#3%
- \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \subsection{Conditional typesetting}
- % \label{sec:conditional}
- %
- % We use the |comment| package for conditional typesetting:
- % \begin{macrocode}
- \AtEndPreamble{%
- \if@ACM@screen
- \includecomment{screenonly}
- \excludecomment{printonly}
- \else
- \excludecomment{screenonly}
- \includecomment{printonly}
- \fi
- \if@ACM@anonymous
- \excludecomment{anonsuppress}
- \excludecomment{acks}
- \else
- \includecomment{anonsuppress}
- \fi}
- % \end{macrocode}
- %
- %
- %
- %\subsection{Additional bibliography commands}
- %\label{sec:bibliography}
- %
- % \begin{macro}{\showeprint}
- % \changes{v1.21}{2016/09/04}{Added macro}
- % The command \cs{showeprint} has two arguments: the (optional) prefix
- % and the eprint number. Right now the only prefix we understand is
- % the (lowercase) word `arxiv' (see
- % \url{http://arxiv.org/hypertex/bibstyles/}).
- % \begin{macrocode}
- \newcommand\showeprint[2][arxiv]{%
- \def\@tempa{#1}%
- \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
- \def\@tempb{arxiv}%
- \ifx\@tempa\@tempb
- arXiv:\href{http://arxiv.org/abs/#2}{#2}\else arXiv:#2%
- \fi}
- % \end{macrocode}
- %
- %
- % \end{macro}
- %
- %\subsection{End of Class}
- %\label{end}
- %
- % \begin{macro}{\vspace}
- % \changes{v1.57}{2018/12/16}{Added warning}
- % \changes{v1.58}{2019/01/23}{Preserved old versions as
- % \cs{@vspace@orig} and \cs{@vspace@orig}}
- % We do not disable \cs{vspace}, but add warning to it
- % \begin{macrocode}
- \let\@vspace@orig=\@vspace
- \let\@vspacer@orig=\@vspacer
- \apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should
- only be used to provide space above/below surrounding
- objects}}{}{}
- \apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should
- only be used to provide space above/below surrounding
- objects}}{}{}
- % \end{macrocode}
- %
- % \end{macro}
- %
- %
- % \begin{macro}{\ACM@origbaselinestretch}
- % \changes{v1.57}{2018/12/16}{Added check whether the user changed
- % \cs{baselinestretch}}
- % We produce an error if the user tries to change \cs{baselinestretch}
- % \begin{macrocode}
- \let\ACM@origbaselinestretch\baselinestretch
- \AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else
- \ClassError{\@classname}{An attempt to redefine
- \string\baselinestretch\space detected. Please do not do this for
- ACM submissions!}\fi}
- % \end{macrocode}
- %
- % \end{macro}
- %
- % \changes{v1.30}{2017/02/10}{Added \cs{frenchspacing}}
- % \begin{macrocode}
- \normalsize\normalfont\frenchspacing
- %</class>
- % \end{macrocode}
- %
- %\Finale
- %\clearpage
- %
- %\PrintChanges
- %\clearpage
- %\PrintIndex
- %
- \endinput
|