acmart.dtx 227 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053
  1. % \iffalse
  2. %
  3. % Copyright 2016-2019, Association for Computing Machinery
  4. % This work may be distributed and/or modified under the
  5. % conditions of the LaTeX Project Public License, either
  6. % version 1.3 of this license or (at your option) any
  7. % later version.
  8. % The latest version of the license is in
  9. % http://www.latex-project.org/lppl.txt
  10. % and version 1.3 or later is part of all distributions of
  11. % LaTeX version 2005/12/01 or later.
  12. %
  13. % This work has the LPPL maintenance status `maintained'.
  14. %
  15. % The Current Maintainer of this work is Boris Veytsman,
  16. % <borisv@lk.net>
  17. %
  18. % This work consists of the file acmart.dtx, the derived file
  19. % acmart.cls, the files ACM-Reference-Format.bst, and templates
  20. % sample-acmlarge.tex, sample-acmsmall.tex, sample-acmtog.tex,
  21. % samplebody-conf.tex, samplebody-journals.tex, sample-manuscript.tex,
  22. % sample-sigchi-a.tex, sample-sigchi.tex,
  23. % sample-sigconf-authordraft.tex, sample-sigconf.tex,
  24. % sample-sigplan.tex
  25. %
  26. % \fi
  27. %
  28. %
  29. %% \CharacterTable
  30. %% {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
  31. %% 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
  32. %% Digits \0\1\2\3\4\5\6\7\8\9
  33. %% Exclamation \! Double quote \" Hash (number) \#
  34. %% Dollar \$ Percent \% Ampersand \&
  35. %% Acute accent \' Left paren \( Right paren \)
  36. %% Asterisk \* Plus \+ Comma \,
  37. %% Minus \- Point \. Solidus \/
  38. %% Colon \: Semicolon \; Less than \<
  39. %% Equals \= Greater than \> Question mark \?
  40. %% Commercial at \@ Left bracket \[ Backslash \\
  41. %% Right bracket \] Circumflex \^ Underscore \_
  42. %% Grave accent \` Left brace \{ Vertical bar \|
  43. %% Right brace \} Tilde \~}
  44. %
  45. %
  46. % \MakeShortVerb{|}
  47. % \def\guide{acmguide}
  48. % \iffalse
  49. % From
  50. % http://tex.stackexchange.com/questions/117892/can-i-convert-a-string-to-catcode-11 by egreg
  51. % \fi
  52. % \begingroup
  53. % \everyeof{\noexpand}
  54. % \endlinechar=-1
  55. % \xdef\currentjob{\scantokens\expandafter{\jobname}}
  56. % \endgroup
  57. %
  58. % \ifx\currentjob\guide\OnlyDescription\fi
  59. % \GetFileInfo{acmart.dtx}
  60. % \title{\LaTeX{} Class for the \emph{Association for Computing
  61. % Machinery}\thanks{\copyright 2016--2019, Association for Computing Machinery}}
  62. % \author{Boris Veytsman\thanks{%
  63. % \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}},
  64. % \href{mailto:boris@varphi.com}{\texttt{boris@varphi.com}}}}
  65. % \date{\filedate, \fileversion}
  66. % \maketitle
  67. % \begin{abstract}
  68. % This package provides a class for typesetting publications of
  69. % the Association for Computing Machinery.
  70. % \end{abstract}
  71. % \tableofcontents
  72. %
  73. % \clearpage
  74. %
  75. %\section{Introduction}
  76. %\label{sec:intro}
  77. %
  78. % The Association for Computing
  79. % Machinery\footnote{\url{http://www.acm.org/}} is the world's largest
  80. % educational and scientific computing society, which delivers
  81. % resources that advance computing as a science and a
  82. % profession. It was one of the
  83. % early adopters of \TeX\ for its typesetting.
  84. %
  85. % It provided several different classes for a number of journals and
  86. % conference proceedings. Unfortunately during the years since these
  87. % classes were written, the code was patched many times, and
  88. % supporting different versions of the classes became difficult.
  89. %
  90. % This package provides the uniform interface for all ACM
  91. % publications. It is intended to replace all the different classes and
  92. % packages and provide an up-to-date \LaTeX\ package.
  93. %
  94. % This package uses only free \TeX\ packages and fonts included in \TeX
  95. % Live, Mik\TeX\ and other popular \TeX\ distributions. It is
  96. % intended to be published in these distributions itself, which
  97. % minimizes users' efforts in the installation and support of this
  98. % package.
  99. %
  100. % I am grateful to
  101. % Michael D.~Adams,
  102. % Leif Andersen,
  103. % Lawrence Christopher Angrave,
  104. % Dirk Beyer,
  105. % Joachim Breitner,
  106. % Benjamin Byholm,
  107. % Nils Anders Danielsson,
  108. % Michael Ekstrand,
  109. % Matthew Fluet,
  110. % Paolo G.~Giarrusso,
  111. % Ben Greenman,
  112. % Enrico Gregorio,
  113. % Jamie Davis,
  114. % Peter Kemp,
  115. % Kerry A. Seitz, Jr.,
  116. % Luis Leiva,
  117. % Ben Liblit,
  118. % Rholais Lii,
  119. % LianTze Lim,
  120. % Kai Mindermann,
  121. % Frank Mittelbach,
  122. % Serguei Mokhov,
  123. % Ross Moore,
  124. % John Owens,
  125. % Joel Nider,
  126. % Tobias Pape,
  127. % Philip Quinn,
  128. % Mathias Rav,
  129. % Andreas Reichinger,
  130. % Matteo Riondato,
  131. % Craig Rodkin,
  132. % Bernard Rous,
  133. % David Shamma,
  134. % Gabriel Scherer,
  135. % Stephen Spencer,
  136. % Shin Hwei Tan,
  137. % Daniel Thomas,
  138. % Zack Weinberg,
  139. % John Wickerson
  140. % and many others for their invaluable help.
  141. %
  142. % The development version of the package is available at
  143. % \url{https://github.com/borisveytsman/acmart}.
  144. %
  145. %\section{User's guide}
  146. %\label{sec:ug}
  147. %
  148. %
  149. % This class uses many commands and customizaton options, so it might
  150. % appear intimidating for a casual user. Do not panic! Many of these
  151. % commands and options can be safely left with their default values
  152. % or the values recommended by your conference or journal editors. If
  153. % you have problems or questions, do not hesitate to ask me directly
  154. % or the community at \url{https://github.com/borisveytsman/acmart},
  155. % \url{https://tex.stackexchange.com} or the closest \TeX\ Users
  156. % Group. The world-wide \TeX\ Users Group is at
  157. % \url{https://tug.org/}; please consider joining us if you use \TeX\
  158. % regularly.
  159. %
  160. %\subsection{Installation}
  161. %\label{sec:ug_install}
  162. %
  163. % Most probably, you already have this package installed in your
  164. % favorite \TeX\ distribution; if not, you may want to upgrade. You
  165. % may need to upgrade it anyway since this package uses a number of
  166. % relatively recent packages, especially the ones related to fonts.
  167. %
  168. % The latest released version of this package can be found on CTAN:
  169. % \url{https://www.ctan.org/pkg/acmart}. The development version can
  170. % be found on GitHub: \url{https://github.com/borisveytsman/acmart}.
  171. % At this address you can file a bug report---or even contribute your
  172. % own enhancement by making a pull request.
  173. %
  174. % Please note that the version on Github is a development (or
  175. % experimental) version: please download it for testing new features.
  176. % The production version is the one on CTAN and ACM sites.
  177. %
  178. % Most users should not attempt to install this package themselves
  179. % but should rather rely on their \TeX\ distributions to provide it. If you
  180. % decide to install the package yourself, follow the standard rules:
  181. % \begin{enumerate}
  182. % \item Run |latex acmart.ins|. This will produce the file
  183. % |acmart.cls|
  184. % \item Put the files |acmart.cls| and |ACM-Reference-Format.bst|
  185. % in places where \LaTeX{} can find them (see \cite{TeXFAQ} or
  186. % the documentation for your \TeX{} system).\label{item:install}
  187. % \item Update the database of file names. Again, see \cite{TeXFAQ}
  188. % or the documentation for your \TeX{} system for the system-specific
  189. % details.\label{item:update}
  190. % \item The file |acmart.pdf| provides the documentation for the
  191. % package. (This is probably the file you are reading now.)
  192. % \end{enumerate}
  193. % As an alternative to items~\ref{item:install} and~\ref{item:update}
  194. % you can just put the files in the working directory where your
  195. % |.tex| file is.
  196. %
  197. %
  198. % This class uses a number of other packages. They are included in all
  199. % major \TeX\ distributions (\TeX Live, Mac\TeX, Mik\TeX) of 2015 and
  200. % later, so you probably have them installed. Just in case here is
  201. % the list of these packages:
  202. % \begin{itemize}
  203. % \item \textsl{amscls}, \url{http://www.ctan.org/pkg/amscls}
  204. % \item \textsl{amsfonts}, \url{http://www.ctan.org/pkg/amsfonts}
  205. % \item \textsl{amsmath}, \url{http://www.ctan.org/pkg/amsmath}
  206. % \item \textsl{binhex}, \url{http://www.ctan.org/pkg/binhex}
  207. % \item \textsl{balance}, \url{http://www.ctan.org/pkg/balance}
  208. % \item \textsl{booktabs}, \url{http://www.ctan.org/pkg/booktabs}
  209. % \item \textsl{caption}, \url{http://www.ctan.org/pkg/caption}
  210. % \item \textsl{comment}, \url{http://www.ctan.org/pkg/comment}
  211. % \item \textsl{cm-super}, \url{http://www.ctan.org/pkg/cm-super}
  212. % \item \textsl{cmap}, \url{http://www.ctan.org/pkg/cmap}
  213. % \item \textsl{draftwatermark}, \url{http://www.ctan.org/pkg/draftwatermark}
  214. % \item \textsl{environ}, \url{http://www.ctan.org/pkg/environ}
  215. % \item \textsl{etoolbox}, \url{http://www.ctan.org/pkg/etoolbox}
  216. % \item \textsl{fancyhdr}, \url{http://www.ctan.org/pkg/fancyhdr}
  217. % \item \textsl{float}, \url{http://www.ctan.org/pkg/float}
  218. % \item \textsl{fontaxes}, \url{http://www.ctan.org/pkg/fontaxes}
  219. % \item \textsl{geometry}, \url{http://www.ctan.org/pkg/geometry}
  220. % \item \textsl{graphics}, \url{http://www.ctan.org/pkg/graphics}
  221. % \item \textsl{hyperref}, \url{http://www.ctan.org/pkg/hyperref}
  222. % \item \textsl{ifluatex}, \url{http://www.ctan.org/pkg/ifluatex}
  223. % \item \textsl{ifxetex}, \url{http://www.ctan.org/pkg/ifxetex}
  224. % \item \textsl{inconsolata}, \url{http://www.ctan.org/pkg/inconsolata}
  225. % \item \textsl{libertine}, \url{http://www.ctan.org/pkg/libertine}
  226. % \item \textsl{manyfoot}, \url{http://www.ctan.org/pkg/manyfoot}
  227. % \item \textsl{microtype}, \url{http://www.ctan.org/pkg/microtype}
  228. % \item \textsl{mmap}, \url{http://www.ctan.org/pkg/mmap}
  229. % \item \textsl{ms}, \url{http://www.ctan.org/pkg/ms}
  230. % \item \textsl{mweights}, \url{http://www.ctan.org/pkg/mweights}
  231. % \item \textsl{natbib}, \url{http://www.ctan.org/pkg/natbib}
  232. % \item \textsl{nccfoots}, \url{http://www.ctan.org/pkg/nccfoots}
  233. % \item \textsl{newtx}, \url{http://www.ctan.org/pkg/newtx}
  234. % \item \textsl{oberdiek}, \url{http://www.ctan.org/pkg/oberdiek}
  235. % \item \textsl{pdftex-def}, \url{http://www.ctan.org/pkg/pdftex-def}
  236. % \item \textsl{refcount}, \url{http://www.ctan.org/pkg/refcount}
  237. % \item \textsl{setspace}, \url{http://www.ctan.org/pkg/setspace}
  238. % \item \textsl{textcase}, \url{http://www.ctan.org/pkg/textcase}
  239. % \item \textsl{totpages}, \url{http://www.ctan.org/pkg/totpages}
  240. % \item \textsl{trimspaces}, \url{http://www.ctan.org/pkg/trimspaces}
  241. % \item \textsl{upquote}, \url{http://www.ctan.org/pkg/upquote}
  242. % \item \textsl{url}, \url{http://www.ctan.org/pkg/url}
  243. % \item \textsl{xcolor}, \url{http://www.ctan.org/pkg/xcolor}
  244. % \item \textsl{xkeyval}, \url{http://www.ctan.org/pkg/xkeyval}
  245. % \item \textsl{xstring}, \url{http://www.ctan.org/pkg/xstring}
  246. % \end{itemize}
  247. %
  248. %
  249. %\subsection{Invocation and options}
  250. %\label{sec:invocation}
  251. %
  252. % To use this class, put in the preamble of your document
  253. % \begin{quote}
  254. % \cs{documentclass}\oarg{options}|{acmart}|
  255. % \end{quote}
  256. % There are several options corresponding to the type of the document and
  257. % its general appearance. They are described below. Generally
  258. % speaking, the options have |key=value| forms, for example,
  259. % \begin{verbatim}
  260. % \documentclass[format=acmsmall, screen=true, review=false]{acmart}
  261. % \end{verbatim}
  262. %
  263. %
  264. % The option |format| describes the format of the output. There are
  265. % several possible values for this option, for example,
  266. % \begin{verbatim}
  267. % \documentclass[format=acmtog]{acmart}
  268. % \end{verbatim}
  269. % Actually the words |format=| can be omitted, e.g.,
  270. % \begin{verbatim}
  271. % \documentclass[acmtog, review=false]{acmart}
  272. % \end{verbatim}
  273. % The possible formats are listed in
  274. % Table~\ref{tab:opts_format}. Note that formats starting with |acm|
  275. % are intended for journals and transactions, while formats starting
  276. % with |sig| are intended for proceedings published as books.
  277. %
  278. % Note that sometimes conference proceedings are published as a
  279. % special issue (or issues) of an ACM journal. In this case, you
  280. % should use the journal format for a conference paper. Please
  281. % contact your conference committee if in doubt.
  282. %
  283. % \begin{table}
  284. % \centering
  285. % \caption{The possible values for the \texttt{format} option}
  286. % \label{tab:opts_format}
  287. % \begin{tabularx}{\textwidth}{>{\ttfamily}lX}
  288. % \toprule
  289. % \normalfont Value & Meaning\\
  290. % \midrule
  291. % manuscript & A manuscript. This is the default. \\
  292. % acmsmall & Small single-column format. Used for CIE, CSUR,
  293. % JACM, JDIQ, JEA, JERIC,
  294. % JETC, PACMCGIT, PACMHCI, PACMPL, TAAS, TACCESS, TACO,
  295. % TALG, TALLIP (formerly TALIP), TCPS, TDS,
  296. % TEAC, TECS, TELO, THRI, TIIS, TIOT, TISSEC, TIST, TKDD, TMIS,
  297. % TOCE, TOCHI, TOCL,
  298. % TOCS, TOCT, TODAES, TODS, TOIS, TOIT, TOMACS, TOMM (formerly
  299. % TOMCCAP), TOMPECS, TOMS, TOPC, TOPLAS, TOPS,
  300. % TOS, TOSEM, TOSN, TQC, TRETS,
  301. % TSAS, TSC, TSLP and TWEB, including special issues. \\
  302. % acmlarge & Large single-column format. Used for DTRAP, HEALTH,
  303. % IMWUT, JOCCH, POMACS and TAP, including special issues. \\
  304. % acmtog & Large double-column format. Used for
  305. % TOG, including annual conference Technical Papers.\\
  306. % sigconf & Proceedings format for most ACM
  307. % conferences (with the exceptions listed below) and all ICPS
  308. % volumes.\\
  309. % sigplan & Proceedings format for SIGPLAN conferences.\\
  310. % sigchi & Proceedings format for SIGCHI conferences.\\
  311. % sigchi-a & Format for SIGCHI extended abstracts.\\
  312. % \bottomrule
  313. % \end{tabularx}
  314. % \end{table}
  315. %
  316. % There are several Boolean options that can take |true| or |false|
  317. % values. They are listed in Table~\ref{tab:opts_bool}. The words
  318. % |=true| can be omitted when setting a Boolean option, so instead of
  319. % |screen=true| one can write just |screen|, for example,
  320. % \begin{verbatim}
  321. % \documentclass[acmsmall, screen, review]{acmart}
  322. % \end{verbatim}
  323. % The option |review| is useful when combined with the |manuscript| format
  324. % option. It provides a version suitable for reviewers and
  325. % copy editors.
  326. %
  327. % The default for the option |screen| depends on the publication. At
  328. % present it is |false| for all publications \emph{but} PACM, since
  329. % PACM is now electronic-only. Thus PACM titles~(see
  330. % Table~\ref{tab:pubs}) set this option to |true|. In the future this
  331. % option may involve additional features suitable for on-screen
  332. % versions of articles.
  333. %
  334. % The option |natbib| is used when the corresponding
  335. % \BibTeX\ style is based on |natbib|. In most cases you do not need
  336. % to set it. See
  337. % Section~\ref{sec:ug_bibliography}.
  338. %
  339. % The option |anonymous| is used
  340. % for anonymous review processes and causes all author information to be
  341. % obscured.
  342. %
  343. % The option |timestamp| is used to include a time stamp in the
  344. % footer of each page. When preparing a document, this can help avoid
  345. % confusing different revisions. The footer also includes the page range of
  346. % the document. This helps detect missing pages in hard copies.
  347. %
  348. % The option |authordraft| is intended for author's drafts that are not
  349. % intended for distribution. It typesets a copyright block to give the
  350. % author an idea of its size and the overall size of the paper but
  351. % overprints it with the phrase ``Unpublished working draft. Not for
  352. % distribution.'', which is also used as a watermark. This option sets
  353. % |timestamp| and |review| to |true|, but these can be
  354. % overriden by setting these options to |false| \emph{after}
  355. % setting |authordraft| to |true|.
  356. %
  357. % The option |balance| determines whether the last page in the two
  358. % column mode has balanced columns. By default it is |true|; however,
  359. % it may lead to problems for some documents. Set it to |false| if
  360. % you encounter compilation errors. Note that for one page documents
  361. % \cs{balance} command might cause problems.
  362. %
  363. % The option |urlbreakonhyphens| determines whether URLs can be split
  364. % between lines after hyphens. By default it is true. Set it to
  365. % |false| to disallow these breaks.
  366. %
  367. % \begin{table}
  368. % \centering
  369. % \caption{Boolean options}
  370. % \label{tab:opts_bool}
  371. % \begin{tabularx}{\textwidth}{>{\ttfamily}l>{\ttfamily}lX}
  372. % \toprule
  373. % \normalfont Option & \normalfont Default & Meaning\\
  374. % \midrule
  375. % review & false & A review version: lines are numbered and
  376. % hyperlinks are colored\\
  377. % screen & {\rmfamily see text} & A screen version:
  378. % hyperlinks are colored\\
  379. % natbib & true & Whether to use the |natbib| package (see
  380. % Section~\ref{sec:ug_bibliography})\\
  381. % anonymous & false & Whether to make author(s) anonymous\\
  382. % authorversion & false & Whether to generate a special
  383. % version for the authors' personal use or posting (see
  384. % Section~\ref{sec:ug_topmatter})\\
  385. % nonacm & false & Use the class typesetting options for
  386. % a non-ACM document, which will not include the conference/journal
  387. % header and footers or permission statements\\
  388. % timestamp & false & Whether to put a time stamp in the
  389. % footer of each page\\
  390. % authordraft & false & Whether author's-draft mode is enabled\\
  391. % acmthm & true & Whether to define theorem-like environments, see
  392. % Section~\ref{sec:ug_theorems}\\
  393. % balance & true & Whether to balance the last page in two column
  394. % mode\\
  395. % urlbreakonhyphens & true & Whether to break urls on hyphens\\
  396. % \bottomrule
  397. % \end{tabularx}
  398. % \end{table}
  399. %
  400. %
  401. %
  402. %\subsection{Top matter}
  403. %\label{sec:ug_topmatter}
  404. %
  405. % A number of commands set up \emph{top matter} or (in
  406. % computer science jargon) \emph{metadata} for an article. They
  407. % establish the publication name, article title, authors, DOI and
  408. % other data. Some of these commands, like \cs{title} and \cs{author},
  409. % should be put by the authors. Others, like \cs{acmVolume} and
  410. % \cs{acmDOI}---by the editors. Below we describe these commands and
  411. % mention who should issue them. These macros should be used
  412. % \emph{before} the \cs{maketitle} command. Note that in previous
  413. % versions of ACM classes some of these commands should be used before
  414. % \cs{maketitle}, and some after it. Now they all must be used before
  415. % \cs{maketitle}.
  416. %
  417. %
  418. % This class internally loads the |amsart| class, so many top-matter
  419. % commands are inherited from |amsart|~\cite{Downes04:amsart}.
  420. %
  421. % \DescribeMacro{\acmJournal}%
  422. % The macro \cs{acmJournal}\marg{shortName} sets the name of the
  423. % journal or transaction for journals and transactions. The argument
  424. % is the short name of the publication \emph{in uppercase}, for
  425. % example,
  426. % \begin{verbatim}
  427. % \acmJournal{TOMS}
  428. % \end{verbatim}
  429. % The currently recognized journals are listed in
  430. % Table~\ref{tab:pubs}. Note that conference proceedings published in
  431. % \emph{book} form do not set this macro.
  432. %
  433. %
  434. %
  435. % \DescribeMacro{\acmConference}%
  436. % The macro
  437. % \cs{acmConference}\oarg{short name}\marg{name}\marg{date}\marg{venue} is
  438. % used for conference proceedings published in the book form. The
  439. % arguments are the following:
  440. % \begin{description}
  441. % \item[short name:] the abbreviated name of the conference (optional).
  442. % \item[name:] the name of the conference.
  443. % \item[date:] the date(s) of the conference.
  444. % \item[venue:] the place of the conference.
  445. % \end{description}
  446. % Examples:
  447. % \begin{verbatim}
  448. % \acmConference[TD'15]{Technical Data Conference}{November
  449. % 12--16}{Dallas, TX, USA}
  450. % \acmConference{SA'15 Art Papers}{November 02--06, 2015}{Kobe, Japan}
  451. % \end{verbatim}
  452. %
  453. % \DescribeMacro{\acmBooktitle}%
  454. % By default we assume that conference proceedings are published
  455. % in the book named \emph{Proceedings of \textsc{CONFERENCE}}, where
  456. % \textsc{CONFERENCE} is the name of the conference inferred from the
  457. % command \cs{acmConference} above. However, sometimes the book title
  458. % is different. The command \cs{acmBooktitle} can be used to set this
  459. % title, for example,
  460. % \begin{verbatim}
  461. % \acmBooktitle{Companion to the first International Conference on the
  462. % Art, Science and Engineering of Programming (Programming '17)}
  463. % \end{verbatim}
  464. %
  465. % An ACM paper should have either \cs{acmJournal} or
  466. % \cs{acmConference} command. If it has both (or more) commands, the
  467. % last one takes precedence. Note that if you have the command
  468. % \cs{acmConference} in a journal format like |acmsmall|, the class
  469. % will use conference format for bibstrip and reference citation
  470. % formatting. In the samples directory there is a file
  471. % |sample-acmsmall-conf.tex| with the example of this usage.
  472. %
  473. %
  474. %
  475. % \DescribeMacro{\editor}%
  476. % In most cases, conference proceedings are edited. You can use the
  477. % command \cs{editor}\marg{editor} to set the editor of the volume.
  478. % This command can be repeated, for example,
  479. % \begin{verbatim}
  480. % \editor{Jennifer B. Sartor}
  481. % \editor{Theo D'Hondt}
  482. % \editor{Wolfgang De Meuter}
  483. % \end{verbatim}
  484. %
  485. %
  486. % \DescribeMacro{\title}%
  487. % The command |\title|, as in the |amsart| class, has two arguments: one
  488. % optional, and one mandatory:
  489. % \begin{flushleft}
  490. % |\title[|\meta{ShortTitle}|]{|\meta{FullTitle}|}|
  491. % \end{flushleft}
  492. % The mandatory argument is the full title of the article. The
  493. % optional argument, if present, defines the shorter version of the
  494. % title for running heads. If the optional argument is absent, the
  495. % full title is used instead.
  496. %
  497. % It is expected that this command is inserted by the author of the
  498. % manuscript.
  499. %
  500. % \DescribeMacro{\subtitle}%
  501. % Besides title, ACM classes allow a subtitle, set with the
  502. % \cs{subtitle}\marg{subtitle} macro.
  503. %
  504. % The commands for specifying authors are highly structured.
  505. % The reason is they serve double duty: the authors' information is
  506. % typeset in the manuscript \emph{and} is used by the metadata
  507. % extraction tools for indexing and cataloguing. Therefore it is very
  508. % important to follow the guidelines exactly.
  509. %
  510. % \DescribeMacro{\author}%
  511. % \DescribeMacro{\orcid}
  512. % \DescribeMacro{\affiliation}%
  513. % \DescribeMacro{\email}%
  514. % The basic commands are \cs{author}, \cs{orcid} (for the researchers
  515. % registered with ORCID, \url{http://www.orcid.org/}), \cs{affiliation} and
  516. % \cs{email}. In the simplest case, you enter them in this order:
  517. % \begin{verbatim}
  518. % \author{...}
  519. % \orcid{...}
  520. % \affiliation{...}
  521. % \email{...}
  522. % \end{verbatim}
  523. % Do \emph{not} use the \LaTeX\ \cs{and} macro or commas, or \verb|\\|
  524. % between the authors! Each author deserves his or
  525. % her own \cs{author} command. An attempt to list several authors or
  526. % their e-mails in one command leads to a warning or an error. This
  527. % is not a bug, but the expected behavior.
  528. %
  529. % Note that some formats do not typeset e-mails or ORCID identifiers.
  530. % Do not worry: the metadata tools will get them.
  531. %
  532. % Sometimes an author has several affiliations. In this case, the
  533. % \cs{affiliation} command should be repeated:
  534. % \begin{verbatim}
  535. % \author{...}
  536. % \orcid{...}
  537. % \affiliation{...}
  538. % \affiliation{...}
  539. % \email{...}
  540. % \end{verbatim}
  541. % Similarly you can repeat the \cs{email} command.
  542. %
  543. % You may have several authors with the same affiliation, different
  544. % affiliations, or overlapping affiliations (author~$A_1$ is affiliated
  545. % with institutions $I_1$ and $I_2$, while author $A_2$ is affiliated
  546. % with $I_2$ only, author $A_3$ is affiliated with
  547. % $I_1$ and $I_3$, etc.). The recommended solution is to put the
  548. % \cs{affiliation} commands after each author, possibly repeating them:
  549. % \begin{verbatim}
  550. % \author{...}
  551. % \orcid{...}
  552. % \affiliation{...}
  553. % \affiliation{...}
  554. % \email{...}
  555. % \author{...}
  556. % \orcid{...}
  557. % \affiliation{...}
  558. % \email{...}
  559. % \author{...}
  560. % \orcid{...}
  561. % \affiliation{...}
  562. % \affiliation{...}
  563. % \email{...}
  564. % \end{verbatim}
  565. % In some cases, when several authors share the same affiliation, you can
  566. % try to save space using the format
  567. % \begin{verbatim}
  568. % \author{...}
  569. % \email{...}
  570. % \author{...}
  571. % \email{...}
  572. % \affiliation{...}
  573. % \end{verbatim}
  574. % However, this format is not generally recommended.
  575. %
  576. % \DescribeMacro{\additionalaffiliation}%
  577. % In some cases, too many affiliations can take too much space. The
  578. % command \cs{additionalaffiliation}\marg{affiliation} creates a
  579. % footnote after an author's name with the words ``Also with
  580. % \marg{affiliation}''. You should use this command only as a last
  581. % resort. An example of usage is:
  582. % \begin{verbatim}
  583. % \author{G. Tobin}
  584. % \author{Ben Trovato}
  585. % \additionalaffiliation{%
  586. % \institution{The Th{\o}rv{\"a}ld Group}
  587. % \streetaddress{1 Th{\o}rv{\"a}ld Circle}
  588. % \city{Hekla}
  589. % \country{Iceland}}
  590. % \affiliation{%
  591. % \institution{Institute for Clarity in Documentation}
  592. % \streetaddress{P.O. Box 1212}
  593. % \city{Dublin}
  594. % \state{Ohio}
  595. % \postcode{43017-6221}}
  596. % \end{verbatim}
  597. % Here Trovato and Tobin share their affiliation with the Institute
  598. % for Clarity in Documentation, but only Ben Trovato is affiliated
  599. % with The Th{\o}rv{\"a}ld Group.
  600. %
  601. %
  602. % \DescribeMacro{\position}%
  603. % \DescribeMacro{\institution}%
  604. % \DescribeMacro{\department}%
  605. % \DescribeMacro{\streetaddress}%
  606. % \DescribeMacro{\city}%
  607. % \DescribeMacro{\state}%
  608. % \DescribeMacro{\postcode}%
  609. % \DescribeMacro{\country}%
  610. % The \cs{affiliation} and \cs{additionalaffiliation} commands are
  611. % further structured to interact with the metadata extraction tools.
  612. % Inside these commands you should use the \cs{position},
  613. % \cs{institution}, \cs{department}, \cs{city}, \cs{streetaddress},
  614. % \cs{state}, \cs{postcode} and \cs{country} macros to indicate the
  615. % corresponding parts of the affiliation. Note that in some cases
  616. % (for example, journals) these parts are not printed in the resulting
  617. % copy, but they \emph{are} necessary since they are used by the XML
  618. % metadata extraction programs. Do \emph{not} put commas or |\\|
  619. % between the elements of \cs{affiliation}. They will be provided
  620. % automatically.
  621. %
  622. %
  623. % An example of the author block:
  624. % \begin{verbatim}
  625. % \author{A. U. Thor}
  626. % \orcid{1234-4564-1234-4565}
  627. % \affiliation{%
  628. % \institution{University of New South Wales}
  629. % \department{School of Biomedical Engineering}
  630. % \streetaddress{Samuels Building (F25), Kensington Campus}
  631. % \city{Sidney}
  632. % \state{NSW}
  633. % \postcode{2052}
  634. % \country{Australia}}
  635. % \email{author@nsw.au.edu}
  636. % \author{A. N. Other}
  637. % \affiliation{%
  638. % \institution{University of New South Wales}
  639. % \city{Sidney}
  640. % \state{NSW}
  641. % \country{Australia}}
  642. % \author{C. O. Respondent}
  643. % \orcid{1234-4565-4564-1234}
  644. % \affiliation{%
  645. % \institution{University of Pennsylvania}
  646. % \city{Philadelphia}
  647. % \state{PA}
  648. % \country{USA}}
  649. % \affiliation{%
  650. % \institution{University of New South Wales}
  651. % \city{Sidney}
  652. % \state{NSW}
  653. % \country{Australia}}
  654. % \end{verbatim}
  655. %
  656. % Note that the old ACM conference formats did not allow more than six
  657. % authors and required some effort from authors to achieve
  658. % alignment. The new format is much better in this.
  659. %
  660. % Sometimes an author works in several departments within the same
  661. % insitution. There could be two situations: the departments are
  662. % independent, or one department is within another. In the first
  663. % case, just repeat the command \cs{department} several times. To
  664. % handle the second case the command has an optional numerical
  665. % parameter. The departments with higher numbers are higher in the
  666. % organizational chart. Compare
  667. % \begin{verbatim}
  668. % \affiliation{%
  669. % \department[0]{Department of Lunar Studies} % 0 is the default
  670. % \department[1]{John Doe Institute} % higher than 0
  671. % \institution{University of San Serriffe}
  672. % \country{San Serriffe}}
  673. % \end{verbatim}
  674. % and
  675. % \begin{verbatim}
  676. % \affiliation{%
  677. % \department{Department of Lunar Studies} % Not in the John Doe Institute!
  678. % \department{John Doe Institute}
  679. % \institution{University of San Serriffe}
  680. % \country{San Serriffe}}
  681. % \end{verbatim}
  682. %
  683. %
  684. % The command \cs{affiliation} formats its output according to
  685. % American conventions. This might be wrong for some cases.
  686. % Consider, for example, a German address. In Germany, the postcode is
  687. % put before the city and is not separated by a comma. We can handle this
  688. % order using
  689. % \begin{verbatim}
  690. % \affiliation{%
  691. % \institution{Fluginstitut}
  692. % \streetaddress{Sonnenallee 17}
  693. % \postcode{123456}
  694. % \city{Helm}
  695. % \country{Germany}}
  696. % \end{verbatim}
  697. % However, the comma after the postcode is unfortunate: the address will
  698. % be typeset (in some formats) as
  699. % \begin{verbatim}
  700. % Fluginstitut
  701. % Sonenallee 17
  702. % 123456, Helm, Germany
  703. % \end{verbatim}
  704. %
  705. %
  706. % To overcome this problem, the command \cs{affiliation} has an
  707. % optional parameter |obeypunctuation|, which can be |false| (the
  708. % default) or |true|. If this parameter is |true|, \cs{afffiliation}
  709. % obeys the author's command. Thus
  710. % \begin{verbatim}
  711. % \affiliation[obeypunctuation=true]{%
  712. % \institution{Fluginstitut}\\
  713. % \streetaddress{Sonnenallee 17}\\
  714. % \postcode{123456}
  715. % \city{Helm},
  716. % \country{Germany}}
  717. % \end{verbatim}
  718. % will be typeset as
  719. % \begin{verbatim}
  720. % Fluginstitut
  721. % Sonenallee 17
  722. % 123456 Helm, Germany
  723. % \end{verbatim}
  724. %
  725. % Note that you should \emph{not} use this option for journals.
  726. %
  727. % It is expected that these commands are inserted by the author of the
  728. % manuscript.
  729. %
  730. % \DescribeMacro{\thanks}%
  731. % Like |amsart| (and unlike standard \LaTeX{}), we allow
  732. % |\thanks| only \emph{outside} of the commands |\title| and |\author|.
  733. % This command is obsolete and should \emph{not} be used in most
  734. % cases. Do not list your acknowledgments or grant sponsors here.
  735. % Put this information in the |acks| environment (see
  736. % Section~\ref{sec:ug_acks}).
  737. %
  738. % \DescribeMacro{\authorsaddresses}%
  739. % In some formats, addresses are printed as a footnote on the first
  740. % page. By default \LaTeX\ typesets them itself using the information
  741. % you give it. However, you can override its choice using the
  742. % commmand \cs{authorsaddresses}\marg{contact addresses}, for example,
  743. % \begin{verbatim}
  744. % \authorsaddresses{%
  745. % Authors' addresses: G.~Zhou, Computer Science Department, College of
  746. % William and Mary, 104 Jameson Rd, Williamsburg, PA 23185, US;
  747. % V.~B\'eranger, Inria Paris-Rocquencourt, Rocquencourt, France;
  748. % A.~Patel, Rajiv Gandhi University, Rono-Hills, Doimukh, Arunachal
  749. % Pradesh, India; H.~Chan, Tsinghua University, 30 Shuangqing Rd,
  750. % Haidian Qu, Beijing Shi, China; T.~Yan, Eaton Innovation Center,
  751. % Prague, Czech Republic; T.~He, C.~Huang, J.~A.~Stankovic University
  752. % of Virginia, School of Engineering Charlottesville, VA 22903, USA;
  753. % T. F. Abdelzaher, (Current address) NASA Ames Research Center,
  754. % Moffett Field, California 94035.}
  755. % \end{verbatim}
  756. % You can \emph{suppress} printing authors' addresses by setting them
  757. % to an empty string: |\authorsaddresses{}|.
  758. %
  759. % \DescribeMacro{\titlenote}%
  760. % \DescribeMacro{\subtitlenote}%
  761. % \DescribeMacro{\authornote}%
  762. % While the command \cs{thanks} generates a note without a footnote
  763. % mark, sometimes the authors might need notes more tightly connected
  764. % to the title, subtitle or author. The commands \cs{titlenote},
  765. % \cs{subtitlenote} and \cs{authornote} that follow the corresponding
  766. % commands (\cs{title}, \cs{subtitle} and \cs{author}) generate such
  767. % notes. For example,
  768. % \begin{verbatim}
  769. % \title{This is a title}
  770. % \titlenote{This is a titlenote}
  771. % \author{A. U. Thor}
  772. % \authornote{This is an authornote}
  773. % \end{verbatim}
  774. %
  775. % Please never use a \cs{footnote} inside an \cs{author} or \cs{title}
  776. % command since this confuses the metadata extraction software. (Actually
  777. % these commands now produce errors.)
  778. %
  779. % \DescribeMacro{\authornotemark}%
  780. % Sometimes one may need to have the same footnote connected to
  781. % several authors. The command \cs{authornotemark}\oarg{number} adds
  782. % just the footnote mark, for example,
  783. % \begin{verbatim}
  784. % \author{A. U. Thor}
  785. % \authornote{Both authors contributed equally to the paper}
  786. % ...
  787. % \author{A. N. Other}
  788. % \authornotemark[1]
  789. % \end{verbatim}
  790. % The correct numbering of these marks is the responsibility of the
  791. % user.
  792. %
  793. % \DescribeMacro{\acmVolume}%
  794. % \DescribeMacro{\acmNumber}%
  795. % \DescribeMacro{\acmArticle}%
  796. % \DescribeMacro{\acmYear}%
  797. % \DescribeMacro{\acmMonth}%
  798. % The macros \cs{acmVolume}, \cs{acmNumber}, \cs{acmArticle},
  799. % \cs{acmYear} and \cs{acmMonth} are inserted by the editor and set
  800. % the journal volume, issue, article number, year and month
  801. % corrspondingly. The arguments of all these commands, including
  802. % \cs{acmMonth}, is numerical. For example,
  803. % \begin{verbatim}
  804. % \acmVolume{9}
  805. % \acmNumber{4}
  806. % \acmArticle{39}
  807. % \acmYear{2010}
  808. % \acmMonth{3}
  809. % \end{verbatim}
  810. % Note that \cs{acmArticle} is used not only for journals but also
  811. % for some conference proceedings.
  812. %
  813. % \DescribeMacro{\acmArticleSeq}%
  814. % The articles in the same issue of a journal have a \emph{sequence
  815. % number}. It is used to vertically position the black blob on the first
  816. % page of some formats. By default it is the same as the article number,
  817. % but the command \cs{acmArticleSeq}\marg{n} can be used to change it:
  818. % \begin{verbatim}
  819. % \acmArticle{39} % The sequence number will be 39 by default
  820. % \acmArticleSeq{5} % We redefine it to 5
  821. % \end{verbatim}
  822. % Setting this number to zero suppresses the blob.
  823. %
  824. % \DescribeMacro{\acmSubmissionID}%
  825. % If your paper got a Submission~ID from the Conference Management
  826. % System, put it here:
  827. % \begin{verbatim}
  828. % \acmSubmissionID{123-A56-BU3}
  829. % \end{verbatim}
  830. %
  831. %
  832. % \DescribeMacro{\acmPrice}%
  833. % The macro \cs{acmPrice}\marg{price} sets the price for the article,
  834. % for example,
  835. % \begin{verbatim}
  836. % \acmPrice{25.00}
  837. % \end{verbatim}
  838. % Note that you do not need to put the dollar sign here, just the
  839. % amount. By default the price is \$15.00, unless the copyright is
  840. % set to |usgov|, |rightsretained|, |iw3c2w3|, or |iw3c2w3g|, when it
  841. % is suppressed. Note that to override the defaults you need to set
  842. % the price \emph{after} the \cs{setcopyright} command. Also, the
  843. % command |\acmPrice{}| suppresses the printing of the price.
  844. %
  845. % \DescribeMacro{\acmISBN}%
  846. % Book-like volumes have ISBN numbers attached to them. The macro
  847. % \cs{acmISBN}\marg{ISBN} sets it. Normally it is set by the
  848. % typesetter, for example,
  849. % \begin{verbatim}
  850. % \acmISBN{978-1-4503-3916-2}
  851. % \end{verbatim}
  852. % Setting it to the empty string, as |\acmISBN{}|, suppresses printing the
  853. % ISBN.
  854. %
  855. % \DescribeMacro{\acmDOI}%
  856. % The macro \cs{acmDOI}\marg{DOI} sets the DOI of the article, for
  857. % example,
  858. % \begin{verbatim}
  859. % \acmDOI{10.1145/9999997.9999999}
  860. % \end{verbatim}
  861. % It is normally set by the typesetter. Setting it to the empty
  862. % string, as |\acmDOI{}|, suppresses the DOI.
  863. %
  864. %
  865. % \DescribeMacro{\acmBadgeR}%
  866. % \DescribeMacro{\acmBadgeL}%
  867. % Some conference articles get special distinctions, for example, the
  868. % artifact evaluation for PPoPP~2016
  869. % (see~\url{http://ctuning.org/ae/ppopp2016.html}). These articles
  870. % display special badges supplied by the conference organizers. This
  871. % class provides commands to add these badges:
  872. % \cs{acmBadgeR}\oarg{url}\marg{graphics} and
  873. % \cs{acmBadgeL}\oarg{url}\marg{graphics}. The first command puts the
  874. % badge to the right of the title, and the second one---to the left.
  875. % The exception is the |sigchi-a| mode for SIGCHI extended abstracts,
  876. % which puts the badges on the left margin. The arguments have the
  877. % following meaning: \oarg{url}, if provided, sets the link to the
  878. % badge authority in the screen version, while \marg{graphics} sets
  879. % the graphics file with the badge image. The file must be a cropped
  880. % square, which is scaled to a standard size in the output. For
  881. % example, if the badge image is |ae-logo.pdf|, the command is
  882. % \begin{verbatim}
  883. % \acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
  884. % \end{verbatim}
  885. %
  886. %
  887. %
  888. % \DescribeMacro{\startPage}%
  889. % The macro \cs{startPage}\marg{page} sets the first page of the
  890. % article in a journal or book. It is used by the typesetter.
  891. %
  892. %
  893. % \DescribeMacro{\terms}%
  894. % \DescribeMacro{\keywords}%
  895. % The command
  896. % \cs{keywords}\marg{keyword, keyword,\ldots} sets keywords for the
  897. % article. They must be
  898. % separated by commas, for example,
  899. % \begin{verbatim}
  900. % \keywords{wireless sensor networks, media access control,
  901. % multi-channel, radio interference, time synchronization}
  902. % \end{verbatim}
  903. %
  904. % \DescribeEnv{CCSXML}%
  905. % \DescribeMacro{\ccsdesc}%
  906. % ACM publications are classified according to the ACM Computing
  907. % Classification Scheme (CCS). CCS codes are used both in the typeset
  908. % version of the publications \emph{and} in the metadata in various
  909. % databases. Therefore you need to provide both \TeX\ commands and XML
  910. % metadata with the paper.
  911. %
  912. % The tool at \url{http://dl.acm.org/ccs.cfm} can be used to generate
  913. % CCS codes. After you select the topics, click on ``Generate CCS
  914. % codes'' to get results like the following:
  915. % \begin{verbatim}
  916. % \begin{CCSXML}
  917. % <ccs2012>
  918. % <concept>
  919. % <concept_id>10010520.10010553.10010562</concept_id>
  920. % <concept_desc>Computer systems organization~Embedded systems</concept_desc>
  921. % <concept_significance>500</concept_significance>
  922. % </concept>
  923. % <concept>
  924. % <concept_id>10010520.10010575.10010755</concept_id>
  925. % <concept_desc>Computer systems organization~Redundancy</concept_desc>
  926. % <concept_significance>300</concept_significance>
  927. % </concept>
  928. % <concept>
  929. % <concept_id>10010520.10010553.10010554</concept_id>
  930. % <concept_desc>Computer systems organization~Robotics</concept_desc>
  931. % <concept_significance>100</concept_significance>
  932. % </concept>
  933. % <concept>
  934. % <concept_id>10003033.10003083.10003095</concept_id>
  935. % <concept_desc>Networks~Network reliability</concept_desc>
  936. % <concept_significance>100</concept_significance>
  937. % </concept>
  938. % </ccs2012>
  939. % \end{CCSXML}
  940. %
  941. % \ccsdesc[500]{Computer systems organization~Embedded systems}
  942. % \ccsdesc[300]{Computer systems organization~Redundancy}
  943. % \ccsdesc{Computer systems organization~Robotics}
  944. % \ccsdesc[100]{Networks~Network reliability}
  945. % \end{verbatim}
  946. %
  947. % You just need to copy this code and paste it in your paper anywhere
  948. % before \verb|\maketitle|.
  949. %
  950. % \DescribeMacro{\setcopyright}
  951. % There are several possibilities for the copyright of the papers
  952. % published by the ACM: the authors may transfer the rights to the ACM,
  953. % license them to the ACM, some or all authors might be employees of the
  954. % US or Canadian governments, etc. Accordingly the command
  955. % \verb|\setcopyright{...}| is introduced. Its argument is the
  956. % copyright status of the paper, for example,
  957. % \verb|\setcopyright{acmcopyright}|. The possible values for this
  958. % command are listed in Table~\ref{tab:setcopyright}. This command
  959. % must be placed in the preamble, before |\begin{document}|.
  960. %
  961. % \begin{table}
  962. % \centering
  963. % \caption{Parameters for the \texttt{\textbackslash setcopyright} command}
  964. % \label{tab:setcopyright}
  965. % \begin{tabularx}{\textwidth}{lX}
  966. % \toprule
  967. % Parameter & Meaning\\
  968. % \midrule
  969. % \texttt{none} & The copyright and permission information is not
  970. % typeset. (This is the option for some ACM conferences.) \\
  971. % \texttt{acmcopyright} & The authors transfer the copyright to the
  972. % ACM (the ``traditional'' choice).\\
  973. % \texttt{acmlicensed} & The authors retain the copyright but
  974. % license the publication rights to ACM\@. \\
  975. % \texttt{rightsretained} & The authors retain the copyright and
  976. % publication rights to themselves or somebody else. \\
  977. % \texttt{usgov} & All the authors are employees of the US
  978. % government. \\
  979. % \texttt{usgovmixed} & Some authors are employees of the US
  980. % government. \\
  981. % \texttt{cagov} & All the authors are employees of the Canadian
  982. % government. \\
  983. % \texttt{cagovmixed} & Some authors are employees of the Canadian
  984. % government. \\
  985. % \texttt{licensedusgovmixed} & Some authors are employees of the US
  986. % government, and the publication rights are licensed to ACM\@. \\
  987. % \texttt{licensedcagov} & All the authors are employees of the Canadian
  988. % government, and the publication rights are licensed to ACM\@. \\
  989. % \texttt{licensedcagovmixed} & Some authors are employees of the
  990. % Canadian
  991. % government, and the publication rights are licensed to ACM\@. \\
  992. % \texttt{othergov} & Authors are employees of a
  993. % government other than the US or Canada. \\
  994. % \texttt{licensedothergov} & Authors are employees of a
  995. % government other than the US or Canada, and the publication rights
  996. % are licensed to ACM\@. \\
  997. % \texttt{iw3c2w3} & Special statement for conferences organized
  998. % by IW3C2.\\
  999. % \texttt{iw3c2w3g} & Special statement for conferences organized
  1000. % by IW3C2, when some authors are approved Google employees.\\
  1001. % \bottomrule
  1002. % \end{tabularx}
  1003. % \end{table}
  1004. % The ACM submission software should generate the right command for you
  1005. % to paste into your file.
  1006. %
  1007. %
  1008. % \DescribeMacro{\copyrightyear}%
  1009. % Each copyright statement must have the year of copyright. By
  1010. % default it is the same as \cs{acmYear}, but you can override this
  1011. % using the macro \cs{copyrightyear}, e.g.,
  1012. % \begin{verbatim}
  1013. % \acmYear{2016}
  1014. % \copyrightyear{2015}
  1015. % \end{verbatim}
  1016. %
  1017. % There is a special case for a personal copy that the authors may be
  1018. % allowed to generate for their use or a posting on a personal site
  1019. % (check the instructions for the specific journal or conference for
  1020. % the details). The document option |authorversion=true| produces a
  1021. % special form of the copyright statement for this case. Note that
  1022. % you still need the \cs{setcopyright} command and (optionally)
  1023. % \cs{copyrightyear} command to tell \TeX\ about the copyright owner and
  1024. % year. Also, you should be aware that due to the different sizes of
  1025. % the permssion blocks for the printed version and authors' version,
  1026. % the page breaks might be different between them.
  1027. %
  1028. % \DescribeEnv{abstract}%
  1029. % The environment |abstract| must \emph{precede} the \cs{maketitle}
  1030. % command. Again, this is different from the standard \LaTeX.
  1031. % Putting |abstract| after \cs{maketitle} will trigger an error.
  1032. %
  1033. %
  1034. % \DescribeEnv{teaserfigure}%
  1035. % A special kind of figure is used for many two-column conference
  1036. % proceedings. This figure is placed just after the authors but
  1037. % before the main text. The environment |teaserfigure| is used for these
  1038. % figures. This environment must be used \emph{before}
  1039. % \cs{maketitle}, for example,
  1040. % \begin{verbatim}
  1041. % \begin{teaserfigure}
  1042. % \includegraphics[width=\textwidth]{sampleteaser}
  1043. % \caption{This is a teaser}
  1044. % \label{fig:teaser}
  1045. % \end{teaserfigure}
  1046. % \end{verbatim}
  1047. %
  1048. %
  1049. % \DescribeMacro{\settopmatter}%
  1050. % Some information in the top matter is printed for certain journals
  1051. % or proceedings and suppressed for others. You can override these
  1052. % defaults using the command \cs{settopmatter}\marg{settings}. The
  1053. % settings and their meanings are listed in
  1054. % Table~\ref{tab:settopmatter}. For example,
  1055. % \begin{verbatim}
  1056. % \settopmatter{printacmref=false, printccs=true, printfolios=true}
  1057. % \end{verbatim}
  1058. % The parameter |authorsperrow| requires some explanation. In
  1059. % conference proceedings authors' information is typeset in boxes,
  1060. % several boxes per row (see |sample-sigconf.pdf|,
  1061. % |sample-sigplan.pdf|, etc.). The number of boxes per row is
  1062. % determined automatically. If you want to override this,
  1063. % you can do it using this parameter, for example,
  1064. % \begin{verbatim}
  1065. % \settopmatter{authorsperrow=4}
  1066. % \end{verbatim}
  1067. % However, in most cases you should \emph{not} do this and should use the
  1068. % default settings. Setting |authorsperrow| to $0$ will revert it to the
  1069. % default settings.
  1070. %
  1071. % \begin{table}
  1072. % \centering
  1073. % \caption{Settings for the \cs{settopmatter} command}
  1074. % \label{tab:settopmatter}
  1075. % \begin{tabularx}{\textwidth}{llX}
  1076. % \toprule
  1077. % Parameter & Values & Meaning\\
  1078. % \midrule
  1079. % |printccs| & true/false & Whether to print CCS categories\\
  1080. % |printacmref| & true/false & Whether to print the ACM bibliographic
  1081. % entry\\
  1082. % |printfolios| & true/false & Whether to print page numbers
  1083. % (folios)\\
  1084. % |authorsperrow| & numeric & Number of authors per row for the title
  1085. % page in
  1086. % conference proceedings formats\\
  1087. % \bottomrule
  1088. % \end{tabularx}
  1089. % \end{table}
  1090. %
  1091. %
  1092. % \DescribeMacro{\received}%
  1093. % The command \cs{received}\oarg{stage}\marg{date} sets the history of
  1094. % the publication. The~\oarg{stage} argument is optional; the default
  1095. % is |Received| for the first date and |revised| for the subsequent
  1096. % ones. For example,
  1097. % \begin{verbatim}
  1098. % \received{February 2007}
  1099. % \received[revised]{March 2009}
  1100. % \received[accepted]{June 2009}
  1101. % \end{verbatim}
  1102. %
  1103. %
  1104. % \DescribeMacro{\maketitle}%
  1105. % The macro \cs{maketitle} must be the last command in the top-matter
  1106. % group. That is it must follow the commands defined in this section.
  1107. %
  1108. %
  1109. % \DescribeMacro{\shortauthors}%
  1110. % \emph{After} the command \cs{maketitle}, the macro \cs{shortauthors}
  1111. % stores the names of the authors for the running head. You can
  1112. % redefine it if the list of author's name is too long, e.g.,
  1113. % \begin{verbatim}
  1114. % \maketitle
  1115. % \renewcommand{\shortauthors}{Zhou et al.}
  1116. % \end{verbatim}
  1117. %
  1118. %
  1119. %\subsection{Algorithms}
  1120. %\label{sec:ug_algorithms}
  1121. %
  1122. % There are now several good packages for typesetting
  1123. % algorithms~\cite{Fiorio15, Brito09, Heinz15}, and the authors are
  1124. % free to choose their favorite one.
  1125. %
  1126. %
  1127. %
  1128. %\subsection{Figures and tables}
  1129. %\label{sec:ug_floats}
  1130. %
  1131. % The new ACM styles use the standard \LaTeX\ interface for figures and
  1132. % tables. There are some important items to be aware of, however.
  1133. %
  1134. % \begin{enumerate}
  1135. % \item The captions for figures must be entered \emph{after} the
  1136. % figure bodies and for tables \emph{before} the table bodies.
  1137. % \item The ACM uses the standard types for figures and tables and adds
  1138. % several new ones. In total there are the following types:
  1139. % \begin{description}
  1140. % \item[figure, table:] a standard figure or table taking a full text
  1141. % width in one-column formats and one column width in two-column formats.
  1142. % \item[figure*, table*] in two-column formats, a special figure or
  1143. % table taking a full text width.
  1144. % \item[teaserfigure:] a special figure before \cs{maketitle}.
  1145. % \item[sidebar, marginfigure, margintable:] in the |sigchi-a| format,
  1146. % special sidebars, tables and figures in the margin.
  1147. % \end{description}
  1148. %
  1149. % \item Accordingly, when scaling images, one should use the
  1150. % following sizes:
  1151. % \begin{enumerate}
  1152. % \item For |teaserfigure|, |figure| in one-column mode or |figure*| in
  1153. % two-column mode, use \cs{textwidth}. In one-column mode, you can also
  1154. % use \cs{columnwidth}, which coincides with \cs{textwidth} in this
  1155. % case.
  1156. % \item For |figure| in two-column mode, use \cs{columnwidth}.
  1157. % \item For |marginfigure|, use \cs{marginparwidth}.
  1158. % \item For |figure*| in SIGCHI extended
  1159. % abstracts, use \cs{fulltextwidth}.
  1160. % \end{enumerate}
  1161. %
  1162. % \end{enumerate}
  1163. %
  1164. % It is strongly recommended to use the package |booktabs|~\cite{Fear05}
  1165. % and follow its main principles of typography with respect to tables:
  1166. % \begin{enumerate}
  1167. % \item Never, ever use vertical rules.
  1168. % \item Never use double rules.
  1169. % \end{enumerate}
  1170. % It is also a good idea not to overuse horizontal rules.
  1171. %
  1172. % For table \emph{footnotes} you have several options described in the TeX
  1173. % FAQ~\cite{TeXFAQ}. The simplest one is to use a \cs{minipage}
  1174. % environment:
  1175. % \begin{verbatim}
  1176. % \begin{table}
  1177. % \caption{Simulation Configuration}
  1178. % \label{tab:conf}
  1179. % \begin{minipage}{\columnwidth}
  1180. % \begin{center}
  1181. % \begin{tabular}{ll}
  1182. % \toprule
  1183. % TERRAIN\footnote{This is a table footnote. This is a
  1184. % table footnote. This is a table footnote.} &
  1185. % (200\,m$\times$200\,m) Square\\
  1186. % Node Number & 289\\
  1187. % Node Placement & Uniform\\
  1188. % Application & Many-to-Many/Gossip CBR Streams\\
  1189. % Payload Size & 32 bytes\\
  1190. % Routing Layer & GF\\
  1191. % MAC Layer & CSMA/MMSN\\
  1192. % Radio Layer & RADIO-ACCNOISE\\
  1193. % Radio Bandwidth & 250Kbps\\
  1194. % Radio Range & 20m--45m\\
  1195. % \bottomrule
  1196. % \end{tabular}
  1197. % \end{center}
  1198. % \bigskip
  1199. % \footnotesize\emph{Source:} This is a table
  1200. % sourcenote. This is a table sourcenote. This is a table
  1201. % sourcenote.
  1202. %
  1203. % \emph{Note:} This is a table footnote.
  1204. % \end{minipage}
  1205. % \end{table}
  1206. % \end{verbatim}
  1207. %
  1208. % \DescribeEnv{sidebar}%
  1209. % \DescribeEnv{marginfigure}%
  1210. % \DescribeEnv{margintable}%
  1211. % SIGCHI extended abstracts use margin space extensively. This package
  1212. % provides three environments for this with optional captions:
  1213. % \begin{description}
  1214. % \item[sidebar:] textual information in the margin
  1215. % \item[marginfigure:] a figure in the margin
  1216. % \item[margintable:] a table in the margin
  1217. % \end{description}
  1218. %
  1219. %
  1220. % Tables and figures (including margin tables and margin figures) are
  1221. % by default centered. However, in some cases (for example, when you
  1222. % use several subimages per figure) you may need to override this.
  1223. % A good way to do so is to put the contents into a
  1224. % \cs{minipage} of the width \cs{columnwidth}.
  1225. %
  1226. %
  1227. %\subsection{Descriptions of images}
  1228. %\label{sec:descriptions}
  1229. %
  1230. % \DescribeMacro{\Description}%
  1231. % Some readers of ACM publications might be visually challenged.
  1232. % These readers might use a voice-over software to read aloud the
  1233. % papers. It is important to provide them a description of each
  1234. % image used in the paper.
  1235. %
  1236. % The command \cs{Description}\oarg{short description}\marg{long
  1237. % description} should be placed inside every \texttt{figure},
  1238. % \texttt{teaserfigure} or \texttt{marginfigure} environment to
  1239. % provide a description of the image(s) used in the figure. Unlike
  1240. % \cs{caption}, which is used alongside the image, \cs{Description} is
  1241. % intended to be used instead of the image, for example,
  1242. % \begin{verbatim}
  1243. % \begin{figure}
  1244. % \centering
  1245. % \includegraphics{voltage}
  1246. % \Description{A bell-like histogram centered at $0.5$~V with most
  1247. % measurements between $0.2$~V and $0.8$~V}
  1248. % \caption{Histogram of the measurements of voltage}
  1249. % \label{fig:voltage}
  1250. % \end{figure}
  1251. % \end{verbatim}
  1252. % At present the lack of descriptions generates a warning at
  1253. % compilation.
  1254. %
  1255. %\subsection{Theorems}
  1256. %\label{sec:ug_theorems}
  1257. %
  1258. % The ACM classes define two theorem styles and several pre-defined
  1259. % theorem environments:
  1260. % \begin{description}
  1261. % \item[acmplain:] this is the style used for
  1262. % |theorem|,
  1263. % |conjecture|,
  1264. % |proposition|,
  1265. % |lemma| and
  1266. % |corollary|, and
  1267. % \item[acmdefinition:] this is the style used for
  1268. % |example| and
  1269. % |definition|.
  1270. % \end{description}
  1271. %
  1272. %
  1273. % These environments are defined by default. In the unusual
  1274. % circumstance that a user does not wish to have these environments
  1275. % defined, the option |acmthm=false| in the preamble will suppress
  1276. % them.
  1277. %
  1278. %\subsection{Online-only and offline-only material}
  1279. %\label{sec:ug_screen}
  1280. %
  1281. % \DescribeEnv{printonly}%
  1282. % \DescribeEnv{screenonly}%
  1283. % Some supplementary material in ACM publications is put online but
  1284. % not in the printed version. The text inside the environment
  1285. % |screenonly| will be typeset only when the option |screen| (see
  1286. % Section~\ref{sec:invocation}) is set to |true|. Conversely, the
  1287. % text inside the environment |printonly| is typeset only when this
  1288. % option is set to |false|. For example,
  1289. % \begin{verbatim}
  1290. % \section{Supplementary materials}
  1291. %
  1292. % \begin{printonly}
  1293. % Supplementary materials are available in the online version of this paper.
  1294. % \end{printonly}
  1295. %
  1296. % \begin{screenonly}
  1297. % (The actual supplementary materials.)
  1298. % \end{screenonly}
  1299. % \end{verbatim}
  1300. %
  1301. % We use the |comment| package for typesetting this code, so
  1302. % |\begin| and |\end| should start on a line of their own with
  1303. % no leading or trailing spaces.
  1304. %
  1305. %\subsection{Note about anonymous mode}
  1306. %\label{sec:ug_anonymous}
  1307. %
  1308. % \DescribeEnv{anonsuppress}%
  1309. % When the option |anonymous| is selected, \TeX\ suppresses author
  1310. % information (including the number of authors) for a blind review.
  1311. % However, sometimes the information identifying the authors may be
  1312. % present in the body of the paper. For example,
  1313. % \begin{verbatim}
  1314. % \begin{anonsuppress}
  1315. % This is the continuation of the previous work by the author
  1316. % \cite{prev1, prev2}.
  1317. % \end{anonsuppress}
  1318. % \end{verbatim}
  1319. %
  1320. % As for the |printonly| and |screenonly| environments,
  1321. % |\begin{anonsuppress}| and |\end{anonsuppress}| should start on a
  1322. % line of their own with no leading or trailing spaces.
  1323. %
  1324. %\subsection{Acknowledgments}
  1325. %\label{sec:ug_acks}
  1326. %
  1327. % The traditional ``Acknowledgments'' section is conventionally used
  1328. % to thank persons and granting agencies for their help and support.
  1329. % However, there are several important considerations about this
  1330. % section.
  1331. %
  1332. % First, in anonymous mode this section must be omitted: it gives
  1333. % too much information to reviewers. Second, data about
  1334. % grants is extracted and stored separately by the postprocessing
  1335. % software. ACM classes provide facilities for both these tasks.
  1336. %
  1337. % \DescribeEnv{acks}%
  1338. % The environment |acks| starts an unnumbered section
  1339. % ``Acknowledgments'' unless the anonymous mode is chosen. Put all
  1340. % thanks inside this environment.
  1341. %
  1342. % As for the |printonly| and |screenonly| environments,
  1343. % |\begin{acks}| and |\end{acks}| should start on a
  1344. % line of their own with no leading or trailing spaces.
  1345. %
  1346. % \DescribeMacro{\grantsponsor}%
  1347. % \DescribeMacro{\grantnum}%
  1348. % All financial support \emph{must} be listed using the commands
  1349. % \cs{grantsponsor} and \cs{grantnum}. These commands tell the
  1350. % postprocessing software about the granting organization and
  1351. % grant. The format of these commands is the following:
  1352. % \begin{quote}
  1353. % \cs{grantsponsor}\marg{sponsorID}\marg{name}\marg{url}\\
  1354. % \cs{grantnum}\oarg{url}\marg{sponsorID}\marg{number}.
  1355. % \end{quote}
  1356. % Here \marg{sponsorID} is the unique ID used to match grants to
  1357. % sponsors, \marg{name} is the name of the sponsor, \marg{url} is its
  1358. % URL, and \marg{number} is the grant number. The \marg{sponsorID} of
  1359. % the \cs{grantnum} command must correspond to the \marg{sponsorID} of a
  1360. % \cs{grantsponsor} command. Some awards have their own web pages,
  1361. % which you can include using the optional argument of the \cs{grantnum}
  1362. % command.
  1363. %
  1364. % At present \marg{sponsorID} is chosen by the authors and can be an
  1365. % arbitrary key in the same way the label of a \cs{cite} is arbitrarily
  1366. % chosen. There might be a change to this policy if the ACM decides to
  1367. % create a global database of sponsoring organizations.
  1368. %
  1369. % Example:
  1370. % \begin{verbatim}
  1371. % \begin{acks}
  1372. % The authors would like to thank Dr. Yuhua Li for providing the
  1373. % matlab code of the \textit{BEPS} method.
  1374. %
  1375. % The authors would also like to thank the anonymous referees for
  1376. % their valuable comments and helpful suggestions. This work is
  1377. % supported by the \grantsponsor{GS501100001809}{National Natural
  1378. % Science Foundation of
  1379. % China}{https://doi.org/10.13039/501100001809} under Grant
  1380. % No.:~\grantnum{GS501100001809}{61273304}
  1381. % and~\grantnum[http://www.nnsf.cn/youngscientists]{GS501100001809}{Young
  1382. % Scientists' Support Program}.
  1383. % \end{acks}
  1384. % \end{verbatim}
  1385. %
  1386. %
  1387. %\subsection{Bibliography}
  1388. %\label{sec:ug_bibliography}
  1389. %
  1390. % The ACM uses the |natbib| package for formatting references and
  1391. % the Bib\TeX\ style file \path{ACM-Reference-Format.bst} for Bib\TeX\
  1392. % processing. You can disable loading of |natbib| using the
  1393. % option |natbib=false| in \cs{documentclass}. However, it is not
  1394. % recommended, as well as the use of Bib\TeX\ styles other than
  1395. % \path{ACM-Reference-Format.bst}, and may delay the processing of the
  1396. % manuscript.
  1397. %
  1398. %
  1399. % \DescribeMacro{\citestyle}%
  1400. % If you use |natbib|, you can select one of two predefined citation
  1401. % styles using the command \cs{citestyle}: the author-year format
  1402. % |acmauthoryear| or the numeric format |acmnumeric|. For example,
  1403. % \begin{verbatim}
  1404. % \citestyle{acmauthoryear}
  1405. % \end{verbatim}
  1406. % Note that numeric citations are the default mode for most formats.
  1407. %
  1408. % \DescribeMacro{\setcitestyle}%
  1409. % You can further customize |natbib| using
  1410. % the \cs{setcitestyle} command, for example,
  1411. % \begin{verbatim}
  1412. % \setcitestyle{numbers,sort&compress}
  1413. % \end{verbatim}
  1414. %
  1415. % One of the more common versions is
  1416. % \begin{verbatim}
  1417. % \setcitestyle{nosort}
  1418. % \end{verbatim}
  1419. % It is useful if you do not like the way |natbib| sorts citation
  1420. % lists.
  1421. %
  1422. % If you use |natbib|, then commands like \cs{citep} and
  1423. % \cs{citeauthor} are automatically supported. The command
  1424. % \cs{shortcite} is the same as \cs{cite} in numerical mode and cites
  1425. % the year in author-date mode.
  1426. %
  1427. % Note that before version~1.48 the command \cs{citeyear} put the year
  1428. % in parentheses. In version~1.48 and later it produces just the
  1429. % year; the command \cs{citeyearpar} can be used to emulate its old
  1430. % behavior.
  1431. %
  1432. % There are several customized \BibTeX\ entry types and fields in the ACM
  1433. % style file \path{ACM-Reference-Format.bst} that you may want to be
  1434. % aware of.
  1435. %
  1436. % The style supports the fields \path{doi} and \path{url}, for example,
  1437. % \begin{verbatim}
  1438. % doi = "10.1145/1188913.1188915",
  1439. % url = "http://ccrma.stanford.edu/~jos/bayes/bayes.pdf",
  1440. % \end{verbatim}
  1441. %
  1442. % The style supports the arXiv-recommended fields \path{eprint} and
  1443. % (optionally) \path{primaryclass}, for example,
  1444. % \begin{verbatim}
  1445. % eprint = "960935712",
  1446. % primaryclass = "cs",
  1447. % \end{verbatim}
  1448. % See the examples at \url{http://arxiv.org/hypertex/bibstyles/}.
  1449. %
  1450. % There are several special entry types. Types \path{online} and
  1451. % \path{game} are used for Web pages and games, for example,
  1452. % \begin{verbatim}
  1453. % @online{Thornburg01,
  1454. % author = "Harry Thornburg",
  1455. % year = "2001",
  1456. % title = "Introduction to Bayesian Statistics",
  1457. % url = "http://ccrma.stanford.edu/~jos/bayes/bayes.html",
  1458. % month = mar,
  1459. % lastaccessed = "March 2, 2005",
  1460. % }
  1461. % \end{verbatim}
  1462. % Entry types \path{artifactsoftware}, \path{artifactdataset}
  1463. % (with synonyms \path{software} and \path{dataset}) can be used to
  1464. % cite software artifacts and datasets, for example,
  1465. % \begin{verbatim}
  1466. % @ArtifactSoftware{R,
  1467. % title = {R: A Language and Environment for Statistical Computing},
  1468. % author = {{R Core Team}},
  1469. % organization = {R Foundation for Statistical Computing},
  1470. % address = {Vienna, Austria},
  1471. % year = {2019},
  1472. % url = {https://www.R-project.org/},
  1473. %}
  1474. % @ArtifactDataset{UMassCitations,
  1475. % author = {Sam Anzaroot and Andrew McCallum},
  1476. % title = {{UMass} Citation Field Extraction Dataset},
  1477. % year = 2013,
  1478. % url =
  1479. % {http://www.iesl.cs.umass.edu/data/data-umasscitationfield},
  1480. % lastaccessed = {May 27, 2019}
  1481. % }
  1482. % \end{verbatim}
  1483. %
  1484. %
  1485. % For these entry types you can use the \path{lastaccessed} field to add
  1486. % the access date for the URL.
  1487. %
  1488. %
  1489. %
  1490. % There are two ways to enter video or audio sources in the
  1491. % bibliograpy corresponding to two different possibilies. For
  1492. % standalone sources available online, you can use an \path{online}
  1493. % entry and set its \path{howpublished} field. For example,
  1494. % \begin{verbatim}
  1495. % @online{Obama08,
  1496. % author = "Barack Obama",
  1497. % year = "2008",
  1498. % title = "A more perfect union",
  1499. % howpublished = "Video",
  1500. % day = "5",
  1501. % url = "http://video.google.com/videoplay?docid=6528042696351994555",
  1502. % month = mar,
  1503. % lastaccessed = "March 21, 2008",
  1504. % }
  1505. % \end{verbatim}
  1506. %
  1507. % For sources available as attachments to conference proceedings
  1508. % and similar documents, you can use the usual \path{inproceedings}
  1509. % entry type and set its \path{howpublished} field:
  1510. % \begin{verbatim}
  1511. % @Inproceedings{Novak03,
  1512. % author = "Dave Novak",
  1513. % title = "Solder man",
  1514. % booktitle = "ACM SIGGRAPH 2003 Video Review on Animation theater Program",
  1515. % year = "2003",
  1516. % publisher = "ACM Press",
  1517. % address = "New York, NY",
  1518. % pages = "4",
  1519. % month = "March 21, 2008",
  1520. % doi = "10.9999/woot07-S422",
  1521. % howpublished = "Video",
  1522. % }
  1523. % \end{verbatim}
  1524. %
  1525. % Sometimes you need to cite a complete issue of a journal. The
  1526. % \path{periodical} entry type is intended for this:
  1527. % \begin{verbatim}
  1528. % @periodical{JCohen96,
  1529. % key = "Cohen",
  1530. % editor = "Jacques Cohen",
  1531. % title = "Special issue: Digital Libraries",
  1532. % journal = "Communications of the {ACM}",
  1533. % volume = "39",
  1534. % number = "11",
  1535. % month = nov,
  1536. % year = "1996",
  1537. % }
  1538. % \end{verbatim}
  1539. %
  1540. % If you do not know the year of publication, the style will add
  1541. % ``[n.\,d.]'' (for ``no date'') to the entry.
  1542. %
  1543. % If you do not know the author (this is often the case for online
  1544. % entries), use the |key| field to add a key for sorting and citations,
  1545. % for example,
  1546. % \begin{verbatim}
  1547. % @online{TUGInstmem,
  1548. % key = {TUG},
  1549. % year = 2017,
  1550. % title = "Institutional members of the {\TeX} Users Group",
  1551. % url = "http://wwtug.org/instmem.html",
  1552. % lastaccessed = "May 27, 2017",
  1553. % }
  1554. % \end{verbatim}
  1555. %
  1556. % A note about sorting. The current ACM bibliography styles always
  1557. % sort the entries according to authors names and publication year.
  1558. % There is a controversy about sorting names with ``von'' or ``van''
  1559. % part: should Ludwig van Beethoven be sorted under ``V'' or under
  1560. % ``B''? The American practice is to use ``van'' in sorting, i.e. to
  1561. % file van Beethoven under ``V''. However, some authorities recommend
  1562. % to sort Dutch persons according to their last names (see
  1563. % e.g. \url{https://www.ifla.org/files/assets/cataloguing/pubs/names-of-persons_1996.pdf}).
  1564. % While I do not want to take a part in this dispute, I would like to
  1565. % point to the old ``noopsort'' trick by Oren Patashnik. Add to the
  1566. % \texttt{.bib} file the line
  1567. % \begin{verbatim}
  1568. % @PREAMBLE{"\providecommand{\noopsort}[1]{}"}
  1569. % \end{verbatim}
  1570. % and then encode the author as
  1571. % \begin{verbatim}
  1572. % author = {Ludwig {\noopsort{Beethoven}}van Beethoven},
  1573. % \end{verbatim}
  1574. % This will make the author to be sorted as ``Beethoven'' rather than
  1575. % ``van Beethoven''.
  1576. %
  1577. %\subsection{Colors}
  1578. %\label{sec:ug_colors}
  1579. %
  1580. % While printed ACM publications are usually black and white, |screen|
  1581. % mode allows the use of colors. The ACM classes pre-define several
  1582. % colors according to~\cite{ACMIdentityStandards}: |ACMBlue|,
  1583. % |ACMYellow|, |ACMOrange|, |ACMRed|, |ACMLightBlue|, |ACMGreen|,
  1584. % |ACMPurple| and |ACMDarkBlue|. You can use them in color
  1585. % assignments.
  1586. %
  1587. % The ACM provides the following recommendation on color use.
  1588. %
  1589. % The most accessible approach would be to ensure that your article is
  1590. % still readable when printed in greyscale. The most notable reasons
  1591. % for this are:
  1592. % \begin{enumerate}
  1593. % \item The most common type of inherited Color Vision Deficiency
  1594. % (CVD) is red-green (in which similar-brightness colors that differ
  1595. % only in their amounts of red or green are often confused), and it
  1596. % affects up to 8\% of males and 0.5\% of females of Northern European
  1597. % descent.
  1598. % \item The most common type of acquired Color Vision Deficiency (CVD)
  1599. % is blue-yellow (including mild cases for many older adults).
  1600. % \item Most printing is in black and white.
  1601. % \item Situational impairments (e.g., bright sunlight shining on a
  1602. % mobile screen) tend to reduce the entire color gamut, reducing color
  1603. % discriminability.
  1604. % \end{enumerate}
  1605. %
  1606. % \textbf{Note:} It is \emph{not} safe to encode information using
  1607. % only variations in color (i.e., only differences in hue and/or
  1608. % saturation) as there is bound to be someone affected!
  1609. %
  1610. % To ensure that you are using the most accessible colors, the ACM
  1611. % recommends that you choose sets of colors to help ensure suitable
  1612. % variations in when printed in greyscale by using either of the following tools:
  1613. % \begin{enumerate}
  1614. % \item ColourBrewer: \url{http://colorbrewer2.org/}
  1615. % \item ACE: The Accessible Colour Evaluator:
  1616. % \url{http://daprlab.com/ace/} for designing WCAG 2.0 compliant
  1617. % palettes.
  1618. % \end{enumerate}
  1619. %
  1620. %
  1621. %\subsection{Other notable packages and typographic remarks}
  1622. %\label{sec:ug_other}
  1623. %
  1624. % Several other packages are recommended for specialized tasks.
  1625. %
  1626. % The package |subcaption|~\cite{Sommerfeldt13:Subcaption} is
  1627. % recommended for complex figures with several subplots or subfigures
  1628. % that require separate subcaptioning. The packages
  1629. % |nomencl|~\cite{Nomencl} and
  1630. % |glossaries|~\cite{Talbot16:Glossaries} can be used for the
  1631. % automatic creation of the lists of symbols and concepts used.
  1632. %
  1633. %
  1634. % By default |acmart| prevents all widows and orphans (i.e., lonely
  1635. % lines at the beginning or end of the page) and hyphenation at
  1636. % the end of the page. This is done by the rather strict settings
  1637. % \begin{verbatim}
  1638. % \widowpenalty=10000
  1639. % \clubpenalty=10000
  1640. % \brokenpenalty=10000
  1641. % \end{verbatim}
  1642. % However, this may lead to frustrating results when the authors must
  1643. % obey a page limit. Setting these penalties to smaller values may
  1644. % help if you absolutely need to.
  1645. %
  1646. % Another problem might be the too strict line breaking rules. Again,
  1647. % a strategically placed \cs{sloppy} command or putting the
  1648. % problematic paragraph inside \texttt{sloppypar} environment might
  1649. % help---but beware, the results might be, well, sloppy.
  1650. %
  1651. % Note that the uppercasing in section titles is done using
  1652. % the |textcase| package~\cite{Carlisle04:Textcase}, so the command
  1653. % \cs{NoCaseChange} inside the title may help to prevent extraneous
  1654. % uppercasing.
  1655. %
  1656. %
  1657. %
  1658. %\subsection{Disabled or forbidden commands}
  1659. %\label{sec:ug_disabled}
  1660. %
  1661. % The goal of |acmart| package is to provide a uniform look and feel
  1662. % for ACM publications. Accordingly, a number of commands is
  1663. % forbidden or disabled in |acmart|.
  1664. %
  1665. % You may \emph{not} put several authors or several e-mails into a
  1666. % \cs{author} or \cs{email} command. This may lead to errors or
  1667. % warning.
  1668. %
  1669. % You cannot change \cs{baselinestretch} in your document: this
  1670. % produces an error.
  1671. %
  1672. % You should not abuse the command \cs{vspace}: this command may
  1673. % disturb the typesetting of ACM papers.
  1674. %
  1675. %\subsection{A note for wizards: \texttt{acmart-preload-hook.tex}}
  1676. %\label{sec:ug_preload}
  1677. %
  1678. % Sometimes you need to change the behavior of |acmart|. The
  1679. % usual way to do this is to redefine commands in the preamble.
  1680. % However, these definitions are executed \emph{after} |acmart| is
  1681. % loaded and certain decisions are made. This presents a number of
  1682. % problems.
  1683. %
  1684. % For example, one may want to use the |titletoc| package with |acmart|.
  1685. % This package should be loaded before |hyperref|. However, since
  1686. % |acmart| loads |hyperref| itself, the line |\usepackage{titletoc}|
  1687. % in the preamble will lead to grief (see
  1688. % \url{http://tex.stackexchange.com/questions/357265/using-titletoc-with-acm-acmart-style}).
  1689. %
  1690. % Another example is passing options to a package. Suppose you want to
  1691. % use the |dvipsnames| option of the |xcolor| package. Normally you cannot do
  1692. % this because |acmart| loads this package itself without options.
  1693. %
  1694. % The file |acmart-preload-hook.tex| can be used to solve these
  1695. % problems. If this file exists, it will be processed before any other
  1696. % package. You can use this file to load packages or pass options to
  1697. % them. For example, if you put in this file
  1698. % \begin{verbatim}
  1699. % \let\LoadClassOrig\LoadClass
  1700. % \renewcommand\LoadClass[2][]{\LoadClassOrig[#1]{#2}%
  1701. % \usepackage{titletoc}}
  1702. % \end{verbatim}
  1703. % then |titletoc| will be loaded before |hyperref|. If you put in
  1704. % this file
  1705. % \begin{verbatim}
  1706. % \PassOptionsToPackage{dvipsnames}{xcolor}
  1707. % \end{verbatim}
  1708. % you will pass |dvipsnames| to |xcolor|.
  1709. %
  1710. % \textbf{Important note.} This hook makes it too easy to create a
  1711. % manuscript that is not acceptable by the ACM. It is even easier to
  1712. % create a file that cannot be compiled. So please do not use it
  1713. % \emph{unless you know what you are doing.} And if you use it,
  1714. % \emph{do not ask for support.} If you decide to use this hook, you
  1715. % are on your own.
  1716. %
  1717. %
  1718. %\subsection{Currently supported publications}
  1719. %\label{sec:pubs}
  1720. %
  1721. %\bgroup\centering
  1722. % \begin{longtable}{>{\ttfamily}p{0.2\textwidth}@{}p{0.8\textwidth}}
  1723. % \caption{ACM publications and arguments of the \cs{acmJournal}
  1724. % command}
  1725. % \label{tab:pubs}\\
  1726. % \toprule
  1727. % \normalfont Abbreviation & Publication \\
  1728. % \midrule
  1729. % \endfirsthead
  1730. % \caption[]{ACM publications and arguments of the \cs{acmJournal}
  1731. % command (continued)}\\
  1732. % \toprule
  1733. % \normalfont Abbreviation & Publication \\
  1734. % \midrule
  1735. % \endhead
  1736. % \bottomrule
  1737. % \endfoot
  1738. % CIE & ACM Computers in Entertainment \\
  1739. % CSUR & ACM Computing Surveys\\
  1740. % DGOV & Digital Government: Research and Practice \\
  1741. % DTRAP & Digital Threats: Research and Practice\\
  1742. % HEALTH & ACM Transactions on Computing for Healthcare\\
  1743. % IMWUT & PACM on Interactive, Mobile, Wearable and Ubiquitous
  1744. % Technologies\\
  1745. % JACM & Journal of the ACM \\
  1746. % JDIQ & ACM Journal of Data and Information Quality \\
  1747. % JEA & ACM Journal of Experimental Algorithmics \\
  1748. % JERIC & ACM Journal of Educational Resources in Computing\\
  1749. % JETC & ACM Journal on Emerging Technologies in Computing Systems \\
  1750. % JOCCH & ACM Journal on Computing and Cultural Heritage \\
  1751. % PACMCGIT & Proceedings of the ACM on Computer Graphics and
  1752. % Interactive Techniques\\
  1753. % PACMHCI & PACM on Human-Computer Interaction\\
  1754. % PACMPL & PACM on Programming Languages \\
  1755. % POMACS & PACM on Measurement and Analysis of Computing Systems \\
  1756. % TAAS & ACM Transactions on Autonomous and Adaptive Systems\\
  1757. % TACCESS & ACM Transactions on Accessible Computing\\
  1758. % TACO & ACM Transactions on Architecture and Code Optimization \\
  1759. % TALG & ACM Transactions on Algorithms \\
  1760. % TALLIP & ACM Transactions on Asian and Low-Resource Language
  1761. % Information Processing\\
  1762. % TAP & ACM Transactions on Applied Perception \\
  1763. % TCPS & ACM Transactions on Cyber-Physical Systems\\
  1764. % TDS & ACM Transactions on Data Science\\
  1765. % TEAC & ACM Transactions on Economics and Computation\\
  1766. % TECS & ACM Transactions on Embedded Computing Systems \\
  1767. % TELO & ACM Transactions on Evolutionary Learning \\
  1768. % THRI & ACM Transactions on Human-Robot Interaction\\
  1769. % TIIS & ACM Transactions on Interactive Intelligent Systems\\
  1770. % TIOT & ACM Transactions on Internet of Things \\
  1771. % TISSEC & ACM Transactions on Information and System Security\\
  1772. % TIST & ACM Transactions on Intelligent Systems and Technology \\
  1773. % TKDD & ACM Transactions on Knowledge Discovery from Data\\
  1774. % TMIS & ACM Transactions on Management Information Systems\\
  1775. % TOCE & ACM Transactions on Computing Education\\
  1776. % TOCHI & ACM Transactions on Computer-Human Interaction\\
  1777. % TOCL & ACM Transactions on Computational Logic\\
  1778. % TOCS & ACM Transactions on Computer Systems \\
  1779. % TOCT & ACM Transactions on Computation Theory \\
  1780. % TODAES & ACM Transactions on Design Automation of Electronic Systems\\
  1781. % TODS & ACM Transactions on Database Systems\\
  1782. % TOG & ACM Transactions on Graphics\\
  1783. % TOIS & ACM Transactions on Information Systems\\
  1784. % TOIT & ACM Transactions on Internet Technology\\
  1785. % TOMACS & ACM Transactions on Modeling and Computer Simulation \\
  1786. % TOMM & ACM Transactions on Multimedia Computing, Communications
  1787. % and Applications \\
  1788. % TOMPECS & ACM Transactions on Modeling and Performance Evaluation
  1789. % of Computing Systems\\
  1790. % TOMS & ACM Transactions on Mathematical Software\\
  1791. % TOPC & ACM Transactions on Parallel Computing\\
  1792. % TOPLAS & ACM Transactions on Programming Languages and Systems\\
  1793. % TOPS & ACM Transactions on Privacy and Security\\
  1794. % TOS & ACM Transactions on Storage\\
  1795. % TOSEM & ACM Transactions on Software Engineering and Methodology\\
  1796. % TOSN & ACM Transactions on Sensor Networks\\
  1797. % TQC & ACM Transactions on Quantum Computing\\
  1798. % TRETS & ACM Transactions on Reconfigurable Technology and Systems\\
  1799. % TSAS & ACM Transactions on Spatial Algorithms and Systems\\
  1800. % TSC & ACM Transactions on Social Computing\\
  1801. % TSLP & ACM Transactions on Speech and Language Processing \\
  1802. % TWEB & ACM Transactions on the Web\\
  1803. % \end{longtable}
  1804. %\egroup
  1805. %
  1806. % Besides the publications listed in Table~\ref{tab:pubs}, there is a
  1807. % special ``publication'' type FACMP, a forthcoming ACM publication,
  1808. % reserved for new journals which are not assigned an ISSN yet.
  1809. %
  1810. % \StopEventually{
  1811. % \clearpage
  1812. % \bibliography{acmart}
  1813. % \bibliographystyle{unsrt}}
  1814. %
  1815. % \clearpage
  1816. %
  1817. %
  1818. %\section{Implementation}
  1819. %\label{sec:impl}
  1820. %
  1821. %\subsection{Identification}
  1822. %\label{sec:ident}
  1823. %
  1824. % We start with a declaration of who we are. Most |.dtx| files put
  1825. % driver code in a separate~|.drv| driver file. We roll this code into the
  1826. % main file and use the pseudo-guard |<gobble>| for it.
  1827. % \begin{macrocode}
  1828. %<class>\NeedsTeXFormat{LaTeX2e}
  1829. %<*gobble>
  1830. \ProvidesFile{acmart.dtx}
  1831. %</gobble>
  1832. %<class>\ProvidesClass{acmart}
  1833. [2019/10/19 v1.65 Typesetting articles for the Association for Computing Machinery]
  1834. % \end{macrocode}
  1835. %
  1836. % \changes{v1.00}{2016/04/14}{First released version}
  1837. % \changes{v1.01}{2016/04/18}{Defined ACM colors}
  1838. % \changes{v1.01}{2016/04/18}{Changed hyperref colors in screen mode
  1839. % (closes \url{https://github.com/borisveytsman/acmart/issues/1})}
  1840. % \changes{v1.01}{2016/04/18}{Set headheight to 1pc for all formats
  1841. % (closes \url{https://github.com/borisveytsman/acmart/issues/5})}
  1842. % \changes{v1.02}{2016/04/21}{Documentation changes
  1843. % (closes \url{https://github.com/borisveytsman/acmart/issues/13})}
  1844. % \changes{v1.02}{2016/04/21}{Added TOPS and TSC
  1845. % (closes \url{https://github.com/borisveytsman/acmart/issues/12})}
  1846. % \changes{v1.03}{2016/04/22}{Added authorversion option
  1847. % (closes \url{https://github.com/borisveytsman/acmart/issues/9})}
  1848. % \changes{v1.03}{2016/04/22}{Added anonsuppress environment}
  1849. % \changes{v1.04}{2016/04/26}{Updated bibliography for siggraph}
  1850. % \changes{v1.05}{2016/04/27}{Patched \cs{setcitestyle} command;
  1851. % closes \url{https://github.com/borisveytsman/acmart/issues/19}}
  1852. % \changes{v1.05}{2016/04/27}{Added processing doi numbers for
  1853. % acmsiggraph and doi numbers for sigproc.bib}
  1854. % \changes{v1.08}{2016/05/13}{SIGPLAN reformatting by Matthew Fluet}
  1855. % \changes{v1.08}{2016/05/13}{Typos corrected (Tobias Pape)}
  1856. % \changes{v1.09}{2016/05/18}{Revert SIGPLAN caption rules}
  1857. % \changes{v1.11}{2016/05/27}{Customization of ACM theorem styles and
  1858. % proof environment by Matthew Fluet}
  1859. % \changes{v1.12}{2016/05/30}{Documentation updates}
  1860. % \changes{v1.14}{2016/06/09}{\cs{citestyle} updates (Matthew Fluet)}
  1861. % \changes{v1.16}{2016/07/07}{Formatting header/footer (Matthew
  1862. % Fluet)}
  1863. % \changes{v1.18}{2016/07/10}{Natbib is now the default for all
  1864. % formats}
  1865. % \changes{v1.19}{2016/07/28}{Include 'Abstract', 'Acknowledgements',
  1866. % and 'References' in PDF bookmarks (Matthew Fluet)}
  1867. % \changes{v1.20}{2016/08/06}{Bug fixes for bst}
  1868. % \changes{v1.22}{2016/09/25}{More bibliography changes for Aptara}
  1869. % \changes{v1.23}{2016/11/04}{Add PACMPL journal option}
  1870. % \changes{v1.26}{2016/12/24}{Corrected \cs{shortcite} bug}
  1871. % \changes{v1.26}{2016/12/24}{Documentation typos fixed (thanks to
  1872. % Stephen Spencer)}
  1873. % \changes{v1.30}{2017/02/04}{Bibtex style now recognizes https:// in
  1874. % doi}
  1875. % \changes{v1.31}{2017/03/04}{Documentation changes}
  1876. % \changes{v1.32}{2017/03/07}{Format siggraph is now obsolete}
  1877. % \changes{v1.32}{2017/03/07}{Added POMACS journal option}
  1878. % \changes{v1.33}{2017/03/12}{BibTeX crossref bug corrected}
  1879. % \changes{v1.33}{2017/03/18}{BibTeX comma before articleno bug
  1880. % corrected}
  1881. % \changes{v1.33}{2017/03/18}{BibTeX numpages bug corrected}
  1882. % \changes{v1.33}{2017/03/28}{Added acmart-preload-hook}
  1883. % \changes{v1.33}{2017/03/33}{Documentation updates}
  1884. % \changes{v1.35}{2017/04/23}{BibTeX bug fixed: et al.}
  1885. % \changes{v1.36}{2017/05/12}{Added the possibility to adjust number of
  1886. % author boxes per row in conference formats}
  1887. % \changes{v1.37}{2017/05/13}{Set \cs{normalparindent}; Reduce list
  1888. % indentation (Matthew Fluet)}%
  1889. % \changes{v1.38}{2017/05/13}{Increase default font size for SIGPLAN}
  1890. % \changes{v1.40}{2017/05/27}{Bibliography changes}
  1891. % \changes{v1.40}{2017/06/15}{Added package cleveref}
  1892. % \changes{v1.40}{2017/06/16}{Added new copyright version:
  1893. % licensedcagov}
  1894. % \changes{v1.41}{2017/06/25}{Added new badges}
  1895. % \changes{v1.42}{2017/07/02}{Deleted ACM badges}
  1896. % \changes{v1.44}{2017/07/30}{Added package refcount}
  1897. % \changes{v1.44}{2017/07/30}{Deleted package cleveref}
  1898. % \changes{v1.44}{2017/07/30}{Put theorem defs in a separate style}
  1899. % \changes{v1.46}{2017/08/17}{Bst file bug fixes: label width is
  1900. % calculated correctly}
  1901. % \changes{v1.46}{2017/08/25}{Added etoolbox}
  1902. % \changes{v1.46}{2017/08/29}{Restore theorem defs to class file}
  1903. % \changes{v1.47}{2017/08/31}{New journal: THRI}
  1904. % \changes{v1.48}{2017/09/09}{Typos fixed (Jamie Davis)}
  1905. % \changes{v1.48}{2017/09/16}{Code prettying (Michael D.~Adams)}
  1906. % \changes{v1.48}{2017/09/23}{Misc entries in the bibliography no
  1907. % longer produce a separate date}
  1908. % \changes{v1.48}{2017/10/01}{Initial support for Biblatex (Daniel Thomas)}
  1909. % \changes{1.48}{2017/10/14}{Bib code cleanup (Zack Weinberg)}
  1910. % \changes{1.48}{2017/12/03}{Documentation update (siggraph)}
  1911. % \changes{1.49}{2018/01/24}{New journal: DTRAP}
  1912. % \changes{1.53}{2018/04/14}{New journals: PACMCGIT, TIOT, TDSCI}
  1913. % \changes{1.53}{2018/04/14}{Rearranged docs}
  1914. % \changes{1.54}{2018/06/17}{Moved footnote stuff before hyperref call
  1915. % (Ross Moore)}
  1916. % \changes{1.56}{2018/11/11}{Documented \cs{Description}}
  1917. % \changes{1.57}{2018/12/16}{Booktabs package is now the default}
  1918. % \changes{1.58}{2019/02/09}{Changes in samples (Enrico Gregorio)}
  1919. % \changes{1.58}{2019/03/29}{New journal: HEALTH. TDS is renamed to
  1920. % TDSCI}
  1921. % \changes{1.60}{2019/04/22}{New option: urlbreakonhyphens}
  1922. % \changes{1.62}{2019/07/31}{New journal: TELO}
  1923. % \changes{1.63}{2019/08/04}{New journal: TQUANT}
  1924. % \changes{1.63}{2019/08/04}{New journal: FACMP}
  1925. % \changes{1.63a}{2019/08/05}{Move: TQUANT to TQC}
  1926. % \changes{1.64}{2019/08/17}{Putting abstract after \cs{maketitle} now
  1927. % causes an error}
  1928. % \changes{1.65}{2019/10/19}{New journal: DGOV}
  1929. %
  1930. % And the driver code:
  1931. % \begin{macrocode}
  1932. %<*gobble>
  1933. \documentclass{ltxdoc}
  1934. \usepackage{array,booktabs,amsmath,graphicx,fancyvrb,tabularx, longtable}
  1935. \usepackage[tt=false, type1=true]{libertine}
  1936. \usepackage[varqu]{zi4}
  1937. \usepackage[libertine]{newtxmath}
  1938. \usepackage[tableposition=top]{caption}
  1939. \usepackage{hypdoc}
  1940. \PageIndex
  1941. \CodelineIndex
  1942. \RecordChanges
  1943. \EnableCrossrefs
  1944. \begin{document}
  1945. \DocInput{acmart.dtx}
  1946. \end{document}
  1947. %</gobble>
  1948. %<*class>
  1949. \def\@classname{acmart}
  1950. % \end{macrocode}
  1951. %
  1952. %
  1953. %
  1954. %\subsection{Preload hook}
  1955. %\label{sec:preload}
  1956. %
  1957. % We preload |acmart-preload-hook|:
  1958. % \begin{macrocode}
  1959. \InputIfFileExists{acmart-preload-hook.tex}{%
  1960. \ClassWarning{\@classname}{%
  1961. I am loading acmart-preload-hook.tex. You are fully responsible
  1962. for any problems from now on.}}{}
  1963. % \end{macrocode}
  1964. %
  1965. % \subsection{Options}
  1966. % \label{sec:options}
  1967. %
  1968. % We need |xkeyval| since some of our options may have values:
  1969. % \begin{macrocode}
  1970. \RequirePackage{xkeyval}
  1971. % \end{macrocode}
  1972. %
  1973. % We use |xstring| to check whether user input is valid
  1974. % \begin{macrocode}
  1975. \RequirePackage{xstring}
  1976. % \end{macrocode}
  1977. %
  1978. %
  1979. %
  1980. % \begin{macro}{format}
  1981. % The possible formats
  1982. % \begin{macrocode}
  1983. \define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
  1984. manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
  1985. sigplan, sigchi, sigchi-a}[manuscript]{}{%
  1986. \ClassError{\@classname}{The option format must be manuscript,
  1987. acmsmall, acmlarge, acmtog, sigconf, siggraph,
  1988. sigplan, sigchi or sigchi-a}}
  1989. \def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
  1990. \@DeclareACMFormat{manuscript}
  1991. \@DeclareACMFormat{acmsmall}
  1992. \@DeclareACMFormat{acmlarge}
  1993. \@DeclareACMFormat{acmtog}
  1994. \@DeclareACMFormat{sigconf}
  1995. \@DeclareACMFormat{siggraph}
  1996. \@DeclareACMFormat{sigplan}
  1997. \@DeclareACMFormat{sigchi}
  1998. \@DeclareACMFormat{sigchi-a}
  1999. \ExecuteOptionsX{format}
  2000. % \end{macrocode}
  2001. %
  2002. % \end{macro}
  2003. %
  2004. % \begin{macro}{\if@ACM@screen}
  2005. % Whether we use screen mode
  2006. % \begin{macrocode}
  2007. \define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
  2008. \if@ACM@screen
  2009. \PackageInfo{\@classname}{Using screen mode}%
  2010. \else
  2011. \PackageInfo{\@classname}{Not using screen mode}%
  2012. \fi}{\PackageError{\@classname}{The option screen can be either true or
  2013. false}}
  2014. \ExecuteOptionsX{screen=false}
  2015. % \end{macrocode}
  2016. %
  2017. % \end{macro}
  2018. %
  2019. % \begin{macro}{\if@ACM@urlbreakonhyphens}
  2020. % \changes{1.60}{2019/04/22}{introduced macro}
  2021. % \begin{macrocode}
  2022. \define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{%
  2023. \if@ACM@urlbreakonhyphens
  2024. \PackageInfo{\@classname}{Using breaking urls on hyphens}%
  2025. \else
  2026. \PackageInfo{\@classname}{Not breaking urls on hyphens}%
  2027. \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or
  2028. false}}
  2029. \ExecuteOptionsX{urlbreakonhyphens=true}
  2030. % \end{macrocode}
  2031. % \end{macro}
  2032. %
  2033. % \begin{macro}{\if@ACM@acmthm}
  2034. % \changes{v1.44}{2017/07/30}{Added macro}
  2035. % \changes{v1.46}{2017/08/29}{Modified description}
  2036. % Whether we define theorem-like environments.
  2037. % \begin{macrocode}
  2038. \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
  2039. \if@ACM@acmthm
  2040. \PackageInfo{\@classname}{Requiring acmthm}%
  2041. \else
  2042. \PackageInfo{\@classname}{Suppressing acmthm}%
  2043. \fi}{\PackageError{\@classname}{The option acmthm can be either true or
  2044. false}}
  2045. \ExecuteOptionsX{acmthm=true}
  2046. % \end{macrocode}
  2047. %
  2048. % \end{macro}
  2049. %
  2050. %
  2051. % \begin{macro}{\if@ACM@review}
  2052. % \changes{v1.48}{2017/09/09}{Review mode now switches on folios}
  2053. % Whether we use review mode
  2054. % \begin{macrocode}
  2055. \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
  2056. \if@ACM@review
  2057. \PackageInfo{\@classname}{Using review mode}%
  2058. \AtBeginDocument{\@ACM@printfoliostrue}%
  2059. \else
  2060. \PackageInfo{\@classname}{Not using review mode}%
  2061. \fi}{\PackageError{\@classname}{The option review can be either true or
  2062. false}}
  2063. \ExecuteOptionsX{review=false}
  2064. % \end{macrocode}
  2065. %
  2066. % \end{macro}
  2067. %
  2068. % \begin{macro}{\if@ACM@authorversion}
  2069. % \changes{v1.03}{2016/04/22}{Added macro}
  2070. % Whether we use author's-version mode
  2071. % \begin{macrocode}
  2072. \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
  2073. \if@ACM@authorversion
  2074. \PackageInfo{\@classname}{Using authorversion mode}%
  2075. \else
  2076. \PackageInfo{\@classname}{Not using authorversion mode}%
  2077. \fi}{\PackageError{\@classname}{The option authorversion can be either true or
  2078. false}}
  2079. \ExecuteOptionsX{authorversion=false}
  2080. % \end{macrocode}
  2081. %
  2082. % \end{macro}
  2083. %
  2084. % \begin{macro}{\if@ACM@nonacm}
  2085. % \changes{v1.54}{2018/05/08}{Added macro}
  2086. % Special option for non-ACM publications
  2087. % using the ACM typesetting options.
  2088. % \begin{macrocode}
  2089. \define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{%
  2090. \if@ACM@nonacm
  2091. \PackageInfo{\@classname}{Using nonacm mode}%
  2092. \AtBeginDocument{\@ACM@printacmreffalse}%
  2093. % in 'nonacm' mode we disable the "ACM Reference Format"
  2094. % printing by default, but this can be re-enabled by the
  2095. % user using \settopmatter{printacmref=true}
  2096. \else
  2097. \PackageInfo{\@classname}{Not using nonacm mode}%
  2098. \fi}{\PackageError{\@classname}{The option nonacm can be either true or
  2099. false}}
  2100. \ExecuteOptionsX{nonacm=false}
  2101. % \end{macrocode}
  2102. %
  2103. % \end{macro}
  2104. %
  2105. % \begin{macro}{\if@ACM@balance}
  2106. % \changes{v1.57}{2018/12/16}{Added macro}
  2107. % Whether to balance the last page
  2108. % \begin{macrocode}
  2109. \define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{%
  2110. \PackageError{\@classname}{The option balance can be either true or
  2111. false}}
  2112. \ExecuteOptionsX{balance}
  2113. % \end{macrocode}
  2114. %
  2115. % \end{macro}
  2116. %
  2117. %
  2118. % \begin{macro}{\if@ACM@natbib@override}
  2119. % \changes{v1.12}{2016/05/30}{Added macro}
  2120. % \changes{v1.33}{2017/03/28}{Deleted macro}
  2121. % This macro is no longer used.
  2122. % \end{macro}
  2123. %
  2124. % \begin{macro}{\if@ACM@natbib}
  2125. % Whether we use |natbib| mode
  2126. % \begin{macrocode}
  2127. \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
  2128. \if@ACM@natbib
  2129. \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
  2130. \else
  2131. \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
  2132. \fi}{\PackageError{\@classname}{The option natbib can be either true or
  2133. false}}
  2134. \ExecuteOptionsX{natbib=true}
  2135. % \end{macrocode}
  2136. %
  2137. % \end{macro}
  2138. %
  2139. %
  2140. % \begin{macro}{\if@ACM@anonymous}
  2141. % Whether we use anonymous mode
  2142. % \begin{macrocode}
  2143. \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
  2144. \if@ACM@anonymous
  2145. \PackageInfo{\@classname}{Using anonymous mode}%
  2146. \else
  2147. \PackageInfo{\@classname}{Not using anonymous mode}%
  2148. \fi}{\PackageError{\@classname}{The option anonymous can be either true or
  2149. false}}
  2150. \ExecuteOptionsX{anonymous=false}
  2151. % \end{macrocode}
  2152. %
  2153. % \end{macro}
  2154. %
  2155. %
  2156. % \begin{macro}{\if@ACM@timestamp}
  2157. % \changes{v1.33}{2017/03/10}{Added macro (Michael D.~Adams)}
  2158. % Whether we use timestamp mode
  2159. % \begin{macrocode}
  2160. \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
  2161. \if@ACM@timestamp
  2162. \PackageInfo{\@classname}{Using timestamp mode}%
  2163. \else
  2164. \PackageInfo{\@classname}{Not using timestamp mode}%
  2165. \fi}{\PackageError{\@classname}{The option timestamp can be either true or
  2166. false}}
  2167. \ExecuteOptionsX{timestamp=false}
  2168. % \end{macrocode}
  2169. %
  2170. % \end{macro}
  2171. %
  2172. %
  2173. % \begin{macro}{\if@ACM@authordraft}
  2174. % \changes{v1.33}{2017/03/28}{Added macro}
  2175. % \changes{v1.36}{2017/05/13}{Corrected typo, thanks to bargteil}
  2176. % Whether we use author-draft mode
  2177. % \begin{macrocode}
  2178. \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
  2179. \if@ACM@authordraft
  2180. \PackageInfo{\@classname}{Using authordraft mode}%
  2181. \@ACM@timestamptrue
  2182. \@ACM@reviewtrue
  2183. \else
  2184. \PackageInfo{\@classname}{Not using authordraft mode}%
  2185. \fi}{\PackageError{\@classname}{The option authordraft can be either true or
  2186. false}}
  2187. \ExecuteOptionsX{authordraft=false}
  2188. % \end{macrocode}
  2189. %
  2190. % \end{macro}
  2191. %
  2192. %
  2193. % \begin{macro}{\ACM@fontsize}
  2194. % The font size to pass to the base class
  2195. % \begin{macrocode}
  2196. \def\ACM@fontsize{}
  2197. \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
  2198. \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
  2199. \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
  2200. \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
  2201. % \end{macrocode}
  2202. %
  2203. % \end{macro}
  2204. %
  2205. %
  2206. % \changes{v1.01}{2016/04/18}{Explicitly put draft option
  2207. % (closes \url{https://github.com/borisveytsman/acmart/issues/4})}
  2208. %
  2209. % \begin{macrocode}
  2210. \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
  2211. \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
  2212. \ProcessOptionsX
  2213. \ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
  2214. % \end{macrocode}
  2215. %
  2216. %
  2217. %
  2218. %\subsection{Setting switches}
  2219. %\label{sec:switches}
  2220. %
  2221. % \begin{macro}{\if@ACM@manuscript}
  2222. % Whether we use manuscript mode
  2223. % \begin{macrocode}
  2224. \newif\if@ACM@manuscript
  2225. % \end{macrocode}
  2226. %
  2227. % \end{macro}
  2228. %
  2229. % \begin{macro}{\if@ACM@journal}
  2230. % There are two kinds of publications: journals and books
  2231. % \begin{macrocode}
  2232. \newif\if@ACM@journal
  2233. % \end{macrocode}
  2234. %
  2235. % \end{macro}
  2236. %
  2237. %
  2238. % \begin{macro}{\if@ACM@journal@bibstrip}
  2239. % \changes{v1.59}{2019/04/20}{Introduced macro}
  2240. % Sometimes ACM wants a journal-like publication to have conference
  2241. % information in the bibstrip and vice versa, so we have an additional
  2242. % switch.
  2243. % \begin{macrocode}
  2244. \newif\if@ACM@journal@bibstrip
  2245. % \end{macrocode}
  2246. %
  2247. % \end{macro}
  2248. %
  2249. % \begin{macro}{\if@ACM@sigchiamode}
  2250. % The formatting of SIGCHI extended abstracts is quite unusual. We have a
  2251. % special switch for them.
  2252. % \begin{macrocode}
  2253. \newif\if@ACM@sigchiamode
  2254. % \end{macrocode}
  2255. %
  2256. % \end{macro}
  2257. %
  2258. %
  2259. % Setting up switches
  2260. % \begin{macrocode}
  2261. \ifnum\ACM@format@nr=5\relax % siggraph
  2262. \ClassWarning{\@classname}{The format siggraph is now obsolete.
  2263. I am switching to sigconf.}
  2264. \setkeys{acmart.cls}{format=sigconf}
  2265. \fi
  2266. \ifnum\ACM@format@nr=0\relax
  2267. \@ACM@manuscripttrue
  2268. \else
  2269. \@ACM@manuscriptfalse
  2270. \fi
  2271. \@ACM@sigchiamodefalse
  2272. \ifcase\ACM@format@nr
  2273. \relax % manuscript
  2274. \@ACM@journaltrue
  2275. \or % acmsmall
  2276. \@ACM@journaltrue
  2277. \or % acmlarge
  2278. \@ACM@journaltrue
  2279. \or % acmtog
  2280. \@ACM@journaltrue
  2281. \or % sigconf
  2282. \@ACM@journalfalse
  2283. \or % siggraph
  2284. \@ACM@journalfalse
  2285. \or % sigplan
  2286. \@ACM@journalfalse
  2287. \or % sigchi
  2288. \@ACM@journalfalse
  2289. \or % sigchi-a
  2290. \@ACM@journalfalse
  2291. \@ACM@sigchiamodetrue
  2292. \fi
  2293. \if@ACM@journal
  2294. \@ACM@journal@bibstriptrue
  2295. \else
  2296. \@ACM@journal@bibstripfalse
  2297. \fi
  2298. % \end{macrocode}
  2299. %
  2300. %
  2301. %
  2302. %\subsection{Loading the base class and package}
  2303. %\label{sec:loading}
  2304. %
  2305. % \changes{v1.13}{2016/06/06}{Increased font size for ACM Large}
  2306. % \changes{v1.38}{2017/05/13}{Increase default font size for SIGPLAN}
  2307. %
  2308. %
  2309. % At this point we either have \cs{ACM@fontsize} or use defaults
  2310. % \begin{macrocode}
  2311. \ifx\ACM@fontsize\@empty
  2312. \ifcase\ACM@format@nr
  2313. \relax % manuscript
  2314. \def\ACM@fontsize{9pt}%
  2315. \or % acmsmall
  2316. \def\ACM@fontsize{10pt}%
  2317. \or % acmlarge
  2318. \def\ACM@fontsize{10pt}%
  2319. \or % acmtog
  2320. \def\ACM@fontsize{9pt}%
  2321. \or % sigconf
  2322. \def\ACM@fontsize{9pt}%
  2323. \or % siggraph
  2324. \def\ACM@fontsize{9pt}%
  2325. \or % sigplan
  2326. \def\ACM@fontsize{10pt}%
  2327. \or % sigchi
  2328. \def\ACM@fontsize{10pt}%
  2329. \or % sigchi-a
  2330. \def\ACM@fontsize{10pt}%
  2331. \fi
  2332. \fi
  2333. \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
  2334. \LoadClass[\ACM@fontsize, reqno]{amsart}
  2335. \RequirePackage{microtype}
  2336. % \end{macrocode}
  2337. %
  2338. %
  2339. % We need |etoolbox| for delayed code
  2340. % \begin{macrocode}
  2341. \RequirePackage{etoolbox}
  2342. % \end{macrocode}
  2343. %
  2344. % Booktabs is now the default
  2345. % \begin{macrocode}
  2346. \RequirePackage{booktabs}
  2347. % \end{macrocode}
  2348. %
  2349. %
  2350. % We need |totpages| to calculate the number of pages and
  2351. % |refcount| to use that number
  2352. % \begin{macrocode}
  2353. \RequirePackage{refcount}
  2354. \RequirePackage{totpages}
  2355. % \end{macrocode}
  2356. %
  2357. % The \cs{collect@body} macro in |amsmath| is defined using \cs{def}. We load
  2358. % |environ| to access the \cs{long} version of this command
  2359. % \begin{macrocode}
  2360. \RequirePackage{environ}
  2361. % \end{macrocode}
  2362. %
  2363. % We use |setspace| for double spacing
  2364. % \begin{macrocode}
  2365. \if@ACM@manuscript
  2366. \RequirePackage{setspace}
  2367. \onehalfspacing
  2368. \fi
  2369. % \end{macrocode}
  2370. %
  2371. % \changes{v1.40}{2017/06/05}{Added `textcase' package}
  2372. % We need |textcase| for better upcasing
  2373. % \begin{macrocode}
  2374. \RequirePackage{textcase}
  2375. % \end{macrocode}
  2376. %
  2377. %
  2378. %\subsection{Citations}
  2379. % \changes{v1.19}{2016/07/28}{Include 'References' in PDF bookmarks
  2380. % (Matthew Fluet)}
  2381. % \changes{v1.14}{2016/06/09}{Patched \cs{citestyle}}
  2382. % \changes{v1.55}{2016/08/012}{Typo corrected (Zack Weinberg)}
  2383. % We patch \cs{setcitestyle} to allow, for example,
  2384. % \cs{setcitestyle}|{sort}| and \cs{setcitestyle}|{nosort}|. We patch
  2385. % \cs{citestyle} to warn about undefined citation styles.
  2386. % \begin{macrocode}
  2387. \if@ACM@natbib
  2388. \RequirePackage{natbib}
  2389. \renewcommand{\bibsection}{%
  2390. \section*{\refname}%
  2391. \phantomsection\addcontentsline{toc}{section}{\refname}%
  2392. }
  2393. \renewcommand{\bibfont}{\bibliofont}
  2394. \renewcommand\setcitestyle[1]{
  2395. \@for\@tempa:=#1\do
  2396. {\def\@tempb{round}\ifx\@tempa\@tempb
  2397. \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
  2398. \def\@tempb{square}\ifx\@tempa\@tempb
  2399. \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
  2400. \def\@tempb{angle}\ifx\@tempa\@tempb
  2401. \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
  2402. \def\@tempb{curly}\ifx\@tempa\@tempb
  2403. \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
  2404. \def\@tempb{semicolon}\ifx\@tempa\@tempb
  2405. \renewcommand\NAT@sep{;}\fi
  2406. \def\@tempb{colon}\ifx\@tempa\@tempb
  2407. \renewcommand\NAT@sep{;}\fi
  2408. \def\@tempb{comma}\ifx\@tempa\@tempb
  2409. \renewcommand\NAT@sep{,}\fi
  2410. \def\@tempb{authoryear}\ifx\@tempa\@tempb
  2411. \NAT@numbersfalse\fi
  2412. \def\@tempb{numbers}\ifx\@tempa\@tempb
  2413. \NAT@numberstrue\NAT@superfalse\fi
  2414. \def\@tempb{super}\ifx\@tempa\@tempb
  2415. \NAT@numberstrue\NAT@supertrue\fi
  2416. \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
  2417. \let\bibstyle=\@gobble\fi
  2418. \def\@tempb{bibstyle}\ifx\@tempa\@tempb
  2419. \let\bibstyle=\@citestyle\fi
  2420. \def\@tempb{sort}\ifx\@tempa\@tempb
  2421. \def\NAT@sort{\@ne}\fi
  2422. \def\@tempb{nosort}\ifx\@tempa\@tempb
  2423. \def\NAT@sort{\z@}\fi
  2424. \def\@tempb{compress}\ifx\@tempa\@tempb
  2425. \def\NAT@cmprs{\@ne}\fi
  2426. \def\@tempb{nocompress}\ifx\@tempa\@tempb
  2427. \def\NAT@cmprs{\z@}\fi
  2428. \def\@tempb{sort&compress}\ifx\@tempa\@tempb
  2429. \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
  2430. \def\@tempb{mcite}\ifx\@tempa\@tempb
  2431. \let\NAT@merge\@ne\fi
  2432. \def\@tempb{merge}\ifx\@tempa\@tempb
  2433. \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
  2434. \def\@tempb{elide}\ifx\@tempa\@tempb
  2435. \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
  2436. \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
  2437. \NAT@longnamestrue\fi
  2438. \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
  2439. \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
  2440. \expandafter\NAT@find@eq\@tempa=\relax\@nil
  2441. \if\@tempc\relax\else
  2442. \expandafter\NAT@rem@eq\@tempc
  2443. \def\@tempb{open}\ifx\@tempa\@tempb
  2444. \xdef\NAT@open{\@tempc}\fi
  2445. \def\@tempb{close}\ifx\@tempa\@tempb
  2446. \xdef\NAT@close{\@tempc}\fi
  2447. \def\@tempb{aysep}\ifx\@tempa\@tempb
  2448. \xdef\NAT@aysep{\@tempc}\fi
  2449. \def\@tempb{yysep}\ifx\@tempa\@tempb
  2450. \xdef\NAT@yrsep{\@tempc}\fi
  2451. \def\@tempb{notesep}\ifx\@tempa\@tempb
  2452. \xdef\NAT@cmt{\@tempc}\fi
  2453. \def\@tempb{citesep}\ifx\@tempa\@tempb
  2454. \xdef\NAT@sep{\@tempc}\fi
  2455. \fi
  2456. }%
  2457. \NAT@@setcites
  2458. }
  2459. \renewcommand\citestyle[1]{%
  2460. \ifcsname bibstyle@#1\endcsname%
  2461. \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
  2462. \else%
  2463. \@latex@error{Undefined `#1' citestyle}%
  2464. \fi
  2465. }%
  2466. \fi
  2467. % \end{macrocode}
  2468. %
  2469. % \begin{macro}{\bibstyle@acmauthoryear}
  2470. % \changes{v1.13}{2016/06/06}{Added macro}
  2471. % \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle@acmauthoryear}
  2472. % before use}
  2473. % \changes{v1.35}{2017/04/13}{Square brackets for author-year style}
  2474. % The default author-year format:
  2475. % \begin{macrocode}
  2476. \newcommand{\bibstyle@acmauthoryear}{%
  2477. \setcitestyle{%
  2478. authoryear,%
  2479. open={[},close={]},citesep={;},%
  2480. aysep={},yysep={,},%
  2481. notesep={, }}}
  2482. % \end{macrocode}
  2483. %
  2484. % \end{macro}
  2485. %
  2486. % \begin{macro}{\bibstyle@acmnumeric}
  2487. % \changes{v1.13}{2016/06/06}{Added macro}
  2488. % \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle@numeric}
  2489. % before use}
  2490. % The default numeric format:
  2491. % \begin{macrocode}
  2492. \newcommand{\bibstyle@acmnumeric}{%
  2493. \setcitestyle{%
  2494. numbers,sort&compress,%
  2495. open={[},close={]},citesep={,},%
  2496. notesep={, }}}
  2497. % \end{macrocode}
  2498. %
  2499. % \end{macro}
  2500. %
  2501. % \changes{v1.28}{2017/01/07}{Corrected option natbib behavior}
  2502. % The default is numeric:
  2503. % \begin{macrocode}
  2504. \if@ACM@natbib
  2505. \citestyle{acmnumeric}
  2506. \fi
  2507. % \end{macrocode}
  2508. %
  2509. % \begin{macro}{\@startsection}
  2510. % \changes{v1.31}{2017/03/04}{Added \cs{tochangmeasure}}
  2511. % Before we call |hyperref|, we redefine \cs{startsection} commands to
  2512. % their \LaTeX\ defaults since the |amsart| ones are too AMS-specific.
  2513. % We need to do this early since we want |hyperref| to have a chance
  2514. % to redefine them again:
  2515. % \begin{macrocode}
  2516. \def\@startsection#1#2#3#4#5#6{%
  2517. \if@noskipsec \leavevmode \fi
  2518. \par
  2519. \@tempskipa #4\relax
  2520. \@afterindenttrue
  2521. \ifdim \@tempskipa <\z@
  2522. \@tempskipa -\@tempskipa \@afterindentfalse
  2523. \fi
  2524. \if@nobreak
  2525. \everypar{}%
  2526. \else
  2527. \addpenalty\@secpenalty\addvspace\@tempskipa
  2528. \fi
  2529. \@ifstar
  2530. {\@ssect{#3}{#4}{#5}{#6}}%
  2531. {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
  2532. \def\@sect#1#2#3#4#5#6[#7]#8{%
  2533. \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
  2534. \ifnum #2>\c@secnumdepth
  2535. \let\@svsec\@empty
  2536. \else
  2537. \refstepcounter{#1}%
  2538. \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  2539. \fi
  2540. \@tempskipa #5\relax
  2541. \ifdim \@tempskipa>\z@
  2542. \begingroup
  2543. #6{%
  2544. \@hangfrom{\hskip #3\relax\@svsec}%
  2545. \interlinepenalty \@M #8\@@par}%
  2546. \endgroup
  2547. \csname #1mark\endcsname{#7}%
  2548. \ifnum #2>\c@secnumdepth \else
  2549. \@tochangmeasure{\csname the#1\endcsname}%
  2550. \fi
  2551. \addcontentsline{toc}{#1}{%
  2552. \ifnum #2>\c@secnumdepth \else
  2553. \protect\numberline{\csname the#1\endcsname}%
  2554. \fi
  2555. #7}%
  2556. \else
  2557. \def\@svsechd{%
  2558. #6{\hskip #3\relax
  2559. \@svsec #8}%
  2560. \csname #1mark\endcsname{#7}%
  2561. \ifnum #2>\c@secnumdepth \else
  2562. \@tochangmeasure{\csname the#1\endcsname\space}%
  2563. \fi
  2564. \addcontentsline{toc}{#1}{%
  2565. \ifnum #2>\c@secnumdepth \else
  2566. \protect\numberline{\csname the#1\endcsname}%
  2567. \fi
  2568. #7}}%
  2569. \fi
  2570. \@xsect{#5}}
  2571. \def\@xsect#1{%
  2572. \@tempskipa #1\relax
  2573. \ifdim \@tempskipa>\z@
  2574. \par \nobreak
  2575. \vskip \@tempskipa
  2576. \@afterheading
  2577. \else
  2578. \@nobreakfalse
  2579. \global\@noskipsectrue
  2580. \everypar{%
  2581. \if@noskipsec
  2582. \global\@noskipsecfalse
  2583. {\setbox\z@\lastbox}%
  2584. \clubpenalty\@M
  2585. \begingroup \@svsechd \endgroup
  2586. \unskip
  2587. \@tempskipa #1\relax
  2588. \hskip -\@tempskipa
  2589. \else
  2590. \clubpenalty \@clubpenalty
  2591. \everypar{}%
  2592. \fi}%
  2593. \fi
  2594. \ignorespaces}
  2595. \def\@seccntformat#1{\csname the#1\endcsname\quad}
  2596. \def\@ssect#1#2#3#4#5{%
  2597. \@tempskipa #3\relax
  2598. \ifdim \@tempskipa>\z@
  2599. \begingroup
  2600. #4{%
  2601. \@hangfrom{\hskip #1}%
  2602. \interlinepenalty \@M #5\@@par}%
  2603. \endgroup
  2604. \else
  2605. \def\@svsechd{#4{\hskip #1\relax #5}}%
  2606. \fi
  2607. \@xsect{#3}}
  2608. % \end{macrocode}
  2609. %
  2610. % \end{macro}
  2611. %
  2612. % \begin{macro}{\@startsection}
  2613. % \changes{v1.31}{2017/03/04}{Rededined macro}
  2614. % \changes{v1.43}{2017/07/09}{Added \cs{makeatletter}}
  2615. % The |amsart| package redefines \cs{startsection}. Here we redefine
  2616. % it again to make the table of contents work.
  2617. % \begin{macrocode}
  2618. \def\@starttoc#1#2{\begingroup\makeatletter
  2619. \setTrue{#1}%
  2620. \par\removelastskip\vskip\z@skip
  2621. \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
  2622. {.5\linespacing}{\centering\contentsnamefont}{#2}%
  2623. \@input{\jobname.#1}%
  2624. \if@filesw
  2625. \@xp\newwrite\csname tf@#1\endcsname
  2626. \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
  2627. \fi
  2628. \global\@nobreakfalse \endgroup
  2629. \addvspace{32\p@\@plus14\p@}%
  2630. }
  2631. % \end{macrocode}
  2632. %
  2633. % \end{macro}
  2634. %
  2635. % \begin{macro}{\l@subsection}
  2636. % \changes{v1.40}{2017/05/27}{Redefined macro}
  2637. % Section spacing is more generous than for |amsart|
  2638. % \begin{macrocode}
  2639. \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
  2640. % \end{macrocode}
  2641. % \end{macro}
  2642. %
  2643. % \begin{macro}{\l@subsection}
  2644. % \changes{v1.31}{2017/03/04}{Redefined macro}
  2645. % The spacing in |amsart| is too large
  2646. % \begin{macrocode}
  2647. \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
  2648. % \end{macrocode}
  2649. %
  2650. % \end{macro}
  2651. % \begin{macro}{\l@subsubsection}
  2652. % \changes{v1.31}{2017/03/04}{Redefined macro}
  2653. % The spacing in |amsart| is too large
  2654. % \begin{macrocode}
  2655. \def\l@subsubsection{\@tocline{2}{0pt}{1pc}{5pc}{}}
  2656. % \end{macrocode}
  2657. %
  2658. % \end{macro}
  2659. %
  2660. % We need to define foonote-related stuff before the call to hyperref
  2661. % (Ross Moore)
  2662. % \begin{macro}{\@makefntext}
  2663. % We do not use indentation for footnotes
  2664. % \begin{macrocode}
  2665. \def\@makefntext{\noindent\@makefnmark}
  2666. % \end{macrocode}
  2667. %
  2668. % \end{macro}
  2669. %
  2670. % \begin{macro}{\@footnotetext}
  2671. % In |sigchi-a| mode our footnotes are in the margin!
  2672. % \begin{macrocode}
  2673. \if@ACM@sigchiamode
  2674. \long\def\@footnotetext#1{\marginpar{%
  2675. \reset@font\small
  2676. \interlinepenalty\interfootnotelinepenalty
  2677. \protected@edef\@currentlabel{%
  2678. \csname p@footnote\endcsname\@thefnmark
  2679. }%
  2680. \color@begingroup
  2681. \@makefntext{%
  2682. \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
  2683. \color@endgroup}}%
  2684. \fi
  2685. % \end{macrocode}
  2686. %
  2687. % \end{macro}
  2688. %
  2689. % \begin{macro}{\@mpfootnotetext}
  2690. % \changes{v1.13}{2016/06/06}{Made minipage footnotes centered}
  2691. % We want the footnotes in minipages centered:
  2692. % \begin{macrocode}
  2693. \long\def\@mpfootnotetext#1{%
  2694. \global\setbox\@mpfootins\vbox{%
  2695. \unvbox\@mpfootins
  2696. \reset@font\footnotesize
  2697. \hsize\columnwidth
  2698. \@parboxrestore
  2699. \protected@edef\@currentlabel
  2700. {\csname p@mpfootnote\endcsname\@thefnmark}%
  2701. \color@begingroup\centering
  2702. \@makefntext{%
  2703. \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
  2704. \color@endgroup}}
  2705. % \end{macrocode}
  2706. %
  2707. % \end{macro}
  2708. %
  2709. % \begin{macro}{\@makefnmark}
  2710. % \changes{v1.17}{2016/067/09}{Redefined}
  2711. % AMS classes use a buggy definition of \cs{makefnmark}. We revert
  2712. % to the standard one.
  2713. % \begin{macrocode}
  2714. \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
  2715. % \end{macrocode}
  2716. %
  2717. % \end{macro}
  2718. %
  2719. %
  2720. % And now, |hyperref|
  2721. % \changes{v1.28}{2017/01/07}{Got rid of warnings in pdf keywords}
  2722. % \changes{v1.46}{2017/08/25}{Delayed hypersetup since journal options
  2723. % may change screen mode}
  2724. % \changes{v1.55}{2018/10/20}{Now we use purple color for links}
  2725. % \changes{v1.58}{2019/26/01}{Suppressed \cs{addtocounter} in pdf subject}
  2726. % \begin{macrocode}
  2727. \let\@footnotemark@nolink\@footnotemark
  2728. \let\@footnotetext@nolink\@footnotetext
  2729. \RequirePackage[bookmarksnumbered,unicode]{hyperref}
  2730. \pdfstringdefDisableCommands{%
  2731. \def\addtocounter#1#2{}%
  2732. \def\unskip{}%
  2733. \def\textbullet{- }%
  2734. \def\textrightarrow{ -> }%
  2735. \def\footnotemark{}%
  2736. }
  2737. \urlstyle{rm}
  2738. \ifcase\ACM@format@nr
  2739. \relax % manuscript
  2740. \or % acmsmall
  2741. \or % acmlarge
  2742. \or % acmtog
  2743. \or % sigconf
  2744. \or % siggraph
  2745. \or % sigplan
  2746. \urlstyle{sf}
  2747. \or % sigchi
  2748. \or % sigchi-a
  2749. \urlstyle{sf}
  2750. \fi
  2751. \AtEndPreamble{%
  2752. \if@ACM@urlbreakonhyphens
  2753. \def\do@url@hyp{\do\-}%
  2754. \fi
  2755. \if@ACM@screen
  2756. \hypersetup{colorlinks,
  2757. linkcolor=ACMPurple,
  2758. citecolor=ACMPurple,
  2759. urlcolor=ACMDarkBlue,
  2760. filecolor=ACMDarkBlue}
  2761. \else
  2762. \hypersetup{hidelinks}
  2763. \fi
  2764. \hypersetup{pdflang={en},
  2765. pdfdisplaydoctitle}}
  2766. % \end{macrocode}
  2767. %
  2768. % Bibliography mangling.
  2769. % \changes{v1.33}{2017/03/23}{Moved \cs{citename} definition for
  2770. % non-natbib bibliography, so a package may redefine it}
  2771. % \changes{v1.48}{2017/09/23}{\cs{citeyear} no longer behaves like
  2772. % \cs{citeyearpar}}
  2773. % \begin{macrocode}
  2774. \if@ACM@natbib
  2775. \let\citeN\cite
  2776. \let\cite\citep
  2777. \let\citeANP\citeauthor
  2778. \let\citeNN\citeyearpar
  2779. \let\citeyearNP\citeyear
  2780. \let\citeNP\citealt
  2781. \DeclareRobustCommand\citeA
  2782. {\begingroup\NAT@swafalse
  2783. \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
  2784. \providecommand\newblock{}%
  2785. \else
  2786. \AtBeginDocument{%
  2787. \let\shortcite\cite%
  2788. \providecommand\citename[1]{#1}}
  2789. \fi
  2790. \newcommand\shortcite[2][]{%
  2791. \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi}
  2792. % \end{macrocode}
  2793. %
  2794. %
  2795. % \begin{macro}{\bibliographystyle}
  2796. % \changes{v1.13}{2016/06/06}{Redefined macro}
  2797. % The |amsart| package redefines \cs{bibliographystyle} since it
  2798. % prefers the AMS bibliography style. We turn it back to the
  2799. % \LaTeX\ definition:
  2800. % \begin{macrocode}
  2801. \def\bibliographystyle#1{%
  2802. \ifx\@begindocumenthook\@undefined\else
  2803. \expandafter\AtBeginDocument
  2804. \fi
  2805. {\if@filesw
  2806. \immediate\write\@auxout{\string\bibstyle{#1}}%
  2807. \fi}}
  2808. % \end{macrocode}
  2809. %
  2810. % \end{macro}
  2811. %
  2812. %
  2813. % Graphics and color.
  2814. % \changes{1.48}{2017/10/22}{Added prologue option to xcolor}
  2815. % \begin{macrocode}
  2816. \RequirePackage{graphicx}
  2817. \RequirePackage[prologue]{xcolor}
  2818. % \end{macrocode}
  2819. %
  2820. % We define ACM colors according to~\cite{ACMIdentityStandards}:
  2821. % \begin{macrocode}
  2822. \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
  2823. \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
  2824. \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
  2825. \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
  2826. \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
  2827. \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
  2828. \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
  2829. \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
  2830. % \end{macrocode}
  2831. %
  2832. %
  2833. % Author-draft mode
  2834. % \begin{macrocode}
  2835. \if@ACM@authordraft
  2836. \RequirePackage{draftwatermark}
  2837. \SetWatermarkFontSize{0.5in}
  2838. \SetWatermarkColor[gray]{.9}
  2839. \SetWatermarkText{\parbox{12em}{\centering
  2840. Unpublished working draft.\\
  2841. Not for distribution.}}
  2842. \fi
  2843. % \end{macrocode}
  2844. %
  2845. %
  2846. %\subsection{Paper size and paragraphing}
  2847. %\label{sec:paper}
  2848. %
  2849. % \changes{v1.17}{2016/07/07}{Slightly decreased margins for sigs}
  2850. % \changes{v1.29}{2017/01/22}{Increased head to 13pt}
  2851. % \changes{v1.40}{2017/07/15}{Added heightrounded to geometry}
  2852. % \changes{v1.56}{2018/10/16}{Make two-column layouts flush (Philip Quinn)}
  2853. % We use |geometry| for dimensions. Note that the present margins do not
  2854. % depend on the font size option---we might need to change this.
  2855. % See \url{https://github.com/borisveytsman/acmart/issues/5#issuecomment-272881329}.
  2856. % \begin{macrocode}
  2857. \RequirePackage{geometry}
  2858. \ifcase\ACM@format@nr
  2859. \relax % manuscript
  2860. \geometry{letterpaper,head=13pt,
  2861. marginparwidth=6pc,heightrounded}%
  2862. \or % acmsmall
  2863. \geometry{twoside=true,
  2864. includeheadfoot, head=13pt, foot=2pc,
  2865. paperwidth=6.75in, paperheight=10in,
  2866. top=58pt, bottom=44pt, inner=46pt, outer=46pt,
  2867. marginparwidth=2pc,heightrounded
  2868. }%
  2869. \or % acmlarge
  2870. \geometry{twoside=true, head=13pt, foot=2pc,
  2871. paperwidth=8.5in, paperheight=11in,
  2872. includeheadfoot,
  2873. top=78pt, bottom=114pt, inner=81pt, outer=81pt,
  2874. marginparwidth=4pc,heightrounded
  2875. }%
  2876. \or % acmtog
  2877. \geometry{twoside=true, head=13pt, foot=2pc,
  2878. paperwidth=8.5in, paperheight=11in,
  2879. includeheadfoot, columnsep=24pt,
  2880. top=52pt, bottom=75pt, inner=52pt, outer=52pt,
  2881. marginparwidth=2pc,heightrounded
  2882. }%
  2883. \or % sigconf
  2884. \geometry{twoside=true, head=13pt,
  2885. paperwidth=8.5in, paperheight=11in,
  2886. includeheadfoot, columnsep=2pc,
  2887. top=57pt, bottom=73pt, inner=54pt, outer=54pt,
  2888. marginparwidth=2pc,heightrounded
  2889. }%
  2890. \or % siggraph
  2891. \geometry{twoside=true, head=13pt,
  2892. paperwidth=8.5in, paperheight=11in,
  2893. includeheadfoot, columnsep=2pc,
  2894. top=57pt, bottom=73pt, inner=54pt, outer=54pt,
  2895. marginparwidth=2pc,heightrounded
  2896. }%
  2897. \or % sigplan
  2898. \geometry{twoside=true, head=13pt,
  2899. paperwidth=8.5in, paperheight=11in,
  2900. includeheadfoot=false, columnsep=2pc,
  2901. top=1in, bottom=1in, inner=0.75in, outer=0.75in,
  2902. marginparwidth=2pc,heightrounded
  2903. }%
  2904. \or % sigchi
  2905. \geometry{twoside=true, head=13pt,
  2906. paperwidth=8.5in, paperheight=11in,
  2907. includeheadfoot, columnsep=2pc,
  2908. top=66pt, bottom=73pt, inner=54pt, outer=54pt,
  2909. marginparwidth=2pc,heightrounded
  2910. }%
  2911. \or % sigchi-a
  2912. \geometry{twoside=false, head=13pt,
  2913. paperwidth=11in, paperheight=8.5in,
  2914. includeheadfoot, marginparsep=72pt,
  2915. marginparwidth=170pt, columnsep=20pt,
  2916. top=72pt, bottom=72pt, left=314pt, right=72pt
  2917. }%
  2918. \@mparswitchfalse
  2919. \reversemarginpar
  2920. \fi
  2921. % \end{macrocode}
  2922. %
  2923. %
  2924. % \begin{macro}{\parindent}
  2925. % \begin{macro}{\parskip}
  2926. % Paragraphing
  2927. % \begin{macrocode}
  2928. \setlength\parindent{10\p@}
  2929. \setlength\parskip{\z@}
  2930. \ifcase\ACM@format@nr
  2931. \relax % manuscript
  2932. \or % acmsmall
  2933. \or % acmlarge
  2934. \or % acmtog
  2935. \setlength\parindent{9\p@}%
  2936. \or % sigconf
  2937. \or % siggraph
  2938. \or % sigplan
  2939. \or % sigchi
  2940. \or % sigchi-a
  2941. \fi
  2942. % \end{macrocode}
  2943. %
  2944. % \end{macro}
  2945. % \end{macro}
  2946. %
  2947. % \begin{macro}{\normalparindent}
  2948. % \changes{v1.37}{2017/05/13}{Set \cs{normalparindent} (Matthew Fluet)}%
  2949. % The |amsart| package defines the \cs{normalparindent} length and
  2950. % initializes it to 12pt (the value of \cs{parindent} in |amsart|). It
  2951. % is later used to set the \cs{listparindent} length in the |quotation|
  2952. % environment and the \cs{parindent} length in the \cs{@footnotetext}
  2953. % command. We set \cs{normalparindent} to the value of \cs{parindent}
  2954. % as selected by |acmart| for consistent paragraph indents.
  2955. % \begin{macrocode}
  2956. \setlength\normalparindent{\parindent}
  2957. % \end{macrocode}
  2958. %
  2959. % \end{macro}
  2960. %
  2961. % Footnotes require some consideration. We have several layers of
  2962. % footnotes: frontmatter footnotes, ``regular'' footnotes and the
  2963. % special insert for the bibstrip. In the old ACM classes, the bibstrip
  2964. % was a \cs{@float}. The problem with floats is that they tend to, well,
  2965. % float---and we want the guarantee they stay.
  2966. %
  2967. % We use |manyfoot| for layered footnotes instead.
  2968. %
  2969. % \begin{macro}{\copyrightpermissionfootnoterule}
  2970. % \changes{v1.12}{2016/05/30}{Added macro}
  2971. % This is the footnote rule that separates the bibstrip from the rest of
  2972. % the paper. It is a full width rule.
  2973. % \begin{macrocode}
  2974. \def\copyrightpermissionfootnoterule{\kern-3\p@
  2975. \hrule \@width \columnwidth \kern 2.6\p@}
  2976. % \end{macrocode}
  2977. % \end{macro}
  2978. %
  2979. % \begin{macrocode}
  2980. \RequirePackage{manyfoot}
  2981. \SelectFootnoteRule[2]{copyrightpermission}
  2982. \DeclareNewFootnote{authorsaddresses}
  2983. \SelectFootnoteRule[2]{copyrightpermission}
  2984. \DeclareNewFootnote{copyrightpermission}
  2985. % \end{macrocode}
  2986. %
  2987. %
  2988. % \begin{macro}{\footnoterule}
  2989. % \changes{v1.12}{2016/05/30}{Made shorter}
  2990. % Tschichold's rules:
  2991. % \begin{macrocode}
  2992. \def\footnoterule{\kern-3\p@
  2993. \hrule \@width 4pc \kern 2.6\p@}
  2994. % \end{macrocode}
  2995. %
  2996. % \end{macro}
  2997. %
  2998. % \begin{macro}{\endminipage}
  2999. % We do not use footnote rules in minipages
  3000. % \begin{macrocode}
  3001. \def\endminipage{%
  3002. \par
  3003. \unskip
  3004. \ifvoid\@mpfootins\else
  3005. \vskip\skip\@mpfootins
  3006. \normalcolor
  3007. \unvbox\@mpfootins
  3008. \fi
  3009. \@minipagefalse
  3010. \color@endgroup
  3011. \egroup
  3012. \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
  3013. % \end{macrocode}
  3014. %
  3015. % \end{macro}
  3016. %
  3017. %
  3018. % \begin{macro}{\@textbottom}
  3019. % \changes{v1.31}{2017/03/04}{Redefined}
  3020. % Add some stretch according to David Carlisle's advice at
  3021. % \url{http://tex.stackexchange.com/a/62318/5522}
  3022. % \begin{macrocode}
  3023. \def\@textbottom{\vskip \z@ \@plus 1pt}
  3024. \let\@texttop\relax
  3025. % \end{macrocode}
  3026. %
  3027. % \end{macro}
  3028. %
  3029. % In two-column layouts, force both columns to be the same height by inserting
  3030. % extra internal vertical space to fill out the page.
  3031. % \begin{macrocode}
  3032. \ifcase\ACM@format@nr
  3033. \relax % manuscript
  3034. \or % acmsmall
  3035. \or % acmlarge
  3036. \or % acmtog
  3037. \flushbottom
  3038. \or % sigconf
  3039. \flushbottom
  3040. \or % siggraph
  3041. \flushbottom
  3042. \or % sigplan
  3043. \flushbottom
  3044. \or % sigchi
  3045. \flushbottom
  3046. \or % sigchi-a
  3047. \fi
  3048. % \end{macrocode}
  3049. %
  3050. %\subsection{Fonts}
  3051. %\label{sec:fonts}
  3052. %
  3053. % \changes{v1.12}{2016/05/30}{Added graceful behavior when libertine
  3054. % fonts are absent}
  3055. % \changes{v1.33}{2017/03/29}{Added cmap and glyphtounicode}
  3056. % \changes{v1.40}{2017/05/27}{Added Ross Moore code for glyphtounicode}
  3057. %
  3058. % Somehow PDFTeX and XeTeX require different incantations to make a PDF
  3059. % compliant with the current Acrobat bugs. Xpdf is much better.
  3060. %
  3061. % The code below is by Ross Moore.
  3062. % \begin{macrocode}
  3063. \RequirePackage{iftex}
  3064. \ifPDFTeX
  3065. \input{glyphtounicode}
  3066. \pdfglyphtounicode{f_f}{FB00}
  3067. \pdfglyphtounicode{f_f_i}{FB03}
  3068. \pdfglyphtounicode{f_f_l}{FB04}
  3069. \pdfglyphtounicode{f_i}{FB01}
  3070. \pdfglyphtounicode{t_t}{0074 0074}
  3071. \pdfglyphtounicode{f_t}{0066 0074}
  3072. \pdfglyphtounicode{T_h}{0054 0068}
  3073. \pdfgentounicode=1
  3074. \fi
  3075. \RequirePackage{cmap}
  3076. % \end{macrocode}
  3077. %
  3078. %
  3079. % \begin{macro}{\if@ACM@newfonts}
  3080. % \changes{v1.12}{2016/05/30}{Added macro}%
  3081. % Whether we load the new fonts
  3082. % \begin{macrocode}
  3083. \newif\if@ACM@newfonts
  3084. \@ACM@newfontstrue
  3085. \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
  3086. have the libertine package installed. Please upgrade your
  3087. TeX}\@ACM@newfontsfalse}
  3088. \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
  3089. have the zi4 package installed. Please upgrade your
  3090. TeX}\@ACM@newfontsfalse}
  3091. \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
  3092. have the newtxmath package installed. Please upgrade your
  3093. TeX}\@ACM@newfontsfalse}
  3094. % \end{macrocode}
  3095. %
  3096. % \end{macro}
  3097. %
  3098. % \changes{v1.30}{2017/02/15}{Switched to T1: looks like libertine has
  3099. % problems with \cs{l} in OT1}%
  3100. % \changes{v1.33}{2017/03/12}{Switched to Type~1 fonts for libertine
  3101. % even if OTF-capable engine is used (Kai Mindermann)}
  3102. % \changes{v1.51}{2018/04/05}{XeTeX now uses OTF fonts (Joachim
  3103. % Breitner)}
  3104. % \changes{v1.54}{2018/07/16}{XeTeX now uses T1 encoding}
  3105. % \changes{v1.56}{2018/11/11}{Looks like XeTeX requires explicit
  3106. % monotype font delcaration}
  3107. % We use Libertine throughout.
  3108. % \begin{macrocode}
  3109. \if@ACM@newfonts
  3110. \RequirePackage[T1]{fontenc}
  3111. \ifxetex
  3112. \RequirePackage[tt=false]{libertine}
  3113. \setmonofont{inconsolata}
  3114. \else
  3115. \RequirePackage[tt=false, type1=true]{libertine}
  3116. \fi
  3117. \RequirePackage[varqu]{zi4}
  3118. \RequirePackage[libertine]{newtxmath}
  3119. \fi
  3120. % \end{macrocode}
  3121. %
  3122. % \begin{macro}{\liningnums}
  3123. % \changes{v1.46}{2017/08/28}{Workaround for compatibility with fontspec}
  3124. % Libertine defines \cs{liningnums}, which makes |fontspec| unhappy.
  3125. % While we do not use |fontspec|, some users do.
  3126. % \begin{macrocode}
  3127. \let\liningnums\@undefined
  3128. \AtEndPreamble{%
  3129. \DeclareTextFontCommand{\liningnums}{\libertineLF}}
  3130. % \end{macrocode}
  3131. %
  3132. % \end{macro}
  3133. %
  3134. %
  3135. % The SIGCHI extended abstracts are sans serif:
  3136. % \begin{macrocode}
  3137. \if@ACM@sigchiamode
  3138. \renewcommand{\familydefault}{\sfdefault}
  3139. \fi
  3140. % \end{macrocode}
  3141. %
  3142. %
  3143. %
  3144. %\subsection{Image descriptions}
  3145. %\label{sec:description}
  3146. %
  3147. % \begin{macro}{\if@Description@present}
  3148. % \changes{v1.56}{2018/11/11}{Added macro}
  3149. % A local switch: whether there is a description in the given figure
  3150. % \begin{macrocode}
  3151. \newif\if@Description@present
  3152. \@Description@presenttrue
  3153. % \end{macrocode}
  3154. % \end{macro}
  3155. %
  3156. % \begin{macro}{\if@undescribed@images}
  3157. % \changes{v1.56}{2018/11/11}{Added macro}
  3158. % A global switch whether some images were \emph{not} described
  3159. % \begin{macrocode}
  3160. \newif\if@undescribed@images
  3161. \@undescribed@imagesfalse
  3162. % \end{macrocode}
  3163. % \end{macro}
  3164. %
  3165. % \begin{macro}{\Description}
  3166. % \changes{v1.56}{2018/11/11}{Added macro}
  3167. % The Description macro right now just sets switches
  3168. % \begin{macrocode}
  3169. \newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces}
  3170. % \end{macrocode}
  3171. % \end{macro}
  3172. %
  3173. % The global warning
  3174. % \begin{macrocode}
  3175. \AtEndDocument{\if@undescribed@images
  3176. \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi}
  3177. % \end{macrocode}
  3178. %
  3179. % Hooks for figures and tables
  3180. % \begin{macrocode}
  3181. \AtBeginEnvironment{figure}{\@Description@presentfalse
  3182. \let\@vspace\@vspace@orig
  3183. \let\@vspacer\@vspacer@orig}
  3184. \AtBeginEnvironment{figure*}{\@Description@presentfalse
  3185. \let\@vspace\@vspace@orig
  3186. \let\@vspacer\@vspacer@orig}
  3187. \AtEndEnvironment{figure}{\if@Description@present\else
  3188. \global\@undescribed@imagestrue
  3189. \ClassWarning{\@classname}{A possible image without description}\fi}
  3190. \AtEndEnvironment{figure*}{\if@Description@present\else
  3191. \global\@undescribed@imagestrue
  3192. \ClassWarning{\@classname}{A possible image without description}\fi}
  3193. \AtBeginEnvironment{table}{\let\@vspace\@vspace@orig
  3194. \let\@vspacer\@vspacer@orig}
  3195. \AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig
  3196. \let\@vspacer\@vspacer@orig}
  3197. % \end{macrocode}
  3198. %
  3199. %
  3200. %\subsection{Floats}
  3201. %\label{sec:floats}
  3202. %
  3203. % \changes{v1.55}{2018/10/20}{Table captions for SIGCHI now use the
  3204. % same font size as figure captions (Luis Leiva)}
  3205. % We use the |caption| package
  3206. % \begin{macrocode}
  3207. \RequirePackage{caption, float}
  3208. \captionsetup[table]{position=top}
  3209. \if@ACM@journal
  3210. \captionsetup{labelfont={sf, small},
  3211. textfont={sf, small}, margin=\z@}
  3212. \captionsetup[figure]{name={Fig.}}
  3213. \else
  3214. \captionsetup{labelfont={bf},
  3215. textfont={bf}, labelsep=colon, margin=\z@}
  3216. \ifcase\ACM@format@nr
  3217. \relax % manuscript
  3218. \or % acmsmall
  3219. \or % acmlarge
  3220. \or % acmtog
  3221. \or % sigconf
  3222. \or % siggraph
  3223. \captionsetup{textfont={it}}
  3224. \or % sigplan
  3225. \captionsetup{labelfont={bf},
  3226. textfont={normalfont}, labelsep=period, margin=\z@}
  3227. \or % sigchi
  3228. \captionsetup[figure]{labelfont={bf, small},
  3229. textfont={bf, small}}
  3230. \captionsetup[table]{labelfont={bf, small},
  3231. textfont={bf, small}}
  3232. \or % sigchi-a
  3233. \captionsetup[figure]{labelfont={bf, small},
  3234. textfont={bf, small}}
  3235. \captionsetup[table]{labelfont={bf, small},
  3236. textfont={bf, small}}
  3237. \fi
  3238. \fi
  3239. % \end{macrocode}
  3240. %
  3241. % \begin{macro}{sidebar}
  3242. % The |sidebar| environment:
  3243. % \begin{macrocode}
  3244. \newfloat{sidebar}{}{sbar}
  3245. \floatname{sidebar}{Sidebar}
  3246. \renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
  3247. % \end{macrocode}
  3248. %
  3249. % \end{macro}
  3250. %
  3251. % \begin{macro}{\@sidebar}
  3252. % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
  3253. % The processing of the saved text
  3254. % \begin{macrocode}
  3255. \long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig
  3256. \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}%
  3257. \marginpar{\small#1}\egroup}
  3258. % \end{macrocode}
  3259. %
  3260. % \end{macro}
  3261. %
  3262. % \begin{macro}{marginfigure}
  3263. % The |marginfigure| environment:
  3264. % \begin{macrocode}
  3265. \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
  3266. % \end{macrocode}
  3267. %
  3268. % \end{macro}
  3269. %
  3270. % \begin{macro}{\@marginfigure}
  3271. % \changes{v1.12}{2016/05/30}{Now centering by default}
  3272. % \changes{v1.56}{2018/11/11}{Added checking for description}
  3273. % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
  3274. % The processing of the saved text
  3275. % \begin{macrocode}
  3276. \long\def\@marginfigure#1{\bgroup
  3277. \let\@vspace\@vspace@orig
  3278. \let\@vspacer\@vspacer@orig
  3279. \captionsetup{type=figure}%
  3280. \marginpar{\@Description@presentfalse\centering
  3281. \small#1\if@Description@present\else
  3282. \global\@undescribed@imagestrue
  3283. \ClassWarning{\@classname}{A possible image without description}
  3284. \fi}%
  3285. \egroup}
  3286. % \end{macrocode}
  3287. %
  3288. % \end{macro}
  3289. %
  3290. % \begin{macro}{margintable}
  3291. % The |margintable| environment:
  3292. % \begin{macrocode}
  3293. \newenvironment{margintable}{\Collect@Body\@margintable}{}
  3294. % \end{macrocode}
  3295. %
  3296. % \end{macro}
  3297. %
  3298. % \begin{macro}{\@margintable}
  3299. % \changes{v1.12}{2016/05/30}{Now centering by default}
  3300. % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
  3301. % The processing of the saved text
  3302. % \begin{macrocode}
  3303. \long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig
  3304. \let\@vspacer\@vspacer@orig\captionsetup{type=table}%
  3305. \marginpar{\centering\small#1}\egroup}
  3306. % \end{macrocode}
  3307. %
  3308. % \end{macro}
  3309. %
  3310. %
  3311. % SIGCHI extended abstracts provide an interesting possibility to push
  3312. % into the margin. Here we use |figure*| and |table*| for this.
  3313. % \begin{macro}{\fulltextwidth}
  3314. % We define the width of the boxes as
  3315. % \begin{macrocode}
  3316. \newdimen\fulltextwidth
  3317. \fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
  3318. % \end{macrocode}
  3319. %
  3320. % \end{macro}
  3321. %
  3322. % \begin{macro}{\@dblfloat}
  3323. % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
  3324. % We redefine the double-float command. First, we make the size
  3325. % bigger. Second, our default position is going to be |tp| (to give
  3326. % marginalia a chance)
  3327. % \begin{macrocode}
  3328. \if@ACM@sigchiamode
  3329. \def\@dblfloat{\bgroup\let\@vspace\@vspace@orig
  3330. \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth
  3331. \let\@endfloatbox\@endwidefloatbox
  3332. \def\@fpsadddefault{\def\@fps{tp}}%
  3333. \@float}
  3334. \fi
  3335. % \end{macrocode}
  3336. %
  3337. % \end{macro}
  3338. %
  3339. % \begin{macro}{\end@dblfloat}
  3340. % And the end. Just adding a \cs{bgroup}.
  3341. % \begin{macrocode}
  3342. \if@ACM@sigchiamode
  3343. \def\end@dblfloat{%
  3344. \end@float\egroup}
  3345. \fi
  3346. % \end{macrocode}
  3347. %
  3348. % \end{macro}
  3349. %
  3350. % \begin{macro}{\@endwidefloatbox}
  3351. % This is the end of a wide box---we basically move everything
  3352. % to the left
  3353. % \begin{macrocode}
  3354. \def\@endwidefloatbox{%
  3355. \par\vskip\z@skip
  3356. \@minipagefalse
  3357. \outer@nobreak
  3358. \egroup
  3359. \color@endbox
  3360. \global\setbox\@currbox=\vbox{\moveleft
  3361. \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
  3362. \wd\@currbox=\textwidth
  3363. }
  3364. % \end{macrocode}
  3365. %
  3366. % \end{macro}
  3367. %
  3368. %
  3369. %\subsection{Lists}
  3370. %\label{sec:lists}
  3371. %
  3372. % \begin{macrocode}
  3373. \ifcase\ACM@format@nr
  3374. \relax % manuscript
  3375. \or % acmsmall
  3376. \or % acmlarge
  3377. \or % acmtog
  3378. \or % sigconf
  3379. \or % siggraph
  3380. \or % sigplan
  3381. \def\labelenumi{\theenumi.}
  3382. \def\labelenumii{\theenumii.}
  3383. \def\labelenumiii{\theenumiii.}
  3384. \def\labelenumiv{\theenumiv.}
  3385. \or % sigchi
  3386. \or % sigchi-a
  3387. \fi
  3388. % \end{macrocode}
  3389. %
  3390. %
  3391. % \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}%
  3392. % The AMS uses generous margins for lists. Note that |amsart| defines
  3393. % \cs{leftmargin} values for list levels at the beginning of the
  3394. % document, so we must redefine them in the same manner. Also, note that
  3395. % |amsart| redefines the |enumerate| and |itemize| environments with a
  3396. % \cs{makelabel} command that uses \cs{llap}, so the \cs{labelwidth}
  3397. % value is~(effectively) irrelevant; nonetheless, we follow |amsart|
  3398. % and set \cs{labelwidth} to \cs{leftmargin} minus \cs{labelsep}.
  3399. % \begin{macrocode}
  3400. \newdimen\@ACM@labelwidth
  3401. \AtBeginDocument{%
  3402. \setlength\labelsep{4pt}
  3403. \setlength{\@ACM@labelwidth}{6.5pt}
  3404. %% First-level list: when beginning after the first line of an
  3405. %% indented paragraph or ending before an indented paragraph, labels
  3406. %% should not hang to the left of the preceding/following text.
  3407. \setlength\leftmargini{\z@}
  3408. \addtolength\leftmargini{\parindent}
  3409. \addtolength\leftmargini{2\labelsep}
  3410. \addtolength\leftmargini{\@ACM@labelwidth}
  3411. %% Second-level and higher lists.
  3412. \setlength\leftmarginii{\z@}
  3413. \addtolength\leftmarginii{0.5\labelsep}
  3414. \addtolength\leftmarginii{\@ACM@labelwidth}
  3415. \setlength\leftmarginiii{\leftmarginii}
  3416. \setlength\leftmarginiv{\leftmarginiii}
  3417. \setlength\leftmarginv{\leftmarginiv}
  3418. \setlength\leftmarginvi{\leftmarginv}
  3419. \@listi}
  3420. \newskip\listisep
  3421. \listisep\smallskipamount
  3422. \def\@listI{\leftmargin\leftmargini
  3423. \labelwidth\leftmargini \advance\labelwidth-\labelsep
  3424. \listparindent\z@
  3425. \topsep\listisep}
  3426. \let\@listi\@listI
  3427. \def\@listii{\leftmargin\leftmarginii
  3428. \labelwidth\leftmarginii \advance\labelwidth-\labelsep
  3429. \topsep\z@skip}
  3430. \def\@listiii{\leftmargin\leftmarginiii
  3431. \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
  3432. \def\@listiv{\leftmargin\leftmarginiv
  3433. \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
  3434. \def\@listv{\leftmargin\leftmarginv
  3435. \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
  3436. \def\@listvi{\leftmargin\leftmarginvi
  3437. \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
  3438. % \end{macrocode}
  3439. %
  3440. %
  3441. % \begin{macro}{\descriptionlabel}
  3442. % \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}%
  3443. % \changes{v1.12}{2016/05/30}{Redefined}
  3444. % We do not use a colon by default like |amsart| does:
  3445. % \begin{macrocode}
  3446. \renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
  3447. % \end{macrocode}
  3448. %
  3449. % \end{macro}
  3450. %
  3451. %
  3452. % \begin{macro}{\description}
  3453. % \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}%
  3454. % \changes{v1.17}{2016/07/07}{Decreased indent}
  3455. % Make the |description| environment indentation consistent with that of
  3456. % the |itemize| and |enumerate| environments.
  3457. % \begin{macrocode}
  3458. \renewenvironment{description}{\list{}{%
  3459. \labelwidth\@ACM@labelwidth
  3460. \let\makelabel\descriptionlabel}%
  3461. }{
  3462. \endlist
  3463. }
  3464. \let\enddescription=\endlist % for efficiency
  3465. % \end{macrocode}
  3466. %
  3467. % \end{macro}
  3468. %
  3469. %
  3470. %\subsection{Top-matter data}
  3471. %\label{sec:top_matter_data}
  3472. %
  3473. % \begin{macro}{\if@ACM@maketitle@typeset}
  3474. % \changes{v1.64}{2019/08/17}{Introduced macro}
  3475. % The switch to check whether \cs{maketitle} is already typeset. It
  3476. % is initally false, and setting top matter when it is true is wrong.
  3477. % \begin{macrocode}
  3478. \newif\if@ACM@maketitle@typeset
  3479. \@ACM@maketitle@typesetfalse
  3480. % \end{macrocode}
  3481. %
  3482. % \end{macro}
  3483. %
  3484. % \changes{v1.24}{2016/11/16}{Add IMWUT journal option}
  3485. % \changes{v1.25}{2016/12/03}{Updated PACMPL}
  3486. % \changes{v1.30}{2017/02/15}{Updated IMWUT and PACMPL}
  3487. % \changes{v1.36}{2017/05/13}{Added PACMHCI journal options}
  3488. % \changes{v1.46}{2017/08/25}{PACM now set screen to true}
  3489. % \changes{v1.53}{2018/04/14}{Added PACMCGIT, TIOT, TDSCI}
  3490. % \changes{v1.58}{2019/03/29}{Added HEALTH. TDSCI is renamed to TDS}
  3491. %
  3492. % We use the |xkeyval| interface to define journal titles and the relevant
  3493. % information
  3494. % \begin{macrocode}
  3495. \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
  3496. CIE,%
  3497. CSUR,%
  3498. DGOV,%
  3499. DTRAP,%
  3500. HEALTH,%
  3501. IMWUT,%
  3502. JACM,%
  3503. JDIQ,%
  3504. JEA,%
  3505. JERIC,%
  3506. JETC,%
  3507. JOCCH,%
  3508. PACMCGIT,%
  3509. PACMHCI,%
  3510. PACMPL,%
  3511. POMACS,%
  3512. TAAS,%
  3513. TACCESS,%
  3514. TACO,%
  3515. TALG,%
  3516. TALLIP,%
  3517. TAP,%
  3518. TCPS,%
  3519. TDS,%
  3520. TEAC,%
  3521. TECS,%
  3522. TELO,%
  3523. THRI,%
  3524. TIIS,%
  3525. TIOT,%
  3526. TISSEC,%
  3527. TIST,%
  3528. TKDD,%
  3529. TMIS,%
  3530. TOCE,%
  3531. TOCHI,%
  3532. TOCL,%
  3533. TOCS,%
  3534. TOCT,%
  3535. TODAES,%
  3536. TODS,%
  3537. TOG,%
  3538. TOIS,%
  3539. TOIT,%
  3540. TOMACS,%
  3541. TOMM,%
  3542. TOMPECS,%
  3543. TOMS,%
  3544. TOPC,%
  3545. TOPS,%
  3546. TOPLAS,%
  3547. TOS,%
  3548. TOSEM,%
  3549. TOSN,%
  3550. TQC,%
  3551. TRETS,%
  3552. TSAS,%
  3553. TSC,%
  3554. TSLP,%
  3555. TWEB,%
  3556. FACMP%
  3557. }{%
  3558. \ifcase\@journalCode@nr
  3559. \relax % CIE
  3560. \def\@journalName{ACM Computers in Entertainment}%
  3561. \def\@journalNameShort{ACM Comput. Entertain.}%
  3562. \def\@permissionCodeOne{1544-3574}%
  3563. \or % CSUR
  3564. \def\@journalName{ACM Computing Surveys}%
  3565. \def\@journalNameShort{ACM Comput. Surv.}%
  3566. \def\@permissionCodeOne{0360-0300}%
  3567. \or % DGOV
  3568. \def\@journalName{Digital Government: Research and Practice}%
  3569. \def\@journalNameShort{Digit. Gov. Res. Pract.}%
  3570. \def\@permissionCodeOne{2639-0175}%
  3571. \or % DTRAP
  3572. \def\@journalName{Digital Threats: Research and Practice}%
  3573. \def\@journalNameShort{Digit. Threat. Res. Pract.}%
  3574. \def\@permissionCodeOne{2576-5337}%
  3575. \or % HEALTH
  3576. \def\@journalName{ACM Transactions on Computing for Healthcare}%
  3577. \def\@journalNameShort{ACM Trans. Comput. Healthcare}%
  3578. \def\@permissionCodeOne{2637-8051}%
  3579. \or % IMWUT
  3580. \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
  3581. Wearable and Ubiquitous Technologies}%
  3582. \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
  3583. \def\@permissionCodeOne{2474-9567}%
  3584. \@ACM@screentrue
  3585. \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
  3586. \or % JACM
  3587. \def\@journalName{Journal of the ACM}%
  3588. \def\@journalNameShort{J. ACM}%
  3589. \def\@permissionCodeOne{0004-5411}%
  3590. \or % JDIQ
  3591. \def\@journalName{ACM Journal of Data and Information Quality}%
  3592. \def\@journalNameShort{ACM J. Data Inform. Quality}%
  3593. \def\@permissionCodeOne{1936-1955}%
  3594. \or % JEA
  3595. \def\@journalName{ACM Journal of Experimental Algorithmics}%
  3596. \def\@journalNameShort{ACM J. Exp. Algor.}%
  3597. \def\@permissionCodeOne{1084-6654}%
  3598. \or % JERIC
  3599. \def\@journalName{ACM Journal of Educational Resources in Computing}%
  3600. \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
  3601. \def\@permissionCodeOne{1073-0516}%
  3602. \or % JETC
  3603. \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
  3604. \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
  3605. \def\@permissionCodeOne{1550-4832}%
  3606. \or % JOCCH
  3607. \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
  3608. \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
  3609. \or % PACMCGIT
  3610. \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}%
  3611. \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}%
  3612. \def\@permissionCodeOne{2577-6193}%
  3613. \@ACM@screentrue
  3614. \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
  3615. \or % PACMHCI
  3616. \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
  3617. \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
  3618. \def\@permissionCodeOne{2573-0142}%
  3619. \@ACM@screentrue
  3620. \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
  3621. \or % PACMPL
  3622. \def\@journalName{Proceedings of the ACM on Programming Languages}%
  3623. \def\@journalNameShort{Proc. ACM Program. Lang.}%
  3624. \def\@permissionCodeOne{2475-1421}%
  3625. \@ACM@screentrue
  3626. \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
  3627. \or % POMACS
  3628. \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
  3629. \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
  3630. \def\@permissionCodeOne{2476-1249}%
  3631. \@ACM@screentrue
  3632. \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
  3633. \or % TAAS
  3634. \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
  3635. \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
  3636. \def\@permissionCodeOne{1556-4665}%
  3637. \or % TACCESS
  3638. \def\@journalName{ACM Transactions on Accessible Computing}%
  3639. \def\@journalNameShort{ACM Trans. Access. Comput.}%
  3640. \def\@permissionCodeOne{1936-7228}%
  3641. \or % TACO
  3642. \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
  3643. \def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
  3644. \or % TALG
  3645. \def\@journalName{ACM Transactions on Algorithms}%
  3646. \def\@journalNameShort{ACM Trans. Algor.}%
  3647. \def\@permissionCodeOne{1549-6325}%
  3648. \or % TALLIP
  3649. \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
  3650. \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
  3651. \def\@permissionCodeOne{2375-4699}%
  3652. \or % TAP
  3653. \def\@journalName{ACM Transactions on Applied Perception}%
  3654. \or % TCPS
  3655. \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
  3656. \or % TDS
  3657. \def\@journalName{ACM Transactions on Data Science}%
  3658. \def\@journalNameShort{ACM Trans. Data Sci.}%
  3659. \def\@permissionCodeOne{2577-3224}%
  3660. \or % TEAC
  3661. \def\@journalName{ACM Transactions on Economics and Computation}%
  3662. \or % TECS
  3663. \def\@journalName{ACM Transactions on Embedded Computing Systems}%
  3664. \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
  3665. \def\@permissionCodeOne{1539-9087}%
  3666. \or % TELO
  3667. \def\@journalName{ACM Transactions on Evolutionary Learning}%
  3668. \def\@journalNameShort{ACM Trans. Evol. Learn.}%
  3669. \def\@permissionCodeOne{2688-3007}%
  3670. \or % THRI
  3671. \def\@journalName{ACM Transactions on Human-Robot Interaction}%
  3672. \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
  3673. \def\@permissionCodeOne{2573-9522}%
  3674. \or % TIIS
  3675. \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
  3676. \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
  3677. \def\@permissionCodeOne{2160-6455}%
  3678. \or % TIOT
  3679. \def\@journalName{ACM Transactions on Internet of Things}%
  3680. \def\@journalNameShort{ACM Trans. Internet Things}%
  3681. \def\@permissionCodeOne{2577-6207}%
  3682. \or % TISSEC
  3683. \def\@journalName{ACM Transactions on Information and System Security}%
  3684. \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
  3685. \def\@permissionCodeOne{1094-9224}%
  3686. \or % TIST
  3687. \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
  3688. \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
  3689. \def\@permissionCodeOne{2157-6904}%
  3690. \or % TKDD
  3691. \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
  3692. \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
  3693. \def\@permissionCodeOne{1556-4681}%
  3694. \or % TMIS
  3695. \def\@journalName{ACM Transactions on Management Information Systems}%
  3696. \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
  3697. \def\@permissionCodeOne{2158-656X}%
  3698. \or % TOCE
  3699. \def\@journalName{ACM Transactions on Computing Education}%
  3700. \def\@journalNameShort{ACM Trans. Comput. Educ.}%
  3701. \def\@permissionCodeOne{1946-6226}%
  3702. \or % TOCHI
  3703. \def\@journalName{ACM Transactions on Computer-Human Interaction}%
  3704. \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
  3705. \def\@permissionCodeOne{1073-0516}%
  3706. \or % TOCL
  3707. \def\@journalName{ACM Transactions on Computational Logic}%
  3708. \def\@journalNameShort{ACM Trans. Comput. Logic}%
  3709. \def\@permissionCodeOne{1529-3785}%
  3710. \or % TOCS
  3711. \def\@journalName{ACM Transactions on Computer Systems}%
  3712. \def\@journalNameShort{ACM Trans. Comput. Syst.}%
  3713. \def\@permissionCodeOne{0734-2071}%
  3714. \or % TOCT
  3715. \def\@journalName{ACM Transactions on Computation Theory}%
  3716. \def\@journalNameShort{ACM Trans. Comput. Theory}%
  3717. \def\@permissionCodeOne{1942-3454}%
  3718. \or % TODAES
  3719. \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
  3720. \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
  3721. \def\@permissionCodeOne{1084-4309}%
  3722. \or % TODS
  3723. \def\@journalName{ACM Transactions on Database Systems}%
  3724. \def\@journalNameShort{ACM Trans. Datab. Syst.}%
  3725. \def\@permissionCodeOne{0362-5915}%
  3726. \or % TOG
  3727. \def\@journalName{ACM Transactions on Graphics}%
  3728. \def\@journalNameShort{ACM Trans. Graph.}%
  3729. \def\@permissionCodeOne{0730-0301}
  3730. \or % TOIS
  3731. \def\@journalName{ACM Transactions on Information Systems}%
  3732. \def\@permissionCodeOne{1046-8188}%
  3733. \or % TOIT
  3734. \def\@journalName{ACM Transactions on Internet Technology}%
  3735. \def\@journalNameShort{ACM Trans. Internet Technol.}%
  3736. \def\@permissionCodeOne{1533-5399}%
  3737. \or % TOMACS
  3738. \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
  3739. \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
  3740. \or % TOMM
  3741. \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
  3742. \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
  3743. \def\@permissionCodeOne{1551-6857}%
  3744. \def\@permissionCodeTwo{0100}%
  3745. \or % TOMPECS
  3746. \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
  3747. \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
  3748. \def\@permissionCodeOne{2376-3639}%
  3749. \or % TOMS
  3750. \def\@journalName{ACM Transactions on Mathematical Software}%
  3751. \def\@journalNameShort{ACM Trans. Math. Softw.}%
  3752. \def\@permissionCodeOne{0098-3500}%
  3753. \or % TOPC
  3754. \def\@journalName{ACM Transactions on Parallel Computing}%
  3755. \def\@journalNameShort{ACM Trans. Parallel Comput.}%
  3756. \def\@permissionCodeOne{1539-9087}%
  3757. \or % TOPS
  3758. \def\@journalName{ACM Transactions on Privacy and Security}%
  3759. \def\@journalNameShort{ACM Trans. Priv. Sec.}%
  3760. \def\@permissionCodeOne{2471-2566}%
  3761. \or % TOPLAS
  3762. \def\@journalName{ACM Transactions on Programming Languages and Systems}%
  3763. \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
  3764. \def\@permissionCodeOne{0164-0925}%
  3765. \or % TOS
  3766. \def\@journalName{ACM Transactions on Storage}%
  3767. \def\@journalNameShort{ACM Trans. Storage}%
  3768. \def\@permissionCodeOne{1553-3077}%
  3769. \or % TOSEM
  3770. \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
  3771. \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
  3772. \def\@permissionCodeOne{1049-331X}%
  3773. \or % TOSN
  3774. \def\@journalName{ACM Transactions on Sensor Networks}%
  3775. \def\@journalNameShort{ACM Trans. Sensor Netw.}%
  3776. \def\@permissionCodeOne{1550-4859}%
  3777. \or % TQC
  3778. \def\@journalName{ACM Transactions on Quantum Computing}%
  3779. \def\@journalNameShort{ACM Trans. Quantum Comput.}%
  3780. \def\@permissionCodeOne{2643-6817}%
  3781. \or % TRETS
  3782. \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
  3783. \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
  3784. \def\@permissionCodeOne{1936-7406}%
  3785. \or % TSAS
  3786. \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
  3787. \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
  3788. \def\@permissionCodeOne{2374-0353}%
  3789. \or % TSC
  3790. \def\@journalName{ACM Transactions on Social Computing}%
  3791. \def\@journalNameShort{ACM Trans. Soc. Comput.}%
  3792. \def\@permissionCodeOne{2469-7818}%
  3793. \or % TSLP
  3794. \def\@journalName{ACM Transactions on Speech and Language Processing}%
  3795. \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
  3796. \def\@permissionCodeOne{1550-4875}%
  3797. \or % TWEB
  3798. \def\@journalName{ACM Transactions on the Web}%
  3799. \def\@journalNameShort{ACM Trans. Web}%
  3800. \def\@permissionCodeOne{1559-1131}%
  3801. \else % FACMP, a dummy journal
  3802. \def\@journalName{Forthcoming ACM Publication}%
  3803. \def\@journalNameShort{ACM Forthcoming}%
  3804. \def\@permissionCodeOne{XXXX-XXXX}%
  3805. \fi
  3806. \ClassInfo{\@classname}{Using journal code \@journalCode}%
  3807. }{%
  3808. \ClassError{\@classname}{Incorrect journal #1}%
  3809. }%
  3810. % \end{macrocode}
  3811. % \begin{macro}{\acmJournal}
  3812. % \changes{v1.59}{2019/04/20}{Setting \cs{@ACM@journal@bibstrip}}
  3813. % And the syntactic sugar around it
  3814. % \begin{macrocode}
  3815. \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}%
  3816. \global\@ACM@journal@bibstriptrue}
  3817. % \end{macrocode}
  3818. %
  3819. % \end{macro}
  3820. %
  3821. % The defaults:
  3822. % \begin{macrocode}
  3823. \def\@journalCode@nr{0}
  3824. \def\@journalName{}%
  3825. \def\@journalNameShort{\@journalName}%
  3826. \def\@permissionCodeOne{XXXX-XXXX}%
  3827. \def\@permissionCodeTwo{}%
  3828. % \end{macrocode}
  3829. %
  3830. %
  3831. % \begin{macro}{\acmConference}
  3832. % \changes{v1.59}{2019/04/20}{Setting \cs{@ACM@journal@bibstrip}}
  3833. % This is the conference command
  3834. % \begin{macrocode}
  3835. \newcommand\acmConference[4][]{%
  3836. \gdef\acmConference@shortname{#1}%
  3837. \gdef\acmConference@name{#2}%
  3838. \gdef\acmConference@date{#3}%
  3839. \gdef\acmConference@venue{#4}%
  3840. \ifx\acmConference@shortname\@empty
  3841. \gdef\acmConference@shortname{#2}%
  3842. \fi
  3843. \global\@ACM@journal@bibstripfalse
  3844. }
  3845. \if@ACM@journal\else
  3846. \acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
  3847. DC, USA}%
  3848. \fi
  3849. % \end{macrocode}
  3850. %
  3851. % \end{macro}
  3852. %
  3853. % \begin{macro}{\acmBooktitle}
  3854. % \changes{v1.44}{2017/08/11}{Added macro}
  3855. % \begin{macro}{\@acmBooktitle}
  3856. % \changes{v1.44}{2017/08/11}{Added macro}
  3857. % The book title of the conference:
  3858. % \begin{macrocode}
  3859. \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
  3860. \acmBooktitle{Proceedings of \acmConference@name
  3861. \ifx\acmConference@name\acmConference@shortname\else
  3862. \ (\acmConference@shortname)\fi}
  3863. % \end{macrocode}
  3864. %
  3865. % \end{macro}
  3866. % \end{macro}
  3867. %
  3868. % \begin{macro}{\@editorsAbbrev}
  3869. % \changes{v1.44}{2017/08/11}{Added macro}
  3870. % How to abbreviate editors
  3871. % \begin{macrocode}
  3872. \def\@editorsAbbrev{(Ed.)}
  3873. % \end{macrocode}
  3874. %
  3875. % \end{macro}
  3876. %
  3877. % \begin{macro}{\@acmEditors}
  3878. % \changes{v1.44}{2017/08/11}{Added macro}
  3879. % The list of editors
  3880. % \begin{macrocode}
  3881. \def\@acmEditors{}
  3882. % \end{macrocode}
  3883. %
  3884. % \end{macro}
  3885. %
  3886. % \begin{macro}{\editor}
  3887. % \changes{v1.44}{2017/08/11}{Added macro}
  3888. % Add a new editor to the list
  3889. % \begin{macrocode}
  3890. \def\editor#1{\ifx\@acmEditors\@empty
  3891. \gdef\@acmEditors{#1}%
  3892. \else
  3893. \gdef\@editorsAbbrev{(Eds.)}%
  3894. \g@addto@macro\@acmEditors{\and#1}%
  3895. \fi}
  3896. % \end{macrocode}
  3897. %
  3898. % \end{macro}
  3899. %
  3900. % \begin{macro}{\subtitle}
  3901. % The subtitle macro
  3902. % \begin{macrocode}
  3903. \def\subtitle#1{\def\@subtitle{#1}}
  3904. \subtitle{}
  3905. % \end{macrocode}
  3906. %
  3907. % \end{macro}
  3908. %
  3909. %
  3910. % \begin{macro}{\num@authorgroups}
  3911. % \changes{v1.15}{2016/06/25}{Renamed}
  3912. % The total number of ``groups''. Each group is several authors with
  3913. % the same affiliations(s)
  3914. % \begin{macrocode}
  3915. \newcount\num@authorgroups
  3916. \num@authorgroups=0\relax
  3917. % \end{macrocode}
  3918. %
  3919. % \end{macro}
  3920. %
  3921. % \begin{macro}{\num@authors}
  3922. % \changes{v1.46}{2017/08/27}{Introduced macro}
  3923. % The total number of authors
  3924. % \begin{macrocode}
  3925. \newcount\num@authors
  3926. \num@authors=0\relax
  3927. % \end{macrocode}
  3928. %
  3929. % \end{macro}
  3930. %
  3931. %
  3932. %
  3933. %
  3934. % \begin{macro}{\if@insideauthorgroup}
  3935. % \changes{v1.15}{2016/06/25}{Introduced macro}
  3936. % Whether we are continuing an author group
  3937. % \begin{macrocode}
  3938. \newif\if@insideauthorgroup
  3939. \@insideauthorgroupfalse
  3940. % \end{macrocode}
  3941. %
  3942. % \end{macro}
  3943. %
  3944. % \begin{macro}{\author}
  3945. % \changes{v1.15}{2016/06/25}{Added code for author groups}
  3946. % \changes{v1.46}{2017/08/27}{Started counting authors}
  3947. % \changes{v1.54}{2018/06/23}{Added submission id in anonymous mode}
  3948. % \changes{v1.57}{2018/12/09}{Added warning if \cs{author} has comma}
  3949. % Adding an author to the list of authors and addresses
  3950. % \begin{macrocode}
  3951. \renewcommand\author[2][]{%
  3952. \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
  3953. authors in the same \string\author\space macro!}}{}%
  3954. \global\advance\num@authors by 1\relax
  3955. \if@insideauthorgroup\else
  3956. \global\advance\num@authorgroups by 1\relax
  3957. \global\@insideauthorgrouptrue
  3958. \fi
  3959. \ifx\addresses\@empty
  3960. \if@ACM@anonymous
  3961. \gdef\addresses{\@author{Anonymous Author(s)%
  3962. \ifx\@acmSubmissionID\@empty\else\\Submission Id:
  3963. \@acmSubmissionID\fi}}%
  3964. \gdef\authors{Anonymous Author(s)}%
  3965. \else
  3966. \gdef\addresses{\@author{#2}}%
  3967. \gdef\authors{#2}%
  3968. \fi
  3969. \else
  3970. \if@ACM@anonymous\else
  3971. \g@addto@macro\addresses{\and\@author{#2}}%
  3972. \g@addto@macro\authors{\and#2}%
  3973. \fi
  3974. \fi
  3975. \if@ACM@anonymous
  3976. \ifx\shortauthors\@empty
  3977. \gdef\shortauthors{Anon.
  3978. \ifx\@acmSubmissionID\@empty\else Submission Id:
  3979. \@acmSubmissionID\fi}%
  3980. \fi
  3981. \else
  3982. \def\@tempa{#1}%
  3983. \ifx\@tempa\@empty
  3984. \ifx\shortauthors\@empty
  3985. \gdef\shortauthors{#2}%
  3986. \else
  3987. \g@addto@macro\shortauthors{\and#2}%
  3988. \fi
  3989. \else
  3990. \ifx\shortauthors\@empty
  3991. \gdef\shortauthors{#1}%
  3992. \else
  3993. \g@addto@macro\shortauthors{\and#1}%
  3994. \fi
  3995. \fi
  3996. \fi}
  3997. % \end{macrocode}
  3998. %
  3999. % \end{macro}
  4000. %
  4001. %
  4002. % \begin{macro}{\affiliation}
  4003. % \changes{v1.15}{2016/06/25}{Added code for author groups}
  4004. % The macro \cs{affiliation} mimics \cs{address} from |amsart|.
  4005. % Note that it has an optional argument, which we use differently
  4006. % from |amsart|.
  4007. % \begin{macrocode}
  4008. \newcommand{\affiliation}[2][]{%
  4009. \global\@insideauthorgroupfalse
  4010. \if@ACM@anonymous\else
  4011. \g@addto@macro\addresses{\affiliation{#1}{#2}}%
  4012. \fi}
  4013. % \end{macrocode}
  4014. %
  4015. % \end{macro}
  4016. %
  4017. % \begin{macro}{\if@ACM@affiliation@obeypunctuation}
  4018. % \changes{v1.33}{2017/03/28}{Added macro}
  4019. % Whether to use the author's punctuation (false by default, which adds
  4020. % American-style address punctuation)
  4021. % \begin{macrocode}
  4022. \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
  4023. [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}
  4024. % \end{macrocode}
  4025. %
  4026. % \end{macro}
  4027. %
  4028. %
  4029. %
  4030. % \begin{macro}{\additionalaffiliation}
  4031. % \changes{v1.31}{2017/03/04}{Added macro}
  4032. % Additional affiliations go to footnotes
  4033. % \begin{macrocode}
  4034. \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
  4035. % \end{macrocode}
  4036. %
  4037. % \end{macro}
  4038. %
  4039. % \begin{macro}{\@additionalaffiliation}
  4040. % \changes{v1.31}{2017/03/04}{Added macro}
  4041. % Process \cs{additionalaffiliation} inside \cs{authornote}
  4042. % \begin{macrocode}
  4043. \def\@additionalaffiliation#1{\bgroup
  4044. \def\position##1{\ignorespaces}%
  4045. \def\institution##1{##1\ignorespaces}%
  4046. \def\department{\@ifnextchar[{\@department}{\@department[]}}%
  4047. \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
  4048. \let\streetaddress\position
  4049. \let\city\position
  4050. \let\state\position
  4051. \let\postcode\position
  4052. \let\country\position
  4053. Also with #1\unskip.\egroup}
  4054. % \end{macrocode}
  4055. % \end{macro}
  4056. %
  4057. % \begin{macro}{\email}
  4058. % \changes{v1.57}{2018/12/09}{Added warning if \cs{author} has comma}
  4059. % The macro \cs{email} mimics \cs{email} from |amsart|.
  4060. % Again, it has an optional argument that we do not currently need
  4061. % but keep for possible future use.
  4062. % \begin{macrocode}
  4063. \renewcommand{\email}[2][]{%
  4064. \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
  4065. addresses in the same \string\email\space macro!}}{}%
  4066. \if@ACM@anonymous\else
  4067. \g@addto@macro\addresses{\email{#1}{#2}}%
  4068. \fi}
  4069. % \end{macrocode}
  4070. %
  4071. % \end{macro}
  4072. %
  4073. % \begin{macro}{\orcid}
  4074. % \changes{v1.15}{2016/06/25}{Introduced macro}
  4075. % Right now we do not typeset ORCIDs
  4076. % \begin{macrocode}
  4077. \def\orcid#1{\unskip\ignorespaces}
  4078. % \end{macrocode}
  4079. %
  4080. % \end{macro}
  4081. %
  4082. % \begin{macro}{\authorsaddresses}
  4083. % \changes{v1.46}{2017/08/27}{Introduced macro}
  4084. % Setting up authors' addresses
  4085. % \begin{macrocode}
  4086. \def\authorsaddresses#1{\def\@authorsaddresses{#1}}
  4087. \authorsaddresses{\@mkauthorsaddresses}
  4088. % \end{macrocode}
  4089. %
  4090. % \end{macro}
  4091. %
  4092. %
  4093. % \begin{macro}{\@titlenotes}
  4094. % The title notes
  4095. % \begin{macrocode}
  4096. \def\@titlenotes{}
  4097. % \end{macrocode}
  4098. %
  4099. % \end{macro}
  4100. %
  4101. % \begin{macro}{\titlenote}
  4102. % Adding a note to the title
  4103. % \begin{macrocode}
  4104. \def\titlenote#1{%
  4105. \g@addto@macro\@title{\footnotemark}%
  4106. \if@ACM@anonymous
  4107. \g@addto@macro\@titlenotes{%
  4108. \stepcounter{footnote}\footnotetext{Title note}}%
  4109. \else
  4110. \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
  4111. \fi}
  4112. % \end{macrocode}
  4113. %
  4114. % \end{macro}
  4115. %
  4116. % \begin{macro}{\@subtitlenotes}
  4117. % The subtitle notes
  4118. % \begin{macrocode}
  4119. \def\@subtitlenotes{}
  4120. % \end{macrocode}
  4121. %
  4122. % \end{macro}
  4123. %
  4124. % \begin{macro}{\subtitlenote}
  4125. % Adding a note to the subtitle
  4126. % \begin{macrocode}
  4127. \def\subtitlenote#1{%
  4128. \g@addto@macro\@subtitle{\footnotemark}%
  4129. \if@ACM@anonymous
  4130. \g@addto@macro\@subtitlenotes{%
  4131. \stepcounter{footnote}\footnotetext{Subtitle note}}%
  4132. \else
  4133. \g@addto@macro\@subtitlenotes{%
  4134. \stepcounter{footnote}\footnotetext{#1}}%
  4135. \fi}
  4136. % \end{macrocode}
  4137. %
  4138. % \end{macro}
  4139. %
  4140. % \begin{macro}{\@authornotes}
  4141. % The author notes
  4142. % \begin{macrocode}
  4143. \def\@authornotes{}
  4144. % \end{macrocode}
  4145. %
  4146. % \end{macro}
  4147. %
  4148. %
  4149. % \begin{macro}{\authornote}
  4150. % Adding a note to the author
  4151. % \begin{macrocode}
  4152. \def\authornote#1{%
  4153. \if@ACM@anonymous\else
  4154. \g@addto@macro\addresses{\@authornotemark}%
  4155. \g@addto@macro\@authornotes{%
  4156. \stepcounter{footnote}\footnotetext{#1}}%
  4157. \fi}
  4158. % \end{macrocode}
  4159. %
  4160. % \end{macro}
  4161. %
  4162. % \begin{macro}{\authornotemark}
  4163. % \changes{v1.39}{2017/05/14}{Added macro}
  4164. % Adding a footnote mark to the authors
  4165. % \begin{macrocode}
  4166. \newcommand\authornotemark[1][\relax]{%
  4167. \ifx#1\relax\relax\relax
  4168. \g@addto@macro\addresses{\@authornotemark}%
  4169. \else
  4170. \g@addto@macro\addresses{\@@authornotemark{#1}}%
  4171. \fi}
  4172. % \end{macrocode}
  4173. %
  4174. % \end{macro}
  4175. %
  4176. % \begin{macro}{\acmVolume}
  4177. % \changes{v1.17}{2016/07/10}{The default is now numerical}
  4178. % The current volume
  4179. % \begin{macrocode}
  4180. \def\acmVolume#1{\def\@acmVolume{#1}}
  4181. \acmVolume{1}
  4182. % \end{macrocode}
  4183. %
  4184. % \end{macro}
  4185. %
  4186. % \begin{macro}{\acmNumber}
  4187. % \changes{v1.17}{2016/07/10}{The default is now numerical}
  4188. % The current number
  4189. % \begin{macrocode}
  4190. \def\acmNumber#1{\def\@acmNumber{#1}}
  4191. \acmNumber{1}
  4192. % \end{macrocode}
  4193. %
  4194. % \end{macro}
  4195. %
  4196. % \begin{macro}{\acmArticle}
  4197. % \changes{v1.17}{2016/07/10}{The default is now numerical}
  4198. % \changes{v1.44}{2017/08/111}{The default is now empty}
  4199. % The current article
  4200. % \begin{macrocode}
  4201. \def\acmArticle#1{\def\@acmArticle{#1}}
  4202. \acmArticle{}
  4203. % \end{macrocode}
  4204. %
  4205. % \end{macro}
  4206. %
  4207. % \begin{macro}{\acmArticleSeq}
  4208. % \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
  4209. % \changes{v1.44}{2017/08/11}{Now acmArticle might be empty}
  4210. % The sequence number
  4211. % \begin{macrocode}
  4212. \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
  4213. \acmArticleSeq{\@acmArticle}
  4214. % \end{macrocode}
  4215. %
  4216. % \end{macro}
  4217. %
  4218. % \begin{macro}{\acmYear}
  4219. % \changes{v1.17}{2016/07/10}{The default is now numerical}
  4220. % \changes{v1.31}{2017/03/04}{The default now is the current year
  4221. % (Matteo Riondato)}
  4222. % The current year
  4223. % \begin{macrocode}
  4224. \def\acmYear#1{\def\@acmYear{#1}}
  4225. \acmYear{\the\year}
  4226. % \end{macrocode}
  4227. %
  4228. % \end{macro}
  4229. %
  4230. % \begin{macro}{\acmMonth}
  4231. % \changes{v1.17}{2016/07/09}{The default must be numerical. Closes \#50.}
  4232. % \changes{v1.31}{2017/03/04}{The default now is the current month
  4233. % (Matteo Riondato)}
  4234. % The current month
  4235. % \begin{macrocode}
  4236. \def\acmMonth#1{\def\@acmMonth{#1}}
  4237. \acmMonth{\the\month}
  4238. % \end{macrocode}
  4239. %
  4240. % \end{macro}
  4241. %
  4242. %
  4243. % \begin{macro}{\@acmPubDate}
  4244. % The publication date
  4245. % \begin{macrocode}
  4246. \def\@acmPubDate{\ifcase\@acmMonth\or
  4247. January\or February\or March\or April\or May\or June\or
  4248. July\or August\or September\or October\or November\or
  4249. December\fi~\@acmYear}
  4250. % \end{macrocode}
  4251. %
  4252. % \end{macro}
  4253. %
  4254. % \begin{macro}{\acmPrice}
  4255. % The price
  4256. % \begin{macrocode}
  4257. \def\acmPrice#1{\def\@acmPrice{#1}}
  4258. \acmPrice{15.00}
  4259. % \end{macrocode}
  4260. %
  4261. % \end{macro}
  4262. %
  4263. %
  4264. % \begin{macro}{\acmSubmissionID}
  4265. % \changes{v1.33}{2017/03/29}{Added macro}
  4266. % The submission ID
  4267. % \begin{macrocode}
  4268. \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
  4269. \acmSubmissionID{}
  4270. % \end{macrocode}
  4271. %
  4272. % \end{macro}
  4273. %
  4274. %
  4275. % \begin{macro}{\acmISBN}
  4276. % \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
  4277. % The book ISBN
  4278. % \begin{macrocode}
  4279. \def\acmISBN#1{\def\@acmISBN{#1}}
  4280. \acmISBN{978-x-xxxx-xxxx-x/YY/MM}
  4281. % \end{macrocode}
  4282. %
  4283. % \end{macro}
  4284. %
  4285. % \begin{macro}{\acmDOI}
  4286. % \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
  4287. % The paper DOI
  4288. % \begin{macrocode}
  4289. \def\acmDOI#1{\def\@acmDOI{#1}}
  4290. \acmDOI{10.1145/nnnnnnn.nnnnnnn}
  4291. % \end{macrocode}
  4292. %
  4293. % \end{macro}
  4294. %
  4295. % \begin{macro}{\if@ACM@badge}
  4296. % \changes{v1.06}{2016/05/01}{Added macro}
  4297. % Whether to print a badge. Note that either a left or right badge
  4298. % triggers it:
  4299. % \begin{macrocode}
  4300. \newif\if@ACM@badge
  4301. \@ACM@badgefalse
  4302. % \end{macrocode}
  4303. %
  4304. % \end{macro}
  4305. %
  4306. % \begin{macro}{\@ACM@badge@width}
  4307. % \changes{v1.06}{2016/05/01}{Added macro}
  4308. % The width of the badge
  4309. % \begin{macrocode}
  4310. \newlength\@ACM@badge@width
  4311. \setlength\@ACM@badge@width{5pc}
  4312. % \end{macrocode}
  4313. %
  4314. % \end{macro}
  4315. %
  4316. %
  4317. % \begin{macro}{\@ACM@title@width}
  4318. % \changes{v1.06}{2016/05/01}{Added macro}
  4319. % The width of the badge
  4320. % \begin{macrocode}
  4321. \newlength\@ACM@title@width
  4322. % \end{macrocode}
  4323. %
  4324. % \end{macro}
  4325. %
  4326. %
  4327. % \begin{macro}{\@ACM@badge@skip}
  4328. % \changes{v1.06}{2016/05/01}{Added macro}
  4329. % The space between the badge and the title
  4330. % \begin{macrocode}
  4331. \newlength\@ACM@badge@skip
  4332. \setlength\@ACM@badge@skip{1pc}
  4333. % \end{macrocode}
  4334. %
  4335. % \end{macro}
  4336. %
  4337. % \begin{macro}{\acmBadgeR}
  4338. % \changes{v1.06}{2016/05/01}{Added macro}
  4339. % Setting the right badge
  4340. % \begin{macrocode}
  4341. \newcommand\acmBadgeR[2][]{\@ACM@badgetrue
  4342. \def\@acmBadgeR@url{#1}%
  4343. \def\@acmBadgeR@image{#2}}
  4344. \def\@acmBadgeR@url{}
  4345. \def\@acmBadgeR@image{}
  4346. % \end{macrocode}
  4347. %
  4348. % \end{macro}
  4349. %
  4350. % \begin{macro}{\acmBadgeL}
  4351. % \changes{v1.06}{2016/05/01}{Added macro}
  4352. % Setting the left badge
  4353. % \begin{macrocode}
  4354. \newcommand\acmBadgeL[2][]{\@ACM@badgetrue
  4355. \def\@acmBadgeL@url{#1}%
  4356. \def\@acmBadgeL@image{#2}}
  4357. \def\@acmBadgeL@url{}
  4358. \def\@acmBadgeL@image{}
  4359. % \end{macrocode}
  4360. %
  4361. % \end{macro}
  4362. %
  4363. %
  4364. % \begin{macro}{\startPage}
  4365. % The start page of the paper
  4366. % \begin{macrocode}
  4367. \def\startPage#1{\def\@startPage{#1}}
  4368. \startPage{}
  4369. % \end{macrocode}
  4370. %
  4371. % \end{macro}
  4372. %
  4373. % \begin{macro}{\terms}
  4374. % \changes{v1.34}{2017/04/09}{The \cs{terms} command now just produces
  4375. % a warning}
  4376. % Terms are obsolete. We use CCS now.
  4377. % \begin{macrocode}
  4378. \def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
  4379. obsolete. I am going to ignore it}}
  4380. % \end{macrocode}
  4381. %
  4382. % \end{macro}
  4383. %
  4384. % \begin{macro}{\keywords}
  4385. % Keywords are mostly obsolete. We use CCS now. Still it makes
  4386. % sense to keep them for compatibility.
  4387. % \begin{macrocode}
  4388. \def\keywords#1{\def\@keywords{#1}}
  4389. \keywords{}
  4390. % \end{macrocode}
  4391. %
  4392. % \end{macro}
  4393. %
  4394. %
  4395. % \begin{macro}{abstract}
  4396. % The |amsart| package puts |abstract| in a box. Since we do not
  4397. % know whether we will use two-column mode, we prefer to save the text
  4398. % \begin{macrocode}
  4399. \renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
  4400. % \end{macrocode}
  4401. %
  4402. % \end{macro}
  4403. %
  4404. % \begin{macro}{\@saveabstract}
  4405. % And saving the abstract
  4406. % \begin{macrocode}
  4407. \long\def\@saveabstract#1{\if@ACM@maketitle@typeset
  4408. \ClassError{\@classname}{Abstract must be defined before maketitle
  4409. command. Please move it!}\fi
  4410. \long\gdef\@abstract{#1}}
  4411. \@saveabstract{}
  4412. % \end{macrocode}
  4413. %
  4414. % \end{macro}
  4415. %
  4416. % \begin{macro}{\@lempty}
  4417. % The long version of \cs{@empty} (to compare with \cs{@abstract})
  4418. % \begin{macrocode}
  4419. \long\def\@lempty{}
  4420. % \end{macrocode}
  4421. %
  4422. % \end{macro}
  4423. %
  4424. % \begin{macro}{\if@ACM@printccs}
  4425. % \changes{v1.27}{2016/12/29}{Typo corrected}
  4426. % Whether to print CCS
  4427. % \begin{macrocode}
  4428. \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
  4429. \if@ACM@printccs
  4430. \ClassInfo{\@classname}{Printing CCS}%
  4431. \else
  4432. \ClassInfo{\@classname}{Suppressing CCS}%
  4433. \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}
  4434. % \end{macrocode}
  4435. %
  4436. % \end{macro}
  4437. % \begin{macro}{\if@ACM@printacmref}
  4438. % \changes{v1.17}{2016/07/10}{Renamed from \cs{if@ACM@printbib}}
  4439. % Whether to print the ACM bibstrip
  4440. % \begin{macrocode}
  4441. \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
  4442. \if@ACM@printacmref
  4443. \ClassInfo{\@classname}{Printing bibformat}%
  4444. \else
  4445. \ClassInfo{\@classname}{Suppressing bibformat}%
  4446. \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}
  4447. % \end{macrocode}
  4448. %
  4449. % \end{macro}
  4450. %
  4451. % \begin{macro}{\if@ACM@printfolios}
  4452. % \changes{v1.13}{2016/06/06}{Added macro}
  4453. % Whether to print folios
  4454. % \begin{macrocode}
  4455. \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
  4456. \if@ACM@printfolios
  4457. \ClassInfo{\@classname}{Printing folios}%
  4458. \else
  4459. \ClassInfo{\@classname}{Suppressing folios}%
  4460. \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}
  4461. % \end{macrocode}
  4462. % \end{macro}
  4463. %
  4464. % \begin{macro}{\@ACM@authorsperrow}
  4465. % \changes{v1.36}{2017/05/13}{Added macro}
  4466. % The number of authors per row. 0 means use the default algorithm.
  4467. % \begin{macrocode}
  4468. \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
  4469. \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
  4470. #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
  4471. numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
  4472. % \end{macrocode}
  4473. %
  4474. % \end{macro}
  4475. %
  4476. % \begin{macro}{\settopmatter}
  4477. % The usual syntactic sugar
  4478. % \begin{macrocode}
  4479. \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
  4480. % \end{macrocode}
  4481. %
  4482. % \end{macro}
  4483. %
  4484. %
  4485. % \changes{v1.13}{2016/06/06}{Print bibliographic information by
  4486. % default for the proceedings}
  4487. % Now the settings
  4488. % \begin{macrocode}
  4489. \settopmatter{printccs=true, printacmref=true}
  4490. \if@ACM@manuscript
  4491. \settopmatter{printfolios=true}
  4492. \else
  4493. \if@ACM@journal
  4494. \settopmatter{printfolios=true}
  4495. \else
  4496. \settopmatter{printfolios=false}
  4497. \fi
  4498. \fi
  4499. \settopmatter{authorsperrow=0}
  4500. % \end{macrocode}
  4501. %
  4502. % \begin{macro}{\@received}
  4503. % The container for the paper history
  4504. % \begin{macrocode}
  4505. \def\@received{}
  4506. % \end{macrocode}
  4507. %
  4508. % \end{macro}
  4509. %
  4510. % \begin{macro}{\received}
  4511. % The \cs{received} command
  4512. % \begin{macrocode}
  4513. \newcommand\received[2][]{\def\@tempa{#1}%
  4514. \ifx\@tempa\@empty
  4515. \ifx\@received\@empty
  4516. \gdef\@received{Received #2}%
  4517. \else
  4518. \g@addto@macro{\@received}{; revised #2}%
  4519. \fi
  4520. \else
  4521. \ifx\@received\@empty
  4522. \gdef\@received{#1 #2}%
  4523. \else
  4524. \g@addto@macro{\@received}{; #1 #2}%
  4525. \fi
  4526. \fi}
  4527. \AtEndDocument{%
  4528. \ifx\@received\@empty\else
  4529. \par\bigskip\noindent\small\normalfont\@received\par
  4530. \fi}
  4531. % \end{macrocode}
  4532. %
  4533. % \end{macro}
  4534. %
  4535. %\subsection{Concepts system}
  4536. %\label{sec:concepts}
  4537. %
  4538. % We exclude |CCSXML| stuff generated by the ACM system:
  4539. % \begin{macrocode}
  4540. \RequirePackage{comment}
  4541. \excludecomment{CCSXML}
  4542. % \end{macrocode}
  4543. %
  4544. % \begin{macro}{\@concepts}
  4545. % This is the storage macro and counter for concepts
  4546. % \begin{macrocode}
  4547. \let\@concepts\@empty
  4548. \newcounter{@concepts}
  4549. % \end{macrocode}
  4550. %
  4551. % \end{macro}
  4552. %
  4553. % \begin{macro}{\ccsdesc}
  4554. % \changes{v1.40}{2017/05/27}{Now we can parse |Significance~General| nodes}
  4555. % The first argument is the significance, the second is the
  4556. % concept(s)
  4557. % \begin{macrocode}
  4558. \newcommand\ccsdesc[2][100]{%
  4559. \ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
  4560. % \end{macrocode}
  4561. %
  4562. % \end{macro}
  4563. %
  4564. % \begin{macro}{\ccsdesc@parse}
  4565. % \changes{v1.28}{2017/01/04}{Change from \cs{to} to
  4566. % \cs{textrightarrow} (Matteo Riondato)}
  4567. % \changes{v1.29}{2017/01/22}{Add spacing after bullet and around
  4568. % rightarrow; semicolon separators no longer in bold/italic (John Wickerson)}
  4569. % \changes{v1.40}{2017/05/27}{Now we can parse |Significance~General| nodes}
  4570. % \changes{v1.56}{2018/10/23}{End the concepts list with a period
  4571. % (Philip Quinn)}
  4572. % The parser of the expression |Significance~General~Specific| (we need
  4573. % |textcomp| for |\textrightarrow|). Note that |Specific| can be empty!
  4574. % \begin{macrocode}
  4575. \RequirePackage{textcomp}
  4576. \def\ccsdesc@parse#1~#2~#3~{%
  4577. \stepcounter{@concepts}%
  4578. \expandafter\ifx\csname CCS@General@#2\endcsname\relax
  4579. \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
  4580. \textbf{#2}}%
  4581. \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
  4582. \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
  4583. \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
  4584. \csname CCS@Punctuation@#2\endcsname
  4585. \csname CCS@Specific@#2\endcsname}%
  4586. \fi
  4587. \ifx#3\relax\relax\else
  4588. \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
  4589. \textrightarrow\ }%
  4590. \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
  4591. \addtocounter{@concepts}{-1}%
  4592. \ifnum#1>499\textbf{#3}\else
  4593. \ifnum#1>299\textit{#3}\else
  4594. #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}%
  4595. \fi
  4596. \ccsdesc@parse@finish}
  4597. % \end{macrocode}
  4598. %
  4599. % \end{macro}
  4600. %
  4601. % \begin{macro}{\ccdesc@parse@finish}
  4602. % \changes{v1.40}{2017/05/27}{Added macro}
  4603. % Gobble everything to |\ccsdesc@parse@end|
  4604. % \begin{macrocode}
  4605. \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
  4606. % \end{macrocode}
  4607. %
  4608. % \end{macro}
  4609. %
  4610. %\subsection{Copyright system}
  4611. %\label{sec:copyright}
  4612. %
  4613. % This is from |acmcopyright.sty|
  4614. %
  4615. % \begin{macro}{\if@printcopyright}
  4616. % Whether to print a copyright symbol
  4617. % \begin{macrocode}
  4618. \newif\if@printcopyright
  4619. \@printcopyrighttrue
  4620. % \end{macrocode}
  4621. %
  4622. % \end{macro}
  4623. %
  4624. % \begin{macro}{\if@printpermission}
  4625. % Whether to print the permission block
  4626. % \begin{macrocode}
  4627. \newif\if@printpermission
  4628. \@printpermissiontrue
  4629. % \end{macrocode}
  4630. %
  4631. % \end{macro}
  4632. %
  4633. % \begin{macro}{\if@acmowned}
  4634. % Whether the ACM owns the rights to the paper
  4635. % \begin{macrocode}
  4636. \newif\if@acmowned
  4637. \@acmownedtrue
  4638. % \end{macrocode}
  4639. %
  4640. % \end{macro}
  4641. %
  4642. % \changes{v1.10}{2016/05/22}{Changes of `licensedothergov' wording}
  4643. % \changes{v1.35}{2017/04/22}{If the copyright is set to usgov or
  4644. % rigtsretained, the price is suppressed}
  4645. % \changes{v1.51}{2018/04/05}{Suppress price if the copyright is set
  4646. % to iw3c2w3 or iw3c2w3g}
  4647. % \changes{v1.51}{2018/04/05}{Corrected the bug with price suppression}
  4648. % Keys:
  4649. % \begin{macrocode}
  4650. \define@choicekey*{ACM@}{acmcopyrightmode}[%
  4651. \acm@copyrightinput\acm@copyrightmode]{none,%
  4652. acmcopyright,acmlicensed,rightsretained,%
  4653. usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
  4654. licensedcagov,licensedcagovmixed,othergov,licensedothergov,%
  4655. iw3c2w3,iw3c2w3g}{%
  4656. \@printpermissiontrue
  4657. \@printcopyrighttrue
  4658. \@acmownedtrue
  4659. \ifnum\acm@copyrightmode=0\relax % none
  4660. \@printpermissionfalse
  4661. \@printcopyrightfalse
  4662. \@acmownedfalse
  4663. \fi
  4664. \ifnum\acm@copyrightmode=2\relax % acmlicensed
  4665. \@acmownedfalse
  4666. \fi
  4667. \ifnum\acm@copyrightmode=3\relax % rightsretained
  4668. \@acmownedfalse
  4669. \AtBeginDocument{\acmPrice{}}%
  4670. \fi
  4671. \ifnum\acm@copyrightmode=4\relax % usgov
  4672. \@printpermissiontrue
  4673. \@printcopyrightfalse
  4674. \@acmownedfalse
  4675. \AtBeginDocument{\acmPrice{}}%
  4676. \fi
  4677. \ifnum\acm@copyrightmode=6\relax % cagov
  4678. \@acmownedfalse
  4679. \fi
  4680. \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
  4681. \@acmownedfalse
  4682. \fi
  4683. \ifnum\acm@copyrightmode=9\relax % licensedcagov
  4684. \@acmownedfalse
  4685. \fi
  4686. \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
  4687. \@acmownedfalse
  4688. \fi
  4689. \ifnum\acm@copyrightmode=11\relax % othergov
  4690. \@acmownedtrue
  4691. \fi
  4692. \ifnum\acm@copyrightmode=12\relax % licensedothergov
  4693. \@acmownedfalse
  4694. \fi
  4695. \ifnum\acm@copyrightmode=13\relax % iw3c2w3
  4696. \@acmownedfalse
  4697. \AtBeginDocument{\acmPrice{}}%
  4698. \fi
  4699. \ifnum\acm@copyrightmode=14\relax % iw3c2w3g
  4700. \@acmownedfalse
  4701. \AtBeginDocument{\acmPrice{}}%
  4702. \fi}
  4703. % \end{macrocode}
  4704. %
  4705. % \begin{macro}{\setcopyright}
  4706. % This is the syntactic sugar around setting keys.
  4707. % \begin{macrocode}
  4708. \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
  4709. \setcopyright{acmcopyright}
  4710. % \end{macrocode}
  4711. %
  4712. % \end{macro}
  4713. %
  4714. %
  4715. % \begin{macro}{\@copyrightowner}
  4716. % \changes{v1.40}{2017/06/16}{Added new copyright version:
  4717. % licensedcagov}
  4718. % \changes{v1.52}{2018/04/09}{Rewording of licenses}
  4719. % Here is the owner of the copyright
  4720. % \begin{macrocode}
  4721. \def\@copyrightowner{%
  4722. \ifcase\acm@copyrightmode\relax % none
  4723. \or % acmcopyright
  4724. Association for Computing Machinery.
  4725. \or % acmlicensed
  4726. Copyright held by the owner/author(s). Publication rights licensed to
  4727. ACM\@.
  4728. \or % rightsretained
  4729. Copyright held by the owner/author(s).
  4730. \or % usgov
  4731. \or % usgovmixed
  4732. Association for Computing Machinery.
  4733. \or % cagov
  4734. Crown in Right of Canada.
  4735. \or %cagovmixed
  4736. Association for Computing Machinery.
  4737. \or %licensedusgovmixed
  4738. Copyright held by the owner/author(s). Publication rights licensed to
  4739. ACM\@.
  4740. \or % licensedcagov
  4741. Crown in Right of Canada. Publication rights licensed to
  4742. ACM\@.
  4743. \or %licensedcagovmixed
  4744. Copyright held by the owner/author(s). Publication rights licensed to
  4745. ACM\@.
  4746. \or % othergov
  4747. Association for Computing Machinery.
  4748. \or % licensedothergov
  4749. Copyright held by the owner/author(s). Publication rights licensed to
  4750. ACM\@.
  4751. \or % ic2w3www
  4752. IW3C2 (International World Wide Web Conference Committee), published
  4753. under Creative Commons CC-BY~4.0 License.
  4754. \or % ic2w3wwwgoogle
  4755. IW3C2 (International World Wide Web Conference Committee), published
  4756. under Creative Commons CC-BY-NC-ND~4.0 License.
  4757. \fi}
  4758. % \end{macrocode}
  4759. %
  4760. % \end{macro}
  4761. %
  4762. % \begin{macro}{\@formatdoi}
  4763. % \changes{v1.03}{2016/04/22}{Added macro}
  4764. % \changes{v1.32}{2017/04/07}{New doi format}
  4765. % Print a clickable DOI
  4766. % \begin{macrocode}
  4767. \def\@formatdoi#1{\url{https://doi.org/#1}}
  4768. % \end{macrocode}
  4769. %
  4770. % \end{macro}
  4771. %
  4772. % \begin{macro}{\@copyrightpermission}
  4773. % \changes{v1.40}{2017/06/16}{Added new copyright version: licensedcagov}
  4774. % \changes{v1.50}{2018/02/07}{New copyright statements for iw3c2w3[g]}
  4775. % \changes{v1.52}{2018/04/09}{Another rewording of copyright
  4776. % statements for iw3c2w3[g]}
  4777. % The canned permission block.
  4778. % \begin{macrocode}
  4779. \def\@copyrightpermission{%
  4780. \ifcase\acm@copyrightmode\relax % none
  4781. \or % acmcopyright
  4782. Permission to make digital or hard copies of all or part of this
  4783. work for personal or classroom use is granted without fee provided
  4784. that copies are not made or distributed for profit or commercial
  4785. advantage and that copies bear this notice and the full citation on
  4786. the first page. Copyrights for components of this work owned by
  4787. others than ACM must be honored. Abstracting with credit is
  4788. permitted. To copy otherwise, or republish, to post on servers or to
  4789. redistribute to lists, requires prior specific permission
  4790. and\hspace*{.5pt}/or a fee. Request permissions from
  4791. permissions@acm.org.
  4792. \or % acmlicensed
  4793. Permission to make digital or hard copies of all or part of this
  4794. work for personal or classroom use is granted without fee provided
  4795. that copies are not made or distributed for profit or commercial
  4796. advantage and that copies bear this notice and the full citation on
  4797. the first page. Copyrights for components of this work owned by
  4798. others than the author(s) must be honored. Abstracting with credit
  4799. is permitted. To copy otherwise, or republish, to post on servers
  4800. or to redistribute to lists, requires prior specific permission
  4801. and\hspace*{.5pt}/or a fee. Request permissions from
  4802. permissions@acm.org.
  4803. \or % rightsretained
  4804. Permission to make digital or hard copies of part or all of this work
  4805. for personal or classroom use is granted without fee provided that
  4806. copies are not made or distributed for profit or commercial advantage
  4807. and that copies bear this notice and the full citation on the first
  4808. page. Copyrights for third-party components of this work must be
  4809. honored. For all other uses, contact the
  4810. owner\hspace*{.5pt}/author(s).
  4811. \or % usgov
  4812. This paper is authored by an employee(s) of the United States
  4813. Government and is in the public domain. Non-exclusive copying or
  4814. redistribution is allowed, provided that the article citation is
  4815. given and the authors and agency are clearly identified as its
  4816. source.
  4817. \or % usgovmixed
  4818. ACM acknowledges that this contribution was authored or co-authored
  4819. by an employee, contractor, or affiliate of the United States government. As such,
  4820. the United States government retains a nonexclusive, royalty-free right to
  4821. publish or reproduce this article, or to allow others to do so, for
  4822. government purposes only.
  4823. \or % cagov
  4824. This article was authored by employees of the Government of Canada.
  4825. As such, the Canadian government retains all interest in the
  4826. copyright to this work and grants to ACM a nonexclusive,
  4827. royalty-free right to publish or reproduce this article, or to allow
  4828. others to do so, provided that clear attribution is given both to
  4829. the authors and the Canadian government agency employing them.
  4830. Permission to make digital or hard copies for personal or classroom
  4831. use is granted. Copies must bear this notice and the full citation
  4832. on the first page. Copyrights for components of this work owned by
  4833. others than the Canadian Government must be honored. To copy
  4834. otherwise, distribute, republish, or post, requires prior specific
  4835. permission and\hspace*{.5pt}/or a fee. Request permissions from
  4836. permissions@acm.org.
  4837. \or % cagovmixed
  4838. ACM acknowledges that this contribution was co-authored by an
  4839. affiliate of the national government of Canada. As such, the Crown
  4840. in Right of Canada retains an equal interest in the copyright.
  4841. Reprints must include clear attribution to ACM and the author's
  4842. government agency affiliation. Permission to make digital or hard
  4843. copies for personal or classroom use is granted. Copies must bear
  4844. this notice and the full citation on the first page. Copyrights for
  4845. components of this work owned by others than ACM must be honored.
  4846. To copy otherwise, distribute, republish, or post, requires prior
  4847. specific permission and\hspace*{.5pt}/or a fee. Request permissions
  4848. from permissions@acm.org.
  4849. \or % licensedusgovmixed
  4850. Publication rights licensed to ACM\@. ACM acknowledges that this
  4851. contribution was authored or co-authored by an employee, contractor
  4852. or affiliate of the United States government. As such, the
  4853. Government retains a nonexclusive, royalty-free right to publish or
  4854. reproduce this article, or to allow others to do so, for Government
  4855. purposes only.
  4856. \or % licensedcagov
  4857. This article was authored by employees of the Government of Canada.
  4858. As such, the Canadian government retains all interest in the
  4859. copyright to this work and grants to ACM a nonexclusive,
  4860. royalty-free right to publish or reproduce this article, or to allow
  4861. others to do so, provided that clear attribution is given both to
  4862. the authors and the Canadian government agency employing them.
  4863. Permission to make digital or hard copies for personal or classroom
  4864. use is granted. Copies must bear this notice and the full citation
  4865. on the first page. Copyrights for components of this work owned by
  4866. others than the Canadian Government must be honored. To copy
  4867. otherwise, distribute, republish, or post, requires prior specific
  4868. permission and\hspace*{.5pt}/or a fee. Request permissions from
  4869. permissions@acm.org.
  4870. \or % licensedcagovmixed
  4871. Publication rights licensed to ACM\@. ACM acknowledges that this
  4872. contribution was authored or co-authored by an employee, contractor
  4873. or affiliate of the national government of Canada. As such, the
  4874. Government retains a nonexclusive, royalty-free right to publish or
  4875. reproduce this article, or to allow others to do so, for Government
  4876. purposes only.
  4877. \or % othergov
  4878. ACM acknowledges that this contribution was authored or co-authored
  4879. by an employee, contractor or affiliate of a national government. As
  4880. such, the Government retains a nonexclusive, royalty-free right to
  4881. publish or reproduce this article, or to allow others to do so, for
  4882. Government purposes only.
  4883. \or % licensedothergov
  4884. Publication rights licensed to ACM\@. ACM acknowledges that this
  4885. contribution was authored or co-authored by an employee, contractor
  4886. or affiliate of a national government. As such, the Government
  4887. retains a nonexclusive, royalty-free right to publish or reproduce
  4888. this article, or to allow others to do so, for Government purposes
  4889. only.
  4890. \or % iw3c2w3
  4891. This paper is published under the Creative Commons Attribution~4.0
  4892. International (CC-BY~4.0) license. Authors reserve their rights to
  4893. disseminate the work on their personal and corporate Web sites with
  4894. the appropriate attribution.
  4895. \or % iw3c2w3g
  4896. This paper is published under the Creative Commons
  4897. Attribution-NonCommercial-NoDerivs~4.0 International
  4898. (CC-BY-NC-ND~4.0) license. Authors reserve their rights to
  4899. disseminate the work on their personal and corporate Web sites with
  4900. the appropriate attribution.
  4901. \fi}
  4902. % \end{macrocode}
  4903. %
  4904. % \end{macro}
  4905. %
  4906. %
  4907. %
  4908. %
  4909. % \begin{macro}{\copyrightyear}
  4910. % By default, the copyright year is the same as \cs{acmYear}, but
  4911. % one can override this:
  4912. % \begin{macrocode}
  4913. \def\copyrightyear#1{\def\@copyrightyear{#1}}
  4914. \copyrightyear{\@acmYear}
  4915. % \end{macrocode}
  4916. %
  4917. % \end{macro}
  4918. %
  4919. % \begin{macro}{\@teaserfigures}
  4920. % The teaser figures container
  4921. % \begin{macrocode}
  4922. \def\@teaserfigures{}
  4923. % \end{macrocode}
  4924. %
  4925. % \end{macro}
  4926. %
  4927. % \begin{macro}{teaserfigure}
  4928. % The teaser figure
  4929. % \begin{macrocode}
  4930. \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
  4931. % \end{macrocode}
  4932. %
  4933. % \end{macro}
  4934. %
  4935. % \begin{macro}{\@saveteaser}
  4936. % Saving the teaser
  4937. % \begin{macrocode}
  4938. \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
  4939. % \end{macrocode}
  4940. %
  4941. % \end{macro}
  4942. %
  4943. % \begin{macro}{\thanks}
  4944. % We redefine |amsart| \cs{thanks} so the |anonymous| key works
  4945. % \begin{macrocode}
  4946. \renewcommand{\thanks}[1]{%
  4947. \@ifnotempty{#1}{%
  4948. \if@ACM@anonymous
  4949. \g@addto@macro\thankses{\thanks{A note}}%
  4950. \else
  4951. \g@addto@macro\thankses{\thanks{#1}}%
  4952. \fi}}
  4953. % \end{macrocode}
  4954. %
  4955. % \end{macro}
  4956. %
  4957. % \subsection{Typesetting top matter}
  4958. % \label{sec:makefile}
  4959. %
  4960. % \begin{macro}{\mktitle@bx}
  4961. % Some of our formats use a two-column design. Some use a one-column
  4962. % design. In all cases we use a wide title. Thus we typeset the top
  4963. % matter in a special box to be used in the construction
  4964. % \cs{@twocolumn}\oarg{box}.
  4965. % \begin{macrocode}
  4966. \newbox\mktitle@bx
  4967. % \end{macrocode}
  4968. %
  4969. % \end{macro}
  4970. %
  4971. %
  4972. % \begin{macro}{\maketitle}
  4973. % \changes{v1.03}{2016/04/22}{Added special case of authorversion}
  4974. % \changes{v1.07}{2016/05/03}{Corrected a bug with abstract footnotes}
  4975. % \changes{v1.07}{2016/05/03}{Corrected a bug with permssion and
  4976. % footnotes order}
  4977. % \changes{v1.10}{2016/05/23}{Corrected a bug with doi in manuscript
  4978. % and author vertsion,
  4979. % \url{https://github.com/borisveytsman/acmart/issues/36}}
  4980. % \changes{v1.12}{2016/05/30}{Moved thankses to copyrightpermission box}
  4981. % \changes{v1.33}{2017/03/27}{Fixed the bug with figures on top and
  4982. % bottom of the title page, thanks to David Epstein}
  4983. % \changes{v1.34}{2017/04/09}{Deleted `DOI' from doi numbers}
  4984. % \changes{v1.34}{2017/04/09}{Added date to the bibstrip in conf proceedings}
  4985. % \changes{v1.34}{2017/04/09}{The \cs{terms} command is now obsolete}
  4986. % \changes{v1.34}{2017/04/11}{Rearranged bibstrip}
  4987. % \changes{v1.44}{2017/07/30}{Empty DOI or ISBN are not printed (by
  4988. % Michael Ekstrand)}
  4989. % \changes{v1.46}{2017/08/27}{Added authors' addresses}
  4990. % \changes{v1.46}{2017/08/28}{Thankses go before authors' addresses}
  4991. % \changes{v1.48}{2017/09/23}{Added acmart and version info to
  4992. % pdfcreator tag}
  4993. % \changes{v1.48}{2017/10/14}{Suppressed empty DOI (Serguei Mokhov)}
  4994. % \changes{v1.48}{2017/11/18}{Added language and doctitle attributes
  4995. % to PDF (Andreas Reichinger)}
  4996. % \changes{v1.55}{2018/10/14}{Fixes topnum}
  4997. % \changes{v1.58}{2019/01/23}{Original \cs{vspace} inside
  4998. % \cs{maketitle}}
  4999. % \changes{v1.64}{2019/08/17}{Added a switch setting to show that
  5000. % \cs{maketitle} is typeset}
  5001. % The (in)famous \cs{maketitle}. Note that in |sigchi-a| mode, authors
  5002. % are \emph{not} in the title box.
  5003. %
  5004. % Another note: there is a subtle difference between author notes,
  5005. % title notes and thanks. The latter two refer to the paper itself
  5006. % and therefore belong to the copyright/permission block. By the
  5007. % way, this was the default behavior of the old ACM classes.
  5008. % \begin{macrocode}
  5009. \def\maketitle{%
  5010. \@ACM@maketitle@typesettrue
  5011. \if@ACM@anonymous
  5012. % Anonymize omission of \author-s
  5013. \ifnum\num@authorgroups=0\author{}\fi
  5014. \fi
  5015. \begingroup
  5016. \let\@vspace\@vspace@orig
  5017. \let\@vspacer\@vspacer@orig
  5018. \let\@footnotemark\@footnotemark@nolink
  5019. \let\@footnotetext\@footnotetext@nolink
  5020. \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
  5021. \hsize=\textwidth
  5022. \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
  5023. \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
  5024. \@printtopmatter
  5025. \if@ACM@sigchiamode\@mkauthors\fi
  5026. \setcounter{footnote}{0}%
  5027. \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
  5028. \@titlenotes
  5029. \@subtitlenotes
  5030. \@authornotes
  5031. \let\@makefnmark\relax
  5032. \let\@thefnmark\relax
  5033. \let\@makefntext\noindent
  5034. \ifx\@empty\thankses\else
  5035. \footnotetextauthorsaddresses{%
  5036. \def\par{\let\par\@par}\parindent\z@\@setthanks}%
  5037. \fi
  5038. \ifx\@empty\@authorsaddresses\else
  5039. \if@ACM@anonymous\else
  5040. \if@ACM@journal@bibstrip
  5041. \footnotetextauthorsaddresses{%
  5042. \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
  5043. \fi
  5044. \fi
  5045. \fi
  5046. \if@ACM@nonacm\else\footnotetextcopyrightpermission{%
  5047. \if@ACM@authordraft
  5048. \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
  5049. Unpublished working draft. Not for distribution.}}%
  5050. \color[gray]{0.9}%
  5051. \fi
  5052. \parindent\z@\parskip0.1\baselineskip
  5053. \if@ACM@authorversion\else
  5054. \if@printpermission\@copyrightpermission\par\fi
  5055. \fi
  5056. \if@ACM@manuscript\else
  5057. \if@ACM@journal@bibstrip\else % Print the conference information
  5058. {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
  5059. \fi
  5060. \fi
  5061. \if@printcopyright
  5062. \copyright\ \@copyrightyear\ \@copyrightowner\\
  5063. \else
  5064. \@copyrightyear.\
  5065. \fi
  5066. \if@ACM@manuscript
  5067. Manuscript submitted to ACM\\
  5068. \else
  5069. \if@ACM@authorversion
  5070. This is the author's version of the work. It is posted here for
  5071. your personal use. Not for redistribution. The definitive Version
  5072. of Record was published in
  5073. \if@ACM@journal@bibstrip
  5074. \emph{\@journalName}%
  5075. \else
  5076. \emph{\@acmBooktitle}%
  5077. \fi
  5078. \ifx\@acmDOI\@empty
  5079. .
  5080. \else
  5081. , \@formatdoi{\@acmDOI}.
  5082. \fi\\
  5083. \else
  5084. \if@ACM@nonacm\else
  5085. \if@ACM@journal@bibstrip
  5086. \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
  5087. \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
  5088. \@formatdoi{\@acmDOI}%
  5089. \else % Conference
  5090. \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN
  5091. \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
  5092. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
  5093. \fi
  5094. \fi
  5095. \fi
  5096. \fi}
  5097. \fi
  5098. \endgroup
  5099. \setcounter{footnote}{0}%
  5100. \@mkabstract
  5101. \if@ACM@printccs
  5102. \ifx\@concepts\@empty\else\bgroup
  5103. {\@specialsection{CCS Concepts}%
  5104. \@concepts\par}\egroup
  5105. \fi
  5106. \fi
  5107. \ifx\@keywords\@empty\else\bgroup
  5108. {\if@ACM@journal
  5109. \@specialsection{Additional Key Words and Phrases}%
  5110. \else
  5111. \@specialsection{Keywords}%
  5112. \fi
  5113. \@keywords}\par\egroup
  5114. \fi
  5115. \andify\authors
  5116. \andify\shortauthors
  5117. \global\let\authors=\authors
  5118. \global\let\shortauthors=\shortauthors
  5119. \if@ACM@printacmref
  5120. \@mkbibcitation
  5121. \fi
  5122. \hypersetup{%
  5123. pdfauthor={\authors},
  5124. pdftitle={\@title},
  5125. pdfsubject={\@concepts},
  5126. pdfkeywords={\@keywords},
  5127. pdfcreator={LaTeX with acmart
  5128. \csname ver@acmart.cls\endcsname\space
  5129. and hyperref
  5130. \csname ver@hyperref.sty\endcsname}}%
  5131. \global\@topnum\z@ % this prevents floats from falling
  5132. % at the top of page 1
  5133. \global\@botnum\z@ % we do not want them to be on the bottom either
  5134. \@printendtopmatter
  5135. \@afterindentfalse
  5136. \@afterheading
  5137. }
  5138. % \end{macrocode}
  5139. %
  5140. % \end{macro}
  5141. %
  5142. % \begin{macro}{\@specialsection}
  5143. % This macro starts sections for proceedings and uses \cs{small} for journals
  5144. % \begin{macrocode}
  5145. \def\@specialsection#1{%
  5146. \ifcase\ACM@format@nr
  5147. \relax % manuscript
  5148. \par\medskip\small\noindent#1: %
  5149. \or % acmsmall
  5150. \par\medskip\small\noindent#1: %
  5151. \or % acmlarge
  5152. \par\medskip\small\noindent#1: %
  5153. \or % acmtog
  5154. \par\medskip\small\noindent#1: %
  5155. \or % sigconf
  5156. \section*{#1}%
  5157. \or % siggraph
  5158. \section*{#1}%
  5159. \or % sigplan
  5160. \paragraph*{#1}%
  5161. \or % sigchi
  5162. \section*{#1}%
  5163. \or % sigchi-a
  5164. \section*{#1}%
  5165. \fi}
  5166. % \end{macrocode}
  5167. %
  5168. % \end{macro}
  5169. %
  5170. %
  5171. % \begin{macro}{\@printtopmatter}
  5172. % \changes{v1.06}{2016/05/01}{Added processing badges}
  5173. % \changes{v1.46}{2017/08/29}{Deleted rule}
  5174. % The printing of top matter starts a new page and uses the given
  5175. % title box. Note that for |sigchi-a| we print badges here rather
  5176. % than in \cs{mktitle} since we want them in the margins.
  5177. % \begin{macrocode}
  5178. \def\@printtopmatter{%
  5179. \ifx\@startPage\@empty
  5180. \gdef\@startPage{1}%
  5181. \else
  5182. \setcounter{page}{\@startPage}%
  5183. \fi
  5184. \thispagestyle{firstpagestyle}%
  5185. \noindent
  5186. \ifcase\ACM@format@nr
  5187. \relax % manuscript
  5188. \box\mktitle@bx\par
  5189. \or % acmsmall
  5190. \box\mktitle@bx\par
  5191. \or % acmlarge
  5192. \box\mktitle@bx\par
  5193. \or % acmtog
  5194. \twocolumn[\box\mktitle@bx]%
  5195. \or % sigconf
  5196. \twocolumn[\box\mktitle@bx]%
  5197. \or % siggraph
  5198. \twocolumn[\box\mktitle@bx]%
  5199. \or % sigplan
  5200. \twocolumn[\box\mktitle@bx]%
  5201. \or % sigchi
  5202. \twocolumn[\box\mktitle@bx]%
  5203. \or % sigchi-a
  5204. \par\box\mktitle@bx\par\bigskip
  5205. \if@ACM@badge
  5206. \marginpar{\noindent
  5207. \ifx\@acmBadgeL@image\@empty\else
  5208. \href{\@acmBadgeL@url}{%
  5209. \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
  5210. \hskip\@ACM@badge@skip
  5211. \fi
  5212. \ifx\@acmBadgeR@image\@empty\else
  5213. \href{\@acmBadgeR@url}{%
  5214. \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
  5215. \fi}%
  5216. \fi
  5217. \fi
  5218. }
  5219. % \end{macrocode}
  5220. %
  5221. % \end{macro}
  5222. %
  5223. % \begin{macro}{\@mktitle}
  5224. % The title of the article
  5225. % \begin{macrocode}
  5226. \def\@mktitle{%
  5227. \ifcase\ACM@format@nr
  5228. \relax % manuscript
  5229. \@mktitle@i
  5230. \or % acmsmall
  5231. \@mktitle@i
  5232. \or % acmlarge
  5233. \@mktitle@i
  5234. \or % acmtog
  5235. \@mktitle@i
  5236. \or % sigconf
  5237. \@mktitle@iii
  5238. \or % siggraph
  5239. \@mktitle@iii
  5240. \or % sigplan
  5241. \@mktitle@iii
  5242. \or % sigchi
  5243. \@mktitle@iii
  5244. \or % sigchi-a
  5245. \@mktitle@iv
  5246. \fi
  5247. }
  5248. % \end{macrocode}
  5249. %
  5250. % \end{macro}
  5251. %
  5252. % \begin{macro}{\@titlefont}
  5253. % \changes{v1.06}{2016/05/01}{Added macro}
  5254. % \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to
  5255. % \cs{sffamily}\cs{bfseries}}
  5256. % The font to typeset the title
  5257. % \begin{macrocode}
  5258. \def\@titlefont{%
  5259. \ifcase\ACM@format@nr
  5260. \relax % manuscript
  5261. \LARGE\sffamily\bfseries
  5262. \or % acmsmall
  5263. \LARGE\sffamily\bfseries
  5264. \or % acmlarge
  5265. \LARGE\sffamily\bfseries
  5266. \or % acmtog
  5267. \Huge\sffamily
  5268. \or % sigconf
  5269. \Huge\sffamily\bfseries
  5270. \or % siggraph
  5271. \Huge\sffamily\bfseries
  5272. \or % sigplan
  5273. \Huge\bfseries
  5274. \or % sigchi
  5275. \Huge\sffamily\bfseries
  5276. \or % sigchi-a
  5277. \Huge\bfseries
  5278. \fi}
  5279. % \end{macrocode}
  5280. %
  5281. % \end{macro}
  5282. %
  5283. % \begin{macro}{\@subtitlefont}
  5284. % \changes{v1.06}{2016/05/01}{Added macro}
  5285. % \changes{v1.33}{2017/03/12}{Added \cs{normalsize}}
  5286. % The font to typeset the subtitle
  5287. % \begin{macrocode}
  5288. \def\@subtitlefont{\normalsize
  5289. \ifcase\ACM@format@nr
  5290. \relax % manuscript
  5291. \mdseries
  5292. \or % acmsmall
  5293. \mdseries
  5294. \or % acmlarge
  5295. \mdseries
  5296. \or % acmtog
  5297. \LARGE
  5298. \or % sigconf
  5299. \LARGE\mdseries
  5300. \or % siggraph
  5301. \LARGE\mdseries
  5302. \or % sigplan
  5303. \LARGE\mdseries
  5304. \or % sigchi
  5305. \LARGE\mdseries
  5306. \or % sigchi-a
  5307. \mdseries
  5308. \fi}
  5309. % \end{macrocode}
  5310. %
  5311. % \end{macro}
  5312. %
  5313. % \begin{macro}{\@mktitle@i}
  5314. % \changes{v1.06}{2016/05/01}{Made generic}
  5315. % \changes{v1.06}{2016/05/01}{Added processing badges}
  5316. % The version of \cs{mktitle} for most journals
  5317. % \begin{macrocode}
  5318. \def\@mktitle@i{\hsize=\textwidth
  5319. \@ACM@title@width=\hsize
  5320. \ifx\@acmBadgeL@image\@empty\else
  5321. \advance\@ACM@title@width by -\@ACM@badge@width
  5322. \advance\@ACM@title@width by -\@ACM@badge@skip
  5323. \fi
  5324. \ifx\@acmBadgeR@image\@empty\else
  5325. \advance\@ACM@title@width by -\@ACM@badge@width
  5326. \advance\@ACM@title@width by -\@ACM@badge@skip
  5327. \fi
  5328. \setbox\mktitle@bx=\vbox{\noindent\@titlefont
  5329. \ifx\@acmBadgeL@image\@empty\else
  5330. \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
  5331. \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
  5332. \hskip\@ACM@badge@skip
  5333. \fi
  5334. \parbox[t]{\@ACM@title@width}{\raggedright
  5335. \@titlefont\noindent
  5336. \@title
  5337. \ifx\@subtitle\@empty\else
  5338. \par\noindent{\@subtitlefont\@subtitle}
  5339. \fi}%
  5340. \ifx\@acmBadgeR@image\@empty\else
  5341. \hskip\@ACM@badge@skip
  5342. \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
  5343. \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
  5344. \fi
  5345. \par\bigskip}}%
  5346. % \end{macrocode}
  5347. %
  5348. % \end{macro}
  5349. %
  5350. % \begin{macro}{\@mktitle@ii}
  5351. % \changes{v1.06}{2016/05/01}{Now this macro is obsolete}
  5352. % The version of \cs{mktitle} for TOG. Since v1.06, this is subsumed by
  5353. % the \cs{mktitle@i} macro
  5354. % \end{macro}
  5355. %
  5356. %
  5357. % \begin{macro}{\@mktitle@iii}
  5358. % \changes{v1.06}{2016/05/01}{Made more generic}
  5359. % \changes{v1.06}{2016/05/01}{Added processing badges}
  5360. % The version of \cs{@mktitle} for SIG proceedings. Note that since
  5361. % the title is centered, we leave space for the left badge even if
  5362. % only the right badge is defined.
  5363. % \begin{macrocode}
  5364. \def\@mktitle@iii{\hsize=\textwidth
  5365. \setbox\mktitle@bx=\vbox{\@titlefont\centering
  5366. \@ACM@title@width=\hsize
  5367. \if@ACM@badge
  5368. \advance\@ACM@title@width by -2\@ACM@badge@width
  5369. \advance\@ACM@title@width by -2\@ACM@badge@skip
  5370. \parbox[b]{\@ACM@badge@width}{\strut
  5371. \ifx\@acmBadgeL@image\@empty\else
  5372. \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
  5373. \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
  5374. \fi}%
  5375. \hskip\@ACM@badge@skip
  5376. \fi
  5377. \parbox[t]{\@ACM@title@width}{\centering\@titlefont
  5378. \@title
  5379. \ifx\@subtitle\@empty\else
  5380. \par\noindent{\@subtitlefont\@subtitle}
  5381. \fi
  5382. }%
  5383. \if@ACM@badge
  5384. \hskip\@ACM@badge@skip
  5385. \parbox[b]{\@ACM@badge@width}{\strut
  5386. \ifx\@acmBadgeR@image\@empty\else
  5387. \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
  5388. \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
  5389. \fi}%
  5390. \fi
  5391. \par\bigskip}}%
  5392. % \end{macrocode}
  5393. %
  5394. % \end{macro}
  5395. %
  5396. %
  5397. % \begin{macro}{\@mktitle@iv}
  5398. % \changes{v1.06}{2016/05/01}{Made more generic}
  5399. % The version of \cs{@mktitle} for |sigchi-a|
  5400. % \begin{macrocode}
  5401. \def\@mktitle@iv{\hsize=\textwidth
  5402. \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
  5403. \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
  5404. \noindent\@title
  5405. \ifx\@subtitle\@empty\else
  5406. \par\noindent\@subtitlefont\@subtitle
  5407. \fi
  5408. \par\bigskip}}%
  5409. % \end{macrocode}
  5410. %
  5411. % \end{macro}
  5412. %
  5413. % \begin{macro}{\@ACM@addtoaddress}
  5414. % \changes{v1.15}{2016/07/03}{Added macro}
  5415. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5416. % This macro adds an item to the address using the following rules:
  5417. % \begin{enumerate}
  5418. % \item If we start a paragraph, add the item
  5419. % \item Otherwise, add a comma and the item
  5420. % \item However, the comma is deleted if it is at the end of a
  5421. % line. We use the magic \cs{cleaders} trick for this.
  5422. % \end{enumerate}
  5423. % \begin{macrocode}
  5424. \newbox\@ACM@commabox
  5425. \def\@ACM@addtoaddress#1{%
  5426. \ifvmode\else
  5427. \if@ACM@affiliation@obeypunctuation\else
  5428. \setbox\@ACM@commabox=\hbox{, }%
  5429. \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
  5430. \fi\fi
  5431. #1}
  5432. % \end{macrocode}
  5433. % \end{macro}
  5434. %
  5435. % \begin{macro}{\institution}
  5436. % \changes{v1.15}{2016/07/03}{Added macro}
  5437. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5438. % \begin{macro}{\position}
  5439. % \changes{v1.15}{2016/07/03}{Added macro}
  5440. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5441. % \begin{macro}{\department}
  5442. % \changes{v1.15}{2016/07/03}{Added macro}
  5443. % \changes{v1.30}{2017/02/10}{Added optional parameter}
  5444. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5445. % \begin{macro}{\streetaddress}
  5446. % \changes{v1.15}{2016/07/03}{Added macro}
  5447. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5448. % \changes{v1.40}{2017/06/15}{We now do not print this even in SIG}
  5449. % \begin{macro}{\city}
  5450. % \changes{v1.15}{2016/07/03}{Added macro}
  5451. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5452. % \changes{v1.40}{2017/06/15}{We now do not print this even in SIG}
  5453. % \begin{macro}{\state}
  5454. % \changes{v1.15}{2016/07/03}{Added macro}
  5455. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5456. % \changes{v1.40}{2017/06/15}{We now do not print this even in SIG}
  5457. % \begin{macro}{\postcode}
  5458. % \changes{v1.15}{2016/07/03}{Added macro}
  5459. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5460. % \changes{v1.40}{2017/06/15}{We now do not print this even in SIG}
  5461. % \begin{macro}{\country}
  5462. % \changes{v1.15}{2016/07/03}{Added macro}
  5463. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5464. % \changes{v1.40}{2017/05/27}{Fixed bugs with extra spaces}
  5465. % \changes{v1.43}{2017/07/11}{Added comma before country for journals}
  5466. % \changes{v1.46}{2017/08/30}{Corrected spacing for institution}
  5467. % Theoretically we can define the macros for \cs{affiliation} inside
  5468. % the \cs{@mkauthors}-style commands. However, this would lead to a
  5469. % strange error if an author uses them outside \cs{affiliation}. Of
  5470. % course we can make them produce an error message, but\ldots
  5471. % \begin{macrocode}
  5472. \def\streetaddress#1{\unskip\ignorespaces}
  5473. \def\postcode#1{\unskip\ignorespaces}
  5474. \if@ACM@journal
  5475. \def\position#1{\unskip\ignorespaces}
  5476. \def\institution#1{\unskip~#1\ignorespaces}
  5477. \def\city#1{\unskip\ignorespaces}
  5478. \def\state#1{\unskip\ignorespaces}
  5479. \newcommand\department[2][0]{\unskip\ignorespaces}
  5480. \def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
  5481. \else
  5482. \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
  5483. \def\institution#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
  5484. \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
  5485. #2\else#2\par\fi}%
  5486. % \def\streetaddress#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
  5487. \let\city\@ACM@addtoaddress
  5488. \let\state\@ACM@addtoaddress
  5489. % \def\postcode#1{\if@ACM@affiliation@obeypunctuation#1\else\unskip\space#1\fi}%
  5490. \let\country\@ACM@addtoaddress
  5491. \fi
  5492. % \end{macrocode}
  5493. %
  5494. % \end{macro}
  5495. % \end{macro}
  5496. % \end{macro}
  5497. % \end{macro}
  5498. % \end{macro}
  5499. % \end{macro}
  5500. % \end{macro}
  5501. % \end{macro}
  5502. %
  5503. % \begin{macro}{\@mkauthors}
  5504. % \changes{v1.17}{2016/07/09}{TOG now uses the same authors block as
  5505. % other journals}
  5506. % Typesetting the authors
  5507. % \begin{macrocode}
  5508. \def\@mkauthors{\begingroup
  5509. \hsize=\textwidth
  5510. \ifcase\ACM@format@nr
  5511. \relax % manuscript
  5512. \@mkauthors@i
  5513. \or % acmsmall
  5514. \@mkauthors@i
  5515. \or % acmlarge
  5516. \@mkauthors@i
  5517. \or % acmtog
  5518. \@mkauthors@i
  5519. \or % sigconf
  5520. \@mkauthors@iii
  5521. \or % siggraph
  5522. \@mkauthors@iii
  5523. \or % sigplan
  5524. \@mkauthors@iii
  5525. \or % sigchi
  5526. \@mkauthors@iii
  5527. \or % sigchi-a
  5528. \@mkauthors@iv
  5529. \fi
  5530. \endgroup
  5531. }
  5532. % \end{macrocode}
  5533. %
  5534. % \end{macro}
  5535. %
  5536. % \begin{macro}{\@authorfont}
  5537. % Somehow different conferences use different fonts for author
  5538. % names. Why?
  5539. % \begin{macrocode}
  5540. \def\@authorfont{\Large\sffamily}
  5541. % \end{macrocode}
  5542. %
  5543. % \end{macro}
  5544. %
  5545. % \begin{macro}{\@affiliationfont}
  5546. % Font for affiliations
  5547. % \begin{macrocode}
  5548. \def\@affiliationfont{\normalsize\normalfont}
  5549. % \end{macrocode}
  5550. % \end{macro}
  5551. %
  5552. % \changes{v1.13}{2016/06/06}{Font adjustments for acmsmall}
  5553. % Adjusting fonts for different formats
  5554. % \begin{macrocode}
  5555. \ifcase\ACM@format@nr
  5556. \relax % manuscript
  5557. \or % acmsmall
  5558. \def\@authorfont{\large\sffamily}
  5559. \def\@affiliationfont{\small\normalfont}
  5560. \or % acmlarge
  5561. \or % acmtog
  5562. \def\@authorfont{\LARGE\sffamily}
  5563. \def\@affiliationfont{\large}
  5564. \or % sigconf
  5565. \def\@authorfont{\LARGE}
  5566. \def\@affiliationfont{\large}
  5567. \or % siggraph
  5568. \def\@authorfont{\normalsize\normalfont}
  5569. \def\@affiliationfont{\normalsize\normalfont}
  5570. \or % sigplan
  5571. \def\@authorfont{\Large\normalfont}
  5572. \def\@affiliationfont{\normalsize\normalfont}
  5573. \or % sigchi
  5574. \def\@authorfont{\bfseries}
  5575. \def\@affiliationfont{\mdseries}
  5576. \or % sigchi-a
  5577. \def\@authorfont{\bfseries}
  5578. \def\@affiliationfont{\mdseries}
  5579. \fi
  5580. % \end{macrocode}
  5581. %
  5582. % \begin{macro}{\@typeset@author@line}
  5583. % \changes{v1.18}{2016/07/12}{Added macro}
  5584. % At this point we have \cs{@currentauthors} and
  5585. % \cs{@currentaffiliations}. We typeset them in the journal style
  5586. % \begin{macrocode}
  5587. \def\@typeset@author@line{%
  5588. \andify\@currentauthors\par\noindent
  5589. \@currentauthors\def\@currentauthors{}%
  5590. \ifx\@currentaffiliations\@empty\else
  5591. \andify\@currentaffiliations
  5592. \unskip, {\@currentaffiliations}\par
  5593. \fi
  5594. \def\@currentaffiliations{}}
  5595. % \end{macrocode}
  5596. %
  5597. % \end{macro}
  5598. %
  5599. %
  5600. % \begin{macro}{\@mkauthors@i}
  5601. % \changes{v1.18}{2016/07/12}{Now we andify affiliations}
  5602. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5603. % \changes{v1.40}{2017/06/04}{Switched to MakeTextUppercase}
  5604. % This version is used in most journal formats. Note that \cs{and} between
  5605. % authors with the same affiliation becomes \verb*| and |:
  5606. % \begin{macrocode}
  5607. \def\@mkauthors@i{%
  5608. \def\@currentauthors{}%
  5609. \def\@currentaffiliations{}%
  5610. \global\let\and\@typeset@author@line
  5611. \def\@author##1{%
  5612. \ifx\@currentauthors\@empty
  5613. \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
  5614. \else
  5615. \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
  5616. \fi
  5617. \gdef\and{}}%
  5618. \def\email##1##2{}%
  5619. \def\affiliation##1##2{%
  5620. \def\@tempa{##2}\ifx\@tempa\@empty\else
  5621. \ifx\@currentaffiliations\@empty
  5622. \gdef\@currentaffiliations{%
  5623. \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
  5624. \setkeys{@ACM@affiliation@}{##1}%
  5625. \@affiliationfont##2}%
  5626. \else
  5627. \g@addto@macro{\@currentaffiliations}{\and
  5628. \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
  5629. \setkeys{@ACM@affiliation@}{##1}##2}%
  5630. \fi
  5631. \fi
  5632. \global\let\and\@typeset@author@line}%
  5633. \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
  5634. \noindent\addresses\@typeset@author@line
  5635. \par\medskip}%
  5636. }
  5637. % \end{macrocode}
  5638. %
  5639. % \end{macro}
  5640. %
  5641. % \begin{macro}{\@mkauthors@ii}
  5642. % \changes{v1.17}{2016/07/09}{Deleted}
  5643. % The \cs{@mkauthors@ii} command was the version used in |acmtog|.
  5644. % It is no longer necessary.
  5645. %
  5646. % \end{macro}
  5647. %
  5648. % \begin{macro}{\author@bx}
  5649. % The box to put an individual author in
  5650. % \begin{macrocode}
  5651. \newbox\author@bx
  5652. % \end{macrocode}
  5653. %
  5654. % \end{macro}
  5655. %
  5656. % \begin{macro}{\author@bx@wd}
  5657. % The width of the author box
  5658. % \begin{macrocode}
  5659. \newdimen\author@bx@wd
  5660. % \end{macrocode}
  5661. %
  5662. % \end{macro}
  5663. %
  5664. % \begin{macro}{\author@bx@sep}
  5665. % The separation between author boxes
  5666. % \begin{macrocode}
  5667. \newskip\author@bx@sep
  5668. \author@bx@sep=1pc\relax
  5669. % \end{macrocode}
  5670. %
  5671. % \end{macro}
  5672. %
  5673. % \begin{macro}{\@typeset@author@bx}
  5674. % \changes{v1.15}{2016/07/04}{Moved to separate macro}
  5675. % \changes{v1.61}{2019/05/26}{Added \cs{normalbaselines}}
  5676. % Typesetting the box with authors. Note that in |sigchi-a| the box
  5677. % is not centered.
  5678. % \begin{macrocode}
  5679. \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd
  5680. \def\and{\par}\normalbaselines
  5681. \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
  5682. \@authorfont\@currentauthors\par\@affiliationfont
  5683. \@currentaffiliation}\egroup
  5684. \box\author@bx\hspace{\author@bx@sep}%
  5685. \gdef\@currentauthors{}%
  5686. \gdef\@currentaffiliation{}}
  5687. % \end{macrocode}
  5688. %
  5689. % \end{macro}
  5690. %
  5691. %
  5692. % \begin{macro}{\@mkauthors@iii}
  5693. % \changes{v1.15}{2016/07/04}{New authors system}
  5694. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5695. % \changes{v1.36}{2017/05/12}{Added authorsperrow overrride}
  5696. % The |sigconf| version. Here we use a centered design with each
  5697. % author in a separate box.
  5698. % \begin{macrocode}
  5699. \def\@mkauthors@iii{%
  5700. % \end{macrocode}
  5701. % First, we need to determine the design of the author strip. The
  5702. % boxes are separated by \cs{author@bx@sep} plus two
  5703. % \cs{author@bx@sep} margins. This means that each box must be of
  5704. % width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$,
  5705. % where $N$ is the number of boxes per row.
  5706. % \begin{macrocode}
  5707. \author@bx@wd=\textwidth\relax
  5708. \advance\author@bx@wd by -\author@bx@sep\relax
  5709. \ifnum\@ACM@authorsperrow>0\relax
  5710. \divide\author@bx@wd by \@ACM@authorsperrow\relax
  5711. \else
  5712. \ifcase\num@authorgroups
  5713. \relax % 0?
  5714. \or % 1=one author per row
  5715. \or % 2=two authors per row
  5716. \divide\author@bx@wd by \num@authorgroups\relax
  5717. \or % 3=three authors per row
  5718. \divide\author@bx@wd by \num@authorgroups\relax
  5719. \or % 4=two authors per row (!)
  5720. \divide\author@bx@wd by 2\relax
  5721. \else % three authors per row
  5722. \divide\author@bx@wd by 3\relax
  5723. \fi
  5724. \fi
  5725. \advance\author@bx@wd by -\author@bx@sep\relax
  5726. % \end{macrocode}
  5727. % Now, parsing of \cs{addresses}:
  5728. % \begin{macrocode}
  5729. \gdef\@currentauthors{}%
  5730. \gdef\@currentaffiliation{}%
  5731. \def\@author##1{\ifx\@currentauthors\@empty
  5732. \gdef\@currentauthors{\par##1}%
  5733. \else
  5734. \g@addto@macro\@currentauthors{\par##1}%
  5735. \fi
  5736. \gdef\and{}}%
  5737. \def\email##1##2{\ifx\@currentaffiliation\@empty
  5738. \gdef\@currentaffiliation{\bgroup
  5739. \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
  5740. \else
  5741. \g@addto@macro\@currentaffiliation{\par\bgroup
  5742. \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
  5743. \fi}%
  5744. \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
  5745. \gdef\@currentaffiliation{%
  5746. \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
  5747. \setkeys{@ACM@affiliation@}{##1}##2}%
  5748. \else
  5749. \g@addto@macro\@currentaffiliation{\par
  5750. \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
  5751. \setkeys{@ACM@affiliation@}{##1}##2}%
  5752. \fi
  5753. \global\let\and\@typeset@author@bx
  5754. }%
  5755. % \end{macrocode}
  5756. % Actual typesetting is done by the \cs{and} macro:
  5757. % \begin{macrocode}
  5758. \hsize=\textwidth
  5759. \global\setbox\mktitle@bx=\vbox{\noindent
  5760. \box\mktitle@bx\par\medskip\leavevmode
  5761. \lineskip=1pc\relax\centering\hspace*{-1em}%
  5762. \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
  5763. % \end{macrocode}
  5764. %
  5765. % \end{macro}
  5766. %
  5767. %
  5768. % \begin{macro}{\@mkauthors@iv}
  5769. % \changes{v1.33}{2017/03/28}{Added obeypunctuation code}
  5770. % \changes{v1.36}{2017/05/12}{Added authorsperrow overrride}
  5771. % The |sigchi-a| version. We put authors in the main text with
  5772. % no more than 2 authors per line, unless overriden.
  5773. % \begin{macrocode}
  5774. \def\@mkauthors@iv{%
  5775. % \end{macrocode}
  5776. % First, we need to determine the design of the author strip. The
  5777. % boxes are separated by \cs{author@bx@sep} plus two
  5778. % \cs{author@bx@sep} margins. This means that each box must be of
  5779. % width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$,
  5780. % where $N$ is the number of boxes per row.
  5781. % \begin{macrocode}
  5782. \author@bx@wd=\columnwidth\relax
  5783. \advance\author@bx@wd by -\author@bx@sep\relax
  5784. \ifnum\@ACM@authorsperrow>0\relax
  5785. \divide\author@bx@wd by \@ACM@authorsperrow\relax
  5786. \else
  5787. \ifcase\num@authorgroups
  5788. \relax % 0?
  5789. \or % 1=one author per row
  5790. \else % 2=two authors per row
  5791. \divide\author@bx@wd by 2\relax
  5792. \fi
  5793. \fi
  5794. \advance\author@bx@wd by -\author@bx@sep\relax
  5795. % \end{macrocode}
  5796. % Now, parsing of \cs{addresses}:
  5797. % \begin{macrocode}
  5798. \gdef\@currentauthors{}%
  5799. \gdef\@currentaffiliation{}%
  5800. \def\@author##1{\ifx\@currentauthors\@empty
  5801. \gdef\@currentauthors{\par##1}%
  5802. \else
  5803. \g@addto@macro\@currentauthors{\par##1}%
  5804. \fi
  5805. \gdef\and{}}%
  5806. \def\email##1##2{\ifx\@currentaffiliation\@empty
  5807. \gdef\@currentaffiliation{\nolinkurl{##2}}%
  5808. \else
  5809. \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
  5810. \fi}%
  5811. \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
  5812. \gdef\@currentaffiliation{%
  5813. \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
  5814. \setkeys{@ACM@affiliation@}{##1}##2}%
  5815. \else
  5816. \g@addto@macro\@currentaffiliation{\par
  5817. \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
  5818. \setkeys{@ACM@affiliation@}{##1}##2}%
  5819. \fi
  5820. \global\let\and\@typeset@author@bx}%
  5821. %
  5822. % \end{macrocode}
  5823. % Actual typesetting is done by the \cs{and} macro
  5824. % \begin{macrocode}
  5825. \bgroup\hsize=\columnwidth
  5826. \par\raggedright\leftskip=\z@
  5827. \lineskip=1pc\noindent
  5828. \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
  5829. % \end{macrocode}
  5830. %
  5831. % \end{macro}
  5832. %
  5833. % \begin{macro}{\@mkauthorsaddresses}
  5834. % \changes{v1.46}{2017/08/27}{Introduced macro}
  5835. % \changes{v1.65}{2019/10/13}{Deleted cs{@addpunct}}
  5836. % Typesetting authors' addresses in the footnote style
  5837. % \begin{macrocode}
  5838. \def\@mkauthorsaddresses{%
  5839. \ifnum\num@authors>1\relax
  5840. Authors' \else Author's \fi
  5841. \ifnum\num@authorgroups>1\relax
  5842. addresses: \else address: \fi
  5843. \bgroup
  5844. \def\streetaddress##1{\unskip, ##1}%
  5845. \def\postcode##1{\unskip, ##1}%
  5846. \def\position##1{\unskip\ignorespaces}%
  5847. \def\institution##1{\unskip, ##1}%
  5848. \def\city##1{\unskip, ##1}%
  5849. \def\state##1{\unskip, ##1}%
  5850. \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
  5851. \def\country##1{\unskip, ##1}%
  5852. \def\and{\unskip; }%
  5853. \def\@author##1{##1}%
  5854. \def\email##1##2{\unskip, \nolinkurl{##2}}%
  5855. \addresses
  5856. \egroup}
  5857. % \end{macrocode}
  5858. %
  5859. % \end{macro}
  5860. %
  5861. % \begin{macro}{\@setaddresses}
  5862. % This is an |amsart| macro that we do not need.
  5863. % \begin{macrocode}
  5864. \def\@setaddresses{}
  5865. % \end{macrocode}
  5866. %
  5867. % \end{macro}
  5868. %
  5869. %
  5870. % \begin{macro}{\@authornotemark}
  5871. % Adding a footnote mark to authors. This version adds a ``normal''
  5872. % footnote mark.
  5873. % \begin{macrocode}
  5874. \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
  5875. % \end{macrocode}
  5876. %
  5877. % \end{macro}
  5878. %
  5879. % \begin{macro}{\@@authornotemark}
  5880. % \changes{v1.39}{2017/05/14}{Added macro}
  5881. % Adding a footnote mark to authors with a given number
  5882. % \begin{macrocode}
  5883. \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
  5884. % \end{macrocode}
  5885. %
  5886. % \end{macro}
  5887. %
  5888. % \begin{macro}{\@mkteasers}
  5889. % Typesetting the teasers
  5890. % \changes{v1.56}{2018/11/1}{Added check for description}
  5891. % \begin{macrocode}
  5892. \def\@mkteasers{%
  5893. \ifx\@teaserfigures\@empty\else
  5894. \def\@teaser##1{\par\bigskip\bgroup
  5895. \captionsetup{type=figure}##1\egroup\par}
  5896. \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
  5897. \noindent\@Description@presentfalse
  5898. \@teaserfigures\par\if@Description@present\else
  5899. \global\@undescribed@imagestrue
  5900. \ClassWarning{\@classname}{A possible image without
  5901. description}\fi
  5902. \medskip}%
  5903. \fi}
  5904. % \end{macrocode}
  5905. %
  5906. % \end{macro}
  5907. %
  5908. % \begin{macro}{\@mkabstract}
  5909. % \changes{v1.19}{2016/07/28}{Include 'Abstract' in PDF bookmarks
  5910. % (Matthew Fluet)}
  5911. % \changes{v1.20}{2016/08/03}{Deleted spurious space}
  5912. % \changes{v1.29}{2017/01/22}{Removed spurious indentation (John
  5913. % Wickerson)}
  5914. % \changes{v1.48}{2017/09/16}{Removed spurious indentation if abstract
  5915. % is followed by an empty line}
  5916. % Typesetting the abstract
  5917. % \begin{macrocode}
  5918. \def\@mkabstract{\bgroup
  5919. \ifx\@abstract\@lempty\else
  5920. {\phantomsection\addcontentsline{toc}{section}{Abstract}%
  5921. \if@ACM@journal
  5922. \everypar{\setbox\z@\lastbox\everypar{}}\small
  5923. \else
  5924. \section*{\abstractname}%
  5925. \fi
  5926. \ignorespaces\@abstract\par}%
  5927. \fi\egroup}
  5928. % \end{macrocode}
  5929. %
  5930. % \end{macro}
  5931. %
  5932. % \begin{macro}{\@mkbibcitation}
  5933. % \changes{v1.17}{2016/07/10}{Changed format for sigs}
  5934. % \changes{v1.17}{2016/07/10}{Added \cs{nobreak}}
  5935. % \changes{v1.31}{2017/03/04}{Disabled linebreak}
  5936. % \changes{v1.34}{2017/04/09}{Deleted DOI from doi numbers}
  5937. % \changes{v1.44}{2017/07/30}{If the paper has just one page, use
  5938. % `page' instead of `pages'}
  5939. % \changes{v1.46}{2017/08/25}{Added subtitle}
  5940. % \changes{v1.54}{2018/06/10}{Bug corrected (Ross Moore)}
  5941. % \changes{v1.55}{2018/07/25}{Bug corrected}
  5942. % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
  5943. % Print the |bibcitation| format
  5944. % \begin{macrocode}
  5945. \def\@mkbibcitation{\bgroup
  5946. \let\@vspace\@vspace@orig
  5947. \let\@vspacer\@vspacer@orig
  5948. \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
  5949. \def\footnotemark{}%
  5950. \def\\{\unskip{} \ignorespaces}%
  5951. \def\footnote{\ClassError{\@classname}{Please do not use footnotes
  5952. inside a \string\title{} or \string\author{} command! Use
  5953. \string\titlenote{} or \string\authornote{} instead!}}%
  5954. \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
  5955. Article~\@acmArticle\ \fi}%
  5956. \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
  5957. \noindent\bgroup
  5958. \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title
  5959. \ifx\@subtitle\@empty. \else: \@subtitle. \fi
  5960. \if@ACM@nonacm\else
  5961. % The 'nonacm' option disables 'printacmref' by default,
  5962. % and the present \@mkbibcitation definition is never used
  5963. % in this case. The conditional remains useful if the user
  5964. % explicitly sets \settopmatter{printacmref=true}.
  5965. \if@ACM@journal@bibstrip
  5966. \textit{\@journalNameShort}
  5967. \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
  5968. \ref{TotPages}~\@pages@word.
  5969. \else
  5970. In \textit{\@acmBooktitle}%
  5971. \ifx\@acmEditors\@empty\textit{.}\else
  5972. \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
  5973. \fi\
  5974. ACM, New York, NY, USA%
  5975. \@article@string\unskip, \ref{TotPages}~\@pages@word.
  5976. \fi
  5977. \fi
  5978. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
  5979. \par\egroup}
  5980. % \end{macrocode}
  5981. %
  5982. % \end{macro}
  5983. %
  5984. % \begin{macro}{\@printendtopmatter}
  5985. % \changes{v1.46}{2017/08/28}{Made it \cs{par}\cs{bigskip} uniformly}
  5986. % \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning}
  5987. % End the top matter
  5988. % \begin{macrocode}
  5989. \def\@printendtopmatter{\bgroup
  5990. \let\@vspace\@vspace@orig
  5991. \let\@vspacer\@vspacer@orig
  5992. \par\bigskip
  5993. \egroup}
  5994. % \end{macrocode}
  5995. %
  5996. % \end{macro}
  5997. %
  5998. % \begin{macro}{\@setthanks}
  5999. % We redefine \cs{\@setthanks} using \cs{long}
  6000. % \begin{macrocode}
  6001. \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
  6002. % \end{macrocode}
  6003. %
  6004. % \end{macro}
  6005. %
  6006. % \begin{macro}{\@setauthorsaddresses}
  6007. % \changes{v1.46}{2018/08/25}{Introduced macro}
  6008. % \begin{macrocode}
  6009. \def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
  6010. % \end{macrocode}
  6011. %
  6012. % \end{macro}
  6013. %
  6014. %
  6015. %
  6016. %\subsection{Headers and Footers}
  6017. %\label{sec:head_foot}
  6018. %
  6019. % We use |fancyhdr| for our headers and footers:
  6020. % \begin{macrocode}
  6021. \RequirePackage{fancyhdr}
  6022. % \end{macrocode}
  6023. %
  6024. % \begin{macro}{\ACM@restore@pagestyle}
  6025. % \changes{v1.44}{2017/07/30}{Added macro}
  6026. % The following code by Ross Moore protects against changes by
  6027. % the |totpages| package:
  6028. % \begin{macrocode}
  6029. \let\ACM@ps@plain\ps@plain
  6030. \let\ACM@ps@myheadings\ps@myheadings
  6031. \let\ACM@ps@headings\ps@headings
  6032. \def\ACM@restore@pagestyle{%
  6033. \let\ps@plain\ACM@ps@plain
  6034. \let\ps@myheadings\ACM@ps@myheadings
  6035. \let\ps@headings\ACM@ps@headings}
  6036. \AtBeginDocument{\ACM@restore@pagestyle}
  6037. % \end{macrocode}
  6038. %
  6039. %
  6040. % \end{macro}
  6041. %
  6042. %
  6043. %
  6044. % \begin{macro}{\ACM@linecount@bx}
  6045. % \changes{v1.34}{2017/04/10}{Rulers now are continuous}
  6046. % \changes{v1.40}{2017/05/27}{Work around a bug in xcolor: looks like
  6047. % cmyk colors in boxes do not work}
  6048. % \changes{v1.46}{2017/08/28}{Rearranged the code to get rid of
  6049. % spurious underfull messages (Benjamin Byholm)}
  6050. % \changes{v1.64}{2019/08/24}{Bug fix: made the spacing on the left
  6051. % and the right size equal}
  6052. % This is the box displayed in review mode
  6053. % \begin{macrocode}
  6054. \if@ACM@review
  6055. \newsavebox{\ACM@linecount@bx}
  6056. \newlength\ACM@linecount@bxht
  6057. \newcount\ACM@linecount
  6058. \ACM@linecount\@ne\relax
  6059. \def\ACM@mk@linecount{%
  6060. \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
  6061. \normalsize
  6062. \setlength{\ACM@linecount@bxht}{0pt}%
  6063. \loop{\color{red}\scriptsize\the\ACM@linecount}\\
  6064. \global\advance\ACM@linecount by \@ne
  6065. \addtolength{\ACM@linecount@bxht}{\baselineskip}%
  6066. \ifdim\ACM@linecount@bxht<\textheight\repeat
  6067. {\color{red}\scriptsize\the\ACM@linecount}\hfill
  6068. \global\advance\ACM@linecount by \@ne}}}
  6069. \fi
  6070. % \end{macrocode}
  6071. %
  6072. % \end{macro}
  6073. %
  6074. % \begin{macro}{\ACM@linecountL}
  6075. % \changes{v1.33}{2017/03/29}{Renamed macro}
  6076. % \changes{v1.34}{2017/04/10}{Rulers now are continuous}
  6077. % How to display the box on the left
  6078. % \begin{macrocode}
  6079. \def\ACM@linecountL{%
  6080. \if@ACM@review
  6081. \ACM@mk@linecount
  6082. \begin{picture}(0,0)%
  6083. \put(-26,-22){\usebox{\ACM@linecount@bx}}%
  6084. \end{picture}%
  6085. \fi}
  6086. % \end{macrocode}
  6087. %
  6088. % \end{macro}
  6089. %
  6090. % \begin{macro}{\ACM@linecountR}
  6091. % \changes{v1.33}{2017/03/29}{Added macro}
  6092. % \changes{v1.34}{2017/04/10}{Rulers now are continuous}
  6093. % How to display the box on the right
  6094. % \begin{macrocode}
  6095. \def\ACM@linecountR{%
  6096. \if@ACM@review
  6097. \ACM@mk@linecount
  6098. \begin{picture}(0,0)%
  6099. \put(20,-22){\usebox{\ACM@linecount@bx}}%
  6100. \end{picture}%
  6101. \fi}
  6102. % \end{macrocode}
  6103. %
  6104. % \end{macro}
  6105. %
  6106. % \begin{macro}{\ACM@timestamp}
  6107. % \changes{v1.33}{2017/03/10}{Added macro (Michael D.~Adams)}
  6108. % \changes{v1.33}{2017/03/28}{Added current page number}
  6109. % \changes{v1.33}{2017/03/29}{Added submission id}
  6110. % \changes{v1.48}{2017/09/16}{Fromatting change (Michael D.~Adams)}
  6111. % The timestamp system
  6112. % \begin{macrocode}
  6113. \if@ACM@timestamp
  6114. % Subtracting 30 from \time gives us the effect of rounding down despite
  6115. % \numexpr rounding to nearest
  6116. \newcounter{ACM@time@hours}
  6117. \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
  6118. \newcounter{ACM@time@minutes}
  6119. \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
  6120. \newcommand\ACM@timestamp{%
  6121. \footnotesize%
  6122. \ifx\@acmSubmissionID\@empty\relax\else
  6123. Submission ID: \@acmSubmissionID.{ }%
  6124. \fi
  6125. \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
  6126. \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }%
  6127. Page \thepage\ of \@startPage--\pageref*{TotPages}.%
  6128. }
  6129. \fi
  6130. % \end{macrocode}
  6131. % \end{macro}
  6132. %
  6133. % \begin{macro}{\@shortauthors}
  6134. % \changes{v1.15}{2016/07/04}{Introduced macro}
  6135. % \changes{v1.54}{2016/06/23}{Added submission id in anonymous mode}
  6136. % Even if the author redefined \cs{shortauthors}, we do not print
  6137. % it in the headers when in anonymous mode:
  6138. % \begin{macrocode}
  6139. \def\@shortauthors{%
  6140. \if@ACM@anonymous
  6141. Anon.
  6142. \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi
  6143. \else\shortauthors\fi}
  6144. % \end{macrocode}
  6145. %
  6146. % \end{macro}
  6147. %
  6148. % \begin{macro}{\@headfootfont}
  6149. % \changes{v1.16}{2016/07/07}{Added macro}
  6150. % \changes{v1.48}{2017/09/16}{Deleted unnecessary switch (Michael D.~Adams)}
  6151. % \changes{v1.60}{2019/04/22}{Moved to footnotesize}
  6152. % The font to typeset header and footer text.
  6153. % \begin{macrocode}
  6154. \def\@headfootfont{\sffamily\footnotesize}
  6155. % \end{macrocode}
  6156. %
  6157. % \end{macro}
  6158. %
  6159. % \begin{macro}{standardpagestyle}
  6160. % \changes{v1.10}{2016/05/22}{Reversed folios location}
  6161. % \changes{v1.13}{2016/06/06}{Suppressed folios if sig}
  6162. % \changes{v1.13}{2016/06/06}{Added headers for sigs}
  6163. % \changes{v1.13}{2016/06/06}{Expanded headers for sigchi-a}
  6164. % \changes{v1.15}{2016/07/04}{Better handling of anonymous mode}
  6165. % \changes{v1.16}{2016/07/07}{Customize header/footer text font}
  6166. % \changes{v1.17}{2016/07/10}{Added paper title to sigs}
  6167. % \changes{v1.29}{2017/01/22}{Corrected printfolios (Matthew Fluet)}
  6168. % \changes{v1.33}{2017/03/10}{Added timestamp (Michael D.~Adams)}
  6169. % \changes{v1.33}{2017/03/29}{Added right linecount for two-column formats}
  6170. % The page style for all pages but the first one
  6171. % \changes{v1.51}{2018/04/05}{We now use journal abbreviation for
  6172. % footers}
  6173. % \changes{v1.59}{2019/04/20}{Added logic for conference papers using
  6174. % journal format}
  6175. % \changes{v1.59}{2019/04/20}{Moved page styles to \cs{AtBeginDocument}}
  6176. % The page style for all pages but the first one
  6177. % \begin{macrocode}
  6178. \AtBeginDocument{%
  6179. \fancypagestyle{standardpagestyle}{%
  6180. \fancyhf{}%
  6181. \renewcommand{\headrulewidth}{\z@}%
  6182. \renewcommand{\footrulewidth}{\z@}%
  6183. \def\@acmArticlePage{%
  6184. \ifx\@acmArticle\empty%
  6185. \if@ACM@printfolios\thepage\fi%
  6186. \else%
  6187. \@acmArticle\if@ACM@printfolios:\thepage\fi%
  6188. \fi%
  6189. }%
  6190. \if@ACM@journal@bibstrip
  6191. \ifcase\ACM@format@nr
  6192. \relax % manuscript
  6193. \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
  6194. \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
  6195. \fancyhead[RE]{\@shortauthors}%
  6196. \fancyhead[LO]{\ACM@linecountL\shorttitle}%
  6197. \if@ACM@nonacm\else%
  6198. \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}
  6199. \fi%
  6200. \or % acmsmall
  6201. \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}%
  6202. \fancyhead[RO]{\@headfootfont\@acmArticlePage}%
  6203. \fancyhead[RE]{\@headfootfont\@shortauthors}%
  6204. \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
  6205. \if@ACM@nonacm\else%
  6206. \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
  6207. \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
  6208. \fi
  6209. \or % acmlarge
  6210. \fancyhead[LE]{\ACM@linecountL\@headfootfont
  6211. \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
  6212. \fancyhead[LO]{\ACM@linecountL}%
  6213. \fancyhead[RO]{\@headfootfont
  6214. \shorttitle\quad\textbullet\quad\@acmArticlePage}%
  6215. \if@ACM@nonacm\else%
  6216. \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
  6217. \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
  6218. \fi
  6219. \or % acmtog
  6220. \fancyhead[LE]{\ACM@linecountL\@headfootfont
  6221. \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
  6222. \fancyhead[LO]{\ACM@linecountL}%
  6223. \fancyhead[RE]{\ACM@linecountR}%
  6224. \fancyhead[RO]{\@headfootfont
  6225. \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}%
  6226. \if@ACM@nonacm\else%
  6227. \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
  6228. \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
  6229. \fi
  6230. \else % Proceedings
  6231. \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
  6232. \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
  6233. \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
  6234. \if@ACM@nonacm\else%
  6235. \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
  6236. \acmConference@shortname,
  6237. \acmConference@date, \acmConference@venue}%
  6238. \fancyhead[RO]{\@headfootfont
  6239. \acmConference@shortname,
  6240. \acmConference@date, \acmConference@venue\ACM@linecountR}%
  6241. \fi
  6242. \fi
  6243. \else % Proceedings
  6244. \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
  6245. \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
  6246. \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
  6247. \if@ACM@nonacm\else%
  6248. \fancyhead[LE]{\ACM@linecountL\@headfootfont
  6249. \acmConference@shortname,
  6250. \acmConference@date, \acmConference@venue}%
  6251. \fancyhead[RO]{\@headfootfont
  6252. \acmConference@shortname,
  6253. \acmConference@date, \acmConference@venue\ACM@linecountR}%
  6254. \fi
  6255. \fi
  6256. \if@ACM@sigchiamode
  6257. \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
  6258. \fi
  6259. \if@ACM@timestamp
  6260. \fancyfoot[LO,RE]{\ACM@timestamp}
  6261. \fi
  6262. }%
  6263. \pagestyle{standardpagestyle}
  6264. }
  6265. % \end{macrocode}
  6266. %
  6267. % \end{macro}
  6268. %
  6269. % \begin{macro}{\@folio@wd}
  6270. % \begin{macro}{\@folio@ht}
  6271. % \begin{macro}{\@folio@voffset}
  6272. % \begin{macro}{\@folio@max}
  6273. % Folio blob width, height, offsets and max number
  6274. % \begin{macrocode}
  6275. \newdimen\@folio@wd
  6276. \@folio@wd=\z@
  6277. \newdimen\@folio@ht
  6278. \@folio@ht=\z@
  6279. \newdimen\@folio@voffset
  6280. \@folio@voffset=\z@
  6281. \def\@folio@max{1}
  6282. \ifcase\ACM@format@nr
  6283. \relax % manuscript
  6284. \or % acmsmall
  6285. \@folio@wd=45.75pt\relax
  6286. \@folio@ht=1.25in\relax
  6287. \@folio@voffset=.2in\relax
  6288. \def\@folio@max{8}
  6289. \or % acmlarge
  6290. \@folio@wd=43.25pt\relax
  6291. \@folio@ht=79pt\relax
  6292. \@folio@voffset=.55in\relax
  6293. \def\@folio@max{10}
  6294. \fi
  6295. % \end{macrocode}
  6296. %
  6297. % \end{macro}
  6298. % \end{macro}
  6299. % \end{macro}
  6300. % \end{macro}
  6301. %
  6302. % \begin{macro}{\@folioblob}
  6303. % \changes{v1.44}{2017/08/11}{Suppress the blob if acmArticleSeq is empty}
  6304. % \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to
  6305. % \cs{sffamily}\cs{bfseries}}
  6306. % The macro to typeset the folio blob.
  6307. % \begin{macrocode}
  6308. \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
  6309. \ifnum\@tempcnta=0\relax\else
  6310. % \end{macrocode}
  6311. % First, we calculate \cs{@acmArticleSeq} modulo \cs{@folio@max}
  6312. % \begin{macrocode}
  6313. \loop
  6314. \ifnum\@tempcnta>\@folio@max\relax
  6315. \advance\@tempcnta by - \@folio@max
  6316. \repeat
  6317. % \end{macrocode}
  6318. %
  6319. % \begin{macrocode}
  6320. \advance\@tempcnta by -1\relax
  6321. \@tempdima=\@folio@ht\relax
  6322. \multiply\@tempdima by \the\@tempcnta\relax
  6323. \advance\@tempdima by -\@folio@voffset\relax
  6324. \begin{picture}(0,0)
  6325. \makebox[\z@]{\raisebox{-\@tempdima}{%
  6326. \rlap{%
  6327. \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
  6328. \rule{\@folio@wd}{\@folio@ht}}}%
  6329. \parbox{\@folio@wd}{%
  6330. \centering
  6331. \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
  6332. \end{picture}\fi}
  6333. % \end{macrocode}
  6334. %
  6335. %
  6336. % \end{macro}
  6337. %
  6338. % \begin{macro}{firstpagestyle}
  6339. % \changes{v1.33}{2017/03/10}{Added timestamp (Michael D.~Adams)}
  6340. % \changes{v1.33}{2017/03/29}{Added right linecount for two-column
  6341. % formats}
  6342. % \changes{v1.51}{2018/04/05}{We now use journal abbreviation for
  6343. % footers}
  6344. % \changes{v1.59}{2019/04/20}{Added logic for conference papers using
  6345. % journal format}
  6346. % \changes{v1.59}{2019/04/20}{Moved page styles to \cs{AtBeginDocument}}
  6347. % The page style for the first page only.
  6348. % \begin{macrocode}
  6349. \AtBeginDocument{%
  6350. \fancypagestyle{firstpagestyle}{%
  6351. \fancyhf{}%
  6352. \renewcommand{\headrulewidth}{\z@}%
  6353. \renewcommand{\footrulewidth}{\z@}%
  6354. \if@ACM@journal@bibstrip
  6355. \ifcase\ACM@format@nr
  6356. \relax % manuscript
  6357. \fancyhead[L]{\ACM@linecountL}%
  6358. \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
  6359. \if@ACM@nonacm\else%
  6360. \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
  6361. \fi%
  6362. \or % acmsmall
  6363. \if@ACM@nonacm\else%
  6364. \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
  6365. \@acmNumber, Article \@acmArticle. Publication date:
  6366. \@acmPubDate.}%
  6367. \fi%
  6368. \fancyhead[LE]{\ACM@linecountL\@folioblob}%
  6369. \fancyhead[LO]{\ACM@linecountL}%
  6370. \fancyhead[RO]{\@folioblob}%
  6371. \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
  6372. \or % acmlarge
  6373. \if@ACM@nonacm\else%
  6374. \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
  6375. \@acmNumber, Article \@acmArticle. Publication date:
  6376. \@acmPubDate.}%
  6377. \fi%
  6378. \fancyhead[RO]{\@folioblob}%
  6379. \fancyhead[LE]{\ACM@linecountL\@folioblob}%
  6380. \fancyhead[LO]{\ACM@linecountL}%
  6381. \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
  6382. \or % acmtog
  6383. \if@ACM@nonacm\else%
  6384. \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
  6385. \@acmNumber, Article \@acmArticle. Publication date:
  6386. \@acmPubDate.}%
  6387. \fi%
  6388. \fancyhead[L]{\ACM@linecountL}%
  6389. \fancyhead[R]{\ACM@linecountR}%
  6390. \else % Conference proceedings
  6391. \fancyhead[L]{\ACM@linecountL}%
  6392. \fancyhead[R]{\ACM@linecountR}%
  6393. \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
  6394. \fi
  6395. \else
  6396. \fancyhead[L]{\ACM@linecountL}%
  6397. \fancyhead[R]{\ACM@linecountR}%
  6398. \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
  6399. \fi
  6400. \if@ACM@timestamp
  6401. \ifnum\ACM@format@nr=0\relax % Manuscript
  6402. \fancyfoot[LO,RE]{\ACM@timestamp\quad
  6403. \if@ACM@nonacm\else
  6404. \footnotesize Manuscript submitted to ACM
  6405. \fi}
  6406. \else
  6407. \fancyfoot[LO,RE]{\ACM@timestamp}
  6408. \fi
  6409. \fi
  6410. }}
  6411. % \end{macrocode}
  6412. %
  6413. % \end{macro}
  6414. %
  6415. %
  6416. %\subsection{Sectioning}
  6417. %\label{sec:sectioninng}
  6418. %
  6419. % \begin{macro}{\ACM@NRadjust}
  6420. % \changes{v1.54}{2018/06/17}{Added macro}
  6421. % Ross Moore's macro.
  6422. % \begin{quotation}
  6423. % Initially |\ACM@sect@format@| just passes through its |#1|
  6424. % argument unchanged.
  6425. % When a sectioning macro such as |\section| occurs, the
  6426. % |\ACM@NRadjust| redefines |\ACM@sect@format@| to expand into the
  6427. % styling commands; e.g., |\@secfont|.
  6428. % Then |\Sectionformat| is temporarily redefined to produce
  6429. % |\realSectionformat{\ACM@sect@format{#1}}{#2}|, which ultimately
  6430. % becomes |\Sectionformat{\@secfont{#1}}{#2}|.
  6431. % This is done to allow |\Sectionformat| to be variable, as may be
  6432. % needed in particular circumstances. Its current expansion is saved
  6433. % as |\realSectionformat| which is used with the modified 1st argument,
  6434. % then |\Sectionformat| is reverted to its former expansion.
  6435. %
  6436. % To style the section-number, the line |#1{}| is used at the end of
  6437. % |\ACM@NRadjust|. This imposes style-changing commands for fonts and
  6438. % sizes, but any |\MakeUppercase| acts on just the |{}|. It's a bit hacky,
  6439. % by essentially assuming that only numbers occur here, not letters to
  6440. % be case-changed. (This should be acceptable in a class-file, as it
  6441. % ought to be possible to change the case elsewhere, if that was ever
  6442. % desired.) Also, it can result in |\@adddotafter| being called too
  6443. % soon, so a slight adjustment is made, via |\ACM@adddotafter|, which
  6444. % now tests whether its argument is empty. But the coding has to allow
  6445. % for other packages to have also patched |\@adddotafter|.
  6446. % \end{quotation}
  6447. % \begin{macrocode}
  6448. \def\ACM@NRadjust#1{%
  6449. \begingroup
  6450. \expandafter\ifx\csname Sectionformat\endcsname\relax
  6451. % do nothing when \Sectionformat is unknown
  6452. \def\next{\endgroup #1}%
  6453. \else
  6454. \def\next{\endgroup
  6455. \let\realSectionformat\Sectionformat
  6456. \def\ACM@sect@format@{#1}%
  6457. \let\Sectionformat\ACM@NR@adjustedSectionformat
  6458. %% next lines added 2018-06-17 to ensure section number is styled
  6459. \let\real@adddotafter\@adddotafter
  6460. \let\@adddotafter\ACM@adddotafter
  6461. #1{}% imposes the styles, but nullifies \MakeUppercase
  6462. \let\@adddotafter\real@adddotafter
  6463. }%
  6464. \fi \next
  6465. }
  6466. % \end{macrocode}
  6467. % \end{macro}
  6468. %
  6469. % \begin{macro}{\ACM@NR@adjustedSectionformat}
  6470. % \changes{v1.54}{2018/06/17}{Added macro}
  6471. % \begin{macrocode}
  6472. \def\ACM@NR@adjustedSectionformat#1#2{%
  6473. \realSectionformat{\ACM@sect@format{#1}}{#2}%
  6474. \let\Sectionformat\realSectionformat}
  6475. \DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@}
  6476. \def\ACM@sect@format@null#1{#1}
  6477. \let\ACM@sect@format@\ACM@sect@format@null
  6478. \AtBeginDocument{%
  6479. \expandafter\ifx\csname LTX@adddotafter\endcsname\relax
  6480. \let\LTX@adddotafter\@adddotafter
  6481. \fi
  6482. }
  6483. % \end{macrocode}
  6484. %
  6485. % \end{macro}
  6486. % \begin{macro}{\ACM@adddotafter}
  6487. % \changes{v1.54}{2018/06/17}{Added macro}
  6488. % \begin{macrocode}
  6489. \def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi}
  6490. % \end{macrocode}
  6491. %
  6492. % \end{macro}
  6493. %
  6494. % \changes{v1.54}{2018/05/27}{Deleted indent for subsubsection}
  6495. % \changes{v1.54}{2018/06/17}{Added Ross's patch for sectioning}
  6496. % Sectioning is different for different levels
  6497. % \begin{macrocode}
  6498. \renewcommand\section{\@startsection{section}{1}{\z@}%
  6499. {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
  6500. {.25\baselineskip}%
  6501. {\ACM@NRadjust\@secfont}}
  6502. \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
  6503. {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
  6504. {.25\baselineskip}%
  6505. {\ACM@NRadjust\@subsecfont}}
  6506. \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
  6507. {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
  6508. {-3.5\p@}%
  6509. {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}}
  6510. \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
  6511. {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
  6512. {-3.5\p@}%
  6513. {\ACM@NRadjust{\@parfont\@adddotafter}}}
  6514. \renewcommand\part{\@startsection{part}{9}{\z@}%
  6515. {-10\p@ \@plus -4\p@ \@minus -2\p@}%
  6516. {4\p@}%
  6517. {\ACM@NRadjust\@parfont}}
  6518. % \end{macrocode}
  6519. %
  6520. % \begin{macro}{\section@raggedright}
  6521. % \changes{v1.12}{2016/05/30}{Introduced macro}%
  6522. % Special version of \cs{raggedright} compatible with
  6523. % \cs{MakeUppercase}
  6524. % \begin{macrocode}
  6525. \def\section@raggedright{\@rightskip\@flushglue
  6526. \rightskip\@rightskip
  6527. \leftskip\z@skip
  6528. \parindent\z@}
  6529. % \end{macrocode}
  6530. %
  6531. % \end{macro}
  6532. %
  6533. %
  6534. % \begin{macro}{\@secfont}
  6535. % \begin{macro}{\@subsecfont}
  6536. % \begin{macro}{\@subsubsecfont}
  6537. % \begin{macro}{\@parfont}
  6538. % \changes{v1.12}{2016/05/30}{Moved to \cs{section@raggedright}}%
  6539. % \changes{v1.40}{2017/06/04}{Switched to MakeTextUppercase}
  6540. % \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to
  6541. % \cs{sffamily}\cs{bfseries}}
  6542. % Fonts for sections etc. are different for different formats.
  6543. % \begin{macrocode}
  6544. \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
  6545. \def\@subsecfont{\sffamily\bfseries\section@raggedright}
  6546. \def\@subsubsecfont{\sffamily\itshape}
  6547. \def\@parfont{\itshape}
  6548. \setcounter{secnumdepth}{3}
  6549. \ifcase\ACM@format@nr
  6550. \relax % manuscript
  6551. \or % acmsmall
  6552. \or % acmlarge
  6553. \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
  6554. \def\@subsecfont{\sffamily\large\section@raggedright}
  6555. \or % acmtog
  6556. \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
  6557. \def\@subsecfont{\sffamily\large\section@raggedright}
  6558. \or % sigconf
  6559. \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
  6560. \def\@subsecfont{\bfseries\Large\section@raggedright}
  6561. \or % siggraph
  6562. \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
  6563. \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
  6564. \or % sigplan
  6565. \def\@secfont{\bfseries\Large\section@raggedright}
  6566. \def\@subsecfont{\bfseries\section@raggedright}
  6567. \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
  6568. {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
  6569. {.25\baselineskip}%
  6570. {\@subsubsecfont}}
  6571. \def\@subsubsecfont{\bfseries\section@raggedright}
  6572. \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
  6573. {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
  6574. {-3.5\p@}%
  6575. {\@parfont\@addspaceafter}}
  6576. \def\@parfont{\bfseries\itshape}
  6577. \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
  6578. {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
  6579. {-3.5\p@}%
  6580. {\@subparfont\@addspaceafter}}
  6581. \def\@subparfont{\itshape}
  6582. \or % sigchi
  6583. \setcounter{secnumdepth}{1}
  6584. \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
  6585. \def\@subsecfont{\sffamily\bfseries\section@raggedright}
  6586. \or % sigchi-a
  6587. \setcounter{secnumdepth}{0}
  6588. \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
  6589. \def\@subsecfont{\sffamily\bfseries\section@raggedright}
  6590. \fi
  6591. % \end{macrocode}
  6592. %
  6593. % \end{macro}
  6594. % \end{macro}
  6595. % \end{macro}
  6596. % \end{macro}
  6597. %
  6598. % \begin{macro}{\@adddotafter}
  6599. % Add punctuation after a sectioning command
  6600. % \begin{macrocode}
  6601. \def\@adddotafter#1{#1\@addpunct{.}}
  6602. % \end{macrocode}
  6603. %
  6604. % \end{macro}
  6605. %
  6606. % \begin{macro}{\@addspaceafter}
  6607. % Add space after a sectioning command
  6608. % \begin{macrocode}
  6609. \def\@addspaceafter#1{#1\@addpunct{\enspace}}
  6610. % \end{macrocode}
  6611. %
  6612. % \end{macro}
  6613. %
  6614. %\subsection{TOC lists}
  6615. %\label{sec:tocs}
  6616. %
  6617. % \begin{macro}{\@dotsep}
  6618. % Related to the \cs{tableofcontents} are all the horizontal fillers. Base
  6619. % \LaTeX\ defines \cs{@dottedtocline}, which we should not disable. Yet, this
  6620. % command expects \cs{@dotsep} to be defined but leaves this to the class
  6621. % implementation. Since |amsart| does not provide this, we copy the standard
  6622. % variant from |article| here.
  6623. % \begin{macrocode}
  6624. \providecommand*\@dotsep{4.5}
  6625. % \end{macrocode}
  6626. % \end{macro}
  6627. %
  6628. %
  6629. %
  6630. %\subsection{Theorems}
  6631. %\label{sec:theorems}
  6632. %
  6633. % \begin{macro}{\@acmplainbodyfont}
  6634. % The font to typeset the body of the |acmplain| theorem style.
  6635. % \begin{macrocode}
  6636. \def\@acmplainbodyfont{\itshape}
  6637. % \end{macrocode}
  6638. %
  6639. % \end{macro}
  6640. %
  6641. % \begin{macro}{\@acmplainindent}
  6642. % The amount to indent the |acmplain| theorem style.
  6643. % \begin{macrocode}
  6644. \def\@acmplainindent{\parindent}
  6645. % \end{macrocode}
  6646. %
  6647. % \end{macro}
  6648. %
  6649. % \begin{macro}{\@acmplainheadfont}
  6650. % The font to typeset the head of the |acmplain| theorem style.
  6651. % \begin{macrocode}
  6652. \def\@acmplainheadfont{\scshape}
  6653. % \end{macrocode}
  6654. %
  6655. % \end{macro}
  6656. %
  6657. % \begin{macro}{\@acmplainnotefont}
  6658. % The font to typeset the note of the |acmplain| theorem style.
  6659. % \begin{macrocode}
  6660. \def\@acmplainnotefont{\@empty}
  6661. % \end{macrocode}
  6662. %
  6663. % \end{macro}
  6664. %
  6665. % Customization of the |acmplain| theorem style:
  6666. % \begin{macrocode}
  6667. \ifcase\ACM@format@nr
  6668. \relax % manuscript
  6669. \or % acmsmall
  6670. \or % acmlarge
  6671. \or % acmtog
  6672. \or % sigconf
  6673. \or % siggraph
  6674. \or % sigplan
  6675. \def\@acmplainbodyfont{\itshape}
  6676. \def\@acmplainindent{\z@}
  6677. \def\@acmplainheadfont{\bfseries}
  6678. \def\@acmplainnotefont{\normalfont}
  6679. \or % sigchi
  6680. \or % sigchi-a
  6681. \fi
  6682. % \end{macrocode}
  6683. %
  6684. % \begin{macro}{acmplain}
  6685. % The |acmplain| theorem style
  6686. % \begin{macrocode}
  6687. \newtheoremstyle{acmplain}%
  6688. {.5\baselineskip\@plus.2\baselineskip
  6689. \@minus.2\baselineskip}% space above
  6690. {.5\baselineskip\@plus.2\baselineskip
  6691. \@minus.2\baselineskip}% space below
  6692. {\@acmplainbodyfont}% body font
  6693. {\@acmplainindent}% indent amount
  6694. {\@acmplainheadfont}% head font
  6695. {.}% punctuation after head
  6696. {.5em}% spacing after head
  6697. {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec
  6698. % \end{macrocode}
  6699. %
  6700. % \end{macro}
  6701. %
  6702. %
  6703. % \begin{macro}{\@acmdefinitionbodyfont}
  6704. % The font to typeset the body of the |acmdefinition| theorem style.
  6705. % \begin{macrocode}
  6706. \def\@acmdefinitionbodyfont{\normalfont}
  6707. % \end{macrocode}
  6708. %
  6709. % \end{macro}
  6710. %
  6711. % \begin{macro}{\@acmdefinitionindent}
  6712. % The amount to indent the |acmdefinition| theorem style.
  6713. % \begin{macrocode}
  6714. \def\@acmdefinitionindent{\parindent}
  6715. % \end{macrocode}
  6716. %
  6717. % \end{macro}
  6718. %
  6719. % \begin{macro}{\@acmdefinitionheadfont}
  6720. % The font to typeset the head of the |acmdefinition| theorem style.
  6721. % \begin{macrocode}
  6722. \def\@acmdefinitionheadfont{\itshape}
  6723. % \end{macrocode}
  6724. %
  6725. % \end{macro}
  6726. %
  6727. % \begin{macro}{\@acmdefinitionnotefont}
  6728. % The font to typeset the note of the |acmdefinition| theorem style.
  6729. % \begin{macrocode}
  6730. \def\@acmdefinitionnotefont{\@empty}
  6731. % \end{macrocode}
  6732. %
  6733. % \end{macro}
  6734. %
  6735. % Customization of the |acmdefinition| theorem style:
  6736. % \begin{macrocode}
  6737. \ifcase\ACM@format@nr
  6738. \relax % manuscript
  6739. \or % acmsmall
  6740. \or % acmlarge
  6741. \or % acmtog
  6742. \or % sigconf
  6743. \or % siggraph
  6744. \or % sigplan
  6745. \def\@acmdefinitionbodyfont{\normalfont}
  6746. \def\@acmdefinitionindent{\z@}
  6747. \def\@acmdefinitionheadfont{\bfseries}
  6748. \def\@acmdefinitionnotefont{\normalfont}
  6749. \or % sigchi
  6750. \or % sigchi-a
  6751. \fi
  6752. % \end{macrocode}
  6753. %
  6754. % \begin{macro}{acmdefinition}
  6755. % The |acmdefinition| theorem style
  6756. % \begin{macrocode}
  6757. \newtheoremstyle{acmdefinition}%
  6758. {.5\baselineskip\@plus.2\baselineskip
  6759. \@minus.2\baselineskip}% space above
  6760. {.5\baselineskip\@plus.2\baselineskip
  6761. \@minus.2\baselineskip}% space below
  6762. {\@acmdefinitionbodyfont}% body font
  6763. {\@acmdefinitionindent}% indent amount
  6764. {\@acmdefinitionheadfont}% head font
  6765. {.}% punctuation after head
  6766. {.5em}% spacing after head
  6767. {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
  6768. % \end{macrocode}
  6769. %
  6770. % \end{macro}
  6771. %
  6772. % Make |acmplain| the default theorem style.
  6773. % \begin{macrocode}
  6774. \theoremstyle{acmplain}
  6775. % \end{macrocode}
  6776. %
  6777. % Delay defining the theorem environments until after other packages
  6778. % have been loaded. In particular, the |cleveref| package must be
  6779. % loaded before the theorem environments are defined in order to show
  6780. % the correct environment name (see
  6781. % \url{https://github.com/borisveytsman/acmart/issues/138}). The |acmthm|
  6782. % option is used to suppress the definition of any theorem
  6783. % environments. Also, to avoid obscure errors arising from these
  6784. % environment definitions conflicting with environments defined by the
  6785. % user or by user-loaded packages, we only define environments that
  6786. % have not yet been defined.
  6787. % \begin{macrocode}
  6788. \AtEndPreamble{%
  6789. \if@ACM@acmthm
  6790. \theoremstyle{acmplain}
  6791. \@ifundefined{theorem}{%
  6792. \newtheorem{theorem}{Theorem}[section]
  6793. }{}
  6794. \@ifundefined{conjecture}{%
  6795. \newtheorem{conjecture}[theorem]{Conjecture}
  6796. }{}
  6797. \@ifundefined{proposition}{%
  6798. \newtheorem{proposition}[theorem]{Proposition}
  6799. }{}
  6800. \@ifundefined{lemma}{%
  6801. \newtheorem{lemma}[theorem]{Lemma}
  6802. }{}
  6803. \@ifundefined{corollary}{%
  6804. \newtheorem{corollary}[theorem]{Corollary}
  6805. }{}
  6806. \theoremstyle{acmdefinition}
  6807. \@ifundefined{example}{%
  6808. \newtheorem{example}[theorem]{Example}
  6809. }{}
  6810. \@ifundefined{definition}{%
  6811. \newtheorem{definition}[theorem]{Definition}
  6812. }{}
  6813. \fi
  6814. \theoremstyle{acmplain}
  6815. }
  6816. % \end{macrocode}
  6817. %
  6818. %
  6819. % \begin{macro}{\@proofnamefont}
  6820. % The font to typeset the proof name.
  6821. % \begin{macrocode}
  6822. \def\@proofnamefont{\scshape}
  6823. % \end{macrocode}
  6824. %
  6825. % \end{macro}
  6826. %
  6827. % \begin{macro}{\@proofindent}
  6828. % Whether or not to indent proofs.
  6829. % \begin{macrocode}
  6830. \def\@proofindent{\indent}
  6831. % \end{macrocode}
  6832. %
  6833. % \end{macro}
  6834. %
  6835. % Customization of the proof environment.
  6836. % \begin{macrocode}
  6837. \ifcase\ACM@format@nr
  6838. \relax % manuscript
  6839. \or % acmsmall
  6840. \or % acmlarge
  6841. \or % acmtog
  6842. \or % sigconf
  6843. \or % siggraph
  6844. \or % sigplan
  6845. \def\@proofnamefont{\itshape}
  6846. \def\@proofindent{\noindent}
  6847. \or % sigchi
  6848. \or % sigchi-a
  6849. \fi
  6850. % \end{macrocode}
  6851. %
  6852. % \begin{macro}{proof}
  6853. % We want some customization of the proof environment.
  6854. % \begin{macrocode}
  6855. \renewenvironment{proof}[1][\proofname]{\par
  6856. \pushQED{\qed}%
  6857. \normalfont \topsep6\p@\@plus6\p@\relax
  6858. \trivlist
  6859. \item[\@proofindent\hskip\labelsep
  6860. {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
  6861. }{%
  6862. \popQED\endtrivlist\@endpefalse
  6863. }
  6864. % \end{macrocode}
  6865. %
  6866. % \end{macro}
  6867. %
  6868. %
  6869. %
  6870. %\subsection{Balancing columns}
  6871. %\label{sec:balancing}
  6872. %
  6873. % We need balancing only if the user did not disable it, and we use a
  6874. % two column format
  6875. % \begin{macrocode}
  6876. \AtEndPreamble{%
  6877. \if@ACM@balance
  6878. \ifcase\ACM@format@nr
  6879. \relax % manuscript
  6880. \global\@ACM@balancefalse
  6881. \or % acmsmall
  6882. \global\@ACM@balancefalse
  6883. \or % acmlarge
  6884. \global\@ACM@balancefalse
  6885. \or % acmtog
  6886. \RequirePackage{balance}%
  6887. \or % sigconf
  6888. \RequirePackage{balance}%
  6889. \or % siggraph
  6890. \RequirePackage{balance}%
  6891. \or % sigplan
  6892. \RequirePackage{balance}%
  6893. \or % sigchi
  6894. \RequirePackage{balance}%
  6895. \or % sigchi-a
  6896. \global\@ACM@balancefalse
  6897. \fi
  6898. \fi
  6899. }
  6900. \AtEndDocument{%
  6901. \if@ACM@balance
  6902. \if@twocolumn
  6903. \balance
  6904. \fi\fi}
  6905. % \end{macrocode}
  6906. %
  6907. %
  6908. %\subsection{Acknowledgments}
  6909. %\label{sec:acks}
  6910. %
  6911. % \begin{macro}{\acksname}
  6912. % \changes{v1.56}{2018/10/16}{Added macro (Philip Quinn)}
  6913. % \begin{macrocode}
  6914. \newcommand\acksname{Acknowledgments}
  6915. % \end{macrocode}
  6916. %
  6917. % \end{macro}
  6918. %
  6919. % \begin{macro}{\acks}
  6920. % \changes{v1.19}{2016/07/28}{Include 'Acknowledgements' in PDF bookmarks
  6921. % (Matthew Fluet)}
  6922. % \changes{v1.15}{2016/07/05}{Added macro}
  6923. % This is a |comment|-like structure
  6924. % \begin{macrocode}
  6925. \specialcomment{acks}{%
  6926. \begingroup
  6927. \section*{\acksname}
  6928. \phantomsection\addcontentsline{toc}{section}{\acksname}
  6929. }{%
  6930. \endgroup
  6931. }
  6932. % \end{macrocode}
  6933. %
  6934. % \end{macro}
  6935. %
  6936. % \begin{macro}{\grantsponsor}
  6937. % \changes{v1.15}{2016/07/05}{Added macro}
  6938. % \changes{v1.17}{2016/07/10}{Renamed}
  6939. % We just typeset the name of the sponsor
  6940. % \begin{macrocode}
  6941. \def\grantsponsor#1#2#3{#2}
  6942. % \end{macrocode}
  6943. %
  6944. % \end{macro}
  6945. %
  6946. % \begin{macro}{\grantnum}
  6947. % \changes{v1.15}{2016/07/05}{Added macro}
  6948. % \changes{v1.17}{2016/07/10}{Added url}
  6949. % \begin{macrocode}
  6950. \newcommand\grantnum[3][]{#3%
  6951. \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
  6952. % \end{macrocode}
  6953. %
  6954. % \end{macro}
  6955. %
  6956. % \subsection{Conditional typesetting}
  6957. % \label{sec:conditional}
  6958. %
  6959. % We use the |comment| package for conditional typesetting:
  6960. % \begin{macrocode}
  6961. \AtEndPreamble{%
  6962. \if@ACM@screen
  6963. \includecomment{screenonly}
  6964. \excludecomment{printonly}
  6965. \else
  6966. \excludecomment{screenonly}
  6967. \includecomment{printonly}
  6968. \fi
  6969. \if@ACM@anonymous
  6970. \excludecomment{anonsuppress}
  6971. \excludecomment{acks}
  6972. \else
  6973. \includecomment{anonsuppress}
  6974. \fi}
  6975. % \end{macrocode}
  6976. %
  6977. %
  6978. %
  6979. %\subsection{Additional bibliography commands}
  6980. %\label{sec:bibliography}
  6981. %
  6982. % \begin{macro}{\showeprint}
  6983. % \changes{v1.21}{2016/09/04}{Added macro}
  6984. % The command \cs{showeprint} has two arguments: the (optional) prefix
  6985. % and the eprint number. Right now the only prefix we understand is
  6986. % the (lowercase) word `arxiv' (see
  6987. % \url{http://arxiv.org/hypertex/bibstyles/}).
  6988. % \begin{macrocode}
  6989. \newcommand\showeprint[2][arxiv]{%
  6990. \def\@tempa{#1}%
  6991. \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
  6992. \def\@tempb{arxiv}%
  6993. \ifx\@tempa\@tempb
  6994. arXiv:\href{http://arxiv.org/abs/#2}{#2}\else arXiv:#2%
  6995. \fi}
  6996. % \end{macrocode}
  6997. %
  6998. %
  6999. % \end{macro}
  7000. %
  7001. %\subsection{End of Class}
  7002. %\label{end}
  7003. %
  7004. % \begin{macro}{\vspace}
  7005. % \changes{v1.57}{2018/12/16}{Added warning}
  7006. % \changes{v1.58}{2019/01/23}{Preserved old versions as
  7007. % \cs{@vspace@orig} and \cs{@vspace@orig}}
  7008. % We do not disable \cs{vspace}, but add warning to it
  7009. % \begin{macrocode}
  7010. \let\@vspace@orig=\@vspace
  7011. \let\@vspacer@orig=\@vspacer
  7012. \apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should
  7013. only be used to provide space above/below surrounding
  7014. objects}}{}{}
  7015. \apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should
  7016. only be used to provide space above/below surrounding
  7017. objects}}{}{}
  7018. % \end{macrocode}
  7019. %
  7020. % \end{macro}
  7021. %
  7022. %
  7023. % \begin{macro}{\ACM@origbaselinestretch}
  7024. % \changes{v1.57}{2018/12/16}{Added check whether the user changed
  7025. % \cs{baselinestretch}}
  7026. % We produce an error if the user tries to change \cs{baselinestretch}
  7027. % \begin{macrocode}
  7028. \let\ACM@origbaselinestretch\baselinestretch
  7029. \AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else
  7030. \ClassError{\@classname}{An attempt to redefine
  7031. \string\baselinestretch\space detected. Please do not do this for
  7032. ACM submissions!}\fi}
  7033. % \end{macrocode}
  7034. %
  7035. % \end{macro}
  7036. %
  7037. % \changes{v1.30}{2017/02/10}{Added \cs{frenchspacing}}
  7038. % \begin{macrocode}
  7039. \normalsize\normalfont\frenchspacing
  7040. %</class>
  7041. % \end{macrocode}
  7042. %
  7043. %\Finale
  7044. %\clearpage
  7045. %
  7046. %\PrintChanges
  7047. %\clearpage
  7048. %\PrintIndex
  7049. %
  7050. \endinput