3.6 ACM Paper Format

► |  | Scribble: The Racket Documentation Tool

1 | Getting Started
2 | @ Syntax
3 | High-Level Scribble API
4 | Scribbling Documentation
5 | Literate Programming
6 | Low-Level Scribble API
7 | Running scribble
| Index

▼ | 3 | High-Level Scribble API

3.1 | Base Document Format
3.2 | Racket Manual Format
3.3 | Book Format
3.4 | Report Format
3.5 | SIGPLAN Paper Format
3.6 | ACM Paper Format
3.7 | JFP Paper Format
3.8 | LNCS Paper Format

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
top contents ← prev up next →

#### 3.6`` ACM Paper Format🔗ℹ

#lang scribble/acmart | package: scribble-lib

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.

> > > acmart documentation: [link]

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 latest acmart release (version 2.05, 2024-04-03, by Boris Veytsman) 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.

top contents ← prev up next →