123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- #let datetimeNow = datetime.today();
- #let fliPar(body)={
- par(
- [#h(2em)#body]
- )
- }
- #let ZRYGenericDocs(
- authors: ("ZRY",),
- title: "标题",
- subTitle: "副标题",
- titleDesc: "标题说明",
- date: datetimeNow.display("[year]-[month]-[day]"),
- docVer: "V0.1",
- pageSettings: (
- paper: "a4",
- leftMargin: 1.25in,
- topMargin: 1in,
- rightMargin: 1.25in,
- bottomMargin: 1in,
- foreground: none,
- background: none,
- columns: 1,
- flipped: false,
- ),
- fontSets: (
- sans: "Noto Sans CJK SC",
- //sans: "Source Han Sans",
- serif: "Noto Serif CJK SC",
- //serif: "Source Han Serif VF"
- ),
- headerSettings: (
- enable: false,
- ascent: 30%,
- content: none,
- ),
- footerSettings: (
- enable: false,
- descent: 30%,
- content: none,
- ),
- pageNumberingSettings:(
- content: none,
- align: center + bottom,
- ),
- coverStyle:(
- titleSize: 36pt,
- titleWeight: 600,
- subTitleSize: 24pt,
- subTitleWeight: 600,
- titleDescSize: 16pt,
- titleDescWeight: 400,
- dateSize: 16pt,
- dateWeight: 400,
- authorsSize: 16pt,
- authorsWeight: 600,
- docVerSize: 16pt,
- docVerWeight: 400,
- topMargin: 72pt,
- subTitleMargin: 72pt,
- dateMargin: 16pt,
- authorsMargin: 16pt,
- titleDescMargin: 72pt,
- authorsJoinSymbol: ","
- ),
- textStyle:(
- h1:(
- sans: false,
- size: 22pt,
- weight: 800,
- style: "italic",
- stretch: 100%,
- fill: rgb("#000000"),
- tracking: 0pt,
- spacing: 100%,
- overhang: true,
- vspaceBottom: 12pt,
- ),
- h2:(
- sans: true,
- size: 16pt,
- weight: 400,
- style: "normal",
- stretch: 100%,
- fill: rgb("#000000"),
- tracking: 0pt,
- spacing: 100%,
- overhang: true,
- vspaceBottom: 6pt,
- ),
- h3: (
- sans: false,
- size: 14pt,
- weight: 900,
- style: "normal",
- stretch: 100%,
- fill: rgb("#000000"),
- tracking: 0pt,
- spacing: 100%,
- overhang: true,
- vspaceBottom: 12pt,
- ),
- h4: (
- sans: true,
- size: 14pt,
- weight: 500,
- style: "normal",
- stretch: 100%,
- fill: rgb("#000000"),
- tracking: 0pt,
- spacing: 100%,
- overhang: true,
- vspaceBottom: 12pt,
- ),
- h5: (
- sans: true,
- size: 14pt,
- weight: 300,
- style: "italic",
- stretch: 100%,
- fill: rgb("#000000"),
- tracking: 0pt,
- spacing: 100%,
- overhang: true,
- vspaceBottom: 8pt,
- ),
- text: (
- size: 12pt,
- weight: 200,
- ),
- ),
- body
- ) = {
- let hdr = if headerSettings.enable {
- (
- header: headerSettings.content,
- header-ascent: headerSettings.ascent,
- )
- } else {
- (
- header: none,
- header-ascent: 30%,
- )
- }
- let ftr = if footerSettings.enable {
- (
- footer: footerSettings.content,
- footer-descent: footerSettings.descent,
- )
- } else {
- (
- footer: none,
- footer-descent: 30%,
- )
- }
- // Page Setting
- set page(
- paper: pageSettings.paper,
- margin: (
- left: pageSettings.leftMargin,
- right: pageSettings.rightMargin,
- top: pageSettings.topMargin,
- bottom: pageSettings.bottomMargin
- ),
- foreground: pageSettings.foreground,
- background: pageSettings.background,
- columns: pageSettings.columns,
- flipped: pageSettings.flipped,
- numbering: pageNumberingSettings.content,
- number-align: pageNumberingSettings.align,
- header: hdr.header,
- header-ascent: hdr.header-ascent,
- footer: ftr.footer,
- footer-descent: ftr.footer-descent,
- )
- // Document Meta Setting
- set document(
- title: title,
- author: authors
- )
- // ==== Cover Begin ====
- v(coverStyle.topMargin)
- // Title
- align(center, text(
- font: fontSets.sans,
- weight: coverStyle.titleWeight,
- size: coverStyle.titleSize,
- title
- ))
- v(coverStyle.subTitleMargin)
- // subTitle
- align(center, text(
- font: fontSets.sans,
- weight: coverStyle.subTitleWeight,
- size: coverStyle.subTitleSize,
- subTitle
- ))
- align(bottom, [
- // titleDesc
- #align(center, text(
- font: fontSets.sans,
- weight: coverStyle.titleDescWeight,
- size: coverStyle.titleDescSize,
- titleDesc
- ))
- #v(coverStyle.titleDescMargin)
- // authors
- #align(center, text(
- font: fontSets.sans,
- weight: coverStyle.authorsWeight,
- size: coverStyle.authorsSize,
- authors.join(coverStyle.authorsJoinSymbol)
- ))
- #v(coverStyle.authorsMargin)
- // date
- #align(center, text(
- font: fontSets.sans,
- weight: coverStyle.dateWeight,
- size: coverStyle.dateSize,
- date
- ))
- #v(coverStyle.dateMargin)
- // docVer
- #align(center, text(
- font: fontSets.sans,
- weight: coverStyle.docVerWeight,
- size: coverStyle.docVerSize,
- docVer
- ))
- ])
- // ==== Cover End ====
- pagebreak()
- // Default Font Setting
- set text(
- font: fontSets.serif,
- weight: textStyle.text.weight,
- size: textStyle.text.size,
- lang: "zh",
- )
- // Paragraph Setting
- /*
- show par: set block(spacing: 0.65em)
- set par(
- leading: 0.65em,
- //first-line-indent: 2em,
- justify: true,
- )
- */
- // ==== Heading Style Setting Begin ====
- set heading(numbering: "1.1.1.1.1")
- // H1
- show heading.where(level: 1): it => block(width: 100%)[
- #let fontFamily = if textStyle.h1.sans {
- fontSets.sans
- } else {
- fontSets.serif
- }
- #text(
- font: fontFamily,
- size: textStyle.h1.size,
- weight: textStyle.h1.weight,
- style: textStyle.h1.style,
- stretch: textStyle.h1.stretch,
- fill: textStyle.h1.fill,
- tracking: textStyle.h1.tracking,
- spacing: textStyle.h1.spacing,
- overhang: textStyle.h1.overhang,
- counter(heading).display() + h(1em) + it.body
- )
- #v(textStyle.h1.vspaceBottom)
- ]
- // H2
- show heading.where(level: 2): it => block(width: 100%)[
- #let fontFamily = if textStyle.h2.sans {
- fontSets.sans
- } else {
- fontSets.serif
- }
- #text(
- font: fontFamily,
- size: textStyle.h2.size,
- weight: textStyle.h2.weight,
- style: textStyle.h2.style,
- stretch: textStyle.h2.stretch,
- fill: textStyle.h2.fill,
- tracking: textStyle.h2.tracking,
- spacing: textStyle.h2.spacing,
- overhang: textStyle.h2.overhang,
- counter(heading).display() + h(1em) + it.body
- )
- #v(textStyle.h2.vspaceBottom)
- ]
- // H3
- show heading.where(level: 3): it => block(width: 100%)[
- #let fontFamily = if textStyle.h3.sans {
- fontSets.sans
- } else {
- fontSets.serif
- }
- #text(
- font: fontFamily,
- size: textStyle.h3.size,
- weight: textStyle.h3.weight,
- style: textStyle.h3.style,
- stretch: textStyle.h3.stretch,
- fill: textStyle.h3.fill,
- tracking: textStyle.h3.tracking,
- spacing: textStyle.h3.spacing,
- overhang: textStyle.h3.overhang,
- counter(heading).display() + h(1em) + it.body
- )
- #v(textStyle.h3.vspaceBottom)
- ]
- // H4
- show heading.where(level: 4): it => block(width: 100%)[
- #let fontFamily = if textStyle.h4.sans {
- fontSets.sans
- } else {
- fontSets.serif
- }
- #text(
- font: fontFamily,
- size: textStyle.h4.size,
- weight: textStyle.h4.weight,
- style: textStyle.h4.style,
- stretch: textStyle.h4.stretch,
- fill: textStyle.h4.fill,
- tracking: textStyle.h4.tracking,
- spacing: textStyle.h4.spacing,
- overhang: textStyle.h4.overhang,
- counter(heading).display() + h(1em) + it.body
- )
- #v(textStyle.h4.vspaceBottom)
- ]
- // H5
- show heading.where(level: 5): it => block(width: 100%)[
- #let fontFamily = if textStyle.h5.sans {
- fontSets.sans
- } else {
- fontSets.serif
- }
- #text(
- font: fontFamily,
- size: textStyle.h5.size,
- weight: textStyle.h5.weight,
- style: textStyle.h5.style,
- stretch: textStyle.h5.stretch,
- fill: textStyle.h5.fill,
- tracking: textStyle.h5.tracking,
- spacing: textStyle.h5.spacing,
- overhang: textStyle.h5.overhang,
- counter(heading).display() + h(1em) + it.body
- )
- #v(textStyle.h5.vspaceBottom)
- ]
- // ==== Title Style Setting End ====
- // ==== Body Begin ====
- body
- // ==== Body End ====
- }
|