126 lines
2.6 KiB
Typst
126 lines
2.6 KiB
Typst
#let mla(
|
|
title: "Paper Title",
|
|
author: none,
|
|
professor: none,
|
|
date: none,
|
|
course: none,
|
|
font-size: 12pt,
|
|
font: "Times New Roman",
|
|
body
|
|
) = {
|
|
// Set document metdata.
|
|
set document(
|
|
title: title,
|
|
author: author.firstname + " " + author.lastname
|
|
)
|
|
|
|
// Configure the page.
|
|
set page(
|
|
paper: "us-letter",
|
|
header: align(
|
|
right + horizon,
|
|
[
|
|
#v(0.5in)
|
|
#author.lastname
|
|
#context(counter(page).display("1"))
|
|
]
|
|
),
|
|
margin: 1in
|
|
)
|
|
|
|
// Set paragraph properties.
|
|
set par(
|
|
first-line-indent: 0.5in,
|
|
justify: false,
|
|
leading: 2em
|
|
)
|
|
set par(
|
|
spacing: 2em
|
|
)
|
|
|
|
// Set the body font.
|
|
set text(
|
|
font: font,
|
|
size: font-size,
|
|
)
|
|
|
|
// Configure headings.
|
|
set heading(numbering: "1.1.a.")
|
|
show heading: set block(spacing: 2em)
|
|
show heading: it => {
|
|
set text(size: font-size)
|
|
set par(first-line-indent: 0in)
|
|
|
|
// Create the heading numbering.
|
|
let number = if it.numbering != none {
|
|
counter(heading).display(it.numbering)
|
|
h(6pt, weak: true)
|
|
}
|
|
|
|
// Don't number the conclusion
|
|
let is-conclusion = it.body in ([conclusion], [Conclusion], [CONCLUSION])
|
|
v(2em)
|
|
if it.level == 1 and is-conclusion == true {
|
|
block[#text(weight: "bold")[#it.body]]
|
|
} else if it.level == 1 and is-conclusion == false {
|
|
block[#text(weight: "bold")[#number #it.body]]
|
|
} else if it.level == 2 {
|
|
block[#text(weight: "semibold")[#number #it.body]]
|
|
} else if it.level == 3 {
|
|
block[#text(weight: "medium")[#number #it.body]]
|
|
}
|
|
v(2em)
|
|
}
|
|
|
|
// configure block quotes
|
|
set quote(block: true)
|
|
show quote: set pad(left: 0.5in)
|
|
show quote: set block(spacing: 2em)
|
|
|
|
// configure tables
|
|
show figure.where(kind: table): it => {
|
|
set block(spacing: 1em)
|
|
set par(
|
|
first-line-indent: 0in,
|
|
leading: 1em
|
|
)
|
|
set table(stroke: none, align: center, row-gutter: 1em)
|
|
strong([Table #it.counter.display(it.numbering) #linebreak()])
|
|
it.caption.body
|
|
it.body
|
|
it.supplement
|
|
}
|
|
|
|
// configure illustrations
|
|
show figure.where(kind: image): it => {
|
|
set block(spacing: 1em)
|
|
set par(
|
|
first-line-indent: 0in,
|
|
leading: 1em
|
|
)
|
|
it.body
|
|
align(
|
|
center,
|
|
[Fig. #it.counter.display(it.numbering)\. #it.caption.body]
|
|
)
|
|
|
|
}
|
|
|
|
// MLA boilerplate
|
|
align(left,
|
|
stack(
|
|
dir:ttb,
|
|
spacing: 2em,
|
|
[#author.firstname #author.lastname],
|
|
professor,
|
|
course,
|
|
date
|
|
)
|
|
)
|
|
|
|
// Display the paper's title.
|
|
align(center, title)
|
|
|
|
// Display the paper's contents.
|
|
body
|
|
} |