Kodama 教程 [tutorials]
- December 31, 2024
- kokic
- en-US
Kodama 教程 [tutorials]
- December 31, 2024
- kokic
- en-US
你可以根据目标设备的架构直接从 Github Release 页面下载二进制文件.
在 Termux 等 Android 环境中使用请选择 当 Github Release 页面缺少适合你设备的文件时, 你可以从 源代码 开始自己构建, 这也很容易. 指令 举例来说, 如果最终部署到的 URL 为 https://www.example.com/blog, 这并非该域名的根目录,
为了保证生成链接的正确性, 用户应该指定 注意. 当然, 如果用户只是在本地使用, 就不必考虑这个问题了. 虽然 Kodama 所处理的 Markdown 文件从语法上说是完全符合 CommonMark 标准的, 但是由于它实现了 CommonMark 之外的许多功能, 为了从语法上区分开来, 用户在使用这些额外的功能时, 请务必遵循下面的规则. 首先需要强调的是, 无论是嵌入文件 1 还是内部链接 2 的路径, 都应该是以 嵌入语法和标准链接语法 这些特殊后缀采用这种语法的一个原因是, 许多 Markdown 编辑器 1 能够正确识别从而享受文件之间的跳转功能. 大部分时候, 嵌入语法的 很多时候, 对于相当简单的 Typst 文本, 用户会希望有一种方式在展示上对应于 $\KaTeX$ 语境下的行内公式, 这就是内联 Typst. 内联 Typst 也许是 Kodama 真正的优势所在, 因为设计者做了许多努力使其表现的就和 $\KaTeX$ 行内公式一样或者至少非常接近, 从而不会让 Typst 的那部分行内公式在与 $\KaTeX$ 混合编排时显得廉价. 内联 Typst 也采用 链接类语法, 但是此时不会有任何文件被链接. 被嵌入的文件是独立的 Markdown 或者 Typst, 嵌入这一操作会将被链接文件的内容合并到链接的位置, 对于 Markdown, 它将成为一个子 内部链接用于链接当前 Kodama 项目的其他 Markdown 文件, 与外部链接相比, 内部链接使用一种特殊的样式. 一个可供参考的 Github Workflow 配置 如下 1.
唯一需要注意的是环境变量 由 Hong Jiarong 提供.安装 [install]
aarch64-unknown-linux-musl
架构.
编译 [compile]
kodama compile
或缩写为 kodama c
将根据输入的 Markdown 工作区路径构建出 HTML 文件.
默认位于工作区路径的 publish
文件夹下.
尽管有 --root
参数, 但仍然建议所有用户在 index.md
文件所在的目录下执行 kodama c
.shell [compile-help]
$ kodama c --help
Compile current workspace dir to HTMLs
Usage: kodama.exe compile [OPTIONS]
OOptions:
-b, --base <BASE> Base URL or publish URL (e.g. https://www.example.com/) [default: /]
-o, --output <OUTPUT> Path to output dir [default: ./publish]
-r, --root <ROOT> Configures the project root (for absolute paths) [default: ./]
-d, --disable-pretty-urls Disable pretty urls (`/page` to `/page.html`)
-s, --short-slug Hide parents part in slug (e.g. `tutorials/install` to `install`)
-f, --footer-mode <FOOTER_MODE> Specify the inline mode for the footer sections [default: link] [possible values: link, embed]
-h, --help Print help
--base
这一编译参数, 即kodama c -b=https://www.example.com/blog
链接规则 [link-rules]
/
开头的相对于当前工作区的绝对路径.嵌入语法 [embed-syntax]
[text](url)
的区别在于, 嵌入的 url
带有特殊的后缀, 并且只能是以下几种:
.md#:embed
, 嵌入 Markdown..typ#:block
, 嵌入 Typst 编译后的 SVG, 并居中展示为块级元素..typ#:span
, 嵌入 Typst 编译后的 SVG, 并展示为行间元素 (不常用)..typ#:shared
, 在当前文件的上下文中导入该 Typst 文件, 此时 text
用于提供被导入的定义范围, 如所有定义 *
. 配合内联 Typst 语法使用.text
都是空着的, 不过由于只有 Markdown 的嵌入才会产生子 section
, 此时 text
能用于设置 section
默认是否展开以及在目录中的状态. 这些设置由一系列特定字符构成, 它们对应的功能彼此独立, 因此书写的先后顺序可以任意.
+
, 表示当前 section
使用计数器.-
, 默认折叠当前 section
. 相应的, 如果这个 section
也有一系列子 section
, 这些子 section
将不会出现在当前页面的目录里..
, 在当前页面的目录里隐藏这个 section
.内联语法 [inline-syntax]
url
部分用于指定内联模式和 margin
参数, 绝大部分情况下, 用户都不需要自己手动设置 margin
参数便可以取得较好的呈现效果. 内联模式是一个为了方便 Markdown 编辑器本身的预览功能而设计的参数, 当用户填入 math
时, text
部分的内容就会被自动加上 ${}$
再交给 Typst 编译. 以下是一些例子:
[$x^2$](inline)
, x^2
同时是合法的 $\KaTeX$ 公式和 Typst 公式, 此时 Markdown 编辑器本身的预览功能可将它正确呈现为 $x^2$. 虽然这个例子简单到根本没有任何理由使用 Typst.#
在 Typst 当中是一个高频率使用的字符, 此时如果依然手写 ${}$
则会导致编辑器内 Markdown 预览的体验不佳, 这就是内联模式参数 math
的意义. 现在你可以将第一个例子写为 [x^2](inline-math)
.-
分隔. math
和 margin
的位置是固定的, 换言之, 如果这两个参数同时出现, 你只能将 margin
写在 math
之后. margin
由形如 {x}-{y}
的文本构成, x
和 y
是任何有效的 Typst 长度值, 如 0pt-2pt
. 当 y
缺失时, y
会采用 x
的值.section
.持续集成 [github-workflow]
$PAGE_URL
, 用于 指定待部署页面的 URL,
你可以在仓库的 settings/variables/actions
设置 它们.workflow.yml [workflow-yml]
name: Deploy Kodama site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
# Default to bash
defaults:
run:
shell: bash
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Install Kodama & Typst
run: |
cargo install --git https://github.com/kokic/kodama.git
sudo snap install typst
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with Kodama
run: |
kodama c -b $PAGE_URL
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./publish
# Deployment job
deploy:
environment:
name: github-pages
url: $PAGE_URL
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4