font and layout
This commit is contained in:
+35
-9
@@ -1,16 +1,18 @@
|
||||
// ============================================================
|
||||
// A4 文档模板
|
||||
// 封面:页边距 0,标题与图案 Bahnschrift / 信息 Source Code Pro
|
||||
// 正文:上下 3.5cm,左右 2cm,中文 Source Han Sans SC / 英文 IBM Plex Sans
|
||||
// 正文:上下 3.5cm,左右 2cm,中文 Noto Serif SC / 英文 IBM Plex Sans
|
||||
// 代码块:IBM Plex Mono
|
||||
// ============================================================
|
||||
|
||||
// ---- 字体配置(可按需修改)----
|
||||
#let cover-cjk = "SimHei" // 封面中文回退:黑体
|
||||
#let cover-cjk = "Noto Sans SC" // 封面中文回退:开放授权黑体
|
||||
#let cover-latin = "Source Code Pro" // 文档信息与签名:Source Code Pro
|
||||
#let cover-title-cjk = "SimHei" // 封面中文标题
|
||||
#let cover-title-cjk = "Noto Sans SC" // 封面中文标题
|
||||
#let cover-title-latin = "Bahnschrift" // 封面英文标题
|
||||
#let body-cjk = "Source Han Sans SC" // 正文中文
|
||||
#let body-cjk = "Noto Serif SC" // 正文中文:开放授权宋体
|
||||
#let heading-cjk = "Noto Sans SC" // 一级、二级标题中文
|
||||
#let code-cjk = "Noto Sans SC" // 代码中的中文回退
|
||||
#let body-latin = "IBM Plex Sans" // 正文英文
|
||||
#let mono-font = "IBM Plex Mono" // 代码块
|
||||
|
||||
@@ -18,7 +20,7 @@
|
||||
// 坐标系:左上角为原点,x 向右、y 向下;坐标记为 (x, y) 即 (列, 行)。
|
||||
// 1 单位 = 1.2cm,一个单位方块为边长 1.5cm 的正方形。
|
||||
#let unit = 1.2cm
|
||||
#let sky = rgb("#4FC3F7") // 天蓝色
|
||||
#let sky = rgb("#4FC3F7") // 河童蓝
|
||||
#let accent = rgb("#E9784B") // 珊瑚橙
|
||||
|
||||
// 在网格 (x, y) 处放置内容(以页面左上角为基准)
|
||||
@@ -349,11 +351,35 @@
|
||||
// 无序列表整体缩进一个正文字符;圆点与正文仍使用 Typst 默认间距。
|
||||
set list(indent: 1em)
|
||||
|
||||
// 正文标题与正文使用同一套中西文字体。
|
||||
show heading: set text(font: (body-latin, body-cjk))
|
||||
// 一级标题:加大字号、常规字重并下置细线;二级标题略放大,三级标题保留正文宋体。
|
||||
show heading.where(level: 1): heading => block(
|
||||
width: 100%,
|
||||
above: 1.2em,
|
||||
below: 1.2em,
|
||||
sticky: true,
|
||||
)[
|
||||
#stack(
|
||||
dir: ttb,
|
||||
spacing: 0.2em,
|
||||
block(width: 100%, above: 0pt, below: 0pt, {
|
||||
set par(first-line-indent: 0pt, leading: 0pt, spacing: 0pt)
|
||||
set text(font: (body-latin, heading-cjk), size: 18pt, weight: "regular")
|
||||
heading.body
|
||||
}),
|
||||
line(length: 100%, stroke: 0.7pt + luma(45%)),
|
||||
)
|
||||
]
|
||||
show heading.where(level: 2): set text(
|
||||
font: (body-latin, heading-cjk), size: 14pt, weight: "medium",
|
||||
)
|
||||
show heading.where(level: 2): set block(above: 1em, below: 0.6em)
|
||||
show heading.where(level: 3): set text(
|
||||
font: (body-latin, body-cjk), size: 12pt, weight: "medium",
|
||||
)
|
||||
show heading.where(level: 3): set block(above: 0.7em, below: 0.4em)
|
||||
|
||||
// 代码块与行内代码:西文使用 IBM Plex Mono,中文回退到正文中文字体。
|
||||
show raw: set text(font: (mono-font, body-cjk))
|
||||
// 代码块与行内代码:西文使用 IBM Plex Mono,中文回退到开源黑体。
|
||||
show raw: set text(font: (mono-font, code-cjk))
|
||||
|
||||
// 块级代码:细边框、浅色背景与自动行号;行内代码不受影响。
|
||||
show raw.where(block: true): code => {
|
||||
|
||||
Reference in New Issue
Block a user