On this page:
manuscript
acmsmall
acmlarge
acmtog
sigconf
siggraph
sigplan
sigchi
sigchi-a
dtrap
tiot
tdsci
review
screen
natbib
anonymous
authorversion
nonacm
timestamp
authordraft
acmthm
9pt
10pt
11pt
12pt
abstract
include-abstract
title
subtitle
author
authornote
acm  Journal
acm  Conference
acm  Volume
acm  Number
acm  Article
acm  Year
acm  Month
acm  Article  Seq
acm  Price
acm  ISBN
acm  DOI
acm  Badge  L
acm  Badge  R
email
email-string
email?
affiliation
affiliation?
institution
institution?
authorsaddresses
shortauthors
terms
keywords
start  Page
ccsdesc
received
teaserfigure
sidebar
marginfigure
margintable
printonly
screenonly
anonsuppress
acks
grantsponsor
grantnum
8.15.0.10

3.6 ACM Paper Format🔗ℹ

The scribble/acmart language is like scribble/base, but configured with LaTeX style defaults to use the acmart class for typesetting publications for the Association of Computing Machinery.
It is based on v2.10 of Boris Veytsman’s LaTeX package, which has its own documention.

Note: a scribble/acmart document must include a title and author.

Example:

  #lang scribble/acmart

  @title{Surreal Numbers}

  @author{Ursula N. Owens}

syntax

manuscript

syntax

acmsmall

syntax

acmlarge

syntax

acmtog

syntax

sigconf

syntax

siggraph

syntax

sigplan

syntax

sigchi

syntax

sigchi-a

syntax

dtrap

syntax

tiot

syntax

tdsci

Enables the given document format. Use the format only on the same line as #lang, with only whitespace (or other options) between scribble/acmart and the format name:

  #lang scribble/acmart @acmsmall

The manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph, sigplan, sigchi, and sigchi-a formats are all mutually exclusive.

syntax

review

syntax

screen

syntax

natbib

syntax

anonymous

syntax

authorversion

syntax

nonacm

syntax

timestamp

syntax

authordraft

syntax

acmthm

syntax

9pt

syntax

10pt

syntax

11pt

syntax

12pt

Enables the given document format option. Use the option only on the same line as #lang, with only whitespace (or other options) between scribble/acmart and the format option. Any number of options may be used:

  #lang scribble/acmart @acmsmall @review @anonymous @natbib

If multiple font size options are used, all but the last are ignored.

The official acmart release provides these defaults and descriptions:

name

 

default

 

description

review

 

false

 

A review version: lines are numbered and hyperlinks are colored

screen

 

"see text"

 

A screen version: hyperlinks are colored

natbib

 

true

 

Whether to use the natbib package

anonymous

 

false

 

Whether to make author(s) anonymous

authorversion

 

false

 

Whether to generate a special version for the authors’ personal use or posting

nonacm

 

false

 

Use the class typesetting options for a non-ACM document, which will not include the conference/journal header and footers or permission statements

timestamp

 

false

 

Whether to put a time stamp in the footer of each page

authordraft

 

false

 

Whether author’s-draft mode is enabled

acmthm

 

true

 

Whether to define theorem-like environments

balance

 

true

 

Whether to balance the last page in two column mode

pbalance

 

false

 

Whether to balance the last page in two column mode using pbalance package

urlbreakonhyphens

 

true

 

Whether to break urls on hyphens

Further details for some of these are provided by the full documentation for the acmart LaTeX class.

In order to disable a default-true option (e.g. natbib), call the option as a function with the value #false:

#lang scribble/acmart @natbib[#f] @sigplan

procedure

(abstract pre-content ...)  block?

  pre-content : pre-content?
Generates a nested flow for a paper abstract.

syntax

(include-abstract module-path)

Similar to include-section, but incorporates the document in the specified module as an abstract. The document must have no title or sub-parts.

procedure

