Typora 自定义 github-cus 主题:掘金行内代码与标题自动编号
从自带 github 主题复制出 github-cus,改成掘金风格行内代码,并用 CSS counter 给正文与大纲侧栏做从 h2 起的自动编号。
Typora 自带主题升级会覆盖,直接改 github.css 不稳妥。做法是复制一份自定义主题 github-cus,在上面改行内代码颜色,以及正文 / 大纲的标题自动编号。
本文环境:Linux,主题目录 ~/.config/Typora/themes/(Windows 一般在 %APPDATA%\Typora\themes\,macOS 在 ~/Library/Application Support/abnerworks.Typora/themes/)。
为什么要复制一份主题
主题目录里的 Readme.md 写得很清楚:内置 CSS 更新或重装后会被替换,不要直接改内置主题。
正确姿势见官方文档:
目标文件结构:
Typora 主题名取自 CSS 文件名:github-cus.css → 主题选择器里一般显示为 Github Cus。
从 github 复制出 github-cus
复制后 @font-face 应类似:
然后在 Typora:主题 → Github Cus。后面所有改动都只动 github-cus.css。
行内代码改成掘金风格
目标效果
正文里的 `Integer` 一类行内代码:
- 字色:
#ff502c(橙红) - 背景:
rgba(255, 80, 44, 0.1)(淡橙红底) - 无边框、小圆角、左右略留白
围栏代码块(```)继续用原来的灰底,不要跟行内代码混成同一种颜色。
原主题怎么写的
github 主题里行内代码和围栏代码块绑在一起:
问题在于:改 code 会连带影响 .md-fences 里的 code,所以必须拆开,并给围栏内部做还原。
替换成下面这段
在 github-cus.css 里,把上面那段改成:
要点:
- 只给裸
code/tt上掘金色 .md-fences单独保留灰底围栏样式.md-fences code清掉颜色和背景,避免代码块里每个 token 都变橙红
改完后重选一次主题,或重启 Typora。
正文标题自动编号(从 h2 起)
需求
文章一般是「一级标题当文题,正文从二级开始分节」:
| Markdown | 显示 |
|---|---|
# 文题 |
不编号 |
## 第一节 |
1. 第一节 |
### 小节 |
1.1. 小节 |
## 第二节 |
2. 第二节 |
编号只出现在显示层,不会写进 Markdown 源文件。
原理
用 CSS counters:上级标题 counter-reset 下级,:before 里 counter-increment 并拼出 1. / 1.1.。官方方案从 h1 起算,这里改成从 h2 起。
追加到 github-cus.css 末尾
说明:
#write是正文编辑区根节点,计数器挂在这里- 不要给
#write h1:before写编号 h3.md-focus.md-heading:before等是为了压过 Typora 聚焦标题时的默认伪元素样式
大纲侧栏也加同样序号
正文有编号、左侧「大纲」没有,对不上。侧栏用另一套选择器:.outline-h2、.outline-label 等。
再追加一段
可折叠大纲的坑
官方说明:大纲自动编号建议先关掉「可折叠大纲」,改用扁平大纲,否则折叠后 DOM/计数可能对不齐。
路径大致是:偏好设置 → 大纲 / Outline → 关闭可折叠大纲(Collapsible Outline)。
大纲面板空白处右键,有时也能切换扁平 / 折叠视图。
生效与自检
- 主题选中 Github Cus
- 改完 CSS 后重选主题或重启 Typora
- 打开一篇有
##/###的文档:- 正文标题前应出现
1./1.1. - 左侧大纲对应项也应有同样序号
- 行内
`code`为橙红字 + 淡橙底 - ``` 代码块仍是灰底,块内文字不是橙红
- 正文标题前应出现
效果如下:


小结
| 步骤 | 做什么 |
|---|---|
| 复制主题 | github.css + github/ → github-cus.css + github-cus/,改字体路径 |
| 行内代码 | 拆开 code 与 .md-fences,行内用 #ff502c |
| 正文编号 | #write 上从 h2 起的 CSS counter + 聚焦态覆盖 |
| 大纲编号 | .sidebar-content / .outline-hN 同样从 h2 起;必要时关可折叠大纲 |
完整主题文件就在本机:
以后要再调颜色或编号格式,只改这一份即可,不会被 Typora 升级冲掉内置 github。