diff options
| author | Christopher Kenny <[email protected]> | 2024-07-08 22:08:30 -0400 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2025-07-24 10:45:28 -0700 |
| commit | f000fa168bd122fee6e67f5a67bdd6d42d173261 (patch) | |
| tree | 49b8be848793a66f94c207d911091e8026eaee8a /data | |
| parent | ebf41dd5392283398f35dac1414c04dbc3e3e7ca (diff) | |
Add features to typst base template.
This implements the changes suggested in #9956, with the exception of
the filecolor/urlcolor one. These would require adding some regex to
guess the link types. This is theoretically possible to do, but it
wasn't clear to me that this is a good thing to put in a default
template. Happy to adjust if you have thoughts on this.
Closes #9956.
Some things to note:
I'm converting colors by passing them as content, as I was seeing pandoc
escape # if that was included.
I set the default fonts for math and code ("raw") to fonts that are
bundled with Typst. These need not be those fonts if there are more
familiar pandoc preferences.
Diffstat (limited to 'data')
| -rw-r--r-- | data/templates/default.typst | 24 | ||||
| -rw-r--r-- | data/templates/template.typst | 100 |
2 files changed, 87 insertions, 37 deletions
diff --git a/data/templates/default.typst b/data/templates/default.typst index 79b2c33f5..00e1ec557 100644 --- a/data/templates/default.typst +++ b/data/templates/default.typst @@ -71,9 +71,15 @@ $endif$ $if(region)$ region: "$region$", $endif$ +$if(abstract-title)$ + abstract-title: [$abstract-title$], +$endif$ $if(abstract)$ abstract: [$abstract$], $endif$ +$if(thanks)$ + thanks: [$thanks$], +$endif$ $if(margin)$ margin: ($for(margin/pairs)$$margin.key$: $margin.value$,$endfor$), $endif$ @@ -86,10 +92,28 @@ $endif$ $if(fontsize)$ fontsize: $fontsize$, $endif$ +$if(mathfont)$ + mathfont: ($for(mathfont)$"$mathfont$",$endfor$), +$endif$ +$if(codefont)$ + codefont: ($for(codefont)$"$codefont$",$endfor$), +$endif$ +$if(linestretch)$ + linestretch: $linestretch$, +$endif$ $if(section-numbering)$ sectionnumbering: "$section-numbering$", $endif$ pagenumbering: $if(page-numbering)$"$page-numbering$"$else$none$endif$, +$if(linkcolor)$ + linkcolor: [$linkcolor$], +$endif$ +$if(citecolor)$ + citecolor: [$citecolor$], +$endif$ +$if(filecolor)$ + filecolor: [$filecolor$], +$endif$ cols: $if(columns)$$columns$$else$1$endif$, doc, ) diff --git a/data/templates/template.typst b/data/templates/template.typst index 24b1320fb..1afaa35fc 100644 --- a/data/templates/template.typst +++ b/data/templates/template.typst @@ -15,7 +15,9 @@ authors: (), keywords: (), date: none, + abstract-title: none, abstract: none, + thanks: none, cols: 1, margin: (x: 1.25in, y: 1.25in), paper: "us-letter", @@ -23,66 +25,90 @@ region: "US", font: (), fontsize: 11pt, + mathfont: none, + codefont: none, + linestretch: 1, sectionnumbering: none, + linkcolor: none, + citecolor: none, + filecolor: none, pagenumbering: "1", doc, ) = { set document( title: title, - author: authors.map(author => content-to-string(author.name)), + author: authors.map(author => content-to-string(author.name)).join(", ", last: " & "), keywords: keywords, ) set page( paper: paper, margin: margin, numbering: pagenumbering, - columns: cols, - ) - set par(justify: true) + ) + + set par( + justify: true, + leading: linestretch * 0.65em + ) set text(lang: lang, region: region, font: font, size: fontsize) + + show math.equation: set text(font: mathfont) if mathfont != none + show raw: set text(font: codefont) if codefont != none + set heading(numbering: sectionnumbering) - place(top, float: true, scope: "parent", clearance: 4mm)[ - #if title != none { - align(center)[#block(inset: 2em)[ - #text(weight: "bold", size: 1.5em)[#title] - #(if subtitle != none { - parbreak() - text(weight: "bold", size: 1.25em)[#subtitle] - }) - ]] + show link: set text(fill: rgb(content-to-string(linkcolor))) if linkcolor != none + show ref: set text(fill: rgb(content-to-string(citecolor))) if citecolor != none + show link: this => { + if filecolor != none and type(this.dest) == label { + text(this, fill: rgb(content-to-string(filecolor))) + } } - #if authors != none and authors != [] { - let count = authors.len() - let ncols = calc.min(count, 3) - grid( - columns: (1fr,) * ncols, - row-gutter: 1.5em, - ..authors.map(author => - align(center)[ - #author.name \ - #author.affiliation \ - #author.email - ] + block(below: 4mm)[ + #if title != none { + align(center)[#block(inset: 2em)[ + #text(weight: "bold", size: 1.5em)[#title #if thanks != none { + footnote(thanks, numbering: "*") + counter(footnote).update(n => n - 1) + }] + #( + if subtitle != none { + parbreak() + text(weight: "bold", size: 1.25em)[#subtitle] + } + ) + ]] + } + + #if authors != none and authors != [] { + let count = authors.len() + let ncols = calc.min(count, 3) + grid( + columns: (1fr,) * ncols, + row-gutter: 1.5em, + ..authors.map(author => align(center)[ + #author.name \ + #author.affiliation \ + #author.email + ]) ) - ) - } + } - #if date != none { - align(center)[#block(inset: 1em)[ - #date - ]] - } + #if date != none { + align(center)[#block(inset: 1em)[ + #date + ]] + } - #if abstract != none { - block(inset: 2em)[ - #text(weight: "semibold")[$if(abstract-title)$${abstract-title}$else$Abstract$endif$] #h(1em) #abstract - ] - } + #if abstract != none { + block(inset: 2em)[ + #text(weight: "semibold")[#abstract-title] #h(1em) #abstract + ] + } ] doc |