(title [#:short short-title    
  #:tag tag    
  #:tag-prefix prefix    
  #:style style    
  #:version version    
  #:date date]    
  title ...)  title-decl?
  short-title : pre-content? = #f
  tag : (or/c string? (listof string?) #f) = #f
  prefix : (or/c string? module-path? #f) = #f
  style : (or/c style? string? symbol? #f) = #f
  version : (or/c string? #f) = #f
  date : (or/c string? #f) = #f
  title : pre-content?
Specifies the title of the document, optionally with a short version of the title for running heads.

procedure

(subtitle pre-content ...)  content?

  pre-content : pre-content?
Specifies a subtitle.

procedure

(author [#:orcid orcid    
  #:affiliation affiliation    
  #:email email]    
  name ...)  block?
  orcid : (or/c pre-content? #f) = #f
  affiliation : 
(or/c pre-content?
      affiliation?
      (listof pre-content?)
      (listof affiliation?)
      #f)
 = #f
  email : (or/c pre-content? email? (listof email?)) = '()
  name : pre-content?
Specifies an author with an optional email address, affiliation, and/or orcid.

#lang scribble/acmart
@title{Title}
@author["Unboxed Value"
        #:email (list (email "user@server.com")
                      (email-string "case--Int#@GHC.Prim.info"))]}
 
@abstract{abstracting abstract title}

procedure

(authornote text ...)  block?

  text : pre-content?
Attaches a footnote to an author name.

procedure

(acmJournal journal ...)  block?

  journal : pre-content?

procedure

(acmConference name date venue)  block?

  name : pre-content?
  date : pre-content?
  venue : pre-content?

procedure

(acmVolume content ...)  block?

  content : pre-content?

procedure

(acmNumber content ...)  block?

  content : pre-content?

procedure

(acmArticle content ...)  block?

  content : pre-content?

procedure

(acmYear content ...)  block?

  content : pre-content?

procedure

(acmMonth content ...)  block?

  content : pre-content?

procedure

(acmArticleSeq content ...)  block?

  content : pre-content?

procedure

(acmPrice content ...)  block?

  content : pre-content?

procedure

(acmISBN content ...)  block?

  content : pre-content?

procedure

(acmDOI content ...)  block?

  content : pre-content?
Declares information that is collected into the front-matter region of the paper.

procedure

(acmBadgeL [#:url url] graphics)  block?

  url : string? = #f
  graphics : string?

procedure

(acmBadgeR [#:url url] graphics)  block?

  url : string? = #f
  graphics : string?
Display a special badge, such as an artifact evaluation badge, on the left or right of the first page. If url is provided, the screen version of the image links to the badge authority.

procedure

(email text ...)  email?

  text : pre-content?

procedure

(email-string text ...)  email?

  text : string?
Creates an email? object for use with author.

email-string is like email except that email-string only takes strings, escapes all % and # characters in the arguments and typesets the email address with the 'exact-chars style.

procedure

(email? email)  boolean?

  email : any/c
Returns #t if email is an email, #f otherwise.

procedure

(affiliation [#:position position    
  #:institution institution    
  #:street-address street-address    
  #:city city    
  #:state state    
  #:postcode postcode    
  #:country country])  affiliation?
  position : (or/c pre-content? #f) = #f
  institution : (listof (or/c pre-content? institution?)) = '()
  street-address : (or/c pre-content? #f) = #f
  city : (or/c pre-content? #f) = #f
  state : (or/c pre-content? #f) = #f
  postcode : (or/c pre-content? #f) = #f
  country : (or/c pre-content? #f) = #f
Creates an affiliation? object for use with author.

procedure

(affiliation? aff)  boolean?

  aff : any/c
Returns #t if aff is an affiliation, #f otherwise.

procedure

(institution [#:departments departments]    
  inst ...)  institution?
  departments : (or/c pre-content? institution? (listof institution))
   = '()
  inst : institution?
Creates an institution? object for use in author.

procedure

(institution? inst)  boolean

  inst : any/c
Returns #t if inst is an institution, #f otherwise.

#lang scribble/acmart
@title{Some Title}
@author["David Van Horn"
        #:affiliation @affiliation[
                       #:institution
                       @institution[
                        #:departments (list @institution{Department of Computer Science}
                                            @institution{UMIACS})]{
                         University of Maryland}
                       #:city "College Park"
                       #:state "Maryland"]
        #:email "dvanhorn@cs.umd.edu"]}
 
@abstract{This is an abstract.}

procedure

(authorsaddresses addresses ...)  block?

  addresses : pre-content?
Sets the text for the authors’ addresses on the first page in some styles. By default this field is set to the authors and their affiliation information.

The addresses parameter takes the address text. As a special case the empty list removes the addresses field entirely.

#lang scribble/acmart @acmsmall
@title{A fancy paper}
@author["Ronon Dex"]
@authorsaddresses{}

Added in version 1.26 of package scribble-lib.

procedure

(shortauthors name ...)  element?

  name : pre-content?
Sets the text for the names of the authors in the running header.

Added in version 1.29 of package scribble-lib.

procedure

(terms content ...)  content?

  content : pre-content?

procedure

(keywords content ...)  content?

  content : pre-content?
Typesets term and keyword information for the paper, which is normally placed immediately after an abstract or include-abstract form. See also http://www.acm.org/about/class/how-to-use.

For terms, each general term should be in titlecase. Terms are usually drawn from a fixed list, and they are usually optional.

The keywords procedure generates the “Additional Key Words and Phrases” section. Capitalize only the first letter of the first word, separate phrases by commas, and do not include “and” before the last one. Keywords should be noun phrases, not adjectives.

procedure

(startPage content ...)  content?

  content : pre-content?
Sets the start page for the paper.

procedure

(ccsdesc #:number number? content ...)  content?

  number? : #f
  content : pre-content?
Declares CCS description with optional numeric code. This generates the “CCS Concepts” section. When using the ACM Computing Classification System tool, it will give you some LaTeX code, for example:

\ccsdesc[500]{Software and its engineering~Functional languages}

\ccsdesc[500]{Software and its engineering~Imperative languages}

Those calls translate into:
@ccsdesc[#:number 500]{Software and its engineering~Functional languages}
@ccsdesc[#:number 500]{Software and its engineering~Imperative languages}

procedure

(received [#:stage stage] date)  content?

  stage : string? = #f
  date : string?
Sets the history of the publication. If stage is omitted, it defaults to "Received" for the first occurrence and "revised" in subsequent uses.

@received{February 2007}
@received[#:stage "revised"]{March 2009}
@received[#:stage "accepted"]{June 2009}

procedure

(teaserfigure content ...)  block?

  content : pre-flow?
Creates a teaser figure to appear before main text.

procedure

(sidebar content ...)  block?

  content : pre-flow?

procedure

(marginfigure content ...)  block?

  content : pre-flow?

procedure

(margintable content ...)  block?

  content : pre-flow?
In the sigchi-a format, special sidebars, tables and figures on the margin.

procedure

(printonly content ...)  block?

  content : pre-flow?

procedure

(screenonly content ...)  block?

  content : pre-flow?

procedure

(anonsuppress content ...)  block?

  content : pre-flow?
Marks content to be included only for print or screen editions, or excluded from anonymous editions.

procedure

(acks content ...)  block?

  content : pre-flow?
Creates an unnumbered section “Acknowledgments” section, unless the anonymous mode is selected.

procedure

(grantsponsor sponsorID name url)  content?

  sponsorID : string?
  name : string?
  url : string?

procedure

(grantnum [#:url url] sponsorID num)  content?

  url : string? = #f
  sponsorID : string?
  num : string?
All financial support must be listed using the grantsponsor and grantnum commands inside of acks.

Here sponsorID is the unique ID used to match grants to sponsors, name is the name of the sponsor. The sponsorID of a grantnum must match some sponsorID of a grantsponsor command.

@acks{
  The author thanks Ben Greenman for helpful comments on this
  code. Financial support provided by the @grantsponsor["NSF7000"
  "National Scribble Foundation"]{http://racket-lang.org} under
  grant No.: @grantnum["NSF7000"]{867-5309}.}

Added in version 1.20 of package scribble-lib.