mirror of
https://github.com/jgm/pandoc.git
synced 2026-09-11 16:50:12 +08:00
Add features to typst base template (take 2).
New template variables supported: `thanks`, `abstract-title`, `linestretch`, `mathfont`,
`codefont`, `linkcolor`, `filecolor`, `citecolor`.
Closes #9956, #11076.
(This is a new version of f000fa168b which
was reverted.)
This commit is contained in:
+14
-1
@@ -2734,7 +2734,7 @@ Currently the following pipes are predefined:
|
||||
documents
|
||||
|
||||
`abstract-title`
|
||||
: title of abstract, currently used only in HTML, EPUB, and docx.
|
||||
: title of abstract, currently used only in HTML, EPUB, docx, and Typst.
|
||||
This will be set automatically to a localized value,
|
||||
depending on `lang`, but can be manually overridden.
|
||||
|
||||
@@ -3407,6 +3407,19 @@ The `--css` option also affects the output.
|
||||
`columns`
|
||||
: Number of columns for body text.
|
||||
|
||||
`thanks`
|
||||
: contents of acknowledgments footnote after document title
|
||||
|
||||
`mathfont`, `codefont`
|
||||
: Name of system font to use for math and code, respectively.
|
||||
|
||||
`linestretch`
|
||||
: adjusts line spacing, e.g. `1.25`, `1.5`
|
||||
|
||||
`linkcolor`, `filecolor`, `citecolor`
|
||||
: color for external links, internal links, and citation links,
|
||||
respectively: expects a hexadecimal color code
|
||||
|
||||
### Variables for ms
|
||||
|
||||
`fontfamily`
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
@@ -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,92 @@
|
||||
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)),
|
||||
keywords: keywords,
|
||||
)
|
||||
set document(
|
||||
author: authors.map(author => content-to-string(author.name)).join(", ", last: " & "),
|
||||
) if authors != none and authors != ()
|
||||
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
|
||||
|
||||
+66
-37
@@ -39,7 +39,9 @@
|
||||
authors: (),
|
||||
keywords: (),
|
||||
date: none,
|
||||
abstract-title: none,
|
||||
abstract: none,
|
||||
thanks: none,
|
||||
cols: 1,
|
||||
margin: (x: 1.25in, y: 1.25in),
|
||||
paper: "us-letter",
|
||||
@@ -47,66 +49,92 @@
|
||||
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)),
|
||||
keywords: keywords,
|
||||
)
|
||||
set document(
|
||||
author: authors.map(author => content-to-string(author.name)).join(", ", last: " & "),
|
||||
) if authors != none and authors != ()
|
||||
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")[Abstract] #h(1em) #abstract
|
||||
]
|
||||
}
|
||||
#if abstract != none {
|
||||
block(inset: 2em)[
|
||||
#text(weight: "semibold")[#abstract-title] #h(1em) #abstract
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
doc
|
||||
@@ -122,6 +150,7 @@
|
||||
email: "" ),
|
||||
),
|
||||
date: [July 17, 2006],
|
||||
abstract-title: [Abstract],
|
||||
pagenumbering: "1",
|
||||
cols: 1,
|
||||
doc,
|
||||
|
||||
Reference in New Issue
Block a user